@digitransit-component/digitransit-component-autosuggest-panel 8.4.2 → 9.0.0
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/LICENSE-AGPL.txt +661 -0
- package/LICENSE-EUPL.txt +291 -0
- package/README.md +4 -16
- package/index.cjs +7 -0
- package/lib/index.cjs +2 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.development.cjs +840 -0
- package/lib/index.js +830 -1
- package/lib/index.js.map +1 -1
- package/package.json +24 -9
- package/index.js +0 -7
- package/lib/index.development.js +0 -2
package/lib/index.development.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-i18next"),require("react-sortablejs"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("downshift"),require("i18next")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-i18next","react-sortablejs","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","downshift","i18next"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactI18next,e.reactSortablejs,e.DTAutosuggest,e.Icon,e.isEmpty,e.downshift,e.i18next)}(this,function(e,t,n,i,a,o,s,l,r,d,c){"use strict";function p(e){return e&&e.__esModule?e:{default:e}}var u=p(t),_=p(n),h=p(i),g=p(s),v=p(l),f=p(r);function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function y(e){var t=function(e,t){if("object"!=m(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t);if("object"!=m(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==m(t)?t:t+""}function b(e,t,n){return(t=y(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(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))}}var S="select_combobox-container__SvQ84",k="select_left-column__jbjXM",w="select_combobox-label__-CrdK",P="select_container__-r8y8",E="select_suggestion__JyaUk",O="select_suggestionHighlighted__nWx3k",N="select_suggestionsContainerOpen__JVYuR",C="select_input__YVoSg";x(".select_combobox-container__SvQ84 {\n background-color: #fff;\n border: solid #888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1;\n}\n.select_combobox-container__SvQ84:focus-within {\n border-color: #007ac9;\n}\n.select_combobox-container__SvQ84 .select_left-column__jbjXM {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.select_combobox-label__-CrdK {\n font-size: 12px;\n line-height: 20px;\n color: #666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px;\n}\n\n.select_container__-r8y8 {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.select_container__-r8y8 > div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n.select_container__-r8y8 .select_suggestion__JyaUk {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333;\n font-weight: 500;\n}\n.select_container__-r8y8 .select_suggestionHighlighted__nWx3k {\n font-size: 15px;\n font-weight: 500;\n background: #f2f5f7;\n}\n.select_container__-r8y8 .select_suggestionsContainerOpen__JVYuR {\n position: absolute;\n background-color: #fff;\n z-index: 20;\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: calc(100% + 4px);\n left: 0;\n width: 100%;\n list-style-type: none;\n padding: 0;\n margin: 0;\n}\n.select_container__-r8y8 .select_suggestionsContainerOpen__JVYuR ul {\n padding: 0;\n margin: 0;\n}\n.select_container__-r8y8 .select_suggestionsContainerOpen__JVYuR li:not(:last-child) {\n border-bottom: 1px solid #ddd;\n}\n.select_container__-r8y8 .select_input__YVoSg {\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n}\n.select_container__-r8y8 .select_input__YVoSg:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff;\n}\n.select_container__-r8y8 .select_input__YVoSg:read-only {\n cursor: pointer;\n background: #fff;\n}\n.select_container__-r8y8 .select_input__YVoSg {\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333;\n}");const V=({value:e,options:t,onSlackTimeSelected:n,viaPointIndex:i,id:a,label:o,icon:s})=>{const l=`${a}-label`,r=t.find(t=>t.value===e),{isOpen:c,getToggleButtonProps:p,getMenuProps:_,getItemProps:g,getLabelProps:v,highlightedIndex:f}=d.useSelect({selectedItem:r,items:t,labelId:l,id:a,itemToString:e=>e.displayName,onSelectedItemChange:({selectedItem:e})=>{n(e.value,i)}});return h.default.createElement("div",{className:S},h.default.createElement("div",{className:P},h.default.createElement("div",p(),h.default.createElement("span",{className:k},h.default.createElement("label",Object.assign({},v(),{className:w}),o),h.default.createElement("div",{className:C},h.default.createElement("span",null,r.displayName))),s),h.default.createElement("ul",Object.assign({className:u.default(N,!c&&"hidden")},_()),c&&t.map((e,t)=>h.default.createElement("li",Object.assign({key:e.value,className:u.default(E,t===f&&O)},g({index:t})),h.default.createElement("span",null,e.displayName))))))};"production"!==process.env.NODE_ENV&&(V.propTypes={value:_.default.number.isRequired,onSlackTimeSelected:_.default.func.isRequired,options:_.default.arrayOf(_.default.shape({displayName:_.default.string.isRequired,value:_.default.number.isRequired}).isRequired).isRequired,id:_.default.string.isRequired,label:_.default.node.isRequired,icon:_.default.node.isRequired,viaPointIndex:_.default.number.isRequired});const A=c.createInstance({fallbackLng:"fi",resources:{de:{translation:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"}},en:{translation:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"}},fi:{translation:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"}},pl:{translation:{"add-via-button-label":"Dodaj punkt pośredni","add-via-duration-button-label":"Wybierz czas postoju dla punktu {{index}}","add-via-duration-button-label-close":"Zamknij wybornik czasu postoju w punkcie {{index}}","add-via-duration-button-label-open":"Otwórz wybornik czasu postoju w punkcie {{index}}","minute-short":"min.","remove-via-button-label":"Usuń punkt pośredni {{index}}","swap-order-button-label":"Odwróć początek i cel","via-point":"Punkt pośredni","via-point-index":"Punkt pośredni {{index}}","viapoint-slack-amount":"Czas postoju"}},sv:{translation:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}}},defaultNS:"translation",react:{useSuspense:!0}});A.init();var R={"autosuggest-panel":"styles_autosuggest-panel__OaGWx","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__K2Sud","origin-input-container":"styles_origin-input-container__J-Iva","destination-input-container":"styles_destination-input-container__Q-nKR",row:"styles_row__AJFl2","viapoints-container":"styles_viapoints-container__S9HPW","viapoint-container":"styles_viapoint-container__Ev7XS","light-gray-background":"styles_light-gray-background__DO6vl","viapoint-before":"styles_viapoint-before__O0but","viapoint-input-container":"styles_viapoint-input-container__m84pk","viapoint-1":"styles_viapoint-1__-L3YV",viapoint:"styles_viapoint__l7OQr","viapoint-2":"styles_viapoint-2__nbTQE","viapoint-3":"styles_viapoint-3__euAwt","viapoint-4":"styles_viapoint-4__zT4lg","viapoint-5":"styles_viapoint-5__Nv3uU","viapoint-slack-time":"styles_viapoint-slack-time__RF3rg","select-wrapper":"styles_select-wrapper__ZbWuX","via-point-button-container":"styles_via-point-button-container__Oxyk8","input-viapoint-slack-container":"styles_input-viapoint-slack-container__4T7LG","itinerary-search-control":"styles_itinerary-search-control__9A4Y-",opposite:"styles_opposite__aI-Yn","add-via-point":"styles_add-via-point__q5tPF","add-via-point-slack":"styles_add-via-point-slack__aYNIN","remove-via-point":"styles_remove-via-point__1ys9T","combobox-icon":"styles_combobox-icon__s8Fqp","time-input-icon":"styles_time-input-icon__4xP1Q","rectangle-container":"styles_rectangle-container__kXQDW",rectangle:"styles_rectangle__1ryOy","search-panel-whitespace":"styles_search-panel-whitespace__YsiJN"};x(".styles_autosuggest-panel__OaGWx {\n width: 100%;\n}\n\n.styles_autosuggest-searchpanel-text__K2Sud {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset;\n}\n@media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__K2Sud {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px;\n }\n}\n\n.styles_origin-input-container__J-Iva,\n.styles_destination-input-container__Q-nKR {\n display: flex;\n flex: 1 0 100%;\n}\n.styles_origin-input-container__J-Iva input[type=text],\n.styles_destination-input-container__Q-nKR input[type=text] {\n margin: 0;\n}\n\n.styles_row__AJFl2 {\n display: flex;\n flex-direction: row;\n}\n\n.styles_viapoints-container__S9HPW {\n display: flex;\n flex-direction: column;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS:first-child {\n margin-top: 6px;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS:not(:first-child) {\n margin-top: 3px;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS:last-child {\n margin-bottom: 6px;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS .styles_light-gray-background__DO6vl {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f2f5f7;\n border-radius: 5px;\n width: 100%;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS .styles_light-gray-background__DO6vl .styles_viapoint-before__O0but {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS .styles_light-gray-background__DO6vl .styles_viapoint-before__O0but svg {\n fill: #888;\n height: 20px;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS .styles_light-gray-background__DO6vl .styles_viapoint-input-container__m84pk {\n display: flex;\n align-items: center;\n width: 100%;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS .styles_light-gray-background__DO6vl .styles_viapoint-input-container__m84pk input[type=text] {\n margin: 0;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS .styles_light-gray-background__DO6vl .styles_viapoint-input-container__m84pk.styles_viapoint-1__-L3YV > div.styles_viapoint__l7OQr {\n z-index: 15;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS .styles_light-gray-background__DO6vl .styles_viapoint-input-container__m84pk.styles_viapoint-2__nbTQE > div.styles_viapoint__l7OQr {\n z-index: 14;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS .styles_light-gray-background__DO6vl .styles_viapoint-input-container__m84pk.styles_viapoint-3__euAwt > div.styles_viapoint__l7OQr {\n z-index: 13;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS .styles_light-gray-background__DO6vl .styles_viapoint-input-container__m84pk.styles_viapoint-4__zT4lg > div.styles_viapoint__l7OQr {\n z-index: 12;\n}\n.styles_viapoints-container__S9HPW .styles_viapoint-container__Ev7XS .styles_light-gray-background__DO6vl .styles_viapoint-input-container__m84pk.styles_viapoint-5__Nv3uU > div.styles_viapoint__l7OQr {\n z-index: 11;\n}\n\n.styles_viapoint-slack-time__RF3rg {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px;\n}\n\n.styles_select-wrapper__ZbWuX {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px;\n}\n\n.styles_via-point-button-container__Oxyk8 {\n display: flex;\n}\n.styles_via-point-button-container__Oxyk8 > div:nth-child(1) {\n order: 1;\n border-left: none;\n}\n.styles_via-point-button-container__Oxyk8 > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2);\n}\n\n.styles_input-viapoint-slack-container__4T7LG {\n display: flex;\n flex-direction: column;\n}\n\n.styles_itinerary-search-control__9A4Y- {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width);\n}\n.styles_itinerary-search-control__9A4Y- + .styles_itinerary-search-control__9A4Y- {\n border-left: 1px solid rgba(151, 151, 151, 0.2);\n}\n.styles_itinerary-search-control__9A4Y- .styles_opposite__aI-Yn {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__9A4Y- .styles_opposite__aI-Yn svg {\n width: 19px;\n height: 17px;\n}\n.styles_itinerary-search-control__9A4Y- .styles_add-via-point__q5tPF {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__9A4Y- .styles_add-via-point__q5tPF svg {\n width: 20px;\n height: 22px;\n}\n.styles_itinerary-search-control__9A4Y- .styles_add-via-point-slack__aYNIN {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__9A4Y- .styles_add-via-point-slack__aYNIN svg {\n width: 18px;\n height: 19px;\n}\n.styles_itinerary-search-control__9A4Y- .styles_remove-via-point__1ys9T {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__9A4Y- .styles_remove-via-point__1ys9T svg {\n width: 14px;\n height: 14px;\n}\n\n.styles_combobox-icon__s8Fqp {\n color: var(--color);\n border-left: solid #888 1px;\n height: 35px;\n}\n.styles_combobox-icon__s8Fqp.styles_time-input-icon__4xP1Q {\n padding: 9px 13px 0 13px;\n}\n.styles_combobox-icon__s8Fqp.styles_time-input-icon__4xP1Q svg {\n width: 18px;\n height: 19px;\n}\n\n.styles_rectangle-container__kXQDW {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19;\n}\n.styles_rectangle-container__kXQDW .styles_rectangle__1ryOy {\n position: absolute;\n width: 4px;\n height: 25px;\n border-radius: 2px;\n background-color: #ddd;\n margin-left: 25px;\n margin-top: -9px;\n}\n\n.styles_search-panel-whitespace__YsiJN {\n min-width: 40px;\n}");const I=["children","className","enabled","onClick","onKeyPress","wide"],j=()=>({}),q=e=>{if(void 0===e||f.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},T=e=>{let{children:t,className:n,enabled:i,onClick:a,onKeyPress:o,wide:s}=e,l=function(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;n[i]=e[i]}return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,I);return h.default.createElement("div",{className:R["itinerary-search-control"],style:{"--width":s?"47px":"40px"}},a&&i&&h.default.createElement("div",Object.assign({},l,{className:n,onClick:a,onKeyPress:o,role:"button",tabIndex:"0"}),t))},z=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map(e=>e>t?e-1:e):e},W=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},Y=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",H=e=>e&&!0===e.gps?"position":"location";"production"!==process.env.NODE_ENV&&(T.propTypes={children:_.default.node,className:_.default.string.isRequired,enabled:_.default.bool.isRequired,onClick:_.default.func.isRequired,onKeyPress:_.default.func.isRequired,wide:_.default.bool}),T.defaultProps={children:void 0,wide:!1};const L="production"!==process.env.NODE_ENV?_.default.shape({address:_.default.string,lat:_.default.number,lon:_.default.number,locationSlack:_.default.number}):{};class M extends h.default.Component{constructor(e){super(e),b(this,"storeReference",e=>{this.setState(t=>({refs:[...t.refs,e]}))}),b(this,"handleFocusChange",()=>{const{destination:e}=this.props;e&&e.lat||this.state.refs[1].focus()}),b(this,"updateViaPoints",e=>{0!==e.length?this.props.updateViaPoints(e.filter(e=>!q(e))):this.props.updateViaPoints([])}),b(this,"handleToggleViaPointSlackClick",e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?z(t,e):t.concat([e])})}),b(this,"handleViaPointSlackTimeSelected",(e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)}),b(this,"handleViaPointLocationSelected",(e,t)=>{this.props.handleViaPointLocationSelected(e,t)}),b(this,"handleRemoveViaPointClick",e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:z(t,e,!0)},()=>this.updateViaPoints(n))}),b(this,"handleAddViaPointClick",()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)}),b(this,"handleSwapOrderClick",()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()}),b(this,"getSlackDisplay",e=>`${e/60} ${this.props.t("minute-short",{lng:this.props.lang})}`),this.state={activeSlackInputs:[],refs:[]}}render(){const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:a,originMobileLabel:s,destinationMobileLabel:l,fontWeights:r,onFocusChange:d,showSwapControl:c,showViapointControl:p,t:_,lang:f}=this.props,{primary:m}=this.props.colors,{activeSlackInputs:y}=this.state,b=(e=>{const t=[];for(let n=0;n<=9;n++){const i=10*n;t.push({displayName:`${i} ${e("minute-short")}`,value:60*i})}return t})(_),x=(e,t=0)=>e&&e.locationSlack||t,S=e=>y.includes(e);return h.default.createElement("div",{className:u.default(R["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":m,"--font-weight-medium":r.medium}}," ",t?h.default.createElement("div",null,h.default.createElement("h1",{className:R["autosuggest-searchpanel-text"]}," ",t)):null,h.default.createElement("div",{className:R["origin-input-container"]},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"originEllipse",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:H(e),placeholder:this.props.originPlaceHolder,value:Y(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:d||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,colors:this.props.colors,mobileLabel:s,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(c||p)&&h.default.createElement(T,{className:R.opposite,enabled:c,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>W(e)&&this.handleSwapOrderClick(),"aria-label":_("swap-order-button-label",{lng:f})},h.default.createElement(v.default,{img:"opposite",color:m}))),0===a.length&&h.default.createElement("div",{className:R["rectangle-container"]},h.default.createElement("div",{className:R.rectangle})),h.default.createElement(o.ReactSortable,{className:R["viapoints-container"],list:a,handle:`.${R["viapoint-before"]}`,animation:200,disabled:a.length<=1,setList:e=>{const t=e.filter(e=>!q(e));t.length>0&&this.props.updateViaPoints(t)}},a.map((e,t)=>h.default.createElement("div",{className:u.default(R["viapoint-container"]),key:`viapoint-${t}`},h.default.createElement("div",{className:R["light-gray-background"]},h.default.createElement("div",{className:R.row},h.default.createElement("div",{className:R["viapoint-before"],style:a.length>1?{cursor:"move"}:{}},a.length>1&&h.default.createElement(v.default,{img:"ellipsis",rotate:90,color:m})),h.default.createElement("div",{className:`${R["viapoint-input-container"]} ${R[`viapoint-${t+1}`]}`},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"via-point",ariaLabel:_("via-point-index",{index:t+1,lng:f}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,colors:this.props.colors,showScroll:this.props.showScroll})),this.props.showSlackControl&&h.default.createElement(T,{className:R["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>W(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":_(S(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1,lng:f}),wide:!0},h.default.createElement(v.default,{img:"time",color:m}))),!S(t)&&a[t]&&a[t].locationSlack>0&&h.default.createElement("span",{className:R["viapoint-slack-time"]},`${_("viapoint-slack-amount",{lng:f})}: ${this.getSlackDisplay(a[t].locationSlack)}`),h.default.createElement("div",{className:u.default(R["input-viapoint-slack-container"],!S(t)&&"collapsed")},h.default.createElement("div",{className:R["select-wrapper"]},h.default.createElement(V,{id:`viapoint-slack-${t}`,label:_("viapoint-slack-amount",{lng:f}),options:b,value:x(a[t]),viaPointIndex:t,icon:h.default.createElement("span",{className:`${R["combobox-icon"]} ${R["time-input-icon"]}`},h.default.createElement(v.default,{img:"time",color:m})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),h.default.createElement(T,{className:R["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>W(e)&&this.handleRemoveViaPointClick(t),"aria-label":_("remove-via-button-label",{index:t+1,lng:f})},h.default.createElement(v.default,{img:"trash",color:m}))))),h.default.createElement("div",{className:R["destination-input-container"]},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:H(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:Y(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,colors:this.props.colors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(c||p)&&h.default.createElement(T,{className:u.default(R["add-via-point"],R.more,a.length>4&&"collapsed"),enabled:p&&0===a.length,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>W(e)&&this.handleAddViaPointClick(),"aria-label":_("add-via-button-label",{lng:f})},h.default.createElement(v.default,{img:"viapoint",width:1.25,height:1.375,color:m}))))}}b(M,"defaultProps",{origin:void 0,destination:void 0,viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},searchPanelText:void 0,sources:[],targets:[],filterResults:void 0,onClear:void 0,getAutoSuggestIcons:void 0,refPoint:void 0,addAnalyticsEvent:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,colors:l.defaultColors,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1,showSlackControl:!1}),"production"!==process.env.NODE_ENV&&(M.propTypes={appElement:_.default.string.isRequired,origin:L,destination:L,originPlaceHolder:_.default.string,destinationPlaceHolder:_.default.string,viaPoints:_.default.arrayOf(L),updateViaPoints:_.default.func,handleViaPointLocationSelected:_.default.func,swapOrder:_.default.func,searchPanelText:_.default.string,searchContext:_.default.shape({URL_PELIAS:_.default.string}).isRequired,onSelect:_.default.func.isRequired,onClear:_.default.func,addAnalyticsEvent:_.default.func,lang:_.default.string.isRequired,disableAutoFocus:_.default.bool,sources:_.default.arrayOf(_.default.string),targets:_.default.arrayOf(_.default.string),filterResults:_.default.func,isMobile:_.default.bool,originMobileLabel:_.default.string,destinationMobileLabel:_.default.string,refPoint:L,modeSet:_.default.string,colors:_.default.objectOf(_.default.string),getAutoSuggestIcons:_.default.objectOf(_.default.func),fontWeights:_.default.shape({medium:_.default.number}),showScroll:_.default.bool,onFocusChange:_.default.func,isEmbedded:_.default.bool,showSwapControl:_.default.bool,showViapointControl:_.default.bool,showSlackControl:_.default.bool,t:_.default.func.isRequired});const D=a.withTranslation()(M);e.default=e=>h.default.createElement(a.I18nextProvider,{i18n:A},h.default.createElement(D,e)),e.getEmptyViaPointPlaceHolder=j,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1pbmplY3QvZGlzdC9zdHlsZS1pbmplY3QuZXMuanMiLCIuLi9zcmMvaGVscGVycy9TZWxlY3QuanMiLCIuLi9zcmMvaGVscGVycy90cmFuc2xhdGlvbnMuanMiLCIuLi9zcmMvaGVscGVycy9pMThuLmpzIiwiLi4vc3JjL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgX3R5cGVvZihvKTtcbn1cbmV4cG9ydCB7IF90eXBlb2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbmV4cG9ydCB7IHRvUHJvcGVydHlLZXkgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbmV4cG9ydCB7IHRvUHJpbWl0aXZlIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxuZXhwb3J0IHsgX2RlZmluZVByb3BlcnR5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBzdHlsZUluamVjdChjc3MsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBpbnNlcnRBdCA9IHJlZi5pbnNlcnRBdDtcblxuICBpZiAoIWNzcyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybjsgfVxuXG4gIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcblxuICBpZiAoaW5zZXJ0QXQgPT09ICd0b3AnKSB7XG4gICAgaWYgKGhlYWQuZmlyc3RDaGlsZCkge1xuICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGhlYWQuZmlyc3RDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0eWxlSW5qZWN0O1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VTZWxlY3QgfSBmcm9tICdkb3duc2hpZnQnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3NlbGVjdC5zY3NzJztcblxuY29uc3QgU2VsZWN0ID0gKHtcbiAgdmFsdWUsXG4gIG9wdGlvbnMsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQsXG4gIHZpYVBvaW50SW5kZXgsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbn0pID0+IHtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IHNlbGVjdGVkSXRlbSA9IG9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSk7XG5cbiAgY29uc3Qge1xuICAgIGlzT3BlbixcbiAgICBnZXRUb2dnbGVCdXR0b25Qcm9wcyxcbiAgICBnZXRNZW51UHJvcHMsXG4gICAgZ2V0SXRlbVByb3BzLFxuICAgIGdldExhYmVsUHJvcHMsXG4gICAgaGlnaGxpZ2h0ZWRJbmRleCxcbiAgfSA9IHVzZVNlbGVjdCh7XG4gICAgc2VsZWN0ZWRJdGVtLFxuICAgIGl0ZW1zOiBvcHRpb25zLFxuICAgIGxhYmVsSWQsXG4gICAgaWQsXG4gICAgaXRlbVRvU3RyaW5nOiBpdGVtID0+IGl0ZW0uZGlzcGxheU5hbWUsXG4gICAgb25TZWxlY3RlZEl0ZW1DaGFuZ2U6ICh7IHNlbGVjdGVkSXRlbTogbmV3SXRlbSB9KSA9PiB7XG4gICAgICBvblNsYWNrVGltZVNlbGVjdGVkKG5ld0l0ZW0udmFsdWUsIHZpYVBvaW50SW5kZXgpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtY29udGFpbmVyJ119PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250YWluZXJ9PlxuICAgICAgICA8ZGl2IHsuLi5nZXRUb2dnbGVCdXR0b25Qcm9wcygpfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snbGVmdC1jb2x1bW4nXX0+XG4gICAgICAgICAgICA8bGFiZWwgey4uLmdldExhYmVsUHJvcHMoKX0gY2xhc3NOYW1lPXtzdHlsZXNbJ2NvbWJvYm94LWxhYmVsJ119PlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5pbnB1dH0+XG4gICAgICAgICAgICAgIDxzcGFuPntzZWxlY3RlZEl0ZW0uZGlzcGxheU5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtpY29ufVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHVsXG4gICAgICAgICAgY2xhc3NOYW1lPXtjeChbc3R5bGVzLnN1Z2dlc3Rpb25zQ29udGFpbmVyT3BlbiwgIWlzT3BlbiAmJiAnaGlkZGVuJ10pfVxuICAgICAgICAgIHsuLi5nZXRNZW51UHJvcHMoKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtpc09wZW4gJiZcbiAgICAgICAgICAgIG9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goW1xuICAgICAgICAgICAgICAgICAgc3R5bGVzLnN1Z2dlc3Rpb24sXG4gICAgICAgICAgICAgICAgICBpbmRleCA9PT0gaGlnaGxpZ2h0ZWRJbmRleCAmJiBzdHlsZXMuc3VnZ2VzdGlvbkhpZ2hsaWdodGVkLFxuICAgICAgICAgICAgICAgIF0pfVxuICAgICAgICAgICAgICAgIHsuLi5nZXRJdGVtUHJvcHMoeyBpbmRleCB9KX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPntvcHRpb24uZGlzcGxheU5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblNlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBkaXNwbGF5TmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICB9KS5pc1JlcXVpcmVkLFxuICApLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICB2aWFQb2ludEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgdHJhbnNsYXRpb246IHtcbiAgICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdGw7xnZSBad2lzY2hlbnppZWwgaGluenUnLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICAgJ1NldHplIFVtc3RlaWdlemVpdCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICAgJ1NjaGxpZcOfZSBVbXN0ZWlnZXplaXQtQXVzd2FobCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgICAnw5ZmZm5lIFVtc3RlaWdlemVpdC1BdXN3YWhsIGbDvHIgWndpc2NoZW56aWVsIHt7aW5kZXh9fScsXG4gICAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnRW50ZmVybmUgWndpc2NoZW56aWVsIHt7aW5kZXh9fScsXG4gICAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnVGF1c2NoZSBTdGFydCBtaXQgWmllbCcsXG4gICAgICAndmlhLXBvaW50JzogJ1p3aXNjaGVuemllbCcsXG4gICAgICAndmlhLXBvaW50LWluZGV4JzogJ1p3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdVbXN0ZWlnZXplaXQnLFxuICAgIH0sXG4gIH0sXG4gIGVuOiB7XG4gICAgdHJhbnNsYXRpb246IHtcbiAgICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdBZGQgdmlhIHBvaW50JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6XG4gICAgICAgICdTZXQgc3RvcCBkdXJhdGlvbiBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAgICdDbG9zZSBzdG9wIGR1cmF0aW9uIHNlbGVjdG9yIGF0IHZpYSBwb2ludCB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgICAnT3BlbiBzdG9wIGR1cmF0aW9uIHNlbGVjdG9yIGF0IHZpYSBwb2ludCB7e2luZGV4fX0nLFxuICAgICAgJ21pbnV0ZS1zaG9ydCc6ICdtaW4nLFxuICAgICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ1JlbW92ZSB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdSZXZlcnNlIG9yaWdpbiBhbmQgZGVzdGluYXRpb24nLFxuICAgICAgJ3ZpYS1wb2ludCc6ICdWaWEgcG9pbnQnLFxuICAgICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWaWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAgICd2aWFwb2ludC1zbGFjay1hbW91bnQnOiAnU3RvcCBkdXJhdGlvbicsXG4gICAgfSxcbiAgfSxcbiAgZmk6IHtcbiAgICB0cmFuc2xhdGlvbjoge1xuICAgICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0xpc8Okw6QgdsOkbGlwaXN0ZScsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgICAnQXNldGEgdsOkbGlwaXN0ZWVsbGUge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0bycsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgICAnQXZhYSB2w6RsaXBpc3RlZW4ge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0byB2YWxpdHNpbicsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAgICdTdWxqZSB2w6RsaXBpc3RlZW4ge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0byB2YWxpdHNpbicsXG4gICAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnUG9pc3RhIHbDpGxpcGlzdGUge3tpbmRleH19JyxcbiAgICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdLw6TDpG5uw6QgcmVpdGluIHN1dW50YSB2YXN0YWtrYWlzZWtzaScsXG4gICAgICAndmlhLXBvaW50JzogJ1bDpGxpcGlzdGUnLFxuICAgICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWw6RsaXBpc3RlIHt7aW5kZXh9fScsXG4gICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1B5c8OkaGR5a3NlbiBrZXN0bycsXG4gICAgfSxcbiAgfSxcbiAgcGw6IHtcbiAgICB0cmFuc2xhdGlvbjoge1xuICAgICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0RvZGFqIHB1bmt0IHBvxZtyZWRuaScsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgICAnV3liaWVyeiBjemFzIHBvc3RvanUgZGxhIHB1bmt0dSB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICAgJ1phbWtuaWogd3lib3JuaWsgY3phc3UgcG9zdG9qdSB3IHB1bmtjaWUge3tpbmRleH19JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICAgJ090d8Ozcnogd3lib3JuaWsgY3phc3UgcG9zdG9qdSB3IHB1bmtjaWUge3tpbmRleH19JyxcbiAgICAgICdtaW51dGUtc2hvcnQnOiAnbWluLicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVXN1xYQgcHVua3QgcG/Fm3JlZG5pIHt7aW5kZXh9fScsXG4gICAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnT2R3csOzxIcgcG9jesSFdGVrIGkgY2VsJyxcbiAgICAgICd2aWEtcG9pbnQnOiAnUHVua3QgcG/Fm3JlZG5pJyxcbiAgICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnUHVua3QgcG/Fm3JlZG5pIHt7aW5kZXh9fScsXG4gICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ0N6YXMgcG9zdG9qdScsXG4gICAgfSxcbiAgfSxcbiAgc3Y6IHtcbiAgICB0cmFuc2xhdGlvbjoge1xuICAgICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0zDpGdnIHRpbGwgdmlhcHVua3QnLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICAgJ1N0w6RsbCBpbiB2YXJha3RpZ2hldCBmw7ZyIHZpYXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAgICdTdMOkbmcgdsOkbGphcmVuIGbDtnIgdmFyYWt0aWdoZXQgdmlkIHZpYS1wdW5rdGVuIHt7aW5kZXh9fScsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAgICfDlnBwbmEgdsOkbGphcmVuIGbDtnIgdmFyYWt0aWdoZXQgdmlkIHZpYS1wdW5rdGVuIHt7aW5kZXh9fScsXG4gICAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVGEgYm9ydCB2aWFwdW5rdCB7e2luZGV4fX0nLFxuICAgICAgJ3N3YXAtb3JkZXItYnV0dG9uLWxhYmVsJzogJ1N2w6RuZyBydXR0ZW5zIHJpa3RuaW5nIHRpbGwgZGVuIG1vdHNhdHRhJyxcbiAgICAgICd2aWEtcG9pbnQnOiAnVmlhIHB1bmt0JyxcbiAgICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnVmlhIHB1bmt0IHt7aW5kZXh9fScsXG4gICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1N0b3BwZXRzIHZhcmFrdGlnaGV0JyxcbiAgICB9LFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRpb25zO1xuIiwiaW1wb3J0IHsgY3JlYXRlSW5zdGFuY2UgfSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuXG5jb25zdCBpMThuID0gY3JlYXRlSW5zdGFuY2Uoe1xuICBmYWxsYmFja0xuZzogJ2ZpJyxcbiAgLy8gZGVidWc6IHRydWUsXG4gIHJlc291cmNlczogdHJhbnNsYXRpb25zLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIHJlYWN0OiB7XG4gICAgdXNlU3VzcGVuc2U6IHRydWUsXG4gIH0sXG59KTtcblxuaTE4bi5pbml0KCk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSTE4bmV4dFByb3ZpZGVyLCB3aXRoVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IFJlYWN0U29ydGFibGUgfSBmcm9tICdyZWFjdC1zb3J0YWJsZWpzJztcbmltcG9ydCBEVEF1dG9TdWdnZXN0IGZyb20gJ0BkaWdpdHJhbnNpdC1jb21wb25lbnQvZGlnaXRyYW5zaXQtY29tcG9uZW50LWF1dG9zdWdnZXN0JztcbmltcG9ydCBJY29uLCB7XG4gIGRlZmF1bHRDb2xvcnMsXG59IGZyb20gJ0BkaWdpdHJhbnNpdC1jb21wb25lbnQvZGlnaXRyYW5zaXQtY29tcG9uZW50LWljb24nO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IFNlbGVjdCBmcm9tICcuL2hlbHBlcnMvU2VsZWN0JztcbmltcG9ydCBpMThuIGZyb20gJy4vaGVscGVycy9pMThuJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9oZWxwZXJzL3N0eWxlcy5zY3NzJztcblxuZXhwb3J0IGNvbnN0IGdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlciA9ICgpID0+ICh7fSk7XG5cbmNvbnN0IGlzVmlhUG9pbnRFbXB0eSA9IHZpYVBvaW50ID0+IHtcbiAgaWYgKHZpYVBvaW50ID09PSB1bmRlZmluZWQgfHwgaXNFbXB0eSh2aWFQb2ludCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmlhUG9pbnQpO1xuICByZXR1cm4gKFxuICAgIGtleXMubGVuZ3RoID09PSAxIHx8IChrZXlzLmxlbmd0aCA9PT0gMiAmJiBrZXlzLmluY2x1ZGVzKCdsb2NhdGlvblNsYWNrJykpXG4gICk7XG59O1xuXG5jb25zdCBJdGluZXJhcnlTZWFyY2hDb250cm9sID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZW5hYmxlZCxcbiAgb25DbGljayxcbiAgb25LZXlQcmVzcyxcbiAgd2lkZSxcbiAgLi4ucmVzdFxufSkgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2l0aW5lcmFyeS1zZWFyY2gtY29udHJvbCddfVxuICAgIHN0eWxlPXt7ICctLXdpZHRoJzogd2lkZSA/ICc0N3B4JyA6ICc0MHB4JyB9fVxuICA+XG4gICAge29uQ2xpY2sgJiYgZW5hYmxlZCAmJiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgb25LZXlQcmVzcz17b25LZXlQcmVzc31cbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYkluZGV4PVwiMFwiXG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgdXBkYXRlVmlhUG9pbnRTbGFjayA9IChcbiAgYWN0aXZlVmlhUG9pbnRTbGFja3MsXG4gIHVwZGF0ZWRWaWFQb2ludEluZGV4LFxuICB2aWFQb2ludFJlbW92ZWQgPSBmYWxzZSxcbikgPT4ge1xuICBjb25zdCBmb3VuZEF0SW5kZXggPSBhY3RpdmVWaWFQb2ludFNsYWNrcy5pbmRleE9mKHVwZGF0ZWRWaWFQb2ludEluZGV4KTtcbiAgaWYgKGZvdW5kQXRJbmRleCA+IC0xKSB7XG4gICAgYWN0aXZlVmlhUG9pbnRTbGFja3Muc3BsaWNlKGZvdW5kQXRJbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIHZpYVBvaW50UmVtb3ZlZFxuICAgID8gYWN0aXZlVmlhUG9pbnRTbGFja3MubWFwKHZhbHVlID0+XG4gICAgICAgIHZhbHVlID4gdXBkYXRlZFZpYVBvaW50SW5kZXggPyB2YWx1ZSAtIDEgOiB2YWx1ZSxcbiAgICAgIClcbiAgICA6IGFjdGl2ZVZpYVBvaW50U2xhY2tzO1xufTtcblxuY29uc3QgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50ID0gZXZlbnQgPT4ge1xuICBjb25zdCBzcGFjZSA9IFsxMywgJyAnLCAnU3BhY2ViYXInXTtcbiAgY29uc3QgZW50ZXIgPSBbMzIsICdFbnRlciddO1xuICBjb25zdCBrZXkgPSAoZXZlbnQgJiYgKGV2ZW50LmtleSB8fCBldmVudC53aGljaCB8fCBldmVudC5rZXlDb2RlKSkgfHwgJyc7XG4gIGlmICgha2V5IHx8ICFzcGFjZS5jb25jYXQoZW50ZXIpLmluY2x1ZGVzKGtleSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb25zdCB2YWx1ZSA9IGxvY2F0aW9uID0+XG4gIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5hZGRyZXNzKSB8fFxuICAobG9jYXRpb24gJiYgbG9jYXRpb24uZ3BzICYmIGxvY2F0aW9uLnJlYWR5ICYmICdOeWt5aW5lbiBzaWphaW50aScpIHx8XG4gICcnO1xuXG5jb25zdCBnZXRMb2NhdGlvblR5cGUgPSBsb2NhdGlvbiA9PlxuICBsb2NhdGlvbiAmJiBsb2NhdGlvbi5ncHMgPT09IHRydWUgPyAncG9zaXRpb24nIDogJ2xvY2F0aW9uJztcblxuY29uc3QgZ2V0U2xhY2tUaW1lT3B0aW9ucyA9IHQgPT4ge1xuICBjb25zdCB0aW1lT3B0aW9ucyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8PSA5OyBpKyspIHtcbiAgICBjb25zdCB2YWx1ZUluTWludXRlcyA9IGkgKiAxMDtcbiAgICB0aW1lT3B0aW9ucy5wdXNoKHtcbiAgICAgIGRpc3BsYXlOYW1lOiBgJHt2YWx1ZUluTWludXRlc30gJHt0KCdtaW51dGUtc2hvcnQnKX1gLFxuICAgICAgdmFsdWU6IHZhbHVlSW5NaW51dGVzICogNjAsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRpbWVPcHRpb25zO1xufTtcblxuSXRpbmVyYXJ5U2VhcmNoQ29udHJvbC5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uS2V5UHJlc3M6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHdpZGU6IFByb3BUeXBlcy5ib29sLFxufTtcblxuSXRpbmVyYXJ5U2VhcmNoQ29udHJvbC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiB1bmRlZmluZWQsXG4gIHdpZGU6IGZhbHNlLFxufTtcblxuLyoqXG4gKiBQYW5lbCB0aGF0IHJlbmRlcnMgdHdvIERUQXV0b3N1Z2dlc3Qgc2VhcmNoIGZpZWxkcywgaW5jbHVkaW5nIHZpYXBvaW50IGhhbmRsaW5nXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHNlYXJjaENvbnRleHQgPSB7XG4gKiAgIGlzUGVsaWFzTG9jYXRpb25Bd2FyZTogZmFsc2UgLy8gdHJ1ZSAvIGZhbHNlIGRvZXMgTGV0IFBlbGlhcyBzdWdnZXN0IGJhc2VkIG9uIGN1cnJlbnQgdXNlciBsb2NhdGlvblxuICogICBtaW5pbWFsUmVnZXhwOiB1bmRlZmluZWQgLy8gdXNlZCBmb3IgdGVzdGluZyBtaW4uIHJlZ2V4cC4gRm9yIGV4YW1wbGU6IG5ldyBSZWdFeHAoJy57Mix9JyksXG4gKiAgIGxpbmVSZWdleHA6IHVuZGVmaW5lZCAvLyAgaWRlbnRpZnkgc2VhcmNoZXMgZm9yIHJvdXRlIG51bWJlcnMvbGFiZWxzOiBidXMgfCB0cmFpbiB8IG1ldHJvLiBGb3IgZXhhbXBsZTogbmV3IFJlZ0V4cChcbiAqICAgIC8vICAgJyheWzAtOV0rW2Etel0/JHxeW3l1bGVhcGlua3J0ZHpdJHwoXm1bMTJdP2I/JCkpJyxcbiAqICAgIC8vICAnaScsXG4gKiAgICAvLyAgKSxcbiAqICAgVVJMX1BFTElBUzogJycgLy8gdXJsIGZvciBwZWxpYXMgc2VhcmNoZXNcbiAqICAgZmVlZElEczogWydIU0wnLCAnSFNMTGF1dHRhJ10gLy8gRmVlZElkJ3MgbGlrZSAgW0hTTCwgSFNMTGF1dHRhXVxuICogICBnZW9jb2RpbmdTb3VyY2VzOiBbJ29hJywnb3NtJywnbmxzZmknXSAgLy8gc291cmNlcyBmb3IgZ2VvY29kaW5nXG4gKiAgIGdlb2NvZGluZ1NlYXJjaFBhcmFtczsge30gIC8vIFNlYXJjaHBhcm1hcyBmcm8gZ2VvY29kaW5nXG4gKiAgIGdldEZhdm91cml0ZUxvY2F0aW9uczogKCkgPT4gKHt9KSwgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSBsb2NhdGlvbnMuXG4gKiAgIGdldEZhdm91cml0ZVN0b3BzOiAoKSA9PiAoe30pLCAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSBzdG9wcy5cbiAqICAgZ2V0TGFuZ3VhZ2U6ICgpID0+ICh7fSksICAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgY3VycmVudCBsYW5ndWFnZS5cbiAqICAgZ2V0RmF2b3VyaXRlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgYXJyYXkgb2YgZmF2b3VyaXRlIHJvdXRlcy5cbiAqICAgZ2V0UG9zaXRpb25zOiAoKSA9PiAoe30pLCAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgdXNlcidzIGdlb2xvY2F0aW9uLlxuICogICBnZXRSb3V0ZXNRdWVyeTogKCkgPT4gKHt9KSwgICAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBxdWVyeSBmb3IgZmV0Y2hpbmcgcm91dGVzLlxuICogICBnZXRTdG9wQW5kU3RhdGlvbnNRdWVyeTogKCkgPT4gKHt9KSwgIC8vIEZ1bmN0aW9uIHRoYXQgZmV0Y2hlcyBmYXZvdXJpdGUgc3RvcHMgYW5kIHN0YXRpb25zIGZyb20gZ3JhcGhxbCBBUEkuXG4gKiAgIGdldEZhdm91cml0ZVJvdXRlc1F1ZXJ5OiAoKSA9PiAoe30pLCAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHF1ZXJ5IGZvciBmZXRjaGluZyBmYXZvdXJpdGUgcm91dGVzLlxuICogICBnZXRGYXZvdXJpdGVWZWhpY2xlUmVudGFsU3RhdGlvbnM6ICgpID0+ICh7fSksICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgZmF2b3VyaXRlIGJpa2UgcmVudGFsIHN0YXRpb24uXG4gKiAgIGdldEZhdm91cml0ZVZlaGljbGVSZW50YWxTdGF0aW9uc1F1ZXJ5OiAoKSA9PiAoe30pLCAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgZm9yIGZldGNoaW5nIGZhdm91cml0ZSBiaWtlIHJlbnRhbCBzdGF0aW9ucy5cbiAqICAgc3RhcnRMb2NhdGlvbldhdGNoOiAoKSA9PiAoe30pLCAgICAgICAvLyBGdW5jdGlvbiB0aGF0IGxvY2F0ZXMgdXNlcnMgZ2VvbG9jYXRpb24uXG4gKiAgIHNhdmVTZWFyY2g6ICgpID0+ICh7fSksICAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBzYXZlcyBzZWFyY2ggdG8gb2xkIHNlYXJjaGVzIHN0b3JlLlxuICogICBjbGVhck9sZFNlYXJjaGVzOiAoKSA9PiAoe30pLCAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgY2xlYXJzIG9sZCBzZWFyY2hlcyBzdG9yZS5cbiAqICAgZ2V0RnV0dXJlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybiBmdXR1cmUgcm91dGVzXG4gKiAgIHNhdmVGdXR1cmVSb3V0ZTogKCkgPT4gKHt9KSwgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBzYXZlcyBhIGZ1dHVyZSByb3V0ZVxuICogICBjbGVhckZ1dHVyZVJvdXRlczogKCkgPT4gKHt9KSwgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgY2xlYXJzIGZ1dHVyZSByb3V0ZXNcbiAqIH07XG4gKlxuICogY29uc3Qgb3JpZ2luID0ge1xuICogIGxhdDogNjAuMTY5MTk2LFxuICogIGxvbjogMjQuOTU3Njc0LFxuICogIGFkZHJlc3M6ICdBbGVrc2FudGVyaW5rYXR1LCBIZWxzaW5raScsXG4gKiAgc2V0OiB0cnVlLFxuICogIHJlYWR5OiB0cnVlLFxuICogfVxuICpcbiAqIGNvbnN0IGRlc3RpbmF0aW9uID0ge1xuICogICBsYXQ6IDYwLjE5OTA5MyxcbiAqICAgbG9uOiAyNC45NDA1MzYsXG4gKiAgIGFkZHJlc3M6ICdPcGFzdGluc2lsdGEgNiwgSGVsc2lua2knLFxuICogICBzZXQ6IHRydWUsXG4gKiAgIHJlYWR5OiB0cnVlLFxuICogfVxuICogb25TZWxlY3QoaXRlbSwgaWQpIHtcbiAqICByZXR1cm4gbnVsbDsgIC8vIERlZmluZSB3aGF0IHRvIGRvIHdoZW4gYSBzdWdnZXN0aW9uIGlzIGJlaW5nIHNlbGVjdGVkLiBOb25lIGJ5IGRlZmF1bHQuXG4gKiAgfVxuICogb25DbGVhcihpZCkge1xuICogIHJldHVybiBudWxsOyAgLy8gRGVmaW5lIHdoYXQgdG8gZG8gd2hlbiBhIHN1Z2dlc3Rpb24gaXMgYmVpbmcgc2VsZWN0ZWQuIE5vbmUgYnkgZGVmYXVsdC5cbiAqIH1cbiAqIGNvbnN0IGdldEF1dG9TdWdnZXN0SWNvbnM6IHtcbiAqICAgLy8gQ2FsbGVkIGZvciBldmVyeSBjaXR5IGJpa2Ugc3RhdGlvbiByZW5kZXJlZCBhcyBhIHNlYXJjaCBzdWdnZXN0aW9uLiBTaG91bGQgcmV0dXJuIHRoZSBpY29uIGFuZFxuICogICAvLyBjb2xvciB1c2VkIGZvciB0aGF0IHN0YXRpb24uIFR3byBpY29ucyBhcmUgYXZhaWxhYmxlLCAnY2l0eWJpa2Utc3RvcC1kaWdpdHJhbnNpdCcgYW5kaXR5YmlrZS1zdG9wLWRpZ2l0cmFuc2l0LXNlY29uZGFyeScuXG4gKiAgIGNpdHliaWtlczogc3RhdGlvbiA9PiB7XG4gKiAgICAgIHJldHVybiBbJ2NpdHliaWtlLXN0b3AtZGlnaXRyYW5zaXQnLCAnI2YyYjYyZCddO1xuICogICB9XG4gKiB9XG4gKiBjb25zdCB0YXJnZXRzID0gWydMb2NhdGlvbnMnLCAnU3RvcHMnLCAnUm91dGVzJ107IC8vIERlZmluZXMgd2hhdCB5b3UgYXJlIHNlYXJjaGluZy4gYWxsIGF2YWlsYWJsZSBvcHRpb25zIGFyZSBMb2NhdGlvbnMsIFN0b3BzLCBSb3V0ZXMsIFZlaGljbGVSZW50YWxTdGF0aW9ucywgRnV0dXJlUm91dGVzLCBNYXBQb3NpdGlvbiBhbmQgQ3VycmVudFBvc2l0aW9uLiBMZWF2ZSBlbXB0eSB0byBzZWFyY2ggYWxsIHRhcmdldHMuXG4gKiBjb25zdCBzb3VyY2VzID0gWydGYXZvdXJpdGUnLCAnSGlzdG9yeScsICdEYXRhc291cmNlJ10gLy8gRGVmaW5lcyB3aGVyZSB5b3UgYXJlIHNlYXJjaGluZy4gYWxsIGF2YWlsYWJsZSBhcmU6IEZhdm91cml0ZSwgSGlzdG9yeSAocHJldmlvdXNseSBzZWFyY2hlZCBzZWFyY2hlcyksIGFuZCBEYXRhc291cmNlLiBMZWF2ZSBlbXB0eSB0byB1c2UgYWxsIHNvdXJjZXMuXG4gKiA8RFRBdXRvc3VnZ2VzdFBhbmVsXG4gKiAgICBhcHBFbGVtZW50PXthcHBFbGVtZW50fSAvLyBSZXF1aXJlZC4gUm9vdCBlbGVtZW50J3MgaWQuIE5lZWRlZCBmb3IgcmVhY3QtbW9kYWwgY29tcG9uZW50LlxuICogICAgb3JpZ2luPXtvcmlnaW59IC8vIFNlbGVjdGVkIG9yaWdpbiBwb2ludFxuICogICAgZGVzdGluYXRpb249e2Rlc3RpbmF0aW9ufSAvLyBTZWxlY3RlZCBkZXN0aW5hdGlvbiBwb2ludFxuICogICAgb3JpZ2luUGxhY2VIb2xkZXI9eydHaXZlIG9yaWdpbid9IC8vIE9wdGlvbmFsIEdpdmUgc3RyaW5nIHNob3duIGluaXRpYWxseSBpbnNpZGUgb3JpZ2luIHNlYXJjaCBmaWVsZFxuICogICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcj17J0dpdmUgZGVzdGluYXRpb24nfSAvLyBPcHRpb25hbCBHaXZlIHN0cmluZyBzaG93biBpbml0YWxseSBpbnNpZGUgZGVzdGluYXRpb24gc2VhcmNoIGZpZWxkXG4gKiAgICBpbml0aWFsVmlhUG9pbnRzPXtbXX0gLy8gT3B0aW9uYWwuICBJZiBzaG93VmlhcG9pbnRDb250cm9sIGlzIHNldCB0byB0cnVlLCBwYXNzIGluaXRpYWwgdmlhIHBvaW50cyB0byB0aGUgcGFuZWwuIEN1cnJlbnRseSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgdXBkYXRlVmlhUG9pbnRzPXsoKSA9PiByZXR1cm4gW119IC8vIE9wdGlvbmFsLiBJZiBzaG93VmlhcG9pbnRDb250cm9sIGlzIHNldCB0byB0cnVlLCBkZWZpbmUgaG93IHRvIHVwZGF0ZSB5b3VyIHZpYSBwb2ludCBsaXN0IHdpdGggdGhpcyBmdW5jdGlvbi4gQ3VycmVubHR5IG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZ2l2ZW4uXG4gKiAgICBzd2FwT3JkZXI9eygpID0+IHJldHVybiBudWxsfSAvLyBPcHRpb25hbC4gSWYgc2hvd1N3YXBDb250cm9sIGlzIHNldCB0byB0cnVlLCBkZWZpbmUgaG93IHRvIHN3YXAgb3JkZXIgb2YgeW91ciBwb2ludHMgKG9yaWdpbiwgZGVzdGluYXRpb24sIHZpYXBvaW50cykuIEN1cnJlbnRseSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAqICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e2dldEF1dG9TdWdnZXN0SWNvbnN9XG4gKiAgICBvblNlbGVjdD17dGhpcy5vblNlbGVjdH1cbiAqICAgIG9uQ2xlYXI9e3RoaXMub25DbGVhcn1cbiAqICAgIGxhbmc9XCJmaVwiIC8vIERlZmluZSBsYW5ndWFnZSBmaSBzdiBvciBlbi5cbiAqICAgIGFkZEFuYWx5dGljc0V2ZW50PXtudWxsfSAvLyBPcHRpb25hbC4geW91IGNhbiByZWNvcmQgYW4gYW5hbHl0aWNzIGV2ZW50IGlmIHlvdSB3aXNoLiBpZiBwYXNzZWQsIGNvbXBvbmVudCB3aWxsIHBhc3MgYW4gY2F0ZWdvcnksIGFjdGlvbiwgbmFtZSBwYXJhbWV0ZXJzIHRvIGFkZEFuYWx5dGljc0V2ZW50XG4gKiAgICBkaXNhYmxlQXV0b0ZvY3VzPXtmYWxzZX0gLy8gT3B0aW9uYWwuIHVzZSB0aGlzIHRvIGRpc2FibGUgYXV0b2ZvY3VzIGNvbXBsZXRlbHkgZnJvbSBEVEF1dG9zdWdnZXN0UGFuZWxcbiAqICAgIHNvdXJjZXM9e3NvdXJjZXN9XG4gKiAgICB0YXJnZXRzPXt0YXJnZXRzfVxuICogICAgaXNNb2JpbGUgIC8vIE9wdGlvbmFsLiBEZWZhdWx0cyB0byBmYWxzZS4gV2hldGhlciB0byB1c2UgbW9iaWxlIHNlYXJjaC5cbiAqICAgIG9yaWdpbk1vYmlsZUxhYmVsPVwiT3JpZ2luIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBvcmlnaW4gZmllbGQgb24gbW9iaWxlLlxuICogICAgZGVzdGluYXRpb25Nb2JpbGVMYWJlbD1cIkRlc3RpbmF0aW9uIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBkZXN0aW5hdGlvbiBmaWVsZCBvbiBtb2JpbGUuXG4gKiAgICBoYW5kbGVGb2N1c0NoYW5nZT17KCkgPT4ge319IC8vIE9wdGlvbmFsLiBJZiBkZWZpbmVkIG92ZXJyaWRlcyBkZWZhdWx0IG9uRm9jdXNDaGFuZ2UgYmVoYXZpb3VyXG4gKiAgICBzaG93U3dhcENvbnRyb2w9e2ZhbHNlfSAvLyBPcHRpb25hbC5cbiAqICAgIHNob3dWaWFwb2ludENvbnRyb2w9e2ZhbHNlfSAvLyBPcHRpb25hbC5cbiAqL1xuXG5jb25zdCBsb2NhdGlvblNoYXBlID0gUHJvcFR5cGVzLnNoYXBlKHtcbiAgYWRkcmVzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgbGF0OiBQcm9wVHlwZXMubnVtYmVyLFxuICBsb246IFByb3BUeXBlcy5udW1iZXIsXG4gIGxvY2F0aW9uU2xhY2s6IFByb3BUeXBlcy5udW1iZXIsXG59KTtcblxuY2xhc3MgRFRBdXRvc3VnZ2VzdFBhbmVsIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBhcHBFbGVtZW50OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb3JpZ2luOiBsb2NhdGlvblNoYXBlLFxuICAgIGRlc3RpbmF0aW9uOiBsb2NhdGlvblNoYXBlLFxuICAgIG9yaWdpblBsYWNlSG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlc3RpbmF0aW9uUGxhY2VIb2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdmlhUG9pbnRzOiBQcm9wVHlwZXMuYXJyYXlPZihsb2NhdGlvblNoYXBlKSxcbiAgICB1cGRhdGVWaWFQb2ludHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgc3dhcE9yZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzZWFyY2hQYW5lbFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VhcmNoQ29udGV4dDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIFVSTF9QRUxJQVM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgfSkuaXNSZXF1aXJlZCxcbiAgICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkNsZWFyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBhZGRBbmFseXRpY3NFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbGFuZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIGRpc2FibGVBdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAgIHNvdXJjZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIHRhcmdldHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIGZpbHRlclJlc3VsdHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvcmlnaW5Nb2JpbGVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHJlZlBvaW50OiBsb2NhdGlvblNoYXBlLFxuICAgIG1vZGVTZXQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29sb3JzOiBQcm9wVHlwZXMub2JqZWN0T2YoUHJvcFR5cGVzLnN0cmluZyksXG4gICAgZ2V0QXV0b1N1Z2dlc3RJY29uczogUHJvcFR5cGVzLm9iamVjdE9mKFByb3BUeXBlcy5mdW5jKSxcbiAgICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlcixcbiAgICB9KSxcbiAgICBzaG93U2Nyb2xsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvbkZvY3VzQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBpc0VtYmVkZGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzaG93U3dhcENvbnRyb2w6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dWaWFwb2ludENvbnRyb2w6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dTbGFja0NvbnRyb2w6IFByb3BUeXBlcy5ib29sLFxuICAgIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBvcmlnaW46IHVuZGVmaW5lZCxcbiAgICBkZXN0aW5hdGlvbjogdW5kZWZpbmVkLFxuICAgIHZpYVBvaW50czogW10sXG4gICAgb3JpZ2luUGxhY2VIb2xkZXI6ICdnaXZlLW9yaWdpbicsXG4gICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcjogJ2dpdmUtZGVzdGluYXRpb24nLFxuICAgIHN3YXBPcmRlcjogdW5kZWZpbmVkLFxuICAgIHVwZGF0ZVZpYVBvaW50czogKCkgPT4ge30sXG4gICAgc2VhcmNoUGFuZWxUZXh0OiB1bmRlZmluZWQsXG4gICAgc291cmNlczogW10sXG4gICAgdGFyZ2V0czogW10sXG4gICAgZmlsdGVyUmVzdWx0czogdW5kZWZpbmVkLFxuICAgIG9uQ2xlYXI6IHVuZGVmaW5lZCxcbiAgICBnZXRBdXRvU3VnZ2VzdEljb25zOiB1bmRlZmluZWQsXG4gICAgcmVmUG9pbnQ6IHVuZGVmaW5lZCxcbiAgICBhZGRBbmFseXRpY3NFdmVudDogdW5kZWZpbmVkLFxuICAgIGRpc2FibGVBdXRvRm9jdXM6IGZhbHNlLFxuICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICBoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICBvcmlnaW5Nb2JpbGVMYWJlbDogbnVsbCxcbiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsOiBudWxsLFxuICAgIG1vZGVTZXQ6IHVuZGVmaW5lZCxcbiAgICBjb2xvcnM6IGRlZmF1bHRDb2xvcnMsXG4gICAgZm9udFdlaWdodHM6IHtcbiAgICAgIG1lZGl1bTogNTAwLFxuICAgIH0sXG4gICAgc2hvd1Njcm9sbDogZmFsc2UsXG4gICAgb25Gb2N1c0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGlzRW1iZWRkZWQ6IGZhbHNlLFxuICAgIHNob3dTd2FwQ29udHJvbDogZmFsc2UsXG4gICAgc2hvd1ZpYXBvaW50Q29udHJvbDogZmFsc2UsXG4gICAgc2hvd1NsYWNrQ29udHJvbDogZmFsc2UsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGFjdGl2ZVNsYWNrSW5wdXRzOiBbXSxcbiAgICAgIHJlZnM6IFtdLFxuICAgIH07XG4gIH1cblxuICBzdG9yZVJlZmVyZW5jZSA9IHJlZiA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHsgcmVmczogWy4uLnByZXZTdGF0ZS5yZWZzLCByZWZdIH0pKTtcbiAgfTtcblxuICBoYW5kbGVGb2N1c0NoYW5nZSA9ICgpID0+IHtcbiAgICBjb25zdCB7IGRlc3RpbmF0aW9uIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmICghZGVzdGluYXRpb24gfHwgIWRlc3RpbmF0aW9uLmxhdCkge1xuICAgICAgdGhpcy5zdGF0ZS5yZWZzWzFdLmZvY3VzKCk7XG4gICAgfVxuICB9O1xuXG4gIHVwZGF0ZVZpYVBvaW50cyA9IHZpYVBvaW50cyA9PiB7XG4gICAgaWYgKHZpYVBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucHJvcHMudXBkYXRlVmlhUG9pbnRzKFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcm9wcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzLmZpbHRlcih2cCA9PiAhaXNWaWFQb2ludEVtcHR5KHZwKSkpO1xuICB9O1xuXG4gIGhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayA9IHZpYVBvaW50SW5kZXggPT4ge1xuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVTbGFja0lucHV0czogYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXModmlhUG9pbnRJbmRleClcbiAgICAgICAgPyB1cGRhdGVWaWFQb2ludFNsYWNrKGFjdGl2ZVNsYWNrSW5wdXRzLCB2aWFQb2ludEluZGV4KVxuICAgICAgICA6IGFjdGl2ZVNsYWNrSW5wdXRzLmNvbmNhdChbdmlhUG9pbnRJbmRleF0pLFxuICAgIH0pO1xuICB9O1xuXG4gIGhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWQgPSAoc2xhY2tUaW1lSW5TZWNvbmRzLCBpKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdFZGl0VmlhUG9pbnRTdG9wRHVyYXRpb24nLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogc2xhY2tUaW1lSW5TZWNvbmRzIC8gNjAsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2sgPSBOdW1iZXIucGFyc2VJbnQoc2xhY2tUaW1lSW5TZWNvbmRzLCAxMCk7XG4gICAgdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKTtcbiAgfTtcblxuICBoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQgPSAodmlhUG9pbnRMb2NhdGlvbiwgaSkgPT4ge1xuICAgIHRoaXMucHJvcHMuaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkKHZpYVBvaW50TG9jYXRpb24sIGkpO1xuICB9O1xuXG4gIGhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2sgPSB2aWFQb2ludEluZGV4ID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCh7XG4gICAgICAgIGFjdGlvbjogJ1JlbW92ZUpvdXJuZXlWaWFQb2ludCcsXG4gICAgICAgIGNhdGVnb3J5OiAnSXRpbmVyYXJ5U2V0dGluZ3MnLFxuICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnNwbGljZSh2aWFQb2ludEluZGV4LCAxKTtcbiAgICB0aGlzLnNldFN0YXRlKFxuICAgICAge1xuICAgICAgICBhY3RpdmVTbGFja0lucHV0czogdXBkYXRlVmlhUG9pbnRTbGFjayhcbiAgICAgICAgICBhY3RpdmVTbGFja0lucHV0cyxcbiAgICAgICAgICB2aWFQb2ludEluZGV4LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgKCkgPT4gdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKSxcbiAgICApO1xuICB9O1xuXG4gIGhhbmRsZUFkZFZpYVBvaW50Q2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdBZGRKb3VybmV5VmlhUG9pbnQnLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogJ1F1aWNrU2V0dGluZ3NCdXR0b24nLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50cy5wdXNoKGdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlcigpKTtcbiAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgc3RhdGUgc28gdGhhdCBwbGFjZUhvbGRlciB3aWxsIHNob3cgdXAgaW4gcGFuZWwuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFjY2Vzcy1zdGF0ZS1pbi1zZXRzdGF0ZVxuICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZSk7XG4gIH07XG5cbiAgaGFuZGxlU3dhcE9yZGVyQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdTd2l0Y2hKb3VybmV5U3RhcnRBbmRFbmRQb2ludE9yZGVyJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdJdGluZXJhcnlTZXR0aW5ncycsXG4gICAgICAgIG5hbWU6IG51bGwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnJldmVyc2UoKTtcbiAgICB0aGlzLnByb3BzLnN3YXBPcmRlcigpO1xuICB9O1xuXG4gIGdldFNsYWNrRGlzcGxheSA9IHNsYWNrSW5TZWNvbmRzID0+XG4gICAgYCR7c2xhY2tJblNlY29uZHMgLyA2MH0gJHt0aGlzLnByb3BzLnQoJ21pbnV0ZS1zaG9ydCcsIHtcbiAgICAgIGxuZzogdGhpcy5wcm9wcy5sYW5nLFxuICAgIH0pfWA7XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG9yaWdpbixcbiAgICAgIHNlYXJjaFBhbmVsVGV4dCxcbiAgICAgIHNlYXJjaENvbnRleHQsXG4gICAgICBkaXNhYmxlQXV0b0ZvY3VzLFxuICAgICAgdmlhUG9pbnRzLFxuICAgICAgb3JpZ2luTW9iaWxlTGFiZWwsXG4gICAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsLFxuICAgICAgZm9udFdlaWdodHMsXG4gICAgICBvbkZvY3VzQ2hhbmdlLFxuICAgICAgc2hvd1N3YXBDb250cm9sLFxuICAgICAgc2hvd1ZpYXBvaW50Q29udHJvbCxcbiAgICAgIHQsXG4gICAgICBsYW5nOiBsbmcsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBwcmltYXJ5IH0gPSB0aGlzLnByb3BzLmNvbG9ycztcbiAgICBjb25zdCB7IGFjdGl2ZVNsYWNrSW5wdXRzIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHNsYWNrVGltZSA9IGdldFNsYWNrVGltZU9wdGlvbnModCk7XG4gICAgY29uc3QgZGVmYXVsdFNsYWNrVGltZVZhbHVlID0gMDtcbiAgICBjb25zdCBnZXRWaWFQb2ludFNsYWNrVGltZU9yRGVmYXVsdCA9IChcbiAgICAgIHZpYVBvaW50LFxuICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFNsYWNrVGltZVZhbHVlLFxuICAgICkgPT4gKHZpYVBvaW50ICYmIHZpYVBvaW50LmxvY2F0aW9uU2xhY2spIHx8IGRlZmF1bHRWYWx1ZTtcbiAgICBjb25zdCBpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUgPSBpbmRleCA9PlxuICAgICAgYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXMoaW5kZXgpO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3goW1xuICAgICAgICAgIHN0eWxlc1snYXV0b3N1Z2dlc3QtcGFuZWwnXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzbWFsbDogdGhpcy5wcm9wcy5pc01vYmlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAnLS1jb2xvcic6IHByaW1hcnksXG4gICAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7JyAnfVxuICAgICAgICB7c2VhcmNoUGFuZWxUZXh0ID8gKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPXtzdHlsZXNbJ2F1dG9zdWdnZXN0LXNlYXJjaHBhbmVsLXRleHQnXX0+XG4gICAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICAgIHtzZWFyY2hQYW5lbFRleHR9XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snb3JpZ2luLWlucHV0LWNvbnRhaW5lciddfT5cbiAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICAgICAgaWNvbj1cIm9yaWdpbkVsbGlwc2VcIlxuICAgICAgICAgICAgaWQ9XCJvcmlnaW5cIlxuICAgICAgICAgICAgYXV0b0ZvY3VzPXtcbiAgICAgICAgICAgICAgZGlzYWJsZUF1dG9Gb2N1cyA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6ICF0aGlzLnByb3BzLmlzTW9iaWxlICYmICFvcmlnaW4ubGF0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdG9yZVJlZj17dGhpcy5zdG9yZVJlZmVyZW5jZX1cbiAgICAgICAgICAgIHJlZlBvaW50PXt0aGlzLnByb3BzLnJlZlBvaW50fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMb2NhdGlvblR5cGUob3JpZ2luKX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLm9yaWdpblBsYWNlSG9sZGVyfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlKG9yaWdpbil9XG4gICAgICAgICAgICBzZWFyY2hDb250ZXh0PXtzZWFyY2hDb250ZXh0fVxuICAgICAgICAgICAgZ2V0QXV0b1N1Z2dlc3RJY29ucz17dGhpcy5wcm9wcy5nZXRBdXRvU3VnZ2VzdEljb25zfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMucHJvcHMub25TZWxlY3R9XG4gICAgICAgICAgICBvbkNsZWFyPXt0aGlzLnByb3BzLm9uQ2xlYXJ9XG4gICAgICAgICAgICBmb2N1c0NoYW5nZT17b25Gb2N1c0NoYW5nZSB8fCB0aGlzLmhhbmRsZUZvY3VzQ2hhbmdlfVxuICAgICAgICAgICAgbGFuZz17dGhpcy5wcm9wcy5sYW5nfVxuICAgICAgICAgICAgc291cmNlcz17dGhpcy5wcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgdGFyZ2V0cz17dGhpcy5wcm9wcy50YXJnZXRzfVxuICAgICAgICAgICAgZmlsdGVyUmVzdWx0cz17dGhpcy5wcm9wcy5maWx0ZXJSZXN1bHRzfVxuICAgICAgICAgICAgaXNNb2JpbGU9e3RoaXMucHJvcHMuaXNNb2JpbGV9XG4gICAgICAgICAgICBjb2xvcnM9e3RoaXMucHJvcHMuY29sb3JzfVxuICAgICAgICAgICAgbW9iaWxlTGFiZWw9e29yaWdpbk1vYmlsZUxhYmVsfVxuICAgICAgICAgICAgZm9udFdlaWdodHM9e3RoaXMucHJvcHMuZm9udFdlaWdodHN9XG4gICAgICAgICAgICBtb2RlU2V0PXt0aGlzLnByb3BzLm1vZGVTZXR9XG4gICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICBpc0VtYmVkZGVkPXt0aGlzLnByb3BzLmlzRW1iZWRkZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7KHNob3dTd2FwQ29udHJvbCB8fCBzaG93VmlhcG9pbnRDb250cm9sKSAmJiAoXG4gICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcHBvc2l0ZX1cbiAgICAgICAgICAgICAgZW5hYmxlZD17c2hvd1N3YXBDb250cm9sfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZVN3YXBPcmRlckNsaWNrKCl9XG4gICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICBpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQoZSkgJiYgdGhpcy5oYW5kbGVTd2FwT3JkZXJDbGljaygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnLCB7IGxuZyB9KX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEljb24gaW1nPVwib3Bwb3NpdGVcIiBjb2xvcj17cHJpbWFyeX0gLz5cbiAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3ZpYVBvaW50cy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3JlY3RhbmdsZS1jb250YWluZXInXX0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJlY3RhbmdsZX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAgPFJlYWN0U29ydGFibGVcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnRzLWNvbnRhaW5lciddfVxuICAgICAgICAgIGxpc3Q9e3ZpYVBvaW50c31cbiAgICAgICAgICBoYW5kbGU9e2AuJHtzdHlsZXNbJ3ZpYXBvaW50LWJlZm9yZSddfWB9XG4gICAgICAgICAgYW5pbWF0aW9uPXsyMDB9XG4gICAgICAgICAgZGlzYWJsZWQ9e3ZpYVBvaW50cy5sZW5ndGggPD0gMX1cbiAgICAgICAgICBzZXRMaXN0PXtpdGVtcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdWaWFQb2ludHMgPSBpdGVtcy5maWx0ZXIodnAgPT4gIWlzVmlhUG9pbnRFbXB0eSh2cCkpO1xuICAgICAgICAgICAgaWYgKG5ld1ZpYVBvaW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJvcHMudXBkYXRlVmlhUG9pbnRzKG5ld1ZpYVBvaW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt2aWFQb2ludHMubWFwKChvLCBpKSA9PiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goc3R5bGVzWyd2aWFwb2ludC1jb250YWluZXInXSl9XG4gICAgICAgICAgICAgIGtleT17YHZpYXBvaW50LSR7aX1gfSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2xpZ2h0LWdyYXktYmFja2dyb3VuZCddfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJvd30+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWyd2aWFwb2ludC1iZWZvcmUnXX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ZpYVBvaW50cy5sZW5ndGggPiAxID8geyBjdXJzb3I6ICdtb3ZlJyB9IDoge319XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt2aWFQb2ludHMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwiZWxsaXBzaXNcIiByb3RhdGU9ezkwfSBjb2xvcj17cHJpbWFyeX0gLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICAgICAgICAgICAgICAgIGAke3N0eWxlc1sndmlhcG9pbnQtaW5wdXQtY29udGFpbmVyJ119ICR7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXNbYHZpYXBvaW50LSR7aSArIDF9YF1cbiAgICAgICAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPERUQXV0b1N1Z2dlc3RcbiAgICAgICAgICAgICAgICAgICAgICBhcHBFbGVtZW50PXt0aGlzLnByb3BzLmFwcEVsZW1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cIm1hcE1hcmtlclwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ2aWEtcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD17dCgndmlhLXBvaW50LWluZGV4Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGkgKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG5nLFxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1cz17XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlID8gZmFsc2UgOiAhdGhpcy5wcm9wcy5pc01vYmlsZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInZpYS1wb2ludFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidmlhcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgcmVmUG9pbnQ9e3RoaXMucHJvcHMucmVmUG9pbnR9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyhvICYmIG8uYWRkcmVzcykgfHwgJyd9XG4gICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMucHJvcHMub25TZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGVhcj17dGhpcy5wcm9wcy5vbkNsZWFyfVxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVZpYVBvaW50cz17aXRlbSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQoaXRlbSwgaSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgbGFuZz17dGhpcy5wcm9wcy5sYW5nfVxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXM9e3RoaXMucHJvcHMuc291cmNlc31cbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzPXt0aGlzLnByb3BzLnRhcmdldHN9XG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUmVzdWx0cz17dGhpcy5wcm9wcy5maWx0ZXJSZXN1bHRzfVxuICAgICAgICAgICAgICAgICAgICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e3RoaXMucHJvcHMuZ2V0QXV0b1N1Z2dlc3RJY29uc31cbiAgICAgICAgICAgICAgICAgICAgICBpc01vYmlsZT17dGhpcy5wcm9wcy5pc01vYmlsZX1cbiAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0cz17dGhpcy5wcm9wcy5mb250V2VpZ2h0c31cbiAgICAgICAgICAgICAgICAgICAgICBtb2RlU2V0PXt0aGlzLnByb3BzLm1vZGVTZXR9XG4gICAgICAgICAgICAgICAgICAgICAgY29sb3JzPXt0aGlzLnByb3BzLmNvbG9yc31cbiAgICAgICAgICAgICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLnNob3dTbGFja0NvbnRyb2wgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydhZGQtdmlhLXBvaW50LXNsYWNrJ119XG4gICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZD17dGhpcy5wcm9wcy5zaG93VmlhcG9pbnRDb250cm9sfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlVG9nZ2xlVmlhUG9pbnRTbGFja0NsaWNrKGkpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2soaSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZShpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGluZGV4OiBpICsgMSwgbG5nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICB3aWRlXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e3ByaW1hcnl9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgeyFpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUoaSkgJiZcbiAgICAgICAgICAgICAgICAgIHZpYVBvaW50c1tpXSAmJlxuICAgICAgICAgICAgICAgICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2sgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3ZpYXBvaW50LXNsYWNrLXRpbWUnXX0+e2Ake3QoXG4gICAgICAgICAgICAgICAgICAgICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCcsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG5nLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICl9OiAke3RoaXMuZ2V0U2xhY2tEaXNwbGF5KFxuICAgICAgICAgICAgICAgICAgICAgIHZpYVBvaW50c1tpXS5sb2NhdGlvblNsYWNrLFxuICAgICAgICAgICAgICAgICAgICApfWB9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1snaW5wdXQtdmlhcG9pbnQtc2xhY2stY29udGFpbmVyJ10sIHtcbiAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkOiAhaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlKGkpLFxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snc2VsZWN0LXdyYXBwZXInXX0+XG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICBpZD17YHZpYXBvaW50LXNsYWNrLSR7aX1gfVxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXt0KCd2aWFwb2ludC1zbGFjay1hbW91bnQnLCB7IGxuZyB9KX1cbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtzbGFja1RpbWV9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dldFZpYVBvaW50U2xhY2tUaW1lT3JEZWZhdWx0KHZpYVBvaW50c1tpXSl9XG4gICAgICAgICAgICAgICAgICAgICAgdmlhUG9pbnRJbmRleD17aX1cbiAgICAgICAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWyd0aW1lLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e3ByaW1hcnl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uU2xhY2tUaW1lU2VsZWN0ZWQ9e3RoaXMuaGFuZGxlVmlhUG9pbnRTbGFja1RpbWVTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPEl0aW5lcmFyeVNlYXJjaENvbnRyb2xcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmVtb3ZlLXZpYS1wb2ludCddfVxuICAgICAgICAgICAgICAgIGVuYWJsZWQ9e3RoaXMucHJvcHMuc2hvd1ZpYXBvaW50Q29udHJvbH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2soaSl9XG4gICAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgICAgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2soaSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnLCB7XG4gICAgICAgICAgICAgICAgICBpbmRleDogaSArIDEsXG4gICAgICAgICAgICAgICAgICBsbmcsXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0cmFzaFwiIGNvbG9yPXtwcmltYXJ5fSAvPlxuICAgICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SZWFjdFNvcnRhYmxlPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydkZXN0aW5hdGlvbi1pbnB1dC1jb250YWluZXInXX0+XG4gICAgICAgICAgPERUQXV0b1N1Z2dlc3RcbiAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgIGljb249XCJtYXBNYXJrZXJcIlxuICAgICAgICAgICAgaWQ9XCJkZXN0aW5hdGlvblwiXG4gICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogIXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgIU51bWJlci5pc05hTihvcmlnaW4ubGF0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RvcmVSZWY9e3RoaXMuc3RvcmVSZWZlcmVuY2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5kZXN0aW5hdGlvblBsYWNlSG9sZGVyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMb2NhdGlvblR5cGUodGhpcy5wcm9wcy5kZXN0aW5hdGlvbil9XG4gICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICBzZWFyY2hDb250ZXh0PXtzZWFyY2hDb250ZXh0fVxuICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMucHJvcHMub25TZWxlY3R9XG4gICAgICAgICAgICBvbkNsZWFyPXt0aGlzLnByb3BzLm9uQ2xlYXJ9XG4gICAgICAgICAgICByZWZQb2ludD17dGhpcy5wcm9wcy5yZWZQb2ludH1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZSh0aGlzLnByb3BzLmRlc3RpbmF0aW9uKX1cbiAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgIHNvdXJjZXM9e3RoaXMucHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIHRhcmdldHM9e3RoaXMucHJvcHMudGFyZ2V0c31cbiAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgIGlzTW9iaWxlPXt0aGlzLnByb3BzLmlzTW9iaWxlfVxuICAgICAgICAgICAgbW9iaWxlTGFiZWw9e2Rlc3RpbmF0aW9uTW9iaWxlTGFiZWx9XG4gICAgICAgICAgICBmb250V2VpZ2h0cz17dGhpcy5wcm9wcy5mb250V2VpZ2h0c31cbiAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgIGNvbG9ycz17dGhpcy5wcm9wcy5jb2xvcnN9XG4gICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICBpc0VtYmVkZGVkPXt0aGlzLnByb3BzLmlzRW1iZWRkZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7KHNob3dTd2FwQ29udHJvbCB8fCBzaG93VmlhcG9pbnRDb250cm9sKSAmJiAoXG4gICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1snYWRkLXZpYS1wb2ludCddLCBzdHlsZXMubW9yZSwge1xuICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogdmlhUG9pbnRzLmxlbmd0aCA+IDQsXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBlbmFibGVkPXtzaG93VmlhcG9pbnRDb250cm9sICYmIHZpYVBvaW50cy5sZW5ndGggPT09IDB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlQWRkVmlhUG9pbnRDbGljaygpfVxuICAgICAgICAgICAgICBvbktleVByZXNzPXtlID0+XG4gICAgICAgICAgICAgICAgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmIHRoaXMuaGFuZGxlQWRkVmlhUG9pbnRDbGljaygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnYWRkLXZpYS1idXR0b24tbGFiZWwnLCB7IGxuZyB9KX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICBpbWc9XCJ2aWFwb2ludFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9ezEuMjV9XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXsxLjM3NX1cbiAgICAgICAgICAgICAgICBjb2xvcj17cHJpbWFyeX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgRFRBdXRvc3VnZ2VzdFBhbmVsV2l0aFRyYW5zbGF0aW9uID0gd2l0aFRyYW5zbGF0aW9uKCkoRFRBdXRvc3VnZ2VzdFBhbmVsKTtcblxuZXhwb3J0IGRlZmF1bHQgcHJvcHMgPT4ge1xuICByZXR1cm4gKFxuICAgIDxJMThuZXh0UHJvdmlkZXIgaTE4bj17aTE4bn0+XG4gICAgICA8RFRBdXRvc3VnZ2VzdFBhbmVsV2l0aFRyYW5zbGF0aW9uIHsuLi5wcm9wc30gLz5cbiAgICA8L0kxOG5leHRQcm92aWRlcj5cbiAgKTtcbn07XG4iLCJpbXBvcnQgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCI7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoZSwgdCkge1xuICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307XG4gIHZhciBvLFxuICAgIHIsXG4gICAgaSA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoZSwgdCk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIG4gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIGZvciAociA9IDA7IHIgPCBuLmxlbmd0aDsgcisrKSBvID0gbltyXSwgLTEgPT09IHQuaW5kZXhPZihvKSAmJiB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsIG8pICYmIChpW29dID0gZVtvXSk7XG4gIH1cbiAgcmV0dXJuIGk7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHIsIGUpIHtcbiAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHt9O1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBuIGluIHIpIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsIG4pKSB7XG4gICAgaWYgKC0xICE9PSBlLmluZGV4T2YobikpIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxuZXhwb3J0IHsgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgYXMgZGVmYXVsdCB9OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJ0b1Byb3BlcnR5S2V5IiwidCIsImkiLCJyIiwiZSIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl9kZWZpbmVQcm9wZXJ0eSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJzdHlsZUluamVjdCIsImNzcyIsInJlZiIsImluc2VydEF0IiwiZG9jdW1lbnQiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwiZmlyc3RDaGlsZCIsImluc2VydEJlZm9yZSIsImFwcGVuZENoaWxkIiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJjcmVhdGVUZXh0Tm9kZSIsIlNlbGVjdCIsIm9wdGlvbnMiLCJvblNsYWNrVGltZVNlbGVjdGVkIiwidmlhUG9pbnRJbmRleCIsImlkIiwibGFiZWwiLCJpY29uIiwibGFiZWxJZCIsInNlbGVjdGVkSXRlbSIsImZpbmQiLCJvcHRpb24iLCJpc09wZW4iLCJnZXRUb2dnbGVCdXR0b25Qcm9wcyIsImdldE1lbnVQcm9wcyIsImdldEl0ZW1Qcm9wcyIsImdldExhYmVsUHJvcHMiLCJoaWdobGlnaHRlZEluZGV4IiwidXNlU2VsZWN0IiwiaXRlbXMiLCJpdGVtVG9TdHJpbmciLCJpdGVtIiwiZGlzcGxheU5hbWUiLCJvblNlbGVjdGVkSXRlbUNoYW5nZSIsIm5ld0l0ZW0iLCJSZWFjdCIsImNsYXNzTmFtZSIsInN0eWxlcyIsImFzc2lnbiIsImN4IiwibWFwIiwiaW5kZXgiLCJrZXkiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJudW1iZXIiLCJpc1JlcXVpcmVkIiwiZnVuYyIsImFycmF5T2YiLCJzaGFwZSIsInN0cmluZyIsIm5vZGUiLCJpMThuIiwiY3JlYXRlSW5zdGFuY2UiLCJmYWxsYmFja0xuZyIsInJlc291cmNlcyIsImRlIiwidHJhbnNsYXRpb24iLCJlbiIsImZpIiwicGwiLCJzdiIsImRlZmF1bHROUyIsInJlYWN0IiwidXNlU3VzcGVuc2UiLCJpbml0IiwiZ2V0RW1wdHlWaWFQb2ludFBsYWNlSG9sZGVyIiwiaXNWaWFQb2ludEVtcHR5IiwidmlhUG9pbnQiLCJ1bmRlZmluZWQiLCJpc0VtcHR5Iiwia2V5cyIsImxlbmd0aCIsImluY2x1ZGVzIiwiSXRpbmVyYXJ5U2VhcmNoQ29udHJvbCIsIl9yZWYiLCJjaGlsZHJlbiIsImVuYWJsZWQiLCJvbkNsaWNrIiwib25LZXlQcmVzcyIsIndpZGUiLCJyZXN0IiwibiIsImhhc093blByb3BlcnR5IiwiaW5kZXhPZiIsIm9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInJvbGUiLCJ0YWJJbmRleCIsInVwZGF0ZVZpYVBvaW50U2xhY2siLCJhY3RpdmVWaWFQb2ludFNsYWNrcyIsInVwZGF0ZWRWaWFQb2ludEluZGV4IiwidmlhUG9pbnRSZW1vdmVkIiwiZm91bmRBdEluZGV4Iiwic3BsaWNlIiwiaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50IiwiZXZlbnQiLCJ3aGljaCIsImtleUNvZGUiLCJjb25jYXQiLCJwcmV2ZW50RGVmYXVsdCIsImxvY2F0aW9uIiwiYWRkcmVzcyIsImdwcyIsInJlYWR5IiwiZ2V0TG9jYXRpb25UeXBlIiwiYm9vbCIsImRlZmF1bHRQcm9wcyIsImxvY2F0aW9uU2hhcGUiLCJsYXQiLCJsb24iLCJsb2NhdGlvblNsYWNrIiwiRFRBdXRvc3VnZ2VzdFBhbmVsIiwiQ29tcG9uZW50IiwicHJvcHMiLCJzdXBlciIsInRoaXMiLCJzZXRTdGF0ZSIsInByZXZTdGF0ZSIsInJlZnMiLCJkZXN0aW5hdGlvbiIsInN0YXRlIiwiZm9jdXMiLCJ2aWFQb2ludHMiLCJ1cGRhdGVWaWFQb2ludHMiLCJmaWx0ZXIiLCJ2cCIsImFjdGl2ZVNsYWNrSW5wdXRzIiwic2xhY2tUaW1lSW5TZWNvbmRzIiwiYWRkQW5hbHl0aWNzRXZlbnQiLCJhY3Rpb24iLCJjYXRlZ29yeSIsIm5hbWUiLCJwYXJzZUludCIsInZpYVBvaW50TG9jYXRpb24iLCJoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQiLCJwdXNoIiwicmV2ZXJzZSIsInN3YXBPcmRlciIsInNsYWNrSW5TZWNvbmRzIiwibG5nIiwibGFuZyIsInJlbmRlciIsIm9yaWdpbiIsInNlYXJjaFBhbmVsVGV4dCIsInNlYXJjaENvbnRleHQiLCJkaXNhYmxlQXV0b0ZvY3VzIiwib3JpZ2luTW9iaWxlTGFiZWwiLCJkZXN0aW5hdGlvbk1vYmlsZUxhYmVsIiwiZm9udFdlaWdodHMiLCJvbkZvY3VzQ2hhbmdlIiwic2hvd1N3YXBDb250cm9sIiwic2hvd1ZpYXBvaW50Q29udHJvbCIsInByaW1hcnkiLCJjb2xvcnMiLCJzbGFja1RpbWUiLCJ0aW1lT3B0aW9ucyIsInZhbHVlSW5NaW51dGVzIiwiZ2V0U2xhY2tUaW1lT3B0aW9ucyIsImdldFZpYVBvaW50U2xhY2tUaW1lT3JEZWZhdWx0IiwiZGVmYXVsdFZhbHVlIiwiaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlIiwiaXNNb2JpbGUiLCJtZWRpdW0iLCJEVEF1dG9TdWdnZXN0IiwiYXBwRWxlbWVudCIsImF1dG9Gb2N1cyIsInN0b3JlUmVmIiwic3RvcmVSZWZlcmVuY2UiLCJyZWZQb2ludCIsInBsYWNlaG9sZGVyIiwib3JpZ2luUGxhY2VIb2xkZXIiLCJnZXRBdXRvU3VnZ2VzdEljb25zIiwib25TZWxlY3QiLCJvbkNsZWFyIiwiZm9jdXNDaGFuZ2UiLCJoYW5kbGVGb2N1c0NoYW5nZSIsInNvdXJjZXMiLCJ0YXJnZXRzIiwiZmlsdGVyUmVzdWx0cyIsIm1vYmlsZUxhYmVsIiwibW9kZVNldCIsInNob3dTY3JvbGwiLCJpc0VtYmVkZGVkIiwib3Bwb3NpdGUiLCJoYW5kbGVTd2FwT3JkZXJDbGljayIsIkljb24iLCJpbWciLCJjb2xvciIsInJlY3RhbmdsZSIsIlJlYWN0U29ydGFibGUiLCJsaXN0IiwiaGFuZGxlIiwiYW5pbWF0aW9uIiwiZGlzYWJsZWQiLCJzZXRMaXN0IiwibmV3VmlhUG9pbnRzIiwicm93IiwiY3Vyc29yIiwicm90YXRlIiwiYXJpYUxhYmVsIiwiaGFuZGxlVmlhUG9pbnRzIiwic2hvd1NsYWNrQ29udHJvbCIsImhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayIsImdldFNsYWNrRGlzcGxheSIsImhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWQiLCJoYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrIiwiaXNOYU4iLCJkZXN0aW5hdGlvblBsYWNlSG9sZGVyIiwibW9yZSIsImhhbmRsZUFkZFZpYVBvaW50Q2xpY2siLCJ3aWR0aCIsImhlaWdodCIsImRlZmF1bHRDb2xvcnMiLCJVUkxfUEVMSUFTIiwib2JqZWN0T2YiLCJEVEF1dG9zdWdnZXN0UGFuZWxXaXRoVHJhbnNsYXRpb24iLCJ3aXRoVHJhbnNsYXRpb24iLCJJMThuZXh0UHJvdmlkZXIiXSwibWFwcGluZ3MiOiI4aENBQUEsU0FBU0EsRUFBUUMsR0FHZixPQUFPRCxFQUFVLG1CQUFxQkUsUUFBVSxpQkFBbUJBLE9BQU9DLFNBQVcsU0FBVUYsR0FDN0YsY0FBY0EsQ0FDaEIsRUFBSSxTQUFVQSxHQUNaLE9BQU9BLEdBQUssbUJBQXFCQyxRQUFVRCxFQUFFRyxjQUFnQkYsUUFBVUQsSUFBTUMsT0FBT0csVUFBWSxnQkFBa0JKLENBQ3BILEVBQUdELEVBQVFDLEVBQ2IsQ0NOQSxTQUFTSyxFQUFjQyxHQUNyQixJQUFJQyxFQ0ZOLFNBQXFCRCxFQUFHRSxHQUN0QixHQUFJLFVBQVlULEVBQVFPLEtBQU9BLEVBQUcsT0FBT0EsRUFDekMsSUFBSUcsRUFBSUgsRUFBRUwsT0FBT1MsYUFDakIsUUFBSSxJQUFXRCxFQUFHLENBQ2hCLElBQUlGLEVBQUlFLEVBQUVFLEtBQUtMLEVBQUdFLEdBQ2xCLEdBQUksVUFBWVQsRUFBUVEsR0FBSSxPQUFPQSxFQUNuQyxNQUFNLElBQUlLLFVBQVUsK0NBQ3RCLENBQ0EsT0FBUSxXQUFhSixFQUFJSyxPQUFTQyxRQUFRUixFQUM1QyxDRFBVSSxDQUFZSixFQUFHLFVBQ3ZCLE1BQU8sVUFBWVAsRUFBUVEs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
|