@digitransit-component/digitransit-component-datetimepicker 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.development.js +2 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/package.json +2 -2
package/lib/index.development.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("prop-types"),require("react"),require("moment-timezone"),require("lodash/debounce"),require("moment/locale/fi"),require("lodash/uniqueId"),require("i18next"),require("@digitransit-component/digitransit-component-icon"),require("react-select"),require("classnames"),require("react-modal"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","prop-types","react","moment-timezone","lodash/debounce","moment/locale/fi","lodash/uniqueId","i18next","@digitransit-component/digitransit-component-icon","react-select","classnames","react-modal","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-datetimepicker"]={},e.PropTypes,e.React,e.moment,e.debounce,null,e.uniqueId,e.i18next,e.Icon,e.Select,e.cx,e.ReactModal,e.Autosuggest)}(this,(function(e,t,n,i,a,l,o,r,s,d,u,c,p){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=_(t),f=_(n),b=_(i),y=_(a),g=_(o),h=_(r),v=_(s),x=_(d),w=_(u),k=_(c),E=_(p);function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function C(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,a,l,o,r=[],s=!0,d=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(i=l.call(n)).done)&&(r.push(i.value),r.length!==t);s=!0);}catch(e){d=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(d)throw a}}return r}}(e,t)||function(e,t){if(e){if("string"==typeof e)return N(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?N(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function R(e){var t=e;return 3===t.length&&t.split("").every((e=>Number.isInteger(Number(e))))&&(t=Number(t.slice(0,2))<=23?`${t.slice(0,2)}:${t[2]}`:`${t[0]}:${t.slice(1)}`),t}var F=(e,t)=>{var n=!Number.isNaN(e)&&e>=0&&e<=23,i=2===t.length?!Number.isNaN(t)&&Number(t)>=0&&Number(t<=59):!Number.isNaN(t)&&Number(t)>=0&&Number(t<=5);return n&&i};function S(e){if(e.length<=2)return!1;if(3===e.length){var t,n;if(e.includes(":")){var i=C(e.split(":"),2);t=i[0],n=i[1]}else{if(!e.startsWith("0")){var a=e.split("");if(1===Number(a[0])){var l=[a[0].concat(a[1]),a[2]];t=l[0],n=l[1]}else if(2===Number(a[0]))if(Number(a[1]<=3)){var o=[a[0].concat(a[1]),a[2]];t=o[0],n=o[1]}else{var r=[a[0],a[1].concat(a[2])];t=r[0],n=r[1]}else{var s=[a[0],a[1].concat(a[2])];t=s[0],n=s[1]}return!F(t,n)}if(t=e.substring(0,e.length-1),n=e.substring(e.length-1||0),Number(n)>5)return!0}return!F(t,n)}if(5===e.length||4===e.length){var d=e.split(":"),u=d[0],c=d[1];return!!(e.startsWith("0")&&1===c.length&&Number(c)>5)||!F(u,c)}return!1}var P=(e,t)=>{var n=e.trim();if(null!==n.match(/^[0-9]{1,2}(\.|:)[0-9]{2}$/)){var i=n.includes(".")?".":":",a=n.split(i),l=Number(a[0]),o=!Number.isNaN(l)&&l>=0&&l<=23,r=Number(a[1]);return!Number.isNaN(r)&&r>=0&&r<=59&&o?b.default(t).hours(l).minutes(r).valueOf():null}return null};var O={"sr-only":"styles_sr-only__BrzYQ","dt-datetimepicker":"styles_dt-datetimepicker__PtoFG",hidden:"styles_hidden__6ySER","datetimepicker-open-container":"styles_datetimepicker-open-container__1dVr5","top-row-container":"styles_top-row-container__cXGjL",closed:"styles_closed__Fqe1r","time-icon":"styles_time-icon__ntgLZ","dropdown-icon":"styles_dropdown-icon__diYYB","close-icon":"styles_close-icon__-MzK5","label-open":"styles_label-open__Gmvov",textbutton:"styles_textbutton__T7wS2",active:"styles_active__4L82E","combobox-left":"styles_combobox-left__Sp4kh","combobox-right":"styles_combobox-right__Hg8kN","departure-or-arrival-container":"styles_departure-or-arrival-container__pJ-Iw","radio-textbutton-label":"styles_radio-textbutton-label__h-zfy","first-radio":"styles_first-radio__FWNoD","radio-textbutton":"styles_radio-textbutton__tsKET","departure-now-button":"styles_departure-now-button__VKMMK","open-button":"styles_open-button__c2B-6","close-button":"styles_close-button__2mfgI","right-edge":"styles_right-edge__29UYw","combobox-container":"styles_combobox-container__CLY9U","combobox-icon":"styles_combobox-icon__-0XPH","date-input-icon":"styles_date-input-icon__KMrj1","time-input-icon":"styles_time-input-icon__qkhC7","datetimepicker-select-container":"styles_datetimepicker-select-container__EVW1l","picker-container":"styles_picker-container__V02r4","combobox-mobile-container":"styles_combobox-mobile-container__u2DSO","mobile-modal-overlay":"styles_mobile-modal-overlay__8vF8L","mobile-modal-content":"styles_mobile-modal-content__fWRgy","top-row":"styles_top-row__h8xy1","modal-title":"styles_modal-title__EA3YD","tab-row":"styles_tab-row__orgwh","radio-tab-label":"styles_radio-tab-label__vIfup","input-row":"styles_input-row__2XXEY","input-container":"styles_input-container__USZlF","time-input-mobile":"styles_time-input-mobile__6e4A5","mobile-input-display":"styles_mobile-input-display__VUMd0","mobile-input-hidden":"styles_mobile-input-hidden__2KIuK",container:"styles_container__ihyhz",suggestion:"styles_suggestion__ZczJa",suggestionHighlighted:"styles_suggestionHighlighted__fzLiW",suggestionsContainerOpen:"styles_suggestionsContainerOpen__ISHXi",input:"styles_input__PAfbH","buttons-row":"styles_buttons-row__-3wsn","ready-button":"styles_ready-button__dH7Qc"};function G(e){var t=e.value,i=e.onChange,a=e.getDisplay,l=e.timeChoices,o=e.id,r=e.label,s=e.icon,d=e.disableTyping,u=e.timeZone,c=e.datePicker,p=e.translationSettings;b.default.tz.setDefault(u);var _=C(n.useState(a(t)),2),m=_[0],y=_[1],g=C(n.useState(!1),2),v=g[0],k=g[1],E=C(n.useState(!0),2),N=E[0],F=E[1],G=C(n.useState(!1),2),W=G[0],q=G[1];n.useEffect((()=>{y(a(t)),c||q(!1)}),[t]);var X=e=>{var t=Number(e);!Number.isNaN(t)&&b.default(t).isValid()&&b.default(t).valueOf()===t&&i(t)};var A=l.map((e=>({value:e.toString(),label:a(e)}))),$=c?A:A.filter((e=>e.label.split(":")[1]%15==0)),T=$.length>0?null==$?void 0:$.reduce(((e,n)=>Math.abs(t-e.value)<Math.abs(t-n.value)?e:n)):void 0,D=`${o}-input`,z=`${o}-label`,Z=h.default.t("invalid-input",p);return f.default.createElement("label",{className:O["combobox-container"],htmlFor:D},f.default.createElement("span",{className:O["sr-only"],id:z},r," ",m),s,f.default.createElement(x.default,{"aria-labelledby":z,ariaLiveMessages:{guidance:e=>void 0===e.isDisabled&&W?Z:".",onChange:()=>"",onFilter:()=>"",onFocus:e=>{var t=e.context,n=e.label;return"menu"===t?n:""}},options:A,inputId:D,onChange:e=>{var n=b.default(t).format("HH:mm"),i=P(m,t);if(v)return null!==i?(n!==m&&e.value===t?X(i):X(e.value),k(!1)):(e.value!==t?X(e.value):y(a(t)),k(!1)),void(c||q(!1));c||q(!1),X(e.value)},components:{IndicatorsContainer:()=>null},className:w.default(O["datetimepicker-select-container"],W&&"datetimepicker-invalid-input"),classNamePrefix:"datetimepicker-select",onInputChange:(e,t)=>{var n=t.action;if("menu-close"===n?F(!0):N&&F(!1),!(d||e&&!function(e){if(e.length<(null==m?void 0:m.length)){var t=S(e);return q(t),!0}if(/[a-zA-Z§ÄäÖö.-\s]/g.test(e))return!1;var n=S(e.length>5?e.slice(0,-1):e);return q(n),e.length<=5}(e))&&"input-change"===n){var i=R(e);y(i),k(!0)}},inputValue:!d&&m,value:T,noOptionsMessage:()=>"",filterOption:(e,t)=>{var n;if(c)return!0;var i=5===t.length||4===t.length&&1===t.split(":")[0].length,a=e.label.split(":")[1]%15==0,l=1===(null===(n=t.split(":")[1])||void 0===n?void 0:n.length);if(N&&a)return!0;if(l){var o=1===t.split(":")[0].length?"0".concat(t.split(":")[0]):t.split(":")[0],r=t.split(":")[1],s=e.label.split(":")[0],d=e.label.split(":")[1];if(o===s){var u=10*Number(r),p=Number(d)-u;return p>=0&&p<=9}}return i&&!N?4===t.length?"0".concat(t)===e.label:t===e.label:!!a&&((e,t)=>{var n=t.length<=2?t:t.split(":")[0],i=/^([0-1]?[0-9]|2[0-3])$/.test(n),a=1===n.length?"0".concat(t):t;return!i||e.label.split(":")[0]===a.split(":")[0]})(e,t)},controlShouldRenderValue:d,tabSelectsValue:!1,placeholder:"",onFocus:e=>{d||e.target.select()},onBlur:()=>{if(v){var e=P(m,t);null!==e?(X(e),k(!1)):(y(a(t)),k(!1))}c||q(!1)},onKeyDown:e=>{["ArrowDown","ArrowUp"].includes(e.key)&&k(!1)},isSearchable:!d}))}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}(".styles_sr-only__BrzYQ:not(:focus, :active) {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n\n.styles_dt-datetimepicker__PtoFG {\n border: none;\n padding: 0;\n margin: 0;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG button,\n .styles_dt-datetimepicker__PtoFG label {\n font-size: 1em;\n font-weight: inherit; }\n .styles_dt-datetimepicker__PtoFG label button {\n cursor: pointer;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', Roboto, Arial, Georgia, serif; }\n .styles_dt-datetimepicker__PtoFG .styles_hidden__6ySER {\n display: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-open-container__1dVr5 {\n background-color: #f4f4f5;\n border-radius: 5px;\n padding: 15px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n display: flex;\n flex-wrap: wrap; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL.styles_closed__Fqe1r {\n margin: 11px 0 6px 18px; }\n @media screen and (max-width: 319px) {\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_time-icon__ntgLZ svg {\n width: 18px;\n height: 19px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB {\n margin-left: 9px;\n position: relative;\n top: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB svg {\n width: 14px;\n height: 10px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg {\n width: 12px;\n height: 12px;\n border-radius: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg path {\n stroke-width: 30; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label.styles_label-open__Gmvov {\n align-items: flex-start;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL button,\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n font-size: 1em;\n letter-spacing: -0.5px;\n line-height: 1; }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 9px;\n margin-top: 1px;\n background: none;\n border: none;\n color: #666;\n padding: 0; }\n @media screen and (min-width: 768px) {\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2.styles_active__4L82E {\n color: var(--color); }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-left__Sp4kh {\n position: relative;\n margin-right: 4px;\n width: 63%; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-right__Hg8kN {\n position: relative;\n margin-left: 4px;\n width: 37%; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-or-arrival-container__pJ-Iw {\n height: calc(1rem + 20px);\n background-color: #ddd;\n border-radius: 8px;\n display: flex;\n width: calc(5px + 13em); }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy {\n color: #333;\n margin: 2px;\n background: none;\n border-radius: 6px;\n padding: 9px 0;\n width: 50%;\n cursor: pointer;\n height: calc(1rem + 16px);\n text-align: center;\n font-weight: 400;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.03em; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_active__4L82E {\n font-weight: 500;\n background: white; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy:focus-within {\n /* First apply outline that is used in Edge and Firefox */\n outline: 1px dotted #212121;\n /* Then override outline for webkit browsers like Chrome, this has no effect on other browsers */\n outline: 5px auto -webkit-focus-ring-color;\n /* stylelint-disable-line declaration-block-no-duplicate-properties */ }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_first-radio__FWNoD {\n margin: 0;\n display: flex;\n align-items: flex-start; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-now-button__VKMMK {\n font-family: inherit;\n letter-spacing: -0.02em;\n height: calc(1rem + 18px);\n color: var(--color);\n padding: 8px 0;\n width: 6.6875rem;\n background: white;\n border: 1px solid #888;\n border-radius: 30px;\n margin-left: 11px; }\n .styles_dt-datetimepicker__PtoFG .styles_open-button__c2B-6 {\n display: flex;\n margin-bottom: 0;\n margin-top: -1px;\n padding: 2px 0 2px 0; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI {\n transition: transform 0.2s;\n position: relative;\n top: -8px;\n right: -8px;\n border: 0;\n font-weight: normal;\n background: none;\n color: var(--color);\n padding: 0;\n line-height: normal; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI:hover {\n transform: scale(1.2); }\n .styles_dt-datetimepicker__PtoFG .styles_right-edge__29UYw {\n margin-left: auto;\n margin-right: 0;\n position: relative;\n top: -2px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-container__CLY9U {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH {\n color: var(--color);\n height: 40px;\n position: absolute;\n z-index: 7;\n pointer-events: none; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 14px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 svg {\n width: 20px;\n height: 18px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 8px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 svg {\n margin-top: 1px;\n width: 22px;\n height: 22px; }\n .styles_dt-datetimepicker__PtoFG .datetimepicker-invalid-input input {\n color: #f00 !important; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l {\n position: relative;\n height: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__control {\n cursor: inherit;\n height: 40px;\n border: 1px solid #888; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__value-container {\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__single-value {\n margin: 0 0 0 47px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input {\n background: inherit;\n position: relative;\n margin-left: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input {\n opacity: 1 !important;\n background: inherit;\n box-shadow: none;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333;\n font-family: inherit;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input:focus {\n box-shadow: none;\n outline: none;\n border: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu {\n z-index: 19;\n padding: 0;\n background: #fff;\n max-height: 250px;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list {\n max-height: 250px;\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option {\n height: 50px;\n border-top: 1px solid #ddd;\n padding: 13px 0 0 12px;\n letter-spacing: -0.6px;\n color: #333; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-selected {\n background: inherit; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-focused {\n background: #dfe5e8; }\n .styles_dt-datetimepicker__PtoFG .styles_picker-container__V02r4 {\n margin: 14px 0 0 0;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-mobile-container__u2DSO {\n flex-grow: 1; }\n\n.styles_mobile-modal-overlay__8vF8L {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.6);\n z-index: 1000; }\n\n.styles_mobile-modal-content__fWRgy {\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', Roboto, Arial, Georgia, serif;\n background: white;\n width: 89%;\n position: absolute;\n left: 5.5%;\n padding: 31px 20px 33px 20px;\n top: 80px;\n border-radius: 5px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 {\n display: flex;\n justify-content: space-between;\n margin-bottom: 21px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_modal-title__EA3YD {\n font-weight: var(--font-weight-medium);\n font-size: 20px;\n line-height: 18px;\n letter-spacing: -0.5px;\n color: #333;\n padding: 6px 0 0 8px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_departure-now-button__VKMMK {\n background-color: white;\n font-family: inherit;\n padding: 5px 15px;\n border: 1px solid #888;\n border-radius: 50px;\n font-weight: var(--font-weight-medium);\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.02em;\n color: var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh {\n display: flex;\n border: 2px solid #ddd;\n border-radius: 5px;\n margin-bottom: 16px;\n background-color: #ddd; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup {\n padding: 9px 0;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.5px;\n border-radius: 3px;\n font-weight: normal;\n width: 50%;\n text-align: center;\n color: #333; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup.styles_active__4L82E {\n font-weight: var(--font-weight-medium);\n background-color: #fff; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY {\n display: flex;\n margin-bottom: 25px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:first-child {\n flex-basis: 60%;\n margin-right: 10px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:nth-child(2) {\n flex-basis: 40%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF {\n border: 1px solid #888;\n border-radius: 5px;\n display: flex;\n align-items: center;\n height: 40px;\n line-height: 1.5;\n font-size: 100%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF:focus-within {\n background: rgba(0, 122, 201, 0.06);\n border: 2px solid var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH {\n height: 18px;\n font-size: 18px;\n padding: 0 0 0 10px;\n border: none;\n position: relative;\n top: 3px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 > svg {\n height: 20px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .mobile-datetimepicker-invalid-input {\n color: #f00 !important; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_time-input-mobile__6e4A5 {\n font-family: inherit;\n box-shadow: none;\n font-size: 18px;\n letter-spacing: -0.5px;\n line-height: 20px;\n font-weight: var(--font-weight-medium);\n border: none;\n outline: none;\n background: none;\n width: 50px;\n margin-left: 10px;\n color: #333;\n height: 1.5265rem; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0 {\n position: relative;\n left: 10px;\n border: none;\n background: inherit;\n box-shadow: none;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-stretch: normal;\n font-style: normal;\n font-size: 16px;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0:focus {\n outline: none;\n box-shadow: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK {\n font-size: 16px;\n margin-bottom: 12px;\n height: 0;\n width: 0;\n background: inherit;\n color: transparent;\n outline: none;\n box-shadow: none;\n border: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK:focus {\n outline: none;\n box-shadow: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz {\n position: absolute;\n width: calc((100% - 50px) * 0.6);\n height: 25px;\n font-size: 15px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestion__ZczJa {\n list-style: none;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 49px;\n height: 50px;\n margin: 0;\n padding: 0 0 0 16px;\n color: rgba(0, 0, 0, 0.87);\n background: white; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionHighlighted__fzLiW {\n background: #dfe5e8; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi {\n position: absolute;\n z-index: 19;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 42px;\n left: -2px;\n width: 100%;\n font-size: 16px;\n line-height: 1;\n color: rgba(0, 0, 0, 0.87); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi ul {\n padding: 0;\n margin: 0; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH {\n box-shadow: none;\n border: none;\n background: none;\n font-size: 16px;\n font-weight: var(--font-weight-medium);\n height: 25px;\n display: inline-block;\n font-family: inherit;\n line-height: 1.33;\n padding-left: 46px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH:focus {\n outline: none;\n border: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn {\n display: flex;\n flex-direction: column;\n font-size: 16px;\n font-weight: var(--font-weight-medium); }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button {\n background-color: white;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-size: 16px;\n letter-spacing: -0.02em;\n width: 100%;\n border-radius: 50px;\n height: 40px;\n color: var(--color);\n border: 1px solid #888; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button.styles_ready-button__dH7Qc {\n color: white;\n background-color: var(--color);\n border: none;\n margin-bottom: 10px; }\n"),"production"!==process.env.NODE_ENV&&(G.propTypes={value:m.default.number.isRequired,onChange:m.default.func.isRequired,getDisplay:m.default.func.isRequired,timeChoices:m.default.arrayOf(m.default.number).isRequired,id:m.default.string.isRequired,label:m.default.node.isRequired,icon:m.default.node.isRequired,disableTyping:m.default.bool,timeZone:m.default.string,datePicker:m.default.bool,translationSettings:m.default.shape({lng:m.default.string.isRequired})}),G.defaultProps={disableTyping:!1,timeZone:"Europe/Helsinki",datePicker:!1,translationSettings:{lng:"fi"}};var W={de:{today:"Heute",tomorrow:"Morgen","accessible-close":"Schließe die Auswahl","accessible-closed":"Auswahl geschlossen","accessible-open":"Öffne die Auswahl","accessible-opened":"Auswahl geöffnet","accessible-title":"Datum und Uhrzeitauswahl",arrival:"Ankunft",date:"Datum",departure:"Abfahrt","departure-now":"Abfahrt jetzt","choose-time":"Zeit wählen",ready:"Fertig",time:"Zeit",cancel:"Abbrechen"},en:{today:"Today",tomorrow:"Tomorrow","accessible-close":"Close the picker","accessible-closed":"Timepicker closed","accessible-open":"Open the picker","accessible-opened":"Timepicker opened","accessible-title":"Date and timepicker","accessible-update-instructions":"Changing time parameters will trigger a new search.",arrival:"Arrival",date:"Date",departure:"Departure","departure-now":"Leaving now",time:"Time","choose-time":"Choose time",ready:"Ready",cancel:"Cancel","invalid-input":"The time you entered is invalid"},fi:{today:"Tänään",tomorrow:"Huomenna","accessible-close":"Sulje valitsin","accessible-closed":"Valitsin suljettu","accessible-open":"Avaa valitsin","accessible-opened":"Valitsin avattu","accessible-title":"Aika- ja päivämäärävalitsin","accessible-update-instructions":"Aikavalintojen muuttaminen laukaisee uuden haun.",arrival:"Perillä",date:"Päivä",departure:"Lähtöaika","departure-now":"Lähtö nyt",time:"Aika","choose-time":"Valitse aika",ready:"Valmis",cancel:"Peruuta","invalid-input":"Syöttämäsi aika on virheellinen"},sv:{today:"I dag",tomorrow:"I morgon","accessible-close":"Stäng väljaren","accessible-closed":"Väljaren stängde","accessible-open":"Öppna väljaren","accessible-opened":"Väljaren öppnade","accessible-title":"Tid- och datumväljaren","accessible-update-instructions":"Om du ändrar tiderna, startas en ny sökning automatiskt.",arrival:"Anländer",date:"Datum",departure:"Avgångstid","departure-now":"Avgår nu",time:"Tid","choose-time":"Välj tid",ready:"Färdig",cancel:"Avbryt","invalid-input":"Tiden du angav är felaktig"}};function q(){var e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)}function X(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n,i,a={},l=Object.keys(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var A=["ref"];function $(e){var t=e.value,i=e.getDisplay,a=e.onChange,l=e.itemCount,o=e.startTime,r=e.id,s=e.label,d=e.icon,u=e.timeZone;b.default.tz.setDefault(u);var c=C(n.useState(!1),2),p=c[0],_=c[1],m=n.useRef(null),y=Array(l).fill().map(((e,t)=>b.default(o).add(t,"day").valueOf())),g=y.map((e=>t-e)).findIndex((e=>e<6e4));n.useLayoutEffect((()=>{p&&m.current&&(m.current.scrollTop=50*g)}),[t,p]);var h=!(navigator.userAgent.toLowerCase().indexOf("android")>-1),v=`${r}-input`,x=`${r}-label`;return f.default.createElement("label",{className:O["input-container"],htmlFor:v},f.default.createElement("span",null,d),f.default.createElement("span",{className:O["sr-only"],id:x},s),h?f.default.createElement("select",{className:O["mobile-input-display"],onChange:e=>a(Number(e.target.value)),value:t},y.map((e=>f.default.createElement("option",{key:e,value:e},i(e))))):f.default.createElement(E.default,{id:r,suggestions:y,getSuggestionValue:e=>e.toString(),renderSuggestion:e=>i(e),onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,inputProps:{value:i(t),onChange:(e,t)=>{var n=t.newValue;a(Number(n))},onFocus:()=>{_(!0)},onBlur:()=>{_(!1)},"aria-labelledby":x,"aria-autocomplete":"none",readOnly:!0},focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,renderSuggestionsContainer:e=>{var t=e.containerProps,n=e.children,i=t.ref,a=X(t,A);return f.default.createElement("div",Object.assign({tabIndex:"-1"},a,{ref:e=>{e&&(m.current=e,i(e))}}),n)},theme:O}))}function T(e){var t=e.value,i=e.getDisplay,a=e.onChange,l=e.id,o=e.label,r=e.icon,s=e.timeZone,d=C(n.useState(i(t)),2),u=d[0],c=d[1],p=C(n.useState(!1),2),_=p[0],m=p[1];b.default.tz.setDefault(s);var y=`${l}-input`,g=`${l}-label`,h=n.useRef(null);return n.useLayoutEffect((()=>{h.current&&h.current.focus()}),[]),f.default.createElement("label",{className:O["input-container"],htmlFor:y},f.default.createElement("span",null,r),f.default.createElement("span",{className:O["sr-only"],id:g},o),f.default.createElement("input",{id:y,inputMode:"numeric",type:"text",maxLength:"6",className:w.default(O["time-input-mobile"],_&&"mobile-datetimepicker-invalid-input"),value:u,onFocus:e=>{e.target.setSelectionRange(0,0)},onChange:e=>{var n=e.target.value,i=S(n);if(m(i),n.match(/[0-9]{3}:[0-9]{2}/)&&n.slice(1)===u&&(n=n.charAt(0)),!(n.length>5)){var l=R(n);c(l);var o=P(l,t);o&&a(o)}},ref:h}))}function D(e){var t=e.departureOrArrival,i=e.onNowClick,a=e.lang,l=e.color,o=e.timeZone,r=e.onSubmit,s=e.onCancel,d=e.timestamp,u=e.getTimeDisplay,c=e.dateSelectItemCount,p=e.getDateDisplay,_=e.fontWeights;b.default.tz.setDefault(o);var m={lng:a},y=C(n.useState(d),2),x=y[0],w=y[1],E=C(n.useState(t),2),N=E[0],R=E[1];var F=C(n.useState(g.default("datetimepicker-")),1)[0],S=b.default().startOf("day").hour(b.default(x).hour()).minute(b.default(x).minute()).valueOf();return f.default.createElement(k.default,{appElement:document?document.querySelector("#app"):void 0,isOpen:!0,className:O["mobile-modal-content"],overlayClassName:O["mobile-modal-overlay"]},f.default.createElement("div",{style:{"--color":`${l}`,"--font-weight-medium":_.medium}},f.default.createElement("div",{className:O["top-row"]},f.default.createElement("h3",{className:O["modal-title"]},h.default.t("choose-time",m)),f.default.createElement("button",{type:"button",className:O["departure-now-button"],onClick:i},h.default.t("departure-now",m))),f.default.createElement("div",{className:O["tab-row"]},f.default.createElement("label",{htmlFor:`${F}-modal-departure`,className:`${O["radio-tab-label"]}\n ${O["departure"===N?"active":void 0]}`},h.default.t("departure",m),f.default.createElement("input",{id:`${F}-modal-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:O["radio-textbutton"],onChange:()=>{R("departure")},checked:"departure"===N})),f.default.createElement("label",{htmlFor:`${F}-modal-arrival`,className:`${O["radio-tab-label"]}\n ${O["arrival"===N?"active":void 0]}`},h.default.t("arrival",m),f.default.createElement("input",{id:`${F}-modal-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:O["radio-textbutton"],onChange:()=>{R("arrival")},checked:"arrival"===N}))),f.default.createElement("div",{className:O["input-row"]},f.default.createElement($,{value:x,getDisplay:p,onChange:w,itemCount:c,startTime:S,id:`${F}-date`,label:h.default.t("date",m),icon:f.default.createElement("span",{className:`${O["combobox-icon"]} ${O["date-input-icon"]}`},f.default.createElement(v.default,{img:"calendar",color:l})),timeZone:o}),f.default.createElement(T,{value:x,getDisplay:u,onChange:w,id:`${F}-time`,label:h.default.t("time",m),icon:f.default.createElement("span",{className:`${O["combobox-icon"]} ${O["time-input-icon"]}`},f.default.createElement(v.default,{img:"time",color:l})),timeZone:o})),f.default.createElement("div",{className:O["buttons-row"]},f.default.createElement("button",{type:"button",className:O["ready-button"],onClick:()=>r(x,N)},h.default.t("ready",m)),f.default.createElement("button",{type:"button",className:O["cancel-button"],onClick:s},h.default.t("cancel",m)))))}function z(e){var t=e.timestamp,i=e.onTimeChange,a=e.onDateChange,l=e.departureOrArrival,o=e.onNowClick,r=e.onDepartureClick,s=e.onArrivalClick,d=e.embedWhenClosed,u=e.embedWhenOpen,c=e.lang,p=e.color,_=e.timeZone,m=e.onModalSubmit,y=e.fontWeights,x=e.serviceTimeRange,w=e.onOpen,k=e.onClose,E=e.openPicker;b.default.tz.setDefault(_);var N=C(n.useState(E||!1),2),R=N[0],F=N[1],S=C(n.useState(t||b.default().valueOf()),2),P=S[0],X=S[1],A=C(n.useState(null),2),$=A[0],T=A[1],z=C(n.useState(g.default("datetimepicker-")),1)[0],Z=C(n.useState(q()&&function(){if("undefined"==typeof window||null===window)return!1;var e=document.createElement("input");return e.type="date","date"===e.type&&(e.type="time","time"===e.type)}()),1)[0],j=n.useRef(),V=n.useRef(),M=n.useRef(),I={lng:c};n.useEffect((()=>{Object.keys(W).forEach((e=>h.default.addResourceBundle(e,"translation",W[c])))}),[]),n.useEffect((()=>{b.default.locale(c)}),[c]);var L=null===t;n.useEffect((()=>{L?X(b.default().valueOf()):($&&(clearInterval($),T(null)),X(t))}),[t]),n.useEffect((()=>{if(L){$&&clearInterval($);var e=setInterval((()=>{var t=b.default().valueOf();b.default(P).isSame(t,"minute")||(clearInterval(e),T(null),X(t))}),5e3);return T(e),()=>clearInterval(e)}}),[P]);var H=n.useRef();n.useEffect((()=>{H.current=R}));for(var Y=e=>{var t,n=b.default(e);return t=`${(t=n.isSame(b.default(),"day")?h.default.t("today",I):n.isSame(b.default().add(1,"day"),"day")?h.default.t("tomorrow",I):n.format("dd D.M.")).charAt(0).toUpperCase()}${t.slice(1)}`},U=e=>b.default(e).format("HH:mm"),K=b.default(P),B=b.default(P).startOf("day").valueOf(),J=[],Q=b.default(B);Q.isSame(B,"day");)J.push(Q.valueOf()),q()?Q.add(15,"minutes"):Q.add(1,"minutes");if(null===t){var ee=3e5,te=Math.ceil(P/ee)*ee,ne=Array(7).fill().map(((e,t)=>te+t*ee)),ie=J.map((e=>P-e)).findIndex((e=>e<=0));J.splice(ie,0,...ne),J=Array.from(new Set(J))}var ae=b.default().startOf("day").hour(K.hour()).minute(K.minute()).valueOf(),le=Array(x).fill().map(((e,t)=>b.default(ae).add(t,"day").valueOf()));function oe(){M.current&&(M.current.innerHTML=h.default.t("accessible-closed",I),setTimeout((()=>{M.current.innerHTML=null}),100))}return f.default.createElement("fieldset",{className:O["dt-datetimepicker"],id:`${z}-root`,style:{"--color":`${p}`,"--font-weight-medium":y.medium}},f.default.createElement("legend",{className:O["sr-only"]},h.default.t("accessible-title",I)),f.default.createElement("span",{className:O["sr-only"]},h.default.t("accessible-update-instructions",I)),f.default.createElement("div",{className:R?`${O.hidden} datetimepicker-top-row`:`${O["top-row-container"]} ${O.closed} datetimepicker-top-row`},f.default.createElement("label",{className:O["label-open"],htmlFor:`${z}-open`},f.default.createElement("span",{className:O["time-icon"]},f.default.createElement(v.default,{img:"time",color:p})),f.default.createElement("span",{className:O["sr-only"]},h.default.t("accessible-open",I)),f.default.createElement("span",{role:"alert",className:O["sr-only"],ref:M}),f.default.createElement("button",{id:`${z}-open`,type:"button",className:`${O.textbutton} ${O.active} ${O["open-button"]}`,"aria-controls":`${z}-root`,"aria-expanded":"false",onClick:()=>{F(!0),M.current&&(M.current.innerHTML=h.default.t("accessible-opened",I),setTimeout((()=>{M.current.innerHTML=null}),100)),w&&w()},ref:j},f.default.createElement("span",null,L&&"departure"===l?h.default.t("departure-now",I):f.default.createElement(f.default.Fragment,null,h.default.t("departure"===l?"departure":"arrival",I),` ${b.default().isSame(b.default(P),"day")?"":Y(P).toLowerCase()} ${U(P)}`)),f.default.createElement("span",{className:O["dropdown-icon"]},f.default.createElement(v.default,{img:"arrow-dropdown",color:p})))),f.default.createElement("span",{className:O["right-edge"]},d)),f.default.createElement("div",null),Z?R&&f.default.createElement(D,{departureOrArrival:l,onNowClick:()=>{F(!1),oe(),o()},lang:c,color:p,onSubmit:(e,t)=>{m(e,t),F(!1),oe()},onCancel:()=>{F(!1),oe(),k&&k()},getTimeDisplay:U,timeZone:_,timestamp:P,getDateDisplay:Y,dateSelectItemCount:x,getDisplay:U,fontWeights:y}):f.default.createElement(f.default.Fragment,null,f.default.createElement("div",{className:`${O["datetimepicker-open-container"]} ${R?"":O.hidden}`},f.default.createElement("div",{className:R?`${O["top-row-container"]} datetimepicker-top-row`:`${O.hidden} datetimepicker-top-row`}," ",f.default.createElement("span",{role:"alert",className:O["sr-only"],ref:M}),f.default.createElement("span",null),f.default.createElement("span",{className:O["departure-or-arrival-container"]},f.default.createElement("label",{htmlFor:`${z}-departure`,className:`${O["radio-textbutton-label"]}\n ${O["departure"===l?"active":void 0]}`},h.default.t("departure",I),f.default.createElement("input",{id:`${z}-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:O["radio-textbutton"],onChange:()=>{r()},checked:"departure"===l})),f.default.createElement("label",{htmlFor:`${z}-arrival`,className:`${O["radio-textbutton-label"]}\n ${O["arrival"===l?"active":void 0]}`},h.default.t("arrival",I),f.default.createElement("input",{id:`${z}-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:O["radio-textbutton"],onChange:()=>{s()},checked:"arrival"===l}))),f.default.createElement("button",{id:`${z}-now`,type:"button",className:O["departure-now-button"],onClick:()=>{F(!1),oe(),k&&k(),o()},ref:V},h.default.t("departure-now",I)),f.default.createElement("span",{className:O["right-edge"]},f.default.createElement("button",{type:"button",className:O["close-button"],"aria-controls":`${z}-root`,"aria-expanded":"true",onClick:()=>{F(!1),oe(),k&&k()}},f.default.createElement("span",{className:O["close-icon"]},f.default.createElement(v.default,{img:"close",color:p})),f.default.createElement("span",{className:O["sr-only"]},h.default.t("accessible-close",I))))),f.default.createElement("div",{className:R?`${O["picker-container"]}`:`${O.hidden} datetimepicker-top-row`},f.default.createElement("span",{className:O["combobox-left"]},f.default.createElement(G,{value:P,onChange:e=>{a(e)},getDisplay:Y,timeChoices:le,validate:()=>null,icon:f.default.createElement("span",{className:`${O["combobox-icon"]} ${O["date-input-icon"]}`},f.default.createElement(v.default,{img:"calendar",color:p})),id:`${z}-date`,label:h.default.t("date",I),disableTyping:!0,timeZone:_,datePicker:!0})),f.default.createElement("span",{className:O["combobox-right"]},f.default.createElement(G,{value:P,onChange:e=>{i(e)},getDisplay:U,timeChoices:J,icon:f.default.createElement("span",{className:`${O["combobox-icon"]} ${O["time-input-icon"]}`},f.default.createElement(v.default,{img:"time",color:p})),id:`${z}-time`,label:h.default.t("time",I),timeZone:_,translationSettings:I})))),f.default.createElement("span",{className:R?"":O.hidden},u),f.default.createElement("div",{className:R?"datetimepicker-bottom-row-open":""})))}function Z(e){var t=e.realtime,i=e.initialArriveBy,a=e.initialTimestamp,l=e.onDepartureClick,o=e.onArrivalClick,r=e.onTimeChange,s=e.onDateChange,d=e.onNowClick,u=e.embedWhenClosed,c=e.embedWhenOpen,p=e.lang,_=e.color,m=e.timeZone,g=e.fontWeights,h=e.serviceTimeRange,v=e.onOpen,x=e.onClose,w=e.openPicker;b.default.locale(p),b.default.tz.setDefault(m);var k=t?null:b.default().valueOf(),E=C(n.useState(a?1e3*a:k),2),N=E[0],R=E[1],F=C(n.useState(!0===i?"arrival":"departure"),2),S=F[0],P=F[1];n.useEffect((()=>{var e=null===N&&void 0===a,t=null===N||void 0===a,n=Math.round(N/1e3)===a;!e&&(t||!n)&&R(void 0===a?null:1e3*a),!i==("arrival"===S)&&P(!0===i?"arrival":"departure")}),[a,i]);var O=y.default((e=>{if(null===e)return R(b.default().valueOf()),void r(Math.round(b.default().valueOf()/1e3),"arrival"===S);R(e),r(Math.round(e/1e3),"arrival"===S)}),10),G=y.default((e=>{if(null===e)return R(b.default().valueOf()),void s(Math.round(b.default().valueOf()/1e3),"arrival"===S);R(e),s(Math.round(e/1e3),"arrival"===S)}),10);return f.default.createElement(z,{timestamp:N,onTimeChange:O,onDateChange:G,departureOrArrival:S,onNowClick:()=>{P("departure");var e=t?null:b.default().valueOf();R(e),d(Math.round(e/1e3))},onDepartureClick:()=>{var e=!1,t=N;if(null===N){var n=b.default().valueOf();R(n),t=n,e=!0}"departure"!==S&&(P("departure"),e=!0),e&&l(Math.round(t/1e3))},onArrivalClick:()=>{var e=!1,t=N;if(null===N){var n=b.default().valueOf();R(n),t=n,e=!0}"arrival"!==S&&(P("arrival"),e=!0),e&&o(Math.round(t/1e3))},embedWhenClosed:u,embedWhenOpen:c,lang:p,color:_,timeZone:m,onModalSubmit:(e,t)=>{R(e),P(t),r(e/1e3,"arrival"===t,!0)},fontWeights:g,serviceTimeRange:h,onOpen:v,onClose:x,openPicker:w})}"production"!==process.env.NODE_ENV&&($.propTypes={value:m.default.number.isRequired,getDisplay:m.default.func.isRequired,onChange:m.default.func.isRequired,itemCount:m.default.number.isRequired,startTime:m.default.number.isRequired,id:m.default.string.isRequired,label:m.default.string.isRequired,icon:m.default.node,dateTimeCombined:m.default.bool,timeZone:m.default.string}),$.defaultProps={icon:null,dateTimeCombined:!1,timeZone:"Europe/Helsinki"},"production"!==process.env.NODE_ENV&&(T.propTypes={value:m.default.number.isRequired,getDisplay:m.default.func.isRequired,onChange:m.default.func.isRequired,id:m.default.string.isRequired,label:m.default.string.isRequired,icon:m.default.node,timeZone:m.default.string}),T.defaultProps={icon:null,timeZone:"Europe/Helsinki"},b.default.locale("en"),h.default.init({lng:"en",resources:{}}),Object.keys(W).forEach((e=>h.default.addResourceBundle(e,"translation",W[e]))),"production"!==process.env.NODE_ENV&&(D.propTypes={timeZone:m.default.string,departureOrArrival:m.default.oneOf(["departure","arrival"]).isRequired,onNowClick:m.default.func.isRequired,lang:m.default.string.isRequired,color:m.default.string,onSubmit:m.default.func.isRequired,onCancel:m.default.func.isRequired,timestamp:m.default.number.isRequired,getTimeDisplay:m.default.func.isRequired,dateSelectItemCount:m.default.number.isRequired,getDateDisplay:m.default.func.isRequired,fontWeights:m.default.shape({medium:m.default.number.isRequired}).isRequired}),D.defaultProps={color:"#007ac9",timeZone:"Europe/Helsinki"},b.default.locale("en"),h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}}),"production"!==process.env.NODE_ENV&&(z.propTypes={timestamp:m.default.number,timeZone:m.default.string,onTimeChange:m.default.func.isRequired,onDateChange:m.default.func.isRequired,departureOrArrival:m.default.oneOf(["departure","arrival"]).isRequired,onNowClick:m.default.func.isRequired,onDepartureClick:m.default.func.isRequired,onArrivalClick:m.default.func.isRequired,embedWhenClosed:m.default.node,embedWhenOpen:m.default.node,lang:m.default.string.isRequired,color:m.default.string,onModalSubmit:m.default.func.isRequired,fontWeights:m.default.shape({medium:m.default.number.isRequired}).isRequired,serviceTimeRange:m.default.number.isRequired,onOpen:m.default.func,onClose:m.default.func,openPicker:m.default.bool}),z.defaultProps={timestamp:null,embedWhenClosed:null,embedWhenOpen:null,color:"#007ac9",timeZone:"Europe/Helsinki",onOpen:null,onClose:null,openPicker:void 0},"production"!==process.env.NODE_ENV&&(Z.propTypes={realtime:m.default.bool,initialTimestamp:m.default.number,initialArriveBy:m.default.bool,onDepartureClick:m.default.func.isRequired,onArrivalClick:m.default.func.isRequired,onTimeChange:m.default.func.isRequired,onDateChange:m.default.func.isRequired,onNowClick:m.default.func.isRequired,embedWhenClosed:m.default.node,embedWhenOpen:m.default.node,lang:m.default.string,color:m.default.string,timeZone:m.default.string,fontWeights:m.default.shape({medium:m.default.number}),serviceTimeRange:m.default.number,onOpen:m.default.func,onClose:m.default.func,openPicker:m.default.bool}),Z.defaultProps={realtime:!1,initialArriveBy:void 0,initialTimestamp:void 0,embedWhenClosed:null,embedWhenOpen:null,lang:"en",color:"#007ac9",timeZone:"Europe/Helsinki",fontWeights:{medium:500},onOpen:null,onClose:null,openPicker:void 0,serviceTimeRange:30},e.default=Z,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVSZXN0LmpzIiwiLi4vc3JjL2hlbHBlcnMvdXRpbHMuanMiLCIuLi9zcmMvaGVscGVycy9EZXNrdG9wRGF0ZXRpbWVwaWNrZXIuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtaW5qZWN0L2Rpc3Qvc3R5bGUtaW5qZWN0LmVzLmpzIiwiLi4vc3JjL2hlbHBlcnMvdHJhbnNsYXRpb25zLmpzIiwiLi4vc3JjL2hlbHBlcnMvbW9iaWxlRGV0ZWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCIuLi9zcmMvaGVscGVycy9Nb2JpbGVEYXRlcGlja2VyLmpzIiwiLi4vc3JjL2hlbHBlcnMvTW9iaWxlVGltZXBpY2tlci5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZVBpY2tlck1vZGFsLmpzIiwiLi4vc3JjL2hlbHBlcnMvRGF0ZXRpbWVwaWNrZXIuanMiLCIuLi9zcmMvaGVscGVycy9kYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQuanMiLCIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcbiAgcmV0dXJuIGFycjI7XG59IiwiaW1wb3J0IGFycmF5V2l0aEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5TGltaXQgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlUmVzdCBmcm9tIFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59IiwiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuXG4vKipcbiAqIEhhbmRsZSB0eXBpbmcgdGltZSBhbmQgYWRkaW5nIG5lY2Vzc2FyeSA6XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVkVmFsdWVcbiAqXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVR5cGVkVGltZSh0eXBlZFZhbHVlKSB7XG4gIGxldCBhY3R1YWxWYWx1ZSA9IHR5cGVkVmFsdWU7XG4gIGlmIChcbiAgICBhY3R1YWxWYWx1ZS5sZW5ndGggPT09IDMgJiZcbiAgICBhY3R1YWxWYWx1ZS5zcGxpdCgnJykuZXZlcnkobiA9PiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcihuKSkpXG4gICkge1xuICAgIC8vIGFkZCAnOicgaWYgdXNlciB0eXBlcyB0aHJlZSBudW1iZXJzIGluIGEgcm93XG4gICAgaWYgKE51bWJlcihhY3R1YWxWYWx1ZS5zbGljZSgwLCAyKSkgPD0gMjMpIHtcbiAgICAgIGFjdHVhbFZhbHVlID0gYCR7YWN0dWFsVmFsdWUuc2xpY2UoMCwgMil9OiR7YWN0dWFsVmFsdWVbMl19YDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0dWFsVmFsdWUgPSBgJHthY3R1YWxWYWx1ZVswXX06JHthY3R1YWxWYWx1ZS5zbGljZSgxKX1gO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWN0dWFsVmFsdWU7XG59XG5cbmNvbnN0IHZhbGlkYXRlQ2xvY2sgPSAoaG91cnMsIG1pbnV0ZXMpID0+IHtcbiAgY29uc3QgaG91cnNWYWxpZCA9ICFOdW1iZXIuaXNOYU4oaG91cnMpICYmIGhvdXJzID49IDAgJiYgaG91cnMgPD0gMjM7XG4gIGNvbnN0IG1pbnV0ZXNMZW4gPSBtaW51dGVzLmxlbmd0aDtcbiAgY29uc3QgbWludXRlc1ZhbGlkID1cbiAgICBtaW51dGVzTGVuID09PSAyXG4gICAgICA/ICFOdW1iZXIuaXNOYU4obWludXRlcykgJiYgTnVtYmVyKG1pbnV0ZXMpID49IDAgJiYgTnVtYmVyKG1pbnV0ZXMgPD0gNTkpXG4gICAgICA6ICFOdW1iZXIuaXNOYU4obWludXRlcykgJiYgTnVtYmVyKG1pbnV0ZXMpID49IDAgJiYgTnVtYmVyKG1pbnV0ZXMgPD0gNSk7XG4gIHJldHVybiBob3Vyc1ZhbGlkICYmIG1pbnV0ZXNWYWxpZDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0KGlucHV0VmFsdWUpIHtcbiAgaWYgKGlucHV0VmFsdWUubGVuZ3RoIDw9IDIpIHtcbiAgICAvLyBUb28gbWFueSBvcHRpb25zLCBkb24ndCAgdmFsaWRhdGVcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGlucHV0VmFsdWUubGVuZ3RoID09PSAzKSB7XG4gICAgbGV0IGhvdXJzO1xuICAgIGxldCBtaW51dGVzO1xuICAgIGlmIChpbnB1dFZhbHVlLmluY2x1ZGVzKCc6JykpIHtcbiAgICAgIFtob3VycywgbWludXRlc10gPSBpbnB1dFZhbHVlLnNwbGl0KCc6Jyk7XG4gICAgfSBlbHNlIGlmIChpbnB1dFZhbHVlLnN0YXJ0c1dpdGgoJzAnKSkge1xuICAgICAgaG91cnMgPSBpbnB1dFZhbHVlLnN1YnN0cmluZygwLCBpbnB1dFZhbHVlLmxlbmd0aCAtIDEpO1xuICAgICAgbWludXRlcyA9IGlucHV0VmFsdWUuc3Vic3RyaW5nKGlucHV0VmFsdWUubGVuZ3RoIC0gMSB8fCAwKTtcbiAgICAgIGlmIChOdW1iZXIobWludXRlcykgPiA1KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIGlzIGhvdyBiYXNpY2FsbHkgbW9tZW50IGhhbmRsZXMgc3RyaW5nIGZvcm1hdHRpbmcuXG4gICAgICAvLyBJZiB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBzdHJpbmcgaXMgMSwgdGhlbiByZXN0IGFyZSBtaW51dGVzLlxuICAgICAgLy8gaWYgdGhlIGZpcnN0IGxldHRlciBpcyAyLCB0aGVuIGlmIHNlY29uZCBsZXR0ZXIgaXMgMCwxLDIgb3IgMywgdGhlbiBzZWNvbmQgbGV0dGVyIGlzIGhvdXIsIGVsc2UgcmVzdCBhcmUgbWludXRlc1xuICAgICAgLy8gZWxzZSwgZmlyc3QgbGV0dGVyIGlzIGhvdXIsIHJlc3Qgb2YgdGhlbSBhcmUgbWludXRlcy5cbiAgICAgIGNvbnN0IHZhbHVlcyA9IGlucHV0VmFsdWUuc3BsaXQoJycpO1xuICAgICAgaWYgKE51bWJlcih2YWx1ZXNbMF0pID09PSAxKSB7XG4gICAgICAgIFtob3VycywgbWludXRlc10gPSBbdmFsdWVzWzBdLmNvbmNhdCh2YWx1ZXNbMV0pLCB2YWx1ZXNbMl1dO1xuICAgICAgfSBlbHNlIGlmIChOdW1iZXIodmFsdWVzWzBdKSA9PT0gMikge1xuICAgICAgICBpZiAoTnVtYmVyKHZhbHVlc1sxXSA8PSAzKSkge1xuICAgICAgICAgIFtob3VycywgbWludXRlc10gPSBbdmFsdWVzWzBdLmNvbmNhdCh2YWx1ZXNbMV0pLCB2YWx1ZXNbMl1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFtob3VycywgbWludXRlc10gPSBbdmFsdWVzWzBdLCB2YWx1ZXNbMV0uY29uY2F0KHZhbHVlc1syXSldO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbaG91cnMsIG1pbnV0ZXNdID0gW3ZhbHVlc1swXSwgdmFsdWVzWzFdLmNvbmNhdCh2YWx1ZXNbMl0pXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhdmFsaWRhdGVDbG9jayhob3VycywgbWludXRlcyk7XG4gICAgfVxuICAgIHJldHVybiAhdmFsaWRhdGVDbG9jayhob3VycywgbWludXRlcyk7XG4gIH1cbiAgaWYgKGlucHV0VmFsdWUubGVuZ3RoID09PSA1IHx8IGlucHV0VmFsdWUubGVuZ3RoID09PSA0KSB7XG4gICAgY29uc3QgdmFsdWVzID0gaW5wdXRWYWx1ZS5zcGxpdCgnOicpO1xuICAgIGNvbnN0IGhvdXJzID0gdmFsdWVzWzBdO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSB2YWx1ZXNbMV07XG4gICAgaWYgKFxuICAgICAgaW5wdXRWYWx1ZS5zdGFydHNXaXRoKCcwJykgJiZcbiAgICAgIG1pbnV0ZXMubGVuZ3RoID09PSAxICYmXG4gICAgICBOdW1iZXIobWludXRlcykgPiA1XG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXZhbGlkYXRlQ2xvY2soaG91cnMsIG1pbnV0ZXMpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFRzID0gKGlucHV0VmFsdWUsIGN1cnJlbnRUaW1lc3RhbXApID0+IHtcbiAgY29uc3QgdHJpbW1lZCA9IGlucHV0VmFsdWUudHJpbSgpO1xuICBpZiAodHJpbW1lZC5tYXRjaCgvXlswLTldezEsMn0oXFwufDopWzAtOV17Mn0kLykgIT09IG51bGwpIHtcbiAgICBjb25zdCBzcGxpdHRlciA9IHRyaW1tZWQuaW5jbHVkZXMoJy4nKSA/ICcuJyA6ICc6JztcbiAgICBjb25zdCB2YWx1ZXMgPSB0cmltbWVkLnNwbGl0KHNwbGl0dGVyKTtcbiAgICBjb25zdCBob3VycyA9IE51bWJlcih2YWx1ZXNbMF0pO1xuICAgIGNvbnN0IGhvdXJzVmFsaWQgPSAhTnVtYmVyLmlzTmFOKGhvdXJzKSAmJiBob3VycyA+PSAwICYmIGhvdXJzIDw9IDIzO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBOdW1iZXIodmFsdWVzWzFdKTtcbiAgICBjb25zdCBtaW51dGVzVmFsaWQgPVxuICAgICAgIU51bWJlci5pc05hTihtaW51dGVzKSAmJiBtaW51dGVzID49IDAgJiYgbWludXRlcyA8PSA1OTtcbiAgICBpZiAoIW1pbnV0ZXNWYWxpZCB8fCAhaG91cnNWYWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IG5ld1N0YW1wID0gbW9tZW50KGN1cnJlbnRUaW1lc3RhbXApXG4gICAgICAuaG91cnMoaG91cnMpXG4gICAgICAubWludXRlcyhtaW51dGVzKVxuICAgICAgLnZhbHVlT2YoKTtcbiAgICByZXR1cm4gbmV3U3RhbXA7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7IHBhcnNlVHlwZWRUaW1lLCB2YWxpZGF0ZUlucHV0LCBnZXRUcyB9O1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IFNlbGVjdCBmcm9tICdyZWFjdC1zZWxlY3QnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBwYXJzZVR5cGVkVGltZSwgdmFsaWRhdGVJbnB1dCwgZ2V0VHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc2Nzcyc7XG5cbi8qKlxuICogQ29tcG9uZW50IHRvIGRpc3BsYXkgYSBkYXRlIG9yIHRpbWUgaW5wdXQgb24gZGVza3RvcC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcm9wcy52YWx1ZSAgICBDdXJyZW50bHkgc2VsZWN0ZWQgdGltZS4gVW5peCB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkNoYW5nZSAgICAgVGhpcyBpcyBjYWxsZWQgd2l0aCBuZXcgdGltZXN0YW1wIHdoZW4gaW5wdXQgaXMgY2hhbmdlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMuZ2V0RGlzcGxheSAgIEZ1bmN0aW9uIHRvIGdldCBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBmcm9tIGEgdGltZXN0YW1wXG4gKiBAcGFyYW0ge2FycmF5fSAgICBwcm9wcy50aW1lQ2hvaWNlcyAgQXJyYXkgb2YgdGltZXN0YW1wcyB0byBjaG9vc2UgZnJvbVxuICogQHBhcmFtIHtzdHJpbmd9IGlkICAgICAgICAgICAgICAgICAgIElkIHByZWZpeCBmb3IgbGFiZWxzIGFuZCBhcmlhIGF0dHJpYnV0ZXMuIFNob3VsZCBiZSB1bmlxdWUgaW4gcGFnZVxuICogQHBhcmFtIHtzdHJpbmd9IGxhYmVsICAgICAgICAgICAgICAgIFRleHQgdG8gc2hvdyBhcyBpbnB1dCBsYWJlbFxuICogQHBhcmFtIHtub2RlfSBpY29uICAgICAgICAgICAgICAgICAgIEpTWCBmb3IgaWNvbiB0byBzaG93IGluIGlucHV0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGRpc2FibGVUeXBpbmcgICAgICAgU2V0IHRvIHRydWUgdG8gZGlzYWJsZSB0eXBpbmcgaW4gdGhlIGlucHV0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGRhdGVQaWNrZXIgICAgICAgICAgSXMgdGhlIHBpY2tlciBEYXRlUGlja2VyIG9yIFRpbWVQaWNrZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogPERlc2t0b3BEYXRldGltZXBpY2tlclxuICogICB2YWx1ZT17MTU5MDEzMzgyMzAwMH1cbiAqICAgb25DaGFuZ2U9e3RpbWVzdGFtcCA9PiB1cGRhdGUodGltZXN0YW1wKX1cbiAqICAgZ2V0RGlzcGxheT17dGltZXN0YW1wID0+IGZvcm1hdFRpbWUodGltZXN0YW1wKX1cbiAqICAgdGltZUNob2ljZXM9e1sxNTkwMTMzODIzMDAwXX1cbiAqICAgaWQ9XCJ0aW1laW5wdXRcIlxuICogICBpY29uPVwiPEljb24gLz5cIlxuICogICBkaXNhYmxlVHlwaW5nPXtmYWxzZX0gLy8gY2FuIGJlIG9taXR0ZWQgaWYgbm90IHRydWVcbiAqICAgZGF0ZVBpY2tlcj17dHJ1ZX0gLy8gY2FuIGJlIG9taXR0ZWQgaWYgbm90IHRydWVcbiAqL1xuZnVuY3Rpb24gRGVza3RvcERhdGV0aW1lcGlja2VyKHtcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBnZXREaXNwbGF5LFxuICB0aW1lQ2hvaWNlcyxcbiAgaWQsXG4gIGxhYmVsLFxuICBpY29uLFxuICBkaXNhYmxlVHlwaW5nLFxuICB0aW1lWm9uZSxcbiAgZGF0ZVBpY2tlcixcbiAgdHJhbnNsYXRpb25TZXR0aW5ncyxcbn0pIHtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBbZGlzcGxheVZhbHVlLCBjaGFuZ2VEaXNwbGF5VmFsdWVdID0gdXNlU3RhdGUoZ2V0RGlzcGxheSh2YWx1ZSkpO1xuICBjb25zdCBbdHlwaW5nLCBzZXRUeXBpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0FsbE9wdGlvbnMsIHNldFNob3dBbGxPcHRpb25zXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbaW52YWxpZElucHV0LCBzZXRpbnZhbGlkSW5wdXRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gICAgaWYgKCFkYXRlUGlja2VyKSB7XG4gICAgICBzZXRpbnZhbGlkSW5wdXQoZmFsc2UpO1xuICAgIH1cbiAgfSwgW3ZhbHVlXSk7XG5cbiAgLy8gbmV3VmFsdWUgaXMgc3RyaW5nXG4gIGNvbnN0IGhhbmRsZVRpbWVzdGFtcCA9IG5ld1ZhbHVlID0+IHtcbiAgICBjb25zdCBhc051bWJlciA9IE51bWJlcihuZXdWYWx1ZSk7XG4gICAgaWYgKFxuICAgICAgTnVtYmVyLmlzTmFOKGFzTnVtYmVyKSB8fFxuICAgICAgIW1vbWVudChhc051bWJlcikuaXNWYWxpZCgpIHx8XG4gICAgICBtb21lbnQoYXNOdW1iZXIpLnZhbHVlT2YoKSAhPT0gYXNOdW1iZXJcbiAgICApIHtcbiAgICAgIC8vIFRPRE8gaGFuZGxlIGVycm9yP1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBvbkNoYW5nZShhc051bWJlcik7XG4gIH07XG4gIGZ1bmN0aW9uIGlzaW52YWxpZElucHV0KHN0cikge1xuICAgIGNvbnN0IHJlZ2V4ID0gL1thLXpBLVrCp8OEw6TDlsO2Li1cXHNdL2c7XG4gICAgaWYgKHN0ci5sZW5ndGggPCBkaXNwbGF5VmFsdWU/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0ZUlucHV0KHN0cik7XG4gICAgICBzZXRpbnZhbGlkSW5wdXQodmFsaWQpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHJlZ2V4LnRlc3Qoc3RyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB0aW1lID0gc3RyLmxlbmd0aCA+IDUgPyBzdHIuc2xpY2UoMCwgLTEpIDogc3RyO1xuICAgIGNvbnN0IHZhbGlkID0gdmFsaWRhdGVJbnB1dCh0aW1lKTtcbiAgICBzZXRpbnZhbGlkSW5wdXQodmFsaWQpO1xuICAgIHJldHVybiBzdHIubGVuZ3RoIDw9IDU7XG4gIH1cbiAgY29uc3Qgb25JbnB1dENoYW5nZSA9IChuZXdWYWx1ZSwgeyBhY3Rpb24gfSkgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09ICdtZW51LWNsb3NlJykge1xuICAgICAgc2V0U2hvd0FsbE9wdGlvbnModHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChzaG93QWxsT3B0aW9ucykge1xuICAgICAgc2V0U2hvd0FsbE9wdGlvbnMoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoZGlzYWJsZVR5cGluZyB8fCAobmV3VmFsdWUgJiYgIWlzaW52YWxpZElucHV0KG5ld1ZhbHVlKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2lucHV0LWNoYW5nZScpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlZCA9IHBhcnNlVHlwZWRUaW1lKG5ld1ZhbHVlKTtcbiAgICAgIGNoYW5nZURpc3BsYXlWYWx1ZSh2YWxpZGF0ZWQpO1xuICAgICAgc2V0VHlwaW5nKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb3B0aW9ucyA9IHRpbWVDaG9pY2VzLm1hcCh0ID0+IHtcbiAgICByZXR1cm4geyB2YWx1ZTogdC50b1N0cmluZygpLCBsYWJlbDogZ2V0RGlzcGxheSh0KSB9O1xuICB9KTtcblxuICAvLyBUaW1lIHBpY2tlciBoYXMgYSBsaXN0IG9mIG1pbnV0ZXMsIGluc3RlYWQgb2YgMTUgbWludXRlcy4gV2UgbmVlZCB0byBmaWx0ZXIgdGhvc2Ugb3V0XG4gIC8vIHNvIGNsb3Nlc3Qgb3B0aW9uIHdpbGwgc2hvdyB1cCBpbiB0aGUgbGlzdC5cbiAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSBkYXRlUGlja2VyXG4gICAgPyBvcHRpb25zXG4gICAgOiBvcHRpb25zLmZpbHRlcihvID0+IG8ubGFiZWwuc3BsaXQoJzonKVsxXSAlIDE1ID09PSAwKTtcbiAgY29uc3QgY2xvc2VzdE9wdGlvbiA9XG4gICAgY2xvc2VzdE9wdGlvbnMubGVuZ3RoID4gMFxuICAgICAgPyBjbG9zZXN0T3B0aW9ucz8ucmVkdWNlKChhLCBiKSA9PlxuICAgICAgICAgIE1hdGguYWJzKHZhbHVlIC0gYS52YWx1ZSkgPCBNYXRoLmFicyh2YWx1ZSAtIGIudmFsdWUpID8gYSA6IGIsXG4gICAgICAgIClcbiAgICAgIDogdW5kZWZpbmVkO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IGZpbHRlck9wdGlvbnMgPSAob3B0aW9uLCBpbnB1dCkgPT4ge1xuICAgIGNvbnN0IGhvdXIgPSBpbnB1dC5sZW5ndGggPD0gMiA/IGlucHV0IDogaW5wdXQuc3BsaXQoJzonKVswXTtcbiAgICBjb25zdCBpc1ZhbGlkSG91ciA9IC9eKFswLTFdP1swLTldfDJbMC0zXSkkLy50ZXN0KGhvdXIpO1xuICAgIGNvbnN0IGNvbXAgPSBob3VyLmxlbmd0aCA9PT0gMSA/ICcwJy5jb25jYXQoaW5wdXQpIDogaW5wdXQ7XG4gICAgcmV0dXJuIGlzVmFsaWRIb3VyXG4gICAgICA/IG9wdGlvbi5sYWJlbC5zcGxpdCgnOicpWzBdID09PSBjb21wLnNwbGl0KCc6JylbMF1cbiAgICAgIDogdHJ1ZTtcbiAgfTtcbiAgY29uc3QgYXJpYUVycm9yID0gaTE4bmV4dC50KCdpbnZhbGlkLWlucHV0JywgdHJhbnNsYXRpb25TZXR0aW5ncyk7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgIHtsYWJlbH0ge2Rpc3BsYXlWYWx1ZX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtpY29ufVxuICAgICAgPFNlbGVjdFxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2xhYmVsSWR9XG4gICAgICAgIGFyaWFMaXZlTWVzc2FnZXM9e3tcbiAgICAgICAgICBndWlkYW5jZTogY29udGV4dCA9PiB7XG4gICAgICAgICAgICAvLyBXaGVuIHVzZXIgdHlwZXMgaW52YWxpZCB2YWx1ZSwgaXNEaXNhYmxlZCBiZWNvbWVzIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIGZhbHNlXG4gICAgICAgICAgICBpZiAoY29udGV4dC5pc0Rpc2FibGVkID09PSB1bmRlZmluZWQgJiYgaW52YWxpZElucHV0KSB7XG4gICAgICAgICAgICAgIHJldHVybiBhcmlhRXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJy4nOyAvLyB0aGlzIGNhbid0IGJlIGVtcHR5IGZvciBzb21lIHJlYXNvblxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25DaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRmlsdGVyOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkZvY3VzOiAoeyBjb250ZXh0LCBsYWJlbDogaXRlbUxhYmVsIH0pID0+IHtcbiAgICAgICAgICAgIGlmIChjb250ZXh0ID09PSAnbWVudScpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1MYWJlbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICB9LFxuICAgICAgICB9fVxuICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICBpbnB1dElkPXtpbnB1dElkfVxuICAgICAgICBvbkNoYW5nZT17dGltZSA9PiB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdCgnSEg6bW0nKTtcbiAgICAgICAgICBjb25zdCB0cyA9IGdldFRzKGRpc3BsYXlWYWx1ZSwgdmFsdWUpO1xuICAgICAgICAgIGlmICh0eXBpbmcpIHtcbiAgICAgICAgICAgIGlmICh0cyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBpZiAoY3VycmVudFRpbWUgIT09IGRpc3BsYXlWYWx1ZSAmJiB0aW1lLnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZVRpbWVzdGFtcCh0cyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVGltZXN0YW1wKHRpbWUudmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAodGltZS52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodGltZS52YWx1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gcmVzZXQgdmFsdWVcbiAgICAgICAgICAgICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUoZ2V0RGlzcGxheSh2YWx1ZSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWRhdGVQaWNrZXIpIHtcbiAgICAgICAgICAgICAgc2V0aW52YWxpZElucHV0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFkYXRlUGlja2VyKSB7XG4gICAgICAgICAgICBzZXRpbnZhbGlkSW5wdXQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodGltZS52YWx1ZSk7XG4gICAgICAgIH19XG4gICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICBJbmRpY2F0b3JzQ29udGFpbmVyOiAoKSA9PiBudWxsLFxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICAgIHN0eWxlc1snZGF0ZXRpbWVwaWNrZXItc2VsZWN0LWNvbnRhaW5lciddLFxuICAgICAgICAgIGludmFsaWRJbnB1dCA/ICdkYXRldGltZXBpY2tlci1pbnZhbGlkLWlucHV0JyA6ICcnLFxuICAgICAgICApfVxuICAgICAgICBjbGFzc05hbWVQcmVmaXg9XCJkYXRldGltZXBpY2tlci1zZWxlY3RcIlxuICAgICAgICBvbklucHV0Q2hhbmdlPXtvbklucHV0Q2hhbmdlfVxuICAgICAgICBpbnB1dFZhbHVlPXshZGlzYWJsZVR5cGluZyAmJiBkaXNwbGF5VmFsdWV9XG4gICAgICAgIHZhbHVlPXtjbG9zZXN0T3B0aW9ufVxuICAgICAgICBub09wdGlvbnNNZXNzYWdlPXsoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9fVxuICAgICAgICBmaWx0ZXJPcHRpb249eyhvcHRpb24sIGlucHV0KSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGVQaWNrZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBjb21wbGV0ZUlucHV0ID1cbiAgICAgICAgICAgIGlucHV0Lmxlbmd0aCA9PT0gNSB8fFxuICAgICAgICAgICAgKGlucHV0Lmxlbmd0aCA9PT0gNCAmJiBpbnB1dC5zcGxpdCgnOicpWzBdLmxlbmd0aCA9PT0gMSk7XG4gICAgICAgICAgY29uc3QgaXNNb2QxNSA9IG9wdGlvbi5sYWJlbC5zcGxpdCgnOicpWzFdICUgMTUgPT09IDA7XG4gICAgICAgICAgY29uc3QgbWludXRlSW5wdXQgPSBpbnB1dC5zcGxpdCgnOicpWzFdPy5sZW5ndGggPT09IDE7XG5cbiAgICAgICAgICBpZiAoc2hvd0FsbE9wdGlvbnMgJiYgaXNNb2QxNSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtaW51dGVJbnB1dCkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRIID1cbiAgICAgICAgICAgICAgaW5wdXQuc3BsaXQoJzonKVswXS5sZW5ndGggPT09IDFcbiAgICAgICAgICAgICAgICA/ICcwJy5jb25jYXQoaW5wdXQuc3BsaXQoJzonKVswXSlcbiAgICAgICAgICAgICAgICA6IGlucHV0LnNwbGl0KCc6JylbMF07XG4gICAgICAgICAgICBjb25zdCBpbnB1dE0gPSBpbnB1dC5zcGxpdCgnOicpWzFdO1xuICAgICAgICAgICAgY29uc3Qgb3B0SCA9IG9wdGlvbi5sYWJlbC5zcGxpdCgnOicpWzBdO1xuICAgICAgICAgICAgY29uc3Qgb3B0TSA9IG9wdGlvbi5sYWJlbC5zcGxpdCgnOicpWzFdO1xuICAgICAgICAgICAgaWYgKGlucHV0SCA9PT0gb3B0SCkge1xuICAgICAgICAgICAgICBjb25zdCB0ID0gTnVtYmVyKGlucHV0TSkgKiAxMDtcbiAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSBOdW1iZXIob3B0TSkgLSB0O1xuICAgICAgICAgICAgICBpZiAodG90YWwgPj0gMCAmJiB0b3RhbCA8PSA5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY29tcGxldGVJbnB1dCAmJiAhc2hvd0FsbE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5sZW5ndGggPT09IDRcbiAgICAgICAgICAgICAgPyAnMCcuY29uY2F0KGlucHV0KSA9PT0gb3B0aW9uLmxhYmVsXG4gICAgICAgICAgICAgIDogaW5wdXQgPT09IG9wdGlvbi5sYWJlbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzTW9kMTUpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJPcHRpb25zKG9wdGlvbiwgaW5wdXQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfX1cbiAgICAgICAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlPXtkaXNhYmxlVHlwaW5nfVxuICAgICAgICB0YWJTZWxlY3RzVmFsdWU9e2ZhbHNlfVxuICAgICAgICBwbGFjZWhvbGRlcj1cIlwiXG4gICAgICAgIG9uRm9jdXM9e2UgPT4ge1xuICAgICAgICAgIGlmICghZGlzYWJsZVR5cGluZykge1xuICAgICAgICAgICAgZS50YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBvbkJsdXI9eygpID0+IHtcbiAgICAgICAgICAvLyByZW1vdmluZyBmb2N1cyBhbHNvIGxvY2tzIGluIHZhbHVlXG4gICAgICAgICAgaWYgKHR5cGluZykge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkID0gZ2V0VHMoZGlzcGxheVZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodmFsaWRhdGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVRpbWVzdGFtcCh2YWxpZGF0ZWQpO1xuICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgICAgICAgICAgICAgc2V0VHlwaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFkYXRlUGlja2VyKSB7XG4gICAgICAgICAgICBzZXRpbnZhbGlkSW5wdXQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgb25LZXlEb3duPXtlID0+IHtcbiAgICAgICAgICBpZiAoWydBcnJvd0Rvd24nLCAnQXJyb3dVcCddLmluY2x1ZGVzKGUua2V5KSkge1xuICAgICAgICAgICAgc2V0VHlwaW5nKGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGlzU2VhcmNoYWJsZT17IWRpc2FibGVUeXBpbmd9XG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG4gICk7XG59XG5EZXNrdG9wRGF0ZXRpbWVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZ2V0RGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdGltZUNob2ljZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5udW1iZXIpLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBkaXNhYmxlVHlwaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRhdGVQaWNrZXI6IFByb3BUeXBlcy5ib29sLFxuICB0cmFuc2xhdGlvblNldHRpbmdzOiBQcm9wVHlwZXMuc2hhcGUoeyBsbmc6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCB9KSxcbn07XG5cbkRlc2t0b3BEYXRldGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGRpc2FibGVUeXBpbmc6IGZhbHNlLFxuICB0aW1lWm9uZTogJ0V1cm9wZS9IZWxzaW5raScsXG4gIGRhdGVQaWNrZXI6IGZhbHNlLFxuICB0cmFuc2xhdGlvblNldHRpbmdzOiB7IGxuZzogJ2ZpJyB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGVza3RvcERhdGV0aW1lcGlja2VyO1xuIiwiZnVuY3Rpb24gc3R5bGVJbmplY3QoY3NzLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgaW5zZXJ0QXQgPSByZWYuaW5zZXJ0QXQ7XG5cbiAgaWYgKCFjc3MgfHwgdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgeyByZXR1cm47IH1cblxuICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG5cbiAgaWYgKGluc2VydEF0ID09PSAndG9wJykge1xuICAgIGlmIChoZWFkLmZpcnN0Q2hpbGQpIHtcbiAgICAgIGhlYWQuaW5zZXJ0QmVmb3JlKHN0eWxlLCBoZWFkLmZpcnN0Q2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBzdHlsZUluamVjdDtcbiIsImNvbnN0IHRyYW5zbGF0aW9ucyA9IHtcbiAgZGU6IHtcbiAgICB0b2RheTogJ0hldXRlJyxcbiAgICB0b21vcnJvdzogJ01vcmdlbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2UnOiAnU2NobGllw59lIGRpZSBBdXN3YWhsJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZWQnOiAnQXVzd2FobCBnZXNjaGxvc3NlbicsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICfDlmZmbmUgZGllIEF1c3dhaGwnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdBdXN3YWhsIGdlw7ZmZm5ldCcsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnRGF0dW0gdW5kIFVocnplaXRhdXN3YWhsJyxcbiAgICBhcnJpdmFsOiAnQW5rdW5mdCcsXG4gICAgZGF0ZTogJ0RhdHVtJyxcbiAgICBkZXBhcnR1cmU6ICdBYmZhaHJ0JyxcbiAgICAnZGVwYXJ0dXJlLW5vdyc6ICdBYmZhaHJ0IGpldHp0JyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnWmVpdCB3w6RobGVuJyxcbiAgICByZWFkeTogJ0ZlcnRpZycsXG4gICAgdGltZTogJ1plaXQnLFxuICAgIGNhbmNlbDogJ0FiYnJlY2hlbicsXG4gIH0sXG4gIGVuOiB7XG4gICAgdG9kYXk6ICdUb2RheScsXG4gICAgdG9tb3Jyb3c6ICdUb21vcnJvdycsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2UnOiAnQ2xvc2UgdGhlIHBpY2tlcicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ1RpbWVwaWNrZXIgY2xvc2VkJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuJzogJ09wZW4gdGhlIHBpY2tlcicsXG4gICAgJ2FjY2Vzc2libGUtb3BlbmVkJzogJ1RpbWVwaWNrZXIgb3BlbmVkJyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdEYXRlIGFuZCB0aW1lcGlja2VyJyxcbiAgICAnYWNjZXNzaWJsZS11cGRhdGUtaW5zdHJ1Y3Rpb25zJzpcbiAgICAgICdDaGFuZ2luZyB0aW1lIHBhcmFtZXRlcnMgd2lsbCB0cmlnZ2VyIGEgbmV3IHNlYXJjaC4nLFxuICAgIGFycml2YWw6ICdBcnJpdmFsJyxcbiAgICBkYXRlOiAnRGF0ZScsXG4gICAgZGVwYXJ0dXJlOiAnRGVwYXJ0dXJlJyxcbiAgICAnZGVwYXJ0dXJlLW5vdyc6ICdMZWF2aW5nIG5vdycsXG4gICAgdGltZTogJ1RpbWUnLFxuICAgICdjaG9vc2UtdGltZSc6ICdDaG9vc2UgdGltZScsXG4gICAgcmVhZHk6ICdSZWFkeScsXG4gICAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgICAnaW52YWxpZC1pbnB1dCc6ICdUaGUgdGltZSB5b3UgZW50ZXJlZCBpcyBpbnZhbGlkJyxcbiAgfSxcbiAgZmk6IHtcbiAgICB0b2RheTogJ1TDpG7DpMOkbicsXG4gICAgdG9tb3Jyb3c6ICdIdW9tZW5uYScsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2UnOiAnU3VsamUgdmFsaXRzaW4nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdWYWxpdHNpbiBzdWxqZXR0dScsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICdBdmFhIHZhbGl0c2luJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnVmFsaXRzaW4gYXZhdHR1JyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdBaWthLSBqYSBww6RpdsOkbcOkw6Ryw6R2YWxpdHNpbicsXG4gICAgJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucyc6XG4gICAgICAnQWlrYXZhbGludG9qZW4gbXV1dHRhbWluZW4gbGF1a2Fpc2VlIHV1ZGVuIGhhdW4uJyxcbiAgICBhcnJpdmFsOiAnUGVyaWxsw6QnLFxuICAgIGRhdGU6ICdQw6RpdsOkJyxcbiAgICBkZXBhcnR1cmU6ICdMw6RodMO2YWlrYScsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnTMOkaHTDtiBueXQnLFxuICAgIHRpbWU6ICdBaWthJyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnVmFsaXRzZSBhaWthJyxcbiAgICByZWFkeTogJ1ZhbG1pcycsXG4gICAgY2FuY2VsOiAnUGVydXV0YScsXG4gICAgJ2ludmFsaWQtaW5wdXQnOiAnU3nDtnR0w6Rtw6RzaSBhaWthIG9uIHZpcmhlZWxsaW5lbicsXG4gIH0sXG4gIHN2OiB7XG4gICAgdG9kYXk6ICdJIGRhZycsXG4gICAgdG9tb3Jyb3c6ICdJIG1vcmdvbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2UnOiAnU3TDpG5nIHbDpGxqYXJlbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ1bDpGxqYXJlbiBzdMOkbmdkZScsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICfDlnBwbmEgdsOkbGphcmVuJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnVsOkbGphcmVuIMO2cHBuYWRlJyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdUaWQtIG9jaCBkYXR1bXbDpGxqYXJlbicsXG4gICAgJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucyc6XG4gICAgICAnT20gZHUgw6RuZHJhciB0aWRlcm5hLCBzdGFydGFzIGVuIG55IHPDtmtuaW5nIGF1dG9tYXRpc2t0LicsXG4gICAgYXJyaXZhbDogJ0FubMOkbmRlcicsXG4gICAgZGF0ZTogJ0RhdHVtJyxcbiAgICBkZXBhcnR1cmU6ICdBdmfDpW5nc3RpZCcsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnQXZnw6VyIG51JyxcbiAgICB0aW1lOiAnVGlkJyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnVsOkbGogdGlkJyxcbiAgICByZWFkeTogJ0bDpHJkaWcnLFxuICAgIGNhbmNlbDogJ0F2YnJ5dCcsXG4gICAgJ2ludmFsaWQtaW5wdXQnOiAnVGlkZW4gZHUgYW5nYXYgw6RyIGZlbGFrdGlnJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRyYW5zbGF0aW9ucztcbiIsIi8qKlxuICogIERldGVjdCBpZiB1c2VyIGlzIG9uIGEgbW9iaWxlIGRldmljZSBieSBwYXJzaW5nIHVzZXJBZ2VudC4gVGhpcyBpcyBub3QgMTAwJSByZWxpYWJsZSBidXQgY2xvc2UgZW5vdWdoLlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTW9iaWxlKCkge1xuICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgd2luZG93Lm9wZXJhO1xuICBjb25zdCBtb2JpbGUgPVxuICAgIC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm8vaS50ZXN0KFxuICAgICAgdXNlckFnZW50LFxuICAgICk7XG4gIHJldHVybiBtb2JpbGU7XG59XG5cbi8qKlxuICogRGV0ZWN0IGlmIHVzZXIgaXMgb24gYW4gYW5kcm9pZCBkZXZpY2UuIE5vdCAxMDAlIHJlbGlhYmxlLlxuICovXG5mdW5jdGlvbiBpc0FuZHJvaWQoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHVzZXJBZ2VudC5pbmRleE9mKCdhbmRyb2lkJykgPiAtMTtcbn1cblxuZXhwb3J0IHsgaXNNb2JpbGUsIGlzQW5kcm9pZCB9O1xuIiwiaW1wb3J0IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICB2YXIga2V5LCBpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuICBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59IiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgQXV0b3N1Z2dlc3QgZnJvbSAncmVhY3QtYXV0b3N1Z2dlc3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB7IGlzQW5kcm9pZCB9IGZyb20gJy4vbW9iaWxlRGV0ZWN0aW9uJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIGRhdGUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZURhdGVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGl0ZW1Db3VudCxcbiAgc3RhcnRUaW1lLFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG4gIHRpbWVab25lLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG5cbiAgY29uc3QgW29wZW4sIGNoYW5nZU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzY3JvbGxSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGRhdGVDaG9pY2VzID0gQXJyYXkoaXRlbUNvdW50KVxuICAgIC5maWxsKClcbiAgICAubWFwKChfLCBpKSA9PiBtb21lbnQoc3RhcnRUaW1lKS5hZGQoaSwgJ2RheScpLnZhbHVlT2YoKSk7XG4gIGNvbnN0IG1pbnV0ZSA9IDEwMDAgKiA2MDtcbiAgY29uc3QgZGlmZnMgPSBkYXRlQ2hvaWNlcy5tYXAodCA9PiB2YWx1ZSAtIHQpO1xuICBjb25zdCBzY3JvbGxJbmRleCA9IGRpZmZzLmZpbmRJbmRleCh0ID0+IHQgPCBtaW51dGUpOyAvLyB3aGVuIHRpbWUgaXMgbm93LCB0aGUgdGltZXMgbWlnaHQgZGlmZmVyIGJ5IGxlc3MgdGhhbiBvbmUgbWludXRlXG4gIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSA1MDtcbiAgLy8gc2Nyb2xsIHRvIHNlbGVjdGVkIHRpbWUgd2hlbiBkcm9wZG93biBpcyBvcGVuZWRcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlbiAmJiBzY3JvbGxSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gZWxlbWVudEhlaWdodCAqIHNjcm9sbEluZGV4O1xuICAgIH1cbiAgfSwgW3ZhbHVlLCBvcGVuXSk7XG4gIGNvbnN0IG5hdGl2ZUlucHV0ID0gIWlzQW5kcm9pZCgpO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtuYXRpdmVJbnB1dCA/IChcbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydtb2JpbGUtaW5wdXQtZGlzcGxheSddfVxuICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IG9uQ2hhbmdlKE51bWJlcihlLnRhcmdldC52YWx1ZSkpfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgPlxuICAgICAgICAgIHtkYXRlQ2hvaWNlcy5tYXAoZGF0ZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8b3B0aW9uIGtleT17ZGF0ZX0gdmFsdWU9e2RhdGV9PlxuICAgICAgICAgICAgICAgIHtnZXREaXNwbGF5KGRhdGUpfVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgKSA6IChcbiAgICAgICAgPEF1dG9zdWdnZXN0XG4gICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgIHN1Z2dlc3Rpb25zPXtkYXRlQ2hvaWNlc31cbiAgICAgICAgICBnZXRTdWdnZXN0aW9uVmFsdWU9e3MgPT4gcy50b1N0cmluZygpfVxuICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb249e3MgPT4gZ2V0RGlzcGxheShzKX1cbiAgICAgICAgICBvblN1Z2dlc3Rpb25zRmV0Y2hSZXF1ZXN0ZWQ9eygpID0+IG51bGx9XG4gICAgICAgICAgc2hvdWxkUmVuZGVyU3VnZ2VzdGlvbnM9eygpID0+IHRydWV9XG4gICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgdmFsdWU6IGdldERpc3BsYXkodmFsdWUpLFxuICAgICAgICAgICAgb25DaGFuZ2U6IChfLCB7IG5ld1ZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UoTnVtYmVyKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Gb2N1czogKCkgPT4ge1xuICAgICAgICAgICAgICBjaGFuZ2VPcGVuKHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogbGFiZWxJZCxcbiAgICAgICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJyxcbiAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrPXtmYWxzZX1cbiAgICAgICAgICBvblN1Z2dlc3Rpb25zQ2xlYXJSZXF1ZXN0ZWQ9eygpID0+IG51bGx9XG4gICAgICAgICAgcmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXI9eyh7IGNvbnRhaW5lclByb3BzLCBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICAvLyBzZXQgcmVmcyBmb3IgYXV0b3N1Z2dlc3QgbGlicmFyeSBhbmQgc2Nyb2xsYmFyIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICBjb25zdCB7IHJlZiwgLi4ub3RoZXJSZWZzIH0gPSBjb250YWluZXJQcm9wcztcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IGVsZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgIHNjcm9sbFJlZi5jdXJyZW50ID0gZWxlbTtcbiAgICAgICAgICAgICAgICByZWYoZWxlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZGl2IHRhYkluZGV4PVwiLTFcIiB7Li4ub3RoZXJSZWZzfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICB0aGVtZT17c3R5bGVzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2xhYmVsPlxuICApO1xufVxuTW9iaWxlRGF0ZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpdGVtQ291bnQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgc3RhcnRUaW1lOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGljb246IFByb3BUeXBlcy5ub2RlLFxuICBkYXRlVGltZUNvbWJpbmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5Nb2JpbGVEYXRlcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgaWNvbjogbnVsbCxcbiAgZGF0ZVRpbWVDb21iaW5lZDogZmFsc2UsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZURhdGVwaWNrZXI7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc2Nzcyc7XG5pbXBvcnQgeyBwYXJzZVR5cGVkVGltZSwgZ2V0VHMsIHZhbGlkYXRlSW5wdXQgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIHRpbWUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZVRpbWVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbiAgdGltZVpvbmUsXG59KSB7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBjaGFuZ2VJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgY29uc3QgW2ludmFsaWRJbnB1dCwgc2V0aW52YWxpZElucHV0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IHRpbWVJbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGltZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHRpbWVJbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbXSk7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBpZD17aW5wdXRJZH1cbiAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgbWF4TGVuZ3RoPVwiNlwiXG4gICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgc3R5bGVzWyd0aW1lLWlucHV0LW1vYmlsZSddLFxuICAgICAgICAgIGludmFsaWRJbnB1dCA/ICdtb2JpbGUtZGF0ZXRpbWVwaWNrZXItaW52YWxpZC1pbnB1dCcgOiAnJyxcbiAgICAgICAgKX1cbiAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIG9uRm9jdXM9e2UgPT4ge1xuICAgICAgICAgIGUudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKDAsIDApOyAvLyBzZXQgY2FyZXQgdG8gc3RhcnQgb2YgaW5wdXRcbiAgICAgICAgfX1cbiAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHtcbiAgICAgICAgICBsZXQgbmV3VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0ZUlucHV0KG5ld1ZhbHVlKTtcbiAgICAgICAgICBzZXRpbnZhbGlkSW5wdXQodmFsaWQpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIC8vIG51bWJlciB0eXBlZCBhcyBmaXJzdCBjaGFyID0+IGNsZWFyIHJlc3Qgb2YgdGhlIGlucHV0XG4gICAgICAgICAgICBuZXdWYWx1ZS5tYXRjaCgvWzAtOV17M306WzAtOV17Mn0vKSAmJlxuICAgICAgICAgICAgbmV3VmFsdWUuc2xpY2UoMSkgPT09IGlucHV0VmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUuY2hhckF0KDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmV3VmFsdWUubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhY3R1YWwgPSBwYXJzZVR5cGVkVGltZShuZXdWYWx1ZSk7XG4gICAgICAgICAgY2hhbmdlSW5wdXRWYWx1ZShhY3R1YWwpO1xuICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IGdldFRzKGFjdHVhbCwgdmFsdWUpO1xuICAgICAgICAgIGlmICh0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKHRpbWVzdGFtcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICByZWY9e3RpbWVJbnB1dFJlZn1cbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cbiAgKTtcbn1cbk1vYmlsZVRpbWVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTW9iaWxlVGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGljb246IG51bGwsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZVRpbWVwaWNrZXI7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2ZpJztcbmltcG9ydCB1bmlxdWVJZCBmcm9tICdsb2Rhc2gvdW5pcXVlSWQnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgTW9kYWwgZnJvbSAncmVhY3QtbW9kYWwnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgTW9iaWxlRGF0ZXBpY2tlciBmcm9tICcuL01vYmlsZURhdGVwaWNrZXInO1xuaW1wb3J0IE1vYmlsZVRpbWVwaWNrZXIgZnJvbSAnLi9Nb2JpbGVUaW1lcGlja2VyJztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcblxubW9tZW50LmxvY2FsZSgnZW4nKTtcbmkxOG5leHQuaW5pdCh7IGxuZzogJ2VuJywgcmVzb3VyY2VzOiB7fSB9KTtcbk9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5nID0+XG4gIGkxOG5leHQuYWRkUmVzb3VyY2VCdW5kbGUobGFuZywgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKSxcbik7XG5cbi8qKlxuICogVE9ET1xuICovXG5mdW5jdGlvbiBNb2JpbGVQaWNrZXJNb2RhbCh7XG4gIGRlcGFydHVyZU9yQXJyaXZhbCxcbiAgb25Ob3dDbGljayxcbiAgbGFuZyxcbiAgY29sb3IsXG4gIHRpbWVab25lLFxuICBvblN1Ym1pdCxcbiAgb25DYW5jZWwsXG4gIHRpbWVzdGFtcCxcbiAgZ2V0VGltZURpc3BsYXksXG4gIGRhdGVTZWxlY3RJdGVtQ291bnQsXG4gIGdldERhdGVEaXNwbGF5LFxuICBmb250V2VpZ2h0cyxcbn0pIHtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCB0cmFuc2xhdGlvblNldHRpbmdzID0geyBsbmc6IGxhbmcgfTtcblxuICBjb25zdCBbZGlzcGxheVRpbWVzdGFtcCwgY2hhbmdlVGltZXN0YW1wXSA9IHVzZVN0YXRlKHRpbWVzdGFtcCk7XG5cbiAgY29uc3QgW2RlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQsIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbF0gPVxuICAgIHVzZVN0YXRlKGRlcGFydHVyZU9yQXJyaXZhbCk7XG5cbiAgZnVuY3Rpb24gb25BcnJpdmFsQ2xpY2soKSB7XG4gICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdhcnJpdmFsJyk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkRlcGFydHVyZUNsaWNrKCkge1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gIH1cblxuICAvLyBmb3IgaW5wdXQgbGFiZWxzXG4gIGNvbnN0IFtodG1sSWRdID0gdXNlU3RhdGUodW5pcXVlSWQoJ2RhdGV0aW1lcGlja2VyLScpKTtcbiAgY29uc3QgZGF0ZVNlbGVjdFN0YXJ0VGltZSA9IG1vbWVudCgpXG4gICAgLnN0YXJ0T2YoJ2RheScpXG4gICAgLmhvdXIobW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLmhvdXIoKSlcbiAgICAubWludXRlKG1vbWVudChkaXNwbGF5VGltZXN0YW1wKS5taW51dGUoKSlcbiAgICAudmFsdWVPZigpO1xuXG4gIHJldHVybiAoXG4gICAgPE1vZGFsXG4gICAgICBhcHBFbGVtZW50PXtkb2N1bWVudCA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNhcHAnKSA6IHVuZGVmaW5lZH1cbiAgICAgIGlzT3BlblxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ21vYmlsZS1tb2RhbC1jb250ZW50J119XG4gICAgICBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ21vYmlsZS1tb2RhbC1vdmVybGF5J119XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICctLWNvbG9yJzogYCR7Y29sb3J9YCxcbiAgICAgICAgICAnLS1mb250LXdlaWdodC1tZWRpdW0nOiBmb250V2VpZ2h0cy5tZWRpdW0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3RvcC1yb3cnXX0+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzWydtb2RhbC10aXRsZSddfT5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2Nob29zZS10aW1lJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydkZXBhcnR1cmUtbm93LWJ1dHRvbiddfVxuICAgICAgICAgICAgb25DbGljaz17b25Ob3dDbGlja31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdkZXBhcnR1cmUtbm93JywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWyd0YWItcm93J119PlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgaHRtbEZvcj17YCR7aHRtbElkfS1tb2RhbC1kZXBhcnR1cmVgfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRhYi1sYWJlbCddfVxuICAgICAgICAgICAgICAgICR7XG4gICAgICAgICAgICAgICAgICBzdHlsZXNbXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQgPT09ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYWN0aXZlJ1xuICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tbW9kYWwtZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgICAgbmFtZT1cImRlcGFydHVyZU9yQXJyaXZhbFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIHZhbHVlPVwiZGVwYXJ0dXJlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICBvbkRlcGFydHVyZUNsaWNrKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2RlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQgPT09ICdkZXBhcnR1cmUnfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgaHRtbEZvcj17YCR7aHRtbElkfS1tb2RhbC1hcnJpdmFsYH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydyYWRpby10YWItbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnYXJyaXZhbCdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdhY3RpdmUnXG4gICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdhcnJpdmFsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tbW9kYWwtYXJyaXZhbGB9XG4gICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICB2YWx1ZT1cImFycml2YWxcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbiddfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uQXJyaXZhbENsaWNrKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2RlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQgPT09ICdhcnJpdmFsJ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2lucHV0LXJvdyddfT5cbiAgICAgICAgICA8TW9iaWxlRGF0ZXBpY2tlclxuICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICBnZXREaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtjaGFuZ2VUaW1lc3RhbXB9XG4gICAgICAgICAgICBpdGVtQ291bnQ9e2RhdGVTZWxlY3RJdGVtQ291bnR9XG4gICAgICAgICAgICBzdGFydFRpbWU9e2RhdGVTZWxlY3RTdGFydFRpbWV9XG4gICAgICAgICAgICBpZD17YCR7aHRtbElkfS1kYXRlYH1cbiAgICAgICAgICAgIGxhYmVsPXtpMThuZXh0LnQoJ2RhdGUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWydkYXRlLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2FsZW5kYXJcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxNb2JpbGVUaW1lcGlja2VyXG4gICAgICAgICAgICB2YWx1ZT17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGdldERpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2NoYW5nZVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LXRpbWVgfVxuICAgICAgICAgICAgbGFiZWw9e2kxOG5leHQudCgndGltZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ3RpbWUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2J1dHRvbnMtcm93J119PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JlYWR5LWJ1dHRvbiddfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgb25TdWJtaXQoZGlzcGxheVRpbWVzdGFtcCwgZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdyZWFkeScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2NhbmNlbC1idXR0b24nXX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2FuY2VsfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2NhbmNlbCcsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvTW9kYWw+XG4gICk7XG59XG5cbk1vYmlsZVBpY2tlck1vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRlcGFydHVyZU9yQXJyaXZhbDogUHJvcFR5cGVzLm9uZU9mKFsnZGVwYXJ0dXJlJywgJ2Fycml2YWwnXSkuaXNSZXF1aXJlZCxcbiAgb25Ob3dDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2FuY2VsOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0aW1lc3RhbXA6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZ2V0VGltZURpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGRhdGVTZWxlY3RJdGVtQ291bnQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZ2V0RGF0ZURpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICB9KS5pc1JlcXVpcmVkLFxufTtcblxuTW9iaWxlUGlja2VyTW9kYWwuZGVmYXVsdFByb3BzID0ge1xuICBjb2xvcjogJyMwMDdhYzknLFxuICB0aW1lWm9uZTogJ0V1cm9wZS9IZWxzaW5raScsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb2JpbGVQaWNrZXJNb2RhbDtcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2ZpJztcbmltcG9ydCB1bmlxdWVJZCBmcm9tICdsb2Rhc2gvdW5pcXVlSWQnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgSWNvbiBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1pY29uJztcbmltcG9ydCBEZXNrdG9wRGF0ZXRpbWVwaWNrZXIgZnJvbSAnLi9EZXNrdG9wRGF0ZXRpbWVwaWNrZXInO1xuaW1wb3J0IHRyYW5zbGF0aW9ucyBmcm9tICcuL3RyYW5zbGF0aW9ucyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLnNjc3MnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuL21vYmlsZURldGVjdGlvbic7XG5pbXBvcnQgZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkIGZyb20gJy4vZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkJztcbmltcG9ydCBNb2JpbGVQaWNrZXJNb2RhbCBmcm9tICcuL01vYmlsZVBpY2tlck1vZGFsJztcblxubW9tZW50LmxvY2FsZSgnZW4nKTtcbmkxOG5leHQuaW5pdCh7XG4gIGxuZzogJ2ZpJyxcbiAgZmFsbGJhY2tMbmc6ICdmaScsXG4gIGRlZmF1bHROUzogJ3RyYW5zbGF0aW9uJyxcbiAgaW50ZXJwb2xhdGlvbjoge1xuICAgIGVzY2FwZVZhbHVlOiBmYWxzZSwgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gIH0sXG59KTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCByZW5kZXJzIGNvbWJvYm94IHN0eWxlIGlucHV0cyBmb3Igc2VsZWN0aW5nIGRhdGUgYW5kIHRpbWUuIFRoaXMgaXMgYSBjb250cm9sbGVkIGNvbXBvbmVudCwgdGltZXN0YW1wIGlzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGJvdGggaW5wdXRzLlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHByb3BzLnRpbWVzdGFtcCAgICAgIEN1cnJlbnRseSBzZWxlY3RlZCB0aW1lIGFzIGEgdW5peCB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzLiBTZXQgdG8gbnVsbCB0byBzaWduaWZ5IHRoYXQgXCJub3dcIiBpcyBzZWxlY3RlZC4gRGlzcGxheWVkIHRpbWUgaXMgdXBkYXRlZCBpbiByZWFsdGltZSB3aGVuIHNldCB0byBudWxsXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vblRpbWVDaGFuZ2UgICAgICAgQ2FsbGVkIHdpdGggbmV3IHRpbWVzdGFtcCB3aGVuIHRpbWUgaW5wdXQgY2hhbmdlc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25EYXRlQ2hhbmdlICAgICAgIENhbGxlZCB3aXRoIG5ldyB0aW1lc3RhbXAgd2hlbiBkYXRlIGlucHV0IGNoYW5nZXNcbiAqIEBwYXJhbSB7J2Fycml2YWwnfCdkZXBhcnR1cmUnfSBwcm9wcy5kZXBhcnR1cmVPckFycml2YWwgICBEZXRlcm1pbmUgaWYgaW5wdXQgaXMgc2V0IHRvIGNob29zZSBkZXBhcnR1cmUgb3IgYXJyaXZhbCB0aW1lXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbk5vd0NsaWNrICAgICAgICAgQ2FsbGVkIHdoZW4gXCJkZXBhcnQgbm93XCIgYnV0dG9uIGlzIGNsaWNrZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGVwYXJ0dXJlQ2xpY2sgICBDYWxsZWQgd2hlbiBcImRlcGFydHVyZVwiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkFycml2YWxDbGljayAgICAgQ2FsbGVkIHdoZW4gXCJhcnJpdmFsXCIgYnV0dG9uIGlzIGNsaWNrZWRcbiAqIEBwYXJhbSB7bm9kZX0gcHJvcHMuZW1iZWRXaGVuQ2xvc2VkICAgICAgICBKU1ggZWxlbWVudCB0byByZW5kZXIgaW4gdGhlIGNvcm5lciB3aGVuIGlucHV0IGlzIGNsb3NlZFxuICogQHBhcmFtIHtub2RlfSBwcm9wcy5lbWJlZFdoZW5PcGVuICAgICAgICAgIEpTWCBlbGVtZW50IHRvIHJlbmRlciB3aGVuIGlucHV0IGlzIG9wZW5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5sYW5nICAgICAgICAgICAgICAgICBMYW5ndWFnZSBzZWxlY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zZXJ2aWNlVGltZVJhbmdlICAgICAgICAgICBEZXRlcm1pbmUgbnVtYmVyIG9mIGRheXMgc2hvd24gaW4gdGltZXBpY2tlci4gT3B0aW9uYWwuIGRlZmF1bHQgaXMgMzAuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbk9wZW4gICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIHdoYXQgdG8gZG8gd2hlbiB0aW1lcGlja2VyIGlzIG9wZW4uIE9wdGlvbmFsLiBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25DbG9zZSAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBjbG9zZWQuIE9wdGlvbmFsLiBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub3BlblBpY2tlciAgICAgICAgICAgICAgIERldGVybWluZSBpZiB0aW1lcGlja2VyIHNob3VsZCBiZSBvcGVuIGluIGludGlhbCByZW5kZXIuIE9wdGlvbmFsLiBEZWZhdWx0IGlzIHVuZGVmaW5lZC5cbiAqXG4gKlxuICogQGV4YW1wbGVcbiAqIDxEYXRldGltZXBpY2tlclxuICogICB0aW1lc3RhbXA9ezE1OTAxMzM4MjMwMDB9XG4gKiAgIG9uVGltZUNoYW5nZT17KG5ld1RpbWVzdGFtcCkgPT4gdXBkYXRlKG5ld1RpbWVzdGFtcCl9XG4gKiAgIG9uRGF0ZUNoYW5nZT17KG5ld1RpbWVzdGFtcCkgPT4gdXBkYXRlKG5ld1RpbWVzdGFtcCl9XG4gKiAgIGRlcGFydHVyZU9yQXJyaXZhbD17J2RlcGFydHVyZSd9XG4gKiAgIG9uTm93Q2xpY2s9eygpID0+IHNldFRpbWVzdGFtcFRvTnVsbCgpfVxuICogICBvbkRlcGFydHVyZUNsaWNrPXsoKSA9PiBkZXBhcnR1cmVDbGlja2VkKCl9XG4gKiAgIG9uQXJyaXZhbENsaWNrPXsoKSA9PiBhcnJpdmFsQ2xpY2tlZCgpfVxuICogICBlbWJlZFdoZW5DbG9zZWQ9ezxidXR0b24gLz59XG4gKiAgIGxhbmc9eydlbid9XG4gKiAgIHNlcnZpY2VUaW1lUmFuZ2U9ezE1fVxuICogLz5cbiAqL1xuZnVuY3Rpb24gRGF0ZXRpbWVwaWNrZXIoe1xuICB0aW1lc3RhbXAsXG4gIG9uVGltZUNoYW5nZSxcbiAgb25EYXRlQ2hhbmdlLFxuICBkZXBhcnR1cmVPckFycml2YWwsXG4gIG9uTm93Q2xpY2ssXG4gIG9uRGVwYXJ0dXJlQ2xpY2ssXG4gIG9uQXJyaXZhbENsaWNrLFxuICBlbWJlZFdoZW5DbG9zZWQsXG4gIGVtYmVkV2hlbk9wZW4sXG4gIGxhbmcsXG4gIGNvbG9yLFxuICB0aW1lWm9uZSxcbiAgb25Nb2RhbFN1Ym1pdCxcbiAgZm9udFdlaWdodHMsXG4gIHNlcnZpY2VUaW1lUmFuZ2UsXG4gIG9uT3BlbixcbiAgb25DbG9zZSxcbiAgb3BlblBpY2tlcixcbn0pIHtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBbaXNPcGVuLCBjaGFuZ2VPcGVuXSA9IHVzZVN0YXRlKG9wZW5QaWNrZXIgfHwgZmFsc2UpO1xuICBjb25zdCBbZGlzcGxheVRpbWVzdGFtcCwgY2hhbmdlRGlzcGxheVRpbWVzdGFtcF0gPSB1c2VTdGF0ZShcbiAgICB0aW1lc3RhbXAgfHwgbW9tZW50KCkudmFsdWVPZigpLFxuICApO1xuICAvLyB0aW1lciBmb3IgdXBkYXRpbmcgZGlzcGxheVRpbWVzdGFtcCBpbiByZWFsIHRpbWVcbiAgY29uc3QgW3RpbWVySWQsIHNldFRpbWVyXSA9IHVzZVN0YXRlKG51bGwpO1xuICAvLyBmb3IgaW5wdXQgbGFiZWxzXG4gIGNvbnN0IFtodG1sSWRdID0gdXNlU3RhdGUodW5pcXVlSWQoJ2RhdGV0aW1lcGlja2VyLScpKTtcbiAgY29uc3QgW3VzZU1vYmlsZUlucHV0c10gPSB1c2VTdGF0ZShpc01vYmlsZSgpICYmIGRhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCgpKTtcbiAgY29uc3Qgb3BlblBpY2tlclJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBhbGVydFJlZiA9IHVzZVJlZigpO1xuXG4gIGNvbnN0IHRyYW5zbGF0aW9uU2V0dGluZ3MgPSB7IGxuZzogbGFuZyB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5mb3JFYWNoKGxhbmd1YWdlID0+XG4gICAgICBpMThuZXh0LmFkZFJlc291cmNlQnVuZGxlKGxhbmd1YWdlLCAndHJhbnNsYXRpb24nLCB0cmFuc2xhdGlvbnNbbGFuZ10pLFxuICAgICk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIG1vbWVudC5sb2NhbGUobGFuZyk7XG4gIH0sIFtsYW5nXSk7XG5cbiAgY29uc3Qgbm93U2VsZWN0ZWQgPSB0aW1lc3RhbXAgPT09IG51bGw7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG5vd1NlbGVjdGVkKSB7XG4gICAgICBjaGFuZ2VEaXNwbGF5VGltZXN0YW1wKG1vbWVudCgpLnZhbHVlT2YoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNsZWFyIHRpbWVyXG4gICAgICBpZiAodGltZXJJZCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRpbWVySWQpO1xuICAgICAgICBzZXRUaW1lcihudWxsKTtcbiAgICAgIH1cbiAgICAgIGNoYW5nZURpc3BsYXlUaW1lc3RhbXAodGltZXN0YW1wKTtcbiAgICB9XG4gIH0sIFt0aW1lc3RhbXBdKTtcblxuICAvLyBzZXQgdGltZXIgdG8gdXBkYXRlIGRpc3BsYXlUaW1lc3RhbXAgd2hlbiBtaW51dGUgY2hhbmdlcyBpZiBub3dTZWxlY3RlZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbm93U2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aW1lcklkKSB7XG4gICAgICBjbGVhckludGVydmFsKHRpbWVySWQpO1xuICAgIH1cbiAgICBjb25zdCBuZXdJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICAgIGNvbnN0IHNhbWVNaW51dGUgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkuaXNTYW1lKG5vdywgJ21pbnV0ZScpO1xuICAgICAgaWYgKCFzYW1lTWludXRlKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwobmV3SWQpO1xuICAgICAgICBzZXRUaW1lcihudWxsKTtcbiAgICAgICAgY2hhbmdlRGlzcGxheVRpbWVzdGFtcChub3cpO1xuICAgICAgfVxuICAgIH0sIDUwMDApO1xuICAgIHNldFRpbWVyKG5ld0lkKTtcbiAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbChuZXdJZCk7XG4gIH0sIFtkaXNwbGF5VGltZXN0YW1wXSk7XG5cbiAgY29uc3QgcHJldklzT3BlblJlZiA9IHVzZVJlZigpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHByZXZJc09wZW5SZWYuY3VycmVudCA9IGlzT3BlbjtcbiAgfSk7XG5cbiAgLy8gcGFyYW0gZGF0ZSBpcyB0aW1lc3RhbXBcbiAgY29uc3QgZ2V0RGF0ZURpc3BsYXkgPSBkYXRlID0+IHtcbiAgICBjb25zdCB0aW1lID0gbW9tZW50KGRhdGUpO1xuICAgIGxldCBmb3JtYXR0ZWQ7XG4gICAgaWYgKHRpbWUuaXNTYW1lKG1vbWVudCgpLCAnZGF5JykpIHtcbiAgICAgIGZvcm1hdHRlZCA9IGkxOG5leHQudCgndG9kYXknLCB0cmFuc2xhdGlvblNldHRpbmdzKTtcbiAgICB9IGVsc2UgaWYgKHRpbWUuaXNTYW1lKG1vbWVudCgpLmFkZCgxLCAnZGF5JyksICdkYXknKSkge1xuICAgICAgZm9ybWF0dGVkID0gaTE4bmV4dC50KCd0b21vcnJvdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtYXR0ZWQgPSB0aW1lLmZvcm1hdCgnZGQgRC5NLicpO1xuICAgIH1cbiAgICBmb3JtYXR0ZWQgPSBgJHtmb3JtYXR0ZWQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtmb3JtYXR0ZWQuc2xpY2UoMSl9YDtcbiAgICByZXR1cm4gZm9ybWF0dGVkO1xuICB9O1xuXG4gIC8vIHBhcmFtIHRpbWUgaXMgdGltZXN0YW1wXG4gIGNvbnN0IGdldFRpbWVEaXNwbGF5ID0gdGltZSA9PiB7XG4gICAgcmV0dXJuIG1vbWVudCh0aW1lKS5mb3JtYXQoJ0hIOm1tJyk7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0ZWRNb21lbnQgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCk7XG4gIGNvbnN0IHRpbWVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuICBsZXQgdGltZUNob2ljZXMgPSBbXTtcbiAgY29uc3QgY3VycmVudCA9IG1vbWVudCh0aW1lU2VsZWN0U3RhcnRUaW1lKTtcbiAgd2hpbGUgKGN1cnJlbnQuaXNTYW1lKHRpbWVTZWxlY3RTdGFydFRpbWUsICdkYXknKSkge1xuICAgIHRpbWVDaG9pY2VzLnB1c2goY3VycmVudC52YWx1ZU9mKCkpO1xuICAgIGlmIChpc01vYmlsZSgpKSB7XG4gICAgICBjdXJyZW50LmFkZCgxNSwgJ21pbnV0ZXMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudC5hZGQoMSwgJ21pbnV0ZXMnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHRpbWVzdGFtcCA9PT0gbnVsbCkge1xuICAgIC8vIGlmIHRpbWUgaXMgc2V0IHRvIG5vd1xuICAgIC8vIGFkZCB0aW1lcyBpbiA1IG1pbiBpbnRlcnZhbHMgZm9yIG5leHQgMzAgbWluc1xuICAgIGNvbnN0IGZpdmVNaW51dGVzID0gMTAwMCAqIDYwICogNTtcbiAgICBjb25zdCBuZXh0Rml2ZU1pbiA9IE1hdGguY2VpbChkaXNwbGF5VGltZXN0YW1wIC8gZml2ZU1pbnV0ZXMpICogZml2ZU1pbnV0ZXM7XG4gICAgY29uc3QgdGltZXNUb0FkZCA9IEFycmF5KDcpXG4gICAgICAuZmlsbCgpXG4gICAgICAubWFwKChfLCBpKSA9PiBuZXh0Rml2ZU1pbiArIGkgKiBmaXZlTWludXRlcyk7XG4gICAgY29uc3QgY2xvc2VzdEluZGV4QWZ0ZXIgPSB0aW1lQ2hvaWNlc1xuICAgICAgLm1hcCh0ID0+IGRpc3BsYXlUaW1lc3RhbXAgLSB0KVxuICAgICAgLmZpbmRJbmRleCh0ID0+IHQgPD0gMCk7XG4gICAgdGltZUNob2ljZXMuc3BsaWNlKGNsb3Nlc3RJbmRleEFmdGVyLCAwLCAuLi50aW1lc1RvQWRkKTtcbiAgICB0aW1lQ2hvaWNlcyA9IEFycmF5LmZyb20obmV3IFNldCh0aW1lQ2hvaWNlcykpOyAvLyByZW1vdmUgZHVwbGljYXRlc1xuICB9XG5cbiAgY29uc3QgZGF0ZVNlbGVjdFN0YXJ0VGltZSA9IG1vbWVudCgpXG4gICAgLnN0YXJ0T2YoJ2RheScpXG4gICAgLmhvdXIoc2VsZWN0ZWRNb21lbnQuaG91cigpKVxuICAgIC5taW51dGUoc2VsZWN0ZWRNb21lbnQubWludXRlKCkpXG4gICAgLnZhbHVlT2YoKTtcbiAgY29uc3QgZGF0ZUNob2ljZXMgPSBBcnJheShzZXJ2aWNlVGltZVJhbmdlKVxuICAgIC5maWxsKClcbiAgICAubWFwKChfLCBpKSA9PiBtb21lbnQoZGF0ZVNlbGVjdFN0YXJ0VGltZSkuYWRkKGksICdkYXknKS52YWx1ZU9mKCkpO1xuXG4gIGZ1bmN0aW9uIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCkge1xuICAgIGlmIChhbGVydFJlZi5jdXJyZW50KSB7XG4gICAgICBhbGVydFJlZi5jdXJyZW50LmlubmVySFRNTCA9IGkxOG5leHQudChcbiAgICAgICAgJ2FjY2Vzc2libGUtY2xvc2VkJyxcbiAgICAgICAgdHJhbnNsYXRpb25TZXR0aW5ncyxcbiAgICAgICk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBudWxsO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzaG93U2NyZWVucmVhZGVyT3BlbkFsZXJ0KCkge1xuICAgIGlmIChhbGVydFJlZi5jdXJyZW50KSB7XG4gICAgICBhbGVydFJlZi5jdXJyZW50LmlubmVySFRNTCA9IGkxOG5leHQudChcbiAgICAgICAgJ2FjY2Vzc2libGUtb3BlbmVkJyxcbiAgICAgICAgdHJhbnNsYXRpb25TZXR0aW5ncyxcbiAgICAgICk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBudWxsO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW5kZXJPcGVuKCkge1xuICAgIGlmICh1c2VNb2JpbGVJbnB1dHMpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGlzT3BlbiAmJiAoXG4gICAgICAgICAgPE1vYmlsZVBpY2tlck1vZGFsXG4gICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWw9e2RlcGFydHVyZU9yQXJyaXZhbH1cbiAgICAgICAgICAgIG9uTm93Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCk7XG4gICAgICAgICAgICAgIG9uTm93Q2xpY2soKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBsYW5nPXtsYW5nfVxuICAgICAgICAgICAgY29sb3I9e2NvbG9yfVxuICAgICAgICAgICAgb25TdWJtaXQ9eyhuZXdUaW1lc3RhbXAsIG5ld0RlcGFydHVyZU9yQXJyaXZhbCkgPT4ge1xuICAgICAgICAgICAgICBvbk1vZGFsU3VibWl0KG5ld1RpbWVzdGFtcCwgbmV3RGVwYXJ0dXJlT3JBcnJpdmFsKTtcbiAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25DYW5jZWw9eygpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCk7XG4gICAgICAgICAgICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZ2V0VGltZURpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgICAgdGltZXN0YW1wPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgZ2V0RGF0ZURpc3BsYXk9e2dldERhdGVEaXNwbGF5fVxuICAgICAgICAgICAgZGF0ZVNlbGVjdEl0ZW1Db3VudD17c2VydmljZVRpbWVSYW5nZX1cbiAgICAgICAgICAgIGdldERpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgZm9udFdlaWdodHM9e2ZvbnRXZWlnaHRzfVxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snZGF0ZXRpbWVwaWNrZXItb3Blbi1jb250YWluZXInXX0gJHtcbiAgICAgICAgICAgICFpc09wZW4gPyBzdHlsZXMuaGlkZGVuIDogJydcbiAgICAgICAgICB9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgICAgICAgID8gYCR7c3R5bGVzWyd0b3Atcm93LWNvbnRhaW5lciddfSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgICAgIDogYCR7c3R5bGVzLmhpZGRlbn0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7JyAnfVxuICAgICAgICAgICAgPHNwYW4gcm9sZT1cImFsZXJ0XCIgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gcmVmPXthbGVydFJlZn0gLz5cbiAgICAgICAgICAgIDxzcGFuIC8+XG4gICAgICAgICAgICB7LyogVGhpcyBlbXB0eSBzcGFuIHByZXZlbnRzIGEgd2VpcmQgZm9jdXMgYnVnIG9uIGNocm9tZSAqL31cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydkZXBhcnR1cmUtb3ItYXJyaXZhbC1jb250YWluZXInXX0+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbi1sYWJlbCddfVxuICAgICAgICAgICAgICAgICR7XG4gICAgICAgICAgICAgICAgICBzdHlsZXNbXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2RlcGFydHVyZScgPyAnYWN0aXZlJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1kZXBhcnR1cmVgfVxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRlcGFydHVyZU9yQXJyaXZhbFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJkZXBhcnR1cmVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tYXJyaXZhbGB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24tbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyA/ICdhY3RpdmUnIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aTE4bmV4dC50KCdhcnJpdmFsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1hcnJpdmFsYH1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiYXJyaXZhbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbiddfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25BcnJpdmFsQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1ub3dgfVxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2RlcGFydHVyZS1ub3ctYnV0dG9uJ119XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uTm93Q2xpY2soKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlLW5vdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sncmlnaHQtZWRnZSddfT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydjbG9zZS1idXR0b24nXX1cbiAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCk7XG4gICAgICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjbG9zZS1pY29uJ119PlxuICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2xvc2VcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICAgICAgICAgICAge2kxOG5leHQudCgnYWNjZXNzaWJsZS1jbG9zZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgICAgaXNPcGVuXG4gICAgICAgICAgICAgICAgPyBgJHtzdHlsZXNbJ3BpY2tlci1jb250YWluZXInXX1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdHlsZXMuaGlkZGVufSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1sZWZ0J119PlxuICAgICAgICAgICAgICA8RGVza3RvcERhdGV0aW1lcGlja2VyXG4gICAgICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e25ld1ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uRGF0ZUNoYW5nZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBnZXREaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgICAgICB0aW1lQ2hvaWNlcz17ZGF0ZUNob2ljZXN9XG4gICAgICAgICAgICAgICAgdmFsaWRhdGU9eygpID0+IG51bGx9XG4gICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1snZGF0ZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2FsZW5kYXJcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LWRhdGVgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtpMThuZXh0LnQoJ2RhdGUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlVHlwaW5nXG4gICAgICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1yaWdodCddfT5cbiAgICAgICAgICAgICAgPERlc2t0b3BEYXRldGltZXBpY2tlclxuICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtuZXdWYWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRpbWVDaGFuZ2UobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0VGltZURpc3BsYXl9XG4gICAgICAgICAgICAgICAgdGltZUNob2ljZXM9e3RpbWVDaG9pY2VzfVxuICAgICAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ3RpbWUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LXRpbWVgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtpMThuZXh0LnQoJ3RpbWUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25TZXR0aW5ncz17dHJhbnNsYXRpb25TZXR0aW5nc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17aXNPcGVuID8gJycgOiBzdHlsZXMuaGlkZGVufT57ZW1iZWRXaGVuT3Blbn08L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpc09wZW4gPyAnZGF0ZXRpbWVwaWNrZXItYm90dG9tLXJvdy1vcGVuJyA6ICcnfSAvPlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGZpZWxkc2V0XG4gICAgICBjbGFzc05hbWU9e3N0eWxlc1snZHQtZGF0ZXRpbWVwaWNrZXInXX1cbiAgICAgIGlkPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgJy0tY29sb3InOiBgJHtjb2xvcn1gLFxuICAgICAgICAnLS1mb250LXdlaWdodC1tZWRpdW0nOiBmb250V2VpZ2h0cy5tZWRpdW0sXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxsZWdlbmQgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0+XG4gICAgICAgIHtpMThuZXh0LnQoJ2FjY2Vzc2libGUtdGl0bGUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgIDwvbGVnZW5kPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0+XG4gICAgICAgIHtpMThuZXh0LnQoJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICFpc09wZW5cbiAgICAgICAgICAgID8gYCR7c3R5bGVzWyd0b3Atcm93LWNvbnRhaW5lciddfSAke3N0eWxlcy5jbG9zZWR9IGRhdGV0aW1lcGlja2VyLXRvcC1yb3dgXG4gICAgICAgICAgICA6IGAke3N0eWxlcy5oaWRkZW59IGRhdGV0aW1lcGlja2VyLXRvcC1yb3dgXG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydsYWJlbC1vcGVuJ119IGh0bWxGb3I9e2Ake2h0bWxJZH0tb3BlbmB9PlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWyd0aW1lLWljb24nXX0+XG4gICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfT5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2FjY2Vzc2libGUtb3BlbicsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiByb2xlPVwiYWxlcnRcIiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSByZWY9e2FsZXJ0UmVmfSAvPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LW9wZW5gfVxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy50ZXh0YnV0dG9ufSAke3N0eWxlcy5hY3RpdmV9ICR7c3R5bGVzWydvcGVuLWJ1dHRvbiddfWB9XG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlT3Blbih0cnVlKTtcbiAgICAgICAgICAgICAgc2hvd1NjcmVlbnJlYWRlck9wZW5BbGVydCgpO1xuICAgICAgICAgICAgICBpZiAob25PcGVuKSB7XG4gICAgICAgICAgICAgICAgb25PcGVuKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICByZWY9e29wZW5QaWNrZXJSZWZ9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIHtub3dTZWxlY3RlZCAmJiBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnID8gKFxuICAgICAgICAgICAgICAgIGkxOG5leHQudCgnZGVwYXJ0dXJlLW5vdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpXG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHtpMThuZXh0LnQoXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2RlcGFydHVyZSdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnYXJyaXZhbCcsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge2AgJHtcbiAgICAgICAgICAgICAgICAgICAgbW9tZW50KCkuaXNTYW1lKG1vbWVudChkaXNwbGF5VGltZXN0YW1wKSwgJ2RheScpXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogZ2V0RGF0ZURpc3BsYXkoZGlzcGxheVRpbWVzdGFtcCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgfSAke2dldFRpbWVEaXNwbGF5KGRpc3BsYXlUaW1lc3RhbXApfWB9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snZHJvcGRvd24taWNvbiddfT5cbiAgICAgICAgICAgICAgPEljb24gaW1nPVwiYXJyb3ctZHJvcGRvd25cIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydyaWdodC1lZGdlJ119PntlbWJlZFdoZW5DbG9zZWR9PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IC8+XG4gICAgICB7cmVuZGVyT3BlbigpfVxuICAgIDwvZmllbGRzZXQ+XG4gICk7XG59XG5cbkRhdGV0aW1lcGlja2VyLnByb3BUeXBlcyA9IHtcbiAgdGltZXN0YW1wOiBQcm9wVHlwZXMubnVtYmVyLFxuICB0aW1lWm9uZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25UaW1lQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRhdGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGRlcGFydHVyZU9yQXJyaXZhbDogUHJvcFR5cGVzLm9uZU9mKFsnZGVwYXJ0dXJlJywgJ2Fycml2YWwnXSkuaXNSZXF1aXJlZCxcbiAgb25Ob3dDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EZXBhcnR1cmVDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25BcnJpdmFsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogUHJvcFR5cGVzLm5vZGUsXG4gIGVtYmVkV2hlbk9wZW46IFByb3BUeXBlcy5ub2RlLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbk1vZGFsU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZWRpdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgfSkuaXNSZXF1aXJlZCxcbiAgc2VydmljZVRpbWVSYW5nZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBvbk9wZW46IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlblBpY2tlcjogUHJvcFR5cGVzLmJvb2wsXG59O1xuXG5EYXRldGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgZW1iZWRXaGVuQ2xvc2VkOiBudWxsLFxuICBlbWJlZFdoZW5PcGVuOiBudWxsLFxuICBjb2xvcjogJyMwMDdhYzknLFxuICB0aW1lWm9uZTogJ0V1cm9wZS9IZWxzaW5raScsXG4gIG9uT3BlbjogbnVsbCxcbiAgb25DbG9zZTogbnVsbCxcbiAgb3BlblBpY2tlcjogdW5kZWZpbmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZXRpbWVwaWNrZXI7XG4iLCIvKipcbiAqIERldGVjdCBpZiBpbnB1dCB0eXBlPVwiZGF0ZVwiIGFuZCB0eXBlPVwidGltZVwiIGFyZSBzdXBwb3J0ZWQgaW4gYnkgdGhlIGJyb3dzZXJcbiAqXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB3aW5kb3cgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gIGVsZW0udHlwZSA9ICdkYXRlJztcbiAgaWYgKGVsZW0udHlwZSAhPT0gJ2RhdGUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGVsZW0udHlwZSA9ICd0aW1lJztcbiAgaWYgKGVsZW0udHlwZSAhPT0gJ3RpbWUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQ7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnbG9kYXNoL2RlYm91bmNlJztcbmltcG9ydCBEYXRldGltZXBpY2tlciBmcm9tICcuL2hlbHBlcnMvRGF0ZXRpbWVwaWNrZXInO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHJlbmRlcnMgYW4gaW5wdXQgdG8gY2hvb3NlIGEgZGF0ZSBhbmQgdGltZS4gUmVuZGVycyBzZXBhcmF0ZSBpbnB1dCBmaWVsZHMgZm9yIGRhdGUgYW5kIHRpbWUgc2VsZWN0aW9uLiBWYWx1ZXMgZm9yIHRpbWVzdGFtcCBhbmQgYXJyaXZlQnkgY29ycmVzcG9uZCB0byBEaWdpdHJhbnNpdCBxdWVyeSBwYXJhbXMgdGltZSBhbmQgYXJyaXZlQnkuIFRoaXMgY29tcG9uZW50IHdpbGwgZGlzcGxheSBhIG5hdGl2ZSBkYXRlIGlucHV0IG9uIG1vYmlsZSBhbmQgYSBjdXN0b20gb25lIGZvciBkZXNrdG9wLiBNb2JpbGUgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgcGFyc2luZyB1c2VyIGFnZW50LlxuICpcbiAqIEBhbGlhcyBEYXRldGltZXBpY2tlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICpcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMucmVhbHRpbWUgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgc2VsZWN0ZWQgdGltZSBzaG91bGQgYmUgdXBkYXRlZCBpbiByZWFsdGltZSB3aGVuICdub3cnIGlzIHNlbGVjdGVkLlxuICogQHBhcmFtIHtOdW1iZXJ9IHByb3BzLmluaXRpYWxUaW1lc3RhbXAgICAgICAgICAgIEluaXRpYWwgdmFsdWUgZm9yIHNlbGVjdGVkIHRpbWUuIFVuaXggdGltZXN0YW1wIGluIHNlY29uZHMuIFVwZGF0aW5nIHRoaXMgd2lsbCBjaGFuZ2UgdGltZXBpY2tlciB2YWx1ZSBidXQgdGhlIGNvcnJlY3QgdmFsdWUgaXMga2VwdCBpbiBjb21wb25lbnQgc3RhdGUgZXZlbiBpZiB0aGlzIGlzIG5vdCB1cGRhdGVkLlxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5pbml0aWFsQXJyaXZlQnkgICAgICAgICAgIEluaXRpYWwgdmFsdWUgZm9yIGFycml2ZUJ5LiBEZXRlcm1pbmVzIGlmIHBpY2tlciBpcyBpbiBhcnJpdmFsIG1vZGUgKHRydWUpIG9yIGRlcGFydHVyZSBtb2RlIChmYWxzZSkuIENvcnJlY3QgdmFsdWUgaXMga2VwdCBpbiBjb21wb25lbnQgc3RhdGUgZXZlbiBpZiB0aGlzIGlzIG5vdCB1cGRhdGVkLiBDaGFuZ2luZyB0aGlzIHdpbGwgYWxzbyB0cmlnZ2VyIGNoYW5nZSBpbiB0aGUgY29tcG9uZW50LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25UaW1lQ2hhbmdlICAgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lLCBhcnJpdmVCeSkgd2hlbiB0aW1lIGlucHV0IGNoYW5nZXMuIHRpbWUgaXMgbnVtYmVyIHRpbWVzdGFtcCBpbiBzZWNvbmRzLCBhcnJpdmVCeSBpcyBib29sZWFuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRhdGVDaGFuZ2UgICAgICAgICAgICAgQ2FsbGVkIHdpdGggKHRpbWUsIGFycml2ZUJ5KSB3aGVuIGRhdGUgaW5wdXQgY2hhbmdlcy4gdGltZSBpcyBudW1iZXIgdGltZXN0YW1wIGluIHNlY29uZHMsIGFycml2ZUJ5IGlzIGJvb2xlYW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uTm93Q2xpY2sgICAgICAgICAgICAgICBDYWxsZWQgd2hlbiBcImRlcGFydCBub3dcIiBidXR0b24gaXMgY2xpY2tlZC4gdGltZSBpcyBjdXJyZW50IGlucHV0IHZhbHVlIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGVwYXJ0dXJlQ2xpY2sgICAgICAgICBDYWxsZWQgd2l0aCAodGltZSkgd2hlbiBcImRlcGFydHVyZVwiIGJ1dHRvbiBpcyBjbGlja2VkLiB0aW1lIGlzIGN1cnJlbnQgaW5wdXQgdmFsdWUgaW4gc2Vjb25kc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25BcnJpdmFsQ2xpY2sgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lKSB3aGVuIFwiYXJyaXZhbFwiIGJ1dHRvbiBpcyBjbGlja2VkLiB0aW1lIGlzIGN1cnJlbnQgaW5wdXQgdmFsdWUgaW4gc2Vjb25kc1xuICogQHBhcmFtIHtub2RlfSBwcm9wcy5lbWJlZFdoZW5DbG9zZWQgICAgICAgICAgICAgIEpTWCBlbGVtZW50IHRvIHJlbmRlciBpbiB0aGUgY29ybmVyIHdoZW4gaW5wdXQgaXMgY2xvc2VkXG4gKiBAcGFyYW0ge25vZGV9IHByb3BzLmVtYmVkV2hlbk9wZW4gICAgICAgICAgICAgICAgSlNYIGVsZW1lbnQgdG8gcmVuZGVyIHdoZW4gaW5wdXQgaXMgb3BlblxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmxhbmcgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlIHNlbGVjdGlvbi4gRGVmYXVsdCAnZW4nXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2VydmljZVRpbWVSYW5nZSAgICAgICAgICAgRGV0ZXJtaW5lIG51bWJlciBvZiBkYXlzIHNob3duIGluIHRpbWVwaWNrZXIuIE9wdGlvbmFsLiBkZWZhdWx0IGlzIDMwLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25PcGVuICAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBvcGVuLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2xvc2UgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgY2xvc2VkLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9wZW5QaWNrZXIgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgdGltZXBpY2tlciBzaG91bGQgYmUgb3BlbiBpbiBpbnRpYWwgcmVuZGVyLiBPcHRpb25hbC4gRGVmYXVsdCBpcyB1bmRlZmluZWQuXG4gKiBAZXhhbXBsZVxuICogPERhdGV0aW1lcGlja2VyXG4gKiAgIHJlYWx0aW1lPXt0cnVlfVxuICogICBpbml0aWFsVGltZXN0YW1wPXsxNTkwMTMzODIzfVxuICogICBpbml0aWFsQXJyaXZlQnk9e2ZhbHNlfVxuICogICBvblRpbWVDaGFuZ2U9eyh0aW1lLCBhcnJpdmVCeSkgPT4gY2hhbmdlVXJsKHRpbWUsIGFycml2ZUJ5KX1cbiAqICAgb25EYXRlQ2hhbmdlPXsodGltZSwgYXJyaXZlQnkpID0+IGNoYW5nZVVybCh0aW1lLCBhcnJpdmVCeSl9XG4gKiAgIG9uTm93Q2xpY2s9eyh0aW1lKSA9PiBjaGFuZ2VVcmwodW5kZWZpbmVkLCB1bmRlZmluZWQpfVxuICogICBvbkRlcGFydHVyZUNsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHRpbWUsICd0cnVlJyl9XG4gKiAgIG9uQXJyaXZhbENsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHRpbWUsIHVuZGVmaW5lZCl9XG4gKiAgIGVtYmVkV2hlbkNsb3NlZD17PGJ1dHRvbiAvPn1cbiAqICAgbGFuZz17J2VuJ31cbiAqICAgc2VydmljZVRpbWVSYW5nZT17MTV9XG4gKiAvPlxuICovXG5mdW5jdGlvbiBEYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyKHtcbiAgcmVhbHRpbWUsXG4gIGluaXRpYWxBcnJpdmVCeSxcbiAgaW5pdGlhbFRpbWVzdGFtcCxcbiAgb25EZXBhcnR1cmVDbGljayxcbiAgb25BcnJpdmFsQ2xpY2ssXG4gIG9uVGltZUNoYW5nZSxcbiAgb25EYXRlQ2hhbmdlLFxuICBvbk5vd0NsaWNrLFxuICBlbWJlZFdoZW5DbG9zZWQsXG4gIGVtYmVkV2hlbk9wZW4sXG4gIGxhbmcsXG4gIGNvbG9yLFxuICB0aW1lWm9uZSxcbiAgZm9udFdlaWdodHMsXG4gIHNlcnZpY2VUaW1lUmFuZ2UsXG4gIG9uT3BlbixcbiAgb25DbG9zZSxcbiAgb3BlblBpY2tlcixcbn0pIHtcbiAgbW9tZW50LmxvY2FsZShsYW5nKTtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBpbml0aWFsTm93ID0gcmVhbHRpbWUgPyBudWxsIDogbW9tZW50KCkudmFsdWVPZigpO1xuICBjb25zdCBbdGltZXN0YW1wLCBjaGFuZ2VUaW1lc3RhbXBTdGF0ZV0gPSB1c2VTdGF0ZShcbiAgICBpbml0aWFsVGltZXN0YW1wID8gaW5pdGlhbFRpbWVzdGFtcCAqIDEwMDAgOiBpbml0aWFsTm93LFxuICApO1xuICBjb25zdCBbZGVwYXJ0dXJlT3JBcnJpdmFsLCBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWxdID0gdXNlU3RhdGUoXG4gICAgaW5pdGlhbEFycml2ZUJ5ID09PSB0cnVlID8gJ2Fycml2YWwnIDogJ2RlcGFydHVyZScsXG4gICk7XG5cbiAgLy8gdXBkYXRlIHN0YXRlIGlmIHByb3BzIGNoYW5nZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGJvdGhOdWxsID0gdGltZXN0YW1wID09PSBudWxsICYmIGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvbmVOdWxsID0gdGltZXN0YW1wID09PSBudWxsIHx8IGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzYW1lVGltZSA9IE1hdGgucm91bmQodGltZXN0YW1wIC8gMTAwMCkgPT09IGluaXRpYWxUaW1lc3RhbXA7XG4gICAgY29uc3QgdGltZXN0YW1wQ2hhbmdlZCA9ICFib3RoTnVsbCAmJiAob25lTnVsbCB8fCAhc2FtZVRpbWUpO1xuICAgIGlmICh0aW1lc3RhbXBDaGFuZ2VkKSB7XG4gICAgICBpZiAoaW5pdGlhbFRpbWVzdGFtcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUoaW5pdGlhbFRpbWVzdGFtcCAqIDEwMDApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWluaXRpYWxBcnJpdmVCeSA9PT0gKGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnKSkge1xuICAgICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKFxuICAgICAgICBpbml0aWFsQXJyaXZlQnkgPT09IHRydWUgPyAnYXJyaXZhbCcgOiAnZGVwYXJ0dXJlJyxcbiAgICAgICk7XG4gICAgfVxuICB9LCBbaW5pdGlhbFRpbWVzdGFtcCwgaW5pdGlhbEFycml2ZUJ5XSk7XG5cbiAgY29uc3QgdGltZUNoYW5nZWQgPSBkZWJvdW5jZShuZXdUaW1lID0+IHtcbiAgICBpZiAobmV3VGltZSA9PT0gbnVsbCkge1xuICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobW9tZW50KCkudmFsdWVPZigpKTtcbiAgICAgIG9uVGltZUNoYW5nZShcbiAgICAgICAgTWF0aC5yb3VuZChtb21lbnQoKS52YWx1ZU9mKCkgLyAxMDAwKSxcbiAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCcsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShuZXdUaW1lKTtcbiAgICBvblRpbWVDaGFuZ2UoTWF0aC5yb3VuZChuZXdUaW1lIC8gMTAwMCksIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnKTtcbiAgfSwgMTApO1xuXG4gIGNvbnN0IGRhdGVDaGFuZ2VkID0gZGVib3VuY2UobmV3RGF0ZSA9PiB7XG4gICAgaWYgKG5ld0RhdGUgPT09IG51bGwpIHtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG1vbWVudCgpLnZhbHVlT2YoKSk7XG4gICAgICBvbkRhdGVDaGFuZ2UoXG4gICAgICAgIE1hdGgucm91bmQobW9tZW50KCkudmFsdWVPZigpIC8gMTAwMCksXG4gICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobmV3RGF0ZSk7XG4gICAgb25EYXRlQ2hhbmdlKE1hdGgucm91bmQobmV3RGF0ZSAvIDEwMDApLCBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyk7XG4gIH0sIDEwKTtcblxuICBjb25zdCBub3dDbGlja2VkID0gKCkgPT4ge1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gICAgY29uc3QgbmV3VGltZXN0YW1wID0gcmVhbHRpbWUgPyBudWxsIDogbW9tZW50KCkudmFsdWVPZigpO1xuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5ld1RpbWVzdGFtcCk7XG4gICAgb25Ob3dDbGljayhNYXRoLnJvdW5kKG5ld1RpbWVzdGFtcCAvIDEwMDApKTtcbiAgfTtcblxuICBjb25zdCBkZXBhcnR1cmVDbGlja2VkID0gKCkgPT4ge1xuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbGV0IG5ld1RpbWUgPSB0aW1lc3RhbXA7XG4gICAgaWYgKHRpbWVzdGFtcCA9PT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm93ID0gbW9tZW50KCkudmFsdWVPZigpO1xuICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobm93KTtcbiAgICAgIG5ld1RpbWUgPSBub3c7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGRlcGFydHVyZU9yQXJyaXZhbCAhPT0gJ2RlcGFydHVyZScpIHtcbiAgICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soTWF0aC5yb3VuZChuZXdUaW1lIC8gMTAwMCkpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhcnJpdmFsQ2xpY2tlZCA9ICgpID0+IHtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGxldCBuZXdUaW1lID0gdGltZXN0YW1wO1xuICAgIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5vdyk7XG4gICAgICBuZXdUaW1lID0gbm93O1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChkZXBhcnR1cmVPckFycml2YWwgIT09ICdhcnJpdmFsJykge1xuICAgICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdhcnJpdmFsJyk7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIG9uQXJyaXZhbENsaWNrKE1hdGgucm91bmQobmV3VGltZSAvIDEwMDApKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uTW9kYWxTdWJtaXQgPSAodGltZSwgbW9kZSkgPT4ge1xuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKHRpbWUpO1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbChtb2RlKTtcbiAgICBvblRpbWVDaGFuZ2UodGltZSAvIDEwMDAsIG1vZGUgPT09ICdhcnJpdmFsJywgdHJ1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RGF0ZXRpbWVwaWNrZXJcbiAgICAgIHRpbWVzdGFtcD17dGltZXN0YW1wfVxuICAgICAgb25UaW1lQ2hhbmdlPXt0aW1lQ2hhbmdlZH1cbiAgICAgIG9uRGF0ZUNoYW5nZT17ZGF0ZUNoYW5nZWR9XG4gICAgICBkZXBhcnR1cmVPckFycml2YWw9e2RlcGFydHVyZU9yQXJyaXZhbH1cbiAgICAgIG9uTm93Q2xpY2s9e25vd0NsaWNrZWR9XG4gICAgICBvbkRlcGFydHVyZUNsaWNrPXtkZXBhcnR1cmVDbGlja2VkfVxuICAgICAgb25BcnJpdmFsQ2xpY2s9e2Fycml2YWxDbGlja2VkfVxuICAgICAgZW1iZWRXaGVuQ2xvc2VkPXtlbWJlZFdoZW5DbG9zZWR9XG4gICAgICBlbWJlZFdoZW5PcGVuPXtlbWJlZFdoZW5PcGVufVxuICAgICAgbGFuZz17bGFuZ31cbiAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgIG9uTW9kYWxTdWJtaXQ9e29uTW9kYWxTdWJtaXR9XG4gICAgICBmb250V2VpZ2h0cz17Zm9udFdlaWdodHN9XG4gICAgICBzZXJ2aWNlVGltZVJhbmdlPXtzZXJ2aWNlVGltZVJhbmdlfVxuICAgICAgb25PcGVuPXtvbk9wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgb3BlblBpY2tlcj17b3BlblBpY2tlcn1cbiAgICAvPlxuICApO1xufVxuXG5EYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyLnByb3BUeXBlcyA9IHtcbiAgcmVhbHRpbWU6IFByb3BUeXBlcy5ib29sLFxuICBpbml0aWFsVGltZXN0YW1wOiBQcm9wVHlwZXMubnVtYmVyLFxuICBpbml0aWFsQXJyaXZlQnk6IFByb3BUeXBlcy5ib29sLFxuICBvbkRlcGFydHVyZUNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkFycml2YWxDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25UaW1lQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRhdGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uTm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogUHJvcFR5cGVzLm5vZGUsXG4gIGVtYmVkV2hlbk9wZW46IFByb3BUeXBlcy5ub2RlLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlcixcbiAgfSksXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuUGlja2VyOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbkRhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXIuZGVmYXVsdFByb3BzID0ge1xuICByZWFsdGltZTogZmFsc2UsXG4gIGluaXRpYWxBcnJpdmVCeTogdW5kZWZpbmVkLFxuICBpbml0aWFsVGltZXN0YW1wOiB1bmRlZmluZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogbnVsbCxcbiAgZW1iZWRXaGVuT3BlbjogbnVsbCxcbiAgbGFuZzogJ2VuJyxcbiAgY29sb3I6ICcjMDA3YWM5JyxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxuICBmb250V2VpZ2h0czoge1xuICAgIG1lZGl1bTogNTAwLFxuICB9LFxuICBvbk9wZW46IG51bGwsXG4gIG9uQ2xvc2U6IG51bGwsXG4gIG9wZW5QaWNrZXI6IHVuZGVmaW5lZCxcbiAgc2VydmljZVRpbWVSYW5nZTogMzAsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyO1xuIl0sIm5hbWVzIjpbIl9hcnJheUxpa2VUb0FycmF5IiwiYXJyIiwibGVuIiwibGVuZ3RoIiwiaSIsImFycjIiLCJBcnJheSIsIl9zbGljZWRUb0FycmF5IiwiaXNBcnJheSIsImFycmF5V2l0aEhvbGVzIiwiciIsImwiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJlIiwibiIsInUiLCJhIiwiZiIsIm8iLCJjYWxsIiwibmV4dCIsIk9iamVjdCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJpdGVyYWJsZVRvQXJyYXlMaW1pdCIsIm1pbkxlbiIsImFycmF5TGlrZVRvQXJyYXkiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJ1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIlR5cGVFcnJvciIsIm5vbkl0ZXJhYmxlUmVzdCIsInBhcnNlVHlwZWRUaW1lIiwidHlwZWRWYWx1ZSIsImFjdHVhbFZhbHVlIiwic3BsaXQiLCJldmVyeSIsIk51bWJlciIsImlzSW50ZWdlciIsInZhbGlkYXRlQ2xvY2siLCJob3VycyIsIm1pbnV0ZXMiLCJob3Vyc1ZhbGlkIiwiaXNOYU4iLCJtaW51dGVzVmFsaWQiLCJ2YWxpZGF0ZUlucHV0IiwiaW5wdXRWYWx1ZSIsImluY2x1ZGVzIiwiX2lucHV0VmFsdWUkc3BsaXQyIiwic3RhcnRzV2l0aCIsInZhbHVlcyIsIl9yZWYiLCJjb25jYXQiLCJfcmVmMiIsIl9yZWYzIiwiX3JlZjQiLCJzdWJzdHJpbmciLCJnZXRUcyIsImN1cnJlbnRUaW1lc3RhbXAiLCJ0cmltbWVkIiwidHJpbSIsIm1hdGNoIiwic3BsaXR0ZXIiLCJtb21lbnQiLCJ2YWx1ZU9mIiwiRGVza3RvcERhdGV0aW1lcGlja2VyIiwib25DaGFuZ2UiLCJnZXREaXNwbGF5IiwidGltZUNob2ljZXMiLCJpZCIsImxhYmVsIiwiaWNvbiIsImRpc2FibGVUeXBpbmciLCJ0aW1lWm9uZSIsImRhdGVQaWNrZXIiLCJ0cmFuc2xhdGlvblNldHRpbmdzIiwidHoiLCJzZXREZWZhdWx0IiwiX3VzZVN0YXRlMiIsInVzZVN0YXRlIiwiZGlzcGxheVZhbHVlIiwiY2hhbmdlRGlzcGxheVZhbHVlIiwiX3VzZVN0YXRlNCIsInR5cGluZyIsInNldFR5cGluZyIsIl91c2VTdGF0ZTYiLCJzaG93QWxsT3B0aW9ucyIsInNldFNob3dBbGxPcHRpb25zIiwiX3VzZVN0YXRlOCIsImludmFsaWRJbnB1dCIsInNldGludmFsaWRJbnB1dCIsInVzZUVmZmVjdCIsImhhbmRsZVRpbWVzdGFtcCIsIm5ld1ZhbHVlIiwiYXNOdW1iZXIiLCJpc1ZhbGlkIiwib3B0aW9ucyIsIm1hcCIsImNsb3Nlc3RPcHRpb25zIiwiZmlsdGVyIiwiY2xvc2VzdE9wdGlvbiIsInJlZHVjZSIsImIiLCJNYXRoIiwiYWJzIiwidW5kZWZpbmVkIiwiaW5wdXRJZCIsImxhYmVsSWQiLCJhcmlhRXJyb3IiLCJpMThuZXh0IiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGVzIiwiaHRtbEZvciIsIlNlbGVjdCIsImFyaWFMaXZlTWVzc2FnZXMiLCJndWlkYW5jZSIsImNvbnRleHQiLCJpc0Rpc2FibGVkIiwib25GaWx0ZXIiLCJvbkZvY3VzIiwiaXRlbUxhYmVsIiwidGltZSIsImN1cnJlbnRUaW1lIiwiZm9ybWF0IiwidHMiLCJjb21wb25lbnRzIiwiSW5kaWNhdG9yc0NvbnRhaW5lciIsImN4IiwiY2xhc3NOYW1lUHJlZml4Iiwib25JbnB1dENoYW5nZSIsImFjdGlvbiIsInN0ciIsInZhbGlkIiwiaXNpbnZhbGlkSW5wdXQiLCJ2YWxpZGF0ZWQiLCJub09wdGlvbnNNZXNzYWdlIiwiZmlsdGVyT3B0aW9uIiwib3B0aW9uIiwiaW5wdXQiLCJfaW5wdXQkc3BsaXQkIiwiY29tcGxldGVJbnB1dCIsImlzTW9kMTUiLCJtaW51dGVJbnB1dCIsImlucHV0SCIsImlucHV0TSIsIm9wdEgiLCJvcHRNIiwidG90YWwiLCJmaWx0ZXJPcHRpb25zIiwiaG91ciIsImlzVmFsaWRIb3VyIiwiY29tcCIsImNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSIsInRhYlNlbGVjdHNWYWx1ZSIsInBsYWNlaG9sZGVyIiwidGFyZ2V0Iiwic2VsZWN0Iiwib25CbHVyIiwib25LZXlEb3duIiwia2V5IiwiaXNTZWFyY2hhYmxlIiwiY3NzIiwicmVmIiwiaW5zZXJ0QXQiLCJkb2N1bWVudCIsImhlYWQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInN0eWxlIiwidHlwZSIsImZpcnN0Q2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJhcHBlbmRDaGlsZCIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3JlYXRlVGV4dE5vZGUiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJudW1iZXIiLCJpc1JlcXVpcmVkIiwiZnVuYyIsImFycmF5T2YiLCJzdHJpbmciLCJub2RlIiwiYm9vbCIsInNoYXBlIiwibG5nIiwiZGVmYXVsdFByb3BzIiwidHJhbnNsYXRpb25zIiwiZGUiLCJ0b2RheSIsInRvbW9ycm93IiwiYXJyaXZhbCIsImRhdGUiLCJkZXBhcnR1cmUiLCJyZWFkeSIsImNhbmNlbCIsImVuIiwiZmkiLCJzdiIsImlzTW9iaWxlIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwidmVuZG9yIiwid2luZG93Iiwib3BlcmEiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInNvdXJjZUtleXMiLCJrZXlzIiwiaW5kZXhPZiIsIm9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJNb2JpbGVEYXRlcGlja2VyIiwiaXRlbUNvdW50Iiwic3RhcnRUaW1lIiwib3BlbiIsImNoYW5nZU9wZW4iLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJkYXRlQ2hvaWNlcyIsImZpbGwiLCJfIiwiYWRkIiwic2Nyb2xsSW5kZXgiLCJmaW5kSW5kZXgiLCJ1c2VMYXlvdXRFZmZlY3QiLCJjdXJyZW50Iiwic2Nyb2xsVG9wIiwibmF0aXZlSW5wdXQiLCJ0b0xvd2VyQ2FzZSIsIkF1dG9zdWdnZXN0Iiwic3VnZ2VzdGlvbnMiLCJnZXRTdWdnZXN0aW9uVmFsdWUiLCJzIiwicmVuZGVyU3VnZ2VzdGlvbiIsIm9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZCIsInNob3VsZFJlbmRlclN1Z2dlc3Rpb25zIiwiaW5wdXRQcm9wcyIsInJlYWRPbmx5IiwiZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrIiwib25TdWdnZXN0aW9uc0NsZWFyUmVxdWVzdGVkIiwicmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXIiLCJjb250YWluZXJQcm9wcyIsImNoaWxkcmVuIiwib3RoZXJSZWZzIiwiX2V4Y2x1ZGVkIiwiYXNzaWduIiwidGFiSW5kZXgiLCJlbGVtIiwidGhlbWUiLCJNb2JpbGVUaW1lcGlja2VyIiwiY2hhbmdlSW5wdXRWYWx1ZSIsInRpbWVJbnB1dFJlZiIsImZvY3VzIiwiaW5wdXRNb2RlIiwibWF4TGVuZ3RoIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJldmVudCIsImNoYXJBdCIsImFjdHVhbCIsInRpbWVzdGFtcCIsIk1vYmlsZVBpY2tlck1vZGFsIiwiZGVwYXJ0dXJlT3JBcnJpdmFsIiwib25Ob3dDbGljayIsImxhbmciLCJjb2xvciIsIm9uU3VibWl0Iiwib25DYW5jZWwiLCJnZXRUaW1lRGlzcGxheSIsImRhdGVTZWxlY3RJdGVtQ291bnQiLCJnZXREYXRlRGlzcGxheSIsImZvbnRXZWlnaHRzIiwiZGlzcGxheVRpbWVzdGFtcCIsImNoYW5nZVRpbWVzdGFtcCIsImRlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQiLCJjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwiLCJodG1sSWQiLCJ1bmlxdWVJZCIsImRhdGVTZWxlY3RTdGFydFRpbWUiLCJzdGFydE9mIiwibWludXRlIiwiTW9kYWwiLCJhcHBFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImlzT3BlbiIsIm92ZXJsYXlDbGFzc05hbWUiLCJtZWRpdW0iLCJvbkNsaWNrIiwiY2hlY2tlZCIsIkljb24iLCJpbWciLCJEYXRldGltZXBpY2tlciIsIm9uVGltZUNoYW5nZSIsIm9uRGF0ZUNoYW5nZSIsIm9uRGVwYXJ0dXJlQ2xpY2siLCJvbkFycml2YWxDbGljayIsImVtYmVkV2hlbkNsb3NlZCIsImVtYmVkV2hlbk9wZW4iLCJvbk1vZGFsU3VibWl0Iiwic2VydmljZVRpbWVSYW5nZSIsIm9uT3BlbiIsIm9uQ2xvc2UiLCJvcGVuUGlja2VyIiwiY2hhbmdlRGlzcGxheVRpbWVzdGFtcCIsInRpbWVySWQiLCJzZXRUaW1lciIsInVzZU1vYmlsZUlucHV0cyIsImRhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCIsIm9wZW5QaWNrZXJSZWYiLCJpbnB1dFJlZiIsImFsZXJ0UmVmIiwiZm9yRWFjaCIsImxhbmd1YWdlIiwiYWRkUmVzb3VyY2VCdW5kbGUiLCJsb2NhbGUiLCJub3dTZWxlY3RlZCIsImNsZWFySW50ZXJ2YWwiLCJuZXdJZCIsInNldEludGVydmFsIiwibm93IiwiaXNTYW1lIiwicHJldklzT3BlblJlZiIsImZvcm1hdHRlZCIsInRvVXBwZXJDYXNlIiwic2VsZWN0ZWRNb21lbnQiLCJ0aW1lU2VsZWN0U3RhcnRUaW1lIiwiZml2ZU1pbnV0ZXMiLCJuZXh0Rml2ZU1pbiIsImNlaWwiLCJ0aW1lc1RvQWRkIiwiY2xvc2VzdEluZGV4QWZ0ZXIiLCJzcGxpY2UiLCJTZXQiLCJzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCIsImlubmVySFRNTCIsInNldFRpbWVvdXQiLCJoaWRkZW4iLCJjbG9zZWQiLCJyb2xlIiwidGV4dGJ1dHRvbiIsImFjdGl2ZSIsIkZyYWdtZW50IiwibmV3VGltZXN0YW1wIiwibmV3RGVwYXJ0dXJlT3JBcnJpdmFsIiwidmFsaWRhdGUiLCJEYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyIiwicmVhbHRpbWUiLCJpbml0aWFsQXJyaXZlQnkiLCJpbml0aWFsVGltZXN0YW1wIiwiaW5pdGlhbE5vdyIsImNoYW5nZVRpbWVzdGFtcFN0YXRlIiwiYm90aE51bGwiLCJvbmVOdWxsIiwic2FtZVRpbWUiLCJyb3VuZCIsInRpbWVDaGFuZ2VkIiwiZGVib3VuY2UiLCJuZXdUaW1lIiwiZGF0ZUNoYW5nZWQiLCJuZXdEYXRlIiwibm93Q2xpY2tlZCIsImRlcGFydHVyZUNsaWNrZWQiLCJjaGFuZ2VkIiwiYXJyaXZhbENsaWNrZWQiLCJtb2RlIiwiZGF0ZVRpbWVDb21iaW5lZCIsImluaXQiLCJyZXNvdXJjZXMiLCJvbmVPZiIsImZhbGxiYWNrTG5nIiwiZGVmYXVsdE5TIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIl0sIm1hcHBpbmdzIjoieW1DQUFlLFNBQVNBLEVBQWtCQyxFQUFLQyxJQUNsQyxNQUFQQSxHQUFlQSxFQUFNRCxFQUFJRSxVQUFRRCxFQUFNRCxFQUFJRSxRQUMvQyxJQUFLLElBQUlDLEVBQUksRUFBR0MsRUFBTyxJQUFJQyxNQUFNSixHQUFNRSxFQUFJRixFQUFLRSxJQUFLQyxFQUFLRCxHQUFLSCxFQUFJRyxHQUNuRSxPQUFPQyxDQUNULENDQWUsU0FBU0UsRUFBZU4sRUFBS0csR0FDMUMsT0NMYSxTQUF5QkgsR0FDdEMsR0FBSUssTUFBTUUsUUFBUVAsR0FBTSxPQUFPQSxDQUNqQyxDREdTUSxDQUFlUixJRUxULFNBQStCUyxFQUFHQyxHQUMvQyxJ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
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("prop-types"),require("react"),require("moment-timezone"),require("lodash/debounce"),require("moment/locale/fi"),require("lodash/uniqueId"),require("i18next"),require("@digitransit-component/digitransit-component-icon"),require("react-select"),require("classnames"),require("react-modal"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","prop-types","react","moment-timezone","lodash/debounce","moment/locale/fi","lodash/uniqueId","i18next","@digitransit-component/digitransit-component-icon","react-select","classnames","react-modal","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-datetimepicker"]={},e.PropTypes,e.React,e.moment,e.debounce,null,e.uniqueId,e.i18next,e.Icon,e.Select,e.cx,e.ReactModal,e.Autosuggest)}(this,(function(e,t,n,i,a,l,o,r,s,d,u,c,p){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=_(t),f=_(n),b=_(i),y=_(a),g=_(o),h=_(r),v=_(s),x=_(d),w=_(u),k=_(c),E=_(p);function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function C(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,a,l,o,r=[],s=!0,d=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(i=l.call(n)).done)&&(r.push(i.value),r.length!==t);s=!0);}catch(e){d=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(d)throw a}}return r}}(e,t)||function(e,t){if(e){if("string"==typeof e)return N(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?N(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function R(e){var t=e;return 3===t.length&&t.split("").every((e=>Number.isInteger(Number(e))))&&(t=Number(t.slice(0,2))<=23?`${t.slice(0,2)}:${t[2]}`:`${t[0]}:${t.slice(1)}`),t}var F=(e,t)=>{var n=!Number.isNaN(e)&&e>=0&&e<=23,i=2===t.length?!Number.isNaN(t)&&Number(t)>=0&&Number(t<=59):!Number.isNaN(t)&&Number(t)>=0&&Number(t<=5);return n&&i};function S(e){if(e.length<=2)return!1;if(3===e.length){var t,n;if(e.includes(":")){var i=C(e.split(":"),2);t=i[0],n=i[1]}else{if(!e.startsWith("0")){var a=e.split("");if(1===Number(a[0])){var l=[a[0].concat(a[1]),a[2]];t=l[0],n=l[1]}else if(2===Number(a[0]))if(Number(a[1]<=3)){var o=[a[0].concat(a[1]),a[2]];t=o[0],n=o[1]}else{var r=[a[0],a[1].concat(a[2])];t=r[0],n=r[1]}else{var s=[a[0],a[1].concat(a[2])];t=s[0],n=s[1]}return!F(t,n)}if(t=e.substring(0,e.length-1),n=e.substring(e.length-1||0),Number(n)>5)return!0}return!F(t,n)}if(5===e.length||4===e.length){var d=e.split(":"),u=d[0],c=d[1];return!!(e.startsWith("0")&&1===c.length&&Number(c)>5)||!F(u,c)}return!1}var P=(e,t)=>{var n=e.trim();if(null!==n.match(/^[0-9]{1,2}(\.|:)[0-9]{2}$/)){var i=n.includes(".")?".":":",a=n.split(i),l=Number(a[0]),o=!Number.isNaN(l)&&l>=0&&l<=23,r=Number(a[1]);return!Number.isNaN(r)&&r>=0&&r<=59&&o?b.default(t).hours(l).minutes(r).valueOf():null}return null};var O={"sr-only":"styles_sr-only__BrzYQ","dt-datetimepicker":"styles_dt-datetimepicker__PtoFG",hidden:"styles_hidden__6ySER","datetimepicker-open-container":"styles_datetimepicker-open-container__1dVr5","top-row-container":"styles_top-row-container__cXGjL",closed:"styles_closed__Fqe1r","time-icon":"styles_time-icon__ntgLZ","dropdown-icon":"styles_dropdown-icon__diYYB","close-icon":"styles_close-icon__-MzK5","label-open":"styles_label-open__Gmvov",textbutton:"styles_textbutton__T7wS2",active:"styles_active__4L82E","combobox-left":"styles_combobox-left__Sp4kh","combobox-right":"styles_combobox-right__Hg8kN","departure-or-arrival-container":"styles_departure-or-arrival-container__pJ-Iw","radio-textbutton-label":"styles_radio-textbutton-label__h-zfy","first-radio":"styles_first-radio__FWNoD","radio-textbutton":"styles_radio-textbutton__tsKET","departure-now-button":"styles_departure-now-button__VKMMK","open-button":"styles_open-button__c2B-6","close-button":"styles_close-button__2mfgI","right-edge":"styles_right-edge__29UYw","combobox-container":"styles_combobox-container__CLY9U","combobox-icon":"styles_combobox-icon__-0XPH","date-input-icon":"styles_date-input-icon__KMrj1","time-input-icon":"styles_time-input-icon__qkhC7","datetimepicker-select-container":"styles_datetimepicker-select-container__EVW1l","picker-container":"styles_picker-container__V02r4","combobox-mobile-container":"styles_combobox-mobile-container__u2DSO","mobile-modal-overlay":"styles_mobile-modal-overlay__8vF8L","mobile-modal-content":"styles_mobile-modal-content__fWRgy","top-row":"styles_top-row__h8xy1","modal-title":"styles_modal-title__EA3YD","tab-row":"styles_tab-row__orgwh","radio-tab-label":"styles_radio-tab-label__vIfup","input-row":"styles_input-row__2XXEY","input-container":"styles_input-container__USZlF","time-input-mobile":"styles_time-input-mobile__6e4A5","mobile-input-display":"styles_mobile-input-display__VUMd0","mobile-input-hidden":"styles_mobile-input-hidden__2KIuK",container:"styles_container__ihyhz",suggestion:"styles_suggestion__ZczJa",suggestionHighlighted:"styles_suggestionHighlighted__fzLiW",suggestionsContainerOpen:"styles_suggestionsContainerOpen__ISHXi",input:"styles_input__PAfbH","buttons-row":"styles_buttons-row__-3wsn","ready-button":"styles_ready-button__dH7Qc"};function G(e){var t=e.value,i=e.onChange,a=e.getDisplay,l=e.timeChoices,o=e.id,r=e.label,s=e.icon,d=e.disableTyping,u=e.timeZone,c=e.datePicker,p=e.translationSettings;b.default.tz.setDefault(u);var _=C(n.useState(a(t)),2),m=_[0],y=_[1],g=C(n.useState(!1),2),v=g[0],k=g[1],E=C(n.useState(!0),2),N=E[0],F=E[1],G=C(n.useState(!1),2),W=G[0],q=G[1];n.useEffect((()=>{y(a(t)),c||q(!1)}),[t]);var X=e=>{var t=Number(e);!Number.isNaN(t)&&b.default(t).isValid()&&b.default(t).valueOf()===t&&i(t)};var A=l.map((e=>({value:e.toString(),label:a(e)}))),$=c?A:A.filter((e=>e.label.split(":")[1]%15==0)),T=$.length>0?null==$?void 0:$.reduce(((e,n)=>Math.abs(t-e.value)<Math.abs(t-n.value)?e:n)):void 0,D=`${o}-input`,z=`${o}-label`,Z=h.default.t("invalid-input",p);return f.default.createElement("label",{className:O["combobox-container"],htmlFor:D},f.default.createElement("span",{className:O["sr-only"],id:z},r," ",m),s,f.default.createElement(x.default,{"aria-labelledby":z,ariaLiveMessages:{guidance:e=>void 0===e.isDisabled&&W?Z:".",onChange:()=>"",onFilter:()=>"",onFocus:e=>{var t=e.context,n=e.label;return"menu"===t?n:""}},options:A,inputId:D,onChange:e=>{var n=b.default(t).format("HH:mm"),i=P(m,t);if(v)return null!==i?(n!==m&&e.value===t?X(i):X(e.value),k(!1)):(e.value!==t?X(e.value):y(a(t)),k(!1)),void(c||q(!1));c||q(!1),X(e.value)},components:{IndicatorsContainer:()=>null},className:w.default(O["datetimepicker-select-container"],W&&"datetimepicker-invalid-input"),classNamePrefix:"datetimepicker-select",onInputChange:(e,t)=>{var n=t.action;if("menu-close"===n?F(!0):N&&F(!1),!(d||e&&!function(e){if(e.length<(null==m?void 0:m.length)){var t=S(e);return q(t),!0}if(/[a-zA-Z§ÄäÖö.-\s]/g.test(e))return!1;var n=S(e.length>5?e.slice(0,-1):e);return q(n),e.length<=5}(e))&&"input-change"===n){var i=R(e);y(i),k(!0)}},inputValue:!d&&m,value:T,noOptionsMessage:()=>"",filterOption:(e,t)=>{var n;if(c)return!0;var i=5===t.length||4===t.length&&1===t.split(":")[0].length,a=e.label.split(":")[1]%15==0,l=1===(null===(n=t.split(":")[1])||void 0===n?void 0:n.length);if(N&&a)return!0;if(l){var o=1===t.split(":")[0].length?"0".concat(t.split(":")[0]):t.split(":")[0],r=t.split(":")[1],s=e.label.split(":")[0],d=e.label.split(":")[1];if(o===s){var u=10*Number(r),p=Number(d)-u;return p>=0&&p<=9}}return i&&!N?4===t.length?"0".concat(t)===e.label:t===e.label:!!a&&((e,t)=>{var n=t.length<=2?t:t.split(":")[0],i=/^([0-1]?[0-9]|2[0-3])$/.test(n),a=1===n.length?"0".concat(t):t;return!i||e.label.split(":")[0]===a.split(":")[0]})(e,t)},controlShouldRenderValue:d,tabSelectsValue:!1,placeholder:"",onFocus:e=>{d||e.target.select()},onBlur:()=>{if(v){var e=P(m,t);null!==e?(X(e),k(!1)):(y(a(t)),k(!1))}c||q(!1)},onKeyDown:e=>{["ArrowDown","ArrowUp"].includes(e.key)&&k(!1)},isSearchable:!d}))}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}(".styles_sr-only__BrzYQ:not(:focus, :active) {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n\n.styles_dt-datetimepicker__PtoFG {\n border: none;\n padding: 0;\n margin: 0;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG button,\n .styles_dt-datetimepicker__PtoFG label {\n font-size: 1em;\n font-weight: inherit; }\n .styles_dt-datetimepicker__PtoFG label button {\n cursor: pointer;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', Roboto, Arial, Georgia, serif; }\n .styles_dt-datetimepicker__PtoFG .styles_hidden__6ySER {\n display: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-open-container__1dVr5 {\n background-color: #f4f4f5;\n border-radius: 5px;\n padding: 15px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n display: flex;\n flex-wrap: wrap; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL.styles_closed__Fqe1r {\n margin: 11px 0 6px 18px; }\n @media screen and (max-width: 319px) {\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_time-icon__ntgLZ svg {\n width: 18px;\n height: 19px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB {\n margin-left: 9px;\n position: relative;\n top: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB svg {\n width: 14px;\n height: 10px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg {\n width: 12px;\n height: 12px;\n border-radius: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg path {\n stroke-width: 30; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label.styles_label-open__Gmvov {\n align-items: flex-start;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL button,\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n font-size: 1em;\n letter-spacing: -0.5px;\n line-height: 1; }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 9px;\n margin-top: 1px;\n background: none;\n border: none;\n color: #666;\n padding: 0; }\n @media screen and (min-width: 768px) {\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2.styles_active__4L82E {\n color: var(--color); }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-left__Sp4kh {\n position: relative;\n margin-right: 4px;\n width: 63%; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-right__Hg8kN {\n position: relative;\n margin-left: 4px;\n width: 37%; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-or-arrival-container__pJ-Iw {\n height: calc(1rem + 20px);\n background-color: #ddd;\n border-radius: 8px;\n display: flex;\n width: calc(5px + 13em); }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy {\n color: #333;\n margin: 2px;\n background: none;\n border-radius: 6px;\n padding: 9px 0;\n width: 50%;\n cursor: pointer;\n height: calc(1rem + 16px);\n text-align: center;\n font-weight: 400;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.03em; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_active__4L82E {\n font-weight: 500;\n background: white; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy:focus-within {\n /* First apply outline that is used in Edge and Firefox */\n outline: 1px dotted #212121;\n /* Then override outline for webkit browsers like Chrome, this has no effect on other browsers */\n outline: 5px auto -webkit-focus-ring-color;\n /* stylelint-disable-line declaration-block-no-duplicate-properties */ }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_first-radio__FWNoD {\n margin: 0;\n display: flex;\n align-items: flex-start; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-now-button__VKMMK {\n font-family: inherit;\n letter-spacing: -0.02em;\n height: calc(1rem + 18px);\n color: var(--color);\n padding: 8px 0;\n width: 6.6875rem;\n background: white;\n border: 1px solid #888;\n border-radius: 30px;\n margin-left: 11px; }\n .styles_dt-datetimepicker__PtoFG .styles_open-button__c2B-6 {\n display: flex;\n margin-bottom: 0;\n margin-top: -1px;\n padding: 2px 0 2px 0; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI {\n transition: transform 0.2s;\n position: relative;\n top: -8px;\n right: -8px;\n border: 0;\n font-weight: normal;\n background: none;\n color: var(--color);\n padding: 0;\n line-height: normal; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI:hover {\n transform: scale(1.2); }\n .styles_dt-datetimepicker__PtoFG .styles_right-edge__29UYw {\n margin-left: auto;\n margin-right: 0;\n position: relative;\n top: -2px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-container__CLY9U {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH {\n color: var(--color);\n height: 40px;\n position: absolute;\n z-index: 7;\n pointer-events: none; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 14px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 svg {\n width: 20px;\n height: 18px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 8px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 svg {\n margin-top: 1px;\n width: 22px;\n height: 22px; }\n .styles_dt-datetimepicker__PtoFG .datetimepicker-invalid-input input {\n color: #f00 !important; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l {\n position: relative;\n height: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__control {\n cursor: inherit;\n height: 40px;\n border: 1px solid #888; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__value-container {\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__single-value {\n margin: 0 0 0 47px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input {\n background: inherit;\n position: relative;\n margin-left: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input {\n opacity: 1 !important;\n background: inherit;\n box-shadow: none;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333;\n font-family: inherit;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input:focus {\n box-shadow: none;\n outline: none;\n border: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu {\n z-index: 19;\n padding: 0;\n background: #fff;\n max-height: 250px;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list {\n max-height: 250px;\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option {\n height: 50px;\n border-top: 1px solid #ddd;\n padding: 13px 0 0 12px;\n letter-spacing: -0.6px;\n color: #333; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-selected {\n background: inherit; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-focused {\n background: #dfe5e8; }\n .styles_dt-datetimepicker__PtoFG .styles_picker-container__V02r4 {\n margin: 14px 0 0 0;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-mobile-container__u2DSO {\n flex-grow: 1; }\n\n.styles_mobile-modal-overlay__8vF8L {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.6);\n z-index: 1000; }\n\n.styles_mobile-modal-content__fWRgy {\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', Roboto, Arial, Georgia, serif;\n background: white;\n width: 89%;\n position: absolute;\n left: 5.5%;\n padding: 31px 20px 33px 20px;\n top: 80px;\n border-radius: 5px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 {\n display: flex;\n justify-content: space-between;\n margin-bottom: 21px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_modal-title__EA3YD {\n font-weight: var(--font-weight-medium);\n font-size: 20px;\n line-height: 18px;\n letter-spacing: -0.5px;\n color: #333;\n padding: 6px 0 0 8px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_departure-now-button__VKMMK {\n background-color: white;\n font-family: inherit;\n padding: 5px 15px;\n border: 1px solid #888;\n border-radius: 50px;\n font-weight: var(--font-weight-medium);\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.02em;\n color: var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh {\n display: flex;\n border: 2px solid #ddd;\n border-radius: 5px;\n margin-bottom: 16px;\n background-color: #ddd; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup {\n padding: 9px 0;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.5px;\n border-radius: 3px;\n font-weight: normal;\n width: 50%;\n text-align: center;\n color: #333; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup.styles_active__4L82E {\n font-weight: var(--font-weight-medium);\n background-color: #fff; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY {\n display: flex;\n margin-bottom: 25px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:first-child {\n flex-basis: 60%;\n margin-right: 10px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:nth-child(2) {\n flex-basis: 40%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF {\n border: 1px solid #888;\n border-radius: 5px;\n display: flex;\n align-items: center;\n height: 40px;\n line-height: 1.5;\n font-size: 100%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF:focus-within {\n background: rgba(0, 122, 201, 0.06);\n border: 2px solid var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH {\n height: 18px;\n font-size: 18px;\n padding: 0 0 0 10px;\n border: none;\n position: relative;\n top: 3px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 > svg {\n height: 20px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .mobile-datetimepicker-invalid-input {\n color: #f00 !important; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_time-input-mobile__6e4A5 {\n font-family: inherit;\n box-shadow: none;\n font-size: 18px;\n letter-spacing: -0.5px;\n line-height: 20px;\n font-weight: var(--font-weight-medium);\n border: none;\n outline: none;\n background: none;\n width: 50px;\n margin-left: 10px;\n color: #333;\n height: 1.5265rem; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0 {\n position: relative;\n left: 10px;\n border: none;\n background: inherit;\n box-shadow: none;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-stretch: normal;\n font-style: normal;\n font-size: 16px;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0:focus {\n outline: none;\n box-shadow: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK {\n font-size: 16px;\n margin-bottom: 12px;\n height: 0;\n width: 0;\n background: inherit;\n color: transparent;\n outline: none;\n box-shadow: none;\n border: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK:focus {\n outline: none;\n box-shadow: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz {\n position: absolute;\n width: calc((100% - 50px) * 0.6);\n height: 25px;\n font-size: 15px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestion__ZczJa {\n list-style: none;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 49px;\n height: 50px;\n margin: 0;\n padding: 0 0 0 16px;\n color: rgba(0, 0, 0, 0.87);\n background: white; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionHighlighted__fzLiW {\n background: #dfe5e8; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi {\n position: absolute;\n z-index: 19;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 42px;\n left: -2px;\n width: 100%;\n font-size: 16px;\n line-height: 1;\n color: rgba(0, 0, 0, 0.87); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi ul {\n padding: 0;\n margin: 0; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH {\n box-shadow: none;\n border: none;\n background: none;\n font-size: 16px;\n font-weight: var(--font-weight-medium);\n height: 25px;\n display: inline-block;\n font-family: inherit;\n line-height: 1.33;\n padding-left: 46px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH:focus {\n outline: none;\n border: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn {\n display: flex;\n flex-direction: column;\n font-size: 16px;\n font-weight: var(--font-weight-medium); }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button {\n background-color: white;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-size: 16px;\n letter-spacing: -0.02em;\n width: 100%;\n border-radius: 50px;\n height: 40px;\n color: var(--color);\n border: 1px solid #888; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button.styles_ready-button__dH7Qc {\n color: white;\n background-color: var(--color);\n border: none;\n margin-bottom: 10px; }\n"),"production"!==process.env.NODE_ENV&&(G.propTypes={value:m.default.number.isRequired,onChange:m.default.func.isRequired,getDisplay:m.default.func.isRequired,timeChoices:m.default.arrayOf(m.default.number).isRequired,id:m.default.string.isRequired,label:m.default.node.isRequired,icon:m.default.node.isRequired,disableTyping:m.default.bool,timeZone:m.default.string,datePicker:m.default.bool,translationSettings:m.default.shape({lng:m.default.string.isRequired})}),G.defaultProps={disableTyping:!1,timeZone:"Europe/Helsinki",datePicker:!1,translationSettings:{lng:"fi"}};var W={de:{today:"Heute",tomorrow:"Morgen","accessible-close":"Schließe die Auswahl","accessible-closed":"Auswahl geschlossen","accessible-open":"Öffne die Auswahl","accessible-opened":"Auswahl geöffnet","accessible-title":"Datum und Uhrzeitauswahl",arrival:"Ankunft",date:"Datum",departure:"Abfahrt","departure-now":"Abfahrt jetzt","choose-time":"Zeit wählen",ready:"Fertig",time:"Zeit",cancel:"Abbrechen"},en:{today:"Today",tomorrow:"Tomorrow","accessible-close":"Close the picker","accessible-closed":"Timepicker closed","accessible-open":"Open the picker","accessible-opened":"Timepicker opened","accessible-title":"Date and timepicker","accessible-update-instructions":"Changing time parameters will trigger a new search.",arrival:"Arrival",date:"Date",departure:"Departure","departure-now":"Leaving now",time:"Time","choose-time":"Choose time",ready:"Ready",cancel:"Cancel","invalid-input":"The time you entered is invalid"},fi:{today:"Tänään",tomorrow:"Huomenna","accessible-close":"Sulje valitsin","accessible-closed":"Valitsin suljettu","accessible-open":"Avaa valitsin","accessible-opened":"Valitsin avattu","accessible-title":"Aika- ja päivämäärävalitsin","accessible-update-instructions":"Aikavalintojen muuttaminen laukaisee uuden haun.",arrival:"Perillä",date:"Päivä",departure:"Lähtöaika","departure-now":"Lähtö nyt",time:"Aika","choose-time":"Valitse aika",ready:"Valmis",cancel:"Peruuta","invalid-input":"Syöttämäsi aika on virheellinen"},sv:{today:"I dag",tomorrow:"I morgon","accessible-close":"Stäng väljaren","accessible-closed":"Väljaren stängde","accessible-open":"Öppna väljaren","accessible-opened":"Väljaren öppnade","accessible-title":"Tid- och datumväljaren","accessible-update-instructions":"Om du ändrar tiderna, startas en ny sökning automatiskt.",arrival:"Anländer",date:"Datum",departure:"Avgångstid","departure-now":"Avgår nu",time:"Tid","choose-time":"Välj tid",ready:"Färdig",cancel:"Avbryt","invalid-input":"Tiden du angav är felaktig"}};function q(){var e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)}function X(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n,i,a={},l=Object.keys(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var A=["ref"];function $(e){var t=e.value,i=e.getDisplay,a=e.onChange,l=e.itemCount,o=e.startTime,r=e.id,s=e.label,d=e.icon,u=e.timeZone;b.default.tz.setDefault(u);var c=C(n.useState(!1),2),p=c[0],_=c[1],m=n.useRef(null),y=Array(l).fill().map(((e,t)=>b.default(o).add(t,"day").valueOf())),g=y.map((e=>t-e)).findIndex((e=>e<6e4));n.useLayoutEffect((()=>{p&&m.current&&(m.current.scrollTop=50*g)}),[t,p]);var h=!(navigator.userAgent.toLowerCase().indexOf("android")>-1),v=`${r}-input`,x=`${r}-label`;return f.default.createElement("label",{className:O["input-container"],htmlFor:v},f.default.createElement("span",null,d),f.default.createElement("span",{className:O["sr-only"],id:x},s),h?f.default.createElement("select",{className:O["mobile-input-display"],onChange:e=>a(Number(e.target.value)),value:t},y.map((e=>f.default.createElement("option",{key:e,value:e},i(e))))):f.default.createElement(E.default,{id:r,suggestions:y,getSuggestionValue:e=>e.toString(),renderSuggestion:e=>i(e),onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,inputProps:{value:i(t),onChange:(e,t)=>{var n=t.newValue;a(Number(n))},onFocus:()=>{_(!0)},onBlur:()=>{_(!1)},"aria-labelledby":x,"aria-autocomplete":"none",readOnly:!0},focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,renderSuggestionsContainer:e=>{var t=e.containerProps,n=e.children,i=t.ref,a=X(t,A);return f.default.createElement("div",Object.assign({tabIndex:"-1"},a,{ref:e=>{e&&(m.current=e,i(e))}}),n)},theme:O}))}function T(e){var t=e.value,i=e.getDisplay,a=e.onChange,l=e.id,o=e.label,r=e.icon,s=e.timeZone,d=C(n.useState(i(t)),2),u=d[0],c=d[1],p=C(n.useState(!1),2),_=p[0],m=p[1];b.default.tz.setDefault(s);var y=`${l}-input`,g=`${l}-label`,h=n.useRef(null);return n.useLayoutEffect((()=>{h.current&&h.current.focus()}),[]),f.default.createElement("label",{className:O["input-container"],htmlFor:y},f.default.createElement("span",null,r),f.default.createElement("span",{className:O["sr-only"],id:g},o),f.default.createElement("input",{id:y,inputMode:"numeric",type:"text",maxLength:"6",className:w.default(O["time-input-mobile"],_&&"mobile-datetimepicker-invalid-input"),value:u,onFocus:e=>{e.target.setSelectionRange(0,0)},onChange:e=>{var n=e.target.value,i=S(n);if(m(i),n.match(/[0-9]{3}:[0-9]{2}/)&&n.slice(1)===u&&(n=n.charAt(0)),!(n.length>5)){var l=R(n);c(l);var o=P(l,t);o&&a(o)}},ref:h}))}function D(e){var t=e.departureOrArrival,i=e.onNowClick,a=e.lang,l=e.color,o=e.timeZone,r=e.onSubmit,s=e.onCancel,d=e.timestamp,u=e.getTimeDisplay,c=e.dateSelectItemCount,p=e.getDateDisplay,_=e.fontWeights;b.default.tz.setDefault(o);var m={lng:a},y=C(n.useState(d),2),x=y[0],w=y[1],E=C(n.useState(t),2),N=E[0],R=E[1];var F=C(n.useState(g.default("datetimepicker-")),1)[0],S=b.default().startOf("day").hour(b.default(x).hour()).minute(b.default(x).minute()).valueOf();return f.default.createElement(k.default,{appElement:document?document.querySelector("#app"):void 0,isOpen:!0,className:O["mobile-modal-content"],overlayClassName:O["mobile-modal-overlay"]},f.default.createElement("div",{style:{"--color":`${l}`,"--font-weight-medium":_.medium}},f.default.createElement("div",{className:O["top-row"]},f.default.createElement("h3",{className:O["modal-title"]},h.default.t("choose-time",m)),f.default.createElement("button",{type:"button",className:O["departure-now-button"],onClick:i},h.default.t("departure-now",m))),f.default.createElement("div",{className:O["tab-row"]},f.default.createElement("label",{htmlFor:`${F}-modal-departure`,className:`${O["radio-tab-label"]}\n ${O["departure"===N?"active":void 0]}`},h.default.t("departure",m),f.default.createElement("input",{id:`${F}-modal-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:O["radio-textbutton"],onChange:()=>{R("departure")},checked:"departure"===N})),f.default.createElement("label",{htmlFor:`${F}-modal-arrival`,className:`${O["radio-tab-label"]}\n ${O["arrival"===N?"active":void 0]}`},h.default.t("arrival",m),f.default.createElement("input",{id:`${F}-modal-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:O["radio-textbutton"],onChange:()=>{R("arrival")},checked:"arrival"===N}))),f.default.createElement("div",{className:O["input-row"]},f.default.createElement($,{value:x,getDisplay:p,onChange:w,itemCount:c,startTime:S,id:`${F}-date`,label:h.default.t("date",m),icon:f.default.createElement("span",{className:`${O["combobox-icon"]} ${O["date-input-icon"]}`},f.default.createElement(v.default,{img:"calendar",color:l})),timeZone:o}),f.default.createElement(T,{value:x,getDisplay:u,onChange:w,id:`${F}-time`,label:h.default.t("time",m),icon:f.default.createElement("span",{className:`${O["combobox-icon"]} ${O["time-input-icon"]}`},f.default.createElement(v.default,{img:"time",color:l})),timeZone:o})),f.default.createElement("div",{className:O["buttons-row"]},f.default.createElement("button",{type:"button",className:O["ready-button"],onClick:()=>r(x,N)},h.default.t("ready",m)),f.default.createElement("button",{type:"button",className:O["cancel-button"],onClick:s},h.default.t("cancel",m)))))}function z(e){var t=e.timestamp,i=e.onTimeChange,a=e.onDateChange,l=e.departureOrArrival,o=e.onNowClick,r=e.onDepartureClick,s=e.onArrivalClick,d=e.embedWhenClosed,u=e.embedWhenOpen,c=e.lang,p=e.color,_=e.timeZone,m=e.onModalSubmit,y=e.fontWeights,x=e.serviceTimeRange,w=e.onOpen,k=e.onClose,E=e.openPicker;b.default.tz.setDefault(_);var N=C(n.useState(E||!1),2),R=N[0],F=N[1],S=C(n.useState(t||b.default().valueOf()),2),P=S[0],X=S[1],A=C(n.useState(null),2),$=A[0],T=A[1],z=C(n.useState(g.default("datetimepicker-")),1)[0],Z=C(n.useState(q()&&function(){if("undefined"==typeof window||null===window)return!1;var e=document.createElement("input");return e.type="date","date"===e.type&&(e.type="time","time"===e.type)}()),1)[0],j=n.useRef(),V=n.useRef(),M=n.useRef(),I={lng:c};n.useEffect((()=>{Object.keys(W).forEach((e=>h.default.addResourceBundle(e,"translation",W[c])))}),[]),n.useEffect((()=>{b.default.locale(c)}),[c]);var L=null===t;n.useEffect((()=>{L?X(b.default().valueOf()):($&&(clearInterval($),T(null)),X(t))}),[t]),n.useEffect((()=>{if(L){$&&clearInterval($);var e=setInterval((()=>{var t=b.default().valueOf();b.default(P).isSame(t,"minute")||(clearInterval(e),T(null),X(t))}),5e3);return T(e),()=>clearInterval(e)}}),[P]);var H=n.useRef();n.useEffect((()=>{H.current=R}));for(var Y=e=>{var t,n=b.default(e);return t=`${(t=n.isSame(b.default(),"day")?h.default.t("today",I):n.isSame(b.default().add(1,"day"),"day")?h.default.t("tomorrow",I):n.format("dd D.M.")).charAt(0).toUpperCase()}${t.slice(1)}`},U=e=>b.default(e).format("HH:mm"),K=b.default(P),B=b.default(P).startOf("day").valueOf(),J=[],Q=b.default(B);Q.isSame(B,"day");)J.push(Q.valueOf()),q()?Q.add(15,"minutes"):Q.add(1,"minutes");if(null===t){var ee=3e5,te=Math.ceil(P/ee)*ee,ne=Array(7).fill().map(((e,t)=>te+t*ee)),ie=J.map((e=>P-e)).findIndex((e=>e<=0));J.splice(ie,0,...ne),J=Array.from(new Set(J))}var ae=b.default().startOf("day").hour(K.hour()).minute(K.minute()).valueOf(),le=Array(x).fill().map(((e,t)=>b.default(ae).add(t,"day").valueOf()));function oe(){M.current&&(M.current.innerHTML=h.default.t("accessible-closed",I),setTimeout((()=>{M.current.innerHTML=null}),100))}return f.default.createElement("fieldset",{className:O["dt-datetimepicker"],id:`${z}-root`,style:{"--color":`${p}`,"--font-weight-medium":y.medium}},f.default.createElement("legend",{className:O["sr-only"]},h.default.t("accessible-title",I)),f.default.createElement("span",{className:O["sr-only"]},h.default.t("accessible-update-instructions",I)),f.default.createElement("div",{className:R?`${O.hidden} datetimepicker-top-row`:`${O["top-row-container"]} ${O.closed} datetimepicker-top-row`},f.default.createElement("label",{className:O["label-open"],htmlFor:`${z}-open`},f.default.createElement("span",{className:O["time-icon"]},f.default.createElement(v.default,{img:"time",color:p})),f.default.createElement("span",{className:O["sr-only"]},h.default.t("accessible-open",I)),f.default.createElement("span",{role:"alert",className:O["sr-only"],ref:M}),f.default.createElement("button",{id:`${z}-open`,type:"button",className:`${O.textbutton} ${O.active} ${O["open-button"]}`,"aria-controls":`${z}-root`,"aria-expanded":"false",onClick:()=>{F(!0),M.current&&(M.current.innerHTML=h.default.t("accessible-opened",I),setTimeout((()=>{M.current.innerHTML=null}),100)),w&&w()},ref:j},f.default.createElement("span",null,L&&"departure"===l?h.default.t("departure-now",I):f.default.createElement(f.default.Fragment,null,h.default.t("departure"===l?"departure":"arrival",I),` ${b.default().isSame(b.default(P),"day")?"":Y(P).toLowerCase()} ${U(P)}`)),f.default.createElement("span",{className:O["dropdown-icon"]},f.default.createElement(v.default,{img:"arrow-dropdown",color:p})))),f.default.createElement("span",{className:O["right-edge"]},d)),f.default.createElement("div",null),Z?R&&f.default.createElement(D,{departureOrArrival:l,onNowClick:()=>{F(!1),oe(),o()},lang:c,color:p,onSubmit:(e,t)=>{m(e,t),F(!1),oe()},onCancel:()=>{F(!1),oe(),k&&k()},getTimeDisplay:U,timeZone:_,timestamp:P,getDateDisplay:Y,dateSelectItemCount:x,getDisplay:U,fontWeights:y}):f.default.createElement(f.default.Fragment,null,f.default.createElement("div",{className:`${O["datetimepicker-open-container"]} ${R?"":O.hidden}`},f.default.createElement("div",{className:R?`${O["top-row-container"]} datetimepicker-top-row`:`${O.hidden} datetimepicker-top-row`}," ",f.default.createElement("span",{role:"alert",className:O["sr-only"],ref:M}),f.default.createElement("span",null),f.default.createElement("span",{className:O["departure-or-arrival-container"]},f.default.createElement("label",{htmlFor:`${z}-departure`,className:`${O["radio-textbutton-label"]}\n ${O["departure"===l?"active":void 0]}`},h.default.t("departure",I),f.default.createElement("input",{id:`${z}-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:O["radio-textbutton"],onChange:()=>{r()},checked:"departure"===l})),f.default.createElement("label",{htmlFor:`${z}-arrival`,className:`${O["radio-textbutton-label"]}\n ${O["arrival"===l?"active":void 0]}`},h.default.t("arrival",I),f.default.createElement("input",{id:`${z}-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:O["radio-textbutton"],onChange:()=>{s()},checked:"arrival"===l}))),f.default.createElement("button",{id:`${z}-now`,type:"button",className:O["departure-now-button"],onClick:()=>{F(!1),oe(),k&&k(),o()},ref:V},h.default.t("departure-now",I)),f.default.createElement("span",{className:O["right-edge"]},f.default.createElement("button",{type:"button",className:O["close-button"],"aria-controls":`${z}-root`,"aria-expanded":"true",onClick:()=>{F(!1),oe(),k&&k()}},f.default.createElement("span",{className:O["close-icon"]},f.default.createElement(v.default,{img:"close",color:p})),f.default.createElement("span",{className:O["sr-only"]},h.default.t("accessible-close",I))))),f.default.createElement("div",{className:R?`${O["picker-container"]}`:`${O.hidden} datetimepicker-top-row`},f.default.createElement("span",{className:O["combobox-left"]},f.default.createElement(G,{value:P,onChange:e=>{a(e)},getDisplay:Y,timeChoices:le,validate:()=>null,icon:f.default.createElement("span",{className:`${O["combobox-icon"]} ${O["date-input-icon"]}`},f.default.createElement(v.default,{img:"calendar",color:p})),id:`${z}-date`,label:h.default.t("date",I),disableTyping:!0,timeZone:_,datePicker:!0})),f.default.createElement("span",{className:O["combobox-right"]},f.default.createElement(G,{value:P,onChange:e=>{i(e)},getDisplay:U,timeChoices:J,icon:f.default.createElement("span",{className:`${O["combobox-icon"]} ${O["time-input-icon"]}`},f.default.createElement(v.default,{img:"time",color:p})),id:`${z}-time`,label:h.default.t("time",I),timeZone:_,translationSettings:I})))),f.default.createElement("span",{className:R?"":O.hidden},u),f.default.createElement("div",{className:R?"datetimepicker-bottom-row-open":""})))}function Z(e){var t=e.realtime,i=e.initialArriveBy,a=e.initialTimestamp,l=e.onDepartureClick,o=e.onArrivalClick,r=e.onTimeChange,s=e.onDateChange,d=e.onNowClick,u=e.embedWhenClosed,c=e.embedWhenOpen,p=e.lang,_=e.color,m=e.timeZone,g=e.fontWeights,h=e.serviceTimeRange,v=e.onOpen,x=e.onClose,w=e.openPicker;b.default.locale(p),b.default.tz.setDefault(m);var k=t?null:b.default().valueOf(),E=C(n.useState(a?1e3*a:k),2),N=E[0],R=E[1],F=C(n.useState(!0===i?"arrival":"departure"),2),S=F[0],P=F[1];n.useEffect((()=>{var e=null===N&&void 0===a,t=null===N||void 0===a,n=Math.round(N/1e3)===a;!e&&(t||!n)&&R(void 0===a?null:1e3*a),!i==("arrival"===S)&&P(!0===i?"arrival":"departure")}),[a,i]);var O=y.default((e=>{if(null===e)return R(b.default().valueOf()),void r(Math.round(b.default().valueOf()/1e3),"arrival"===S);R(e),r(Math.round(e/1e3),"arrival"===S)}),10),G=y.default((e=>{if(null===e)return R(b.default().valueOf()),void s(Math.round(b.default().valueOf()/1e3),"arrival"===S);R(e),s(Math.round(e/1e3),"arrival"===S)}),10);return f.default.createElement(z,{timestamp:N,onTimeChange:O,onDateChange:G,departureOrArrival:S,onNowClick:()=>{P("departure");var e=t?null:b.default().valueOf();R(e),d(Math.round(e/1e3))},onDepartureClick:()=>{var e=!1,t=N;if(null===N){var n=b.default().valueOf();R(n),t=n,e=!0}"departure"!==S&&(P("departure"),e=!0),e&&l(Math.round(t/1e3))},onArrivalClick:()=>{var e=!1,t=N;if(null===N){var n=b.default().valueOf();R(n),t=n,e=!0}"arrival"!==S&&(P("arrival"),e=!0),e&&o(Math.round(t/1e3))},embedWhenClosed:u,embedWhenOpen:c,lang:p,color:_,timeZone:m,onModalSubmit:(e,t)=>{R(e),P(t),r(Math.round(e/1e3),"arrival"===t,!0)},fontWeights:g,serviceTimeRange:h,onOpen:v,onClose:x,openPicker:w})}"production"!==process.env.NODE_ENV&&($.propTypes={value:m.default.number.isRequired,getDisplay:m.default.func.isRequired,onChange:m.default.func.isRequired,itemCount:m.default.number.isRequired,startTime:m.default.number.isRequired,id:m.default.string.isRequired,label:m.default.string.isRequired,icon:m.default.node,dateTimeCombined:m.default.bool,timeZone:m.default.string}),$.defaultProps={icon:null,dateTimeCombined:!1,timeZone:"Europe/Helsinki"},"production"!==process.env.NODE_ENV&&(T.propTypes={value:m.default.number.isRequired,getDisplay:m.default.func.isRequired,onChange:m.default.func.isRequired,id:m.default.string.isRequired,label:m.default.string.isRequired,icon:m.default.node,timeZone:m.default.string}),T.defaultProps={icon:null,timeZone:"Europe/Helsinki"},b.default.locale("en"),h.default.init({lng:"en",resources:{}}),Object.keys(W).forEach((e=>h.default.addResourceBundle(e,"translation",W[e]))),"production"!==process.env.NODE_ENV&&(D.propTypes={timeZone:m.default.string,departureOrArrival:m.default.oneOf(["departure","arrival"]).isRequired,onNowClick:m.default.func.isRequired,lang:m.default.string.isRequired,color:m.default.string,onSubmit:m.default.func.isRequired,onCancel:m.default.func.isRequired,timestamp:m.default.number.isRequired,getTimeDisplay:m.default.func.isRequired,dateSelectItemCount:m.default.number.isRequired,getDateDisplay:m.default.func.isRequired,fontWeights:m.default.shape({medium:m.default.number.isRequired}).isRequired}),D.defaultProps={color:"#007ac9",timeZone:"Europe/Helsinki"},b.default.locale("en"),h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}}),"production"!==process.env.NODE_ENV&&(z.propTypes={timestamp:m.default.number,timeZone:m.default.string,onTimeChange:m.default.func.isRequired,onDateChange:m.default.func.isRequired,departureOrArrival:m.default.oneOf(["departure","arrival"]).isRequired,onNowClick:m.default.func.isRequired,onDepartureClick:m.default.func.isRequired,onArrivalClick:m.default.func.isRequired,embedWhenClosed:m.default.node,embedWhenOpen:m.default.node,lang:m.default.string.isRequired,color:m.default.string,onModalSubmit:m.default.func.isRequired,fontWeights:m.default.shape({medium:m.default.number.isRequired}).isRequired,serviceTimeRange:m.default.number.isRequired,onOpen:m.default.func,onClose:m.default.func,openPicker:m.default.bool}),z.defaultProps={timestamp:null,embedWhenClosed:null,embedWhenOpen:null,color:"#007ac9",timeZone:"Europe/Helsinki",onOpen:null,onClose:null,openPicker:void 0},"production"!==process.env.NODE_ENV&&(Z.propTypes={realtime:m.default.bool,initialTimestamp:m.default.number,initialArriveBy:m.default.bool,onDepartureClick:m.default.func.isRequired,onArrivalClick:m.default.func.isRequired,onTimeChange:m.default.func.isRequired,onDateChange:m.default.func.isRequired,onNowClick:m.default.func.isRequired,embedWhenClosed:m.default.node,embedWhenOpen:m.default.node,lang:m.default.string,color:m.default.string,timeZone:m.default.string,fontWeights:m.default.shape({medium:m.default.number}),serviceTimeRange:m.default.number,onOpen:m.default.func,onClose:m.default.func,openPicker:m.default.bool}),Z.defaultProps={realtime:!1,initialArriveBy:void 0,initialTimestamp:void 0,embedWhenClosed:null,embedWhenOpen:null,lang:"en",color:"#007ac9",timeZone:"Europe/Helsinki",fontWeights:{medium:500},onOpen:null,onClose:null,openPicker:void 0,serviceTimeRange:30},e.default=Z,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVSZXN0LmpzIiwiLi4vc3JjL2hlbHBlcnMvdXRpbHMuanMiLCIuLi9zcmMvaGVscGVycy9EZXNrdG9wRGF0ZXRpbWVwaWNrZXIuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtaW5qZWN0L2Rpc3Qvc3R5bGUtaW5qZWN0LmVzLmpzIiwiLi4vc3JjL2hlbHBlcnMvdHJhbnNsYXRpb25zLmpzIiwiLi4vc3JjL2hlbHBlcnMvbW9iaWxlRGV0ZWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCIuLi9zcmMvaGVscGVycy9Nb2JpbGVEYXRlcGlja2VyLmpzIiwiLi4vc3JjL2hlbHBlcnMvTW9iaWxlVGltZXBpY2tlci5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZVBpY2tlck1vZGFsLmpzIiwiLi4vc3JjL2hlbHBlcnMvRGF0ZXRpbWVwaWNrZXIuanMiLCIuLi9zcmMvaGVscGVycy9kYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQuanMiLCIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcbiAgcmV0dXJuIGFycjI7XG59IiwiaW1wb3J0IGFycmF5V2l0aEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5TGltaXQgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlUmVzdCBmcm9tIFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59IiwiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuXG4vKipcbiAqIEhhbmRsZSB0eXBpbmcgdGltZSBhbmQgYWRkaW5nIG5lY2Vzc2FyeSA6XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVkVmFsdWVcbiAqXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVR5cGVkVGltZSh0eXBlZFZhbHVlKSB7XG4gIGxldCBhY3R1YWxWYWx1ZSA9IHR5cGVkVmFsdWU7XG4gIGlmIChcbiAgICBhY3R1YWxWYWx1ZS5sZW5ndGggPT09IDMgJiZcbiAgICBhY3R1YWxWYWx1ZS5zcGxpdCgnJykuZXZlcnkobiA9PiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcihuKSkpXG4gICkge1xuICAgIC8vIGFkZCAnOicgaWYgdXNlciB0eXBlcyB0aHJlZSBudW1iZXJzIGluIGEgcm93XG4gICAgaWYgKE51bWJlcihhY3R1YWxWYWx1ZS5zbGljZSgwLCAyKSkgPD0gMjMpIHtcbiAgICAgIGFjdHVhbFZhbHVlID0gYCR7YWN0dWFsVmFsdWUuc2xpY2UoMCwgMil9OiR7YWN0dWFsVmFsdWVbMl19YDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0dWFsVmFsdWUgPSBgJHthY3R1YWxWYWx1ZVswXX06JHthY3R1YWxWYWx1ZS5zbGljZSgxKX1gO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWN0dWFsVmFsdWU7XG59XG5cbmNvbnN0IHZhbGlkYXRlQ2xvY2sgPSAoaG91cnMsIG1pbnV0ZXMpID0+IHtcbiAgY29uc3QgaG91cnNWYWxpZCA9ICFOdW1iZXIuaXNOYU4oaG91cnMpICYmIGhvdXJzID49IDAgJiYgaG91cnMgPD0gMjM7XG4gIGNvbnN0IG1pbnV0ZXNMZW4gPSBtaW51dGVzLmxlbmd0aDtcbiAgY29uc3QgbWludXRlc1ZhbGlkID1cbiAgICBtaW51dGVzTGVuID09PSAyXG4gICAgICA/ICFOdW1iZXIuaXNOYU4obWludXRlcykgJiYgTnVtYmVyKG1pbnV0ZXMpID49IDAgJiYgTnVtYmVyKG1pbnV0ZXMgPD0gNTkpXG4gICAgICA6ICFOdW1iZXIuaXNOYU4obWludXRlcykgJiYgTnVtYmVyKG1pbnV0ZXMpID49IDAgJiYgTnVtYmVyKG1pbnV0ZXMgPD0gNSk7XG4gIHJldHVybiBob3Vyc1ZhbGlkICYmIG1pbnV0ZXNWYWxpZDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0KGlucHV0VmFsdWUpIHtcbiAgaWYgKGlucHV0VmFsdWUubGVuZ3RoIDw9IDIpIHtcbiAgICAvLyBUb28gbWFueSBvcHRpb25zLCBkb24ndCAgdmFsaWRhdGVcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGlucHV0VmFsdWUubGVuZ3RoID09PSAzKSB7XG4gICAgbGV0IGhvdXJzO1xuICAgIGxldCBtaW51dGVzO1xuICAgIGlmIChpbnB1dFZhbHVlLmluY2x1ZGVzKCc6JykpIHtcbiAgICAgIFtob3VycywgbWludXRlc10gPSBpbnB1dFZhbHVlLnNwbGl0KCc6Jyk7XG4gICAgfSBlbHNlIGlmIChpbnB1dFZhbHVlLnN0YXJ0c1dpdGgoJzAnKSkge1xuICAgICAgaG91cnMgPSBpbnB1dFZhbHVlLnN1YnN0cmluZygwLCBpbnB1dFZhbHVlLmxlbmd0aCAtIDEpO1xuICAgICAgbWludXRlcyA9IGlucHV0VmFsdWUuc3Vic3RyaW5nKGlucHV0VmFsdWUubGVuZ3RoIC0gMSB8fCAwKTtcbiAgICAgIGlmIChOdW1iZXIobWludXRlcykgPiA1KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIGlzIGhvdyBiYXNpY2FsbHkgbW9tZW50IGhhbmRsZXMgc3RyaW5nIGZvcm1hdHRpbmcuXG4gICAgICAvLyBJZiB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBzdHJpbmcgaXMgMSwgdGhlbiByZXN0IGFyZSBtaW51dGVzLlxuICAgICAgLy8gaWYgdGhlIGZpcnN0IGxldHRlciBpcyAyLCB0aGVuIGlmIHNlY29uZCBsZXR0ZXIgaXMgMCwxLDIgb3IgMywgdGhlbiBzZWNvbmQgbGV0dGVyIGlzIGhvdXIsIGVsc2UgcmVzdCBhcmUgbWludXRlc1xuICAgICAgLy8gZWxzZSwgZmlyc3QgbGV0dGVyIGlzIGhvdXIsIHJlc3Qgb2YgdGhlbSBhcmUgbWludXRlcy5cbiAgICAgIGNvbnN0IHZhbHVlcyA9IGlucHV0VmFsdWUuc3BsaXQoJycpO1xuICAgICAgaWYgKE51bWJlcih2YWx1ZXNbMF0pID09PSAxKSB7XG4gICAgICAgIFtob3VycywgbWludXRlc10gPSBbdmFsdWVzWzBdLmNvbmNhdCh2YWx1ZXNbMV0pLCB2YWx1ZXNbMl1dO1xuICAgICAgfSBlbHNlIGlmIChOdW1iZXIodmFsdWVzWzBdKSA9PT0gMikge1xuICAgICAgICBpZiAoTnVtYmVyKHZhbHVlc1sxXSA8PSAzKSkge1xuICAgICAgICAgIFtob3VycywgbWludXRlc10gPSBbdmFsdWVzWzBdLmNvbmNhdCh2YWx1ZXNbMV0pLCB2YWx1ZXNbMl1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFtob3VycywgbWludXRlc10gPSBbdmFsdWVzWzBdLCB2YWx1ZXNbMV0uY29uY2F0KHZhbHVlc1syXSldO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbaG91cnMsIG1pbnV0ZXNdID0gW3ZhbHVlc1swXSwgdmFsdWVzWzFdLmNvbmNhdCh2YWx1ZXNbMl0pXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhdmFsaWRhdGVDbG9jayhob3VycywgbWludXRlcyk7XG4gICAgfVxuICAgIHJldHVybiAhdmFsaWRhdGVDbG9jayhob3VycywgbWludXRlcyk7XG4gIH1cbiAgaWYgKGlucHV0VmFsdWUubGVuZ3RoID09PSA1IHx8IGlucHV0VmFsdWUubGVuZ3RoID09PSA0KSB7XG4gICAgY29uc3QgdmFsdWVzID0gaW5wdXRWYWx1ZS5zcGxpdCgnOicpO1xuICAgIGNvbnN0IGhvdXJzID0gdmFsdWVzWzBdO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSB2YWx1ZXNbMV07XG4gICAgaWYgKFxuICAgICAgaW5wdXRWYWx1ZS5zdGFydHNXaXRoKCcwJykgJiZcbiAgICAgIG1pbnV0ZXMubGVuZ3RoID09PSAxICYmXG4gICAgICBOdW1iZXIobWludXRlcykgPiA1XG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXZhbGlkYXRlQ2xvY2soaG91cnMsIG1pbnV0ZXMpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFRzID0gKGlucHV0VmFsdWUsIGN1cnJlbnRUaW1lc3RhbXApID0+IHtcbiAgY29uc3QgdHJpbW1lZCA9IGlucHV0VmFsdWUudHJpbSgpO1xuICBpZiAodHJpbW1lZC5tYXRjaCgvXlswLTldezEsMn0oXFwufDopWzAtOV17Mn0kLykgIT09IG51bGwpIHtcbiAgICBjb25zdCBzcGxpdHRlciA9IHRyaW1tZWQuaW5jbHVkZXMoJy4nKSA/ICcuJyA6ICc6JztcbiAgICBjb25zdCB2YWx1ZXMgPSB0cmltbWVkLnNwbGl0KHNwbGl0dGVyKTtcbiAgICBjb25zdCBob3VycyA9IE51bWJlcih2YWx1ZXNbMF0pO1xuICAgIGNvbnN0IGhvdXJzVmFsaWQgPSAhTnVtYmVyLmlzTmFOKGhvdXJzKSAmJiBob3VycyA+PSAwICYmIGhvdXJzIDw9IDIzO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBOdW1iZXIodmFsdWVzWzFdKTtcbiAgICBjb25zdCBtaW51dGVzVmFsaWQgPVxuICAgICAgIU51bWJlci5pc05hTihtaW51dGVzKSAmJiBtaW51dGVzID49IDAgJiYgbWludXRlcyA8PSA1OTtcbiAgICBpZiAoIW1pbnV0ZXNWYWxpZCB8fCAhaG91cnNWYWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IG5ld1N0YW1wID0gbW9tZW50KGN1cnJlbnRUaW1lc3RhbXApXG4gICAgICAuaG91cnMoaG91cnMpXG4gICAgICAubWludXRlcyhtaW51dGVzKVxuICAgICAgLnZhbHVlT2YoKTtcbiAgICByZXR1cm4gbmV3U3RhbXA7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7IHBhcnNlVHlwZWRUaW1lLCB2YWxpZGF0ZUlucHV0LCBnZXRUcyB9O1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IFNlbGVjdCBmcm9tICdyZWFjdC1zZWxlY3QnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBwYXJzZVR5cGVkVGltZSwgdmFsaWRhdGVJbnB1dCwgZ2V0VHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc2Nzcyc7XG5cbi8qKlxuICogQ29tcG9uZW50IHRvIGRpc3BsYXkgYSBkYXRlIG9yIHRpbWUgaW5wdXQgb24gZGVza3RvcC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcm9wcy52YWx1ZSAgICBDdXJyZW50bHkgc2VsZWN0ZWQgdGltZS4gVW5peCB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkNoYW5nZSAgICAgVGhpcyBpcyBjYWxsZWQgd2l0aCBuZXcgdGltZXN0YW1wIHdoZW4gaW5wdXQgaXMgY2hhbmdlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMuZ2V0RGlzcGxheSAgIEZ1bmN0aW9uIHRvIGdldCBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBmcm9tIGEgdGltZXN0YW1wXG4gKiBAcGFyYW0ge2FycmF5fSAgICBwcm9wcy50aW1lQ2hvaWNlcyAgQXJyYXkgb2YgdGltZXN0YW1wcyB0byBjaG9vc2UgZnJvbVxuICogQHBhcmFtIHtzdHJpbmd9IGlkICAgICAgICAgICAgICAgICAgIElkIHByZWZpeCBmb3IgbGFiZWxzIGFuZCBhcmlhIGF0dHJpYnV0ZXMuIFNob3VsZCBiZSB1bmlxdWUgaW4gcGFnZVxuICogQHBhcmFtIHtzdHJpbmd9IGxhYmVsICAgICAgICAgICAgICAgIFRleHQgdG8gc2hvdyBhcyBpbnB1dCBsYWJlbFxuICogQHBhcmFtIHtub2RlfSBpY29uICAgICAgICAgICAgICAgICAgIEpTWCBmb3IgaWNvbiB0byBzaG93IGluIGlucHV0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGRpc2FibGVUeXBpbmcgICAgICAgU2V0IHRvIHRydWUgdG8gZGlzYWJsZSB0eXBpbmcgaW4gdGhlIGlucHV0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGRhdGVQaWNrZXIgICAgICAgICAgSXMgdGhlIHBpY2tlciBEYXRlUGlja2VyIG9yIFRpbWVQaWNrZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogPERlc2t0b3BEYXRldGltZXBpY2tlclxuICogICB2YWx1ZT17MTU5MDEzMzgyMzAwMH1cbiAqICAgb25DaGFuZ2U9e3RpbWVzdGFtcCA9PiB1cGRhdGUodGltZXN0YW1wKX1cbiAqICAgZ2V0RGlzcGxheT17dGltZXN0YW1wID0+IGZvcm1hdFRpbWUodGltZXN0YW1wKX1cbiAqICAgdGltZUNob2ljZXM9e1sxNTkwMTMzODIzMDAwXX1cbiAqICAgaWQ9XCJ0aW1laW5wdXRcIlxuICogICBpY29uPVwiPEljb24gLz5cIlxuICogICBkaXNhYmxlVHlwaW5nPXtmYWxzZX0gLy8gY2FuIGJlIG9taXR0ZWQgaWYgbm90IHRydWVcbiAqICAgZGF0ZVBpY2tlcj17dHJ1ZX0gLy8gY2FuIGJlIG9taXR0ZWQgaWYgbm90IHRydWVcbiAqL1xuZnVuY3Rpb24gRGVza3RvcERhdGV0aW1lcGlja2VyKHtcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBnZXREaXNwbGF5LFxuICB0aW1lQ2hvaWNlcyxcbiAgaWQsXG4gIGxhYmVsLFxuICBpY29uLFxuICBkaXNhYmxlVHlwaW5nLFxuICB0aW1lWm9uZSxcbiAgZGF0ZVBpY2tlcixcbiAgdHJhbnNsYXRpb25TZXR0aW5ncyxcbn0pIHtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBbZGlzcGxheVZhbHVlLCBjaGFuZ2VEaXNwbGF5VmFsdWVdID0gdXNlU3RhdGUoZ2V0RGlzcGxheSh2YWx1ZSkpO1xuICBjb25zdCBbdHlwaW5nLCBzZXRUeXBpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0FsbE9wdGlvbnMsIHNldFNob3dBbGxPcHRpb25zXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbaW52YWxpZElucHV0LCBzZXRpbnZhbGlkSW5wdXRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gICAgaWYgKCFkYXRlUGlja2VyKSB7XG4gICAgICBzZXRpbnZhbGlkSW5wdXQoZmFsc2UpO1xuICAgIH1cbiAgfSwgW3ZhbHVlXSk7XG5cbiAgLy8gbmV3VmFsdWUgaXMgc3RyaW5nXG4gIGNvbnN0IGhhbmRsZVRpbWVzdGFtcCA9IG5ld1ZhbHVlID0+IHtcbiAgICBjb25zdCBhc051bWJlciA9IE51bWJlcihuZXdWYWx1ZSk7XG4gICAgaWYgKFxuICAgICAgTnVtYmVyLmlzTmFOKGFzTnVtYmVyKSB8fFxuICAgICAgIW1vbWVudChhc051bWJlcikuaXNWYWxpZCgpIHx8XG4gICAgICBtb21lbnQoYXNOdW1iZXIpLnZhbHVlT2YoKSAhPT0gYXNOdW1iZXJcbiAgICApIHtcbiAgICAgIC8vIFRPRE8gaGFuZGxlIGVycm9yP1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBvbkNoYW5nZShhc051bWJlcik7XG4gIH07XG4gIGZ1bmN0aW9uIGlzaW52YWxpZElucHV0KHN0cikge1xuICAgIGNvbnN0IHJlZ2V4ID0gL1thLXpBLVrCp8OEw6TDlsO2Li1cXHNdL2c7XG4gICAgaWYgKHN0ci5sZW5ndGggPCBkaXNwbGF5VmFsdWU/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0ZUlucHV0KHN0cik7XG4gICAgICBzZXRpbnZhbGlkSW5wdXQodmFsaWQpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHJlZ2V4LnRlc3Qoc3RyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB0aW1lID0gc3RyLmxlbmd0aCA+IDUgPyBzdHIuc2xpY2UoMCwgLTEpIDogc3RyO1xuICAgIGNvbnN0IHZhbGlkID0gdmFsaWRhdGVJbnB1dCh0aW1lKTtcbiAgICBzZXRpbnZhbGlkSW5wdXQodmFsaWQpO1xuICAgIHJldHVybiBzdHIubGVuZ3RoIDw9IDU7XG4gIH1cbiAgY29uc3Qgb25JbnB1dENoYW5nZSA9IChuZXdWYWx1ZSwgeyBhY3Rpb24gfSkgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09ICdtZW51LWNsb3NlJykge1xuICAgICAgc2V0U2hvd0FsbE9wdGlvbnModHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChzaG93QWxsT3B0aW9ucykge1xuICAgICAgc2V0U2hvd0FsbE9wdGlvbnMoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoZGlzYWJsZVR5cGluZyB8fCAobmV3VmFsdWUgJiYgIWlzaW52YWxpZElucHV0KG5ld1ZhbHVlKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2lucHV0LWNoYW5nZScpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlZCA9IHBhcnNlVHlwZWRUaW1lKG5ld1ZhbHVlKTtcbiAgICAgIGNoYW5nZURpc3BsYXlWYWx1ZSh2YWxpZGF0ZWQpO1xuICAgICAgc2V0VHlwaW5nKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb3B0aW9ucyA9IHRpbWVDaG9pY2VzLm1hcCh0ID0+IHtcbiAgICByZXR1cm4geyB2YWx1ZTogdC50b1N0cmluZygpLCBsYWJlbDogZ2V0RGlzcGxheSh0KSB9O1xuICB9KTtcblxuICAvLyBUaW1lIHBpY2tlciBoYXMgYSBsaXN0IG9mIG1pbnV0ZXMsIGluc3RlYWQgb2YgMTUgbWludXRlcy4gV2UgbmVlZCB0byBmaWx0ZXIgdGhvc2Ugb3V0XG4gIC8vIHNvIGNsb3Nlc3Qgb3B0aW9uIHdpbGwgc2hvdyB1cCBpbiB0aGUgbGlzdC5cbiAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSBkYXRlUGlja2VyXG4gICAgPyBvcHRpb25zXG4gICAgOiBvcHRpb25zLmZpbHRlcihvID0+IG8ubGFiZWwuc3BsaXQoJzonKVsxXSAlIDE1ID09PSAwKTtcbiAgY29uc3QgY2xvc2VzdE9wdGlvbiA9XG4gICAgY2xvc2VzdE9wdGlvbnMubGVuZ3RoID4gMFxuICAgICAgPyBjbG9zZXN0T3B0aW9ucz8ucmVkdWNlKChhLCBiKSA9PlxuICAgICAgICAgIE1hdGguYWJzKHZhbHVlIC0gYS52YWx1ZSkgPCBNYXRoLmFicyh2YWx1ZSAtIGIudmFsdWUpID8gYSA6IGIsXG4gICAgICAgIClcbiAgICAgIDogdW5kZWZpbmVkO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IGZpbHRlck9wdGlvbnMgPSAob3B0aW9uLCBpbnB1dCkgPT4ge1xuICAgIGNvbnN0IGhvdXIgPSBpbnB1dC5sZW5ndGggPD0gMiA/IGlucHV0IDogaW5wdXQuc3BsaXQoJzonKVswXTtcbiAgICBjb25zdCBpc1ZhbGlkSG91ciA9IC9eKFswLTFdP1swLTldfDJbMC0zXSkkLy50ZXN0KGhvdXIpO1xuICAgIGNvbnN0IGNvbXAgPSBob3VyLmxlbmd0aCA9PT0gMSA/ICcwJy5jb25jYXQoaW5wdXQpIDogaW5wdXQ7XG4gICAgcmV0dXJuIGlzVmFsaWRIb3VyXG4gICAgICA/IG9wdGlvbi5sYWJlbC5zcGxpdCgnOicpWzBdID09PSBjb21wLnNwbGl0KCc6JylbMF1cbiAgICAgIDogdHJ1ZTtcbiAgfTtcbiAgY29uc3QgYXJpYUVycm9yID0gaTE4bmV4dC50KCdpbnZhbGlkLWlucHV0JywgdHJhbnNsYXRpb25TZXR0aW5ncyk7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgIHtsYWJlbH0ge2Rpc3BsYXlWYWx1ZX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtpY29ufVxuICAgICAgPFNlbGVjdFxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2xhYmVsSWR9XG4gICAgICAgIGFyaWFMaXZlTWVzc2FnZXM9e3tcbiAgICAgICAgICBndWlkYW5jZTogY29udGV4dCA9PiB7XG4gICAgICAgICAgICAvLyBXaGVuIHVzZXIgdHlwZXMgaW52YWxpZCB2YWx1ZSwgaXNEaXNhYmxlZCBiZWNvbWVzIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIGZhbHNlXG4gICAgICAgICAgICBpZiAoY29udGV4dC5pc0Rpc2FibGVkID09PSB1bmRlZmluZWQgJiYgaW52YWxpZElucHV0KSB7XG4gICAgICAgICAgICAgIHJldHVybiBhcmlhRXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJy4nOyAvLyB0aGlzIGNhbid0IGJlIGVtcHR5IGZvciBzb21lIHJlYXNvblxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25DaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRmlsdGVyOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkZvY3VzOiAoeyBjb250ZXh0LCBsYWJlbDogaXRlbUxhYmVsIH0pID0+IHtcbiAgICAgICAgICAgIGlmIChjb250ZXh0ID09PSAnbWVudScpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1MYWJlbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICB9LFxuICAgICAgICB9fVxuICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICBpbnB1dElkPXtpbnB1dElkfVxuICAgICAgICBvbkNoYW5nZT17dGltZSA9PiB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdCgnSEg6bW0nKTtcbiAgICAgICAgICBjb25zdCB0cyA9IGdldFRzKGRpc3BsYXlWYWx1ZSwgdmFsdWUpO1xuICAgICAgICAgIGlmICh0eXBpbmcpIHtcbiAgICAgICAgICAgIGlmICh0cyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBpZiAoY3VycmVudFRpbWUgIT09IGRpc3BsYXlWYWx1ZSAmJiB0aW1lLnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZVRpbWVzdGFtcCh0cyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVGltZXN0YW1wKHRpbWUudmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAodGltZS52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodGltZS52YWx1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gcmVzZXQgdmFsdWVcbiAgICAgICAgICAgICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUoZ2V0RGlzcGxheSh2YWx1ZSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWRhdGVQaWNrZXIpIHtcbiAgICAgICAgICAgICAgc2V0aW52YWxpZElucHV0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFkYXRlUGlja2VyKSB7XG4gICAgICAgICAgICBzZXRpbnZhbGlkSW5wdXQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodGltZS52YWx1ZSk7XG4gICAgICAgIH19XG4gICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICBJbmRpY2F0b3JzQ29udGFpbmVyOiAoKSA9PiBudWxsLFxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICAgIHN0eWxlc1snZGF0ZXRpbWVwaWNrZXItc2VsZWN0LWNvbnRhaW5lciddLFxuICAgICAgICAgIGludmFsaWRJbnB1dCA/ICdkYXRldGltZXBpY2tlci1pbnZhbGlkLWlucHV0JyA6ICcnLFxuICAgICAgICApfVxuICAgICAgICBjbGFzc05hbWVQcmVmaXg9XCJkYXRldGltZXBpY2tlci1zZWxlY3RcIlxuICAgICAgICBvbklucHV0Q2hhbmdlPXtvbklucHV0Q2hhbmdlfVxuICAgICAgICBpbnB1dFZhbHVlPXshZGlzYWJsZVR5cGluZyAmJiBkaXNwbGF5VmFsdWV9XG4gICAgICAgIHZhbHVlPXtjbG9zZXN0T3B0aW9ufVxuICAgICAgICBub09wdGlvbnNNZXNzYWdlPXsoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9fVxuICAgICAgICBmaWx0ZXJPcHRpb249eyhvcHRpb24sIGlucHV0KSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGVQaWNrZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBjb21wbGV0ZUlucHV0ID1cbiAgICAgICAgICAgIGlucHV0Lmxlbmd0aCA9PT0gNSB8fFxuICAgICAgICAgICAgKGlucHV0Lmxlbmd0aCA9PT0gNCAmJiBpbnB1dC5zcGxpdCgnOicpWzBdLmxlbmd0aCA9PT0gMSk7XG4gICAgICAgICAgY29uc3QgaXNNb2QxNSA9IG9wdGlvbi5sYWJlbC5zcGxpdCgnOicpWzFdICUgMTUgPT09IDA7XG4gICAgICAgICAgY29uc3QgbWludXRlSW5wdXQgPSBpbnB1dC5zcGxpdCgnOicpWzFdPy5sZW5ndGggPT09IDE7XG5cbiAgICAgICAgICBpZiAoc2hvd0FsbE9wdGlvbnMgJiYgaXNNb2QxNSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtaW51dGVJbnB1dCkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRIID1cbiAgICAgICAgICAgICAgaW5wdXQuc3BsaXQoJzonKVswXS5sZW5ndGggPT09IDFcbiAgICAgICAgICAgICAgICA/ICcwJy5jb25jYXQoaW5wdXQuc3BsaXQoJzonKVswXSlcbiAgICAgICAgICAgICAgICA6IGlucHV0LnNwbGl0KCc6JylbMF07XG4gICAgICAgICAgICBjb25zdCBpbnB1dE0gPSBpbnB1dC5zcGxpdCgnOicpWzFdO1xuICAgICAgICAgICAgY29uc3Qgb3B0SCA9IG9wdGlvbi5sYWJlbC5zcGxpdCgnOicpWzBdO1xuICAgICAgICAgICAgY29uc3Qgb3B0TSA9IG9wdGlvbi5sYWJlbC5zcGxpdCgnOicpWzFdO1xuICAgICAgICAgICAgaWYgKGlucHV0SCA9PT0gb3B0SCkge1xuICAgICAgICAgICAgICBjb25zdCB0ID0gTnVtYmVyKGlucHV0TSkgKiAxMDtcbiAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSBOdW1iZXIob3B0TSkgLSB0O1xuICAgICAgICAgICAgICBpZiAodG90YWwgPj0gMCAmJiB0b3RhbCA8PSA5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY29tcGxldGVJbnB1dCAmJiAhc2hvd0FsbE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5sZW5ndGggPT09IDRcbiAgICAgICAgICAgICAgPyAnMCcuY29uY2F0KGlucHV0KSA9PT0gb3B0aW9uLmxhYmVsXG4gICAgICAgICAgICAgIDogaW5wdXQgPT09IG9wdGlvbi5sYWJlbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzTW9kMTUpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJPcHRpb25zKG9wdGlvbiwgaW5wdXQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfX1cbiAgICAgICAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlPXtkaXNhYmxlVHlwaW5nfVxuICAgICAgICB0YWJTZWxlY3RzVmFsdWU9e2ZhbHNlfVxuICAgICAgICBwbGFjZWhvbGRlcj1cIlwiXG4gICAgICAgIG9uRm9jdXM9e2UgPT4ge1xuICAgICAgICAgIGlmICghZGlzYWJsZVR5cGluZykge1xuICAgICAgICAgICAgZS50YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBvbkJsdXI9eygpID0+IHtcbiAgICAgICAgICAvLyByZW1vdmluZyBmb2N1cyBhbHNvIGxvY2tzIGluIHZhbHVlXG4gICAgICAgICAgaWYgKHR5cGluZykge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkID0gZ2V0VHMoZGlzcGxheVZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodmFsaWRhdGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVRpbWVzdGFtcCh2YWxpZGF0ZWQpO1xuICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgICAgICAgICAgICAgc2V0VHlwaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFkYXRlUGlja2VyKSB7XG4gICAgICAgICAgICBzZXRpbnZhbGlkSW5wdXQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgb25LZXlEb3duPXtlID0+IHtcbiAgICAgICAgICBpZiAoWydBcnJvd0Rvd24nLCAnQXJyb3dVcCddLmluY2x1ZGVzKGUua2V5KSkge1xuICAgICAgICAgICAgc2V0VHlwaW5nKGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGlzU2VhcmNoYWJsZT17IWRpc2FibGVUeXBpbmd9XG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG4gICk7XG59XG5EZXNrdG9wRGF0ZXRpbWVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZ2V0RGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdGltZUNob2ljZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5udW1iZXIpLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBkaXNhYmxlVHlwaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRhdGVQaWNrZXI6IFByb3BUeXBlcy5ib29sLFxuICB0cmFuc2xhdGlvblNldHRpbmdzOiBQcm9wVHlwZXMuc2hhcGUoeyBsbmc6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCB9KSxcbn07XG5cbkRlc2t0b3BEYXRldGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGRpc2FibGVUeXBpbmc6IGZhbHNlLFxuICB0aW1lWm9uZTogJ0V1cm9wZS9IZWxzaW5raScsXG4gIGRhdGVQaWNrZXI6IGZhbHNlLFxuICB0cmFuc2xhdGlvblNldHRpbmdzOiB7IGxuZzogJ2ZpJyB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGVza3RvcERhdGV0aW1lcGlja2VyO1xuIiwiZnVuY3Rpb24gc3R5bGVJbmplY3QoY3NzLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgaW5zZXJ0QXQgPSByZWYuaW5zZXJ0QXQ7XG5cbiAgaWYgKCFjc3MgfHwgdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgeyByZXR1cm47IH1cblxuICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG5cbiAgaWYgKGluc2VydEF0ID09PSAndG9wJykge1xuICAgIGlmIChoZWFkLmZpcnN0Q2hpbGQpIHtcbiAgICAgIGhlYWQuaW5zZXJ0QmVmb3JlKHN0eWxlLCBoZWFkLmZpcnN0Q2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBzdHlsZUluamVjdDtcbiIsImNvbnN0IHRyYW5zbGF0aW9ucyA9IHtcbiAgZGU6IHtcbiAgICB0b2RheTogJ0hldXRlJyxcbiAgICB0b21vcnJvdzogJ01vcmdlbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2UnOiAnU2NobGllw59lIGRpZSBBdXN3YWhsJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZWQnOiAnQXVzd2FobCBnZXNjaGxvc3NlbicsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICfDlmZmbmUgZGllIEF1c3dhaGwnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdBdXN3YWhsIGdlw7ZmZm5ldCcsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnRGF0dW0gdW5kIFVocnplaXRhdXN3YWhsJyxcbiAgICBhcnJpdmFsOiAnQW5rdW5mdCcsXG4gICAgZGF0ZTogJ0RhdHVtJyxcbiAgICBkZXBhcnR1cmU6ICdBYmZhaHJ0JyxcbiAgICAnZGVwYXJ0dXJlLW5vdyc6ICdBYmZhaHJ0IGpldHp0JyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnWmVpdCB3w6RobGVuJyxcbiAgICByZWFkeTogJ0ZlcnRpZycsXG4gICAgdGltZTogJ1plaXQnLFxuICAgIGNhbmNlbDogJ0FiYnJlY2hlbicsXG4gIH0sXG4gIGVuOiB7XG4gICAgdG9kYXk6ICdUb2RheScsXG4gICAgdG9tb3Jyb3c6ICdUb21vcnJvdycsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2UnOiAnQ2xvc2UgdGhlIHBpY2tlcicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ1RpbWVwaWNrZXIgY2xvc2VkJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuJzogJ09wZW4gdGhlIHBpY2tlcicsXG4gICAgJ2FjY2Vzc2libGUtb3BlbmVkJzogJ1RpbWVwaWNrZXIgb3BlbmVkJyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdEYXRlIGFuZCB0aW1lcGlja2VyJyxcbiAgICAnYWNjZXNzaWJsZS11cGRhdGUtaW5zdHJ1Y3Rpb25zJzpcbiAgICAgICdDaGFuZ2luZyB0aW1lIHBhcmFtZXRlcnMgd2lsbCB0cmlnZ2VyIGEgbmV3IHNlYXJjaC4nLFxuICAgIGFycml2YWw6ICdBcnJpdmFsJyxcbiAgICBkYXRlOiAnRGF0ZScsXG4gICAgZGVwYXJ0dXJlOiAnRGVwYXJ0dXJlJyxcbiAgICAnZGVwYXJ0dXJlLW5vdyc6ICdMZWF2aW5nIG5vdycsXG4gICAgdGltZTogJ1RpbWUnLFxuICAgICdjaG9vc2UtdGltZSc6ICdDaG9vc2UgdGltZScsXG4gICAgcmVhZHk6ICdSZWFkeScsXG4gICAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgICAnaW52YWxpZC1pbnB1dCc6ICdUaGUgdGltZSB5b3UgZW50ZXJlZCBpcyBpbnZhbGlkJyxcbiAgfSxcbiAgZmk6IHtcbiAgICB0b2RheTogJ1TDpG7DpMOkbicsXG4gICAgdG9tb3Jyb3c6ICdIdW9tZW5uYScsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2UnOiAnU3VsamUgdmFsaXRzaW4nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdWYWxpdHNpbiBzdWxqZXR0dScsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICdBdmFhIHZhbGl0c2luJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnVmFsaXRzaW4gYXZhdHR1JyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdBaWthLSBqYSBww6RpdsOkbcOkw6Ryw6R2YWxpdHNpbicsXG4gICAgJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucyc6XG4gICAgICAnQWlrYXZhbGludG9qZW4gbXV1dHRhbWluZW4gbGF1a2Fpc2VlIHV1ZGVuIGhhdW4uJyxcbiAgICBhcnJpdmFsOiAnUGVyaWxsw6QnLFxuICAgIGRhdGU6ICdQw6RpdsOkJyxcbiAgICBkZXBhcnR1cmU6ICdMw6RodMO2YWlrYScsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnTMOkaHTDtiBueXQnLFxuICAgIHRpbWU6ICdBaWthJyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnVmFsaXRzZSBhaWthJyxcbiAgICByZWFkeTogJ1ZhbG1pcycsXG4gICAgY2FuY2VsOiAnUGVydXV0YScsXG4gICAgJ2ludmFsaWQtaW5wdXQnOiAnU3nDtnR0w6Rtw6RzaSBhaWthIG9uIHZpcmhlZWxsaW5lbicsXG4gIH0sXG4gIHN2OiB7XG4gICAgdG9kYXk6ICdJIGRhZycsXG4gICAgdG9tb3Jyb3c6ICdJIG1vcmdvbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2UnOiAnU3TDpG5nIHbDpGxqYXJlbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ1bDpGxqYXJlbiBzdMOkbmdkZScsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICfDlnBwbmEgdsOkbGphcmVuJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnVsOkbGphcmVuIMO2cHBuYWRlJyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdUaWQtIG9jaCBkYXR1bXbDpGxqYXJlbicsXG4gICAgJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucyc6XG4gICAgICAnT20gZHUgw6RuZHJhciB0aWRlcm5hLCBzdGFydGFzIGVuIG55IHPDtmtuaW5nIGF1dG9tYXRpc2t0LicsXG4gICAgYXJyaXZhbDogJ0FubMOkbmRlcicsXG4gICAgZGF0ZTogJ0RhdHVtJyxcbiAgICBkZXBhcnR1cmU6ICdBdmfDpW5nc3RpZCcsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnQXZnw6VyIG51JyxcbiAgICB0aW1lOiAnVGlkJyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnVsOkbGogdGlkJyxcbiAgICByZWFkeTogJ0bDpHJkaWcnLFxuICAgIGNhbmNlbDogJ0F2YnJ5dCcsXG4gICAgJ2ludmFsaWQtaW5wdXQnOiAnVGlkZW4gZHUgYW5nYXYgw6RyIGZlbGFrdGlnJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRyYW5zbGF0aW9ucztcbiIsIi8qKlxuICogIERldGVjdCBpZiB1c2VyIGlzIG9uIGEgbW9iaWxlIGRldmljZSBieSBwYXJzaW5nIHVzZXJBZ2VudC4gVGhpcyBpcyBub3QgMTAwJSByZWxpYWJsZSBidXQgY2xvc2UgZW5vdWdoLlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTW9iaWxlKCkge1xuICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgd2luZG93Lm9wZXJhO1xuICBjb25zdCBtb2JpbGUgPVxuICAgIC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm8vaS50ZXN0KFxuICAgICAgdXNlckFnZW50LFxuICAgICk7XG4gIHJldHVybiBtb2JpbGU7XG59XG5cbi8qKlxuICogRGV0ZWN0IGlmIHVzZXIgaXMgb24gYW4gYW5kcm9pZCBkZXZpY2UuIE5vdCAxMDAlIHJlbGlhYmxlLlxuICovXG5mdW5jdGlvbiBpc0FuZHJvaWQoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHVzZXJBZ2VudC5pbmRleE9mKCdhbmRyb2lkJykgPiAtMTtcbn1cblxuZXhwb3J0IHsgaXNNb2JpbGUsIGlzQW5kcm9pZCB9O1xuIiwiaW1wb3J0IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICB2YXIga2V5LCBpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuICBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59IiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgQXV0b3N1Z2dlc3QgZnJvbSAncmVhY3QtYXV0b3N1Z2dlc3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB7IGlzQW5kcm9pZCB9IGZyb20gJy4vbW9iaWxlRGV0ZWN0aW9uJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIGRhdGUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZURhdGVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGl0ZW1Db3VudCxcbiAgc3RhcnRUaW1lLFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG4gIHRpbWVab25lLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG5cbiAgY29uc3QgW29wZW4sIGNoYW5nZU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzY3JvbGxSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGRhdGVDaG9pY2VzID0gQXJyYXkoaXRlbUNvdW50KVxuICAgIC5maWxsKClcbiAgICAubWFwKChfLCBpKSA9PiBtb21lbnQoc3RhcnRUaW1lKS5hZGQoaSwgJ2RheScpLnZhbHVlT2YoKSk7XG4gIGNvbnN0IG1pbnV0ZSA9IDEwMDAgKiA2MDtcbiAgY29uc3QgZGlmZnMgPSBkYXRlQ2hvaWNlcy5tYXAodCA9PiB2YWx1ZSAtIHQpO1xuICBjb25zdCBzY3JvbGxJbmRleCA9IGRpZmZzLmZpbmRJbmRleCh0ID0+IHQgPCBtaW51dGUpOyAvLyB3aGVuIHRpbWUgaXMgbm93LCB0aGUgdGltZXMgbWlnaHQgZGlmZmVyIGJ5IGxlc3MgdGhhbiBvbmUgbWludXRlXG4gIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSA1MDtcbiAgLy8gc2Nyb2xsIHRvIHNlbGVjdGVkIHRpbWUgd2hlbiBkcm9wZG93biBpcyBvcGVuZWRcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlbiAmJiBzY3JvbGxSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gZWxlbWVudEhlaWdodCAqIHNjcm9sbEluZGV4O1xuICAgIH1cbiAgfSwgW3ZhbHVlLCBvcGVuXSk7XG4gIGNvbnN0IG5hdGl2ZUlucHV0ID0gIWlzQW5kcm9pZCgpO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtuYXRpdmVJbnB1dCA/IChcbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydtb2JpbGUtaW5wdXQtZGlzcGxheSddfVxuICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IG9uQ2hhbmdlKE51bWJlcihlLnRhcmdldC52YWx1ZSkpfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgPlxuICAgICAgICAgIHtkYXRlQ2hvaWNlcy5tYXAoZGF0ZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8b3B0aW9uIGtleT17ZGF0ZX0gdmFsdWU9e2RhdGV9PlxuICAgICAgICAgICAgICAgIHtnZXREaXNwbGF5KGRhdGUpfVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgKSA6IChcbiAgICAgICAgPEF1dG9zdWdnZXN0XG4gICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgIHN1Z2dlc3Rpb25zPXtkYXRlQ2hvaWNlc31cbiAgICAgICAgICBnZXRTdWdnZXN0aW9uVmFsdWU9e3MgPT4gcy50b1N0cmluZygpfVxuICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb249e3MgPT4gZ2V0RGlzcGxheShzKX1cbiAgICAgICAgICBvblN1Z2dlc3Rpb25zRmV0Y2hSZXF1ZXN0ZWQ9eygpID0+IG51bGx9XG4gICAgICAgICAgc2hvdWxkUmVuZGVyU3VnZ2VzdGlvbnM9eygpID0+IHRydWV9XG4gICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgdmFsdWU6IGdldERpc3BsYXkodmFsdWUpLFxuICAgICAgICAgICAgb25DaGFuZ2U6IChfLCB7IG5ld1ZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UoTnVtYmVyKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Gb2N1czogKCkgPT4ge1xuICAgICAgICAgICAgICBjaGFuZ2VPcGVuKHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogbGFiZWxJZCxcbiAgICAgICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJyxcbiAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrPXtmYWxzZX1cbiAgICAgICAgICBvblN1Z2dlc3Rpb25zQ2xlYXJSZXF1ZXN0ZWQ9eygpID0+IG51bGx9XG4gICAgICAgICAgcmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXI9eyh7IGNvbnRhaW5lclByb3BzLCBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICAvLyBzZXQgcmVmcyBmb3IgYXV0b3N1Z2dlc3QgbGlicmFyeSBhbmQgc2Nyb2xsYmFyIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICBjb25zdCB7IHJlZiwgLi4ub3RoZXJSZWZzIH0gPSBjb250YWluZXJQcm9wcztcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IGVsZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgIHNjcm9sbFJlZi5jdXJyZW50ID0gZWxlbTtcbiAgICAgICAgICAgICAgICByZWYoZWxlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZGl2IHRhYkluZGV4PVwiLTFcIiB7Li4ub3RoZXJSZWZzfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICB0aGVtZT17c3R5bGVzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2xhYmVsPlxuICApO1xufVxuTW9iaWxlRGF0ZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpdGVtQ291bnQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgc3RhcnRUaW1lOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGljb246IFByb3BUeXBlcy5ub2RlLFxuICBkYXRlVGltZUNvbWJpbmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5Nb2JpbGVEYXRlcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgaWNvbjogbnVsbCxcbiAgZGF0ZVRpbWVDb21iaW5lZDogZmFsc2UsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZURhdGVwaWNrZXI7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc2Nzcyc7XG5pbXBvcnQgeyBwYXJzZVR5cGVkVGltZSwgZ2V0VHMsIHZhbGlkYXRlSW5wdXQgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIHRpbWUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZVRpbWVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbiAgdGltZVpvbmUsXG59KSB7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBjaGFuZ2VJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgY29uc3QgW2ludmFsaWRJbnB1dCwgc2V0aW52YWxpZElucHV0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IHRpbWVJbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGltZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHRpbWVJbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbXSk7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBpZD17aW5wdXRJZH1cbiAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgbWF4TGVuZ3RoPVwiNlwiXG4gICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgc3R5bGVzWyd0aW1lLWlucHV0LW1vYmlsZSddLFxuICAgICAgICAgIGludmFsaWRJbnB1dCA/ICdtb2JpbGUtZGF0ZXRpbWVwaWNrZXItaW52YWxpZC1pbnB1dCcgOiAnJyxcbiAgICAgICAgKX1cbiAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIG9uRm9jdXM9e2UgPT4ge1xuICAgICAgICAgIGUudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKDAsIDApOyAvLyBzZXQgY2FyZXQgdG8gc3RhcnQgb2YgaW5wdXRcbiAgICAgICAgfX1cbiAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHtcbiAgICAgICAgICBsZXQgbmV3VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0ZUlucHV0KG5ld1ZhbHVlKTtcbiAgICAgICAgICBzZXRpbnZhbGlkSW5wdXQodmFsaWQpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIC8vIG51bWJlciB0eXBlZCBhcyBmaXJzdCBjaGFyID0+IGNsZWFyIHJlc3Qgb2YgdGhlIGlucHV0XG4gICAgICAgICAgICBuZXdWYWx1ZS5tYXRjaCgvWzAtOV17M306WzAtOV17Mn0vKSAmJlxuICAgICAgICAgICAgbmV3VmFsdWUuc2xpY2UoMSkgPT09IGlucHV0VmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUuY2hhckF0KDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmV3VmFsdWUubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhY3R1YWwgPSBwYXJzZVR5cGVkVGltZShuZXdWYWx1ZSk7XG4gICAgICAgICAgY2hhbmdlSW5wdXRWYWx1ZShhY3R1YWwpO1xuICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IGdldFRzKGFjdHVhbCwgdmFsdWUpO1xuICAgICAgICAgIGlmICh0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKHRpbWVzdGFtcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICByZWY9e3RpbWVJbnB1dFJlZn1cbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cbiAgKTtcbn1cbk1vYmlsZVRpbWVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTW9iaWxlVGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGljb246IG51bGwsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZVRpbWVwaWNrZXI7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2ZpJztcbmltcG9ydCB1bmlxdWVJZCBmcm9tICdsb2Rhc2gvdW5pcXVlSWQnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgTW9kYWwgZnJvbSAncmVhY3QtbW9kYWwnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgTW9iaWxlRGF0ZXBpY2tlciBmcm9tICcuL01vYmlsZURhdGVwaWNrZXInO1xuaW1wb3J0IE1vYmlsZVRpbWVwaWNrZXIgZnJvbSAnLi9Nb2JpbGVUaW1lcGlja2VyJztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcblxubW9tZW50LmxvY2FsZSgnZW4nKTtcbmkxOG5leHQuaW5pdCh7IGxuZzogJ2VuJywgcmVzb3VyY2VzOiB7fSB9KTtcbk9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5nID0+XG4gIGkxOG5leHQuYWRkUmVzb3VyY2VCdW5kbGUobGFuZywgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKSxcbik7XG5cbi8qKlxuICogVE9ET1xuICovXG5mdW5jdGlvbiBNb2JpbGVQaWNrZXJNb2RhbCh7XG4gIGRlcGFydHVyZU9yQXJyaXZhbCxcbiAgb25Ob3dDbGljayxcbiAgbGFuZyxcbiAgY29sb3IsXG4gIHRpbWVab25lLFxuICBvblN1Ym1pdCxcbiAgb25DYW5jZWwsXG4gIHRpbWVzdGFtcCxcbiAgZ2V0VGltZURpc3BsYXksXG4gIGRhdGVTZWxlY3RJdGVtQ291bnQsXG4gIGdldERhdGVEaXNwbGF5LFxuICBmb250V2VpZ2h0cyxcbn0pIHtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCB0cmFuc2xhdGlvblNldHRpbmdzID0geyBsbmc6IGxhbmcgfTtcblxuICBjb25zdCBbZGlzcGxheVRpbWVzdGFtcCwgY2hhbmdlVGltZXN0YW1wXSA9IHVzZVN0YXRlKHRpbWVzdGFtcCk7XG5cbiAgY29uc3QgW2RlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQsIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbF0gPVxuICAgIHVzZVN0YXRlKGRlcGFydHVyZU9yQXJyaXZhbCk7XG5cbiAgZnVuY3Rpb24gb25BcnJpdmFsQ2xpY2soKSB7XG4gICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdhcnJpdmFsJyk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkRlcGFydHVyZUNsaWNrKCkge1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gIH1cblxuICAvLyBmb3IgaW5wdXQgbGFiZWxzXG4gIGNvbnN0IFtodG1sSWRdID0gdXNlU3RhdGUodW5pcXVlSWQoJ2RhdGV0aW1lcGlja2VyLScpKTtcbiAgY29uc3QgZGF0ZVNlbGVjdFN0YXJ0VGltZSA9IG1vbWVudCgpXG4gICAgLnN0YXJ0T2YoJ2RheScpXG4gICAgLmhvdXIobW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLmhvdXIoKSlcbiAgICAubWludXRlKG1vbWVudChkaXNwbGF5VGltZXN0YW1wKS5taW51dGUoKSlcbiAgICAudmFsdWVPZigpO1xuXG4gIHJldHVybiAoXG4gICAgPE1vZGFsXG4gICAgICBhcHBFbGVtZW50PXtkb2N1bWVudCA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNhcHAnKSA6IHVuZGVmaW5lZH1cbiAgICAgIGlzT3BlblxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ21vYmlsZS1tb2RhbC1jb250ZW50J119XG4gICAgICBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ21vYmlsZS1tb2RhbC1vdmVybGF5J119XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICctLWNvbG9yJzogYCR7Y29sb3J9YCxcbiAgICAgICAgICAnLS1mb250LXdlaWdodC1tZWRpdW0nOiBmb250V2VpZ2h0cy5tZWRpdW0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3RvcC1yb3cnXX0+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzWydtb2RhbC10aXRsZSddfT5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2Nob29zZS10aW1lJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydkZXBhcnR1cmUtbm93LWJ1dHRvbiddfVxuICAgICAgICAgICAgb25DbGljaz17b25Ob3dDbGlja31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdkZXBhcnR1cmUtbm93JywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWyd0YWItcm93J119PlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgaHRtbEZvcj17YCR7aHRtbElkfS1tb2RhbC1kZXBhcnR1cmVgfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRhYi1sYWJlbCddfVxuICAgICAgICAgICAgICAgICR7XG4gICAgICAgICAgICAgICAgICBzdHlsZXNbXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQgPT09ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYWN0aXZlJ1xuICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tbW9kYWwtZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgICAgbmFtZT1cImRlcGFydHVyZU9yQXJyaXZhbFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIHZhbHVlPVwiZGVwYXJ0dXJlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICBvbkRlcGFydHVyZUNsaWNrKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2RlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQgPT09ICdkZXBhcnR1cmUnfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgaHRtbEZvcj17YCR7aHRtbElkfS1tb2RhbC1hcnJpdmFsYH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydyYWRpby10YWItbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnYXJyaXZhbCdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdhY3RpdmUnXG4gICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdhcnJpdmFsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tbW9kYWwtYXJyaXZhbGB9XG4gICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICB2YWx1ZT1cImFycml2YWxcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbiddfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uQXJyaXZhbENsaWNrKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2RlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQgPT09ICdhcnJpdmFsJ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2lucHV0LXJvdyddfT5cbiAgICAgICAgICA8TW9iaWxlRGF0ZXBpY2tlclxuICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICBnZXREaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtjaGFuZ2VUaW1lc3RhbXB9XG4gICAgICAgICAgICBpdGVtQ291bnQ9e2RhdGVTZWxlY3RJdGVtQ291bnR9XG4gICAgICAgICAgICBzdGFydFRpbWU9e2RhdGVTZWxlY3RTdGFydFRpbWV9XG4gICAgICAgICAgICBpZD17YCR7aHRtbElkfS1kYXRlYH1cbiAgICAgICAgICAgIGxhYmVsPXtpMThuZXh0LnQoJ2RhdGUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWydkYXRlLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2FsZW5kYXJcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxNb2JpbGVUaW1lcGlja2VyXG4gICAgICAgICAgICB2YWx1ZT17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGdldERpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2NoYW5nZVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LXRpbWVgfVxuICAgICAgICAgICAgbGFiZWw9e2kxOG5leHQudCgndGltZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ3RpbWUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2J1dHRvbnMtcm93J119PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JlYWR5LWJ1dHRvbiddfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgb25TdWJtaXQoZGlzcGxheVRpbWVzdGFtcCwgZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdyZWFkeScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2NhbmNlbC1idXR0b24nXX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2FuY2VsfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2NhbmNlbCcsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvTW9kYWw+XG4gICk7XG59XG5cbk1vYmlsZVBpY2tlck1vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRlcGFydHVyZU9yQXJyaXZhbDogUHJvcFR5cGVzLm9uZU9mKFsnZGVwYXJ0dXJlJywgJ2Fycml2YWwnXSkuaXNSZXF1aXJlZCxcbiAgb25Ob3dDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2FuY2VsOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0aW1lc3RhbXA6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZ2V0VGltZURpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGRhdGVTZWxlY3RJdGVtQ291bnQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZ2V0RGF0ZURpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICB9KS5pc1JlcXVpcmVkLFxufTtcblxuTW9iaWxlUGlja2VyTW9kYWwuZGVmYXVsdFByb3BzID0ge1xuICBjb2xvcjogJyMwMDdhYzknLFxuICB0aW1lWm9uZTogJ0V1cm9wZS9IZWxzaW5raScsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb2JpbGVQaWNrZXJNb2RhbDtcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2ZpJztcbmltcG9ydCB1bmlxdWVJZCBmcm9tICdsb2Rhc2gvdW5pcXVlSWQnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgSWNvbiBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1pY29uJztcbmltcG9ydCBEZXNrdG9wRGF0ZXRpbWVwaWNrZXIgZnJvbSAnLi9EZXNrdG9wRGF0ZXRpbWVwaWNrZXInO1xuaW1wb3J0IHRyYW5zbGF0aW9ucyBmcm9tICcuL3RyYW5zbGF0aW9ucyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLnNjc3MnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuL21vYmlsZURldGVjdGlvbic7XG5pbXBvcnQgZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkIGZyb20gJy4vZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkJztcbmltcG9ydCBNb2JpbGVQaWNrZXJNb2RhbCBmcm9tICcuL01vYmlsZVBpY2tlck1vZGFsJztcblxubW9tZW50LmxvY2FsZSgnZW4nKTtcbmkxOG5leHQuaW5pdCh7XG4gIGxuZzogJ2ZpJyxcbiAgZmFsbGJhY2tMbmc6ICdmaScsXG4gIGRlZmF1bHROUzogJ3RyYW5zbGF0aW9uJyxcbiAgaW50ZXJwb2xhdGlvbjoge1xuICAgIGVzY2FwZVZhbHVlOiBmYWxzZSwgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gIH0sXG59KTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCByZW5kZXJzIGNvbWJvYm94IHN0eWxlIGlucHV0cyBmb3Igc2VsZWN0aW5nIGRhdGUgYW5kIHRpbWUuIFRoaXMgaXMgYSBjb250cm9sbGVkIGNvbXBvbmVudCwgdGltZXN0YW1wIGlzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGJvdGggaW5wdXRzLlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHByb3BzLnRpbWVzdGFtcCAgICAgIEN1cnJlbnRseSBzZWxlY3RlZCB0aW1lIGFzIGEgdW5peCB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzLiBTZXQgdG8gbnVsbCB0byBzaWduaWZ5IHRoYXQgXCJub3dcIiBpcyBzZWxlY3RlZC4gRGlzcGxheWVkIHRpbWUgaXMgdXBkYXRlZCBpbiByZWFsdGltZSB3aGVuIHNldCB0byBudWxsXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vblRpbWVDaGFuZ2UgICAgICAgQ2FsbGVkIHdpdGggbmV3IHRpbWVzdGFtcCB3aGVuIHRpbWUgaW5wdXQgY2hhbmdlc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25EYXRlQ2hhbmdlICAgICAgIENhbGxlZCB3aXRoIG5ldyB0aW1lc3RhbXAgd2hlbiBkYXRlIGlucHV0IGNoYW5nZXNcbiAqIEBwYXJhbSB7J2Fycml2YWwnfCdkZXBhcnR1cmUnfSBwcm9wcy5kZXBhcnR1cmVPckFycml2YWwgICBEZXRlcm1pbmUgaWYgaW5wdXQgaXMgc2V0IHRvIGNob29zZSBkZXBhcnR1cmUgb3IgYXJyaXZhbCB0aW1lXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbk5vd0NsaWNrICAgICAgICAgQ2FsbGVkIHdoZW4gXCJkZXBhcnQgbm93XCIgYnV0dG9uIGlzIGNsaWNrZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGVwYXJ0dXJlQ2xpY2sgICBDYWxsZWQgd2hlbiBcImRlcGFydHVyZVwiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkFycml2YWxDbGljayAgICAgQ2FsbGVkIHdoZW4gXCJhcnJpdmFsXCIgYnV0dG9uIGlzIGNsaWNrZWRcbiAqIEBwYXJhbSB7bm9kZX0gcHJvcHMuZW1iZWRXaGVuQ2xvc2VkICAgICAgICBKU1ggZWxlbWVudCB0byByZW5kZXIgaW4gdGhlIGNvcm5lciB3aGVuIGlucHV0IGlzIGNsb3NlZFxuICogQHBhcmFtIHtub2RlfSBwcm9wcy5lbWJlZFdoZW5PcGVuICAgICAgICAgIEpTWCBlbGVtZW50IHRvIHJlbmRlciB3aGVuIGlucHV0IGlzIG9wZW5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5sYW5nICAgICAgICAgICAgICAgICBMYW5ndWFnZSBzZWxlY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zZXJ2aWNlVGltZVJhbmdlICAgICAgICAgICBEZXRlcm1pbmUgbnVtYmVyIG9mIGRheXMgc2hvd24gaW4gdGltZXBpY2tlci4gT3B0aW9uYWwuIGRlZmF1bHQgaXMgMzAuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbk9wZW4gICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIHdoYXQgdG8gZG8gd2hlbiB0aW1lcGlja2VyIGlzIG9wZW4uIE9wdGlvbmFsLiBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25DbG9zZSAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBjbG9zZWQuIE9wdGlvbmFsLiBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub3BlblBpY2tlciAgICAgICAgICAgICAgIERldGVybWluZSBpZiB0aW1lcGlja2VyIHNob3VsZCBiZSBvcGVuIGluIGludGlhbCByZW5kZXIuIE9wdGlvbmFsLiBEZWZhdWx0IGlzIHVuZGVmaW5lZC5cbiAqXG4gKlxuICogQGV4YW1wbGVcbiAqIDxEYXRldGltZXBpY2tlclxuICogICB0aW1lc3RhbXA9ezE1OTAxMzM4MjMwMDB9XG4gKiAgIG9uVGltZUNoYW5nZT17KG5ld1RpbWVzdGFtcCkgPT4gdXBkYXRlKG5ld1RpbWVzdGFtcCl9XG4gKiAgIG9uRGF0ZUNoYW5nZT17KG5ld1RpbWVzdGFtcCkgPT4gdXBkYXRlKG5ld1RpbWVzdGFtcCl9XG4gKiAgIGRlcGFydHVyZU9yQXJyaXZhbD17J2RlcGFydHVyZSd9XG4gKiAgIG9uTm93Q2xpY2s9eygpID0+IHNldFRpbWVzdGFtcFRvTnVsbCgpfVxuICogICBvbkRlcGFydHVyZUNsaWNrPXsoKSA9PiBkZXBhcnR1cmVDbGlja2VkKCl9XG4gKiAgIG9uQXJyaXZhbENsaWNrPXsoKSA9PiBhcnJpdmFsQ2xpY2tlZCgpfVxuICogICBlbWJlZFdoZW5DbG9zZWQ9ezxidXR0b24gLz59XG4gKiAgIGxhbmc9eydlbid9XG4gKiAgIHNlcnZpY2VUaW1lUmFuZ2U9ezE1fVxuICogLz5cbiAqL1xuZnVuY3Rpb24gRGF0ZXRpbWVwaWNrZXIoe1xuICB0aW1lc3RhbXAsXG4gIG9uVGltZUNoYW5nZSxcbiAgb25EYXRlQ2hhbmdlLFxuICBkZXBhcnR1cmVPckFycml2YWwsXG4gIG9uTm93Q2xpY2ssXG4gIG9uRGVwYXJ0dXJlQ2xpY2ssXG4gIG9uQXJyaXZhbENsaWNrLFxuICBlbWJlZFdoZW5DbG9zZWQsXG4gIGVtYmVkV2hlbk9wZW4sXG4gIGxhbmcsXG4gIGNvbG9yLFxuICB0aW1lWm9uZSxcbiAgb25Nb2RhbFN1Ym1pdCxcbiAgZm9udFdlaWdodHMsXG4gIHNlcnZpY2VUaW1lUmFuZ2UsXG4gIG9uT3BlbixcbiAgb25DbG9zZSxcbiAgb3BlblBpY2tlcixcbn0pIHtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBbaXNPcGVuLCBjaGFuZ2VPcGVuXSA9IHVzZVN0YXRlKG9wZW5QaWNrZXIgfHwgZmFsc2UpO1xuICBjb25zdCBbZGlzcGxheVRpbWVzdGFtcCwgY2hhbmdlRGlzcGxheVRpbWVzdGFtcF0gPSB1c2VTdGF0ZShcbiAgICB0aW1lc3RhbXAgfHwgbW9tZW50KCkudmFsdWVPZigpLFxuICApO1xuICAvLyB0aW1lciBmb3IgdXBkYXRpbmcgZGlzcGxheVRpbWVzdGFtcCBpbiByZWFsIHRpbWVcbiAgY29uc3QgW3RpbWVySWQsIHNldFRpbWVyXSA9IHVzZVN0YXRlKG51bGwpO1xuICAvLyBmb3IgaW5wdXQgbGFiZWxzXG4gIGNvbnN0IFtodG1sSWRdID0gdXNlU3RhdGUodW5pcXVlSWQoJ2RhdGV0aW1lcGlja2VyLScpKTtcbiAgY29uc3QgW3VzZU1vYmlsZUlucHV0c10gPSB1c2VTdGF0ZShpc01vYmlsZSgpICYmIGRhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCgpKTtcbiAgY29uc3Qgb3BlblBpY2tlclJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBhbGVydFJlZiA9IHVzZVJlZigpO1xuXG4gIGNvbnN0IHRyYW5zbGF0aW9uU2V0dGluZ3MgPSB7IGxuZzogbGFuZyB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5mb3JFYWNoKGxhbmd1YWdlID0+XG4gICAgICBpMThuZXh0LmFkZFJlc291cmNlQnVuZGxlKGxhbmd1YWdlLCAndHJhbnNsYXRpb24nLCB0cmFuc2xhdGlvbnNbbGFuZ10pLFxuICAgICk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIG1vbWVudC5sb2NhbGUobGFuZyk7XG4gIH0sIFtsYW5nXSk7XG5cbiAgY29uc3Qgbm93U2VsZWN0ZWQgPSB0aW1lc3RhbXAgPT09IG51bGw7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG5vd1NlbGVjdGVkKSB7XG4gICAgICBjaGFuZ2VEaXNwbGF5VGltZXN0YW1wKG1vbWVudCgpLnZhbHVlT2YoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNsZWFyIHRpbWVyXG4gICAgICBpZiAodGltZXJJZCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRpbWVySWQpO1xuICAgICAgICBzZXRUaW1lcihudWxsKTtcbiAgICAgIH1cbiAgICAgIGNoYW5nZURpc3BsYXlUaW1lc3RhbXAodGltZXN0YW1wKTtcbiAgICB9XG4gIH0sIFt0aW1lc3RhbXBdKTtcblxuICAvLyBzZXQgdGltZXIgdG8gdXBkYXRlIGRpc3BsYXlUaW1lc3RhbXAgd2hlbiBtaW51dGUgY2hhbmdlcyBpZiBub3dTZWxlY3RlZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbm93U2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aW1lcklkKSB7XG4gICAgICBjbGVhckludGVydmFsKHRpbWVySWQpO1xuICAgIH1cbiAgICBjb25zdCBuZXdJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICAgIGNvbnN0IHNhbWVNaW51dGUgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkuaXNTYW1lKG5vdywgJ21pbnV0ZScpO1xuICAgICAgaWYgKCFzYW1lTWludXRlKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwobmV3SWQpO1xuICAgICAgICBzZXRUaW1lcihudWxsKTtcbiAgICAgICAgY2hhbmdlRGlzcGxheVRpbWVzdGFtcChub3cpO1xuICAgICAgfVxuICAgIH0sIDUwMDApO1xuICAgIHNldFRpbWVyKG5ld0lkKTtcbiAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbChuZXdJZCk7XG4gIH0sIFtkaXNwbGF5VGltZXN0YW1wXSk7XG5cbiAgY29uc3QgcHJldklzT3BlblJlZiA9IHVzZVJlZigpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHByZXZJc09wZW5SZWYuY3VycmVudCA9IGlzT3BlbjtcbiAgfSk7XG5cbiAgLy8gcGFyYW0gZGF0ZSBpcyB0aW1lc3RhbXBcbiAgY29uc3QgZ2V0RGF0ZURpc3BsYXkgPSBkYXRlID0+IHtcbiAgICBjb25zdCB0aW1lID0gbW9tZW50KGRhdGUpO1xuICAgIGxldCBmb3JtYXR0ZWQ7XG4gICAgaWYgKHRpbWUuaXNTYW1lKG1vbWVudCgpLCAnZGF5JykpIHtcbiAgICAgIGZvcm1hdHRlZCA9IGkxOG5leHQudCgndG9kYXknLCB0cmFuc2xhdGlvblNldHRpbmdzKTtcbiAgICB9IGVsc2UgaWYgKHRpbWUuaXNTYW1lKG1vbWVudCgpLmFkZCgxLCAnZGF5JyksICdkYXknKSkge1xuICAgICAgZm9ybWF0dGVkID0gaTE4bmV4dC50KCd0b21vcnJvdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtYXR0ZWQgPSB0aW1lLmZvcm1hdCgnZGQgRC5NLicpO1xuICAgIH1cbiAgICBmb3JtYXR0ZWQgPSBgJHtmb3JtYXR0ZWQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtmb3JtYXR0ZWQuc2xpY2UoMSl9YDtcbiAgICByZXR1cm4gZm9ybWF0dGVkO1xuICB9O1xuXG4gIC8vIHBhcmFtIHRpbWUgaXMgdGltZXN0YW1wXG4gIGNvbnN0IGdldFRpbWVEaXNwbGF5ID0gdGltZSA9PiB7XG4gICAgcmV0dXJuIG1vbWVudCh0aW1lKS5mb3JtYXQoJ0hIOm1tJyk7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0ZWRNb21lbnQgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCk7XG4gIGNvbnN0IHRpbWVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuICBsZXQgdGltZUNob2ljZXMgPSBbXTtcbiAgY29uc3QgY3VycmVudCA9IG1vbWVudCh0aW1lU2VsZWN0U3RhcnRUaW1lKTtcbiAgd2hpbGUgKGN1cnJlbnQuaXNTYW1lKHRpbWVTZWxlY3RTdGFydFRpbWUsICdkYXknKSkge1xuICAgIHRpbWVDaG9pY2VzLnB1c2goY3VycmVudC52YWx1ZU9mKCkpO1xuICAgIGlmIChpc01vYmlsZSgpKSB7XG4gICAgICBjdXJyZW50LmFkZCgxNSwgJ21pbnV0ZXMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudC5hZGQoMSwgJ21pbnV0ZXMnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHRpbWVzdGFtcCA9PT0gbnVsbCkge1xuICAgIC8vIGlmIHRpbWUgaXMgc2V0IHRvIG5vd1xuICAgIC8vIGFkZCB0aW1lcyBpbiA1IG1pbiBpbnRlcnZhbHMgZm9yIG5leHQgMzAgbWluc1xuICAgIGNvbnN0IGZpdmVNaW51dGVzID0gMTAwMCAqIDYwICogNTtcbiAgICBjb25zdCBuZXh0Rml2ZU1pbiA9IE1hdGguY2VpbChkaXNwbGF5VGltZXN0YW1wIC8gZml2ZU1pbnV0ZXMpICogZml2ZU1pbnV0ZXM7XG4gICAgY29uc3QgdGltZXNUb0FkZCA9IEFycmF5KDcpXG4gICAgICAuZmlsbCgpXG4gICAgICAubWFwKChfLCBpKSA9PiBuZXh0Rml2ZU1pbiArIGkgKiBmaXZlTWludXRlcyk7XG4gICAgY29uc3QgY2xvc2VzdEluZGV4QWZ0ZXIgPSB0aW1lQ2hvaWNlc1xuICAgICAgLm1hcCh0ID0+IGRpc3BsYXlUaW1lc3RhbXAgLSB0KVxuICAgICAgLmZpbmRJbmRleCh0ID0+IHQgPD0gMCk7XG4gICAgdGltZUNob2ljZXMuc3BsaWNlKGNsb3Nlc3RJbmRleEFmdGVyLCAwLCAuLi50aW1lc1RvQWRkKTtcbiAgICB0aW1lQ2hvaWNlcyA9IEFycmF5LmZyb20obmV3IFNldCh0aW1lQ2hvaWNlcykpOyAvLyByZW1vdmUgZHVwbGljYXRlc1xuICB9XG5cbiAgY29uc3QgZGF0ZVNlbGVjdFN0YXJ0VGltZSA9IG1vbWVudCgpXG4gICAgLnN0YXJ0T2YoJ2RheScpXG4gICAgLmhvdXIoc2VsZWN0ZWRNb21lbnQuaG91cigpKVxuICAgIC5taW51dGUoc2VsZWN0ZWRNb21lbnQubWludXRlKCkpXG4gICAgLnZhbHVlT2YoKTtcbiAgY29uc3QgZGF0ZUNob2ljZXMgPSBBcnJheShzZXJ2aWNlVGltZVJhbmdlKVxuICAgIC5maWxsKClcbiAgICAubWFwKChfLCBpKSA9PiBtb21lbnQoZGF0ZVNlbGVjdFN0YXJ0VGltZSkuYWRkKGksICdkYXknKS52YWx1ZU9mKCkpO1xuXG4gIGZ1bmN0aW9uIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCkge1xuICAgIGlmIChhbGVydFJlZi5jdXJyZW50KSB7XG4gICAgICBhbGVydFJlZi5jdXJyZW50LmlubmVySFRNTCA9IGkxOG5leHQudChcbiAgICAgICAgJ2FjY2Vzc2libGUtY2xvc2VkJyxcbiAgICAgICAgdHJhbnNsYXRpb25TZXR0aW5ncyxcbiAgICAgICk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBudWxsO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzaG93U2NyZWVucmVhZGVyT3BlbkFsZXJ0KCkge1xuICAgIGlmIChhbGVydFJlZi5jdXJyZW50KSB7XG4gICAgICBhbGVydFJlZi5jdXJyZW50LmlubmVySFRNTCA9IGkxOG5leHQudChcbiAgICAgICAgJ2FjY2Vzc2libGUtb3BlbmVkJyxcbiAgICAgICAgdHJhbnNsYXRpb25TZXR0aW5ncyxcbiAgICAgICk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBudWxsO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW5kZXJPcGVuKCkge1xuICAgIGlmICh1c2VNb2JpbGVJbnB1dHMpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGlzT3BlbiAmJiAoXG4gICAgICAgICAgPE1vYmlsZVBpY2tlck1vZGFsXG4gICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWw9e2RlcGFydHVyZU9yQXJyaXZhbH1cbiAgICAgICAgICAgIG9uTm93Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCk7XG4gICAgICAgICAgICAgIG9uTm93Q2xpY2soKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBsYW5nPXtsYW5nfVxuICAgICAgICAgICAgY29sb3I9e2NvbG9yfVxuICAgICAgICAgICAgb25TdWJtaXQ9eyhuZXdUaW1lc3RhbXAsIG5ld0RlcGFydHVyZU9yQXJyaXZhbCkgPT4ge1xuICAgICAgICAgICAgICBvbk1vZGFsU3VibWl0KG5ld1RpbWVzdGFtcCwgbmV3RGVwYXJ0dXJlT3JBcnJpdmFsKTtcbiAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25DYW5jZWw9eygpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCk7XG4gICAgICAgICAgICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZ2V0VGltZURpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgICAgdGltZXN0YW1wPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgZ2V0RGF0ZURpc3BsYXk9e2dldERhdGVEaXNwbGF5fVxuICAgICAgICAgICAgZGF0ZVNlbGVjdEl0ZW1Db3VudD17c2VydmljZVRpbWVSYW5nZX1cbiAgICAgICAgICAgIGdldERpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgZm9udFdlaWdodHM9e2ZvbnRXZWlnaHRzfVxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snZGF0ZXRpbWVwaWNrZXItb3Blbi1jb250YWluZXInXX0gJHtcbiAgICAgICAgICAgICFpc09wZW4gPyBzdHlsZXMuaGlkZGVuIDogJydcbiAgICAgICAgICB9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgICAgICAgID8gYCR7c3R5bGVzWyd0b3Atcm93LWNvbnRhaW5lciddfSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgICAgIDogYCR7c3R5bGVzLmhpZGRlbn0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7JyAnfVxuICAgICAgICAgICAgPHNwYW4gcm9sZT1cImFsZXJ0XCIgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gcmVmPXthbGVydFJlZn0gLz5cbiAgICAgICAgICAgIDxzcGFuIC8+XG4gICAgICAgICAgICB7LyogVGhpcyBlbXB0eSBzcGFuIHByZXZlbnRzIGEgd2VpcmQgZm9jdXMgYnVnIG9uIGNocm9tZSAqL31cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydkZXBhcnR1cmUtb3ItYXJyaXZhbC1jb250YWluZXInXX0+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbi1sYWJlbCddfVxuICAgICAgICAgICAgICAgICR7XG4gICAgICAgICAgICAgICAgICBzdHlsZXNbXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2RlcGFydHVyZScgPyAnYWN0aXZlJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1kZXBhcnR1cmVgfVxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRlcGFydHVyZU9yQXJyaXZhbFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJkZXBhcnR1cmVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tYXJyaXZhbGB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24tbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyA/ICdhY3RpdmUnIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aTE4bmV4dC50KCdhcnJpdmFsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1hcnJpdmFsYH1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiYXJyaXZhbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbiddfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25BcnJpdmFsQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1ub3dgfVxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2RlcGFydHVyZS1ub3ctYnV0dG9uJ119XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uTm93Q2xpY2soKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlLW5vdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sncmlnaHQtZWRnZSddfT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydjbG9zZS1idXR0b24nXX1cbiAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCk7XG4gICAgICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjbG9zZS1pY29uJ119PlxuICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2xvc2VcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICAgICAgICAgICAge2kxOG5leHQudCgnYWNjZXNzaWJsZS1jbG9zZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgICAgaXNPcGVuXG4gICAgICAgICAgICAgICAgPyBgJHtzdHlsZXNbJ3BpY2tlci1jb250YWluZXInXX1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdHlsZXMuaGlkZGVufSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1sZWZ0J119PlxuICAgICAgICAgICAgICA8RGVza3RvcERhdGV0aW1lcGlja2VyXG4gICAgICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e25ld1ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uRGF0ZUNoYW5nZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBnZXREaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgICAgICB0aW1lQ2hvaWNlcz17ZGF0ZUNob2ljZXN9XG4gICAgICAgICAgICAgICAgdmFsaWRhdGU9eygpID0+IG51bGx9XG4gICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1snZGF0ZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2FsZW5kYXJcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LWRhdGVgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtpMThuZXh0LnQoJ2RhdGUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlVHlwaW5nXG4gICAgICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1yaWdodCddfT5cbiAgICAgICAgICAgICAgPERlc2t0b3BEYXRldGltZXBpY2tlclxuICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtuZXdWYWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRpbWVDaGFuZ2UobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0VGltZURpc3BsYXl9XG4gICAgICAgICAgICAgICAgdGltZUNob2ljZXM9e3RpbWVDaG9pY2VzfVxuICAgICAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ3RpbWUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LXRpbWVgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtpMThuZXh0LnQoJ3RpbWUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25TZXR0aW5ncz17dHJhbnNsYXRpb25TZXR0aW5nc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17aXNPcGVuID8gJycgOiBzdHlsZXMuaGlkZGVufT57ZW1iZWRXaGVuT3Blbn08L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpc09wZW4gPyAnZGF0ZXRpbWVwaWNrZXItYm90dG9tLXJvdy1vcGVuJyA6ICcnfSAvPlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGZpZWxkc2V0XG4gICAgICBjbGFzc05hbWU9e3N0eWxlc1snZHQtZGF0ZXRpbWVwaWNrZXInXX1cbiAgICAgIGlkPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgJy0tY29sb3InOiBgJHtjb2xvcn1gLFxuICAgICAgICAnLS1mb250LXdlaWdodC1tZWRpdW0nOiBmb250V2VpZ2h0cy5tZWRpdW0sXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxsZWdlbmQgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0+XG4gICAgICAgIHtpMThuZXh0LnQoJ2FjY2Vzc2libGUtdGl0bGUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgIDwvbGVnZW5kPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0+XG4gICAgICAgIHtpMThuZXh0LnQoJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICFpc09wZW5cbiAgICAgICAgICAgID8gYCR7c3R5bGVzWyd0b3Atcm93LWNvbnRhaW5lciddfSAke3N0eWxlcy5jbG9zZWR9IGRhdGV0aW1lcGlja2VyLXRvcC1yb3dgXG4gICAgICAgICAgICA6IGAke3N0eWxlcy5oaWRkZW59IGRhdGV0aW1lcGlja2VyLXRvcC1yb3dgXG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydsYWJlbC1vcGVuJ119IGh0bWxGb3I9e2Ake2h0bWxJZH0tb3BlbmB9PlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWyd0aW1lLWljb24nXX0+XG4gICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfT5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2FjY2Vzc2libGUtb3BlbicsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiByb2xlPVwiYWxlcnRcIiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSByZWY9e2FsZXJ0UmVmfSAvPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LW9wZW5gfVxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy50ZXh0YnV0dG9ufSAke3N0eWxlcy5hY3RpdmV9ICR7c3R5bGVzWydvcGVuLWJ1dHRvbiddfWB9XG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlT3Blbih0cnVlKTtcbiAgICAgICAgICAgICAgc2hvd1NjcmVlbnJlYWRlck9wZW5BbGVydCgpO1xuICAgICAgICAgICAgICBpZiAob25PcGVuKSB7XG4gICAgICAgICAgICAgICAgb25PcGVuKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICByZWY9e29wZW5QaWNrZXJSZWZ9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIHtub3dTZWxlY3RlZCAmJiBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnID8gKFxuICAgICAgICAgICAgICAgIGkxOG5leHQudCgnZGVwYXJ0dXJlLW5vdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpXG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHtpMThuZXh0LnQoXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2RlcGFydHVyZSdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnYXJyaXZhbCcsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge2AgJHtcbiAgICAgICAgICAgICAgICAgICAgbW9tZW50KCkuaXNTYW1lKG1vbWVudChkaXNwbGF5VGltZXN0YW1wKSwgJ2RheScpXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogZ2V0RGF0ZURpc3BsYXkoZGlzcGxheVRpbWVzdGFtcCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgfSAke2dldFRpbWVEaXNwbGF5KGRpc3BsYXlUaW1lc3RhbXApfWB9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snZHJvcGRvd24taWNvbiddfT5cbiAgICAgICAgICAgICAgPEljb24gaW1nPVwiYXJyb3ctZHJvcGRvd25cIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydyaWdodC1lZGdlJ119PntlbWJlZFdoZW5DbG9zZWR9PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IC8+XG4gICAgICB7cmVuZGVyT3BlbigpfVxuICAgIDwvZmllbGRzZXQ+XG4gICk7XG59XG5cbkRhdGV0aW1lcGlja2VyLnByb3BUeXBlcyA9IHtcbiAgdGltZXN0YW1wOiBQcm9wVHlwZXMubnVtYmVyLFxuICB0aW1lWm9uZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25UaW1lQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRhdGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGRlcGFydHVyZU9yQXJyaXZhbDogUHJvcFR5cGVzLm9uZU9mKFsnZGVwYXJ0dXJlJywgJ2Fycml2YWwnXSkuaXNSZXF1aXJlZCxcbiAgb25Ob3dDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EZXBhcnR1cmVDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25BcnJpdmFsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogUHJvcFR5cGVzLm5vZGUsXG4gIGVtYmVkV2hlbk9wZW46IFByb3BUeXBlcy5ub2RlLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbk1vZGFsU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZWRpdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgfSkuaXNSZXF1aXJlZCxcbiAgc2VydmljZVRpbWVSYW5nZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBvbk9wZW46IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlblBpY2tlcjogUHJvcFR5cGVzLmJvb2wsXG59O1xuXG5EYXRldGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgZW1iZWRXaGVuQ2xvc2VkOiBudWxsLFxuICBlbWJlZFdoZW5PcGVuOiBudWxsLFxuICBjb2xvcjogJyMwMDdhYzknLFxuICB0aW1lWm9uZTogJ0V1cm9wZS9IZWxzaW5raScsXG4gIG9uT3BlbjogbnVsbCxcbiAgb25DbG9zZTogbnVsbCxcbiAgb3BlblBpY2tlcjogdW5kZWZpbmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZXRpbWVwaWNrZXI7XG4iLCIvKipcbiAqIERldGVjdCBpZiBpbnB1dCB0eXBlPVwiZGF0ZVwiIGFuZCB0eXBlPVwidGltZVwiIGFyZSBzdXBwb3J0ZWQgaW4gYnkgdGhlIGJyb3dzZXJcbiAqXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB3aW5kb3cgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gIGVsZW0udHlwZSA9ICdkYXRlJztcbiAgaWYgKGVsZW0udHlwZSAhPT0gJ2RhdGUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGVsZW0udHlwZSA9ICd0aW1lJztcbiAgaWYgKGVsZW0udHlwZSAhPT0gJ3RpbWUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQ7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnbG9kYXNoL2RlYm91bmNlJztcbmltcG9ydCBEYXRldGltZXBpY2tlciBmcm9tICcuL2hlbHBlcnMvRGF0ZXRpbWVwaWNrZXInO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHJlbmRlcnMgYW4gaW5wdXQgdG8gY2hvb3NlIGEgZGF0ZSBhbmQgdGltZS4gUmVuZGVycyBzZXBhcmF0ZSBpbnB1dCBmaWVsZHMgZm9yIGRhdGUgYW5kIHRpbWUgc2VsZWN0aW9uLiBWYWx1ZXMgZm9yIHRpbWVzdGFtcCBhbmQgYXJyaXZlQnkgY29ycmVzcG9uZCB0byBEaWdpdHJhbnNpdCBxdWVyeSBwYXJhbXMgdGltZSBhbmQgYXJyaXZlQnkuIFRoaXMgY29tcG9uZW50IHdpbGwgZGlzcGxheSBhIG5hdGl2ZSBkYXRlIGlucHV0IG9uIG1vYmlsZSBhbmQgYSBjdXN0b20gb25lIGZvciBkZXNrdG9wLiBNb2JpbGUgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgcGFyc2luZyB1c2VyIGFnZW50LlxuICpcbiAqIEBhbGlhcyBEYXRldGltZXBpY2tlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICpcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMucmVhbHRpbWUgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgc2VsZWN0ZWQgdGltZSBzaG91bGQgYmUgdXBkYXRlZCBpbiByZWFsdGltZSB3aGVuICdub3cnIGlzIHNlbGVjdGVkLlxuICogQHBhcmFtIHtOdW1iZXJ9IHByb3BzLmluaXRpYWxUaW1lc3RhbXAgICAgICAgICAgIEluaXRpYWwgdmFsdWUgZm9yIHNlbGVjdGVkIHRpbWUuIFVuaXggdGltZXN0YW1wIGluIHNlY29uZHMuIFVwZGF0aW5nIHRoaXMgd2lsbCBjaGFuZ2UgdGltZXBpY2tlciB2YWx1ZSBidXQgdGhlIGNvcnJlY3QgdmFsdWUgaXMga2VwdCBpbiBjb21wb25lbnQgc3RhdGUgZXZlbiBpZiB0aGlzIGlzIG5vdCB1cGRhdGVkLlxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5pbml0aWFsQXJyaXZlQnkgICAgICAgICAgIEluaXRpYWwgdmFsdWUgZm9yIGFycml2ZUJ5LiBEZXRlcm1pbmVzIGlmIHBpY2tlciBpcyBpbiBhcnJpdmFsIG1vZGUgKHRydWUpIG9yIGRlcGFydHVyZSBtb2RlIChmYWxzZSkuIENvcnJlY3QgdmFsdWUgaXMga2VwdCBpbiBjb21wb25lbnQgc3RhdGUgZXZlbiBpZiB0aGlzIGlzIG5vdCB1cGRhdGVkLiBDaGFuZ2luZyB0aGlzIHdpbGwgYWxzbyB0cmlnZ2VyIGNoYW5nZSBpbiB0aGUgY29tcG9uZW50LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25UaW1lQ2hhbmdlICAgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lLCBhcnJpdmVCeSkgd2hlbiB0aW1lIGlucHV0IGNoYW5nZXMuIHRpbWUgaXMgbnVtYmVyIHRpbWVzdGFtcCBpbiBzZWNvbmRzLCBhcnJpdmVCeSBpcyBib29sZWFuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRhdGVDaGFuZ2UgICAgICAgICAgICAgQ2FsbGVkIHdpdGggKHRpbWUsIGFycml2ZUJ5KSB3aGVuIGRhdGUgaW5wdXQgY2hhbmdlcy4gdGltZSBpcyBudW1iZXIgdGltZXN0YW1wIGluIHNlY29uZHMsIGFycml2ZUJ5IGlzIGJvb2xlYW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uTm93Q2xpY2sgICAgICAgICAgICAgICBDYWxsZWQgd2hlbiBcImRlcGFydCBub3dcIiBidXR0b24gaXMgY2xpY2tlZC4gdGltZSBpcyBjdXJyZW50IGlucHV0IHZhbHVlIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGVwYXJ0dXJlQ2xpY2sgICAgICAgICBDYWxsZWQgd2l0aCAodGltZSkgd2hlbiBcImRlcGFydHVyZVwiIGJ1dHRvbiBpcyBjbGlja2VkLiB0aW1lIGlzIGN1cnJlbnQgaW5wdXQgdmFsdWUgaW4gc2Vjb25kc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25BcnJpdmFsQ2xpY2sgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lKSB3aGVuIFwiYXJyaXZhbFwiIGJ1dHRvbiBpcyBjbGlja2VkLiB0aW1lIGlzIGN1cnJlbnQgaW5wdXQgdmFsdWUgaW4gc2Vjb25kc1xuICogQHBhcmFtIHtub2RlfSBwcm9wcy5lbWJlZFdoZW5DbG9zZWQgICAgICAgICAgICAgIEpTWCBlbGVtZW50IHRvIHJlbmRlciBpbiB0aGUgY29ybmVyIHdoZW4gaW5wdXQgaXMgY2xvc2VkXG4gKiBAcGFyYW0ge25vZGV9IHByb3BzLmVtYmVkV2hlbk9wZW4gICAgICAgICAgICAgICAgSlNYIGVsZW1lbnQgdG8gcmVuZGVyIHdoZW4gaW5wdXQgaXMgb3BlblxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmxhbmcgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlIHNlbGVjdGlvbi4gRGVmYXVsdCAnZW4nXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2VydmljZVRpbWVSYW5nZSAgICAgICAgICAgRGV0ZXJtaW5lIG51bWJlciBvZiBkYXlzIHNob3duIGluIHRpbWVwaWNrZXIuIE9wdGlvbmFsLiBkZWZhdWx0IGlzIDMwLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25PcGVuICAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBvcGVuLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2xvc2UgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgY2xvc2VkLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9wZW5QaWNrZXIgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgdGltZXBpY2tlciBzaG91bGQgYmUgb3BlbiBpbiBpbnRpYWwgcmVuZGVyLiBPcHRpb25hbC4gRGVmYXVsdCBpcyB1bmRlZmluZWQuXG4gKiBAZXhhbXBsZVxuICogPERhdGV0aW1lcGlja2VyXG4gKiAgIHJlYWx0aW1lPXt0cnVlfVxuICogICBpbml0aWFsVGltZXN0YW1wPXsxNTkwMTMzODIzfVxuICogICBpbml0aWFsQXJyaXZlQnk9e2ZhbHNlfVxuICogICBvblRpbWVDaGFuZ2U9eyh0aW1lLCBhcnJpdmVCeSkgPT4gY2hhbmdlVXJsKHRpbWUsIGFycml2ZUJ5KX1cbiAqICAgb25EYXRlQ2hhbmdlPXsodGltZSwgYXJyaXZlQnkpID0+IGNoYW5nZVVybCh0aW1lLCBhcnJpdmVCeSl9XG4gKiAgIG9uTm93Q2xpY2s9eyh0aW1lKSA9PiBjaGFuZ2VVcmwodW5kZWZpbmVkLCB1bmRlZmluZWQpfVxuICogICBvbkRlcGFydHVyZUNsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHRpbWUsICd0cnVlJyl9XG4gKiAgIG9uQXJyaXZhbENsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHRpbWUsIHVuZGVmaW5lZCl9XG4gKiAgIGVtYmVkV2hlbkNsb3NlZD17PGJ1dHRvbiAvPn1cbiAqICAgbGFuZz17J2VuJ31cbiAqICAgc2VydmljZVRpbWVSYW5nZT17MTV9XG4gKiAvPlxuICovXG5mdW5jdGlvbiBEYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyKHtcbiAgcmVhbHRpbWUsXG4gIGluaXRpYWxBcnJpdmVCeSxcbiAgaW5pdGlhbFRpbWVzdGFtcCxcbiAgb25EZXBhcnR1cmVDbGljayxcbiAgb25BcnJpdmFsQ2xpY2ssXG4gIG9uVGltZUNoYW5nZSxcbiAgb25EYXRlQ2hhbmdlLFxuICBvbk5vd0NsaWNrLFxuICBlbWJlZFdoZW5DbG9zZWQsXG4gIGVtYmVkV2hlbk9wZW4sXG4gIGxhbmcsXG4gIGNvbG9yLFxuICB0aW1lWm9uZSxcbiAgZm9udFdlaWdodHMsXG4gIHNlcnZpY2VUaW1lUmFuZ2UsXG4gIG9uT3BlbixcbiAgb25DbG9zZSxcbiAgb3BlblBpY2tlcixcbn0pIHtcbiAgbW9tZW50LmxvY2FsZShsYW5nKTtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBpbml0aWFsTm93ID0gcmVhbHRpbWUgPyBudWxsIDogbW9tZW50KCkudmFsdWVPZigpO1xuICBjb25zdCBbdGltZXN0YW1wLCBjaGFuZ2VUaW1lc3RhbXBTdGF0ZV0gPSB1c2VTdGF0ZShcbiAgICBpbml0aWFsVGltZXN0YW1wID8gaW5pdGlhbFRpbWVzdGFtcCAqIDEwMDAgOiBpbml0aWFsTm93LFxuICApO1xuICBjb25zdCBbZGVwYXJ0dXJlT3JBcnJpdmFsLCBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWxdID0gdXNlU3RhdGUoXG4gICAgaW5pdGlhbEFycml2ZUJ5ID09PSB0cnVlID8gJ2Fycml2YWwnIDogJ2RlcGFydHVyZScsXG4gICk7XG5cbiAgLy8gdXBkYXRlIHN0YXRlIGlmIHByb3BzIGNoYW5nZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGJvdGhOdWxsID0gdGltZXN0YW1wID09PSBudWxsICYmIGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvbmVOdWxsID0gdGltZXN0YW1wID09PSBudWxsIHx8IGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzYW1lVGltZSA9IE1hdGgucm91bmQodGltZXN0YW1wIC8gMTAwMCkgPT09IGluaXRpYWxUaW1lc3RhbXA7XG4gICAgY29uc3QgdGltZXN0YW1wQ2hhbmdlZCA9ICFib3RoTnVsbCAmJiAob25lTnVsbCB8fCAhc2FtZVRpbWUpO1xuICAgIGlmICh0aW1lc3RhbXBDaGFuZ2VkKSB7XG4gICAgICBpZiAoaW5pdGlhbFRpbWVzdGFtcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUoaW5pdGlhbFRpbWVzdGFtcCAqIDEwMDApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWluaXRpYWxBcnJpdmVCeSA9PT0gKGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnKSkge1xuICAgICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKFxuICAgICAgICBpbml0aWFsQXJyaXZlQnkgPT09IHRydWUgPyAnYXJyaXZhbCcgOiAnZGVwYXJ0dXJlJyxcbiAgICAgICk7XG4gICAgfVxuICB9LCBbaW5pdGlhbFRpbWVzdGFtcCwgaW5pdGlhbEFycml2ZUJ5XSk7XG5cbiAgY29uc3QgdGltZUNoYW5nZWQgPSBkZWJvdW5jZShuZXdUaW1lID0+IHtcbiAgICBpZiAobmV3VGltZSA9PT0gbnVsbCkge1xuICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobW9tZW50KCkudmFsdWVPZigpKTtcbiAgICAgIG9uVGltZUNoYW5nZShcbiAgICAgICAgTWF0aC5yb3VuZChtb21lbnQoKS52YWx1ZU9mKCkgLyAxMDAwKSxcbiAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCcsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShuZXdUaW1lKTtcbiAgICBvblRpbWVDaGFuZ2UoTWF0aC5yb3VuZChuZXdUaW1lIC8gMTAwMCksIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnKTtcbiAgfSwgMTApO1xuXG4gIGNvbnN0IGRhdGVDaGFuZ2VkID0gZGVib3VuY2UobmV3RGF0ZSA9PiB7XG4gICAgaWYgKG5ld0RhdGUgPT09IG51bGwpIHtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG1vbWVudCgpLnZhbHVlT2YoKSk7XG4gICAgICBvbkRhdGVDaGFuZ2UoXG4gICAgICAgIE1hdGgucm91bmQobW9tZW50KCkudmFsdWVPZigpIC8gMTAwMCksXG4gICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobmV3RGF0ZSk7XG4gICAgb25EYXRlQ2hhbmdlKE1hdGgucm91bmQobmV3RGF0ZSAvIDEwMDApLCBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyk7XG4gIH0sIDEwKTtcblxuICBjb25zdCBub3dDbGlja2VkID0gKCkgPT4ge1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gICAgY29uc3QgbmV3VGltZXN0YW1wID0gcmVhbHRpbWUgPyBudWxsIDogbW9tZW50KCkudmFsdWVPZigpO1xuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5ld1RpbWVzdGFtcCk7XG4gICAgb25Ob3dDbGljayhNYXRoLnJvdW5kKG5ld1RpbWVzdGFtcCAvIDEwMDApKTtcbiAgfTtcblxuICBjb25zdCBkZXBhcnR1cmVDbGlja2VkID0gKCkgPT4ge1xuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbGV0IG5ld1RpbWUgPSB0aW1lc3RhbXA7XG4gICAgaWYgKHRpbWVzdGFtcCA9PT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm93ID0gbW9tZW50KCkudmFsdWVPZigpO1xuICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobm93KTtcbiAgICAgIG5ld1RpbWUgPSBub3c7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGRlcGFydHVyZU9yQXJyaXZhbCAhPT0gJ2RlcGFydHVyZScpIHtcbiAgICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soTWF0aC5yb3VuZChuZXdUaW1lIC8gMTAwMCkpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhcnJpdmFsQ2xpY2tlZCA9ICgpID0+IHtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGxldCBuZXdUaW1lID0gdGltZXN0YW1wO1xuICAgIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5vdyk7XG4gICAgICBuZXdUaW1lID0gbm93O1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChkZXBhcnR1cmVPckFycml2YWwgIT09ICdhcnJpdmFsJykge1xuICAgICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdhcnJpdmFsJyk7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIG9uQXJyaXZhbENsaWNrKE1hdGgucm91bmQobmV3VGltZSAvIDEwMDApKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uTW9kYWxTdWJtaXQgPSAodGltZSwgbW9kZSkgPT4ge1xuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKHRpbWUpO1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbChtb2RlKTtcbiAgICBvblRpbWVDaGFuZ2UoTWF0aC5yb3VuZCh0aW1lIC8gMTAwMCksIG1vZGUgPT09ICdhcnJpdmFsJywgdHJ1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RGF0ZXRpbWVwaWNrZXJcbiAgICAgIHRpbWVzdGFtcD17dGltZXN0YW1wfVxuICAgICAgb25UaW1lQ2hhbmdlPXt0aW1lQ2hhbmdlZH1cbiAgICAgIG9uRGF0ZUNoYW5nZT17ZGF0ZUNoYW5nZWR9XG4gICAgICBkZXBhcnR1cmVPckFycml2YWw9e2RlcGFydHVyZU9yQXJyaXZhbH1cbiAgICAgIG9uTm93Q2xpY2s9e25vd0NsaWNrZWR9XG4gICAgICBvbkRlcGFydHVyZUNsaWNrPXtkZXBhcnR1cmVDbGlja2VkfVxuICAgICAgb25BcnJpdmFsQ2xpY2s9e2Fycml2YWxDbGlja2VkfVxuICAgICAgZW1iZWRXaGVuQ2xvc2VkPXtlbWJlZFdoZW5DbG9zZWR9XG4gICAgICBlbWJlZFdoZW5PcGVuPXtlbWJlZFdoZW5PcGVufVxuICAgICAgbGFuZz17bGFuZ31cbiAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgIG9uTW9kYWxTdWJtaXQ9e29uTW9kYWxTdWJtaXR9XG4gICAgICBmb250V2VpZ2h0cz17Zm9udFdlaWdodHN9XG4gICAgICBzZXJ2aWNlVGltZVJhbmdlPXtzZXJ2aWNlVGltZVJhbmdlfVxuICAgICAgb25PcGVuPXtvbk9wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgb3BlblBpY2tlcj17b3BlblBpY2tlcn1cbiAgICAvPlxuICApO1xufVxuXG5EYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyLnByb3BUeXBlcyA9IHtcbiAgcmVhbHRpbWU6IFByb3BUeXBlcy5ib29sLFxuICBpbml0aWFsVGltZXN0YW1wOiBQcm9wVHlwZXMubnVtYmVyLFxuICBpbml0aWFsQXJyaXZlQnk6IFByb3BUeXBlcy5ib29sLFxuICBvbkRlcGFydHVyZUNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkFycml2YWxDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25UaW1lQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRhdGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uTm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogUHJvcFR5cGVzLm5vZGUsXG4gIGVtYmVkV2hlbk9wZW46IFByb3BUeXBlcy5ub2RlLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlcixcbiAgfSksXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuUGlja2VyOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbkRhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXIuZGVmYXVsdFByb3BzID0ge1xuICByZWFsdGltZTogZmFsc2UsXG4gIGluaXRpYWxBcnJpdmVCeTogdW5kZWZpbmVkLFxuICBpbml0aWFsVGltZXN0YW1wOiB1bmRlZmluZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogbnVsbCxcbiAgZW1iZWRXaGVuT3BlbjogbnVsbCxcbiAgbGFuZzogJ2VuJyxcbiAgY29sb3I6ICcjMDA3YWM5JyxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxuICBmb250V2VpZ2h0czoge1xuICAgIG1lZGl1bTogNTAwLFxuICB9LFxuICBvbk9wZW46IG51bGwsXG4gIG9uQ2xvc2U6IG51bGwsXG4gIG9wZW5QaWNrZXI6IHVuZGVmaW5lZCxcbiAgc2VydmljZVRpbWVSYW5nZTogMzAsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyO1xuIl0sIm5hbWVzIjpbIl9hcnJheUxpa2VUb0FycmF5IiwiYXJyIiwibGVuIiwibGVuZ3RoIiwiaSIsImFycjIiLCJBcnJheSIsIl9zbGljZWRUb0FycmF5IiwiaXNBcnJheSIsImFycmF5V2l0aEhvbGVzIiwiciIsImwiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJlIiwibiIsInUiLCJhIiwiZiIsIm8iLCJjYWxsIiwibmV4dCIsIk9iamVjdCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJpdGVyYWJsZVRvQXJyYXlMaW1pdCIsIm1pbkxlbiIsImFycmF5TGlrZVRvQXJyYXkiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJ1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIlR5cGVFcnJvciIsIm5vbkl0ZXJhYmxlUmVzdCIsInBhcnNlVHlwZWRUaW1lIiwidHlwZWRWYWx1ZSIsImFjdHVhbFZhbHVlIiwic3BsaXQiLCJldmVyeSIsIk51bWJlciIsImlzSW50ZWdlciIsInZhbGlkYXRlQ2xvY2siLCJob3VycyIsIm1pbnV0ZXMiLCJob3Vyc1ZhbGlkIiwiaXNOYU4iLCJtaW51dGVzVmFsaWQiLCJ2YWxpZGF0ZUlucHV0IiwiaW5wdXRWYWx1ZSIsImluY2x1ZGVzIiwiX2lucHV0VmFsdWUkc3BsaXQyIiwic3RhcnRzV2l0aCIsInZhbHVlcyIsIl9yZWYiLCJjb25jYXQiLCJfcmVmMiIsIl9yZWYzIiwiX3JlZjQiLCJzdWJzdHJpbmciLCJnZXRUcyIsImN1cnJlbnRUaW1lc3RhbXAiLCJ0cmltbWVkIiwidHJpbSIsIm1hdGNoIiwic3BsaXR0ZXIiLCJtb21lbnQiLCJ2YWx1ZU9mIiwiRGVza3RvcERhdGV0aW1lcGlja2VyIiwib25DaGFuZ2UiLCJnZXREaXNwbGF5IiwidGltZUNob2ljZXMiLCJpZCIsImxhYmVsIiwiaWNvbiIsImRpc2FibGVUeXBpbmciLCJ0aW1lWm9uZSIsImRhdGVQaWNrZXIiLCJ0cmFuc2xhdGlvblNldHRpbmdzIiwidHoiLCJzZXREZWZhdWx0IiwiX3VzZVN0YXRlMiIsInVzZVN0YXRlIiwiZGlzcGxheVZhbHVlIiwiY2hhbmdlRGlzcGxheVZhbHVlIiwiX3VzZVN0YXRlNCIsInR5cGluZyIsInNldFR5cGluZyIsIl91c2VTdGF0ZTYiLCJzaG93QWxsT3B0aW9ucyIsInNldFNob3dBbGxPcHRpb25zIiwiX3VzZVN0YXRlOCIsImludmFsaWRJbnB1dCIsInNldGludmFsaWRJbnB1dCIsInVzZUVmZmVjdCIsImhhbmRsZVRpbWVzdGFtcCIsIm5ld1ZhbHVlIiwiYXNOdW1iZXIiLCJpc1ZhbGlkIiwib3B0aW9ucyIsIm1hcCIsImNsb3Nlc3RPcHRpb25zIiwiZmlsdGVyIiwiY2xvc2VzdE9wdGlvbiIsInJlZHVjZSIsImIiLCJNYXRoIiwiYWJzIiwidW5kZWZpbmVkIiwiaW5wdXRJZCIsImxhYmVsSWQiLCJhcmlhRXJyb3IiLCJpMThuZXh0IiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGVzIiwiaHRtbEZvciIsIlNlbGVjdCIsImFyaWFMaXZlTWVzc2FnZXMiLCJndWlkYW5jZSIsImNvbnRleHQiLCJpc0Rpc2FibGVkIiwib25GaWx0ZXIiLCJvbkZvY3VzIiwiaXRlbUxhYmVsIiwidGltZSIsImN1cnJlbnRUaW1lIiwiZm9ybWF0IiwidHMiLCJjb21wb25lbnRzIiwiSW5kaWNhdG9yc0NvbnRhaW5lciIsImN4IiwiY2xhc3NOYW1lUHJlZml4Iiwib25JbnB1dENoYW5nZSIsImFjdGlvbiIsInN0ciIsInZhbGlkIiwiaXNpbnZhbGlkSW5wdXQiLCJ2YWxpZGF0ZWQiLCJub09wdGlvbnNNZXNzYWdlIiwiZmlsdGVyT3B0aW9uIiwib3B0aW9uIiwiaW5wdXQiLCJfaW5wdXQkc3BsaXQkIiwiY29tcGxldGVJbnB1dCIsImlzTW9kMTUiLCJtaW51dGVJbnB1dCIsImlucHV0SCIsImlucHV0TSIsIm9wdEgiLCJvcHRNIiwidG90YWwiLCJmaWx0ZXJPcHRpb25zIiwiaG91ciIsImlzVmFsaWRIb3VyIiwiY29tcCIsImNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSIsInRhYlNlbGVjdHNWYWx1ZSIsInBsYWNlaG9sZGVyIiwidGFyZ2V0Iiwic2VsZWN0Iiwib25CbHVyIiwib25LZXlEb3duIiwia2V5IiwiaXNTZWFyY2hhYmxlIiwiY3NzIiwicmVmIiwiaW5zZXJ0QXQiLCJkb2N1bWVudCIsImhlYWQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInN0eWxlIiwidHlwZSIsImZpcnN0Q2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJhcHBlbmRDaGlsZCIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3JlYXRlVGV4dE5vZGUiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJudW1iZXIiLCJpc1JlcXVpcmVkIiwiZnVuYyIsImFycmF5T2YiLCJzdHJpbmciLCJub2RlIiwiYm9vbCIsInNoYXBlIiwibG5nIiwiZGVmYXVsdFByb3BzIiwidHJhbnNsYXRpb25zIiwiZGUiLCJ0b2RheSIsInRvbW9ycm93IiwiYXJyaXZhbCIsImRhdGUiLCJkZXBhcnR1cmUiLCJyZWFkeSIsImNhbmNlbCIsImVuIiwiZmkiLCJzdiIsImlzTW9iaWxlIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwidmVuZG9yIiwid2luZG93Iiwib3BlcmEiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInNvdXJjZUtleXMiLCJrZXlzIiwiaW5kZXhPZiIsIm9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJNb2JpbGVEYXRlcGlja2VyIiwiaXRlbUNvdW50Iiwic3RhcnRUaW1lIiwib3BlbiIsImNoYW5nZU9wZW4iLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJkYXRlQ2hvaWNlcyIsImZpbGwiLCJfIiwiYWRkIiwic2Nyb2xsSW5kZXgiLCJmaW5kSW5kZXgiLCJ1c2VMYXlvdXRFZmZlY3QiLCJjdXJyZW50Iiwic2Nyb2xsVG9wIiwibmF0aXZlSW5wdXQiLCJ0b0xvd2VyQ2FzZSIsIkF1dG9zdWdnZXN0Iiwic3VnZ2VzdGlvbnMiLCJnZXRTdWdnZXN0aW9uVmFsdWUiLCJzIiwicmVuZGVyU3VnZ2VzdGlvbiIsIm9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZCIsInNob3VsZFJlbmRlclN1Z2dlc3Rpb25zIiwiaW5wdXRQcm9wcyIsInJlYWRPbmx5IiwiZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrIiwib25TdWdnZXN0aW9uc0NsZWFyUmVxdWVzdGVkIiwicmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXIiLCJjb250YWluZXJQcm9wcyIsImNoaWxkcmVuIiwib3RoZXJSZWZzIiwiX2V4Y2x1ZGVkIiwiYXNzaWduIiwidGFiSW5kZXgiLCJlbGVtIiwidGhlbWUiLCJNb2JpbGVUaW1lcGlja2VyIiwiY2hhbmdlSW5wdXRWYWx1ZSIsInRpbWVJbnB1dFJlZiIsImZvY3VzIiwiaW5wdXRNb2RlIiwibWF4TGVuZ3RoIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJldmVudCIsImNoYXJBdCIsImFjdHVhbCIsInRpbWVzdGFtcCIsIk1vYmlsZVBpY2tlck1vZGFsIiwiZGVwYXJ0dXJlT3JBcnJpdmFsIiwib25Ob3dDbGljayIsImxhbmciLCJjb2xvciIsIm9uU3VibWl0Iiwib25DYW5jZWwiLCJnZXRUaW1lRGlzcGxheSIsImRhdGVTZWxlY3RJdGVtQ291bnQiLCJnZXREYXRlRGlzcGxheSIsImZvbnRXZWlnaHRzIiwiZGlzcGxheVRpbWVzdGFtcCIsImNoYW5nZVRpbWVzdGFtcCIsImRlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQiLCJjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwiLCJodG1sSWQiLCJ1bmlxdWVJZCIsImRhdGVTZWxlY3RTdGFydFRpbWUiLCJzdGFydE9mIiwibWludXRlIiwiTW9kYWwiLCJhcHBFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImlzT3BlbiIsIm92ZXJsYXlDbGFzc05hbWUiLCJtZWRpdW0iLCJvbkNsaWNrIiwiY2hlY2tlZCIsIkljb24iLCJpbWciLCJEYXRldGltZXBpY2tlciIsIm9uVGltZUNoYW5nZSIsIm9uRGF0ZUNoYW5nZSIsIm9uRGVwYXJ0dXJlQ2xpY2siLCJvbkFycml2YWxDbGljayIsImVtYmVkV2hlbkNsb3NlZCIsImVtYmVkV2hlbk9wZW4iLCJvbk1vZGFsU3VibWl0Iiwic2VydmljZVRpbWVSYW5nZSIsIm9uT3BlbiIsIm9uQ2xvc2UiLCJvcGVuUGlja2VyIiwiY2hhbmdlRGlzcGxheVRpbWVzdGFtcCIsInRpbWVySWQiLCJzZXRUaW1lciIsInVzZU1vYmlsZUlucHV0cyIsImRhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCIsIm9wZW5QaWNrZXJSZWYiLCJpbnB1dFJlZiIsImFsZXJ0UmVmIiwiZm9yRWFjaCIsImxhbmd1YWdlIiwiYWRkUmVzb3VyY2VCdW5kbGUiLCJsb2NhbGUiLCJub3dTZWxlY3RlZCIsImNsZWFySW50ZXJ2YWwiLCJuZXdJZCIsInNldEludGVydmFsIiwibm93IiwiaXNTYW1lIiwicHJldklzT3BlblJlZiIsImZvcm1hdHRlZCIsInRvVXBwZXJDYXNlIiwic2VsZWN0ZWRNb21lbnQiLCJ0aW1lU2VsZWN0U3RhcnRUaW1lIiwiZml2ZU1pbnV0ZXMiLCJuZXh0Rml2ZU1pbiIsImNlaWwiLCJ0aW1lc1RvQWRkIiwiY2xvc2VzdEluZGV4QWZ0ZXIiLCJzcGxpY2UiLCJTZXQiLCJzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCIsImlubmVySFRNTCIsInNldFRpbWVvdXQiLCJoaWRkZW4iLCJjbG9zZWQiLCJyb2xlIiwidGV4dGJ1dHRvbiIsImFjdGl2ZSIsIkZyYWdtZW50IiwibmV3VGltZXN0YW1wIiwibmV3RGVwYXJ0dXJlT3JBcnJpdmFsIiwidmFsaWRhdGUiLCJEYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyIiwicmVhbHRpbWUiLCJpbml0aWFsQXJyaXZlQnkiLCJpbml0aWFsVGltZXN0YW1wIiwiaW5pdGlhbE5vdyIsImNoYW5nZVRpbWVzdGFtcFN0YXRlIiwiYm90aE51bGwiLCJvbmVOdWxsIiwic2FtZVRpbWUiLCJyb3VuZCIsInRpbWVDaGFuZ2VkIiwiZGVib3VuY2UiLCJuZXdUaW1lIiwiZGF0ZUNoYW5nZWQiLCJuZXdEYXRlIiwibm93Q2xpY2tlZCIsImRlcGFydHVyZUNsaWNrZWQiLCJjaGFuZ2VkIiwiYXJyaXZhbENsaWNrZWQiLCJtb2RlIiwiZGF0ZVRpbWVDb21iaW5lZCIsImluaXQiLCJyZXNvdXJjZXMiLCJvbmVPZiIsImZhbGxiYWNrTG5nIiwiZGVmYXVsdE5TIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIl0sIm1hcHBpbmdzIjoieW1DQUFlLFNBQVNBLEVBQWtCQyxFQUFLQyxJQUNsQyxNQUFQQSxHQUFlQSxFQUFNRCxFQUFJRSxVQUFRRCxFQUFNRCxFQUFJRSxRQUMvQyxJQUFLLElBQUlDLEVBQUksRUFBR0MsRUFBTyxJQUFJQyxNQUFNSixHQUFNRSxFQUFJRixFQUFLRSxJQUFLQyxFQUFLRCxHQUFLSCxFQUFJRyxHQUNuRSxPQUFPQyxDQUNULENDQWUsU0FBU0UsRUFBZU4sRUFBS0csR0FDMUMsT0NMYSxTQUF5QkgsR0FDdEMsR0FBSUssTUFBTUUsUUFBUVAsR0FBTSxPQUFPQSxDQUNqQyxDREdTUSxDQUFlUixJRUxULFNBQStCUyxF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
|