[title size=”1″ content_align=”left” style_type=”default” sep_color=”” margin_top=”” margin_bottom=”” class=”” id=””]Newsletter[/title][fusion_text]Please complete the form below to subscribe to EnterpriseWeb’s newsletter, “Loosely-Coupled”.

Loosely-Coupled will keep you up to date on the Composable Digital Business providing trusted thought leadership, useful insights and practical advice to help organizations on their path to transformation. The newsletter will also include links to the Company’s latest news and events.

You will receive an email to confirm your subscription, and you can unsubscribe at any time.[/fusion_text][fullwidth background_color=”” background_image=”” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ background_repeat=”no-repeat” background_position=”left top” video_url=”” video_aspect_ratio=”16:9″ video_webm=”” video_mp4=”” video_ogv=”” video_preview_image=”” overlay_color=”” overlay_opacity=”0.5″ video_mute=”yes” video_loop=”yes” fade=”no” border_size=”0px” border_color=”” border_style=”” padding_top=”20″ padding_bottom=”20″ padding_left=”” padding_right=”” hundred_percent=”no” equal_height_columns=”no” hide_on_mobile=”no” menu_anchor=”” class=”” id=””][one_half last=”yes” spacing=”yes” center_content=”no” hide_on_mobile=”no” background_color=”” background_image=”” background_repeat=”no-repeat” background_position=”left top” border_position=”all” border_size=”0px” border_color=”” border_style=”” padding=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”” animation_speed=”0.1″ class=”” id=””][fusion_code]PGRpdiBpZD0ibWNfZW1iZWRfc2lnbnVwIj4NCjxmb3JtIGlkPSJtYy1lbWJlZGRlZC1zdWJzY3JpYmUtZm9ybSIgY2xhc3M9InZhbGlkYXRlIiBhY3Rpb249Imh0dHA6Ly9lbnRlcnByaXNld2ViLnVzNS5saXN0LW1hbmFnZS5jb20vc3Vic2NyaWJlL3Bvc3Q/dT1kNTdmZTM1YjYwYTY4Y2IzYTU4YzM0OTFmJmlkPWU1MzAzYTgwOGIiIG1ldGhvZD0icG9zdCIgbmFtZT0ibWMtZW1iZWRkZWQtc3Vic2NyaWJlLWZvcm0iIG5vdmFsaWRhdGU9IiI+DQo8ZGl2IGNsYXNzPSJtYy1maWVsZC1ncm91cCI+PGxhYmVsIGZvcj0ibWNlLUVNQUlMIj5FbWFpbCBBZGRyZXNzPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+Kjwvc3Bhbj4NCjwvbGFiZWw+PGJyIC8+DQo8aW5wdXQgaWQ9Im1jZS1FTUFJTCIgY2xhc3M9InJlcXVpcmVkIGVtYWlsIiBuYW1lPSJFTUFJTCIgdHlwZT0iZW1haWwiIHZhbHVlPSIiIC8+PC9kaXY+DQo8ZGl2IGNsYXNzPSJtYy1maWVsZC1ncm91cCI+PGxhYmVsIGZvcj0ibWNlLUZOQU1FIj5GaXJzdCBOYW1lPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+Kjwvc3Bhbj4NCjwvbGFiZWw+PGJyIC8+DQo8aW5wdXQgaWQ9Im1jZS1GTkFNRSIgY2xhc3M9InJlcXVpcmVkIiBuYW1lPSJGTkFNRSIgdHlwZT0idGV4dCIgdmFsdWU9IiIgLz48L2Rpdj4NCjxkaXYgY2xhc3M9Im1jLWZpZWxkLWdyb3VwIj48bGFiZWwgZm9yPSJtY2UtTE5BTUUiPkxhc3QgTmFtZTxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPio8L3NwYW4+DQo8L2xhYmVsPjxiciAvPg0KPGlucHV0IGlkPSJtY2UtTE5BTUUiIGNsYXNzPSJyZXF1aXJlZCIgbmFtZT0iTE5BTUUiIHR5cGU9InRleHQiIHZhbHVlPSIiIC8+PC9kaXY+DQo8ZGl2IGNsYXNzPSJtYy1maWVsZC1ncm91cCI+PGxhYmVsIGZvcj0ibWNlLUNPTVBBTlkiPkNvbXBhbnk8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz4qPC9zcGFuPg0KPC9sYWJlbD48YnIgLz4NCjxpbnB1dCBpZD0ibWNlLUNPTVBBTlkiIGNsYXNzPSJyZXF1aXJlZCIgbmFtZT0iQ09NUEFOWSIgdHlwZT0idGV4dCIgdmFsdWU9IiIgLz48L2Rpdj4NCjxkaXYgY2xhc3M9Im1jLWZpZWxkLWdyb3VwIj48bGFiZWwgZm9yPSJtY2UtVElUTEUiPkpvYiBUaXRsZTxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPio8L3NwYW4+DQo8L2xhYmVsPjxiciAvPg0KPGlucHV0IGlkPSJtY2UtVElUTEUiIGNsYXNzPSJyZXF1aXJlZCIgbmFtZT0iVElUTEUiIHR5cGU9InRleHQiIHZhbHVlPSIiIC8+PC9kaXY+DQo8ZGl2IGlkPSJtY2UtcmVzcG9uc2VzIiBjbGFzcz0iY2xlYXIiPjwvZGl2Pg0KPHA+PCEtLSByZWFsIHBlb3BsZSBzaG91bGQgbm90IGZpbGwgdGhpcyBpbiBhbmQgZXhwZWN0IGdvb2QgdGhpbmdzIC0gZG8gbm90IHJlbW92ZSB0aGlzIG9yIHJpc2sgZm9ybSBib3Qgc2lnbnVwcy0tPjwvcD4NCjxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogLTUwMDBweDsiPjxpbnB1dCBuYW1lPSJiX2Q1N2ZlMzViNjBhNjhjYjNhNThjMzQ5MWZfZTUzMDNhODA4YiIgdHlwZT0idGV4dCIgdmFsdWU9IiIgLz48L2Rpdj4NCjxkaXYgY2xhc3M9ImNsZWFyIj48aW5wdXQgaWQ9Im1jLWVtYmVkZGVkLXN1YnNjcmliZSIgY2xhc3M9ImJ1dHRvbiIgbmFtZT0ic3Vic2NyaWJlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJzY3JpYmUiIC8+PC9kaXY+DQo8L2Zvcm0+DQo8L2Rpdj4NCjxwPjxzY3JpcHQgdHlwZT0ibWNlLXRleHQvamF2YXNjcmlwdCI+Ly8gPCFbQ0RBVEFbDQp2YXIgZm5hbWVzID0gbmV3IEFycmF5KCk7dmFyIGZ0eXBlcyA9IG5ldyBBcnJheSgpO2ZuYW1lc1swXT0nRU1BSUwnO2Z0eXBlc1swXT0nZW1haWwnO2ZuYW1lc1sxXT0nRk5BTUUnO2Z0eXBlc1sxXT0ndGV4dCc7Zm5hbWVzWzJdPSdMTkFNRSc7ZnR5cGVzWzJdPSd0ZXh0JztmbmFtZXNbM109J0NPTVBBTlknO2Z0eXBlc1szXT0ndGV4dCc7Zm5hbWVzWzhdPSdUSVRMRSc7ZnR5cGVzWzhdPSd0ZXh0JzsNCnRyeSB7DQogICAgdmFyIGpxdWVyeUxvYWRlZD1qUXVlcnk7DQogICAganF1ZXJ5TG9hZGVkPXRydWU7DQp9IGNhdGNoKGVycikgew0KICAgIHZhciBqcXVlcnlMb2FkZWQ9ZmFsc2U7DQp9DQp2YXIgaGVhZD0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTsNCmlmICghanF1ZXJ5TG9hZGVkKSB7DQogICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOw0KICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7DQogICAgc2NyaXB0LnNyYyA9ICcvL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjQuNC9qcXVlcnkubWluLmpzJzsNCiAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7DQogICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlICYmIHNjcmlwdC5vbmxvYWQhPT1udWxsKXsNCiAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZT0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09ICdjb21wbGV0ZScpIG1jZV9wcmVsb2FkX2NoZWNrKCk7DQogICAgICAgIH0gICAgDQogICAgfQ0KfQ0KDQp2YXIgZXJyX3N0eWxlID0gJyc7DQp0cnl7DQogICAgZXJyX3N0eWxlID0gbWNfY3VzdG9tX2Vycm9yX3N0eWxlOw0KfSBjYXRjaChlKXsNCiAgICBlcnJfc3R5bGUgPSAnI21jX2VtYmVkX3NpZ251cCBpbnB1dC5tY2VfaW5saW5lX2Vycm9ye2JvcmRlci1jb2xvcjojNkIwNTA1O30gI21jX2VtYmVkX3NpZ251cCBkaXYubWNlX2lubGluZV9lcnJvcnttYXJnaW46IDAgMCAxZW0gMDsgcGFkZGluZzogNXB4IDEwcHg7IGJhY2tncm91bmQtY29sb3I6IzZCMDUwNTsgZm9udC13ZWlnaHQ6IGJvbGQ7IHotaW5kZXg6IDE7IGNvbG9yOiNmZmY7fSc7DQp9DQp2YXIgaGVhZD0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTsNCnZhciBzdHlsZT0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsNCnN0eWxlLnR5cGU9ICd0ZXh0L2Nzcyc7DQppZiAoc3R5bGUuc3R5bGVTaGVldCkgew0KICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBlcnJfc3R5bGU7DQp9IGVsc2Ugew0KICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlcnJfc3R5bGUpKTsNCn0NCmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOw0Kc2V0VGltZW91dCgnbWNlX3ByZWxvYWRfY2hlY2soKTsnLCAyNTApOw0KDQp2YXIgbWNlX3ByZWxvYWRfY2hlY2tzID0gMDsNCmZ1bmN0aW9uIG1jZV9wcmVsb2FkX2NoZWNrKCl7DQogICAgaWYgKG1jZV9wcmVsb2FkX2NoZWNrcz40MCkgcmV0dXJuOw0KICAgIG1jZV9wcmVsb2FkX2NoZWNrcysrOw0KICAgIHRyeSB7DQogICAgICAgIHZhciBqcXVlcnlMb2FkZWQ9alF1ZXJ5Ow0KICAgIH0gY2F0Y2goZXJyKSB7DQogICAgICAgIHNldFRpbWVvdXQoJ21jZV9wcmVsb2FkX2NoZWNrKCk7JywgMjUwKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQogICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsNCiAgICBzY3JpcHQuc3JjID0gJ2h0dHA6Ly9kb3dubG9hZHMubWFpbGNoaW1wLmNvbS9qcy9qcXVlcnkuZm9ybS1uLXZhbGlkYXRlLmpzJzsNCiAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7DQogICAgdHJ5IHsNCiAgICAgICAgdmFyIHZhbGlkYXRvckxvYWRlZD1qUXVlcnkoIiNmYWtlLWZvcm0iKS52YWxpZGF0ZSh7fSk7DQogICAgfSBjYXRjaChlcnIpIHsNCiAgICAgICAgc2V0VGltZW91dCgnbWNlX3ByZWxvYWRfY2hlY2soKTsnLCAyNTApOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIG1jZV9pbml0X2Zvcm0oKTsNCn0NCmZ1bmN0aW9uIG1jZV9pbml0X2Zvcm0oKXsNCiAgICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KCBmdW5jdGlvbigkKSB7DQogICAgICB2YXIgb3B0aW9ucyA9IHsgZXJyb3JDbGFzczogJ21jZV9pbmxpbmVfZXJyb3InLCBlcnJvckVsZW1lbnQ6ICdkaXYnLCBvbmtleXVwOiBmdW5jdGlvbigpe30sIG9uZm9jdXNvdXQ6ZnVuY3Rpb24oKXt9LCBvbmJsdXI6ZnVuY3Rpb24oKXt9ICB9Ow0KICAgICAgdmFyIG1jZV92YWxpZGF0b3IgPSAkKCIjbWMtZW1iZWRkZWQtc3Vic2NyaWJlLWZvcm0iKS52YWxpZGF0ZShvcHRpb25zKTsNCiAgICAgICQoIiNtYy1lbWJlZGRlZC1zdWJzY3JpYmUtZm9ybSIpLnVuYmluZCgnc3VibWl0Jyk7Ly9yZW1vdmUgdGhlIHZhbGlkYXRvciBzbyB3ZSBjYW4gZ2V0IGludG8gYmVmb3JlU3VibWl0IG9uIHRoZSBhamF4Zm9ybSwgd2hpY2ggdGhlbiBjYWxscyB0aGUgdmFsaWRhdG9yDQogICAgICBvcHRpb25zID0geyB1cmw6ICdodHRwOi8vZW50ZXJwcmlzZXdlYi51czUubGlzdC1tYW5hZ2UyLmNvbS9zdWJzY3JpYmUvcG9zdC1qc29uP3U9ZDU3ZmUzNWI2MGE2OGNiM2E1OGMzNDkxZiZpZD1lNTMwM2E4MDhiJmM9PycsIHR5cGU6ICdHRVQnLCBkYXRhVHlwZTogJ2pzb24nLCBjb250ZW50VHlwZTogImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiLA0KICAgICAgICAgICAgICAgICAgICBiZWZvcmVTdWJtaXQ6IGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcjbWNlX3RtcF9lcnJvcl9tc2cnKS5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5kYXRlZmllbGQnLCcjbWNfZW1iZWRfc2lnbnVwJykuZWFjaCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHh0ID0gJ2ZpbGxlZCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWVsZHMgPSBuZXcgQXJyYXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCc6dGV4dCcsIHRoaXMpLmVhY2goDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1tpXSA9IHRoaXM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzpoaWRkZW4nLCB0aGlzKS5lYWNoKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmRheSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZHMubGVuZ3RoID09IDIpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZGF5ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzWzJdID0geyd2YWx1ZSc6MTk3MH07Ly90cmljayBiaXJ0aGRheXMgaW50byBoYXZpbmcgeWVhcnMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKCBmaWVsZHNbMF0udmFsdWU9PSdNTScgJiYgZmllbGRzWzFdLnZhbHVlPT0nREQnICYmIChmaWVsZHNbMl0udmFsdWU9PSdZWVlZJyB8fCAoYmRheSAmJiBmaWVsZHNbMl0udmFsdWU9PTE5NzApICkgKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJdGhpcy52YWx1ZSA9ICcnOw0KCQkJCQkJCQkJICAgIH0gZWxzZSBpZiAoIGZpZWxkc1swXS52YWx1ZT09JycgJiYgZmllbGRzWzFdLnZhbHVlPT0nJyAmJiAoZmllbGRzWzJdLnZhbHVlPT0nJyB8fCAoYmRheSAmJiBmaWVsZHNbMl0udmFsdWU9PTE5NzApICkgKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJdGhpcy52YWx1ZSA9ICcnOw0KCQkJCQkJCQkJICAgIH0gZWxzZSB7DQoJCQkJCQkJCQkgICAgICAgIGlmICgvXFtkYXlcXS8udGVzdChmaWVsZHNbMF0ubmFtZSkpew0KICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGZpZWxkc1sxXS52YWx1ZSsnLycrZmllbGRzWzBdLnZhbHVlKycvJytmaWVsZHNbMl0udmFsdWU7CQkJCQkJCQkJICAgICAgICANCgkJCQkJCQkJCSAgICAgICAgfSBlbHNlIHsNCiAgICAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBmaWVsZHNbMF0udmFsdWUrJy8nK2ZpZWxkc1sxXS52YWx1ZSsnLycrZmllbGRzWzJdLnZhbHVlOw0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcucGhvbmVmaWVsZC11cycsJyNtY19lbWJlZF9zaWdudXAnKS5lYWNoKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWVsZHMgPSBuZXcgQXJyYXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCc6dGV4dCcsIHRoaXMpLmVhY2goDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1tpXSA9IHRoaXM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzpoaWRkZW4nLCB0aGlzKS5lYWNoKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGZpZWxkc1swXS52YWx1ZS5sZW5ndGggIT0gMyB8fCBmaWVsZHNbMV0udmFsdWUubGVuZ3RoIT0zIHx8IGZpZWxkc1syXS52YWx1ZS5sZW5ndGghPTQgKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJdGhpcy52YWx1ZSA9ICcnOw0KCQkJCQkJCQkJICAgIH0gZWxzZSB7DQoJCQkJCQkJCQkgICAgICAgIHRoaXMudmFsdWUgPSAnZmlsbGVkJzsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtY2VfdmFsaWRhdG9yLmZvcm0oKTsNCiAgICAgICAgICAgICAgICAgICAgfSwgDQogICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IG1jZV9zdWNjZXNzX2NiDQogICAgICAgICAgICAgICAgfTsNCiAgICAgICQoJyNtYy1lbWJlZGRlZC1zdWJzY3JpYmUtZm9ybScpLmFqYXhGb3JtKG9wdGlvbnMpOw0KDQogICAgfSk7DQp9DQpmdW5jdGlvbiBtY2Vfc3VjY2Vzc19jYihyZXNwKXsNCiAgICAkKCcjbWNlLXN1Y2Nlc3MtcmVzcG9uc2UnKS5oaWRlKCk7DQogICAgJCgnI21jZS1lcnJvci1yZXNwb25zZScpLmhpZGUoKTsNCiAgICBpZiAocmVzcC5yZXN1bHQ9PSJzdWNjZXNzIil7DQogICAgICAgICQoJyNtY2UtJytyZXNwLnJlc3VsdCsnLXJlc3BvbnNlJykuc2hvdygpOw0KICAgICAgICAkKCcjbWNlLScrcmVzcC5yZXN1bHQrJy1yZXNwb25zZScpLmh0bWwocmVzcC5tc2cpOw0KICAgICAgICAkKCcjbWMtZW1iZWRkZWQtc3Vic2NyaWJlLWZvcm0nKS5lYWNoKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICB0aGlzLnJlc2V0KCk7DQogICAgCX0pOw0KICAgIH0gZWxzZSB7DQogICAgICAgIHZhciBpbmRleCA9IC0xOw0KICAgICAgICB2YXIgbXNnOw0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgdmFyIHBhcnRzID0gcmVzcC5tc2cuc3BsaXQoJyAtICcsMik7DQogICAgICAgICAgICBpZiAocGFydHNbMV09PXVuZGVmaW5lZCl7DQogICAgICAgICAgICAgICAgbXNnID0gcmVzcC5tc2c7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGkgPSBwYXJzZUludChwYXJ0c1swXSk7DQogICAgICAgICAgICAgICAgaWYgKGkudG9TdHJpbmcoKSA9PSBwYXJ0c1swXSl7DQogICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcGFydHNbMF07DQogICAgICAgICAgICAgICAgICAgIG1zZyA9IHBhcnRzWzFdOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGluZGV4ID0gLTE7DQogICAgICAgICAgICAgICAgICAgIG1zZyA9IHJlc3AubXNnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBjYXRjaChlKXsNCiAgICAgICAgICAgIGluZGV4ID0gLTE7DQogICAgICAgICAgICBtc2cgPSByZXNwLm1zZzsNCiAgICAgICAgfQ0KICAgICAgICB0cnl7DQogICAgICAgICAgICBpZiAoaW5kZXg9PSAtMSl7DQogICAgICAgICAgICAgICAgJCgnI21jZS0nK3Jlc3AucmVzdWx0KyctcmVzcG9uc2UnKS5zaG93KCk7DQogICAgICAgICAgICAgICAgJCgnI21jZS0nK3Jlc3AucmVzdWx0KyctcmVzcG9uc2UnKS5odG1sKG1zZyk7ICAgICAgICAgICAgDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGVycl9pZCA9ICdtY2VfdG1wX2Vycm9yX21zZyc7DQogICAgICAgICAgICAgICAgaHRtbCA9ICcNCg0KDQoNCg0KPGRpdiBpZD0iJytlcnJfaWQrJyIgc3R5bGU9IicrZXJyX3N0eWxlKyciPiAnK21zZysnPC9kaXY+DQoNCg0KDQoNCg0KDQonOw0KDQogICAgICAgICAgICAgICAgdmFyIGlucHV0X2lkID0gJyNtY19lbWJlZF9zaWdudXAnOw0KICAgICAgICAgICAgICAgIHZhciBmID0gJChpbnB1dF9pZCk7DQogICAgICAgICAgICAgICAgaWYgKGZ0eXBlc1tpbmRleF09PSdhZGRyZXNzJyl7DQogICAgICAgICAgICAgICAgICAgIGlucHV0X2lkID0gJyNtY2UtJytmbmFtZXNbaW5kZXhdKyctYWRkcjEnOw0KICAgICAgICAgICAgICAgICAgICBmID0gJChpbnB1dF9pZCkucGFyZW50KCkucGFyZW50KCkuZ2V0KDApOw0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZnR5cGVzW2luZGV4XT09J2RhdGUnKXsNCiAgICAgICAgICAgICAgICAgICAgaW5wdXRfaWQgPSAnI21jZS0nK2ZuYW1lc1tpbmRleF0rJy1tb250aCc7DQogICAgICAgICAgICAgICAgICAgIGYgPSAkKGlucHV0X2lkKS5wYXJlbnQoKS5wYXJlbnQoKS5nZXQoMCk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgaW5wdXRfaWQgPSAnI21jZS0nK2ZuYW1lc1tpbmRleF07DQogICAgICAgICAgICAgICAgICAgIGYgPSAkKCkucGFyZW50KGlucHV0X2lkKS5nZXQoMCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChmKXsNCiAgICAgICAgICAgICAgICAgICAgJChmKS5hcHBlbmQoaHRtbCk7DQogICAgICAgICAgICAgICAgICAgICQoaW5wdXRfaWQpLmZvY3VzKCk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJCgnI21jZS0nK3Jlc3AucmVzdWx0KyctcmVzcG9uc2UnKS5zaG93KCk7DQogICAgICAgICAgICAgICAgICAgICQoJyNtY2UtJytyZXNwLnJlc3VsdCsnLXJlc3BvbnNlJykuaHRtbChtc2cpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBjYXRjaChlKXsNCiAgICAgICAgICAgICQoJyNtY2UtJytyZXNwLnJlc3VsdCsnLXJlc3BvbnNlJykuc2hvdygpOw0KICAgICAgICAgICAgJCgnI21jZS0nK3Jlc3AucmVzdWx0KyctcmVzcG9uc2UnKS5odG1sKG1zZyk7DQogICAgICAgIH0NCiAgICB9DQp9DQovLyBdXT48L3NjcmlwdD48YnIgLz4NCjwhLS1FbmQgbWNfZW1iZWRfc2lnbnVwLS0+[/fusion_code][/one_half][/fullwidth]