(()=>{"use strict";var e={618:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MessageUsButtonBuilder=void 0;const r=s(601);t.MessageUsButtonBuilder=class{constructor(e,t){this.messageUsButtonContainer=e,this.buttonSettings=t}get messageUsButton(){if(!this._messageUsButton)throw new Error("messageUsButton read before it is set");return this._messageUsButton}get logo(){if(!this._logo)throw new Error("logo read before it is set");return this._logo}get label(){if(!this._label)throw new Error("label read before it is set");return this._label}static getMessageUsButtonContainer(e){const t=document.querySelector(e);if(null===t)throw new Error("Message us button container missing from page");return t}setMessageUsButton(){const e=`.${r.MESSAGE_US_BUTTON_CLASS}`,t=document.querySelector(e);if(null===t)throw new Error("Message us button is missing from page");return this._messageUsButton=t,this}setLogo(){const e=`.${r.MESSAGE_US_BUTTON_LOGO_CLASS}`,t=document.querySelector(e);if(null===t)throw new Error("Message us logo is missing from page");return this._logo=t,this}setLabel(){const e=`.${r.MESSAGE_US_BUTTON_LABEL_CLASS}`,t=document.querySelector(e);if(null===t)throw new Error("Message us label is missing from page");return this._label=t,this}createMessageUsButton(){const{href:e}=this.buttonSettings,t=document.createElement("a");return t.classList.add(r.MESSAGE_US_BUTTON_CLASS),t.target="_BLANK",t.href=e,this._messageUsButton=t,this}styleMessageUsButton(){const e=this.generateMessageUsButtonStyles();return Object.assign(this.messageUsButton.style,e),this}createLogo(){const e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.setAttribute("viewBox","0 0 20 20");const t=this.createLogoPath();return e.classList.add(r.MESSAGE_US_BUTTON_LOGO_CLASS),e.appendChild(t),this._logo=e,this}styleLogo(){const{logoDimensions:e,logoPath:t,color:s}=this.buttonSettings,o=this.logo.children[0];return this.logo.setAttribute("width",e),this.logo.setAttribute("height",e),o.setAttribute("d",t),o.setAttribute("fill",r.colorMap[s]),this}createLabel(){const e=document.createElement("span");return e.classList.add(r.MESSAGE_US_BUTTON_LABEL_CLASS),this._label=e,this}populateLabelText(){const{label:e}=this.buttonSettings;return this.label.textContent=e,this}appendContentToMessageUsButton(){return this.messageUsButton.appendChild(this.logo),this.messageUsButton.appendChild(this.label),this}loadMessageUsButtonOnPage(){this.messageUsButtonContainer.appendChild(this.messageUsButton)}generateMessageUsButtonStyles(){const{radius:e,backgroundColor:t,color:s,fontSize:o,padding:n,borderColor:i,backgroundImage:a}=this.buttonSettings;return{border:`1px solid ${r.colorMap[i]}`,"border-radius":`${e}`,"background-color":`${r.colorMap[t]}`,color:`${r.colorMap[s]} `,"font-size":o,padding:n,"background-image":a}}createLogoPath(){const e=document.createElementNS("http://www.w3.org/2000/svg","path");return e.setAttribute("fill-rule","evenodd"),e}}},601:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.supportedChannel=t.buttonSize=t.logoPathByChannel=t.sizeSettings=t.colorMap=t.MESSAGE_US_BUTTON_LABEL_CLASS=t.MESSAGE_US_BUTTON_LOGO_CLASS=t.MESSAGE_US_BUTTON_CLASS=t.MESSAGE_US_BUTTON_SELECTOR=t.trustedDomains=void 0,t.trustedDomains=["zd-dev","zendesk-staging","zendesk"],t.MESSAGE_US_BUTTON_SELECTOR="div.message-us-button_container",t.MESSAGE_US_BUTTON_CLASS="message-us-button",t.MESSAGE_US_BUTTON_LOGO_CLASS="message-us-button_logo",t.MESSAGE_US_BUTTON_LABEL_CLASS="message-us-button_label",t.colorMap={white:"#FFF",green:"#25d366",teal:"#075E54",borderGrey:"#D8DCDE",blue:"#0084FF",transparent:"transparent",black:"#000"},t.sizeSettings={compact:{fontSize:"13px",padding:"8px 13px",radius:"4px",logoDimensions:"16px"},standard:{fontSize:"15px",padding:"12px 15px",radius:"4px",logoDimensions:"20px"}},t.logoPathByChannel={whatsapp:"M10,0 C15.5228475,0 20,4.4771525 20,10 C20,15.5228475 15.5228475,20 10,20 C8.21764336,20 6.50261894,19.5321866 4.99604377,18.6597493 L1.09644722,19.9573724 C0.445123153,20.1741059 -0.17423773,19.5545345 0.0427170752,18.9032841 L1.34118515,15.0055699 C0.468152857,13.4986162 4.48352336e-12,11.7830015 4.48352336e-12,10 C4.48352336e-12,4.4771525 4.4771525,0 10,0 Z M10,1.66666667 C5.39762709,1.66666667 1.66666667,5.39762709 1.66666667,10 C1.66666667,11.6017128 2.11850111,13.1345631 2.95730951,14.4569627 C3.09146627,14.6684637 3.1233805,14.929089 3.04422002,15.1667113 L2.15025713,17.8501903 L4.83522181,16.956746 C5.07271735,16.8777174 5.33315744,16.9096255 5.54455056,17.0436501 C6.86661689,17.8818489 8.39890565,18.3333333 10,18.3333333 C14.6023729,18.3333333 18.3333333,14.6023729 18.3333333,10 C18.3333333,5.39762709 14.6023729,1.66666667 10,1.66666667 Z M6.55072391,5.00454308 C6.71472826,5.00454308 6.87873262,5.00454308 7.02048512,5.01164697 C7.1713032,5.02141482 7.37404224,4.94859994 7.57430887,5.46540794 C7.78034448,5.99642371 8.27235754,7.30442746 8.33334408,7.43584942 C8.39515477,7.56727138 8.43636189,7.72355696 8.35559593,7.90026623 C8.27318168,8.07786348 8.23032628,8.18886176 8.10835319,8.34070741 C7.98555596,8.49699298 7.85039659,8.68791003 7.73831322,8.80512421 C7.61551599,8.93832215 7.48694976,9.08039995 7.63199884,9.34679582 C7.77375134,9.61052774 8.26906097,10.4807543 9.00007535,11.1822634 C9.94042191,12.0871214 10.7324228,12.368613 10.9796656,12.500035 C11.2244359,12.6323449 11.369485,12.6074813 11.5112375,12.434324 C11.6554624,12.2576147 12.1252236,11.66 12.2900521,11.3936041 C12.4540565,11.1298722 12.618885,11.1716076 12.8438758,11.2621822 C13.0688667,11.3492048 14.279532,11.9903309 14.5243024,12.1217528 C14.7723692,12.2567268 14.9363736,12.3233257 14.9973601,12.434324 C15.0591708,12.5453223 15.0591708,13.0763381 14.8556076,13.6934885 C14.649572,14.3141909 13.6680183,14.8798381 13.1949605,14.955317 C12.769703,15.0219159 12.2323621,15.0494435 11.6431003,14.8487586 C11.1671235,14.6897973 10.6994329,14.5033465 10.2420581,14.2902153 C7.77375134,13.1411611 6.16090452,10.4638825 6.03893144,10.2907252 C5.91531006,10.113128 5.03347762,8.8512995 5.03347762,7.5468477 C5.03347762,6.24328389 5.66806732,5.60126983 5.89305822,5.33753792 C6.11887326,5.07025406 6.38589542,5.00454308 6.55072391,5.00454308 Z",messenger:"M10,0 C15.63375,0 20,4.1275 20,9.70125 C20,15.275 15.63375,19.40125 10,19.40125 C8.9875,19.40125 8.015,19.26875 7.105,19.01625 C7.035,18.99875 6.965,18.98875 6.895,18.98875 C6.785,18.98875 6.675,19.01125 6.57125,19.0575 L6.57125,19.0575 L4.5875,19.9325 C4.48125,19.98 4.37125,20 4.265,20 C3.8525,20 3.47875,19.67625 3.46375,19.22375 L3.46375,19.22375 L3.41125,17.44625 C3.4025,17.22625 3.30375,17.02375 3.14125,16.87625 C1.195,15.13625 0,12.61625 0,9.70125 C0,4.1275 4.365,0 10,0 Z M15.315,6.834125 L12.16125,9.229125 C11.9475,9.389125 11.65375,9.391625 11.4375,9.230375 L9.1025,7.479125 C8.4025,6.952875 7.4,7.137875 6.93375,7.879125 L3.995,12.537875 C3.7125,12.985375 4.2625,13.490375 4.68375,13.170375 L7.83875,10.775375 C8.05125,10.614125 8.34625,10.612875 8.56125,10.772875 L10.8975,12.526625 C11.59625,13.051625 12.59875,12.866625 13.06625,12.125375 L16.00375,7.466625 C16.2875,7.019125 15.73625,6.514125 15.315,6.834125 Z",instagram:"M11.2872935,-0.000358825301 C12.8701827,0.0039513453 13.2574932,0.0194234349 14.1300925,0.060837428 C15.1930715,0.107695294 15.9200434,0.27955833 16.5569454,0.525752854 C17.2213263,0.775763194 17.8270854,1.17046811 18.3273557,1.67842559 C18.8393809,2.17859885 19.2301932,2.78027206 19.4842212,3.45230836 C19.7304635,4.08542359 19.9023598,4.81607037 19.9492268,5.87884318 C19.9592697,6.10743059 19.9673428,6.3026431 19.9738292,6.49500863 L19.9798008,6.68755582 C19.9916549,7.10758478 19.9966594,7.56201924 19.9987104,8.36136754 L19.9994615,8.75591911 C19.9995565,8.82613641 19.9996375,8.89867729 19.9997064,8.97368308 L19.9998745,10.5477996 C19.9998102,10.6332303 19.9997289,10.7159135 19.9996294,10.7959904 L19.9988054,11.2463078 C19.9963339,12.2293501 19.989881,12.7569714 19.9765269,13.2169893 L19.9703727,13.4111315 C19.9692738,13.4431756 19.9681375,13.4751574 19.9669628,13.5072183 L19.9594453,13.7016635 C19.9541151,13.8334338 19.9481363,13.9709922 19.9414411,14.1233838 C19.8945741,15.1861566 19.7225251,15.9129875 19.4764355,16.5499186 C18.9566246,17.8939912 17.8936456,18.956764 16.5491597,19.4764741 C15.9160742,19.7226686 15.1852857,19.8945317 14.1223068,19.9413895 C13.8555697,19.9531421 13.6342684,19.9626816 13.4099163,19.9703799 L13.2157365,19.9765363 C12.7556294,19.9898896 12.2279057,19.9963037 11.2446728,19.9987547 L10.794268,19.9995712 C10.7141756,19.9996698 10.6314763,19.9997502 10.546029,19.9998138 L9.45244256,19.9998138 C9.36699454,19.9997502 9.28429447,19.9996698 9.20420102,19.9995712 L8.75378898,19.9987547 C7.77053609,19.9963037 7.24277474,19.9898896 6.7826695,19.9765363 L6.58849303,19.9703799 C6.36414806,19.9626816 6.14286585,19.9531421 5.87616697,19.9413895 C4.81303539,19.8945317 4.08621605,19.7226686 3.44916146,19.4764741 C2.78478053,19.2264638 2.17902144,18.8317588 1.67875116,18.3238014 C1.17069515,17.8236281 0.776066284,17.2219549 0.522038281,16.5499186 C0.275796001,15.9168034 0.103747016,15.1861566 0.0568800608,14.1233838 C0.0501847815,13.9709922 0.0442060749,13.8334338 0.0388758443,13.7016635 L0.0313583434,13.5072183 C0.0301836487,13.4751574 0.0290473558,13.4431756 0.0279484005,13.4111315 L0.0217942096,13.2169893 C0.00844016382,12.7569714 0.00198721828,12.2293501 -0.000484273427,11.2463078 L-0.000358894903,8.71712245 C0.00395211176,7.13454026 0.0194272026,6.74730484 0.0608492288,5.87487479 C0.107716184,4.81210197 0.279612557,4.08542359 0.525854836,3.44849254 C0.776066284,2.78424046 1.17069515,2.17859885 1.67875116,1.67842559 C2.17902144,1.16649971 2.78081136,0.775763194 3.45313063,0.521784456 C4.08621605,0.275742514 4.81700455,0.103726896 5.87998352,0.0568690297 C6.03240469,0.0501750489 6.16998969,0.0441975018 6.30178558,0.0388683049 L6.49626848,0.0313522619 C6.52833562,0.030177795 6.56032367,0.0290417224 6.59237397,0.0279429803 L6.78655382,0.0217899829 C7.24666091,0.00843852697 7.77438459,0.00198683289 8.75761752,-0.000484179509 Z M10.8188745,1.81565069 L9.2040202,1.81565069 C7.99040455,1.8172618 7.39686715,1.8233011 6.8933872,1.83777282 L6.69554195,1.84402073 C6.46739458,1.85185679 6.2434695,1.86164551 5.96990088,1.87379385 C4.99683926,1.9168359 4.46527347,2.08091472 4.11354239,2.2176725 C3.67967968,2.37778293 3.28886737,2.63176167 2.96461524,2.96388771 C2.6284556,3.28441372 2.3744276,3.67896606 2.21413351,4.11274463 C2.0773492,4.4644075 1.91323855,4.9919018 1.87034076,5.9687431 C1.83028705,6.86405661 1.81593396,7.22917513 1.81256028,8.96739646 L1.81256028,11.0501854 C1.81461383,12.1077789 1.82073536,12.6560597 1.83424492,13.125892 L1.84049674,13.3237019 C1.84834083,13.5518076 1.8581505,13.7756893 1.87034076,14.0492049 C1.91323855,15.0220778 2.0773492,15.5535405 2.21413351,15.9052033 C2.3744276,16.3388293 2.6284556,16.7295658 2.96064607,17.0539077 C3.28108164,17.3860337 3.67586312,17.6400124 4.10957322,17.8002755 C4.46130431,17.9370332 4.98890093,18.1011121 5.96593171,18.1440015 C6.1606311,18.1527072 6.33026392,18.1601985 6.49438882,18.1666266 L6.68994667,18.1738398 C7.21106015,18.1917656 7.75588486,18.1994243 8.96531884,18.2017708 L11.0485032,18.2017708 C12.2573932,18.1994243 12.8008916,18.1917656 13.3223426,18.1738398 L13.5181098,18.1666266 C13.6824821,18.1601985 13.8525547,18.1527072 14.0479609,18.1440015 C15.0211751,18.1011121 15.5525883,17.9370332 15.9043194,17.8002755 C16.7758613,17.464181 17.4675686,16.7726079 17.8037282,15.9012349 C17.9405125,15.5495721 18.1046232,15.0220778 18.1476736,14.0452365 C18.1893331,13.1074688 18.2032498,12.7562883 18.205828,10.8154695 L18.205828,9.20219503 C18.2032498,7.26070619 18.1893331,6.90651075 18.1476736,5.9687431 C18.1046232,4.99571762 17.9405125,4.4644075 17.8037282,4.11274463 C17.6434341,3.67896606 17.3894061,3.28822954 17.0572157,2.96388771 C16.7367801,2.63176167 16.3419986,2.37778293 15.9082885,2.2176725 C15.5565574,2.08091472 15.0289608,1.9168359 14.05193,1.87379385 C13.8182908,1.86338099 13.6209434,1.85470172 13.4259598,1.84749978 L13.2305076,1.84078079 C12.7047011,1.82412602 12.115282,1.8173692 10.8188745,1.81565069 Z M9.99916056,4.99869391 C12.7599253,4.99869391 14.9996117,7.23837325 14.9996117,9.99912928 C14.9996117,12.7598853 12.7599253,14.9995646 9.99916056,14.9995646 C7.2385443,14.9995646 4.99870939,12.7598853 4.99870939,9.99912928 C4.99870939,7.23837325 7.2385443,4.99869391 9.99916056,4.99869391 Z M9.99916056,6.75547116 C8.20821353,6.75547116 6.75549219,8.20803942 6.75549219,9.99912928 C6.75549219,11.7902191 8.20821353,13.2427874 9.99916056,13.2427874 C11.7902561,13.2427874 13.2428289,11.7902191 13.2428289,9.99912928 C13.2428289,8.20803942 11.7902561,6.75547116 9.99916056,6.75547116 Z M14.9995322,3.74858507 C15.690001,3.74858507 16.2497245,4.30818337 16.2497245,4.99869391 C16.2497245,5.6890454 15.690001,6.24880275 14.9995322,6.24880275 C14.3092224,6.24880275 13.7494989,5.6890454 13.7494989,4.99869391 C13.7494989,4.30818337 14.3092224,3.74858507 14.9995322,3.74858507 Z"},t.buttonSize={compact:"compact",standard:"standard"},t.supportedChannel={whatsApp:"whatsapp",instagram:"instagram",messenger:"messenger"}},145:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonSettingsBuilder=void 0;const r=s(601);t.ButtonSettingsBuilder=class{constructor(e,t,s,o,n,i){this.channel=e,this.defaultColorPaletteKey=t,this.colorPaletteOptions=s,this.identifierKeys=o,this.hrefPrefix=n,this.configuredButtonSettings=i,this.logoPath=r.logoPathByChannel[this.channel],this.label=""}get radius(){if(!this._radius)throw new Error("radius read before it is set");return this._radius}get fontSize(){if(!this._fontSize)throw new Error(" fontSize read before it is set");return this._fontSize}get padding(){if(!this._padding)throw new Error("padding read before it is set");return this._padding}get size(){if(!this._size)throw new Error("size read before it is set");return this._size}get backgroundColor(){if(!this._backgroundColor)throw new Error("backgroundColor read before it is set");return this._backgroundColor}get borderColor(){if(!this._borderColor)throw new Error("borderColor read before it is set");return this._borderColor}get color(){if(!this._color)throw new Error("color read before it is set");return this._color}get logoDimensions(){if(!this._logoDimensions)throw new Error("logoDimensions read before it is set");return this._logoDimensions}get href(){if(!this._href)throw new Error("href read before it is set");return this._href}setSizeSettings(){const{size:e,radius:t}=this.configuredButtonSettings;return this._size=e===r.buttonSize.compact?r.buttonSize.compact:r.buttonSize.standard,this._radius=t||r.sizeSettings[this.size].radius,this._fontSize=r.sizeSettings[this.size].fontSize,this._padding=r.sizeSettings[this.size].padding,this._logoDimensions=r.sizeSettings[this.size].logoDimensions,this}setLabel(){const{label:e}=this.configuredButtonSettings;return this.label=e||this.label,this}setColorSettings(){const{color:e}=this.configuredButtonSettings,t=this.ensureColorPaletteKeyIsValid(e),{borderColor:s,backgroundColor:r,color:o,backgroundImage:n}=this.colorPaletteOptions[t];return this._borderColor=s,this._backgroundColor=r,this._color=o,this._backgroundImage=n,this}ensureIdentifiersAreValid(){return this.identifierKeys.forEach((e=>{if(!this.configuredButtonSettings[e])throw new Error(`Missing attribute value - ${e} is required`)})),this}sanitizeIdentifiers(){return this.identifierKeys.forEach((e=>{this.configuredButtonSettings[e]=this.configuredButtonSettings[e].replace(/[^\w.]+/g,"")})),this}buildHref(){throw new Error("buildHref method must be Implement in ButtonSettingsBuilder")}getSettings(){return{logoPath:this.logoPath,channel:this.channel,label:this.label,fontSize:this.fontSize,padding:this.padding,radius:this.radius,size:this.size,borderColor:this.borderColor,backgroundColor:this.backgroundColor,color:this.color,logoDimensions:this.logoDimensions,href:this.href,backgroundImage:this._backgroundImage}}ensureColorPaletteKeyIsValid(e){const t=Object.keys(this.colorPaletteOptions);return e&&t.includes(e)?e:this.defaultColorPaletteKey}}},48:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.InstagramButtonSettingsBuilder=void 0;const r=s(145);class o extends r.ButtonSettingsBuilder{constructor(e){super("instagram","gradient",{gradient:{backgroundColor:"white",borderColor:"borderGrey",backgroundImage:"linear-gradient(-25deg,#1400c8,#b900b4,#f50000)",color:"white"},white:{backgroundColor:"white",borderColor:"black",color:"black",backgroundImage:""}},["businessUsername"],"https://instagram.com/",e)}buildHref(){const{businessUsername:e}=this.configuredButtonSettings;return this._href=`${this.hrefPrefix}${e}`,this}}t.InstagramButtonSettingsBuilder=o},702:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MessengerButtonSettingsBuilder=void 0;const r=s(145);class o extends r.ButtonSettingsBuilder{constructor(e){super("messenger","white",{white:{backgroundColor:"white",borderColor:"borderGrey",color:"blue"},blue:{backgroundColor:"blue",borderColor:"transparent",color:"white"}},["pageId"],"https://m.me/",e)}buildHref(){const{pageId:e}=this.configuredButtonSettings;return this._href=`${this.hrefPrefix}${e}`,this}}t.MessengerButtonSettingsBuilder=o},101:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WhatsAppButtonSettingsBuilder=void 0;const r=s(145);class o extends r.ButtonSettingsBuilder{constructor(e){super("whatsapp","white",{teal:{backgroundColor:"teal",borderColor:"transparent",color:"white"},green:{backgroundColor:"green",borderColor:"transparent",color:"white"},white:{backgroundColor:"white",borderColor:"borderGrey",color:"teal"}},["number"],"https://wa.me/",e)}buildHref(){const{number:e}=this.configuredButtonSettings;return this._href=`${this.hrefPrefix}${e}`,this}}t.WhatsAppButtonSettingsBuilder=o},593:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseQueryParams=void 0,t.parseQueryParams=e=>{const t={},s=("?"===e[0]?e.substr(1):e).split("&");for(let e=0;e{const e=s(618),t=s(601),r=s(101),o=s(702),n=s(48),i=s(593),a=s=>{const i=e.MessageUsButtonBuilder.getMessageUsButtonContainer(t.MESSAGE_US_BUTTON_SELECTOR),a=(e=>{const{channel:s}=e;switch(s){case t.supportedChannel.whatsApp:return new r.WhatsAppButtonSettingsBuilder(e);case t.supportedChannel.messenger:return new o.MessengerButtonSettingsBuilder(e);case t.supportedChannel.instagram:return new n.InstagramButtonSettingsBuilder(e);default:throw new Error(`Invalid "channel" attribute - "channel" can be ${t.supportedChannel.whatsApp}, ${t.supportedChannel.messenger}, ${t.supportedChannel.instagram}`)}})(s).setSizeSettings().setLabel().setColorSettings().ensureIdentifiersAreValid().sanitizeIdentifiers().buildHref().getSettings();return new e.MessageUsButtonBuilder(i,a)},l=e=>{try{const t=i.parseQueryParams(e.split("?")[1]);a(t).setMessageUsButton().styleMessageUsButton().setLogo().styleLogo().setLabel().populateLabelText()}catch(e){console.error("Failed to update message us button",{error:e})}};window.addEventListener("message",(e=>{const{data:{type:s,value:r},origin:o}=e;(e=>{let s,r=!1;try{s=new URL(e).host}catch(e){return r}const o=s.split(".")[1];return t.trustedDomains.includes(o)&&(r=!0),r})(o)&&"update"===s&&l(r)})),(()=>{try{const e=i.parseQueryParams(window.location.search);a(e).createMessageUsButton().styleMessageUsButton().createLogo().styleLogo().createLabel().populateLabelText().appendContentToMessageUsButton().loadMessageUsButtonOnPage()}catch(e){console.error("Failed to create message us button",{error:e})}})()})()})(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXNzYWdlLXVzLWJ1dHRvbi8uL3NyYy9NZXNzYWdlVXNCdXR0b25CdWlsZGVyLnRzIiwid2VicGFjazovL21lc3NhZ2UtdXMtYnV0dG9uLy4vc3JjL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9tZXNzYWdlLXVzLWJ1dHRvbi8uL3NyYy9zZXR0aW5nc0J1aWxkZXIvQnV0dG9uU2V0dGluZ3NCdWlsZGVyLnRzIiwid2VicGFjazovL21lc3NhZ2UtdXMtYnV0dG9uLy4vc3JjL3NldHRpbmdzQnVpbGRlci9JbnN0YWdyYW1CdXR0b25TZXR0aW5nc0J1aWxkZXIudHMiLCJ3ZWJwYWNrOi8vbWVzc2FnZS11cy1idXR0b24vLi9zcmMvc2V0dGluZ3NCdWlsZGVyL01lc3NlbmdlckJ1dHRvblNldHRpbmdzQnVpbGRlci50cyIsIndlYnBhY2s6Ly9tZXNzYWdlLXVzLWJ1dHRvbi8uL3NyYy9zZXR0aW5nc0J1aWxkZXIvV2hhdHNBcHBCdXR0b25TZXR0aW5nc0J1aWxkZXIudHMiLCJ3ZWJwYWNrOi8vbWVzc2FnZS11cy1idXR0b24vLi9zcmMvdXRpbHMudHMiLCJ3ZWJwYWNrOi8vbWVzc2FnZS11cy1idXR0b24vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbWVzc2FnZS11cy1idXR0b24vLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOlsibWVzc2FnZVVzQnV0dG9uQ29udGFpbmVyIiwiYnV0dG9uU2V0dGluZ3MiLCJ0aGlzIiwiX21lc3NhZ2VVc0J1dHRvbiIsIkVycm9yIiwiX2xvZ28iLCJfbGFiZWwiLCJidXR0b25TZWxlY3RvciIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIm1lc3NhZ2VVc0J1dHRvblNlbGVjdG9yIiwiTUVTU0FHRV9VU19CVVRUT05fQ0xBU1MiLCJtZXNzYWdlVXNCdXR0b24iLCJsb2dvU2VsZWN0b3IiLCJNRVNTQUdFX1VTX0JVVFRPTl9MT0dPX0NMQVNTIiwibG9nbyIsImxhYmVsU2VsZWN0b3IiLCJNRVNTQUdFX1VTX0JVVFRPTl9MQUJFTF9DTEFTUyIsImxhYmVsIiwiaHJlZiIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJ0YXJnZXQiLCJtZXNzYWdlVXNCdXR0b25TdHlsZXMiLCJnZW5lcmF0ZU1lc3NhZ2VVc0J1dHRvblN0eWxlcyIsIk9iamVjdCIsImFzc2lnbiIsInN0eWxlIiwiY3JlYXRlRWxlbWVudE5TIiwic2V0QXR0cmlidXRlIiwibG9nb1BhdGgiLCJjcmVhdGVMb2dvUGF0aCIsImFwcGVuZENoaWxkIiwibG9nb0RpbWVuc2lvbnMiLCJjb2xvciIsInBhdGgiLCJjaGlsZHJlbiIsImNvbG9yTWFwIiwibGFiZWxUZXh0IiwidGV4dENvbnRlbnQiLCJyYWRpdXMiLCJiYWNrZ3JvdW5kQ29sb3IiLCJmb250U2l6ZSIsInBhZGRpbmciLCJib3JkZXJDb2xvciIsImJhY2tncm91bmRJbWFnZSIsImJvcmRlciIsInRydXN0ZWREb21haW5zIiwiTUVTU0FHRV9VU19CVVRUT05fU0VMRUNUT1IiLCJ3aGl0ZSIsImdyZWVuIiwidGVhbCIsImJvcmRlckdyZXkiLCJibHVlIiwidHJhbnNwYXJlbnQiLCJibGFjayIsInNpemVTZXR0aW5ncyIsImNvbXBhY3QiLCJzdGFuZGFyZCIsImxvZ29QYXRoQnlDaGFubmVsIiwid2hhdHNhcHAiLCJtZXNzZW5nZXIiLCJpbnN0YWdyYW0iLCJidXR0b25TaXplIiwic3VwcG9ydGVkQ2hhbm5lbCIsIndoYXRzQXBwIiwiY2hhbm5lbCIsImRlZmF1bHRDb2xvclBhbGV0dGVLZXkiLCJjb2xvclBhbGV0dGVPcHRpb25zIiwiaWRlbnRpZmllcktleXMiLCJocmVmUHJlZml4IiwiY29uZmlndXJlZEJ1dHRvblNldHRpbmdzIiwiX3JhZGl1cyIsIl9mb250U2l6ZSIsIl9wYWRkaW5nIiwiX3NpemUiLCJfYmFja2dyb3VuZENvbG9yIiwiX2JvcmRlckNvbG9yIiwiX2NvbG9yIiwiX2xvZ29EaW1lbnNpb25zIiwiX2hyZWYiLCJzaXplIiwiY29uZmlndXJlZENvbG9yUGFsZXR0ZUtleSIsImNvbG9yUGFsZXR0ZUtleSIsImVuc3VyZUNvbG9yUGFsZXR0ZUtleUlzVmFsaWQiLCJfYmFja2dyb3VuZEltYWdlIiwiZm9yRWFjaCIsImtleSIsInJlcGxhY2UiLCJhbGxvd2VkQ29sb3JQYWxldHRlcyIsImtleXMiLCJpbmNsdWRlcyIsIkluc3RhZ3JhbUJ1dHRvblNldHRpbmdzQnVpbGRlciIsIkJ1dHRvblNldHRpbmdzQnVpbGRlciIsInN1cGVyIiwiZ3JhZGllbnQiLCJidXNpbmVzc1VzZXJuYW1lIiwiTWVzc2VuZ2VyQnV0dG9uU2V0dGluZ3NCdWlsZGVyIiwicGFnZUlkIiwiV2hhdHNBcHBCdXR0b25TZXR0aW5nc0J1aWxkZXIiLCJudW1iZXIiLCJwYXJzZVF1ZXJ5UGFyYW1zIiwicXVlcnlTdHJpbmciLCJxdWVyeSIsInBhaXJzIiwic3Vic3RyIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwicGFpciIsImRlY29kZVVSSUNvbXBvbmVudCIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZ2V0TWVzc2FnZVVzQnV0dG9uQnVpbGRlciIsIk1lc3NhZ2VVc0J1dHRvbkJ1aWxkZXIiLCJnZXRNZXNzYWdlVXNCdXR0b25Db250YWluZXIiLCJjcmVhdGVDaGFubmVsQnV0dG9uU2V0dGluZ3NCdWlsZGVyIiwic2V0U2l6ZVNldHRpbmdzIiwic2V0TGFiZWwiLCJzZXRDb2xvclNldHRpbmdzIiwiZW5zdXJlSWRlbnRpZmllcnNBcmVWYWxpZCIsInNhbml0aXplSWRlbnRpZmllcnMiLCJidWlsZEhyZWYiLCJnZXRTZXR0aW5ncyIsInVwZGF0ZU1lc3NhZ2VVc0J1dHRvbiIsInNyYyIsInV0aWxzIiwic2V0TWVzc2FnZVVzQnV0dG9uIiwic3R5bGVNZXNzYWdlVXNCdXR0b24iLCJzZXRMb2dvIiwic3R5bGVMb2dvIiwicG9wdWxhdGVMYWJlbFRleHQiLCJlcnJvciIsImNvbnNvbGUiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsImRhdGEiLCJ0eXBlIiwibWVzc2FnZVR5cGUiLCJ2YWx1ZSIsIm9yaWdpbiIsImhvc3QiLCJpc1ZhbGlkIiwiVVJMIiwiaWdub3JlZCIsImRvbWFpbiIsImlzRG9tYWluVHJ1c3RlZCIsImxvY2F0aW9uIiwic2VhcmNoIiwiY3JlYXRlTWVzc2FnZVVzQnV0dG9uIiwiY3JlYXRlTG9nbyIsImNyZWF0ZUxhYmVsIiwiYXBwZW5kQ29udGVudFRvTWVzc2FnZVVzQnV0dG9uIiwibG9hZE1lc3NhZ2VVc0J1dHRvbk9uUGFnZSJdLCJtYXBwaW5ncyI6InlIQUFBLGVBT0EsK0JBS0UsWUFDVUEsRUFDQUMsR0FEQSxLQUFBRCwyQkFDQSxLQUFBQyxpQkFHVixzQkFDRSxJQUFLQyxLQUFLQyxpQkFDUixNQUFNLElBQUlDLE1BQU0seUNBR2xCLE9BQU9GLEtBQUtDLGlCQUdkLFdBQ0UsSUFBS0QsS0FBS0csTUFDUixNQUFNLElBQUlELE1BQU0sOEJBR2xCLE9BQU9GLEtBQUtHLE1BR2QsWUFDRSxJQUFLSCxLQUFLSSxPQUNSLE1BQU0sSUFBSUYsTUFBTSwrQkFHbEIsT0FBT0YsS0FBS0ksT0FHZCxtQ0FBbUNDLEdBQ2pDLE1BQU1QLEVBQTJCUSxTQUFTQyxjQUN4Q0YsR0FHRixHQUFpQyxPQUE3QlAsRUFDRixNQUFNLElBQUlJLE1BQU0saURBR2xCLE9BQU9KLEVBR1QscUJBQ0UsTUFBTVUsRUFBMEIsSUFBSSxFQUFBQywwQkFDOUJDLEVBQWtCSixTQUFTQyxjQUMvQkMsR0FHRixHQUF3QixPQUFwQkUsRUFDRixNQUFNLElBQUlSLE1BQU0sMENBS2xCLE9BRkFGLEtBQUtDLGlCQUFtQlMsRUFFakJWLEtBR1QsVUFDRSxNQUFNVyxFQUFlLElBQUksRUFBQUMsK0JBQ25CQyxFQUFPUCxTQUFTQyxjQUEwQkksR0FFaEQsR0FBYSxPQUFURSxFQUNGLE1BQU0sSUFBSVgsTUFBTSx3Q0FLbEIsT0FGQUYsS0FBS0csTUFBUVUs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S0FDMUJILEdBQVUsR0FHTEEsR0FVREksQ0FBZ0JOLElBQTJCLFdBQWhCRixHQUM3QmYsRUFBc0JDLE1BMkJFLE1BQzVCLElBQ0UsTUFBTTFELEVBQXFEMkQsRUFBTTdCLGlCQUMvRHFDLE9BQU9jLFNBQVNDLFFBR2FwQyxFQUM3QjlDLEdBSUNtRix3QkFDQXRCLHVCQUNBdUIsYUFDQXJCLFlBQ0FzQixjQUNBckIsb0JBQ0FzQixpQ0FDQUMsNEJBQ0gsTUFBT3RCLEdBQ1BDLFFBQVFELE1BQU0scUNBQXNDLENBQUVBLFlBTXhEa0IsSSIsImZpbGUiOiJtZXNzYWdlVXNCdXR0b24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb2xvck1hcCxcbiAgTUVTU0FHRV9VU19CVVRUT05fQ0xBU1MsXG4gIE1FU1NBR0VfVVNfQlVUVE9OX0xBQkVMX0NMQVNTLFxuICBNRVNTQUdFX1VTX0JVVFRPTl9MT0dPX0NMQVNTLFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VVc0J1dHRvbkJ1aWxkZXIge1xuICBfbWVzc2FnZVVzQnV0dG9uPzogSFRNTEFuY2hvckVsZW1lbnQ7XG4gIF9sb2dvPzogU1ZHRWxlbWVudDtcbiAgX2xhYmVsPzogSFRNTFNwYW5FbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWVzc2FnZVVzQnV0dG9uQ29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCxcbiAgICBwcml2YXRlIGJ1dHRvblNldHRpbmdzOiBCdXR0b25TZXR0aW5nc1xuICApIHt9XG5cbiAgZ2V0IG1lc3NhZ2VVc0J1dHRvbigpOiBIVE1MQW5jaG9yRWxlbWVudCB7XG4gICAgaWYgKCF0aGlzLl9tZXNzYWdlVXNCdXR0b24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm1lc3NhZ2VVc0J1dHRvbiByZWFkIGJlZm9yZSBpdCBpcyBzZXRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VVc0J1dHRvbjtcbiAgfVxuXG4gIGdldCBsb2dvKCk6IFNWR0VsZW1lbnQge1xuICAgIGlmICghdGhpcy5fbG9nbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwibG9nbyByZWFkIGJlZm9yZSBpdCBpcyBzZXRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2xvZ287XG4gIH1cblxuICBnZXQgbGFiZWwoKTogSFRNTFNwYW5FbGVtZW50IHtcbiAgICBpZiAoIXRoaXMuX2xhYmVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJsYWJlbCByZWFkIGJlZm9yZSBpdCBpcyBzZXRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsO1xuICB9XG5cbiAgc3RhdGljIGdldE1lc3NhZ2VVc0J1dHRvbkNvbnRhaW5lcihidXR0b25TZWxlY3Rvcjogc3RyaW5nKTogSFRNTERpdkVsZW1lbnQge1xuICAgIGNvbnN0IG1lc3NhZ2VVc0J1dHRvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KFxuICAgICAgYnV0dG9uU2VsZWN0b3JcbiAgICApO1xuXG4gICAgaWYgKG1lc3NhZ2VVc0J1dHRvbkNvbnRhaW5lciA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWVzc2FnZSB1cyBidXR0b24gY29udGFpbmVyIG1pc3NpbmcgZnJvbSBwYWdlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBtZXNzYWdlVXNCdXR0b25Db250YWluZXI7XG4gIH1cblxuICBzZXRNZXNzYWdlVXNCdXR0b24oKTogdGhpcyB7XG4gICAgY29uc3QgbWVzc2FnZVVzQnV0dG9uU2VsZWN0b3IgPSBgLiR7TUVTU0FHRV9VU19CVVRUT05fQ0xBU1N9YDtcbiAgICBjb25zdCBtZXNzYWdlVXNCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxBbmNob3JFbGVtZW50PihcbiAgICAgIG1lc3NhZ2VVc0J1dHRvblNlbGVjdG9yXG4gICAgKTtcblxuICAgIGlmIChtZXNzYWdlVXNCdXR0b24gPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk1lc3NhZ2UgdXMgYnV0dG9uIGlzIG1pc3NpbmcgZnJvbSBwYWdlXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX21lc3NhZ2VVc0J1dHRvbiA9IG1lc3NhZ2VVc0J1dHRvbjtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TG9nbygpOiB0aGlzIHtcbiAgICBjb25zdCBsb2dvU2VsZWN0b3IgPSBgLiR7TUVTU0FHRV9VU19CVVRUT05fTE9HT19DTEFTU31gO1xuICAgIGNvbnN0IGxvZ28gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPFNWR0VsZW1lbnQ+KGxvZ29TZWxlY3Rvcik7XG5cbiAgICBpZiAobG9nbyA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWVzc2FnZSB1cyBsb2dvIGlzIG1pc3NpbmcgZnJvbSBwYWdlXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ28gPSBsb2dvO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRMYWJlbCgpOiB0aGlzIHtcbiAgICBjb25zdCBsYWJlbFNlbGVjdG9yID0gYC4ke01FU1NBR0VfVVNfQlVUVE9OX0xBQkVMX0NMQVNTfWA7XG4gICAgY29uc3QgbGFiZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxTcGFuRWxlbWVudD4obGFiZWxTZWxlY3Rvcik7XG5cbiAgICBpZiAobGFiZWwgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk1lc3NhZ2UgdXMgbGFiZWwgaXMgbWlzc2luZyBmcm9tIHBhZ2VcIik7XG4gICAgfVxuXG4gICAgdGhpcy5fbGFiZWwgPSBsYWJlbDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY3JlYXRlTWVzc2FnZVVzQnV0dG9uKCk6IHRoaXMge1xuICAgIGNvbnN0IHsgaHJlZiB9ID0gdGhpcy5idXR0b25TZXR0aW5ncztcbiAgICBjb25zdCBtZXNzYWdlVXNCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcblxuICAgIG1lc3NhZ2VVc0J1dHRvbi5jbGFzc0xpc3QuYWRkKE1FU1NBR0VfVVNfQlVUVE9OX0NMQVNTKTtcbiAgICBtZXNzYWdlVXNCdXR0b24udGFyZ2V0ID0gXCJfQkxBTktcIjtcbiAgICBtZXNzYWdlVXNCdXR0b24uaHJlZiA9IGhyZWY7XG5cbiAgICB0aGlzLl9tZXNzYWdlVXNCdXR0b24gPSBtZXNzYWdlVXNCdXR0b247XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0eWxlTWVzc2FnZVVzQnV0dG9uKCk6IHRoaXMge1xuICAgIGNvbnN0IG1lc3NhZ2VVc0J1dHRvblN0eWxlcyA9IHRoaXMuZ2VuZXJhdGVNZXNzYWdlVXNCdXR0b25TdHlsZXMoKTtcblxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5tZXNzYWdlVXNCdXR0b24uc3R5bGUsIG1lc3NhZ2VVc0J1dHRvblN0eWxlcyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNyZWF0ZUxvZ28oKTogdGhpcyB7XG4gICAgY29uc3QgbG9nbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwic3ZnXCIpO1xuXG4gICAgbG9nby5zZXRBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIsIFwiMCAwIDIwIDIwXCIpO1xuXG4gICAgY29uc3QgbG9nb1BhdGggPSB0aGlzLmNyZWF0ZUxvZ29QYXRoKCk7XG5cbiAgICBsb2dvLmNsYXNzTGlzdC5hZGQoTUVTU0FHRV9VU19CVVRUT05fTE9HT19DTEFTUyk7XG4gICAgbG9nby5hcHBlbmRDaGlsZChsb2dvUGF0aCk7XG5cbiAgICB0aGlzLl9sb2dvID0gbG9nbztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3R5bGVMb2dvKCk6IHRoaXMge1xuICAgIGNvbnN0IHsgbG9nb0RpbWVuc2lvbnMsIGxvZ29QYXRoLCBjb2xvciB9ID0gdGhpcy5idXR0b25TZXR0aW5ncztcblxuICAgIGNvbnN0IHBhdGggPSB0aGlzLmxvZ28uY2hpbGRyZW5bMF07XG5cbiAgICB0aGlzLmxvZ28uc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgbG9nb0RpbWVuc2lvbnMpO1xuICAgIHRoaXMubG9nby5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgbG9nb0RpbWVuc2lvbnMpO1xuXG4gICAgcGF0aC5zZXRBdHRyaWJ1dGUoXCJkXCIsIGxvZ29QYXRoKTtcbiAgICBwYXRoLnNldEF0dHJpYnV0ZShcImZpbGxcIiwgY29sb3JNYXBbY29sb3JdKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY3JlYXRlTGFiZWwoKTogdGhpcyB7XG4gICAgY29uc3QgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcblxuICAgIGxhYmVsLmNsYXNzTGlzdC5hZGQoTUVTU0FHRV9VU19CVVRUT05fTEFCRUxfQ0xBU1MpO1xuXG4gICAgdGhpcy5fbGFiZWwgPSBsYWJlbDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcG9wdWxhdGVMYWJlbFRleHQoKTogdGhpcyB7XG4gICAgY29uc3QgeyBsYWJlbDogbGFiZWxUZXh0IH0gPSB0aGlzLmJ1dHRvblNldHRpbmdzO1xuXG4gICAgdGhpcy5sYWJlbC50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYXBwZW5kQ29udGVudFRvTWVzc2FnZVVzQnV0dG9uKCk6IHRoaXMge1xuICAgIHRoaXMubWVzc2FnZVVzQnV0dG9uLmFwcGVuZENoaWxkKHRoaXMubG9nbyk7XG4gICAgdGhpcy5tZXNzYWdlVXNCdXR0b24uYXBwZW5kQ2hpbGQodGhpcy5sYWJlbCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxvYWRNZXNzYWdlVXNCdXR0b25PblBhZ2UoKSB7XG4gICAgdGhpcy5tZXNzYWdlVXNCdXR0b25Db250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5tZXNzYWdlVXNCdXR0b24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZU1lc3NhZ2VVc0J1dHRvblN0eWxlcygpOiBNZXNzYWdlVXNCdXR0b25TdHlsZXMge1xuICAgIGNvbnN0IHtcbiAgICAgIHJhZGl1cyxcbiAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgIGNvbG9yLFxuICAgICAgZm9udFNpemUsXG4gICAgICBwYWRkaW5nLFxuICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICBiYWNrZ3JvdW5kSW1hZ2UsXG4gICAgfSA9IHRoaXMuYnV0dG9uU2V0dGluZ3M7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7Y29sb3JNYXBbYm9yZGVyQ29sb3JdfWAsXG4gICAgICBcImJvcmRlci1yYWRpdXNcIjogYCR7cmFkaXVzfWAsXG4gICAgICBcImJhY2tncm91bmQtY29sb3JcIjogYCR7Y29sb3JNYXBbYmFja2dyb3VuZENvbG9yXX1gLFxuICAgICAgY29sb3I6IGAke2NvbG9yTWFwW2NvbG9yXX0gIGAsXG4gICAgICBcImZvbnQtc2l6ZVwiOiBmb250U2l6ZSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBcImJhY2tncm91bmQtaW1hZ2VcIjogYmFja2dyb3VuZEltYWdlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUxvZ29QYXRoKCk6IFNWR1BhdGhFbGVtZW50IHtcbiAgICBjb25zdCBwYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgXCJwYXRoXCIpO1xuXG4gICAgcGF0aC5zZXRBdHRyaWJ1dGUoXCJmaWxsLXJ1bGVcIiwgXCJldmVub2RkXCIpO1xuXG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cbn1cbiIsImNvbnN0IFpFTkRFU0tfREVWID0gXCJ6ZC1kZXZcIjtcbmNvbnN0IFpFTkRFU0tfU1RBR0lORyA9IFwiemVuZGVzay1zdGFnaW5nXCI7XG5jb25zdCBaRU5ERVNLX1BST0QgPSBcInplbmRlc2tcIjtcblxuZXhwb3J0IGNvbnN0IHRydXN0ZWREb21haW5zID0gW1pFTkRFU0tfREVWLCBaRU5ERVNLX1NUQUdJTkcsIFpFTkRFU0tfUFJPRF07XG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFX1VTX0JVVFRPTl9TRUxFQ1RPUiA9IFwiZGl2Lm1lc3NhZ2UtdXMtYnV0dG9uX2NvbnRhaW5lclwiO1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfVVNfQlVUVE9OX0NMQVNTID0gXCJtZXNzYWdlLXVzLWJ1dHRvblwiO1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfVVNfQlVUVE9OX0xPR09fQ0xBU1MgPSBcIm1lc3NhZ2UtdXMtYnV0dG9uX2xvZ29cIjtcbmV4cG9ydCBjb25zdCBNRVNTQUdFX1VTX0JVVFRPTl9MQUJFTF9DTEFTUyA9IFwibWVzc2FnZS11cy1idXR0b25fbGFiZWxcIjtcblxuZXhwb3J0IGNvbnN0IGNvbG9yTWFwID0ge1xuICB3aGl0ZTogXCIjRkZGXCIsXG4gIGdyZWVuOiBcIiMyNWQzNjZcIixcbiAgdGVhbDogXCIjMDc1RTU0XCIsXG4gIGJvcmRlckdyZXk6IFwiI0Q4RENERVwiLFxuICBibHVlOiBcIiMwMDg0RkZcIixcbiAgdHJhbnNwYXJlbnQ6IFwidHJhbnNwYXJlbnRcIixcbiAgYmxhY2s6IFwiIzAwMFwiLFxufTtcblxuZXhwb3J0IGNvbnN0IHNpemVTZXR0aW5ncyA9IHtcbiAgY29tcGFjdDoge1xuICAgIGZvbnRTaXplOiBcIjEzcHhcIixcbiAgICBwYWRkaW5nOiBcIjhweCAxM3B4XCIsXG4gICAgcmFkaXVzOiBcIjRweFwiLFxuICAgIGxvZ29EaW1lbnNpb25zOiBcIjE2cHhcIixcbiAgfSxcbiAgc3RhbmRhcmQ6IHtcbiAgICBmb250U2l6ZTogXCIxNXB4XCIsXG4gICAgcGFkZGluZzogXCIxMnB4IDE1cHhcIixcbiAgICByYWRpdXM6IFwiNHB4XCIsXG4gICAgbG9nb0RpbWVuc2lvbnM6IFwiMjBweFwiLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGxvZ29QYXRoQnlDaGFubmVsID0ge1xuICB3aGF0c2FwcDpcbiAgICBcIk0xMCwwIEMxNS41MjI4NDc1LDAgMjAsNC40NzcxNTI1IDIwLDEwIEMyMCwxNS41MjI4NDc1IDE1LjUyMjg0NzUsMjAgMTAsMjAgQzguMjE3NjQzMzYsMjAgNi41MDI2MTg5NCwxOS41MzIxODY2IDQuOTk2MDQzNzcsMTguNjU5NzQ5MyBMMS4wOTY0NDcyMiwxOS45NTczNzI0IEMwLjQ0NTEyMzE1MywyMC4xNzQxMDU5IC0wLjE3NDIzNzczLDE5LjU1NDUzNDUgMC4wNDI3MTcwNzUyLDE4LjkwMzI4NDEgTDEuMzQxMTg1MTUsMTUuMDA1NTY5OSBDMC40NjgxNTI4NTcsMTMuNDk4NjE2MiA0LjQ4MzUyMzM2ZS0xMiwxMS43ODMwMDE1IDQuNDgzNTIzMzZlLTEyLDEwIEM0LjQ4MzUyMzM2ZS0xMiw0LjQ3NzE1MjUgNC40NzcxNTI1LDAgMTAsMCBaIE0xMCwxLjY2NjY2NjY3IEM1LjM5NzYyNzA5LDEuNjY2NjY2NjcgMS42NjY2NjY2Nyw1LjM5NzYyNzA5IDEuNjY2NjY2NjcsMTAgQzEuNjY2NjY2NjcsMTEuNjAxNzEyOCAyLjExODUwMTExLDEzLjEzNDU2MzEgMi45NTczMDk1MSwxNC40NTY5NjI3IEMzLjA5MTQ2NjI3LDE0LjY2ODQ2MzcgMy4xMjMzODA1LDE0LjkyOTA4OSAzLjA0NDIyMDAyLDE1LjE2NjcxMTMgTDIuMTUwMjU3MTMsMTcuODUwMTkwMyBMNC44MzUyMjE4MSwxNi45NTY3NDYgQzUuMDcyNzE3MzUsMTYuODc3NzE3NCA1LjMzMzE1NzQ0LDE2LjkwOTYyNTUgNS41NDQ1NTA1NiwxNy4wNDM2NTAxIEM2Ljg2NjYxNjg5LDE3Ljg4MTg0ODkgOC4zOTg5MDU2NSwxOC4zMzMzMzMzIDEwLDE4LjMzMzMzMzMgQzE0LjYwMjM3MjksMTguMzMzMzMzMyAxOC4zMzMzMzMzLDE0LjYwMjM3MjkgMTguMzMzMzMzMywxMCBDMTguMzMzMzMzMyw1LjM5NzYyNzA5IDE0LjYwMjM3MjksMS42NjY2NjY2NyAxMCwxLjY2NjY2NjY3IFogTTYuNTUwNzIzOTEsNS4wMDQ1NDMwOCBDNi43MTQ3MjgyNiw1LjAwNDU0MzA4IDYuODc4NzMyNjIsNS4wMDQ1NDMwOCA3LjAyMDQ4NTEyLDUuMDExNjQ2OTcgQzcuMTcxMzAzMiw1LjAyMTQxNDgyIDcuMzc0MDQyMjQsNC45NDg1OTk5NCA3LjU3NDMwODg3LDUuNDY1NDA3OTQgQzcuNzgwMzQ0NDgsNS45OTY0MjM3MSA4LjI3MjM1NzU0LDcuMzA0NDI3NDYgOC4zMzMzNDQwOCw3LjQzNTg0OTQyIEM4LjM5NTE1NDc3LDcuNTY3MjcxMzggOC40MzYzNjE4OSw3LjcyMzU1Njk2IDguMzU1NTk1OTMsNy45MDAyNjYyMyBDOC4yNzMxODE2OCw4LjA3Nzg2MzQ4IDguMjMwMzI2MjgsOC4xODg4NjE3NiA4LjEwODM1MzE5LDguMzQwNzA3NDEgQzcuOTg1NTU1OTYsOC40OTY5OTI5OCA3Ljg1MDM5NjU5LDguNjg3OTEwMDMgNy43MzgzMTMyMiw4LjgwNTEyNDIxIEM3LjYxNTUxNTk5LDguOTM4MzIyMTUgNy40ODY5NDk3Niw5LjA4MDM5OTk1IDcuNjMxOTk4ODQsOS4zNDY3OTU4MiBDNy43NzM3NTEzNCw5LjYxMDUyNzc0IDguMjY5MDYwOTcsMTAuNDgwNzU0MyA5LjAwMDA3NTM1LDExLjE4MjI2MzQgQzkuOTQwNDIxOTEsMTIuMDg3MTIxNCAxMC43MzI0MjI4LDEyLjM2ODYxMyAxMC45Nzk2NjU2LDEyLjUwMDAzNSBDMTEuMjI0NDM1OSwxMi42MzIzNDQ5IDExLjM2OTQ4NSwxMi42MDc0ODEzIDExLjUxMTIzNzUsMTIuNDM0MzI0IEMxMS42NTU0NjI0LDEyLjI1NzYxNDcgMTIuMTI1MjIzNiwxMS42NiAxMi4yOTAwNTIxLDExLjM5MzYwNDEgQzEyLjQ1NDA1NjUsMTEuMTI5ODcyMiAxMi42MTg4ODUsMTEuMTcxNjA3NiAxMi44NDM4NzU4LDExLjI2MjE4MjIgQzEzLjA2ODg2NjcsMTEuMzQ5MjA0OCAxNC4yNzk1MzIsMTEuOTkwMzMwOSAxNC41MjQzMDI0LDEyLjEyMTc1MjggQzE0Ljc3MjM2OTIsMTIuMjU2NzI2OCAxNC45MzYzNzM2LDEyLjMyMzMyNTcgMTQuOTk3MzYwMSwxMi40MzQzMjQgQzE1LjA1OTE3MDgsMTIuNTQ1MzIyMyAxNS4wNTkxNzA4LDEzLjA3NjMzODEgMTQuODU1NjA3NiwxMy42OTM0ODg1IEMxNC42NDk1NzIsMTQuMzE0MTkwOSAxMy42NjgwMTgzLDE0Ljg3OTgzODEgMTMuMTk0OTYwNSwxNC45NTUzMTcgQzEyLjc2OTcwMywxNS4wMjE5MTU5IDEyLjIzMjM2MjEsMTUuMDQ5NDQzNSAxMS42NDMxMDAzLDE0Ljg0ODc1ODYgQzExLjE2NzEyMzUsMTQuNjg5Nzk3MyAxMC42OTk0MzI5LDE0LjUwMzM0NjUgMTAuMjQyMDU4MSwxNC4yOTAyMTUzIEM3Ljc3Mzc1MTM0LDEzLjE0MTE2MTEgNi4xNjA5MDQ1MiwxMC40NjM4ODI1IDYuMDM4OTMxNDQsMTAuMjkwNzI1MiBDNS45MTUzMTAwNiwxMC4xMTMxMjggNS4wMzM0Nzc2Miw4Ljg1MTI5OTUgNS4wMzM0Nzc2Miw3LjU0Njg0NzcgQzUuMDMzNDc3NjIsNi4yNDMyODM4OSA1LjY2ODA2NzMyLDUuNjAxMjY5ODMgNS44OTMwNTgyMiw1LjMzNzUzNzkyIEM2LjExODg3MzI2LDUuMDcwMjU0MDYgNi4zODU4OTU0Miw1LjAwNDU0MzA4IDYuNTUwNzIzOTEsNS4wMDQ1NDMwOCBaXCIsXG4gIG1lc3NlbmdlcjpcbiAgICBcIk0xMCwwIEMxNS42MzM3NSwwIDIwLDQuMTI3NSAyMCw5LjcwMTI1IEMyMCwxNS4yNzUgMTUuNjMzNzUsMTkuNDAxMjUgMTAsMTkuNDAxMjUgQzguOTg3NSwxOS40MDEyNSA4LjAxNSwxOS4yNjg3NSA3LjEwNSwxOS4wMTYyNSBDNy4wMzUsMTguOTk4NzUgNi45NjUsMTguOTg4NzUgNi44OTUsMTguOTg4NzUgQzYuNzg1LDE4Ljk4ODc1IDYuNjc1LDE5LjAxMTI1IDYuNTcxMjUsMTkuMDU3NSBMNi41NzEyNSwxOS4wNTc1IEw0LjU4NzUsMTkuOTMyNSBDNC40ODEyNSwxOS45OCA0LjM3MTI1LDIwIDQuMjY1LDIwIEMzLjg1MjUsMjAgMy40Nzg3NSwxOS42NzYyNSAzLjQ2Mzc1LDE5LjIyMzc1IEwzLjQ2Mzc1LDE5LjIyMzc1IEwzLjQxMTI1LDE3LjQ0NjI1IEMzLjQwMjUsMTcuMjI2MjUgMy4zMDM3NSwxNy4wMjM3NSAzLjE0MTI1LDE2Ljg3NjI1IEMxLjE5NSwxNS4xMzYyNSAwLDEyLjYxNjI1IDAsOS43MDEyNSBDMCw0LjEyNzUgNC4zNjUsMCAxMCwwIFogTTE1LjMxNSw2LjgzNDEyNSBMMTIuMTYxMjUsOS4yMjkxMjUgQzExLjk0NzUsOS4zODkxMjUgMTEuNjUzNzUsOS4zOTE2MjUgMTEuNDM3NSw5LjIzMDM3NSBMOS4xMDI1LDcuNDc5MTI1IEM4LjQwMjUsNi45NTI4NzUgNy40LDcuMTM3ODc1IDYuOTMzNzUsNy44NzkxMjUgTDMuOTk1LDEyLjUzNzg3NSBDMy43MTI1LDEyLjk4NTM3NSA0LjI2MjUsMTMuNDkwMzc1IDQuNjgzNzUsMTMuMTcwMzc1IEw3LjgzODc1LDEwLjc3NTM3NSBDOC4wNTEyNSwxMC42MTQxMjUgOC4zNDYyNSwxMC42MTI4NzUgOC41NjEyNSwxMC43NzI4NzUgTDEwLjg5NzUsMTIuNTI2NjI1IEMxMS41OTYyNSwxMy4wNTE2MjUgMTIuNTk4NzUsMTIuODY2NjI1IDEzLjA2NjI1LDEyLjEyNTM3NSBMMTYuMDAzNzUsNy40NjY2MjUgQzE2LjI4NzUsNy4wMTkxMjUgMTUuNzM2MjUsNi41MTQxMjUgMTUuMzE1LDYuODM0MTI1IFpcIixcbiAgaW5zdGFncmFtOlxuICAgIFwiTTExLjI4NzI5MzUsLTAuMDAwMzU4ODI1MzAxIEMxMi44NzAxODI3LDAuMDAzOTUxMzQ1MyAxMy4yNTc0OTMyLDAuMDE5NDIzNDM0OSAxNC4xMzAwOTI1LDAuMDYwODM3NDI4IEMxNS4xOTMwNzE1LDAuMTA3Njk1Mjk0IDE1LjkyMDA0MzQsMC4yNzk1NTgzMyAxNi41NTY5NDU0LDAuNTI1NzUyODU0IEMxNy4yMjEzMjYzLDAuNzc1NzYzMTk0IDE3LjgyNzA4NTQsMS4xNzA0NjgxMSAxOC4zMjczNTU3LDEuNjc4NDI1NTkgQzE4LjgzOTM4MDksMi4xNzg1OTg4NSAxOS4yMzAxOTMyLDIuNzgwMjcyMDYgMTkuNDg0MjIxMiwzLjQ1MjMwODM2IEMxOS43MzA0NjM1LDQuMDg1NDIzNTkgMTkuOTAyMzU5OCw0LjgxNjA3MDM3IDE5Ljk0OTIyNjgsNS44Nzg4NDMxOCBDMTkuOTU5MjY5Nyw2LjEwNzQzMDU5IDE5Ljk2NzM0MjgsNi4zMDI2NDMxIDE5Ljk3MzgyOTIsNi40OTUwMDg2MyBMMTkuOTc5ODAwOCw2LjY4NzU1NTgyIEMxOS45OTE2NTQ5LDcuMTA3NTg0NzggMTkuOTk2NjU5NCw3LjU2MjAxOTI0IDE5Ljk5ODcxMDQsOC4zNjEzNjc1NCBMMTkuOTk5NDYxNSw4Ljc1NTkxOTExIEMxOS45OTk1NTY1LDguODI2MTM2NDEgMTkuOTk5NjM3NSw4Ljg5ODY3NzI5IDE5Ljk5OTcwNjQsOC45NzM2ODMwOCBMMTkuOTk5ODc0NSwxMC41NDc3OTk2IEMxOS45OTk4MTAyLDEwLjYzMzIzMDMgMTkuOTk5NzI4OSwxMC43MTU5MTM1IDE5Ljk5OTYyOTQsMTAuNzk1OTkwNCBMMTkuOTk4ODA1NCwxMS4yNDYzMDc4IEMxOS45OTYzMzM5LDEyLjIyOTM1MDEgMTkuOTg5ODgxLDEyLjc1Njk3MTQgMTkuOTc2NTI2OSwxMy4yMTY5ODkzIEwxOS45NzAzNzI3LDEzLjQxMTEzMTUgQzE5Ljk2OTI3MzgsMTMuNDQzMTc1NiAxOS45NjgxMzc1LDEzLjQ3NTE1NzQgMTkuOTY2OTYyOCwxMy41MDcyMTgzIEwxOS45NTk0NDUzLDEzLjcwMTY2MzUgQzE5Ljk1NDExNTEsMTMuODMzNDMzOCAxOS45NDgxMzYzLDEzLjk3MDk5MjIgMTkuOTQxNDQxMSwxNC4xMjMzODM4IEMxOS44OTQ1NzQxLDE1LjE4NjE1NjYgMTkuNzIyNTI1MSwxNS45MTI5ODc1IDE5LjQ3NjQzNTUsMTYuNTQ5OTE4NiBDMTguOTU2NjI0NiwxNy44OTM5OTEyIDE3Ljg5MzY0NTYsMTguOTU2NzY0IDE2LjU0OTE1OTcsMTkuNDc2NDc0MSBDMTUuOTE2MDc0MiwxOS43MjI2Njg2IDE1LjE4NTI4NTcsMTkuODk0NTMxNyAxNC4xMjIzMDY4LDE5Ljk0MTM4OTUgQzEzLjg1NTU2OTcsMTkuOTUzMTQyMSAxMy42MzQyNjg0LDE5Ljk2MjY4MTYgMTMuNDA5OTE2MywxOS45NzAzNzk5IEwxMy4yMTU3MzY1LDE5Ljk3NjUzNjMgQzEyLjc1NTYyOTQsMTkuOTg5ODg5NiAxMi4yMjc5MDU3LDE5Ljk5NjMwMzcgMTEuMjQ0NjcyOCwxOS45OTg3NTQ3IEwxMC43OTQyNjgsMTkuOTk5NTcxMiBDMTAuNzE0MTc1NiwxOS45OTk2Njk4IDEwLjYzMTQ3NjMsMTkuOTk5NzUwMiAxMC41NDYwMjksMTkuOTk5ODEzOCBMOS40NTI0NDI1NiwxOS45OTk4MTM4IEM5LjM2Njk5NDU0LDE5Ljk5OTc1MDIgOS4yODQyOTQ0NywxOS45OTk2Njk4IDkuMjA0MjAxMDIsMTkuOTk5NTcxMiBMOC43NTM3ODg5OCwxOS45OTg3NTQ3IEM3Ljc3MDUzNjA5LDE5Ljk5NjMwMzcgNy4yNDI3NzQ3NCwxOS45ODk4ODk2IDYuNzgyNjY5NSwxOS45NzY1MzYzIEw2LjU4ODQ5MzAzLDE5Ljk3MDM3OTkgQzYuMzY0MTQ4MDYsMTkuOTYyNjgxNiA2LjE0Mjg2NTg1LDE5Ljk1MzE0MjEgNS44NzYxNjY5NywxOS45NDEzODk1IEM0LjgxMzAzNTM5LDE5Ljg5NDUzMTcgNC4wODYyMTYwNSwxOS43MjI2Njg2IDMuNDQ5MTYxNDYsMTkuNDc2NDc0MSBDMi43ODQ3ODA1MywxOS4yMjY0NjM4IDIuMTc5MDIxNDQsMTguODMxNzU4OCAxLjY3ODc1MTE2LDE4LjMyMzgwMTQgQzEuMTcwNjk1MTUsMTcuODIzNjI4MSAwLjc3NjA2NjI4NCwxNy4yMjE5NTQ5IDAuNTIyMDM4MjgxLDE2LjU0OTkxODYgQzAuMjc1Nzk2MDAxLDE1LjkxNjgwMzQgMC4xMDM3NDcwMTYsMTUuMTg2MTU2NiAwLjA1Njg4MDA2MDgsMTQuMTIzMzgzOCBDMC4wNTAxODQ3ODE1LDEzLjk3MDk5MjIgMC4wNDQyMDYwNzQ5LDEzLjgzMzQzMzggMC4wMzg4NzU4NDQzLDEzLjcwMTY2MzUgTDAuMDMxMzU4MzQzNCwxMy41MDcyMTgzIEMwLjAzMDE4MzY0ODcsMTMuNDc1MTU3NCAwLjAyOTA0NzM1NTgsMTMuNDQzMTc1NiAwLjAyNzk0ODQwMDUsMTMuNDExMTMxNSBMMC4wMjE3OTQyMDk2LDEzLjIxNjk4OTMgQzAuMDA4NDQwMTYzODIsMTIuNzU2OTcxNCAwLjAwMTk4NzIxODI4LDEyLjIyOTM1MDEgLTAuMDAwNDg0MjczNDI3LDExLjI0NjMwNzggTC0wLjAwMDM1ODg5NDkwMyw4LjcxNzEyMjQ1IEMwLjAwMzk1MjExMTc2LDcuMTM0NTQwMjYgMC4wMTk0MjcyMDI2LDYuNzQ3MzA0ODQgMC4wNjA4NDkyMjg4LDUuODc0ODc0NzkgQzAuMTA3NzE2MTg0LDQuODEyMTAxOTcgMC4yNzk2MTI1NTcsNC4wODU0MjM1OSAwLjUyNTg1NDgzNiwzLjQ0ODQ5MjU0IEMwLjc3NjA2NjI4NCwyLjc4NDI0MDQ2IDEuMTcwNjk1MTUsMi4xNzg1OTg4NSAxLjY3ODc1MTE2LDEuNjc4NDI1NTkgQzIuMTc5MDIxNDQsMS4xNjY0OTk3MSAyLjc4MDgxMTM2LDAuNzc1NzYzMTk0IDMuNDUzMTMwNjMsMC41MjE3ODQ0NTYgQzQuMDg2MjE2MDUsMC4yNzU3NDI1MTQgNC44MTcwMDQ1NSwwLjEwMzcyNjg5NiA1Ljg3OTk4MzUyLDAuMDU2ODY5MDI5NyBDNi4wMzI0MDQ2OSwwLjA1MDE3NTA0ODkgNi4xNjk5ODk2OSwwLjA0NDE5NzUwMTggNi4zMDE3ODU1OCwwLjAzODg2ODMwNDkgTDYuNDk2MjY4NDgsMC4wMzEzNTIyNjE5IEM2LjUyODMzNTYyLDAuMDMwMTc3Nzk1IDYuNTYwMzIzNjcsMC4wMjkwNDE3MjI0IDYuNTkyMzczOTcsMC4wMjc5NDI5ODAzIEw2Ljc4NjU1MzgyLDAuMDIxNzg5OTgyOSBDNy4yNDY2NjA5MSwwLjAwODQzODUyNjk3IDcuNzc0Mzg0NTksMC4wMDE5ODY4MzI4OSA4Ljc1NzYxNzUyLC0wLjAwMDQ4NDE3OTUwOSBaIE0xMC44MTg4NzQ1LDEuODE1NjUwNjkgTDkuMjA0MDIwMiwxLjgxNTY1MDY5IEM3Ljk5MDQwNDU1LDEuODE3MjYxOCA3LjM5Njg2NzE1LDEuODIzMzAxMSA2Ljg5MzM4NzIsMS44Mzc3NzI4MiBMNi42OTU1NDE5NSwxLjg0NDAyMDczIEM2LjQ2NzM5NDU4LDEuODUxODU2NzkgNi4yNDM0Njk1LDEuODYxNjQ1NTEgNS45Njk5MDA4OCwxLjg3Mzc5Mzg1IEM0Ljk5NjgzOTI2LDEuOTE2ODM1OSA0LjQ2NTI3MzQ3LDIuMDgwOTE0NzIgNC4xMTM1NDIzOSwyLjIxNzY3MjUgQzMuNjc5Njc5NjgsMi4zNzc3ODI5MyAzLjI4ODg2NzM3LDIuNjMxNzYxNjcgMi45NjQ2MTUyNCwyLjk2Mzg4NzcxIEMyLjYyODQ1NTYsMy4yODQ0MTM3MiAyLjM3NDQyNzYsMy42Nzg5NjYwNiAyLjIxNDEzMzUxLDQuMTEyNzQ0NjMgQzIuMDc3MzQ5Miw0LjQ2NDQwNzUgMS45MTMyMzg1NSw0Ljk5MTkwMTggMS44NzAzNDA3Niw1Ljk2ODc0MzEgQzEuODMwMjg3MDUsNi44NjQwNTY2MSAxLjgxNTkzMzk2LDcuMjI5MTc1MTMgMS44MTI1NjAyOCw4Ljk2NzM5NjQ2IEwxLjgxMjU2MDI4LDExLjA1MDE4NTQgQzEuODE0NjEzODMsMTIuMTA3Nzc4OSAxLjgyMDczNTM2LDEyLjY1NjA1OTcgMS44MzQyNDQ5MiwxMy4xMjU4OTIgTDEuODQwNDk2NzQsMTMuMzIzNzAxOSBDMS44NDgzNDA4MywxMy41NTE4MDc2IDEuODU4MTUwNSwxMy43NzU2ODkzIDEuODcwMzQwNzYsMTQuMDQ5MjA0OSBDMS45MTMyMzg1NSwxNS4wMjIwNzc4IDIuMDc3MzQ5MiwxNS41NTM1NDA1IDIuMjE0MTMzNTEsMTUuOTA1MjAzMyBDMi4zNzQ0Mjc2LDE2LjMzODgyOTMgMi42Mjg0NTU2LDE2LjcyOTU2NTggMi45NjA2NDYwNywxNy4wNTM5MDc3IEMzLjI4MTA4MTY0LDE3LjM4NjAzMzcgMy42NzU4NjMxMiwxNy42NDAwMTI0IDQuMTA5NTczMjIsMTcuODAwMjc1NSBDNC40NjEzMDQzMSwxNy45MzcwMzMyIDQuOTg4OTAwOTMsMTguMTAxMTEyMSA1Ljk2NTkzMTcxLDE4LjE0NDAwMTUgQzYuMTYwNjMxMSwxOC4xNTI3MDcyIDYuMzMwMjYzOTIsMTguMTYwMTk4NSA2LjQ5NDM4ODgyLDE4LjE2NjYyNjYgTDYuNjg5OTQ2NjcsMTguMTczODM5OCBDNy4yMTEwNjAxNSwxOC4xOTE3NjU2IDcuNzU1ODg0ODYsMTguMTk5NDI0MyA4Ljk2NTMxODg0LDE4LjIwMTc3MDggTDExLjA0ODUwMzIsMTguMjAxNzcwOCBDMTIuMjU3MzkzMiwxOC4xOTk0MjQzIDEyLjgwMDg5MTYsMTguMTkxNzY1NiAxMy4zMjIzNDI2LDE4LjE3MzgzOTggTDEzLjUxODEwOTgsMTguMTY2NjI2NiBDMTMuNjgyNDgyMSwxOC4xNjAxOTg1IDEzLjg1MjU1NDcsMTguMTUyNzA3MiAxNC4wNDc5NjA5LDE4LjE0NDAwMTUgQzE1LjAyMTE3NTEsMTguMTAxMTEyMSAxNS41NTI1ODgzLDE3LjkzNzAzMzIgMTUuOTA0MzE5NCwxNy44MDAyNzU1IEMxNi43NzU4NjEzLDE3LjQ2NDE4MSAxNy40Njc1Njg2LDE2Ljc3MjYwNzkgMTcuODAzNzI4MiwxNS45MDEyMzQ5IEMxNy45NDA1MTI1LDE1LjU0OTU3MjEgMTguMTA0NjIzMiwxNS4wMjIwNzc4IDE4LjE0NzY3MzYsMTQuMDQ1MjM2NSBDMTguMTg5MzMzMSwxMy4xMDc0Njg4IDE4LjIwMzI0OTgsMTIuNzU2Mjg4MyAxOC4yMDU4MjgsMTAuODE1NDY5NSBMMTguMjA1ODI4LDkuMjAyMTk1MDMgQzE4LjIwMzI0OTgsNy4yNjA3MDYxOSAxOC4xODkzMzMxLDYuOTA2NTEwNzUgMTguMTQ3NjczNiw1Ljk2ODc0MzEgQzE4LjEwNDYyMzIsNC45OTU3MTc2MiAxNy45NDA1MTI1LDQuNDY0NDA3NSAxNy44MDM3MjgyLDQuMTEyNzQ0NjMgQzE3LjY0MzQzNDEsMy42Nzg5NjYwNiAxNy4zODk0MDYxLDMuMjg4MjI5NTQgMTcuMDU3MjE1NywyLjk2Mzg4NzcxIEMxNi43MzY3ODAxLDIuNjMxNzYxNjcgMTYuMzQxOTk4NiwyLjM3Nzc4MjkzIDE1LjkwODI4ODUsMi4yMTc2NzI1IEMxNS41NTY1NTc0LDIuMDgwOTE0NzIgMTUuMDI4OTYwOCwxLjkxNjgzNTkgMTQuMDUxOTMsMS44NzM3OTM4NSBDMTMuODE4MjkwOCwxLjg2MzM4MDk5IDEzLjYyMDk0MzQsMS44NTQ3MDE3MiAxMy40MjU5NTk4LDEuODQ3NDk5NzggTDEzLjIzMDUwNzYsMS44NDA3ODA3OSBDMTIuNzA0NzAxMSwxLjgyNDEyNjAyIDEyLjExNTI4MiwxLjgxNzM2OTIgMTAuODE4ODc0NSwxLjgxNTY1MDY5IFogTTkuOTk5MTYwNTYsNC45OTg2OTM5MSBDMTIuNzU5OTI1Myw0Ljk5ODY5MzkxIDE0Ljk5OTYxMTcsNy4yMzgzNzMyNSAxNC45OTk2MTE3LDkuOTk5MTI5MjggQzE0Ljk5OTYxMTcsMTIuNzU5ODg1MyAxMi43NTk5MjUzLDE0Ljk5OTU2NDYgOS45OTkxNjA1NiwxNC45OTk1NjQ2IEM3LjIzODU0NDMsMTQuOTk5NTY0NiA0Ljk5ODcwOTM5LDEyLjc1OTg4NTMgNC45OTg3MDkzOSw5Ljk5OTEyOTI4IEM0Ljk5ODcwOTM5LDcuMjM4MzczMjUgNy4yMzg1NDQzLDQuOTk4NjkzOTEgOS45OTkxNjA1Niw0Ljk5ODY5MzkxIFogTTkuOTk5MTYwNTYsNi43NTU0NzExNiBDOC4yMDgyMTM1Myw2Ljc1NTQ3MTE2IDYuNzU1NDkyMTksOC4yMDgwMzk0MiA2Ljc1NTQ5MjE5LDkuOTk5MTI5MjggQzYuNzU1NDkyMTksMTEuNzkwMjE5MSA4LjIwODIxMzUzLDEzLjI0Mjc4NzQgOS45OTkxNjA1NiwxMy4yNDI3ODc0IEMxMS43OTAyNTYxLDEzLjI0Mjc4NzQgMTMuMjQyODI4OSwxMS43OTAyMTkxIDEzLjI0MjgyODksOS45OTkxMjkyOCBDMTMuMjQyODI4OSw4LjIwODAzOTQyIDExLjc5MDI1NjEsNi43NTU0NzExNiA5Ljk5OTE2MDU2LDYuNzU1NDcxMTYgWiBNMTQuOTk5NTMyMiwzLjc0ODU4NTA3IEMxNS42OTAwMDEsMy43NDg1ODUwNyAxNi4yNDk3MjQ1LDQuMzA4MTgzMzcgMTYuMjQ5NzI0NSw0Ljk5ODY5MzkxIEMxNi4yNDk3MjQ1LDUuNjg5MDQ1NCAxNS42OTAwMDEsNi4yNDg4MDI3NSAxNC45OTk1MzIyLDYuMjQ4ODAyNzUgQzE0LjMwOTIyMjQsNi4yNDg4MDI3NSAxMy43NDk0OTg5LDUuNjg5MDQ1NCAxMy43NDk0OTg5LDQuOTk4NjkzOTEgQzEzLjc0OTQ5ODksNC4zMDgxODMzNyAxNC4zMDkyMjI0LDMuNzQ4NTg1MDcgMTQuOTk5NTMyMiwzLjc0ODU4NTA3IFpcIixcbn07XG5cbmV4cG9ydCBjb25zdCBidXR0b25TaXplOiB7IGNvbXBhY3Q6IFwiY29tcGFjdFwiOyBzdGFuZGFyZDogXCJzdGFuZGFyZFwiIH0gPSB7XG4gIGNvbXBhY3Q6IFwiY29tcGFjdFwiLFxuICBzdGFuZGFyZDogXCJzdGFuZGFyZFwiLFxufTtcblxuZXhwb3J0IGNvbnN0IHN1cHBvcnRlZENoYW5uZWw6IHtcbiAgd2hhdHNBcHA6IFwid2hhdHNhcHBcIjtcbiAgaW5zdGFncmFtOiBcImluc3RhZ3JhbVwiO1xuICBtZXNzZW5nZXI6IFwibWVzc2VuZ2VyXCI7XG59ID0ge1xuICB3aGF0c0FwcDogXCJ3aGF0c2FwcFwiLFxuICBpbnN0YWdyYW06IFwiaW5zdGFncmFtXCIsXG4gIG1lc3NlbmdlcjogXCJtZXNzZW5nZXJcIixcbn07XG4iLCJpbXBvcnQgeyBidXR0b25TaXplLCBsb2dvUGF0aEJ5Q2hhbm5lbCwgc2l6ZVNldHRpbmdzIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQnV0dG9uU2V0dGluZ3NCdWlsZGVyIHtcbiAgbG9nb1BhdGg6IHN0cmluZyA9IGxvZ29QYXRoQnlDaGFubmVsW3RoaXMuY2hhbm5lbF07XG4gIGxhYmVsOiBzdHJpbmcgPSBcIlwiO1xuICBfcmFkaXVzPzogc3RyaW5nO1xuICBfZm9udFNpemU/OiBzdHJpbmc7XG4gIF9wYWRkaW5nPzogc3RyaW5nO1xuICBfc2l6ZT86IEJ1dHRvblNpemU7XG4gIF9iYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIF9ib3JkZXJDb2xvcj86IHN0cmluZztcbiAgX2NvbG9yPzogc3RyaW5nO1xuICBfbG9nb0RpbWVuc2lvbnM/OiBzdHJpbmc7XG4gIF9ocmVmPzogc3RyaW5nO1xuICBfYmFja2dyb3VuZEltYWdlPzogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWw6IFN1cHBvcnRlZENoYW5uZWwsXG4gICAgcHJpdmF0ZSBkZWZhdWx0Q29sb3JQYWxldHRlS2V5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBjb2xvclBhbGV0dGVPcHRpb25zOiBDb2xvck9wdGlvbnMsXG4gICAgcHJpdmF0ZSBpZGVudGlmaWVyS2V5czogc3RyaW5nW10sXG4gICAgcHJvdGVjdGVkIGhyZWZQcmVmaXg6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgY29uZmlndXJlZEJ1dHRvblNldHRpbmdzOiBDb25maWd1cmVkQnV0dG9uU2V0dGluZ3NcbiAgKSB7fVxuXG4gIGdldCByYWRpdXMoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3JhZGl1cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicmFkaXVzIHJlYWQgYmVmb3JlIGl0IGlzIHNldFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcmFkaXVzO1xuICB9XG5cbiAgZ2V0IGZvbnRTaXplKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9mb250U2l6ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiIGZvbnRTaXplIHJlYWQgYmVmb3JlIGl0IGlzIHNldFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZm9udFNpemU7XG4gIH1cblxuICBnZXQgcGFkZGluZygpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fcGFkZGluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicGFkZGluZyByZWFkIGJlZm9yZSBpdCBpcyBzZXRcIik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wYWRkaW5nO1xuICB9XG5cbiAgZ2V0IHNpemUoKTogQnV0dG9uU2l6ZSB7XG4gICAgaWYgKCF0aGlzLl9zaXplKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzaXplIHJlYWQgYmVmb3JlIGl0IGlzIHNldFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gIH1cblxuICBnZXQgYmFja2dyb3VuZENvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImJhY2tncm91bmRDb2xvciByZWFkIGJlZm9yZSBpdCBpcyBzZXRcIik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9iYWNrZ3JvdW5kQ29sb3I7XG4gIH1cblxuICBnZXQgYm9yZGVyQ29sb3IoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2JvcmRlckNvbG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJib3JkZXJDb2xvciByZWFkIGJlZm9yZSBpdCBpcyBzZXRcIik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ib3JkZXJDb2xvcjtcbiAgfVxuXG4gIGdldCBjb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fY29sb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImNvbG9yIHJlYWQgYmVmb3JlIGl0IGlzIHNldFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbG9yO1xuICB9XG5cbiAgZ2V0IGxvZ29EaW1lbnNpb25zKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9sb2dvRGltZW5zaW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwibG9nb0RpbWVuc2lvbnMgcmVhZCBiZWZvcmUgaXQgaXMgc2V0XCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbG9nb0RpbWVuc2lvbnM7XG4gIH1cblxuICBnZXQgaHJlZigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5faHJlZikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaHJlZiByZWFkIGJlZm9yZSBpdCBpcyBzZXRcIik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ocmVmO1xuICB9XG5cbiAgc2V0U2l6ZVNldHRpbmdzKCk6IHRoaXMge1xuICAgIGNvbnN0IHsgc2l6ZSwgcmFkaXVzIH0gPSB0aGlzLmNvbmZpZ3VyZWRCdXR0b25TZXR0aW5ncztcbiAgICB0aGlzLl9zaXplID1cbiAgICAgIHNpemUgPT09IGJ1dHRvblNpemUuY29tcGFjdCA/IGJ1dHRvblNpemUuY29tcGFjdCA6IGJ1dHRvblNpemUuc3RhbmRhcmQ7XG5cbiAgICB0aGlzLl9yYWRpdXMgPSByYWRpdXMgfHwgc2l6ZVNldHRpbmdzW3RoaXMuc2l6ZV0ucmFkaXVzO1xuICAgIHRoaXMuX2ZvbnRTaXplID0gc2l6ZVNldHRpbmdzW3RoaXMuc2l6ZV0uZm9udFNpemU7XG4gICAgdGhpcy5fcGFkZGluZyA9IHNpemVTZXR0aW5nc1t0aGlzLnNpemVdLnBhZGRpbmc7XG4gICAgdGhpcy5fbG9nb0RpbWVuc2lvbnMgPSBzaXplU2V0dGluZ3NbdGhpcy5zaXplXS5sb2dvRGltZW5zaW9ucztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TGFiZWwoKTogdGhpcyB7XG4gICAgY29uc3QgeyBsYWJlbCB9ID0gdGhpcy5jb25maWd1cmVkQnV0dG9uU2V0dGluZ3M7XG5cbiAgICB0aGlzLmxhYmVsID0gbGFiZWwgfHwgdGhpcy5sYWJlbDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0Q29sb3JTZXR0aW5ncygpOiB0aGlzIHtcbiAgICBjb25zdCB7IGNvbG9yOiBjb25maWd1cmVkQ29sb3JQYWxldHRlS2V5IH0gPSB0aGlzLmNvbmZpZ3VyZWRCdXR0b25TZXR0aW5ncztcblxuICAgIGNvbnN0IGNvbG9yUGFsZXR0ZUtleSA9IHRoaXMuZW5zdXJlQ29sb3JQYWxldHRlS2V5SXNWYWxpZChcbiAgICAgIGNvbmZpZ3VyZWRDb2xvclBhbGV0dGVLZXlcbiAgICApO1xuXG4gICAgY29uc3Qge1xuICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBjb2xvcixcbiAgICAgIGJhY2tncm91bmRJbWFnZSxcbiAgICB9ID0gdGhpcy5jb2xvclBhbGV0dGVPcHRpb25zW2NvbG9yUGFsZXR0ZUtleV07XG5cbiAgICB0aGlzLl9ib3JkZXJDb2xvciA9IGJvcmRlckNvbG9yO1xuICAgIHRoaXMuX2JhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjtcbiAgICB0aGlzLl9jb2xvciA9IGNvbG9yO1xuICAgIHRoaXMuX2JhY2tncm91bmRJbWFnZSA9IGJhY2tncm91bmRJbWFnZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZW5zdXJlSWRlbnRpZmllcnNBcmVWYWxpZCgpOiB0aGlzIHtcbiAgICB0aGlzLmlkZW50aWZpZXJLZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgaWRlbnRpZmllciA9IHRoaXMuY29uZmlndXJlZEJ1dHRvblNldHRpbmdzW2tleV07XG5cbiAgICAgIGlmICghaWRlbnRpZmllcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgYXR0cmlidXRlIHZhbHVlIC0gJHtrZXl9IGlzIHJlcXVpcmVkYCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNhbml0aXplSWRlbnRpZmllcnMoKTogdGhpcyB7XG4gICAgdGhpcy5pZGVudGlmaWVyS2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHRoaXMuY29uZmlndXJlZEJ1dHRvblNldHRpbmdzW2tleV0gPSB0aGlzLmNvbmZpZ3VyZWRCdXR0b25TZXR0aW5nc1tcbiAgICAgICAga2V5XG4gICAgICBdLnJlcGxhY2UoL1teXFx3Ll0rL2csIFwiXCIpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBidWlsZEhyZWYoKTogdGhpcyB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJidWlsZEhyZWYgbWV0aG9kIG11c3QgYmUgSW1wbGVtZW50IGluIDxDaGFubmVsPkJ1dHRvblNldHRpbmdzQnVpbGRlclwiXG4gICAgKTtcbiAgfVxuXG4gIGdldFNldHRpbmdzKCk6IEJ1dHRvblNldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9nb1BhdGg6IHRoaXMubG9nb1BhdGgsXG4gICAgICBjaGFubmVsOiB0aGlzLmNoYW5uZWwsXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbCxcbiAgICAgIGZvbnRTaXplOiB0aGlzLmZvbnRTaXplLFxuICAgICAgcGFkZGluZzogdGhpcy5wYWRkaW5nLFxuICAgICAgcmFkaXVzOiB0aGlzLnJhZGl1cyxcbiAgICAgIHNpemU6IHRoaXMuc2l6ZSxcbiAgICAgIGJvcmRlckNvbG9yOiB0aGlzLmJvcmRlckNvbG9yLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLmJhY2tncm91bmRDb2xvcixcbiAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgbG9nb0RpbWVuc2lvbnM6IHRoaXMubG9nb0RpbWVuc2lvbnMsXG4gICAgICBocmVmOiB0aGlzLmhyZWYsXG4gICAgICBiYWNrZ3JvdW5kSW1hZ2U6IHRoaXMuX2JhY2tncm91bmRJbWFnZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVDb2xvclBhbGV0dGVLZXlJc1ZhbGlkKFxuICAgIGNvbmZpZ3VyZWRDb2xvclBhbGV0dGVLZXk6IHN0cmluZyB8IHVuZGVmaW5lZFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGFsbG93ZWRDb2xvclBhbGV0dGVzID0gT2JqZWN0LmtleXModGhpcy5jb2xvclBhbGV0dGVPcHRpb25zKTtcblxuICAgIGlmICghY29uZmlndXJlZENvbG9yUGFsZXR0ZUtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENvbG9yUGFsZXR0ZUtleTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0NvbG9yUGFsbGV0VmFsaWQgPSBhbGxvd2VkQ29sb3JQYWxldHRlcy5pbmNsdWRlcyhcbiAgICAgIGNvbmZpZ3VyZWRDb2xvclBhbGV0dGVLZXlcbiAgICApO1xuXG4gICAgcmV0dXJuIGlzQ29sb3JQYWxsZXRWYWxpZFxuICAgICAgPyBjb25maWd1cmVkQ29sb3JQYWxldHRlS2V5XG4gICAgICA6IHRoaXMuZGVmYXVsdENvbG9yUGFsZXR0ZUtleTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQnV0dG9uU2V0dGluZ3NCdWlsZGVyIH0gZnJvbSBcIi4vQnV0dG9uU2V0dGluZ3NCdWlsZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBJbnN0YWdyYW1CdXR0b25TZXR0aW5nc0J1aWxkZXIgZXh0ZW5kcyBCdXR0b25TZXR0aW5nc0J1aWxkZXIge1xuICBjb25zdHJ1Y3Rvcihjb25maWd1cmVkQnV0dG9uU2V0dGluZ3M6IENvbmZpZ3VyZWRCdXR0b25TZXR0aW5ncykge1xuICAgIHN1cGVyKFxuICAgICAgXCJpbnN0YWdyYW1cIixcbiAgICAgIFwiZ3JhZGllbnRcIixcbiAgICAgIHtcbiAgICAgICAgZ3JhZGllbnQ6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwid2hpdGVcIixcbiAgICAgICAgICBib3JkZXJDb2xvcjogXCJib3JkZXJHcmV5XCIsXG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBcImxpbmVhci1ncmFkaWVudCgtMjVkZWcsIzE0MDBjOCwjYjkwMGI0LCNmNTAwMDApXCIsXG4gICAgICAgICAgY29sb3I6IFwid2hpdGVcIixcbiAgICAgICAgfSxcbiAgICAgICAgd2hpdGU6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwid2hpdGVcIixcbiAgICAgICAgICBib3JkZXJDb2xvcjogXCJibGFja1wiLFxuICAgICAgICAgIGNvbG9yOiBcImJsYWNrXCIsXG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBcIlwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFtcImJ1c2luZXNzVXNlcm5hbWVcIl0sXG4gICAgICBcImh0dHBzOi8vaW5zdGFncmFtLmNvbS9cIixcbiAgICAgIGNvbmZpZ3VyZWRCdXR0b25TZXR0aW5nc1xuICAgICk7XG4gIH1cblxuICBidWlsZEhyZWYoKTogdGhpcyB7XG4gICAgY29uc3QgeyBidXNpbmVzc1VzZXJuYW1lIH0gPSB0aGlzLmNvbmZpZ3VyZWRCdXR0b25TZXR0aW5ncztcbiAgICB0aGlzLl9ocmVmID0gYCR7dGhpcy5ocmVmUHJlZml4fSR7YnVzaW5lc3NVc2VybmFtZX1gO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiIsImltcG9ydCB7IEJ1dHRvblNldHRpbmdzQnVpbGRlciB9IGZyb20gXCIuL0J1dHRvblNldHRpbmdzQnVpbGRlclwiO1xuXG5leHBvcnQgY2xhc3MgTWVzc2VuZ2VyQnV0dG9uU2V0dGluZ3NCdWlsZGVyIGV4dGVuZHMgQnV0dG9uU2V0dGluZ3NCdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoY29uZmlndXJlZEJ1dHRvblNldHRpbmdzOiBDb25maWd1cmVkQnV0dG9uU2V0dGluZ3MpIHtcbiAgICBzdXBlcihcbiAgICAgIFwibWVzc2VuZ2VyXCIsXG4gICAgICBcIndoaXRlXCIsXG4gICAgICB7XG4gICAgICAgIHdoaXRlOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIndoaXRlXCIsXG4gICAgICAgICAgYm9yZGVyQ29sb3I6IFwiYm9yZGVyR3JleVwiLFxuICAgICAgICAgIGNvbG9yOiBcImJsdWVcIixcbiAgICAgICAgfSxcbiAgICAgICAgYmx1ZToge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCJibHVlXCIsXG4gICAgICAgICAgYm9yZGVyQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgICBjb2xvcjogXCJ3aGl0ZVwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFtcInBhZ2VJZFwiXSxcbiAgICAgIFwiaHR0cHM6Ly9tLm1lL1wiLFxuICAgICAgICBjb25maWd1cmVkQnV0dG9uU2V0dGluZ3NcbiAgICApO1xuICB9XG5cbiAgYnVpbGRIcmVmKCk6IHRoaXMge1xuICAgIGNvbnN0IHsgcGFnZUlkIH0gPSB0aGlzLmNvbmZpZ3VyZWRCdXR0b25TZXR0aW5ncztcbiAgICB0aGlzLl9ocmVmID0gYCR7dGhpcy5ocmVmUHJlZml4fSR7cGFnZUlkfWA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIiwiaW1wb3J0IHsgQnV0dG9uU2V0dGluZ3NCdWlsZGVyIH0gZnJvbSBcIi4vQnV0dG9uU2V0dGluZ3NCdWlsZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBXaGF0c0FwcEJ1dHRvblNldHRpbmdzQnVpbGRlciBleHRlbmRzIEJ1dHRvblNldHRpbmdzQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKCBjb25maWd1cmVkQnV0dG9uU2V0dGluZ3M6IENvbmZpZ3VyZWRCdXR0b25TZXR0aW5ncykge1xuICAgIHN1cGVyKFxuICAgICAgXCJ3aGF0c2FwcFwiLFxuICAgICAgXCJ3aGl0ZVwiLFxuICAgICAge1xuICAgICAgICB0ZWFsOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcInRlYWxcIixcbiAgICAgICAgICBib3JkZXJDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgICAgIGNvbG9yOiBcIndoaXRlXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGdyZWVuOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcImdyZWVuXCIsXG4gICAgICAgICAgYm9yZGVyQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgICBjb2xvcjogXCJ3aGl0ZVwiLFxuICAgICAgICB9LFxuICAgICAgICB3aGl0ZToge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCJ3aGl0ZVwiLFxuICAgICAgICAgIGJvcmRlckNvbG9yOiBcImJvcmRlckdyZXlcIixcbiAgICAgICAgICBjb2xvcjogXCJ0ZWFsXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgW1wibnVtYmVyXCJdLFxuICAgICAgXCJodHRwczovL3dhLm1lL1wiLFxuICAgICAgY29uZmlndXJlZEJ1dHRvblNldHRpbmdzXG4gICAgKTtcbiAgfVxuXG4gIGJ1aWxkSHJlZigpOiB0aGlzIHtcbiAgICBjb25zdCB7IG51bWJlciB9ID0gdGhpcy5jb25maWd1cmVkQnV0dG9uU2V0dGluZ3M7XG4gICAgdGhpcy5faHJlZiA9IGAke3RoaXMuaHJlZlByZWZpeH0ke251bWJlcn1gO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiIsImV4cG9ydCBjb25zdCBwYXJzZVF1ZXJ5UGFyYW1zID0gKHF1ZXJ5U3RyaW5nOiBzdHJpbmcpOiBvYmplY3QgPT4ge1xuICBjb25zdCBxdWVyeSA9IHt9O1xuICBjb25zdCBwYWlycyA9IChxdWVyeVN0cmluZ1swXSA9PT0gXCI/XCJcbiAgICA/IHF1ZXJ5U3RyaW5nLnN1YnN0cigxKVxuICAgIDogcXVlcnlTdHJpbmdcbiAgKS5zcGxpdChcIiZcIik7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFpcnMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwYWlyID0gcGFpcnNbaV0uc3BsaXQoXCI9XCIpO1xuICAgIHF1ZXJ5W2RlY29kZVVSSUNvbXBvbmVudChwYWlyWzBdKV0gPSBkZWNvZGVVUklDb21wb25lbnQocGFpclsxXSB8fCBcIlwiKTtcbiAgfVxuICByZXR1cm4gcXVlcnk7XG59O1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0aWYoX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSkge1xuXHRcdHJldHVybiBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCJpbXBvcnQgeyBNZXNzYWdlVXNCdXR0b25CdWlsZGVyIH0gZnJvbSBcIi4vTWVzc2FnZVVzQnV0dG9uQnVpbGRlclwiO1xuaW1wb3J0IHtcbiAgTUVTU0FHRV9VU19CVVRUT05fU0VMRUNUT1IsXG4gIHN1cHBvcnRlZENoYW5uZWwsXG4gIHRydXN0ZWREb21haW5zLFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFdoYXRzQXBwQnV0dG9uU2V0dGluZ3NCdWlsZGVyIH0gZnJvbSBcIi4vc2V0dGluZ3NCdWlsZGVyL1doYXRzQXBwQnV0dG9uU2V0dGluZ3NCdWlsZGVyXCI7XG5pbXBvcnQgeyBNZXNzZW5nZXJCdXR0b25TZXR0aW5nc0J1aWxkZXIgfSBmcm9tIFwiLi9zZXR0aW5nc0J1aWxkZXIvTWVzc2VuZ2VyQnV0dG9uU2V0dGluZ3NCdWlsZGVyXCI7XG5pbXBvcnQgeyBJbnN0YWdyYW1CdXR0b25TZXR0aW5nc0J1aWxkZXIgfSBmcm9tIFwiLi9zZXR0aW5nc0J1aWxkZXIvSW5zdGFncmFtQnV0dG9uU2V0dGluZ3NCdWlsZGVyXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgQnV0dG9uU2V0dGluZ3NCdWlsZGVyIH0gZnJvbSBcIi4vc2V0dGluZ3NCdWlsZGVyL0J1dHRvblNldHRpbmdzQnVpbGRlclwiO1xuXG5jb25zdCBjcmVhdGVDaGFubmVsQnV0dG9uU2V0dGluZ3NCdWlsZGVyID0gKFxuICBjb25maWd1cmVkQnV0dG9uU2V0dGluZ3M6IENvbmZpZ3VyZWRCdXR0b25TZXR0aW5nc1xuKTogQnV0dG9uU2V0dGluZ3NCdWlsZGVyID0+IHtcbiAgY29uc3QgeyBjaGFubmVsIH0gPSBjb25maWd1cmVkQnV0dG9uU2V0dGluZ3M7XG5cbiAgc3dpdGNoIChjaGFubmVsKSB7XG4gICAgY2FzZSBzdXBwb3J0ZWRDaGFubmVsLndoYXRzQXBwOlxuICAgICAgcmV0dXJuIG5ldyBXaGF0c0FwcEJ1dHRvblNldHRpbmdzQnVpbGRlcihjb25maWd1cmVkQnV0dG9uU2V0dGluZ3MpO1xuICAgIGNhc2Ugc3VwcG9ydGVkQ2hhbm5lbC5tZXNzZW5nZXI6XG4gICAgICByZXR1cm4gbmV3IE1lc3NlbmdlckJ1dHRvblNldHRpbmdzQnVpbGRlcihjb25maWd1cmVkQnV0dG9uU2V0dGluZ3MpO1xuICAgIGNhc2Ugc3VwcG9ydGVkQ2hhbm5lbC5pbnN0YWdyYW06XG4gICAgICByZXR1cm4gbmV3IEluc3RhZ3JhbUJ1dHRvblNldHRpbmdzQnVpbGRlcihjb25maWd1cmVkQnV0dG9uU2V0dGluZ3MpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIFwiY2hhbm5lbFwiIGF0dHJpYnV0ZSAtIFwiY2hhbm5lbFwiIGNhbiBiZSAke3N1cHBvcnRlZENoYW5uZWwud2hhdHNBcHB9LCAke3N1cHBvcnRlZENoYW5uZWwubWVzc2VuZ2VyfSwgJHtzdXBwb3J0ZWRDaGFubmVsLmluc3RhZ3JhbX1gXG4gICAgICApO1xuICB9XG59O1xuXG5jb25zdCBnZXRNZXNzYWdlVXNCdXR0b25CdWlsZGVyID0gKFxuICBjb25maWd1cmVkQnV0dG9uU2V0dGluZ3M6IENvbmZpZ3VyZWRCdXR0b25TZXR0aW5nc1xuKTogTWVzc2FnZVVzQnV0dG9uQnVpbGRlciA9PiB7XG4gIGNvbnN0IG1lc3NhZ2VVc0J1dHRvbkNvbnRhaW5lciA9IE1lc3NhZ2VVc0J1dHRvbkJ1aWxkZXIuZ2V0TWVzc2FnZVVzQnV0dG9uQ29udGFpbmVyKFxuICAgIE1FU1NBR0VfVVNfQlVUVE9OX1NFTEVDVE9SXG4gICk7XG5cbiAgY29uc3QgY2hhbm5lbEJ1dHRvblNldHRpbmdzQnVpbGRlciA9IGNyZWF0ZUNoYW5uZWxCdXR0b25TZXR0aW5nc0J1aWxkZXIoXG4gICAgY29uZmlndXJlZEJ1dHRvblNldHRpbmdzXG4gICk7XG5cbiAgY29uc3QgYnV0dG9uU2V0dGluZ3MgPSBjaGFubmVsQnV0dG9uU2V0dGluZ3NCdWlsZGVyXG4gICAgLnNldFNpemVTZXR0aW5ncygpXG4gICAgLnNldExhYmVsKClcbiAgICAuc2V0Q29sb3JTZXR0aW5ncygpXG4gICAgLmVuc3VyZUlkZW50aWZpZXJzQXJlVmFsaWQoKVxuICAgIC5zYW5pdGl6ZUlkZW50aWZpZXJzKClcbiAgICAuYnVpbGRIcmVmKClcbiAgICAuZ2V0U2V0dGluZ3MoKTtcblxuICByZXR1cm4gbmV3IE1lc3NhZ2VVc0J1dHRvbkJ1aWxkZXIobWVzc2FnZVVzQnV0dG9uQ29udGFpbmVyLCBidXR0b25TZXR0aW5ncyk7XG59O1xuXG5jb25zdCBpc0RvbWFpblRydXN0ZWQgPSAob3JpZ2luOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgbGV0IGlzVmFsaWQgPSBmYWxzZTtcbiAgbGV0IGhvc3Q7XG5cbiAgdHJ5IHtcbiAgICBob3N0ID0gbmV3IFVSTChvcmlnaW4pLmhvc3Q7XG4gIH0gY2F0Y2ggKGlnbm9yZWQpIHtcbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuXG4gIGNvbnN0IGRvbWFpbiA9IGhvc3Quc3BsaXQoXCIuXCIpWzFdO1xuXG4gIGlmICh0cnVzdGVkRG9tYWlucy5pbmNsdWRlcyhkb21haW4pKSB7XG4gICAgaXNWYWxpZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gaXNWYWxpZDtcbn07XG5cbmNvbnN0IGxpc3RlbkZvclVwZGF0ZUV2ZW50cyA9ICgpOiB2b2lkID0+IHtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIChlKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZGF0YTogeyB0eXBlOiBtZXNzYWdlVHlwZSwgdmFsdWU6IHNyYyB9LFxuICAgICAgb3JpZ2luLFxuICAgIH0gPSBlO1xuXG4gICAgaWYgKGlzRG9tYWluVHJ1c3RlZChvcmlnaW4pICYmIG1lc3NhZ2VUeXBlID09PSBcInVwZGF0ZVwiKSB7XG4gICAgICB1cGRhdGVNZXNzYWdlVXNCdXR0b24oc3JjKTtcbiAgICB9XG4gIH0pO1xufTtcblxuY29uc3QgdXBkYXRlTWVzc2FnZVVzQnV0dG9uID0gKHNyYyk6IHZvaWQgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNvbmZpZ3VyZWRCdXR0b25TZXR0aW5nczogQ29uZmlndXJlZEJ1dHRvblNldHRpbmdzID0gdXRpbHMucGFyc2VRdWVyeVBhcmFtcyhcbiAgICAgIHNyYy5zcGxpdChcIj9cIilbMV1cbiAgICApO1xuXG4gICAgY29uc3QgbWVzc2FnZVVzQnV0dG9uQnVpbGRlciA9IGdldE1lc3NhZ2VVc0J1dHRvbkJ1aWxkZXIoXG4gICAgICBjb25maWd1cmVkQnV0dG9uU2V0dGluZ3NcbiAgICApO1xuXG4gICAgbWVzc2FnZVVzQnV0dG9uQnVpbGRlclxuICAgICAgLnNldE1lc3NhZ2VVc0J1dHRvbigpXG4gICAgICAuc3R5bGVNZXNzYWdlVXNCdXR0b24oKVxuICAgICAgLnNldExvZ28oKVxuICAgICAgLnN0eWxlTG9nbygpXG4gICAgICAuc2V0TGFiZWwoKVxuICAgICAgLnBvcHVsYXRlTGFiZWxUZXh0KCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byB1cGRhdGUgbWVzc2FnZSB1cyBidXR0b25cIiwgeyBlcnJvciB9KTtcbiAgfVxufTtcblxuY29uc3QgY3JlYXRlTWVzc2FnZVVzQnV0dG9uID0gKCk6IHZvaWQgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNvbmZpZ3VyZWRCdXR0b25TZXR0aW5nczogQ29uZmlndXJlZEJ1dHRvblNldHRpbmdzID0gdXRpbHMucGFyc2VRdWVyeVBhcmFtcyhcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2hcbiAgICApO1xuXG4gICAgY29uc3QgbWVzc2FnZVVzQnV0dG9uQnVpbGRlciA9IGdldE1lc3NhZ2VVc0J1dHRvbkJ1aWxkZXIoXG4gICAgICBjb25maWd1cmVkQnV0dG9uU2V0dGluZ3NcbiAgICApO1xuXG4gICAgbWVzc2FnZVVzQnV0dG9uQnVpbGRlclxuICAgICAgLmNyZWF0ZU1lc3NhZ2VVc0J1dHRvbigpXG4gICAgICAuc3R5bGVNZXNzYWdlVXNCdXR0b24oKVxuICAgICAgLmNyZWF0ZUxvZ28oKVxuICAgICAgLnN0eWxlTG9nbygpXG4gICAgICAuY3JlYXRlTGFiZWwoKVxuICAgICAgLnBvcHVsYXRlTGFiZWxUZXh0KClcbiAgICAgIC5hcHBlbmRDb250ZW50VG9NZXNzYWdlVXNCdXR0b24oKVxuICAgICAgLmxvYWRNZXNzYWdlVXNCdXR0b25PblBhZ2UoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNyZWF0ZSBtZXNzYWdlIHVzIGJ1dHRvblwiLCB7IGVycm9yIH0pO1xuICB9XG59O1xuXG4oKCk6IHZvaWQgPT4ge1xuICBsaXN0ZW5Gb3JVcGRhdGVFdmVudHMoKTtcbiAgY3JlYXRlTWVzc2FnZVVzQnV0dG9uKCk7XG59KSgpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==