diff --git a/CHANGELOG.md b/CHANGELOG.md index 6783725..24ff54d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# 1.5.1 - released 01/03/2019 + * Fix issue where "outlined" and "filled" variants would sometimes be too wide for their containers + # 1.5.0 - released 01/03/2019 * Add `maxDropdownHeight` prop to allow for scrollable dropdowns * Make docs work better on mobile devices diff --git a/docs/docs-bundle.js b/docs/docs-bundle.js index a74f4b3..c2b7fc5 100644 --- a/docs/docs-bundle.js +++ b/docs/docs-bundle.js @@ -9,7 +9,7 @@ Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t1&&void 0!==arguments[1]?arguments[1]:{};return function(n){var r,g=t.withTheme,h=void 0!==g&&g,y=t.flip,E=void 0===y?null:y,w=t.name,R=(0,d.default)(t,["withTheme","flip","name"]),P=(0,k.default)(e),M=P.themingEnabled||"string"==typeof w||h;C+=1,P.options.index=C;var L=function(e){function t(e,n){var r;(0,i.default)(this,t),(r=(0,s.default)(this,(0,u.default)(t).call(this,e,n))).jss=n[b.default.jss]||T,r.sheetsManager=O,r.unsubscribeId=null;var o=n.muiThemeProviderOptions;return o&&(o.sheetsManager&&(r.sheetsManager=o.sheetsManager),r.sheetsCache=o.sheetsCache,r.disableStylesGeneration=o.disableStylesGeneration),r.stylesCreatorSaved=P,r.sheetOptions=(0,a.default)({generateClassName:A},n[b.default.sheetOptions]),r.theme=M?x.default.initial(n)||N:I,r.attach(r.theme),r.cacheClasses={value:null,lastProp:null,lastJSS:{}},r}return(0,c.default)(t,e),(0,l.default)(t,[{key:"componentDidMount",value:function(){var e=this;M&&(this.unsubscribeId=x.default.subscribe(this.context,function(t){var n=e.theme;e.theme=t,e.attach(e.theme),e.setState({},function(){e.detach(n)})}))}},{key:"componentDidUpdate",value:function(){this.stylesCreatorSaved}},{key:"componentWillUnmount",value:function(){this.detach(this.theme),null!==this.unsubscribeId&&x.default.unsubscribe(this.context,this.unsubscribeId)}},{key:"getClasses",value:function(){if(this.disableStylesGeneration)return this.props.classes||{};var e=!1,t=S.default.get(this.sheetsManager,this.stylesCreatorSaved,this.theme);return t.sheet.classes!==this.cacheClasses.lastJSS&&(this.cacheClasses.lastJSS=t.sheet.classes,e=!0),this.props.classes!==this.cacheClasses.lastProp&&(this.cacheClasses.lastProp=this.props.classes,e=!0),e&&(this.cacheClasses.value=(0,v.default)({baseClasses:this.cacheClasses.lastJSS,newClasses:this.props.classes,Component:n})),this.cacheClasses.value}},{key:"attach",value:function(e){if(!this.disableStylesGeneration){var t=this.stylesCreatorSaved,n=S.default.get(this.sheetsManager,t,e);if(n||(n={refs:0,sheet:null},S.default.set(this.sheetsManager,t,e,n)),0===n.refs){var r;this.sheetsCache&&(r=S.default.get(this.sheetsCache,t,e)),r||((r=this.createSheet(e)).attach(),this.sheetsCache&&S.default.set(this.sheetsCache,t,e,r)),n.sheet=r;var o=this.context[b.default.sheetsRegistry];o&&o.add(r)}n.refs+=1}}},{key:"createSheet",value:function(e){var t=this.stylesCreatorSaved.create(e,w),r=w;return this.jss.createStyleSheet(t,(0,a.default)({meta:r,classNamePrefix:r,flip:"boolean"==typeof E?E:"rtl"===e.direction,link:!1},this.sheetOptions,this.stylesCreatorSaved.options,{name:w||n.displayName},R))}},{key:"detach",value:function(e){if(!this.disableStylesGeneration){var t=S.default.get(this.sheetsManager,this.stylesCreatorSaved,e);if(t.refs-=1,0===t.refs){S.default.delete(this.sheetsManager,this.stylesCreatorSaved,e),this.jss.removeStyleSheet(t.sheet);var n=this.context[b.default.sheetsRegistry];n&&n.remove(t.sheet)}}}},{key:"render",value:function(){var e=this.props,t=(e.classes,e.innerRef),r=(0,d.default)(e,["classes","innerRef"]),o=(0,_.default)({theme:this.theme,name:w,props:r});return h&&!o.theme&&(o.theme=this.theme),p.default.createElement(n,(0,a.default)({},o,{classes:this.getClasses(),ref:t}))}}]),t}(p.default.Component);return L.contextTypes=(0,a.default)((r={muiThemeProviderOptions:f.default.object},(0,o.default)(r,b.default.jss,f.default.object),(0,o.default)(r,b.default.sheetOptions,f.default.object),(0,o.default)(r,b.default.sheetsRegistry,f.default.object),r),M?x.default.contextTypes:{}),(0,m.default)(L,n),L}});t.default=function(e,t){return g.ponyfillGlobal.__MUI_STYLES__.withStyles(e,(0,a.default)({defaultTheme:N},t))}},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){"use strict";var r=n(172),o=n.n(r),a=n(173),i=n.n(a),l=n(174),s=n.n(l),u=n(175),c=n.n(u),d=n(176),p=n.n(d),f=n(177),m=n.n(f),g=n(178),h=n.n(g),b=n(179),y=n.n(b),v=n(180),S=n.n(v),E=n(181),x=n.n(E),w=n(182),k=n.n(w);n.d(t,"a",function(){return _}),n.d(t,"b",function(){return T});var _=[{name:"apple",stock:0,image:o.a,detail:"Keeps the doctor away"},{name:"pear",stock:14,image:i.a,detail:"The tastiest fruit in the world"},{name:"banana",stock:282,image:s.a,detail:"Full of lovely potassium!"},{name:"melon",stock:81,image:p.a,detail:"Available in many different flavours"},{name:"raspberry",stock:422,image:c.a,detail:"Technically not a berry, but whatevs"},{name:"grapes",stock:109,image:m.a,detail:"You could theoretically make wine"},{name:"pomegranate",stock:75,image:y.a,detail:"No-one knows what these are"},{name:"tomato",stock:5,image:x.a,detail:"This is definitely a fruit, get off my case"},{name:"lemon",stock:75,image:k.a,detail:"When life give you lemons, something something grenade"},{name:"plum",stock:2,image:h.a,detail:"Not as good as a nectarine, deal with it"},{name:"watermelon",stock:1045,image:S.a,detail:"Soooo refreshing on a hot day"}];function T(e){return _.filter(function(t){return t.name.toLowerCase().includes(e.toLowerCase())})}},function(e,t,n){"use strict";var r=n(0),o=n.n(r);function a(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}function i(){return(i=Object.assign||function(e){for(var t=1;tt||a>e&&i=t&&l>=n?a-e-r:i>t&&ln?i-t+o:0}var f=function(e,t){var n=t.scrollMode,r=t.block,o=t.inline,a=t.boundary,i=t.skipOverflowHiddenElements,l="function"==typeof a?a:function(e){return e!==a};if(!u(e))throw new TypeError("Invalid target");for(var s=document.scrollingElement||document.documentElement,c=[],f=e;u(f)&&l(f);){if((f=f.parentNode)===s){c.push(f);break}f===document.body&&d(f)&&!d(document.documentElement)||d(f,i)&&c.push(f)}for(var m=window.visualViewport?visualViewport.width:innerWidth,g=window.visualViewport?visualViewport.height:innerHeight,h=window.scrollX||pageXOffset,b=window.scrollY||pageYOffset,y=e.getBoundingClientRect(),v=y.height,S=y.width,E=y.top,x=y.right,w=y.bottom,k=y.left,_="start"===r||"nearest"===r?E:"end"===r?w:E+v/2,T="center"===o?k+S/2:"end"===o?x:k,A=[],C=0;C=0&&k>=0&&w<=g&&x<=m&&E>=P&&w<=L&&k>=D&&x<=M)return A;var F=getComputedStyle(O),B=parseInt(F.borderLeftWidth,10),j=parseInt(F.borderTopWidth,10),U=parseInt(F.borderRightWidth,10),z=parseInt(F.borderBottomWidth,10),H=0,W=0,G="offsetWidth"in O?O.offsetWidth-O.clientWidth-B-U:0,V="offsetHeight"in O?O.offsetHeight-O.clientHeight-j-z:0;if(s===O)H="start"===r?_:"end"===r?_-g:"nearest"===r?p(b,b+g,g,j,z,b+_,b+_+v,v):_-g/2,W="start"===o?T:"center"===o?T-m/2:"end"===o?T-m:p(h,h+m,m,B,U,h+T,h+T+S,S),H=Math.max(0,H+b),W=Math.max(0,W+h);else{H="start"===r?_-P-j:"end"===r?_-L+z+V:"nearest"===r?p(P,L,N,j,z+V,_,_+v,v):_-(P+N/2)+V/2,W="start"===o?T-D-B:"center"===o?T-(D+R/2)+G/2:"end"===o?T-M+U+G:p(D,M,R,B,U+G,T,T+S,S);var $=O.scrollLeft,q=O.scrollTop;_+=q-(H=Math.max(0,Math.min(q+H,O.scrollHeight-N+V))),T+=$-(W=Math.max(0,Math.min($+W,O.scrollWidth-R+G)))}A.push({el:O,top:H,left:W})}return A},m="undefined"==typeof document?null:document.getElementById("a11y-status-message"),g=[];function h(e){var t=g[g.length-1]===e;g=t?[].concat(g,[e]):[e];for(var n=function(){if(m)return m;return(m=document.createElement("div")).setAttribute("id","a11y-status-message"),m.setAttribute("role","status"),m.setAttribute("aria-live","polite"),m.setAttribute("aria-relevant","additions text"),Object.assign(m.style,{border:"0",clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0",position:"absolute",width:"1px"}),document.body.appendChild(m),m}();n.lastChild;)n.removeChild(n.firstChild);g.filter(Boolean).forEach(function(e,t){n.appendChild(function(e,t){var n=t===g.length-1?"block":"none",r=document.createElement("div");return r.style.display=n,r.textContent=e,r}(e,t))})}var b=0,y=2,v=3,S=4,E=5,x=6,w=7,k=8,_=9,T=10,A=11,C=12,O=13,I=14,N=Object.freeze({unknown:b,mouseUp:1,itemMouseEnter:y,keyDownArrowUp:v,keyDownArrowDown:S,keyDownEscape:E,keyDownEnter:x,keyDownHome:w,keyDownEnd:k,clickItem:_,blurInput:T,changeInput:A,keyDownSpaceButton:C,clickButton:O,blurButton:I,controlledPropUpdatedSelectedItem:15,touchEnd:16}),R=0;function P(e){return"function"==typeof e?e:M}function M(){}function L(e,t){return e===t||e.contains&&e.contains(t)}function D(){for(var e=arguments.length,t=new Array(e),n=0;n1?n-1:0),o=1;o=37&&n<=40&&0!==t.indexOf("Arrow")?"Arrow"+t:t}function W(e,t,n){var r=n-1;("number"!=typeof t||t<0||t>=n)&&(t=e>0?-1:r+1);var o=t+e;return o<0?o=r:o>r&&(o=0),o}var G=function(e){var t,n;function r(t){var n=e.call(this,t)||this;n.id=n.props.id||"downshift-"+String(R++),n.menuId=n.props.menuId||n.id+"-menu",n.labelId=n.props.labelId||n.id+"-label",n.inputId=n.props.inputId||n.id+"-input",n.getItemId=n.props.getItemId||function(e){return n.id+"-item-"+e},n.input=null,n.items=[],n.itemCount=null,n.previousResultCount=0,n.timeoutIds=[],n.internalSetTimeout=function(e,t){var r=setTimeout(function(){n.timeoutIds=n.timeoutIds.filter(function(e){return e!==r}),e()},t);n.timeoutIds.push(r)},n.setItemCount=function(e){n.itemCount=e},n.unsetItemCount=function(){n.itemCount=null},n.setHighlightedIndex=function(e,t){void 0===e&&(e=n.props.defaultHighlightedIndex),void 0===t&&(t={}),t=z(t),n.internalSetState(i({highlightedIndex:e},t))},n.clearSelection=function(e){n.internalSetState({selectedItem:null,inputValue:"",highlightedIndex:n.props.defaultHighlightedIndex,isOpen:n.props.defaultIsOpen},e)},n.selectItem=function(e,t,r){t=z(t),n.internalSetState(i({isOpen:n.props.defaultIsOpen,highlightedIndex:n.props.defaultHighlightedIndex,selectedItem:e,inputValue:n.props.itemToString(e)},t),r)},n.selectItemAtIndex=function(e,t,r){var o=n.items[e];null!=o&&n.selectItem(o,t,r)},n.selectHighlightedItem=function(e,t){return n.selectItemAtIndex(n.getState().highlightedIndex,e,t)},n.internalSetState=function(e,t){var r,o,a={},l="function"==typeof e;return!l&&e.hasOwnProperty("inputValue")&&n.props.onInputValueChange(e.inputValue,i({},n.getStateAndHelpers(),e)),n.setState(function(t){t=n.getState(t);var s=l?e(t):e;s=n.props.stateReducer(t,s),r=s.hasOwnProperty("selectedItem");var u={},c={};return r&&s.selectedItem!==t.selectedItem&&(o=s.selectedItem),s.type=s.type||b,Object.keys(s).forEach(function(e){t[e]!==s[e]&&(a[e]=s[e]),"type"!==e&&(c[e]=s[e],n.isControlledProp(e)||(u[e]=s[e]))}),l&&s.hasOwnProperty("inputValue")&&n.props.onInputValueChange(s.inputValue,i({},n.getStateAndHelpers(),s)),u},function(){P(t)(),Object.keys(a).length>1&&n.props.onStateChange(a,n.getStateAndHelpers()),r&&n.props.onSelect(e.selectedItem,n.getStateAndHelpers()),void 0!==o&&n.props.onChange(o,n.getStateAndHelpers()),n.props.onUserAction(a,n.getStateAndHelpers())})},n.rootRef=function(e){return n._rootNode=e},n.getRootProps=function(e,t){var r,o=void 0===e?{}:e,l=o.refKey,s=void 0===l?"ref":l,u=a(o,["refKey"]),c=(void 0===t?{}:t).suppressRefError,d=void 0!==c&&c;n.getRootProps.called=!0,n.getRootProps.refKey=s,n.getRootProps.suppressRefError=d;var p=n.getState().isOpen;return i(((r={})[s]=n.rootRef,r.role="combobox",r["aria-expanded"]=p,r["aria-haspopup"]="listbox",r["aria-owns"]=p?n.menuId:null,r["aria-labelledby"]=n.labelId,r),u)},n.keyDownHandlers={ArrowDown:function(e){var t=this;if(e.preventDefault(),this.getState().isOpen){var n=e.shiftKey?5:1;this.moveHighlightedIndex(n,{type:S})}else this.internalSetState({isOpen:!0,type:S},function(){var e=t.getItemCount();e>0&&t.setHighlightedIndex(W(1,t.getState().highlightedIndex,e),{type:S})})},ArrowUp:function(e){var t=this;if(e.preventDefault(),this.getState().isOpen){var n=e.shiftKey?-5:-1;this.moveHighlightedIndex(n,{type:v})}else this.internalSetState({isOpen:!0,type:v},function(){var e=t.getItemCount();e>0&&t.setHighlightedIndex(W(-1,t.getState().highlightedIndex,e),{type:S})})},Enter:function(e){var t=this.getState(),n=t.isOpen,r=t.highlightedIndex;if(n&&null!=r){e.preventDefault();var o=this.items[r],a=this.getItemNodeFromIndex(r);if(null==o||a&&a.hasAttribute("disabled"))return;this.selectHighlightedItem({type:x})}},Escape:function(e){e.preventDefault(),this.reset({type:E})}},n.buttonKeyDownHandlers=i({},n.keyDownHandlers,{" ":function(e){e.preventDefault(),this.toggleMenu({type:C})}}),n.inputKeyDownHandlers=i({},n.keyDownHandlers,{Home:function(e){this.highlightFirstOrLastIndex(e,!0,{type:w})},End:function(e){this.highlightFirstOrLastIndex(e,!1,{type:k})}}),n.getToggleButtonProps=function(e){var t=void 0===e?{}:e,r=t.onClick,o=(t.onPress,t.onKeyDown),l=t.onKeyUp,s=t.onBlur,u=a(t,["onClick","onPress","onKeyDown","onKeyUp","onBlur"]),c=n.getState().isOpen,d={onClick:D(r,n.buttonHandleClick),onKeyDown:D(o,n.buttonHandleKeyDown),onKeyUp:D(l,n.buttonHandleKeyUp),onBlur:D(s,n.buttonHandleBlur)};return i({type:"button",role:"button","aria-label":c?"close menu":"open menu","aria-haspopup":!0,"data-toggle":!0},u.disabled?{}:d,u)},n.buttonHandleKeyUp=function(e){e.preventDefault()},n.buttonHandleKeyDown=function(e){var t=H(e);n.buttonKeyDownHandlers[t]&&n.buttonKeyDownHandlers[t].call(l(n),e)},n.buttonHandleClick=function(e){e.preventDefault(),n.props.environment.document.activeElement===n.props.environment.document.body&&e.target.focus(),n.internalSetTimeout(function(){return n.toggleMenu({type:O})})},n.buttonHandleBlur=function(e){var t=e.target;n.internalSetTimeout(function(){n.isMouseDown||null!=n.props.environment.document.activeElement&&n.props.environment.document.activeElement.id===n.inputId||n.props.environment.document.activeElement===t||n.reset({type:I})})},n.getLabelProps=function(e){return i({htmlFor:n.inputId,id:n.labelId},e)},n.getInputProps=function(e){var t=void 0===e?{}:e,r=t.onKeyDown,o=t.onBlur,l=t.onChange,s=t.onInput,u=(t.onChangeText,a(t,["onKeyDown","onBlur","onChange","onInput","onChangeText"])),c={};var d,p=n.getState(),f=p.inputValue,m=p.isOpen,g=p.highlightedIndex;u.disabled||((d={}).onChange=D(l,s,n.inputHandleChange),d.onKeyDown=D(r,n.inputHandleKeyDown),d.onBlur=D(o,n.inputHandleBlur),c=d);return i({"aria-autocomplete":"list","aria-activedescendant":m&&"number"==typeof g&&g>=0?n.getItemId(g):null,"aria-controls":m?n.menuId:null,"aria-labelledby":n.labelId,autoComplete:"off",value:f,id:n.inputId},c,u)},n.inputHandleKeyDown=function(e){var t=H(e);t&&n.inputKeyDownHandlers[t]&&n.inputKeyDownHandlers[t].call(l(n),e)},n.inputHandleChange=function(e){n.internalSetState({type:A,isOpen:!0,inputValue:e.target.value})},n.inputHandleTextChange=function(e){n.internalSetState({type:A,isOpen:!0,inputValue:e})},n.inputHandleBlur=function(){n.internalSetTimeout(function(){var e=n.props.environment.document&&!!n.props.environment.document.activeElement&&!!n.props.environment.document.activeElement.dataset&&n.props.environment.document.activeElement.dataset.toggle&&n._rootNode&&n._rootNode.contains(n.props.environment.document.activeElement);n.isMouseDown||e||n.reset({type:T})})},n.menuRef=function(e){n._menuNode=e},n.getMenuProps=function(e,t){var r,o=void 0===e?{}:e,l=o.refKey,s=void 0===l?"ref":l,u=o.ref,c=a(o,["refKey","ref"]),d=(void 0===t?{}:t).suppressRefError,p=void 0!==d&&d;return n.getMenuProps.called=!0,n.getMenuProps.refKey=s,n.getMenuProps.suppressRefError=p,i(((r={})[s]=function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&"number"==typeof a&&n.setHighlightedIndex(a,e),P(t)()})},n.openMenu=function(e){n.internalSetState({isOpen:!0},e)},n.closeMenu=function(e){n.internalSetState({isOpen:!1},e)},n.updateStatus=function(e,t){var n;function r(){n&&clearTimeout(n)}function o(){for(var o=arguments.length,a=new Array(o),i=0;i0){var r=W(e,this.getState().highlightedIndex,n);this.setHighlightedIndex(r,t)}},s.highlightFirstOrLastIndex=function(e,t,n){var r=this.getItemCount()-1;r<0||!this.getState().isOpen||(e.preventDefault(),this.setHighlightedIndex(t?0:r,n))},s.getStateAndHelpers=function(){var e=this.getState(),t=e.highlightedIndex,n=e.inputValue,r=e.selectedItem,o=e.isOpen,a=this.props.itemToString,i=this.id,l=this.getRootProps,s=this.getToggleButtonProps,u=this.getLabelProps,c=this.getMenuProps,d=this.getInputProps,p=this.getItemProps,f=this.openMenu,m=this.closeMenu,g=this.toggleMenu,h=this.selectItem,b=this.selectItemAtIndex,y=this.selectHighlightedItem,v=this.setHighlightedIndex,S=this.clearSelection,E=this.clearItems;return{getRootProps:l,getToggleButtonProps:s,getLabelProps:u,getMenuProps:c,getInputProps:d,getItemProps:p,reset:this.reset,openMenu:f,closeMenu:m,toggleMenu:g,selectItem:h,selectItemAtIndex:b,selectHighlightedItem:y,setHighlightedIndex:v,clearSelection:S,clearItems:E,setItemCount:this.setItemCount,unsetItemCount:this.unsetItemCount,setState:this.internalSetState,itemToString:a,id:i,highlightedIndex:t,inputValue:n,isOpen:o,selectedItem:r}},s.componentDidMount=function(){var e=this;var t=function(t,n){void 0===n&&(n=!0);var r=e.props.environment.document;return[e._rootNode,e._menuNode].some(function(e){return e&&(L(e,t)||n&&L(e,r.activeElement))})},n=function(){e.isMouseDown=!0},r=function(n){e.isMouseDown=!1,!t(n.target)&&e.getState().isOpen&&e.reset({type:1},function(){return e.props.onOuterClick(e.getStateAndHelpers())})},o=function(){e.isTouchMove=!1},a=function(){e.isTouchMove=!0},i=function(n){var r=t(n.target,!1);e.isTouchMove||r||!e.getState().isOpen||e.reset({type:16},function(){return e.props.onOuterClick(e.getStateAndHelpers())})};this.props.environment.addEventListener("mousedown",n),this.props.environment.addEventListener("mouseup",r),this.props.environment.addEventListener("touchstart",o),this.props.environment.addEventListener("touchmove",a),this.props.environment.addEventListener("touchend",i),this.cleanup=function(){e.internalClearTimeouts(),e.updateStatus.cancel(),e.props.environment.removeEventListener("mousedown",n),e.props.environment.removeEventListener("mouseup",r),e.props.environment.removeEventListener("touchstart",o),e.props.environment.removeEventListener("touchmove",a),e.props.environment.removeEventListener("touchend",i)}},s.shouldScroll=function(e,t){var n=(void 0===this.props.highlightedIndex?this.getState():this.props).highlightedIndex,r=(void 0===t.highlightedIndex?e:t).highlightedIndex;return n&&this.getState().isOpen&&!e.isOpen||n!==r},s.componentDidUpdate=function(e,t){this.isControlledProp("selectedItem")&&this.props.selectedItemChanged(e.selectedItem,this.props.selectedItem)&&this.internalSetState({type:15,inputValue:this.props.itemToString(this.props.selectedItem)}),!this.avoidScrolling&&this.shouldScroll(t,e)&&this.scrollHighlightedItemIntoView(),this.updateStatus()},s.componentWillUnmount=function(){this.cleanup()},s.render=function(){var e=F(this.props.children,M);this.clearItems(),this.getRootProps.called=!1,this.getRootProps.refKey=void 0,this.getRootProps.suppressRefError=void 0,this.getMenuProps.called=!1,this.getMenuProps.refKey=void 0,this.getMenuProps.suppressRefError=void 0,this.getLabelProps.called=!1,this.getInputProps.called=!1;var t=F(e(this.getStateAndHelpers()));return t?this.getRootProps.called||this.props.suppressRefError?t:B(t)?o.a.cloneElement(t,this.getRootProps(j(t))):void 0:null},r}(r.Component);G.defaultProps={defaultHighlightedIndex:null,defaultIsOpen:!1,getA11yStatusMessage:function(e){var t=e.isOpen,n=e.selectedItem,r=e.resultCount,o=e.previousResultCount,a=e.itemToString;return t?r?r!==o?r+" result"+(1===r?" is":"s are")+" available, use up and down arrow keys to navigate. Press Enter key to select.":"":"No results are available.":n?a(n):""},itemToString:function(e){return null==e?"":String(e)},onStateChange:M,onInputValueChange:M,onUserAction:M,onChange:M,onSelect:M,onOuterClick:M,selectedItemChanged:function(e,t){return e!==t},environment:"undefined"==typeof window?{}:window,stateReducer:function(e,t){return t},suppressRefError:!1,scrollIntoView:function(e,t){null!==e&&f(e,{boundary:t,block:"nearest",scrollMode:"if-needed"}).forEach(function(e){var t=e.el,n=e.top,r=e.left;t.scrollTop=n,t.scrollLeft=r})}},G.stateChangeTypes=N;var V=G,$=n(3),q=n(19);function K(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Z=function(e){return["filled","outlined"].includes(e)};function Q(e){return"outlined"===e?{padding:"18.5px 14px"}:"filled"===e?{padding:"27px 12px 10px"}:void 0}function J(e){var t=e.value,n=e.onChange,r=e.startAdornment,a=e.classes,i=e.fullWidth,l=e.label,s=e.onBlur,u=e.onKeyDown,c=e.disabled,d=e.error,p=e.variant,f=e.helperText,m=e.required,g=e.name,h={inputProps:K({},X(e,["value","onChange","startAdornment","classes","fullWidth","label","onBlur","onKeyDown","disabled","error","variant","helperText","required","name"]),{className:a.inputRoot,style:Z(p)?{padding:"6.5px 0"}:void 0}),style:Q(p),startAdornment:r,classes:{root:a.InputRoot}},b={shrink:Boolean(t.length||r),classes:{root:a.InputLabelRoot,shrink:a.InputLabelShrink,filled:a.InputLabelFilled}};return o.a.createElement($.v,{label:l,value:t,onChange:n,onBlur:s,onKeyDown:u,InputProps:h,InputLabelProps:b,fullWidth:i,disabled:c,error:d,variant:p,helperText:f,required:m,name:g})}J.propTypes={disabled:s.bool,error:s.bool,label:s.string,value:s.string.isRequired,onChange:s.func,onBlur:s.func,onKeyDown:s.func,fullWidth:s.bool,startAdornment:s.node,variant:s.string,classes:s.object,helperText:s.node,required:s.bool,name:s.string},J.defaultProps={label:"",fullWidth:!1,startAdornment:!1};var ee=Object(q.withStyles)(function(e){return{InputRoot:{display:"flex",flexWrap:"wrap",padding:"".concat(.5*e.spacing.unit,"px 0")},InputLabelRoot:{top:e.spacing.unit},InputLabelFilled:{top:2*e.spacing.unit},InputLabelShrink:{top:0},inputRoot:{flex:"1 1 auto",marginTop:.25*e.spacing.unit,minWidth:"200px",width:"auto"}}})(J),te=n(18);function ne(e){var t=e.classes,n="".concat(t.root," suggestion-error-message");return o.a.createElement($.w,{variant:"h6",align:"center",className:n},"An error occurred!")}ne.propTypes={classes:s.object};var re=Object(q.withStyles)(function(e){return{root:{color:e.palette.error.main}}})(ne);function oe(e){var t=e.itemId;return o.a.createElement($.w,{style:{padding:"11px 16px"}},t)}oe.propTypes={itemId:s.string.isRequired};var ae=oe;function ie(e){var t=e.inputValue;return o.a.createElement($.w,{variant:"subtitle1",align:"center",className:"no-suggestions-message"},"No suggestions found for ",o.a.createElement("strong",null,t))}ie.propTypes={inputValue:s.string.isRequired};var le=ie;function se(e){var t=e.inputValue;return o.a.createElement(o.a.Fragment,null,o.a.createElement($.w,{variant:"h6",align:"center",gutterBottom:!0},"Loading suggestions for ",o.a.createElement("strong",null,t),"…"),o.a.createElement($.j,null))}se.propTypes={inputValue:s.string};var ue=se;var ce=function(){return o.a.createElement($.w,{variant:"subtitle1",align:"center",className:"more-characters-message"},"Type more characters to see suggestions")};function de(){return(de=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ve={position:"absolute",zIndex:20,width:"100%",overflowY:"auto"};function Se(e){var t=e.isOpen,n=e.suggestions,r=e.maxHeight,a=ye(e,["isOpen","suggestions","maxHeight"]);if(t&&n){var i=r?function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function _e(e,t){for(var n=0;n=0&&t.splice(r,1));var n,r}},getListenerCount:function(){return t.length}}}function Be(e){return De[e]||(De[e]=Fe()),De[e]}var je=.25,Ue=.5;function ze(e){return(ze="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})(e)}function He(){return(He=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ge(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t-1?e[n]:void 0},t.createChainedFunction=function(){for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:.15;return s(e)>.5?u(e,t):c(e,t)},t.fade=function(e,t){if(!e)return e;e=i(e),t=o(t),("rgb"===e.type||"hsl"===e.type)&&(e.type+="a");return e.values[3]=t,l(e)},t.darken=u,t.lighten=c;r(n(17));function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return en?n:e}function a(e){e=e.substr(1);var t=new RegExp(".{1,".concat(e.length/3,"}"),"g"),n=e.match(t);return n&&1===n[0].length&&(n=n.map(function(e){return e+e})),n?"rgb(".concat(n.map(function(e){return parseInt(e,16)}).join(", "),")"):""}function i(e){if("#"===e.charAt(0))return i(a(e));var t=e.indexOf("("),n=e.substring(0,t),r=e.substring(t+1,e.length-1).split(",");return{type:n,values:r=r.map(function(e){return parseFloat(e)})}}function l(e){var t=e.type,n=e.values;return-1!==t.indexOf("rgb")&&(n=n.map(function(e,t){return t<3?parseInt(e,10):e})),-1!==t.indexOf("hsl")&&(n[1]="".concat(n[1],"%"),n[2]="".concat(n[2],"%")),"".concat(e.type,"(").concat(n.join(", "),")")}function s(e){var t=i(e);if(-1!==t.type.indexOf("rgb")){var n=t.values.map(function(e){return(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)});return Number((.2126*n[0]+.7152*n[1]+.0722*n[2]).toFixed(3))}return t.values[2]/100}function u(e,t){if(!e)return e;if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]*=1-t;return l(e)}function c(e,t){if(!e)return e;if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;return l(e)}},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.cloneElementWithClassName=i,t.cloneChildrenWithClassName=function(e,t){return o.default.Children.map(e,function(e){return o.default.isValidElement(e)&&i(e,t)})},t.isMuiElement=function(e,t){return o.default.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)},t.setRef=function(e,t){"function"==typeof e?e(t):e&&(e.current=t)};var o=r(n(0)),a=r(n(6));function i(e,t){return o.default.cloneElement(e,{className:(0,a.default)(e.props.className,t)})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.props,n=e.states,r=e.muiFormControl;return n.reduce(function(e,n){return e[n]=t[n],r&&void 0===t[n]&&(e[n]=r[n]),e},{})}},function(e,t,n){"use strict";function r(e){e.languages.c=e.languages.extend("clike",{keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/]/,number:/(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),e.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete e.languages.c["class-name"],delete e.languages.c.boolean}e.exports=r,r.displayName="c",r.aliases=[]},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t=55296&&ae<=57343||ae>1114111?(I(k,U),C="�"):C in o?(I(w,U),C=o[C]):(R="",T(C)&&I(w,U),C>65535&&(R+=c((C-=65536)>>>10|55296),C=56320|1023&C),C=R+c(C))):D!==f&&I(E,U)),C?(se(),B=ie(),J=z-1,te+=z-L+1,oe.push(C),(j=ie()).offset++,V&&V.call(K,C,{start:B,end:j},e.slice(L-1,z)),B=j):(p=e.slice(L-1,z),re+=p,te+=p.length,J=z-1)}var ae;return oe.join("");function ie(){return{line:ne,column:te,offset:J+(X.offset||0)}}function le(t){return e.charAt(t)}function se(){re&&(oe.push(re),G&&G.call(q,re,{start:B,end:ie()}),re="")}}(e,i)};var u={}.hasOwnProperty,c=String.fromCharCode,d=Function.prototype,p={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},f="named",m="hexadecimal",g="decimal",h={};h[m]=16,h[g]=10;var b={};b[f]=l,b[g]=a,b[m]=i;var y=1,v=2,S=3,E=4,x=5,w=6,k=7,_={};function T(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||65535==(65535&e)||65534==(65535&e)}_[y]="Named character references must be terminated by a semicolon",_[v]="Numeric character references must be terminated by a semicolon",_[S]="Named character references cannot be empty",_[E]="Numeric character references cannot be empty",_[x]="Named character references must be known",_[w]="Numeric character references cannot be disallowed",_[k]="Numeric character references cannot be outside the permissible Unicode range"},function(e,t,n){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57}},function(e,t,n){"use strict";e.exports=l;var r=n(307),o=r.CONTINUE,a=r.SKIP,i=r.EXIT;function l(e,t,n,o){"function"==typeof t&&"function"!=typeof n&&(o=n,n=t,t=null),r(e,t,function(e,t){var r=t[t.length-1],o=r?r.children.indexOf(e):null;return n(e,o,r)},o)}l.CONTINUE=o,l.SKIP=a,l.EXIT=i},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!Array.isArray(e))return e;var n="";if(Array.isArray(e[0]))for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:"unnamed",t=arguments[1],n=arguments[2],i=n.jss,l=(0,a.default)(t),s=i.plugins.onCreateRule(e,l,n);if(s)return s;"@"===e[0]&&(0,r.default)(!1,"[JSS] Unknown at-rule %s",e);return new o.default(e,l,n)};var r=i(n(28)),o=i(n(30)),a=i(n(363));function i(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";n.r(t),n.d(t,"isBrowser",function(){return o});var r="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},o="object"===("undefined"==typeof window?"undefined":r(window))&&"object"===("undefined"==typeof document?"undefined":r(document))&&9===document.nodeType;t.default=o},function(e,t,n){e.exports=function(){"use strict";var e=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var n=Object.prototype.toString.call(e);return"[object RegExp]"===n||"[object Date]"===n||function(e){return e.$$typeof===t}(e)}(e)},t="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,t){return!1!==t.clone&&t.isMergeableObject(e)?o((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function r(e,t,r){return e.concat(t).map(function(e){return n(e,r)})}function o(t,a,i){(i=i||{}).arrayMerge=i.arrayMerge||r,i.isMergeableObject=i.isMergeableObject||e;var l=Array.isArray(a),s=Array.isArray(t),u=l===s;return u?l?i.arrayMerge(t,a,i):function(e,t,r){var a={};return r.isMergeableObject(e)&&Object.keys(e).forEach(function(t){a[t]=n(e[t],r)}),Object.keys(t).forEach(function(i){r.isMergeableObject(t[i])&&e[i]?a[i]=o(e[i],t[i],r):a[i]=n(t[i],r)}),a}(t,a,i):n(a,i)}return o.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(e,n){return o(e,n,t)},{})},o}()},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.default}});var o=r(n(414))},function(e,t,n){"use strict";t.__esModule=!0,t.default=t.EXITING=t.ENTERED=t.ENTERING=t.EXITED=t.UNMOUNTED=void 0;var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}(n(1)),o=l(n(0)),a=l(n(22)),i=n(133);n(417);function l(e){return e&&e.__esModule?e:{default:e}}var s="unmounted";t.UNMOUNTED=s;var u="exited";t.EXITED=u;var c="entering";t.ENTERING=c;var d="entered";t.ENTERED=d;t.EXITING="exiting";var p=function(e){var t,n;function r(t,n){var r;r=e.call(this,t,n)||this;var o,a=n.transitionGroup,i=a&&!a.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?i?(o=u,r.appearStatus=c):o=d:o=t.unmountOnExit||t.mountOnEnter?s:u,r.state={status:o},r.nextCallback=null,r}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var i=r.prototype;return i.getChildContext=function(){return{transitionGroup:null}},r.getDerivedStateFromProps=function(e,t){return e.in&&t.status===s?{status:u}:null},i.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},i.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==c&&n!==d&&(t=c):n!==c&&n!==d||(t="exiting")}this.updateStatus(!1,t)},i.componentWillUnmount=function(){this.cancelNextCallback()},i.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=r.appear),{exit:e,enter:t,appear:n}},i.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t){this.cancelNextCallback();var n=a.default.findDOMNode(this);t===c?this.performEnter(n,e):this.performExit(n)}else this.props.unmountOnExit&&this.state.status===u&&this.setState({status:s})},i.performEnter=function(e,t){var n=this,r=this.props.enter,o=this.context.transitionGroup?this.context.transitionGroup.isMounting:t,a=this.getTimeouts();t||r?(this.props.onEnter(e,o),this.safeSetState({status:c},function(){n.props.onEntering(e,o),n.onTransitionEnd(e,a.enter,function(){n.safeSetState({status:d},function(){n.props.onEntered(e,o)})})})):this.safeSetState({status:d},function(){n.props.onEntered(e)})},i.performExit=function(e){var t=this,n=this.props.exit,r=this.getTimeouts();n?(this.props.onExit(e),this.safeSetState({status:"exiting"},function(){t.props.onExiting(e),t.onTransitionEnd(e,r.exit,function(){t.safeSetState({status:u},function(){t.props.onExited(e)})})})):this.safeSetState({status:u},function(){t.props.onExited(e)})},i.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},i.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},i.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},i.onTransitionEnd=function(e,t,n){this.setNextCallback(n),e?(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t)):setTimeout(this.nextCallback,0)},i.render=function(){var e=this.state.status;if(e===s)return null;var t=this.props,n=t.children,r=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(t,["children"]);if(delete r.in,delete r.mountOnEnter,delete r.unmountOnExit,delete r.appear,delete r.enter,delete r.exit,delete r.timeout,delete r.addEndListener,delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,"function"==typeof n)return n(e,r);var a=o.default.Children.only(n);return o.default.cloneElement(a,r)},r}(o.default.Component);function f(){}p.contextTypes={transitionGroup:r.object},p.childContextTypes={transitionGroup:function(){}},p.propTypes={},p.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:f,onEntering:f,onEntered:f,onExit:f,onExiting:f,onExited:f},p.UNMOUNTED=0,p.EXITED=1,p.ENTERING=2,p.ENTERED=3,p.EXITING=4;var m=(0,i.polyfill)(p);t.default=m},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.default}});var o=r(n(421))},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.default}});var o=r(n(430))},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"ModalManager",{enumerable:!0,get:function(){return a.default}});var o=r(n(444)),a=r(n(144))},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(0)).default.createContext();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(645);Object.defineProperty(t,"coy",{enumerable:!0,get:function(){return T(r).default}});var o=n(646);Object.defineProperty(t,"dark",{enumerable:!0,get:function(){return T(o).default}});var a=n(647);Object.defineProperty(t,"funky",{enumerable:!0,get:function(){return T(a).default}});var i=n(648);Object.defineProperty(t,"okaidia",{enumerable:!0,get:function(){return T(i).default}});var l=n(649);Object.defineProperty(t,"solarizedlight",{enumerable:!0,get:function(){return T(l).default}});var s=n(650);Object.defineProperty(t,"tomorrow",{enumerable:!0,get:function(){return T(s).default}});var u=n(651);Object.defineProperty(t,"twilight",{enumerable:!0,get:function(){return T(u).default}});var c=n(652);Object.defineProperty(t,"prism",{enumerable:!0,get:function(){return T(c).default}});var d=n(653);Object.defineProperty(t,"atomDark",{enumerable:!0,get:function(){return T(d).default}});var p=n(654);Object.defineProperty(t,"base16AteliersulphurpoolLight",{enumerable:!0,get:function(){return T(p).default}});var f=n(655);Object.defineProperty(t,"cb",{enumerable:!0,get:function(){return T(f).default}});var m=n(656);Object.defineProperty(t,"darcula",{enumerable:!0,get:function(){return T(m).default}});var g=n(657);Object.defineProperty(t,"duotoneDark",{enumerable:!0,get:function(){return T(g).default}});var h=n(658);Object.defineProperty(t,"duotoneEarth",{enumerable:!0,get:function(){return T(h).default}});var b=n(659);Object.defineProperty(t,"duotoneForest",{enumerable:!0,get:function(){return T(b).default}});var y=n(660);Object.defineProperty(t,"duotoneLight",{enumerable:!0,get:function(){return T(y).default}});var v=n(661);Object.defineProperty(t,"duotoneSea",{enumerable:!0,get:function(){return T(v).default}});var S=n(662);Object.defineProperty(t,"duotoneSpace",{enumerable:!0,get:function(){return T(S).default}});var E=n(663);Object.defineProperty(t,"ghcolors",{enumerable:!0,get:function(){return T(E).default}});var x=n(664);Object.defineProperty(t,"hopscotch",{enumerable:!0,get:function(){return T(x).default}});var w=n(665);Object.defineProperty(t,"pojoaque",{enumerable:!0,get:function(){return T(w).default}});var k=n(666);Object.defineProperty(t,"vs",{enumerable:!0,get:function(){return T(k).default}});var _=n(667);function T(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"xonokai",{enumerable:!0,get:function(){return T(_).default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.curry=l,t.currySoft=function(e,t){return l(e,t,a.allowOverwrite)},t.curryHard=function(e,t){return l(e,t,a.forceCurry)},t.currySmart=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return l(e,t,function(e,t){return(0,a.mergeComplexProps)(e,t,n)})};var r=i(n(0)),o=i(n(356)),a=n(357);function i(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a.allowOverwrite,i=e.props,l=e.type,s=function(e){var t=n(i,e);return r.default.createElement(l,t)};return s.displayName=t||"Curried(".concat((0,o.default)(l),")"),s.propTypes=l.propTypes,s}},function(e,t,n){var r=n(9);e.exports=function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return function(n){var r,g=t.withTheme,h=void 0!==g&&g,y=t.flip,E=void 0===y?null:y,w=t.name,R=(0,d.default)(t,["withTheme","flip","name"]),P=(0,k.default)(e),M=P.themingEnabled||"string"==typeof w||h;C+=1,P.options.index=C;var L=function(e){function t(e,n){var r;(0,i.default)(this,t),(r=(0,s.default)(this,(0,u.default)(t).call(this,e,n))).jss=n[b.default.jss]||T,r.sheetsManager=O,r.unsubscribeId=null;var o=n.muiThemeProviderOptions;return o&&(o.sheetsManager&&(r.sheetsManager=o.sheetsManager),r.sheetsCache=o.sheetsCache,r.disableStylesGeneration=o.disableStylesGeneration),r.stylesCreatorSaved=P,r.sheetOptions=(0,a.default)({generateClassName:A},n[b.default.sheetOptions]),r.theme=M?x.default.initial(n)||N:I,r.attach(r.theme),r.cacheClasses={value:null,lastProp:null,lastJSS:{}},r}return(0,c.default)(t,e),(0,l.default)(t,[{key:"componentDidMount",value:function(){var e=this;M&&(this.unsubscribeId=x.default.subscribe(this.context,function(t){var n=e.theme;e.theme=t,e.attach(e.theme),e.setState({},function(){e.detach(n)})}))}},{key:"componentDidUpdate",value:function(){this.stylesCreatorSaved}},{key:"componentWillUnmount",value:function(){this.detach(this.theme),null!==this.unsubscribeId&&x.default.unsubscribe(this.context,this.unsubscribeId)}},{key:"getClasses",value:function(){if(this.disableStylesGeneration)return this.props.classes||{};var e=!1,t=S.default.get(this.sheetsManager,this.stylesCreatorSaved,this.theme);return t.sheet.classes!==this.cacheClasses.lastJSS&&(this.cacheClasses.lastJSS=t.sheet.classes,e=!0),this.props.classes!==this.cacheClasses.lastProp&&(this.cacheClasses.lastProp=this.props.classes,e=!0),e&&(this.cacheClasses.value=(0,v.default)({baseClasses:this.cacheClasses.lastJSS,newClasses:this.props.classes,Component:n})),this.cacheClasses.value}},{key:"attach",value:function(e){if(!this.disableStylesGeneration){var t=this.stylesCreatorSaved,n=S.default.get(this.sheetsManager,t,e);if(n||(n={refs:0,sheet:null},S.default.set(this.sheetsManager,t,e,n)),0===n.refs){var r;this.sheetsCache&&(r=S.default.get(this.sheetsCache,t,e)),r||((r=this.createSheet(e)).attach(),this.sheetsCache&&S.default.set(this.sheetsCache,t,e,r)),n.sheet=r;var o=this.context[b.default.sheetsRegistry];o&&o.add(r)}n.refs+=1}}},{key:"createSheet",value:function(e){var t=this.stylesCreatorSaved.create(e,w),r=w;return this.jss.createStyleSheet(t,(0,a.default)({meta:r,classNamePrefix:r,flip:"boolean"==typeof E?E:"rtl"===e.direction,link:!1},this.sheetOptions,this.stylesCreatorSaved.options,{name:w||n.displayName},R))}},{key:"detach",value:function(e){if(!this.disableStylesGeneration){var t=S.default.get(this.sheetsManager,this.stylesCreatorSaved,e);if(t.refs-=1,0===t.refs){S.default.delete(this.sheetsManager,this.stylesCreatorSaved,e),this.jss.removeStyleSheet(t.sheet);var n=this.context[b.default.sheetsRegistry];n&&n.remove(t.sheet)}}}},{key:"render",value:function(){var e=this.props,t=(e.classes,e.innerRef),r=(0,d.default)(e,["classes","innerRef"]),o=(0,_.default)({theme:this.theme,name:w,props:r});return h&&!o.theme&&(o.theme=this.theme),p.default.createElement(n,(0,a.default)({},o,{classes:this.getClasses(),ref:t}))}}]),t}(p.default.Component);return L.contextTypes=(0,a.default)((r={muiThemeProviderOptions:f.default.object},(0,o.default)(r,b.default.jss,f.default.object),(0,o.default)(r,b.default.sheetOptions,f.default.object),(0,o.default)(r,b.default.sheetsRegistry,f.default.object),r),M?x.default.contextTypes:{}),(0,m.default)(L,n),L}});t.default=function(e,t){return g.ponyfillGlobal.__MUI_STYLES__.withStyles(e,(0,a.default)({defaultTheme:N},t))}},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){"use strict";var r=n(172),o=n.n(r),a=n(173),i=n.n(a),l=n(174),s=n.n(l),u=n(175),c=n.n(u),d=n(176),p=n.n(d),f=n(177),m=n.n(f),g=n(178),h=n.n(g),b=n(179),y=n.n(b),v=n(180),S=n.n(v),E=n(181),x=n.n(E),w=n(182),k=n.n(w);n.d(t,"a",function(){return _}),n.d(t,"b",function(){return T});var _=[{name:"apple",stock:0,image:o.a,detail:"Keeps the doctor away"},{name:"pear",stock:14,image:i.a,detail:"The tastiest fruit in the world"},{name:"banana",stock:282,image:s.a,detail:"Full of lovely potassium!"},{name:"melon",stock:81,image:p.a,detail:"Available in many different flavours"},{name:"raspberry",stock:422,image:c.a,detail:"Technically not a berry, but whatevs"},{name:"grapes",stock:109,image:m.a,detail:"You could theoretically make wine"},{name:"pomegranate",stock:75,image:y.a,detail:"No-one knows what these are"},{name:"tomato",stock:5,image:x.a,detail:"This is definitely a fruit, get off my case"},{name:"lemon",stock:75,image:k.a,detail:"When life give you lemons, something something grenade"},{name:"plum",stock:2,image:h.a,detail:"Not as good as a nectarine, deal with it"},{name:"watermelon",stock:1045,image:S.a,detail:"Soooo refreshing on a hot day"}];function T(e){return _.filter(function(t){return t.name.toLowerCase().includes(e.toLowerCase())})}},function(e,t,n){"use strict";var r=n(0),o=n.n(r);function a(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}function i(){return(i=Object.assign||function(e){for(var t=1;tt||a>e&&i=t&&l>=n?a-e-r:i>t&&ln?i-t+o:0}var f=function(e,t){var n=t.scrollMode,r=t.block,o=t.inline,a=t.boundary,i=t.skipOverflowHiddenElements,l="function"==typeof a?a:function(e){return e!==a};if(!u(e))throw new TypeError("Invalid target");for(var s=document.scrollingElement||document.documentElement,c=[],f=e;u(f)&&l(f);){if((f=f.parentNode)===s){c.push(f);break}f===document.body&&d(f)&&!d(document.documentElement)||d(f,i)&&c.push(f)}for(var m=window.visualViewport?visualViewport.width:innerWidth,g=window.visualViewport?visualViewport.height:innerHeight,h=window.scrollX||pageXOffset,b=window.scrollY||pageYOffset,y=e.getBoundingClientRect(),v=y.height,S=y.width,E=y.top,x=y.right,w=y.bottom,k=y.left,_="start"===r||"nearest"===r?E:"end"===r?w:E+v/2,T="center"===o?k+S/2:"end"===o?x:k,A=[],C=0;C=0&&k>=0&&w<=g&&x<=m&&E>=P&&w<=L&&k>=D&&x<=M)return A;var F=getComputedStyle(O),B=parseInt(F.borderLeftWidth,10),j=parseInt(F.borderTopWidth,10),U=parseInt(F.borderRightWidth,10),z=parseInt(F.borderBottomWidth,10),H=0,W=0,G="offsetWidth"in O?O.offsetWidth-O.clientWidth-B-U:0,V="offsetHeight"in O?O.offsetHeight-O.clientHeight-j-z:0;if(s===O)H="start"===r?_:"end"===r?_-g:"nearest"===r?p(b,b+g,g,j,z,b+_,b+_+v,v):_-g/2,W="start"===o?T:"center"===o?T-m/2:"end"===o?T-m:p(h,h+m,m,B,U,h+T,h+T+S,S),H=Math.max(0,H+b),W=Math.max(0,W+h);else{H="start"===r?_-P-j:"end"===r?_-L+z+V:"nearest"===r?p(P,L,N,j,z+V,_,_+v,v):_-(P+N/2)+V/2,W="start"===o?T-D-B:"center"===o?T-(D+R/2)+G/2:"end"===o?T-M+U+G:p(D,M,R,B,U+G,T,T+S,S);var $=O.scrollLeft,q=O.scrollTop;_+=q-(H=Math.max(0,Math.min(q+H,O.scrollHeight-N+V))),T+=$-(W=Math.max(0,Math.min($+W,O.scrollWidth-R+G)))}A.push({el:O,top:H,left:W})}return A},m="undefined"==typeof document?null:document.getElementById("a11y-status-message"),g=[];function h(e){var t=g[g.length-1]===e;g=t?[].concat(g,[e]):[e];for(var n=function(){if(m)return m;return(m=document.createElement("div")).setAttribute("id","a11y-status-message"),m.setAttribute("role","status"),m.setAttribute("aria-live","polite"),m.setAttribute("aria-relevant","additions text"),Object.assign(m.style,{border:"0",clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0",position:"absolute",width:"1px"}),document.body.appendChild(m),m}();n.lastChild;)n.removeChild(n.firstChild);g.filter(Boolean).forEach(function(e,t){n.appendChild(function(e,t){var n=t===g.length-1?"block":"none",r=document.createElement("div");return r.style.display=n,r.textContent=e,r}(e,t))})}var b=0,y=2,v=3,S=4,E=5,x=6,w=7,k=8,_=9,T=10,A=11,C=12,O=13,I=14,N=Object.freeze({unknown:b,mouseUp:1,itemMouseEnter:y,keyDownArrowUp:v,keyDownArrowDown:S,keyDownEscape:E,keyDownEnter:x,keyDownHome:w,keyDownEnd:k,clickItem:_,blurInput:T,changeInput:A,keyDownSpaceButton:C,clickButton:O,blurButton:I,controlledPropUpdatedSelectedItem:15,touchEnd:16}),R=0;function P(e){return"function"==typeof e?e:M}function M(){}function L(e,t){return e===t||e.contains&&e.contains(t)}function D(){for(var e=arguments.length,t=new Array(e),n=0;n1?n-1:0),o=1;o=37&&n<=40&&0!==t.indexOf("Arrow")?"Arrow"+t:t}function W(e,t,n){var r=n-1;("number"!=typeof t||t<0||t>=n)&&(t=e>0?-1:r+1);var o=t+e;return o<0?o=r:o>r&&(o=0),o}var G=function(e){var t,n;function r(t){var n=e.call(this,t)||this;n.id=n.props.id||"downshift-"+String(R++),n.menuId=n.props.menuId||n.id+"-menu",n.labelId=n.props.labelId||n.id+"-label",n.inputId=n.props.inputId||n.id+"-input",n.getItemId=n.props.getItemId||function(e){return n.id+"-item-"+e},n.input=null,n.items=[],n.itemCount=null,n.previousResultCount=0,n.timeoutIds=[],n.internalSetTimeout=function(e,t){var r=setTimeout(function(){n.timeoutIds=n.timeoutIds.filter(function(e){return e!==r}),e()},t);n.timeoutIds.push(r)},n.setItemCount=function(e){n.itemCount=e},n.unsetItemCount=function(){n.itemCount=null},n.setHighlightedIndex=function(e,t){void 0===e&&(e=n.props.defaultHighlightedIndex),void 0===t&&(t={}),t=z(t),n.internalSetState(i({highlightedIndex:e},t))},n.clearSelection=function(e){n.internalSetState({selectedItem:null,inputValue:"",highlightedIndex:n.props.defaultHighlightedIndex,isOpen:n.props.defaultIsOpen},e)},n.selectItem=function(e,t,r){t=z(t),n.internalSetState(i({isOpen:n.props.defaultIsOpen,highlightedIndex:n.props.defaultHighlightedIndex,selectedItem:e,inputValue:n.props.itemToString(e)},t),r)},n.selectItemAtIndex=function(e,t,r){var o=n.items[e];null!=o&&n.selectItem(o,t,r)},n.selectHighlightedItem=function(e,t){return n.selectItemAtIndex(n.getState().highlightedIndex,e,t)},n.internalSetState=function(e,t){var r,o,a={},l="function"==typeof e;return!l&&e.hasOwnProperty("inputValue")&&n.props.onInputValueChange(e.inputValue,i({},n.getStateAndHelpers(),e)),n.setState(function(t){t=n.getState(t);var s=l?e(t):e;s=n.props.stateReducer(t,s),r=s.hasOwnProperty("selectedItem");var u={},c={};return r&&s.selectedItem!==t.selectedItem&&(o=s.selectedItem),s.type=s.type||b,Object.keys(s).forEach(function(e){t[e]!==s[e]&&(a[e]=s[e]),"type"!==e&&(c[e]=s[e],n.isControlledProp(e)||(u[e]=s[e]))}),l&&s.hasOwnProperty("inputValue")&&n.props.onInputValueChange(s.inputValue,i({},n.getStateAndHelpers(),s)),u},function(){P(t)(),Object.keys(a).length>1&&n.props.onStateChange(a,n.getStateAndHelpers()),r&&n.props.onSelect(e.selectedItem,n.getStateAndHelpers()),void 0!==o&&n.props.onChange(o,n.getStateAndHelpers()),n.props.onUserAction(a,n.getStateAndHelpers())})},n.rootRef=function(e){return n._rootNode=e},n.getRootProps=function(e,t){var r,o=void 0===e?{}:e,l=o.refKey,s=void 0===l?"ref":l,u=a(o,["refKey"]),c=(void 0===t?{}:t).suppressRefError,d=void 0!==c&&c;n.getRootProps.called=!0,n.getRootProps.refKey=s,n.getRootProps.suppressRefError=d;var p=n.getState().isOpen;return i(((r={})[s]=n.rootRef,r.role="combobox",r["aria-expanded"]=p,r["aria-haspopup"]="listbox",r["aria-owns"]=p?n.menuId:null,r["aria-labelledby"]=n.labelId,r),u)},n.keyDownHandlers={ArrowDown:function(e){var t=this;if(e.preventDefault(),this.getState().isOpen){var n=e.shiftKey?5:1;this.moveHighlightedIndex(n,{type:S})}else this.internalSetState({isOpen:!0,type:S},function(){var e=t.getItemCount();e>0&&t.setHighlightedIndex(W(1,t.getState().highlightedIndex,e),{type:S})})},ArrowUp:function(e){var t=this;if(e.preventDefault(),this.getState().isOpen){var n=e.shiftKey?-5:-1;this.moveHighlightedIndex(n,{type:v})}else this.internalSetState({isOpen:!0,type:v},function(){var e=t.getItemCount();e>0&&t.setHighlightedIndex(W(-1,t.getState().highlightedIndex,e),{type:S})})},Enter:function(e){var t=this.getState(),n=t.isOpen,r=t.highlightedIndex;if(n&&null!=r){e.preventDefault();var o=this.items[r],a=this.getItemNodeFromIndex(r);if(null==o||a&&a.hasAttribute("disabled"))return;this.selectHighlightedItem({type:x})}},Escape:function(e){e.preventDefault(),this.reset({type:E})}},n.buttonKeyDownHandlers=i({},n.keyDownHandlers,{" ":function(e){e.preventDefault(),this.toggleMenu({type:C})}}),n.inputKeyDownHandlers=i({},n.keyDownHandlers,{Home:function(e){this.highlightFirstOrLastIndex(e,!0,{type:w})},End:function(e){this.highlightFirstOrLastIndex(e,!1,{type:k})}}),n.getToggleButtonProps=function(e){var t=void 0===e?{}:e,r=t.onClick,o=(t.onPress,t.onKeyDown),l=t.onKeyUp,s=t.onBlur,u=a(t,["onClick","onPress","onKeyDown","onKeyUp","onBlur"]),c=n.getState().isOpen,d={onClick:D(r,n.buttonHandleClick),onKeyDown:D(o,n.buttonHandleKeyDown),onKeyUp:D(l,n.buttonHandleKeyUp),onBlur:D(s,n.buttonHandleBlur)};return i({type:"button",role:"button","aria-label":c?"close menu":"open menu","aria-haspopup":!0,"data-toggle":!0},u.disabled?{}:d,u)},n.buttonHandleKeyUp=function(e){e.preventDefault()},n.buttonHandleKeyDown=function(e){var t=H(e);n.buttonKeyDownHandlers[t]&&n.buttonKeyDownHandlers[t].call(l(n),e)},n.buttonHandleClick=function(e){e.preventDefault(),n.props.environment.document.activeElement===n.props.environment.document.body&&e.target.focus(),n.internalSetTimeout(function(){return n.toggleMenu({type:O})})},n.buttonHandleBlur=function(e){var t=e.target;n.internalSetTimeout(function(){n.isMouseDown||null!=n.props.environment.document.activeElement&&n.props.environment.document.activeElement.id===n.inputId||n.props.environment.document.activeElement===t||n.reset({type:I})})},n.getLabelProps=function(e){return i({htmlFor:n.inputId,id:n.labelId},e)},n.getInputProps=function(e){var t=void 0===e?{}:e,r=t.onKeyDown,o=t.onBlur,l=t.onChange,s=t.onInput,u=(t.onChangeText,a(t,["onKeyDown","onBlur","onChange","onInput","onChangeText"])),c={};var d,p=n.getState(),f=p.inputValue,m=p.isOpen,g=p.highlightedIndex;u.disabled||((d={}).onChange=D(l,s,n.inputHandleChange),d.onKeyDown=D(r,n.inputHandleKeyDown),d.onBlur=D(o,n.inputHandleBlur),c=d);return i({"aria-autocomplete":"list","aria-activedescendant":m&&"number"==typeof g&&g>=0?n.getItemId(g):null,"aria-controls":m?n.menuId:null,"aria-labelledby":n.labelId,autoComplete:"off",value:f,id:n.inputId},c,u)},n.inputHandleKeyDown=function(e){var t=H(e);t&&n.inputKeyDownHandlers[t]&&n.inputKeyDownHandlers[t].call(l(n),e)},n.inputHandleChange=function(e){n.internalSetState({type:A,isOpen:!0,inputValue:e.target.value})},n.inputHandleTextChange=function(e){n.internalSetState({type:A,isOpen:!0,inputValue:e})},n.inputHandleBlur=function(){n.internalSetTimeout(function(){var e=n.props.environment.document&&!!n.props.environment.document.activeElement&&!!n.props.environment.document.activeElement.dataset&&n.props.environment.document.activeElement.dataset.toggle&&n._rootNode&&n._rootNode.contains(n.props.environment.document.activeElement);n.isMouseDown||e||n.reset({type:T})})},n.menuRef=function(e){n._menuNode=e},n.getMenuProps=function(e,t){var r,o=void 0===e?{}:e,l=o.refKey,s=void 0===l?"ref":l,u=o.ref,c=a(o,["refKey","ref"]),d=(void 0===t?{}:t).suppressRefError,p=void 0!==d&&d;return n.getMenuProps.called=!0,n.getMenuProps.refKey=s,n.getMenuProps.suppressRefError=p,i(((r={})[s]=function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&"number"==typeof a&&n.setHighlightedIndex(a,e),P(t)()})},n.openMenu=function(e){n.internalSetState({isOpen:!0},e)},n.closeMenu=function(e){n.internalSetState({isOpen:!1},e)},n.updateStatus=function(e,t){var n;function r(){n&&clearTimeout(n)}function o(){for(var o=arguments.length,a=new Array(o),i=0;i0){var r=W(e,this.getState().highlightedIndex,n);this.setHighlightedIndex(r,t)}},s.highlightFirstOrLastIndex=function(e,t,n){var r=this.getItemCount()-1;r<0||!this.getState().isOpen||(e.preventDefault(),this.setHighlightedIndex(t?0:r,n))},s.getStateAndHelpers=function(){var e=this.getState(),t=e.highlightedIndex,n=e.inputValue,r=e.selectedItem,o=e.isOpen,a=this.props.itemToString,i=this.id,l=this.getRootProps,s=this.getToggleButtonProps,u=this.getLabelProps,c=this.getMenuProps,d=this.getInputProps,p=this.getItemProps,f=this.openMenu,m=this.closeMenu,g=this.toggleMenu,h=this.selectItem,b=this.selectItemAtIndex,y=this.selectHighlightedItem,v=this.setHighlightedIndex,S=this.clearSelection,E=this.clearItems;return{getRootProps:l,getToggleButtonProps:s,getLabelProps:u,getMenuProps:c,getInputProps:d,getItemProps:p,reset:this.reset,openMenu:f,closeMenu:m,toggleMenu:g,selectItem:h,selectItemAtIndex:b,selectHighlightedItem:y,setHighlightedIndex:v,clearSelection:S,clearItems:E,setItemCount:this.setItemCount,unsetItemCount:this.unsetItemCount,setState:this.internalSetState,itemToString:a,id:i,highlightedIndex:t,inputValue:n,isOpen:o,selectedItem:r}},s.componentDidMount=function(){var e=this;var t=function(t,n){void 0===n&&(n=!0);var r=e.props.environment.document;return[e._rootNode,e._menuNode].some(function(e){return e&&(L(e,t)||n&&L(e,r.activeElement))})},n=function(){e.isMouseDown=!0},r=function(n){e.isMouseDown=!1,!t(n.target)&&e.getState().isOpen&&e.reset({type:1},function(){return e.props.onOuterClick(e.getStateAndHelpers())})},o=function(){e.isTouchMove=!1},a=function(){e.isTouchMove=!0},i=function(n){var r=t(n.target,!1);e.isTouchMove||r||!e.getState().isOpen||e.reset({type:16},function(){return e.props.onOuterClick(e.getStateAndHelpers())})};this.props.environment.addEventListener("mousedown",n),this.props.environment.addEventListener("mouseup",r),this.props.environment.addEventListener("touchstart",o),this.props.environment.addEventListener("touchmove",a),this.props.environment.addEventListener("touchend",i),this.cleanup=function(){e.internalClearTimeouts(),e.updateStatus.cancel(),e.props.environment.removeEventListener("mousedown",n),e.props.environment.removeEventListener("mouseup",r),e.props.environment.removeEventListener("touchstart",o),e.props.environment.removeEventListener("touchmove",a),e.props.environment.removeEventListener("touchend",i)}},s.shouldScroll=function(e,t){var n=(void 0===this.props.highlightedIndex?this.getState():this.props).highlightedIndex,r=(void 0===t.highlightedIndex?e:t).highlightedIndex;return n&&this.getState().isOpen&&!e.isOpen||n!==r},s.componentDidUpdate=function(e,t){this.isControlledProp("selectedItem")&&this.props.selectedItemChanged(e.selectedItem,this.props.selectedItem)&&this.internalSetState({type:15,inputValue:this.props.itemToString(this.props.selectedItem)}),!this.avoidScrolling&&this.shouldScroll(t,e)&&this.scrollHighlightedItemIntoView(),this.updateStatus()},s.componentWillUnmount=function(){this.cleanup()},s.render=function(){var e=F(this.props.children,M);this.clearItems(),this.getRootProps.called=!1,this.getRootProps.refKey=void 0,this.getRootProps.suppressRefError=void 0,this.getMenuProps.called=!1,this.getMenuProps.refKey=void 0,this.getMenuProps.suppressRefError=void 0,this.getLabelProps.called=!1,this.getInputProps.called=!1;var t=F(e(this.getStateAndHelpers()));return t?this.getRootProps.called||this.props.suppressRefError?t:B(t)?o.a.cloneElement(t,this.getRootProps(j(t))):void 0:null},r}(r.Component);G.defaultProps={defaultHighlightedIndex:null,defaultIsOpen:!1,getA11yStatusMessage:function(e){var t=e.isOpen,n=e.selectedItem,r=e.resultCount,o=e.previousResultCount,a=e.itemToString;return t?r?r!==o?r+" result"+(1===r?" is":"s are")+" available, use up and down arrow keys to navigate. Press Enter key to select.":"":"No results are available.":n?a(n):""},itemToString:function(e){return null==e?"":String(e)},onStateChange:M,onInputValueChange:M,onUserAction:M,onChange:M,onSelect:M,onOuterClick:M,selectedItemChanged:function(e,t){return e!==t},environment:"undefined"==typeof window?{}:window,stateReducer:function(e,t){return t},suppressRefError:!1,scrollIntoView:function(e,t){null!==e&&f(e,{boundary:t,block:"nearest",scrollMode:"if-needed"}).forEach(function(e){var t=e.el,n=e.top,r=e.left;t.scrollTop=n,t.scrollLeft=r})}},G.stateChangeTypes=N;var V=G,$=n(3),q=n(19);function K(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Z=function(e){return["filled","outlined"].includes(e)};function Q(e){return"outlined"===e?{padding:"18.5px 14px"}:"filled"===e?{padding:"27px 12px 10px"}:void 0}function J(e){var t=e.value,n=e.onChange,r=e.startAdornment,a=e.classes,i=e.fullWidth,l=e.label,s=e.onBlur,u=e.onKeyDown,c=e.disabled,d=e.error,p=e.variant,f=e.helperText,m=e.required,g=e.name,h={inputProps:K({},X(e,["value","onChange","startAdornment","classes","fullWidth","label","onBlur","onKeyDown","disabled","error","variant","helperText","required","name"]),{className:a.inputRoot,style:Z(p)?{padding:"6.5px 0"}:void 0}),style:Q(p),startAdornment:r,classes:{root:a.InputRoot}},b={shrink:Boolean(t.length||r),classes:{root:a.InputLabelRoot,shrink:a.InputLabelShrink,filled:a.InputLabelFilled}};return o.a.createElement($.v,{label:l,value:t,onChange:n,onBlur:s,onKeyDown:u,InputProps:h,InputLabelProps:b,fullWidth:i,disabled:c,error:d,variant:p,helperText:f,required:m,name:g})}J.propTypes={disabled:s.bool,error:s.bool,label:s.string,value:s.string.isRequired,onChange:s.func,onBlur:s.func,onKeyDown:s.func,fullWidth:s.bool,startAdornment:s.node,variant:s.string,classes:s.object,helperText:s.node,required:s.bool,name:s.string},J.defaultProps={label:"",fullWidth:!1,startAdornment:!1};var ee=Object(q.withStyles)(function(e){return{InputRoot:{display:"flex",flexWrap:"wrap",padding:"".concat(.5*e.spacing.unit,"px 0"),boxSizing:"border-box"},InputLabelRoot:{top:e.spacing.unit},InputLabelFilled:{top:2*e.spacing.unit},InputLabelShrink:{top:0},inputRoot:{flex:"1 1 auto",marginTop:.25*e.spacing.unit,minWidth:"200px",width:"auto"}}})(J),te=n(18);function ne(e){var t=e.classes,n="".concat(t.root," suggestion-error-message");return o.a.createElement($.w,{variant:"h6",align:"center",className:n},"An error occurred!")}ne.propTypes={classes:s.object};var re=Object(q.withStyles)(function(e){return{root:{color:e.palette.error.main}}})(ne);function oe(e){var t=e.itemId;return o.a.createElement($.w,{style:{padding:"11px 16px"}},t)}oe.propTypes={itemId:s.string.isRequired};var ae=oe;function ie(e){var t=e.inputValue;return o.a.createElement($.w,{variant:"subtitle1",align:"center",className:"no-suggestions-message"},"No suggestions found for ",o.a.createElement("strong",null,t))}ie.propTypes={inputValue:s.string.isRequired};var le=ie;function se(e){var t=e.inputValue;return o.a.createElement(o.a.Fragment,null,o.a.createElement($.w,{variant:"h6",align:"center",gutterBottom:!0},"Loading suggestions for ",o.a.createElement("strong",null,t),"…"),o.a.createElement($.j,null))}se.propTypes={inputValue:s.string};var ue=se;var ce=function(){return o.a.createElement($.w,{variant:"subtitle1",align:"center",className:"more-characters-message"},"Type more characters to see suggestions")};function de(){return(de=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ve={position:"absolute",zIndex:20,width:"100%",overflowY:"auto"};function Se(e){var t=e.isOpen,n=e.suggestions,r=e.maxHeight,a=ye(e,["isOpen","suggestions","maxHeight"]);if(t&&n){var i=r?function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function _e(e,t){for(var n=0;n=0&&t.splice(r,1));var n,r}},getListenerCount:function(){return t.length}}}function Be(e){return De[e]||(De[e]=Fe()),De[e]}var je=.25,Ue=.5;function ze(e){return(ze="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})(e)}function He(){return(He=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ge(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t-1?e[n]:void 0},t.createChainedFunction=function(){for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:.15;return s(e)>.5?u(e,t):c(e,t)},t.fade=function(e,t){if(!e)return e;e=i(e),t=o(t),("rgb"===e.type||"hsl"===e.type)&&(e.type+="a");return e.values[3]=t,l(e)},t.darken=u,t.lighten=c;r(n(17));function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return en?n:e}function a(e){e=e.substr(1);var t=new RegExp(".{1,".concat(e.length/3,"}"),"g"),n=e.match(t);return n&&1===n[0].length&&(n=n.map(function(e){return e+e})),n?"rgb(".concat(n.map(function(e){return parseInt(e,16)}).join(", "),")"):""}function i(e){if("#"===e.charAt(0))return i(a(e));var t=e.indexOf("("),n=e.substring(0,t),r=e.substring(t+1,e.length-1).split(",");return{type:n,values:r=r.map(function(e){return parseFloat(e)})}}function l(e){var t=e.type,n=e.values;return-1!==t.indexOf("rgb")&&(n=n.map(function(e,t){return t<3?parseInt(e,10):e})),-1!==t.indexOf("hsl")&&(n[1]="".concat(n[1],"%"),n[2]="".concat(n[2],"%")),"".concat(e.type,"(").concat(n.join(", "),")")}function s(e){var t=i(e);if(-1!==t.type.indexOf("rgb")){var n=t.values.map(function(e){return(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)});return Number((.2126*n[0]+.7152*n[1]+.0722*n[2]).toFixed(3))}return t.values[2]/100}function u(e,t){if(!e)return e;if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]*=1-t;return l(e)}function c(e,t){if(!e)return e;if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;return l(e)}},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.cloneElementWithClassName=i,t.cloneChildrenWithClassName=function(e,t){return o.default.Children.map(e,function(e){return o.default.isValidElement(e)&&i(e,t)})},t.isMuiElement=function(e,t){return o.default.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)},t.setRef=function(e,t){"function"==typeof e?e(t):e&&(e.current=t)};var o=r(n(0)),a=r(n(6));function i(e,t){return o.default.cloneElement(e,{className:(0,a.default)(e.props.className,t)})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.props,n=e.states,r=e.muiFormControl;return n.reduce(function(e,n){return e[n]=t[n],r&&void 0===t[n]&&(e[n]=r[n]),e},{})}},function(e,t,n){"use strict";function r(e){e.languages.c=e.languages.extend("clike",{keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/]/,number:/(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),e.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete e.languages.c["class-name"],delete e.languages.c.boolean}e.exports=r,r.displayName="c",r.aliases=[]},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t=55296&&ae<=57343||ae>1114111?(I(k,U),C="�"):C in o?(I(w,U),C=o[C]):(R="",T(C)&&I(w,U),C>65535&&(R+=c((C-=65536)>>>10|55296),C=56320|1023&C),C=R+c(C))):D!==f&&I(E,U)),C?(se(),B=ie(),J=z-1,te+=z-L+1,oe.push(C),(j=ie()).offset++,V&&V.call(K,C,{start:B,end:j},e.slice(L-1,z)),B=j):(p=e.slice(L-1,z),re+=p,te+=p.length,J=z-1)}var ae;return oe.join("");function ie(){return{line:ne,column:te,offset:J+(X.offset||0)}}function le(t){return e.charAt(t)}function se(){re&&(oe.push(re),G&&G.call(q,re,{start:B,end:ie()}),re="")}}(e,i)};var u={}.hasOwnProperty,c=String.fromCharCode,d=Function.prototype,p={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},f="named",m="hexadecimal",g="decimal",h={};h[m]=16,h[g]=10;var b={};b[f]=l,b[g]=a,b[m]=i;var y=1,v=2,S=3,E=4,x=5,w=6,k=7,_={};function T(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||65535==(65535&e)||65534==(65535&e)}_[y]="Named character references must be terminated by a semicolon",_[v]="Numeric character references must be terminated by a semicolon",_[S]="Named character references cannot be empty",_[E]="Numeric character references cannot be empty",_[x]="Named character references must be known",_[w]="Numeric character references cannot be disallowed",_[k]="Numeric character references cannot be outside the permissible Unicode range"},function(e,t,n){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57}},function(e,t,n){"use strict";e.exports=l;var r=n(307),o=r.CONTINUE,a=r.SKIP,i=r.EXIT;function l(e,t,n,o){"function"==typeof t&&"function"!=typeof n&&(o=n,n=t,t=null),r(e,t,function(e,t){var r=t[t.length-1],o=r?r.children.indexOf(e):null;return n(e,o,r)},o)}l.CONTINUE=o,l.SKIP=a,l.EXIT=i},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!Array.isArray(e))return e;var n="";if(Array.isArray(e[0]))for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:"unnamed",t=arguments[1],n=arguments[2],i=n.jss,l=(0,a.default)(t),s=i.plugins.onCreateRule(e,l,n);if(s)return s;"@"===e[0]&&(0,r.default)(!1,"[JSS] Unknown at-rule %s",e);return new o.default(e,l,n)};var r=i(n(28)),o=i(n(30)),a=i(n(363));function i(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";n.r(t),n.d(t,"isBrowser",function(){return o});var r="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},o="object"===("undefined"==typeof window?"undefined":r(window))&&"object"===("undefined"==typeof document?"undefined":r(document))&&9===document.nodeType;t.default=o},function(e,t,n){e.exports=function(){"use strict";var e=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var n=Object.prototype.toString.call(e);return"[object RegExp]"===n||"[object Date]"===n||function(e){return e.$$typeof===t}(e)}(e)},t="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,t){return!1!==t.clone&&t.isMergeableObject(e)?o((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function r(e,t,r){return e.concat(t).map(function(e){return n(e,r)})}function o(t,a,i){(i=i||{}).arrayMerge=i.arrayMerge||r,i.isMergeableObject=i.isMergeableObject||e;var l=Array.isArray(a),s=Array.isArray(t),u=l===s;return u?l?i.arrayMerge(t,a,i):function(e,t,r){var a={};return r.isMergeableObject(e)&&Object.keys(e).forEach(function(t){a[t]=n(e[t],r)}),Object.keys(t).forEach(function(i){r.isMergeableObject(t[i])&&e[i]?a[i]=o(e[i],t[i],r):a[i]=n(t[i],r)}),a}(t,a,i):n(a,i)}return o.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(e,n){return o(e,n,t)},{})},o}()},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.default}});var o=r(n(414))},function(e,t,n){"use strict";t.__esModule=!0,t.default=t.EXITING=t.ENTERED=t.ENTERING=t.EXITED=t.UNMOUNTED=void 0;var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}(n(1)),o=l(n(0)),a=l(n(22)),i=n(133);n(417);function l(e){return e&&e.__esModule?e:{default:e}}var s="unmounted";t.UNMOUNTED=s;var u="exited";t.EXITED=u;var c="entering";t.ENTERING=c;var d="entered";t.ENTERED=d;t.EXITING="exiting";var p=function(e){var t,n;function r(t,n){var r;r=e.call(this,t,n)||this;var o,a=n.transitionGroup,i=a&&!a.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?i?(o=u,r.appearStatus=c):o=d:o=t.unmountOnExit||t.mountOnEnter?s:u,r.state={status:o},r.nextCallback=null,r}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var i=r.prototype;return i.getChildContext=function(){return{transitionGroup:null}},r.getDerivedStateFromProps=function(e,t){return e.in&&t.status===s?{status:u}:null},i.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},i.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==c&&n!==d&&(t=c):n!==c&&n!==d||(t="exiting")}this.updateStatus(!1,t)},i.componentWillUnmount=function(){this.cancelNextCallback()},i.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=r.appear),{exit:e,enter:t,appear:n}},i.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t){this.cancelNextCallback();var n=a.default.findDOMNode(this);t===c?this.performEnter(n,e):this.performExit(n)}else this.props.unmountOnExit&&this.state.status===u&&this.setState({status:s})},i.performEnter=function(e,t){var n=this,r=this.props.enter,o=this.context.transitionGroup?this.context.transitionGroup.isMounting:t,a=this.getTimeouts();t||r?(this.props.onEnter(e,o),this.safeSetState({status:c},function(){n.props.onEntering(e,o),n.onTransitionEnd(e,a.enter,function(){n.safeSetState({status:d},function(){n.props.onEntered(e,o)})})})):this.safeSetState({status:d},function(){n.props.onEntered(e)})},i.performExit=function(e){var t=this,n=this.props.exit,r=this.getTimeouts();n?(this.props.onExit(e),this.safeSetState({status:"exiting"},function(){t.props.onExiting(e),t.onTransitionEnd(e,r.exit,function(){t.safeSetState({status:u},function(){t.props.onExited(e)})})})):this.safeSetState({status:u},function(){t.props.onExited(e)})},i.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},i.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},i.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},i.onTransitionEnd=function(e,t,n){this.setNextCallback(n),e?(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t)):setTimeout(this.nextCallback,0)},i.render=function(){var e=this.state.status;if(e===s)return null;var t=this.props,n=t.children,r=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(t,["children"]);if(delete r.in,delete r.mountOnEnter,delete r.unmountOnExit,delete r.appear,delete r.enter,delete r.exit,delete r.timeout,delete r.addEndListener,delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,"function"==typeof n)return n(e,r);var a=o.default.Children.only(n);return o.default.cloneElement(a,r)},r}(o.default.Component);function f(){}p.contextTypes={transitionGroup:r.object},p.childContextTypes={transitionGroup:function(){}},p.propTypes={},p.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:f,onEntering:f,onEntered:f,onExit:f,onExiting:f,onExited:f},p.UNMOUNTED=0,p.EXITED=1,p.ENTERING=2,p.ENTERED=3,p.EXITING=4;var m=(0,i.polyfill)(p);t.default=m},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.default}});var o=r(n(421))},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.default}});var o=r(n(430))},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"ModalManager",{enumerable:!0,get:function(){return a.default}});var o=r(n(444)),a=r(n(144))},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(0)).default.createContext();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(645);Object.defineProperty(t,"coy",{enumerable:!0,get:function(){return T(r).default}});var o=n(646);Object.defineProperty(t,"dark",{enumerable:!0,get:function(){return T(o).default}});var a=n(647);Object.defineProperty(t,"funky",{enumerable:!0,get:function(){return T(a).default}});var i=n(648);Object.defineProperty(t,"okaidia",{enumerable:!0,get:function(){return T(i).default}});var l=n(649);Object.defineProperty(t,"solarizedlight",{enumerable:!0,get:function(){return T(l).default}});var s=n(650);Object.defineProperty(t,"tomorrow",{enumerable:!0,get:function(){return T(s).default}});var u=n(651);Object.defineProperty(t,"twilight",{enumerable:!0,get:function(){return T(u).default}});var c=n(652);Object.defineProperty(t,"prism",{enumerable:!0,get:function(){return T(c).default}});var d=n(653);Object.defineProperty(t,"atomDark",{enumerable:!0,get:function(){return T(d).default}});var p=n(654);Object.defineProperty(t,"base16AteliersulphurpoolLight",{enumerable:!0,get:function(){return T(p).default}});var f=n(655);Object.defineProperty(t,"cb",{enumerable:!0,get:function(){return T(f).default}});var m=n(656);Object.defineProperty(t,"darcula",{enumerable:!0,get:function(){return T(m).default}});var g=n(657);Object.defineProperty(t,"duotoneDark",{enumerable:!0,get:function(){return T(g).default}});var h=n(658);Object.defineProperty(t,"duotoneEarth",{enumerable:!0,get:function(){return T(h).default}});var b=n(659);Object.defineProperty(t,"duotoneForest",{enumerable:!0,get:function(){return T(b).default}});var y=n(660);Object.defineProperty(t,"duotoneLight",{enumerable:!0,get:function(){return T(y).default}});var v=n(661);Object.defineProperty(t,"duotoneSea",{enumerable:!0,get:function(){return T(v).default}});var S=n(662);Object.defineProperty(t,"duotoneSpace",{enumerable:!0,get:function(){return T(S).default}});var E=n(663);Object.defineProperty(t,"ghcolors",{enumerable:!0,get:function(){return T(E).default}});var x=n(664);Object.defineProperty(t,"hopscotch",{enumerable:!0,get:function(){return T(x).default}});var w=n(665);Object.defineProperty(t,"pojoaque",{enumerable:!0,get:function(){return T(w).default}});var k=n(666);Object.defineProperty(t,"vs",{enumerable:!0,get:function(){return T(k).default}});var _=n(667);function T(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"xonokai",{enumerable:!0,get:function(){return T(_).default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.curry=l,t.currySoft=function(e,t){return l(e,t,a.allowOverwrite)},t.curryHard=function(e,t){return l(e,t,a.forceCurry)},t.currySmart=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return l(e,t,function(e,t){return(0,a.mergeComplexProps)(e,t,n)})};var r=i(n(0)),o=i(n(356)),a=n(357);function i(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a.allowOverwrite,i=e.props,l=e.type,s=function(e){var t=n(i,e);return r.default.createElement(l,t)};return s.displayName=t||"Curried(".concat((0,o.default)(l),")"),s.propTypes=l.propTypes,s}},function(e,t,n){var r=n(9);e.exports=function(e){for(var t=1;t * @@ -86,5 +86,5 @@ t.prefix=r.default,t.supportedProperty=o.default,t.supportedValue=a.default},fun * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. - */e.exports=function(e){return null!=e&&"object"==typeof e&&!1===Array.isArray(e)}},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.values,n=void 0===t?{xs:0,sm:600,md:960,lg:1280,xl:1920}:t,r=e.unit,l=void 0===r?"px":r,s=e.step,u=void 0===s?5:s,c=(0,a.default)(e,["values","unit","step"]);function d(e){var t="number"==typeof n[e]?n[e]:e;return"@media (min-width:".concat(t).concat(l,")")}function p(e,t){var r=i.indexOf(t)+1;return r===i.length?d(e):"@media (min-width:".concat(n[e]).concat(l,") and ")+"(max-width:".concat(n[i[r]]-u/100).concat(l,")")}return(0,o.default)({keys:i,values:n,up:d,down:function(e){var t=i.indexOf(e)+1,r=n[i[t]];if(t===i.length)return d("xs");return"@media (max-width:".concat(("number"==typeof r&&t>0?r:e)-u/100).concat(l,")")},between:p,only:function(e){return p(e,e)},width:function(e){return n[e]}},c)},t.keys=void 0;var o=r(n(4)),a=r(n(5)),i=["xs","sm","md","lg","xl"];t.keys=i},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r;return(0,a.default)({gutters:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,a.default)({paddingLeft:2*t.unit,paddingRight:2*t.unit},n,(0,o.default)({},e.up("sm"),(0,a.default)({paddingLeft:3*t.unit,paddingRight:3*t.unit},n[e.up("sm")])))},toolbar:(r={minHeight:56},(0,o.default)(r,"".concat(e.up("xs")," and (orientation: landscape)"),{minHeight:48}),(0,o.default)(r,e.up("sm"),{minHeight:64}),r)},n)};var o=r(n(9)),a=r(n(4))},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.primary,n=void 0===t?{light:l.default[300],main:l.default[500],dark:l.default[700]}:t,r=e.secondary,h=void 0===r?{light:s.default.A200,main:s.default.A400,dark:s.default.A700}:r,b=e.error,y=void 0===b?{light:c.default[300],main:c.default[500],dark:c.default[700]}:b,v=e.type,S=void 0===v?"light":v,E=e.contrastThreshold,x=void 0===E?3:E,w=e.tonalOffset,k=void 0===w?.2:w,_=(0,a.default)(e,["primary","secondary","error","type","contrastThreshold","tonalOffset"]);function T(e){var t=(0,p.getContrastRatio)(e,m.text.primary)>=x?m.text.primary:f.text.primary;return t}function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:700;return!e.main&&e[t]&&(e.main=e[t]),g(e,"light",n,k),g(e,"dark",r,k),e.contrastText||(e.contrastText=T(e.main)),e}A(n),A(h,"A400","A200","A700"),A(y);var C={dark:m,light:f};return(0,i.default)((0,o.default)({common:d.default,type:S,primary:n,secondary:h,error:y,grey:u.default,contrastThreshold:x,getContrastText:T,augmentColor:A,tonalOffset:k},C[S]),_,{clone:!1})},t.dark=t.light=void 0;var o=r(n(4)),a=r(n(5)),i=(r(n(17)),r(n(49))),l=r(n(122)),s=r(n(123)),u=r(n(124)),c=r(n(125)),d=r(n(126)),p=n(31),f={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.54)",disabled:"rgba(0, 0, 0, 0.38)",hint:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:d.default.white,default:u.default[50]},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.08)",hoverOpacity:.08,selected:"rgba(0, 0, 0, 0.14)",disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)"}};t.light=f;var m={text:{primary:d.default.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",hint:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:u.default[800],default:"#303030"},action:{active:d.default.white,hover:"rgba(255, 255, 255, 0.1)",hoverOpacity:.1,selected:"rgba(255, 255, 255, 0.2)",disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)"}};function g(e,t,n,r){e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=(0,p.lighten)(e.main,r):"dark"===t&&(e.dark=(0,p.darken)(e.main,1.5*r)))}t.dark=m},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n="function"==typeof t?t(e):t,r=n.fontFamily,d=void 0===r?c:r,p=n.fontSize,f=void 0===p?14:p,m=n.fontWeightLight,g=void 0===m?300:m,h=n.fontWeightRegular,b=void 0===h?400:h,y=n.fontWeightMedium,v=void 0===y?500:y,S=n.htmlFontSize,E=void 0===S?16:S,x=n.useNextVariants,w=void 0===x?Boolean(l.ponyfillGlobal.__MUI_USE_NEXT_TYPOGRAPHY_VARIANTS__):x,k=(n.suppressWarning,n.allVariants),_=(0,a.default)(n,["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","htmlFontSize","useNextVariants","suppressWarning","allVariants"]);var T=f/14,A=function(e){return"".concat(e/E*T,"rem")},C=function(t,n,r,a,i){return(0,o.default)({color:e.text.primary,fontFamily:d,fontWeight:t,fontSize:A(n),lineHeight:r},d===c?{letterSpacing:"".concat(s(a/n),"em")}:{},i,k)},O={h1:C(g,96,1,-1.5),h2:C(g,60,1,-.5),h3:C(b,48,1.04,0),h4:C(b,34,1.17,.25),h5:C(b,24,1.33,0),h6:C(v,20,1.6,.15),subtitle1:C(b,16,1.75,.15),subtitle2:C(v,14,1.57,.1),body1Next:C(b,16,1.5,.15),body2Next:C(b,14,1.5,.15),buttonNext:C(v,14,1.75,.4,u),captionNext:C(b,12,1.66,.4),overline:C(b,12,2.66,1,u)},I={display4:(0,o.default)({fontSize:A(112),fontWeight:g,fontFamily:d,letterSpacing:"-.04em",lineHeight:"".concat(s(128/112),"em"),marginLeft:"-.04em",color:e.text.secondary},k),display3:(0,o.default)({fontSize:A(56),fontWeight:b,fontFamily:d,letterSpacing:"-.02em",lineHeight:"".concat(s(73/56),"em"),marginLeft:"-.02em",color:e.text.secondary},k),display2:(0,o.default)({fontSize:A(45),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(51/45),"em"),marginLeft:"-.02em",color:e.text.secondary},k),display1:(0,o.default)({fontSize:A(34),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(41/34),"em"),color:e.text.secondary},k),headline:(0,o.default)({fontSize:A(24),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(32.5/24),"em"),color:e.text.primary},k),title:(0,o.default)({fontSize:A(21),fontWeight:v,fontFamily:d,lineHeight:"".concat(s(24.5/21),"em"),color:e.text.primary},k),subheading:(0,o.default)({fontSize:A(16),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(1.5),"em"),color:e.text.primary},k),body2:(0,o.default)({fontSize:A(14),fontWeight:v,fontFamily:d,lineHeight:"".concat(s(24/14),"em"),color:e.text.primary},k),body1:(0,o.default)({fontSize:A(14),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(20.5/14),"em"),color:e.text.primary},k),caption:(0,o.default)({fontSize:A(12),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(1.375),"em"),color:e.text.secondary},k),button:(0,o.default)({fontSize:A(14),textTransform:"uppercase",fontWeight:v,fontFamily:d,color:e.text.primary},k)};return(0,i.default)((0,o.default)({pxToRem:A,round:s,fontFamily:d,fontSize:f,fontWeightLight:g,fontWeightRegular:b,fontWeightMedium:v},I,O,w?{body1:O.body1Next,body2:O.body2Next,button:O.buttonNext,caption:O.captionNext}:{},{useNextVariants:w}),_,{clone:!1})};var o=r(n(4)),a=r(n(5)),i=r(n(49)),l=(r(n(17)),n(7));function s(e){return Math.round(1e5*e)/1e5}var u={textTransform:"uppercase"},c='"Roboto", "Helvetica", "Arial", sans-serif'},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=.2,o=.14,a=.12;function i(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(r,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(o,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(a,")")].join(",")}var l=["none",i(0,1,3,0,0,1,1,0,0,2,1,-1),i(0,1,5,0,0,2,2,0,0,3,1,-2),i(0,1,8,0,0,3,4,0,0,3,3,-2),i(0,2,4,-1,0,4,5,0,0,1,10,0),i(0,3,5,-1,0,5,8,0,0,1,14,0),i(0,3,5,-1,0,6,10,0,0,1,18,0),i(0,4,5,-2,0,7,10,1,0,2,16,1),i(0,5,5,-3,0,8,10,1,0,3,14,2),i(0,5,6,-3,0,9,12,1,0,3,16,2),i(0,6,6,-3,0,10,14,1,0,4,18,3),i(0,6,7,-4,0,11,15,1,0,4,20,3),i(0,7,8,-4,0,12,17,2,0,5,22,4),i(0,7,8,-4,0,13,19,2,0,5,24,4),i(0,7,9,-4,0,14,21,2,0,5,26,4),i(0,8,9,-5,0,15,22,2,0,6,28,5),i(0,8,10,-5,0,16,24,2,0,6,30,5),i(0,8,11,-5,0,17,26,2,0,6,32,5),i(0,9,11,-5,0,18,28,2,0,7,34,6),i(0,9,12,-6,0,19,29,2,0,7,36,6),i(0,10,13,-6,0,20,31,3,0,8,38,7),i(0,10,13,-6,0,21,33,3,0,8,40,7),i(0,10,14,-6,0,22,35,3,0,8,42,7),i(0,11,14,-7,0,23,36,3,0,9,44,8),i(0,11,15,-7,0,24,38,3,0,9,46,8)];t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={borderRadius:4};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={unit:8};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={mobileStepper:1e3,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};t.default=r},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(4)),a=(r(n(29)),r(n(17)),r(n(49)));function i(e,t){return t}var l=function(e){var t="function"==typeof e;return{create:function(n,r){var l=t?e(n):e;if(!r||!n.overrides||!n.overrides[r])return l;var s=n.overrides[r],u=(0,o.default)({},l);return Object.keys(s).forEach(function(e){u[e]=(0,a.default)(u[e],s[e],{arrayMerge:i})}),u},options:{},themingEnabled:t}};t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){var t=e.theme,n=e.name,r=e.props;if(!t.props||!n||!t.props[n])return r;var o,a=t.props[n];for(o in a)void 0===r[o]&&(r[o]=a[o]);return r};t.default=r},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(9)),i=r(n(5)),l=r(n(12)),s=r(n(13)),u=r(n(14)),c=r(n(15)),d=r(n(16)),p=r(n(0)),f=(r(n(1)),r(n(6))),m=(r(n(17)),n(7),r(n(407))),g=r(n(8)),h=n(31),b=(r(n(415)),n(21));n(108);var y=function(e){var t="light"===e.palette.type?e.palette.grey[300]:e.palette.grey[700],n=(0,h.fade)(e.palette.text.primary,.26);return{root:{fontFamily:e.typography.fontFamily,fontSize:e.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,color:e.palette.getContrastText(t),backgroundColor:t,borderRadius:16,whiteSpace:"nowrap",transition:e.transitions.create(["background-color","box-shadow"]),cursor:"default",outline:"none",textDecoration:"none",border:"none",padding:0,verticalAlign:"middle",boxSizing:"border-box"},colorPrimary:{backgroundColor:e.palette.primary.main,color:e.palette.primary.contrastText},colorSecondary:{backgroundColor:e.palette.secondary.main,color:e.palette.secondary.contrastText},clickable:{WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover, &:focus":{backgroundColor:(0,h.emphasize)(t,.08)},"&:active":{boxShadow:e.shadows[1],backgroundColor:(0,h.emphasize)(t,.12)}},clickableColorPrimary:{"&:hover, &:focus":{backgroundColor:(0,h.emphasize)(e.palette.primary.main,.08)},"&:active":{backgroundColor:(0,h.emphasize)(e.palette.primary.main,.12)}},clickableColorSecondary:{"&:hover, &:focus":{backgroundColor:(0,h.emphasize)(e.palette.secondary.main,.08)},"&:active":{backgroundColor:(0,h.emphasize)(e.palette.secondary.main,.12)}},deletable:{"&:focus":{backgroundColor:(0,h.emphasize)(t,.08)}},deletableColorPrimary:{"&:focus":{backgroundColor:(0,h.emphasize)(e.palette.primary.main,.2)}},deletableColorSecondary:{"&:focus":{backgroundColor:(0,h.emphasize)(e.palette.secondary.main,.2)}},outlined:{backgroundColor:"transparent",border:"1px solid ".concat("light"===e.palette.type?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),"$clickable&:hover, $clickable&:focus, $deletable&:focus":{backgroundColor:(0,h.fade)(e.palette.text.primary,e.palette.action.hoverOpacity)},"& $avatar":{marginLeft:-1}},outlinedPrimary:{color:e.palette.primary.main,border:"1px solid ".concat(e.palette.primary.main),"$clickable&:hover, $clickable&:focus, $deletable&:focus":{backgroundColor:(0,h.fade)(e.palette.primary.main,e.palette.action.hoverOpacity)}},outlinedSecondary:{color:e.palette.secondary.main,border:"1px solid ".concat(e.palette.secondary.main),"$clickable&:hover, $clickable&:focus, $deletable&:focus":{backgroundColor:(0,h.fade)(e.palette.secondary.main,e.palette.action.hoverOpacity)}},avatar:{marginRight:-4,width:32,height:32,color:"light"===e.palette.type?e.palette.grey[700]:e.palette.grey[300],fontSize:e.typography.pxToRem(16)},avatarColorPrimary:{color:e.palette.primary.contrastText,backgroundColor:e.palette.primary.dark},avatarColorSecondary:{color:e.palette.secondary.contrastText,backgroundColor:e.palette.secondary.dark},avatarChildren:{width:19,height:19},icon:{color:"light"===e.palette.type?e.palette.grey[700]:e.palette.grey[300],marginLeft:4,marginRight:-8},iconColorPrimary:{color:"inherit"},iconColorSecondary:{color:"inherit"},label:{display:"flex",alignItems:"center",paddingLeft:12,paddingRight:12,userSelect:"none",whiteSpace:"nowrap",cursor:"inherit"},deleteIcon:{WebkitTapHighlightColor:"transparent",color:n,cursor:"pointer",height:"auto",margin:"0 4px 0 -8px","&:hover":{color:(0,h.fade)(n,.4)}},deleteIconColorPrimary:{color:(0,h.fade)(e.palette.primary.contrastText,.7),"&:hover, &:active":{color:e.palette.primary.contrastText}},deleteIconColorSecondary:{color:(0,h.fade)(e.palette.secondary.contrastText,.7),"&:hover, &:active":{color:e.palette.secondary.contrastText}},deleteIconOutlinedColorPrimary:{color:(0,h.fade)(e.palette.primary.main,.7),"&:hover, &:active":{color:e.palette.primary.main}},deleteIconOutlinedColorSecondary:{color:(0,h.fade)(e.palette.secondary.main,.7),"&:hover, &:active":{color:e.palette.secondary.main}}}};t.styles=y;var v=function(e){function t(){var e,n;(0,l.default)(this,t);for(var r=arguments.length,o=new Array(r),a=0;a3&&void 0!==arguments[3]?arguments[3]:1;t.focusVisibleTimeout=setTimeout(function(){var l=(0,o.default)(n),s=function(e){var t=e.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}(l);a.focusKeyPressed&&(s===n||n.contains(s))?r():i-1})(e)&&(a.focusKeyPressed=!0,clearTimeout(a.keyUpEventTimeout),a.keyUpEventTimeout=setTimeout(function(){a.focusKeyPressed=!1},500))}},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=t.DELAY_RIPPLE=void 0;var o=r(n(4)),a=r(n(5)),i=r(n(140)),l=r(n(12)),s=r(n(13)),u=r(n(14)),c=r(n(15)),d=r(n(16)),p=r(n(45)),f=r(n(0)),m=(r(n(1)),r(n(22))),g=r(n(437)),h=r(n(6)),b=r(n(8)),y=r(n(439)),v=550,S=80;t.DELAY_RIPPLE=S;var E=function(e){return{root:{display:"block",position:"absolute",overflow:"hidden",borderRadius:"inherit",width:"100%",height:"100%",left:0,top:0,pointerEvents:"none",zIndex:0},ripple:{width:50,height:50,left:0,top:0,opacity:0,position:"absolute"},rippleVisible:{opacity:.3,transform:"scale(1)",animation:"mui-ripple-enter ".concat(v,"ms ").concat(e.transitions.easing.easeInOut),animationName:"$mui-ripple-enter"},ripplePulsate:{animationDuration:"".concat(e.transitions.duration.shorter,"ms")},child:{opacity:1,display:"block",width:"100%",height:"100%",borderRadius:"50%",backgroundColor:"currentColor"},childLeaving:{opacity:0,animation:"mui-ripple-exit ".concat(v,"ms ").concat(e.transitions.easing.easeInOut),animationName:"$mui-ripple-exit"},childPulsate:{position:"absolute",left:0,top:0,animation:"mui-ripple-pulsate 2500ms ".concat(e.transitions.easing.easeInOut," 200ms infinite"),animationName:"$mui-ripple-pulsate"},"@keyframes mui-ripple-enter":{"0%":{transform:"scale(0)",opacity:.1},"100%":{transform:"scale(1)",opacity:.3}},"@keyframes mui-ripple-exit":{"0%":{opacity:1},"100%":{opacity:0}},"@keyframes mui-ripple-pulsate":{"0%":{transform:"scale(1)"},"50%":{transform:"scale(0.92)"},"100%":{transform:"scale(1)"}}}};t.styles=E;var x=function(e){function t(){var e,n;(0,l.default)(this,t);for(var r=arguments.length,o=new Array(r),a=0;a0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,o=t.pulsate,a=void 0!==o&&o,i=t.center,l=void 0===i?n.props.center||t.pulsate:i,s=t.fakeElement,u=void 0!==s&&s;if("mousedown"===e.type&&n.ignoringMouseDown)n.ignoringMouseDown=!1;else{"touchstart"===e.type&&(n.ignoringMouseDown=!0);var c,d,f,g=u?null:m.default.findDOMNode((0,p.default)((0,p.default)(n))),h=g?g.getBoundingClientRect():{width:0,height:0,left:0,top:0};if(l||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)c=Math.round(h.width/2),d=Math.round(h.height/2);else{var b=e.clientX?e.clientX:e.touches[0].clientX,y=e.clientY?e.clientY:e.touches[0].clientY;c=Math.round(b-h.left),d=Math.round(y-h.top)}if(l)(f=Math.sqrt((2*Math.pow(h.width,2)+Math.pow(h.height,2))/3))%2==0&&(f+=1);else{var v=2*Math.max(Math.abs((g?g.clientWidth:0)-c),c)+2,E=2*Math.max(Math.abs((g?g.clientHeight:0)-d),d)+2;f=Math.sqrt(Math.pow(v,2)+Math.pow(E,2))}e.touches?(n.startTimerCommit=function(){n.startCommit({pulsate:a,rippleX:c,rippleY:d,rippleSize:f,cb:r})},n.startTimer=setTimeout(function(){n.startTimerCommit&&(n.startTimerCommit(),n.startTimerCommit=null)},S)):n.startCommit({pulsate:a,rippleX:c,rippleY:d,rippleSize:f,cb:r})}},n.startCommit=function(e){var t=e.pulsate,r=e.rippleX,o=e.rippleY,a=e.rippleSize,l=e.cb;n.setState(function(e){return{nextKey:e.nextKey+1,ripples:[].concat((0,i.default)(e.ripples),[f.default.createElement(y.default,{key:e.nextKey,classes:n.props.classes,timeout:{exit:v,enter:v},pulsate:t,rippleX:r,rippleY:o,rippleSize:a})])}},l)},n.stop=function(e,t){clearTimeout(n.startTimer);var r=n.state.ripples;if("touchend"===e.type&&n.startTimerCommit)return e.persist(),n.startTimerCommit(),n.startTimerCommit=null,void(n.startTimer=setTimeout(function(){n.stop(e,t)}));n.startTimerCommit=null,r&&r.length&&n.setState({ripples:r.slice(1)},t)},n}return(0,d.default)(t,e),(0,s.default)(t,[{key:"componentWillUnmount",value:function(){clearTimeout(this.startTimer)}},{key:"render",value:function(){var e=this.props,t=(e.center,e.classes),n=e.className,r=(0,a.default)(e,["center","classes","className"]);return f.default.createElement(g.default,(0,o.default)({component:"span",enter:!0,exit:!0,className:(0,h.default)(t.root,n)},r),this.state.ripples)}}]),t}(f.default.PureComponent);x.defaultProps={center:!1};var w=(0,b.default)(E,{flip:!1,name:"MuiTouchRipple"})(x);t.default=w},function(e,t){e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t=0||(o[n]=e[n]);return o}(e,["component","childFactory"]),a=c(this.state.children).map(n);return delete r.appear,delete r.enter,delete r.exit,null===t?a:o.default.createElement(t,r,a)},r}(o.default.Component);d.childContextTypes={transitionGroup:r.default.object.isRequired},d.propTypes={},d.defaultProps={component:"div",childFactory:function(e){return e}};var p=(0,a.polyfill)(d);t.default=p,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.getChildMapping=o,t.mergeChildMappings=a,t.getInitialChildMapping=function(e,t){return o(e.children,function(n){return(0,r.cloneElement)(n,{onExited:t.bind(null,n),in:!0,appear:i(n,"appear",e),enter:i(n,"enter",e),exit:i(n,"exit",e)})})},t.getNextChildMapping=function(e,t,n){var l=o(e.children),s=a(t,l);return Object.keys(s).forEach(function(o){var a=s[o];if((0,r.isValidElement)(a)){var u=o in t,c=o in l,d=t[o],p=(0,r.isValidElement)(d)&&!d.props.in;!c||u&&!p?c||!u||p?c&&u&&(0,r.isValidElement)(d)&&(s[o]=(0,r.cloneElement)(a,{onExited:n.bind(null,a),in:d.props.in,exit:i(a,"exit",e),enter:i(a,"enter",e)})):s[o]=(0,r.cloneElement)(a,{in:!1}):s[o]=(0,r.cloneElement)(a,{onExited:n.bind(null,a),in:!0,exit:i(a,"exit",e),enter:i(a,"enter",e)})}}),s};var r=n(0);function o(e,t){var n=Object.create(null);return e&&r.Children.map(e,function(e){return e}).forEach(function(e){n[e.key]=function(e){return t&&(0,r.isValidElement)(e)?t(e):e}(e)}),n}function a(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,o=Object.create(null),a=[];for(var i in e)i in t?a.length&&(o[i]=a,a=[]):a.push(i);var l={};for(var s in t){if(o[s])for(r=0;rg){var v=p-g;c-=v,s.vertical+=v}if(db){var E=f-b;d-=E,s.horizontal+=E}return{top:"".concat(c,"px"),left:"".concat(d,"px"),transformOrigin:k(s)}},e.handleEntering=function(t){e.props.onEntering&&e.props.onEntering(t),e.setPositioningStyles(t)},"undefined"!=typeof window&&(e.handleResize=(0,f.default)(function(){e.props.open&&e.setPositioningStyles(e.paperRef)},166)),e}return(0,c.default)(t,e),(0,l.default)(t,[{key:"componentDidMount",value:function(){this.props.action&&this.props.action({updatePosition:this.handleResize})}},{key:"getAnchorOffset",value:function(e){var t=this.props,n=t.anchorEl,r=t.anchorOrigin,o=t.anchorReference,a=t.anchorPosition;if("anchorPosition"===o)return a;var i=(_(n)||(0,g.default)(this.paperRef).body).getBoundingClientRect(),l=0===e?r.vertical:"center";return{top:i.top+this.handleGetOffsetTop(i,l),left:i.left+this.handleGetOffsetLeft(i,r.horizontal)}}},{key:"getContentAnchorOffset",value:function(e){var t=this.props,n=t.getContentAnchorEl,r=t.anchorReference,o=0;if(n&&"anchorEl"===r){var a=n(e);if(a&&e.contains(a)){var i=function(e,t){for(var n=t,r=0;n&&n!==e;)r+=(n=n.parentNode).scrollTop;return r}(e,a);o=a.offsetTop+a.clientHeight/2-i||0}}return o}},{key:"getTransformOrigin",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.props.transformOrigin;return{vertical:this.handleGetOffsetTop(e,n.vertical)+t,horizontal:this.handleGetOffsetLeft(e,n.horizontal)}}},{key:"render",value:function(){var e=this,t=this.props,n=(t.action,t.anchorEl),r=(t.anchorOrigin,t.anchorPosition,t.anchorReference,t.children),i=t.classes,l=t.container,s=t.elevation,u=(t.getContentAnchorEl,t.marginThreshold,t.ModalClasses),c=t.onEnter,f=t.onEntered,h=(t.onEntering,t.onExit),y=t.onExited,S=t.onExiting,x=t.open,w=t.PaperProps,k=t.role,T=(t.transformOrigin,t.TransitionComponent),A=t.transitionDuration,C=t.TransitionProps,O=void 0===C?{}:C,I=(0,a.default)(t,["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","classes","container","elevation","getContentAnchorEl","marginThreshold","ModalClasses","onEnter","onEntered","onEntering","onExit","onExited","onExiting","open","PaperProps","role","transformOrigin","TransitionComponent","transitionDuration","TransitionProps"]),N=A;"auto"!==A||T.muiSupportAuto||(N=void 0);var R=l||(n?(0,g.default)(_(n)).body:void 0);return d.default.createElement(v.default,(0,o.default)({classes:u,container:R,open:x,BackdropProps:{invisible:!0}},I),d.default.createElement(T,(0,o.default)({appear:!0,in:x,onEnter:c,onEntered:f,onExit:h,onExited:y,onExiting:S,role:k,timeout:N},O,{onEntering:(0,b.createChainedFunction)(this.handleEntering,O.onEntering)}),d.default.createElement(E.default,(0,o.default)({className:i.paper,elevation:s,ref:function(t){e.paperRef=p.default.findDOMNode(t)}},w),d.default.createElement(m.default,{target:"window",onResize:this.handleResize}),r)))}}]),t}(d.default.Component);A.defaultProps={anchorReference:"anchorEl",anchorOrigin:{vertical:"top",horizontal:"left"},elevation:8,marginThreshold:16,transformOrigin:{vertical:"top",horizontal:"left"},TransitionComponent:S.default,transitionDuration:"auto"};var C=(0,y.default)(T,{name:"MuiPopover"})(A);t.default=C},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(9)),i=r(n(5)),l=r(n(12)),s=r(n(13)),u=r(n(14)),c=r(n(15)),d=r(n(16)),p=r(n(45)),f=r(n(0)),m=r(n(22)),g=(r(n(1)),r(n(6))),h=(r(n(17)),n(7),r(n(26))),b=r(n(82)),y=r(n(83)),v=n(21),S=r(n(8)),E=r(n(144)),x=r(n(84)),w=n(148);function k(e){return!!e.children&&e.children.props.hasOwnProperty("in")}var _=function(e){return{root:{position:"fixed",zIndex:e.zIndex.modal,right:0,bottom:0,top:0,left:0},hidden:{visibility:"hidden"}}};t.styles=_;var T=function(e){function t(e){var n;return(0,l.default)(this,t),(n=(0,u.default)(this,(0,c.default)(t).call(this))).mounted=!1,n.handleOpen=function(){var e=(0,h.default)(n.mountNode),t=function(e,t){return e="function"==typeof e?e():e,m.default.findDOMNode(e)||t}(n.props.container,e.body);n.props.manager.add((0,p.default)((0,p.default)(n)),t),e.addEventListener("focus",n.enforceFocus,!0),n.dialogRef&&n.handleOpened()},n.handleRendered=function(){n.props.onRendered&&n.props.onRendered(),n.props.open?n.handleOpened():(0,w.ariaHidden)(n.modalRef,!0)},n.handleOpened=function(){n.autoFocus(),n.props.manager.mount((0,p.default)((0,p.default)(n))),n.modalRef.scrollTop=0},n.handleClose=function(e){k(n.props)&&n.props.closeAfterTransition&&"unmount"!==e||n.props.manager.remove((0,p.default)((0,p.default)(n))),(0,h.default)(n.mountNode).removeEventListener("focus",n.enforceFocus,!0),n.restoreLastFocus()},n.handleExited=function(){n.props.closeAfterTransition&&n.props.manager.remove((0,p.default)((0,p.default)(n))),n.setState({exited:!0})},n.handleBackdropClick=function(e){e.target===e.currentTarget&&(n.props.onBackdropClick&&n.props.onBackdropClick(e),!n.props.disableBackdropClick&&n.props.onClose&&n.props.onClose(e,"backdropClick"))},n.handleKeyDown=function(e){"Escape"===e.key&&n.isTopModal()&&!e.defaultPrevented&&(e.stopPropagation(),n.props.onEscapeKeyDown&&n.props.onEscapeKeyDown(e),!n.props.disableEscapeKeyDown&&n.props.onClose&&n.props.onClose(e,"escapeKeyDown"))},n.enforceFocus=function(){if(n.isTopModal()&&!n.props.disableEnforceFocus&&n.mounted&&n.dialogRef){var e=(0,h.default)(n.mountNode).activeElement;n.dialogRef.contains(e)||n.dialogRef.focus()}},n.handlePortalRef=function(e){n.mountNode=e?e.getMountNode():e},n.handleModalRef=function(e){n.modalRef=e},n.onRootRef=function(e){n.dialogRef=e},n.state={exited:!e.open},n}return(0,d.default)(t,e),(0,s.default)(t,[{key:"componentDidMount",value:function(){this.mounted=!0,this.props.open&&this.handleOpen()}},{key:"componentDidUpdate",value:function(e){e.open&&!this.props.open?this.handleClose():!e.open&&this.props.open&&(this.lastFocus=(0,h.default)(this.mountNode).activeElement,this.handleOpen())}},{key:"componentWillUnmount",value:function(){this.mounted=!1,(this.props.open||k(this.props)&&!this.state.exited)&&this.handleClose("unmount")}},{key:"autoFocus",value:function(){if(!this.props.disableAutoFocus&&this.dialogRef){var e=(0,h.default)(this.mountNode).activeElement;this.dialogRef.contains(e)||(this.dialogRef.hasAttribute("tabIndex")||this.dialogRef.setAttribute("tabIndex",-1),this.lastFocus=e,this.dialogRef.focus())}}},{key:"restoreLastFocus",value:function(){!this.props.disableRestoreFocus&&this.lastFocus&&(this.lastFocus.focus&&this.lastFocus.focus(),this.lastFocus=null)}},{key:"isTopModal",value:function(){return this.props.manager.isTopModal(this)}},{key:"render",value:function(){var e=this.props,t=e.BackdropComponent,n=e.BackdropProps,r=e.children,l=e.classes,s=e.className,u=(e.closeAfterTransition,e.container),c=(e.disableAutoFocus,e.disableBackdropClick,e.disableEnforceFocus,e.disableEscapeKeyDown,e.disablePortal),d=(e.disableRestoreFocus,e.hideBackdrop),p=e.keepMounted,m=(e.manager,e.onBackdropClick,e.onClose,e.onEscapeKeyDown,e.onRendered,e.open),h=(0,i.default)(e,["BackdropComponent","BackdropProps","children","classes","className","closeAfterTransition","container","disableAutoFocus","disableBackdropClick","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","hideBackdrop","keepMounted","manager","onBackdropClick","onClose","onEscapeKeyDown","onRendered","open"]),S=this.state.exited,E=k(this.props);if(!p&&!m&&(!E||S))return null;var x={};return E&&(x.onExited=(0,v.createChainedFunction)(this.handleExited,r.props.onExited)),void 0===r.props.role&&(x.role=r.props.role||"document"),void 0===r.props.tabIndex&&(x.tabIndex=r.props.tabIndex||"-1"),f.default.createElement(y.default,{ref:this.handlePortalRef,container:u,disablePortal:c,onRendered:this.handleRendered},f.default.createElement("div",(0,o.default)({ref:this.handleModalRef,onKeyDown:this.handleKeyDown,role:"presentation",className:(0,g.default)(l.root,s,(0,a.default)({},l.hidden,S))},h),d?null:f.default.createElement(t,(0,o.default)({open:m,onClick:this.handleBackdropClick},n)),f.default.createElement(b.default,{rootRef:this.onRootRef},f.default.cloneElement(r,x))))}}],[{key:"getDerivedStateFromProps",value:function(e){return e.open?{exited:!1}:k(e)?null:{exited:!0}}}]),t}(f.default.Component);T.defaultProps={BackdropComponent:x.default,closeAfterTransition:!1,disableAutoFocus:!1,disableBackdropClick:!1,disableEnforceFocus:!1,disableEscapeKeyDown:!1,disablePortal:!1,disableRestoreFocus:!1,hideBackdrop:!1,keepMounted:!1,manager:new E.default};var A=(0,S.default)(_,{flip:!1,name:"MuiModal"})(T);t.default=A},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(12)),a=r(n(13)),i=r(n(14)),l=r(n(15)),s=r(n(16)),u=r(n(0)),c=r(n(22)),d=(r(n(1)),n(7),n(32));var p=function(e){function t(){return(0,o.default)(this,t),(0,i.default)(this,(0,l.default)(t).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"componentDidMount",value:function(){this.ref=c.default.findDOMNode(this),(0,d.setRef)(this.props.rootRef,this.ref)}},{key:"componentDidUpdate",value:function(e){var t=c.default.findDOMNode(this);e.rootRef===this.props.rootRef&&this.ref===t||(e.rootRef!==this.props.rootRef&&(0,d.setRef)(e.rootRef,null),this.ref=t,(0,d.setRef)(this.props.rootRef,this.ref))}},{key:"componentWillUnmount",value:function(){this.ref=null,(0,d.setRef)(this.props.rootRef,null)}},{key:"render",value:function(){return this.props.children}}]),t}(u.default.Component);t.default=p},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(12)),a=r(n(13)),i=r(n(14)),l=r(n(15)),s=r(n(16)),u=r(n(0)),c=r(n(22)),d=(r(n(1)),r(n(26)));n(7);var p=function(e){function t(){var e,n;(0,o.default)(this,t);for(var r=arguments.length,a=new Array(r),s=0;se.clientHeight;var r=n.getComputedStyle(t.body),s=parseInt(r.getPropertyValue("margin-left"),10),u=parseInt(r.getPropertyValue("margin-right"),10);return s+t.body.clientWidth+u=0?t.children[e].focus():t.firstChild.focus())}},{key:"resetTabIndex",value:function(){for(var e=this.listRef,t=(0,f.default)(e).activeElement,n=[],r=0;r=Number(e.rows)&&(n=Math.min(Number(e.rowsMax)*t,n)),n=Math.max(n,t),Math.abs(this.state.height-n)>1&&this.setState({height:n}))}}},{key:"render",value:function(){var e=this.props,t=e.classes,n=e.className,r=e.defaultValue,i=(e.onChange,e.rows),l=(e.rowsMax,e.style),s=(e.textareaRef,e.value),u=(0,a.default)(e,["classes","className","defaultValue","onChange","rows","rowsMax","style","textareaRef","value"]);return d.default.createElement("div",{className:t.root},d.default.createElement(m.default,{target:"window",onResize:this.handleResize}),d.default.createElement("textarea",{"aria-hidden":"true",className:(0,p.default)(t.textarea,t.shadow),readOnly:!0,ref:this.handleRefSinglelineShadow,rows:"1",tabIndex:-1,value:""}),d.default.createElement("textarea",{"aria-hidden":"true",className:(0,p.default)(t.textarea,t.shadow),defaultValue:r,readOnly:!0,ref:this.handleRefShadow,rows:i,tabIndex:-1,value:s}),d.default.createElement("textarea",(0,o.default)({rows:i,className:(0,p.default)(t.textarea,n),defaultValue:r,value:s,onChange:this.handleChange,ref:this.handleRefInput,style:(0,o.default)({height:this.state.height},l)},u)))}}]),t}(d.default.Component);v.defaultProps={rows:1};var S=(0,g.default)(y,{name:"MuiPrivateTextarea"})(v);t.default=S},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(5)),i=r(n(0)),l=(r(n(1)),n(7),r(n(150))),s=r(n(8)),u=r(n(33)),c=r(n(25)),d=r(n(149)),p=r(n(36)),f=function(e){return{root:{position:"relative",width:"100%"},select:{"-moz-appearance":"none","-webkit-appearance":"none",userSelect:"none",paddingRight:32,borderRadius:0,height:"1.1875em",width:"calc(100% - 32px)",minWidth:16,cursor:"pointer","&:focus":{backgroundColor:"light"===e.palette.type?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)",borderRadius:0},"&::-ms-expand":{display:"none"},"&$disabled":{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:e.palette.background.paper}},filled:{width:"calc(100% - 44px)"},outlined:{width:"calc(100% - 46px)",borderRadius:e.shape.borderRadius},selectMenu:{width:"auto",height:"auto",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",minHeight:"1.1875em"},disabled:{},icon:{position:"absolute",right:0,top:"calc(50% - 12px)",color:e.palette.action.active,"pointer-events":"none"}}};function m(e){var t=e.children,n=e.classes,r=e.IconComponent,s=e.input,c=e.inputProps,d=e.muiFormControl,p=(e.variant,(0,a.default)(e,["children","classes","IconComponent","input","inputProps","muiFormControl","variant"])),f=(0,u.default)({props:e,muiFormControl:d,states:["variant"]});return i.default.cloneElement(s,(0,o.default)({inputComponent:l.default,inputProps:(0,o.default)({children:t,classes:n,IconComponent:r,variant:f.variant,type:void 0},c,s?s.props.inputProps:{})},p))}t.styles=f,m.defaultProps={IconComponent:d.default,input:i.default.createElement(p.default,null)},m.muiName="Select";var g=(0,s.default)(f,{name:"MuiNativeSelect"})((0,c.default)(m));t.default=g},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(5)),i=r(n(0)),l=(r(n(1)),r(n(6))),s=r(n(8)),u=n(21),c=r(n(470)),d=function(e){return{root:{display:"inline-flex",width:62,position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle"},icon:{boxShadow:e.shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"},iconChecked:{boxShadow:e.shadows[2]},switchBase:{padding:0,height:48,width:48,color:"light"===e.palette.type?e.palette.grey[50]:e.palette.grey[400],transition:e.transitions.create("transform",{duration:e.transitions.duration.shortest})},checked:{transform:"translateX(14px)","& + $bar":{opacity:.5}},colorPrimary:{"&$checked":{color:e.palette.primary.main,"& + $bar":{backgroundColor:e.palette.primary.main}}},colorSecondary:{"&$checked":{color:e.palette.secondary.main,"& + $bar":{backgroundColor:e.palette.secondary.main}}},disabled:{"& + $bar":{opacity:"light"===e.palette.type?.12:.1},"& $icon":{boxShadow:e.shadows[1]},"&$switchBase":{color:"light"===e.palette.type?e.palette.grey[400]:e.palette.grey[800],"& + $bar":{backgroundColor:"light"===e.palette.type?e.palette.common.black:e.palette.common.white}}},bar:{borderRadius:7,display:"block",position:"absolute",zIndex:-1,width:34,height:14,top:"50%",left:"50%",marginTop:-7,marginLeft:-17,transition:e.transitions.create(["opacity","background-color"],{duration:e.transitions.duration.shortest}),backgroundColor:"light"===e.palette.type?e.palette.common.black:e.palette.common.white,opacity:"light"===e.palette.type?.38:.3}}};function p(e){var t=e.classes,n=e.className,r=e.color,s=(0,a.default)(e,["classes","className","color"]);return i.default.createElement("span",{className:(0,l.default)(t.root,n)},i.default.createElement(c.default,(0,o.default)({type:"checkbox",icon:i.default.createElement("span",{className:t.icon}),classes:{root:(0,l.default)(t.switchBase,t["color".concat((0,u.capitalize)(r))]),checked:t.checked,disabled:t.disabled},checkedIcon:i.default.createElement("span",{className:(0,l.default)(t.icon,t.iconChecked)})},s)),i.default.createElement("span",{className:t.bar}))}t.styles=d,p.defaultProps={color:"secondary"};var f=(0,s.default)(d,{name:"MuiSwitch"})(p);t.default=f},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(9)),i=r(n(5)),l=r(n(12)),s=r(n(13)),u=r(n(14)),c=r(n(15)),d=r(n(16)),p=r(n(0)),f=(r(n(1)),r(n(6))),m=r(n(25)),g=r(n(8)),h=r(n(91)),b={root:{display:"inline-flex",alignItems:"center",transition:"none","&:hover":{backgroundColor:"transparent"}},checked:{},disabled:{},input:{cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0}};t.styles=b;var y=function(e){function t(e){var n;return(0,l.default)(this,t),(n=(0,u.default)(this,(0,c.default)(t).call(this))).handleFocus=function(e){n.props.onFocus&&n.props.onFocus(e);var t=n.props.muiFormControl;t&&t.onFocus&&t.onFocus(e)},n.handleBlur=function(e){n.props.onBlur&&n.props.onBlur(e);var t=n.props.muiFormControl;t&&t.onBlur&&t.onBlur(e)},n.handleInputChange=function(e){var t=e.target.checked;n.isControlled||n.setState({checked:t}),n.props.onChange&&n.props.onChange(e,t)},n.isControlled=null!=e.checked,n.state={},n.isControlled||(n.state.checked=void 0!==e.defaultChecked&&e.defaultChecked),n}return(0,d.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){var e,t=this.props,n=t.autoFocus,r=t.checked,l=t.checkedIcon,s=t.classes,u=t.className,c=t.defaultChecked,d=t.disabled,m=t.icon,g=t.id,b=t.inputProps,y=t.inputRef,v=t.muiFormControl,S=t.name,E=(t.onBlur,t.onChange,t.onFocus,t.readOnly),x=t.required,w=t.tabIndex,k=t.type,_=t.value,T=(0,i.default)(t,["autoFocus","checked","checkedIcon","classes","className","defaultChecked","disabled","icon","id","inputProps","inputRef","muiFormControl","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"]),A=d;v&&void 0===A&&(A=v.disabled);var C=this.isControlled?r:this.state.checked,O="checkbox"===k||"radio"===k;return p.default.createElement(h.default,(0,o.default)({component:"span",className:(0,f.default)(s.root,(e={},(0,a.default)(e,s.checked,C),(0,a.default)(e,s.disabled,A),e),u),disabled:A,tabIndex:null,role:void 0,onFocus:this.handleFocus,onBlur:this.handleBlur},T),C?l:m,p.default.createElement("input",(0,o.default)({autoFocus:n,checked:r,defaultChecked:c,className:s.input,disabled:A,id:O&&g,name:S,onChange:this.handleInputChange,readOnly:E,ref:y,required:x,tabIndex:w,type:k,value:_},b)))}}]),t}(p.default.Component),v=(0,g.default)(b,{name:"MuiPrivateSwitchBase"})((0,m.default)(y));t.default=v},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(9)),i=r(n(5)),l=r(n(0)),s=(r(n(1)),r(n(6))),u=(n(7),r(n(8))),c=n(31),d=r(n(53)),p=n(21),f=function(e){return{root:{textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:12,borderRadius:"50%",overflow:"visible",color:e.palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{backgroundColor:(0,c.fade)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"},"&$disabled":{backgroundColor:"transparent"}},"&$disabled":{color:e.palette.action.disabled}},colorInherit:{color:"inherit"},colorPrimary:{color:e.palette.primary.main,"&:hover":{backgroundColor:(0,c.fade)(e.palette.primary.main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},colorSecondary:{color:e.palette.secondary.main,"&:hover":{backgroundColor:(0,c.fade)(e.palette.secondary.main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},disabled:{},label:{width:"100%",display:"flex",alignItems:"inherit",justifyContent:"inherit"}}};function m(e){var t,n=e.children,r=e.classes,u=e.className,c=e.color,f=e.disabled,m=(0,i.default)(e,["children","classes","className","color","disabled"]);return l.default.createElement(d.default,(0,o.default)({className:(0,s.default)(r.root,(t={},(0,a.default)(t,r["color".concat((0,p.capitalize)(c))],"default"!==c),(0,a.default)(t,r.disabled,f),t),u),centerRipple:!0,focusRipple:!0,disabled:f},m),l.default.createElement("span",{className:r.label},n))}t.styles=f,m.defaultProps={color:"default",disabled:!1};var g=(0,u.default)(f,{name:"MuiIconButton"})(m);t.default=g},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(5)),i=r(n(12)),l=r(n(13)),s=r(n(14)),u=r(n(15)),c=r(n(16)),d=r(n(0)),p=(r(n(1)),r(n(6))),f=(n(7),r(n(8))),m=r(n(153)),g=function(e){return{root:{display:"table",fontFamily:e.typography.fontFamily,width:"100%",borderCollapse:"collapse",borderSpacing:0}}};t.styles=g;var h=function(e){function t(){var e,n;(0,i.default)(this,t);for(var r=arguments.length,o=new Array(r),a=0;a0?.75*r+8:0;return l.default.createElement("fieldset",(0,a.default)({"aria-hidden":!0,style:(0,a.default)((0,o.default)({},"padding".concat((0,c.capitalize)(m)),8+(u?0:g/2)),d),className:(0,s.default)(t.root,n)},f),l.default.createElement("legend",{className:t.legend,style:{width:u?g:.01}},l.default.createElement("span",{dangerouslySetInnerHTML:{__html:"​"}})))});t.default=p},function(e,t,n){"use strict";var r=n(483),o=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.MuiThemeProviderOld=void 0;var a=o(n(4)),i=o(n(9)),l=o(n(12)),s=o(n(13)),u=o(n(14)),c=o(n(15)),d=o(n(16)),p=o(n(0)),f=o(n(1)),m=(o(n(17)),o(n(484))),g=n(7),h=r(n(69)),b=function(e){function t(e,n){var r;return(0,l.default)(this,t),(r=(0,u.default)(this,(0,c.default)(t).call(this))).broadcast=(0,m.default)(),r.outerTheme=h.default.initial(n),r.broadcast.setState(r.mergeOuterLocalTheme(e.theme)),r}return(0,d.default)(t,e),(0,s.default)(t,[{key:"getChildContext",value:function(){var e,t=this.props,n=t.disableStylesGeneration,r=t.sheetsCache,o=t.sheetsManager,a=this.context.muiThemeProviderOptions||{};return void 0!==n&&(a.disableStylesGeneration=n),void 0!==r&&(a.sheetsCache=r),void 0!==o&&(a.sheetsManager=o),e={},(0,i.default)(e,h.CHANNEL,this.broadcast),(0,i.default)(e,"muiThemeProviderOptions",a),e}},{key:"componentDidMount",value:function(){var e=this;this.unsubscribeId=h.default.subscribe(this.context,function(t){e.outerTheme=t,e.broadcast.setState(e.mergeOuterLocalTheme(e.props.theme))})}},{key:"componentDidUpdate",value:function(e){this.props.theme!==e.theme&&this.broadcast.setState(this.mergeOuterLocalTheme(this.props.theme))}},{key:"componentWillUnmount",value:function(){null!==this.unsubscribeId&&h.default.unsubscribe(this.context,this.unsubscribeId)}},{key:"mergeOuterLocalTheme",value:function(e){return"function"==typeof e?e(this.outerTheme):this.outerTheme?(0,a.default)({},this.outerTheme,e):e}},{key:"render",value:function(){return this.props.children}}]),t}(p.default.Component);t.MuiThemeProviderOld=b,b.childContextTypes=(0,a.default)({},h.default.contextTypes,{muiThemeProviderOptions:f.default.object}),b.contextTypes=(0,a.default)({},h.default.contextTypes,{muiThemeProviderOptions:f.default.object}),g.ponyfillGlobal.__MUI_STYLES__||(g.ponyfillGlobal.__MUI_STYLES__={}),g.ponyfillGlobal.__MUI_STYLES__.MuiThemeProvider||(g.ponyfillGlobal.__MUI_STYLES__.MuiThemeProvider=b);var y=g.ponyfillGlobal.__MUI_STYLES__.MuiThemeProvider;t.default=y},function(e,t){e.exports=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}},function(e,t,n){"use strict";n.r(t),t.default=function(e){var t={},n=1,r=e;return{getState:function(){return r},setState:function(e){r=e;for(var n=Object.keys(t),o=0,a=n.length;o4&&n.slice(0,4)===i&&l.test(t)&&("-"===t.charAt(4)?p=function(e){var t=e.slice(5).replace(s,d);return i+t.charAt(0).toUpperCase()+t.slice(1)}(t):t=function(e){var t=e.slice(4);if(s.test(t))return e;"-"!==(t=t.replace(u,c)).charAt(0)&&(t="-"+t);return i+t}(t),f=o);return new f(p,t)};var l=/^data[-a-z0-9.:_]+$/i,s=/-[a-z]/g,u=/[A-Z]/g;function c(e){return"-"+e.toLowerCase()}function d(e){return e.charAt(1).toUpperCase()}},function(e,t,n){"use strict";e.exports=function(e,t){var n,a,i,l,s,u=e||"",c=t||"div",d={},p=-1,f=u.length;for(;++p<=f;)(i=u.charCodeAt(p))&&i!==r&&i!==o||((l=u.slice(s,p))&&(a===r?n?n.push(l):(n=[l],d.className=n):a===o?d.id=l:c=l),s=p+1,a=i);return{type:"element",tagName:c,properties:d,children:[]}};var r=".".charCodeAt(0),o="#".charCodeAt(0)},function(e,t,n){"use strict";var r=n(24);t.parse=function(e){var t=r(String(e||o));return t===o?[]:t.split(i)},t.stringify=function(e){return r(e.join(a))};var o="",a=" ",i=/[ \t\n\r\f]+/g},function(e,t,n){"use strict";t.parse=function(e){var t,n=[],a=String(e||i),l=a.indexOf(o),s=0,u=!1;for(;!u;)-1===l&&(l=a.length,u=!0),!(t=r(a.slice(s,l)))&&u||n.push(t),s=l+1,l=a.indexOf(o,s);return n},t.stringify=function(e,t){var n=t||{},l=!1===n.padLeft?i:a,s=n.padRight?a:i;e[e.length-1]===i&&(e=e.concat(i));return r(e.join(s+o+l))};var r=n(24),o=",",a=" ",i=""},function(e,t,n){(function(t){var n="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},r=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,r=n.Prism={manual:n.Prism&&n.Prism.manual,disableWorkerMessageHandler:n.Prism&&n.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof o?new o(e.type,r.util.encode(e.content),e.alias):"Array"===r.util.type(e)?e.map(r.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(E instanceof s)){if(g&&v!=t.length-1){if(p.lastIndex=S,!(A=p.exec(e)))break;for(var x=A.index+(m?A[1].length:0),w=A.index+A[0].length,k=v,_=S,T=t.length;k=(_+=t[k].length)&&(++v,S=_);if(t[v]instanceof s)continue;C=k-v,E=e.slice(S,_),A.index-=S}else{p.lastIndex=0;var A=p.exec(E),C=1}if(A){m&&(h=A[1]?A[1].length:0);w=(x=A.index+h)+(A=A[0].slice(h)).length;var O=E.slice(0,x),I=E.slice(w),N=[v,C];O&&(++v,S+=O.length,N.push(O));var R=new s(u,f?r.tokenize(A,f):A,b,A,g);if(N.push(R),I&&N.push(I),Array.prototype.splice.apply(t,N),1!=C&&r.matchGrammar(e,t,n,v,S,!0,u),i)break}else if(i)break}}}}},tokenize:function(e,t,n){var o=[e],a=t.rest;if(a){for(var i in a)t[i]=a[i];delete t.rest}return r.matchGrammar(e,o,t,0,0,!1),o},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var o,a=0;o=n[a++];)o(t)}}},o=r.Token=function(e,t,n,r,o){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!o};if(o.stringify=function(e,t,n){if("string"==typeof e)return e;if("Array"===r.util.type(e))return e.map(function(n){return o.stringify(n,t,e)}).join("");var a={type:e.type,content:o.stringify(e.content,t,n),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:n};if(e.alias){var i="Array"===r.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(a.classes,i)}r.hooks.run("wrap",a);var l=Object.keys(a.attributes).map(function(e){return e+'="'+(a.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+(l?" "+l:"")+">"+a.content+""},!n.document)return n.addEventListener?(r.disableWorkerMessageHandler||n.addEventListener("message",function(e){var t=JSON.parse(e.data),o=t.language,a=t.code,i=t.immediateClose;n.postMessage(r.highlight(a,r.languages[o],o)),i&&n.close()},!1),n.Prism):n.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(r.filename=a.src,r.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(r.highlightAll):window.setTimeout(r.highlightAll,16):document.addEventListener("DOMContentLoaded",r.highlightAll))),n.Prism}();e.exports&&(e.exports=r),void 0!==t&&(t.Prism=r)}).call(this,n(27))},function(e,t,n){"use strict";function r(e){e.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},e.languages.markup.tag.inside["attr-value"].inside.entity=e.languages.markup.entity,e.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.value.replace(/&/,"&"))}),e.languages.xml=e.languages.markup,e.languages.html=e.languages.markup,e.languages.mathml=e.languages.markup,e.languages.svg=e.languages.markup}e.exports=r,r.displayName="markup",r.aliases=["xml","html","mathml","svg"]},function(e,t,n){"use strict";function r(e){e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup&&(e.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:e.languages.css,alias:"language-css",greedy:!0}}),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:e.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:e.languages.css}},alias:"language-css"}},e.languages.markup.tag))}e.exports=r,r.displayName="css",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="clike",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.javascript=e.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),e.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),e.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}}}),e.languages.javascript["template-string"].inside.interpolation.inside.rest=e.languages.javascript,e.languages.markup&&e.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:e.languages.javascript,alias:"language-javascript",greedy:!0}}),e.languages.js=e.languages.javascript}e.exports=r,r.displayName="javascript",r.aliases=["js"]},function(e,t,n){"use strict";function r(e){e.languages.abap={comment:/^\*.*/m,string:/(`|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,"string-template":{pattern:/([|}])(?:\\.|[^\\|{\r\n])*(?=[|{])/,lookbehind:!0,alias:"string"},"eol-comment":{pattern:/(^|\s)".*/m,lookbehind:!0,alias:"comment"},keyword:{pattern:/(\s|\.|^)(?:SCIENTIFIC_WITH_LEADING_ZERO|SCALE_PRESERVING_SCIENTIFIC|RMC_COMMUNICATION_FAILURE|END-ENHANCEMENT-SECTION|MULTIPLY-CORRESPONDING|SUBTRACT-CORRESPONDING|VERIFICATION-MESSAGE|DIVIDE-CORRESPONDING|ENHANCEMENT-SECTION|CURRENCY_CONVERSION|RMC_SYSTEM_FAILURE|START-OF-SELECTION|MOVE-CORRESPONDING|RMC_INVALID_STATUS|CUSTOMER-FUNCTION|END-OF-DEFINITION|ENHANCEMENT-POINT|SYSTEM-EXCEPTIONS|ADD-CORRESPONDING|SCALE_PRESERVING|SELECTION-SCREEN|CURSOR-SELECTION|END-OF-SELECTION|LOAD-OF-PROGRAM|SCROLL-BOUNDARY|SELECTION-TABLE|EXCEPTION-TABLE|IMPLEMENTATIONS|PARAMETER-TABLE|RIGHT-JUSTIFIED|UNIT_CONVERSION|AUTHORITY-CHECK|LIST-PROCESSING|SIGN_AS_POSTFIX|COL_BACKGROUND|IMPLEMENTATION|INTERFACE-POOL|TRANSFORMATION|IDENTIFICATION|ENDENHANCEMENT|LINE-SELECTION|INITIALIZATION|LEFT-JUSTIFIED|SELECT-OPTIONS|SELECTION-SETS|COMMUNICATION|CORRESPONDING|DECIMAL_SHIFT|PRINT-CONTROL|VALUE-REQUEST|CHAIN-REQUEST|FUNCTION-POOL|FIELD-SYMBOLS|FUNCTIONALITY|INVERTED-DATE|SELECTION-SET|CLASS-METHODS|OUTPUT-LENGTH|CLASS-CODING|COL_NEGATIVE|ERRORMESSAGE|FIELD-GROUPS|HELP-REQUEST|NO-EXTENSION|NO-TOPOFPAGE|REDEFINITION|DISPLAY-MODE|ENDINTERFACE|EXIT-COMMAND|FIELD-SYMBOL|NO-SCROLLING|SHORTDUMP-ID|ACCESSPOLICY|CLASS-EVENTS|COL_POSITIVE|DECLARATIONS|ENHANCEMENTS|FILTER-TABLE|SWITCHSTATES|SYNTAX-CHECK|TRANSPORTING|ASYNCHRONOUS|SYNTAX-TRACE|TOKENIZATION|USER-COMMAND|WITH-HEADING|ABAP-SOURCE|BREAK-POINT|CHAIN-INPUT|COMPRESSION|FIXED-POINT|NEW-SECTION|NON-UNICODE|OCCURRENCES|RESPONSIBLE|SYSTEM-CALL|TRACE-TABLE|ABBREVIATED|CHAR-TO-HEX|END-OF-FILE|ENDFUNCTION|ENVIRONMENT|ASSOCIATION|COL_HEADING|EDITOR-CALL|END-OF-PAGE|ENGINEERING|IMPLEMENTED|INTENSIFIED|RADIOBUTTON|SYSTEM-EXIT|TOP-OF-PAGE|TRANSACTION|APPLICATION|CONCATENATE|DESTINATION|ENHANCEMENT|IMMEDIATELY|NO-GROUPING|PRECOMPILED|REPLACEMENT|TITLE-LINES|ACTIVATION|BYTE-ORDER|CLASS-POOL|CONNECTION|CONVERSION|DEFINITION|DEPARTMENT|EXPIRATION|INHERITING|MESSAGE-ID|NO-HEADING|PERFORMING|QUEUE-ONLY|RIGHTSPACE|SCIENTIFIC|STATUSINFO|STRUCTURES|SYNCPOINTS|WITH-TITLE|ATTRIBUTES|BOUNDARIES|CLASS-DATA|COL_NORMAL|DD\/MM\/YYYY|DESCENDING|INTERFACES|LINE-COUNT|MM\/DD\/YYYY|NON-UNIQUE|PRESERVING|SELECTIONS|STATEMENTS|SUBROUTINE|TRUNCATION|TYPE-POOLS|ARITHMETIC|BACKGROUND|ENDPROVIDE|EXCEPTIONS|IDENTIFIER|INDEX-LINE|OBLIGATORY|PARAMETERS|PERCENTAGE|PUSHBUTTON|RESOLUTION|COMPONENTS|DEALLOCATE|DISCONNECT|DUPLICATES|FIRST-LINE|HEAD-LINES|NO-DISPLAY|OCCURRENCE|RESPECTING|RETURNCODE|SUBMATCHES|TRACE-FILE|ASCENDING|BYPASSING|ENDMODULE|EXCEPTION|EXCLUDING|EXPORTING|INCREMENT|MATCHCODE|PARAMETER|PARTIALLY|PREFERRED|REFERENCE|REPLACING|RETURNING|SELECTION|SEPARATED|SPECIFIED|STATEMENT|TIMESTAMP|TYPE-POOL|ACCEPTING|APPENDAGE|ASSIGNING|COL_GROUP|COMPARING|CONSTANTS|DANGEROUS|IMPORTING|INSTANCES|LEFTSPACE|LOG-POINT|QUICKINFO|READ-ONLY|SCROLLING|SQLSCRIPT|STEP-LOOP|TOP-LINES|TRANSLATE|APPENDING|AUTHORITY|CHARACTER|COMPONENT|CONDITION|DIRECTORY|DUPLICATE|MESSAGING|RECEIVING|SUBSCREEN|ACCORDING|COL_TOTAL|END-LINES|ENDMETHOD|ENDSELECT|EXPANDING|EXTENSION|INCLUDING|INFOTYPES|INTERFACE|INTERVALS|LINE-SIZE|PF-STATUS|PROCEDURE|PROTECTED|REQUESTED|RESUMABLE|RIGHTPLUS|SAP-SPOOL|SECONDARY|STRUCTURE|SUBSTRING|TABLEVIEW|NUMOFCHAR|ADJACENT|ANALYSIS|ASSIGNED|BACKWARD|CHANNELS|CHECKBOX|CONTINUE|CRITICAL|DATAINFO|DD\/MM\/YY|DURATION|ENCODING|ENDCLASS|FUNCTION|LEFTPLUS|LINEFEED|MM\/DD\/YY|OVERFLOW|RECEIVED|SKIPPING|SORTABLE|STANDARD|SUBTRACT|SUPPRESS|TABSTRIP|TITLEBAR|TRUNCATE|UNASSIGN|WHENEVER|ANALYZER|COALESCE|COMMENTS|CONDENSE|DECIMALS|DEFERRED|ENDWHILE|EXPLICIT|KEYWORDS|MESSAGES|POSITION|PRIORITY|RECEIVER|RENAMING|TIMEZONE|TRAILING|ALLOCATE|CENTERED|CIRCULAR|CONTROLS|CURRENCY|DELETING|DESCRIBE|DISTANCE|ENDCATCH|EXPONENT|EXTENDED|GENERATE|IGNORING|INCLUDES|INTERNAL|MAJOR-ID|MODIFIER|NEW-LINE|OPTIONAL|PROPERTY|ROLLBACK|STARTING|SUPPLIED|ABSTRACT|CHANGING|CONTEXTS|CREATING|CUSTOMER|DATABASE|DAYLIGHT|DEFINING|DISTINCT|DIVISION|ENABLING|ENDCHAIN|ESCAPING|HARMLESS|IMPLICIT|INACTIVE|LANGUAGE|MINOR-ID|MULTIPLY|NEW-PAGE|NO-TITLE|POS_HIGH|SEPARATE|TEXTPOOL|TRANSFER|SELECTOR|DBMAXLEN|ITERATOR|SELECTOR|ARCHIVE|BIT-XOR|BYTE-CO|COLLECT|COMMENT|CURRENT|DEFAULT|DISPLAY|ENDFORM|EXTRACT|LEADING|LISTBOX|LOCATOR|MEMBERS|METHODS|NESTING|POS_LOW|PROCESS|PROVIDE|RAISING|RESERVE|SECONDS|SUMMARY|VISIBLE|BETWEEN|BIT-AND|BYTE-CS|CLEANUP|COMPUTE|CONTROL|CONVERT|DATASET|ENDCASE|FORWARD|HEADERS|HOTSPOT|INCLUDE|INVERSE|KEEPING|NO-ZERO|OBJECTS|OVERLAY|PADDING|PATTERN|PROGRAM|REFRESH|SECTION|SUMMING|TESTING|VERSION|WINDOWS|WITHOUT|BIT-NOT|BYTE-CA|BYTE-NA|CASTING|CONTEXT|COUNTRY|DYNAMIC|ENABLED|ENDLOOP|EXECUTE|FRIENDS|HANDLER|HEADING|INITIAL|\*-INPUT|LOGFILE|MAXIMUM|MINIMUM|NO-GAPS|NO-SIGN|PRAGMAS|PRIMARY|PRIVATE|REDUCED|REPLACE|REQUEST|RESULTS|UNICODE|WARNING|ALIASES|BYTE-CN|BYTE-NS|CALLING|COL_KEY|COLUMNS|CONNECT|ENDEXEC|ENTRIES|EXCLUDE|FILTERS|FURTHER|HELP-ID|LOGICAL|MAPPING|MESSAGE|NAMETAB|OPTIONS|PACKAGE|PERFORM|RECEIVE|STATICS|VARYING|BINDING|CHARLEN|GREATER|XSTRLEN|ACCEPT|APPEND|DETAIL|ELSEIF|ENDING|ENDTRY|FORMAT|FRAMES|GIVING|HASHED|HEADER|IMPORT|INSERT|MARGIN|MODULE|NATIVE|OBJECT|OFFSET|REMOTE|RESUME|SAVING|SIMPLE|SUBMIT|TABBED|TOKENS|UNIQUE|UNPACK|UPDATE|WINDOW|YELLOW|ACTUAL|ASPECT|CENTER|CURSOR|DELETE|DIALOG|DIVIDE|DURING|ERRORS|EVENTS|EXTEND|FILTER|HANDLE|HAVING|IGNORE|LITTLE|MEMORY|NO-GAP|OCCURS|OPTION|PERSON|PLACES|PUBLIC|REDUCE|REPORT|RESULT|SINGLE|SORTED|SWITCH|SYNTAX|TARGET|VALUES|WRITER|ASSERT|BLOCKS|BOUNDS|BUFFER|CHANGE|COLUMN|COMMIT|CONCAT|COPIES|CREATE|DDMMYY|DEFINE|ENDIAN|ESCAPE|EXPAND|KERNEL|LAYOUT|LEGACY|LEVELS|MMDDYY|NUMBER|OUTPUT|RANGES|READER|RETURN|SCREEN|SEARCH|SELECT|SHARED|SOURCE|STABLE|STATIC|SUBKEY|SUFFIX|TABLES|UNWIND|YYMMDD|ASSIGN|BACKUP|BEFORE|BINARY|BIT-OR|BLANKS|CLIENT|CODING|COMMON|DEMAND|DYNPRO|EXCEPT|EXISTS|EXPORT|FIELDS|GLOBAL|GROUPS|LENGTH|LOCALE|MEDIUM|METHOD|MODIFY|NESTED|OTHERS|REJECT|SCROLL|SUPPLY|SYMBOL|ENDFOR|STRLEN|ALIGN|BEGIN|BOUND|ENDAT|ENTRY|EVENT|FINAL|FLUSH|GRANT|INNER|SHORT|USING|WRITE|AFTER|BLACK|BLOCK|CLOCK|COLOR|COUNT|DUMMY|EMPTY|ENDDO|ENDON|GREEN|INDEX|INOUT|LEAVE|LEVEL|LINES|MODIF|ORDER|OUTER|RANGE|RESET|RETRY|RIGHT|SMART|SPLIT|STYLE|TABLE|THROW|UNDER|UNTIL|UPPER|UTF-8|WHERE|ALIAS|BLANK|CLEAR|CLOSE|EXACT|FETCH|FIRST|FOUND|GROUP|LLANG|LOCAL|OTHER|REGEX|SPOOL|TITLE|TYPES|VALID|WHILE|ALPHA|BOXED|CATCH|CHAIN|CHECK|CLASS|COVER|ENDIF|EQUIV|FIELD|FLOOR|FRAME|INPUT|LOWER|MATCH|NODES|PAGES|PRINT|RAISE|ROUND|SHIFT|SPACE|SPOTS|STAMP|STATE|TASKS|TIMES|TRMAC|ULINE|UNION|VALUE|WIDTH|EQUAL|LOG10|TRUNC|BLOB|CASE|CEIL|CLOB|COND|EXIT|FILE|GAPS|HOLD|INCL|INTO|KEEP|KEYS|LAST|LINE|LONG|LPAD|MAIL|MODE|OPEN|PINK|READ|ROWS|TEST|THEN|ZERO|AREA|BACK|BADI|BYTE|CAST|EDIT|EXEC|FAIL|FIND|FKEQ|FONT|FREE|GKEQ|HIDE|INIT|ITNO|LATE|LOOP|MAIN|MARK|MOVE|NEXT|NULL|RISK|ROLE|UNIT|WAIT|ZONE|BASE|CALL|CODE|DATA|DATE|FKGE|GKGE|HIGH|KIND|LEFT|LIST|MASK|MESH|NAME|NODE|PACK|PAGE|POOL|SEND|SIGN|SIZE|SOME|STOP|TASK|TEXT|TIME|USER|VARY|WITH|WORD|BLUE|CONV|COPY|DEEP|ELSE|FORM|FROM|HINT|ICON|JOIN|LIKE|LOAD|ONLY|PART|SCAN|SKIP|SORT|TYPE|UNIX|VIEW|WHEN|WORK|ACOS|ASIN|ATAN|COSH|EACH|FRAC|LESS|RTTI|SINH|SQRT|TANH|AVG|BIT|DIV|ISO|LET|OUT|PAD|SQL|ALL|CI_|CPI|END|LOB|LPI|MAX|MIN|NEW|OLE|RUN|SET|\?TO|YES|ABS|ADD|AND|BIG|FOR|HDB|JOB|LOW|NOT|SAP|TRY|VIA|XML|ANY|GET|IDS|KEY|MOD|OFF|PUT|RAW|RED|REF|SUM|TAB|XSD|CNT|COS|EXP|LOG|SIN|TAN|XOR|AT|CO|CP|DO|GT|ID|IF|NS|OR|BT|CA|CS|GE|NA|NB|EQ|IN|LT|NE|NO|OF|ON|PF|TO|AS|BY|CN|IS|LE|NP|UP|E|I|M|O|Z|C|X)\b/i,lookbehind:!0},number:/\b\d+\b/,operator:{pattern:/(\s)(?:\*\*?|<[=>]?|>=?|\?=|[-+\/=])(?=\s)/,lookbehind:!0},"string-operator":{pattern:/(\s)&&?(?=\s)/,lookbehind:!0,alias:"keyword"},"token-operator":[{pattern:/(\w)(?:->?|=>|[~|{}])(?=\w)/,lookbehind:!0,alias:"punctuation"},{pattern:/[|{}]/,alias:"punctuation"}],punctuation:/[,.:()]/}}e.exports=r,r.displayName="abap",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.actionscript=e.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),e.languages.actionscript["class-name"].alias="function",e.languages.markup&&e.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:{rest:e.languages.markup}}})}e.exports=r,r.displayName="actionscript",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.ada={comment:/--.*/,string:/"(?:""|[^"\r\f\n])*"/i,number:[{pattern:/\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i},{pattern:/\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i}],"attr-name":/\b'\w+/i,keyword:/\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|new|return|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|not|null|of|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i,boolean:/\b(?:true|false)\b/i,operator:/<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/,punctuation:/\.\.?|[,;():]/,char:/'.'/,variable:/\b[a-z](?:[_a-z\d])*\b/i}}e.exports=r,r.displayName="ada",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/^(\s*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|AddAlt|AddAltByEncoding|AddAltByType|AddCharset|AddDefaultCharset|AddDescription|AddEncoding|AddHandler|AddIcon|AddIconByEncoding|AddIconByType|AddInputFilter|AddLanguage|AddModuleInfo|AddOutputFilter|AddOutputFilterByType|AddType|Alias|AliasMatch|Allow|AllowCONNECT|AllowEncodedSlashes|AllowMethods|AllowOverride|AllowOverrideList|Anonymous|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail|AsyncRequestWorkerFactor|AuthBasicAuthoritative|AuthBasicFake|AuthBasicProvider|AuthBasicUseDigestAlgorithm|AuthDBDUserPWQuery|AuthDBDUserRealmQuery|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile|AuthDigestAlgorithm|AuthDigestDomain|AuthDigestNonceLifetime|AuthDigestProvider|AuthDigestQop|AuthDigestShmemSize|AuthFormAuthoritative|AuthFormBody|AuthFormDisableNoStore|AuthFormFakeBasicAuth|AuthFormLocation|AuthFormLoginRequiredLocation|AuthFormLoginSuccessLocation|AuthFormLogoutLocation|AuthFormMethod|AuthFormMimetype|AuthFormPassword|AuthFormProvider|AuthFormSitePassphrase|AuthFormSize|AuthFormUsername|AuthGroupFile|AuthLDAPAuthorizePrefix|AuthLDAPBindAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareAsUser|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPInitialBindAsUser|AuthLDAPInitialBindPattern|AuthLDAPMaxSubGroupDepth|AuthLDAPRemoteUserAttribute|AuthLDAPRemoteUserIsDN|AuthLDAPSearchAsUser|AuthLDAPSubGroupAttribute|AuthLDAPSubGroupClass|AuthLDAPUrl|AuthMerging|AuthName|AuthnCacheContext|AuthnCacheEnable|AuthnCacheProvideFor|AuthnCacheSOCache|AuthnCacheTimeout|AuthnzFcgiCheckAuthnProvider|AuthnzFcgiDefineProvider|AuthType|AuthUserFile|AuthzDBDLoginToReferer|AuthzDBDQuery|AuthzDBDRedirectQuery|AuthzDBMType|AuthzSendForbiddenOnFailure|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|CacheDefaultExpire|CacheDetailHeader|CacheDirLength|CacheDirLevels|CacheDisable|CacheEnable|CacheFile|CacheHeader|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheIgnoreQueryString|CacheIgnoreURLSessionIdentifiers|CacheKeyBaseURL|CacheLastModifiedFactor|CacheLock|CacheLockMaxAge|CacheLockPath|CacheMaxExpire|CacheMaxFileSize|CacheMinExpire|CacheMinFileSize|CacheNegotiatedDocs|CacheQuickHandler|CacheReadSize|CacheReadTime|CacheRoot|CacheSocache|CacheSocacheMaxSize|CacheSocacheMaxTime|CacheSocacheMinTime|CacheSocacheReadSize|CacheSocacheReadTime|CacheStaleOnError|CacheStoreExpired|CacheStoreNoStore|CacheStorePrivate|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateInflateLimitRequestBody|DeflateInflateRatioBurst|DeflateInflateRatioLimit|DeflateMemLevel|DeflateWindowSize|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|HeartbeatAddress|HeartbeatListen|HeartbeatMaxServers|HeartbeatStorage|HeartbeatStorage|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|IndexHeadInsert|IndexIgnore|IndexIgnoreReset|IndexOptions|IndexOrderDefault|IndexStyleSheet|InputSed|ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionPoolTTL|LDAPConnectionTimeout|LDAPLibraryDebug|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPReferralHopLimit|LDAPReferrals|LDAPRetries|LDAPRetryDelay|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTimeout|LDAPTrustedClientCert|LDAPTrustedGlobalCert|LDAPTrustedMode|LDAPVerifyServerCert|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|LuaHookAccessChecker|LuaHookAuthChecker|LuaHookCheckUserID|LuaHookFixups|LuaHookInsertFilter|LuaHookLog|LuaHookMapToStorage|LuaHookTranslateName|LuaHookTypeChecker|LuaInherit|LuaInputFilter|LuaMapHandler|LuaOutputFilter|LuaPackageCPath|LuaPackagePath|LuaQuickHandler|LuaRoot|LuaScope|MaxConnectionsPerChild|MaxKeepAliveRequests|MaxMemFree|MaxRangeOverlaps|MaxRangeReversals|MaxRanges|MaxRequestWorkers|MaxSpareServers|MaxSpareThreads|MaxThreads|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|ProxyAddHeaders|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyExpressDBMFile|ProxyExpressDBMType|ProxyExpressEnable|ProxyFtpDirCharset|ProxyFtpEscapeWildcards|ProxyFtpListOnWildcard|ProxyHTMLBufSize|ProxyHTMLCharsetOut|ProxyHTMLDocType|ProxyHTMLEnable|ProxyHTMLEvents|ProxyHTMLExtended|ProxyHTMLFixups|ProxyHTMLInterp|ProxyHTMLLinks|ProxyHTMLMeta|ProxyHTMLStripComments|ProxyHTMLURLMap|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassInherit|ProxyPassInterpolateEnv|ProxyPassMatch|ProxyPassReverse|ProxyPassReverseCookieDomain|ProxyPassReverseCookiePath|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxySCGIInternalRedirect|ProxySCGISendfile|ProxySet|ProxySourceAddress|ProxyStatus|ProxyTimeout|ProxyVia|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIPHeader|RemoteIPInternalProxy|RemoteIPInternalProxyList|RemoteIPProxiesHeader|RemoteIPTrustedProxy|RemoteIPTrustedProxyList|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|RewriteBase|RewriteCond|RewriteEngine|RewriteMap|RewriteOptions|RewriteRule|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script|ScriptAlias|ScriptAliasMatch|ScriptInterpreterSource|ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock|SecureListen|SeeRequestTail|SendBufferSize|ServerAdmin|ServerAlias|ServerLimit|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|Session|SessionCookieName|SessionCookieName2|SessionCookieRemove|SessionCryptoCipher|SessionCryptoDriver|SessionCryptoPassphrase|SessionCryptoPassphraseFile|SessionDBDCookieName|SessionDBDCookieName2|SessionDBDCookieRemove|SessionDBDDeleteLabel|SessionDBDInsertLabel|SessionDBDPerUser|SessionDBDSelectLabel|SessionDBDUpdateLabel|SessionEnv|SessionExclude|SessionHeader|SessionInclude|SessionMaxAge|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSLCACertificateFile|SSLCACertificatePath|SSLCADNRequestFile|SSLCADNRequestPath|SSLCARevocationCheck|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLCompression|SSLCryptoDevice|SSLEngine|SSLFIPS|SSLHonorCipherOrder|SSLInsecureRenegotiation|SSLOCSPDefaultResponder|SSLOCSPEnable|SSLOCSPOverrideResponder|SSLOCSPResponderTimeout|SSLOCSPResponseMaxAge|SSLOCSPResponseTimeSkew|SSLOCSPUseRequestNonce|SSLOpenSSLConfCmd|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationCheck|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCheckPeerCN|SSLProxyCheckPeerExpire|SSLProxyCheckPeerName|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateChainFile|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRenegBufferSize|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLSessionTicketKeyFile|SSLSRPUnknownUserSeed|SSLSRPVerifierFile|SSLStaplingCache|SSLStaplingErrorCacheTimeout|SSLStaplingFakeTryLater|SSLStaplingForceURL|SSLStaplingResponderTimeout|SSLStaplingResponseMaxAge|SSLStaplingResponseTimeSkew|SSLStaplingReturnResponderErrors|SSLStaplingStandardCacheTimeout|SSLStrictSNIVHostCheck|SSLUserName|SSLUseStapling|SSLVerifyClient|SSLVerifyDepth|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:"property"},"directive-block":{pattern:/<\/?\b(?:AuthnProviderAlias|AuthzProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|RequireAll|RequireAny|RequireNone|VirtualHost)\b *.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:"tag"},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:"attr-value"},punctuation:/>/},alias:"tag"},"directive-flags":{pattern:/\[(?:\w,?)+\]/,alias:"keyword"},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/}}e.exports=r,r.displayName="apacheconf",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.apl={comment:/(?:⍝|#[! ]).*$/m,string:{pattern:/'(?:[^'\r\n]|'')*'/,greedy:!0},number:/¯?(?:\d*\.?\d+(?:e[+¯]?\d+)?|¯|∞)(?:j¯?(?:\d*\.?\d+(?:e[+¯]?\d+)?|¯|∞))?/i,statement:/:[A-Z][a-z][A-Za-z]*\b/,"system-function":{pattern:/⎕[A-Z]+/i,alias:"function"},constant:/[⍬⌾#⎕⍞]/,function:/[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/,"monadic-operator":{pattern:/[\\\/⌿⍀¨⍨⌶&∥]/,alias:"operator"},"dyadic-operator":{pattern:/[.⍣⍠⍤∘⌸@⌺]/,alias:"operator"},assignment:{pattern:/←/,alias:"keyword"},punctuation:/[\[;\]()◇⋄]/,dfn:{pattern:/[{}⍺⍵⍶⍹∇⍫:]/,alias:"builtin"}}}e.exports=r,r.displayName="apl",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.applescript={comment:[/\(\*(?:\(\*[\s\S]*?\*\)|[\s\S])*?\*\)/,/--.+/,/#.+/],string:/"(?:\\.|[^"\\\r\n])*"/,number:/(?:\b\d+\.?\d*|\B\.\d+)(?:e-?\d+)?\b/i,operator:[/[&=≠≤≥*+\-\/÷^]|[<>]=?/,/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,class:{pattern:/\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,alias:"builtin"},punctuation:/[{}():,¬«»《》]/}}e.exports=r,r.displayName="applescript",r.aliases=[]},function(e,t,n){"use strict";var r=n(96);function o(e){e.register(r),e.languages.arduino=e.languages.extend("cpp",{keyword:/\b(?:setup|if|else|while|do|for|return|in|instanceof|default|function|loop|goto|switch|case|new|try|throw|catch|finally|null|break|continue|boolean|bool|void|byte|word|string|String|array|int|long|integer|double)\b/,builtin:/\b(?:KeyboardController|MouseController|SoftwareSerial|EthernetServer|EthernetClient|LiquidCrystal|LiquidCrystal_I2C|RobotControl|GSMVoiceCall|EthernetUDP|EsploraTFT|HttpClient|RobotMotor|WiFiClient|GSMScanner|FileSystem|Scheduler|GSMServer|YunClient|YunServer|IPAddress|GSMClient|GSMModem|Keyboard|Ethernet|Console|GSMBand|Esplora|Stepper|Process|WiFiUDP|GSM_SMS|Mailbox|USBHost|Firmata|PImage|Client|Server|GSMPIN|FileIO|Bridge|Serial|EEPROM|Stream|Mouse|Audio|Servo|File|Task|GPRS|WiFi|Wire|TFT|GSM|SPI|SD|runShellCommandAsynchronously|analogWriteResolution|retrieveCallingNumber|printFirmwareVersion|analogReadResolution|sendDigitalPortPair|noListenOnLocalhost|readJoystickButton|setFirmwareVersion|readJoystickSwitch|scrollDisplayRight|getVoiceCallStatus|scrollDisplayLeft|writeMicroseconds|delayMicroseconds|beginTransmission|getSignalStrength|runAsynchronously|getAsynchronously|listenOnLocalhost|getCurrentCarrier|readAccelerometer|messageAvailable|sendDigitalPorts|lineFollowConfig|countryNameWrite|runShellCommand|readStringUntil|rewindDirectory|readTemperature|setClockDivider|readLightSensor|endTransmission|analogReference|detachInterrupt|countryNameRead|attachInterrupt|encryptionType|readBytesUntil|robotNameWrite|readMicrophone|robotNameRead|cityNameWrite|userNameWrite|readJoystickY|readJoystickX|mouseReleased|openNextFile|scanNetworks|noInterrupts|digitalWrite|beginSpeaker|mousePressed|isActionDone|mouseDragged|displayLogos|noAutoscroll|addParameter|remoteNumber|getModifiers|keyboardRead|userNameRead|waitContinue|processInput|parseCommand|printVersion|readNetworks|writeMessage|blinkVersion|cityNameRead|readMessage|setDataMode|parsePacket|isListening|setBitOrder|beginPacket|isDirectory|motorsWrite|drawCompass|digitalRead|clearScreen|serialEvent|rightToLeft|setTextSize|leftToRight|requestFrom|keyReleased|compassRead|analogWrite|interrupts|WiFiServer|disconnect|playMelody|parseFloat|autoscroll|getPINUsed|setPINUsed|setTimeout|sendAnalog|readSlider|analogRead|beginWrite|createChar|motorsStop|keyPressed|tempoWrite|readButton|subnetMask|debugPrint|macAddress|writeGreen|randomSeed|attachGPRS|readString|sendString|remotePort|releaseAll|mouseMoved|background|getXChange|getYChange|answerCall|getResult|voiceCall|endPacket|constrain|getSocket|writeJSON|getButton|available|connected|findUntil|readBytes|exitValue|readGreen|writeBlue|startLoop|IPAddress|isPressed|sendSysex|pauseMode|gatewayIP|setCursor|getOemKey|tuneWrite|noDisplay|loadImage|switchPIN|onRequest|onReceive|changePIN|playFile|noBuffer|parseInt|overflow|checkPIN|knobRead|beginTFT|bitClear|updateIR|bitWrite|position|writeRGB|highByte|writeRed|setSpeed|readBlue|noStroke|remoteIP|transfer|shutdown|hangCall|beginSMS|endWrite|attached|maintain|noCursor|checkReg|checkPUK|shiftOut|isValid|shiftIn|pulseIn|connect|println|localIP|pinMode|getIMEI|display|noBlink|process|getBand|running|beginSD|drawBMP|lowByte|setBand|release|bitRead|prepare|pointTo|readRed|setMode|noFill|remove|listen|stroke|detach|attach|noTone|exists|buffer|height|bitSet|circle|config|cursor|random|IRread|setDNS|endSMS|getKey|micros|millis|begin|print|write|ready|flush|width|isPIN|blink|clear|press|mkdir|rmdir|close|point|yield|image|BSSID|click|delay|read|text|move|peek|beep|rect|line|open|seek|fill|size|turn|stop|home|find|step|tone|sqrt|RSSI|SSID|end|bit|tan|cos|sin|pow|map|abs|max|min|get|run|put)\b/,constant:/\b(?:DIGITAL_MESSAGE|FIRMATA_STRING|ANALOG_MESSAGE|REPORT_DIGITAL|REPORT_ANALOG|INPUT_PULLUP|SET_PIN_MODE|INTERNAL2V56|SYSTEM_RESET|LED_BUILTIN|INTERNAL1V1|SYSEX_START|INTERNAL|EXTERNAL|DEFAULT|OUTPUT|INPUT|HIGH|LOW)\b/})}e.exports=o,o.displayName="arduino",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.arff={comment:/%.*/,string:{pattern:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/@(?:attribute|data|end|relation)\b/i,number:/\b\d+(?:\.\d+)?\b/,punctuation:/[{},]/}}e.exports=r,r.displayName="arff",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t={pattern:/(^[ \t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\]\\]|\\.)*\]|[^\]\\]|\\.)*\]/m,lookbehind:!0,inside:{quoted:{pattern:/([$`])(?:(?!\1)[^\\]|\\.)*\1/,inside:{punctuation:/^[$`]|[$`]$/}},interpreted:{pattern:/'(?:[^'\\]|\\.)*'/,inside:{punctuation:/^'|'$/}},string:/"(?:[^"\\]|\\.)*"/,variable:/\w+(?==)/,punctuation:/^\[|\]$|,/,operator:/=/,"attr-value":/(?!^\s+$).+/}};e.languages.asciidoc={"comment-block":{pattern:/^(\/{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1/m,alias:"comment"},table:{pattern:/^\|={3,}(?:(?:\r?\n|\r).*)*?(?:\r?\n|\r)\|={3,}$/m,inside:{specifiers:{pattern:/(?!\|)(?:(?:(?:\d+(?:\.\d+)?|\.\d+)[+*])?(?:[<^>](?:\.[<^>])?|\.[<^>])?[a-z]*)(?=\|)/,alias:"attr-value"},punctuation:{pattern:/(^|[^\\])[|!]=*/,lookbehind:!0}}},"passthrough-block":{pattern:/^(\+{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^\++|\++$/}},"literal-block":{pattern:/^(-{4,}|\.{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^(?:-+|\.+)|(?:-+|\.+)$/}},"other-block":{pattern:/^(--|\*{4,}|_{4,}|={4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^(?:-+|\*+|_+|=+)|(?:-+|\*+|_+|=+)$/}},"list-punctuation":{pattern:/(^[ \t]*)(?:-|\*{1,5}|\.{1,5}|(?:[a-z]|\d+)\.|[xvi]+\))(?= )/im,lookbehind:!0,alias:"punctuation"},"list-label":{pattern:/(^[ \t]*)[a-z\d].+(?::{2,4}|;;)(?=\s)/im,lookbehind:!0,alias:"symbol"},"indented-block":{pattern:/((\r?\n|\r)\2)([ \t]+)\S.*(?:(?:\r?\n|\r)\3.+)*(?=\2{2}|$)/,lookbehind:!0},comment:/^\/\/.*/m,title:{pattern:/^.+(?:\r?\n|\r)(?:={3,}|-{3,}|~{3,}|\^{3,}|\+{3,})$|^={1,5} +.+|^\.(?![\s.]).*/m,alias:"important",inside:{punctuation:/^(?:\.|=+)|(?:=+|-+|~+|\^+|\++)$/}},"attribute-entry":{pattern:/^:[^:\r\n]+:(?: .*?(?: \+(?:\r?\n|\r).*?)*)?$/m,alias:"tag"},attributes:t,hr:{pattern:/^'{3,}$/m,alias:"punctuation"},"page-break":{pattern:/^<{3,}$/m,alias:"punctuation"},admonition:{pattern:/^(?:TIP|NOTE|IMPORTANT|WARNING|CAUTION):/m,alias:"keyword"},callout:[{pattern:/(^[ \t]*)/m,lookbehind:!0,alias:"symbol"},{pattern:/<\d+>/,alias:"symbol"}],macro:{pattern:/\b[a-z\d][a-z\d-]*::?(?:(?:\S+)??\[(?:[^\]\\"]|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:{function:/^[a-z\d-]+(?=:)/,punctuation:/^::?/,attributes:{pattern:/(?:\[(?:[^\]\\"]|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:t.inside}}},inline:{pattern:/(^|[^\\])(?:(?:\B\[(?:[^\]\\"]|(["'])(?:(?!\2)[^\\]|\\.)*\2|\\.)*\])?(?:\b_(?!\s)(?: _|[^_\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: _|[^_\\\r\n]|\\.)+)*_\b|\B``(?!\s).+?(?:(?:\r?\n|\r).+?)*''\B|\B`(?!\s)(?: ['`]|.)+?(?:(?:\r?\n|\r)(?: ['`]|.)+?)*['`]\B|\B(['*+#])(?!\s)(?: \3|(?!\3)[^\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: \3|(?!\3)[^\\\r\n]|\\.)+)*\3\B)|(?:\[(?:[^\]\\"]|(["'])(?:(?!\4)[^\\]|\\.)*\4|\\.)*\])?(?:(__|\*\*|\+\+\+?|##|\$\$|[~^]).+?(?:(?:\r?\n|\r).+?)*\5|\{[^}\r\n]+\}|\[\[\[?.+?(?:(?:\r?\n|\r).+?)*\]?\]\]|<<.+?(?:(?:\r?\n|\r).+?)*>>|\(\(\(?.+?(?:(?:\r?\n|\r).+?)*\)?\)\)))/m,lookbehind:!0,inside:{attributes:t,url:{pattern:/^(?:\[\[\[?.+?\]?\]\]|<<.+?>>)$/,inside:{punctuation:/^(?:\[\[\[?|<<)|(?:\]\]\]?|>>)$/}},"attribute-ref":{pattern:/^\{.+\}$/,inside:{variable:{pattern:/(^\{)[a-z\d,+_-]+/,lookbehind:!0},operator:/^[=?!#%@$]|!(?=[:}])/,punctuation:/^\{|\}$|::?/}},italic:{pattern:/^(['_])[\s\S]+\1$/,inside:{punctuation:/^(?:''?|__?)|(?:''?|__?)$/}},bold:{pattern:/^\*[\s\S]+\*$/,inside:{punctuation:/^\*\*?|\*\*?$/}},punctuation:/^(?:``?|\+{1,3}|##?|\$\$|[~^]|\(\(\(?)|(?:''?|\+{1,3}|##?|\$\$|[~^`]|\)?\)\))$/}},replacement:{pattern:/\((?:C|TM|R)\)/,alias:"builtin"},entity:/&#?[\da-z]{1,8};/i,"line-continuation":{pattern:/(^| )\+$/m,lookbehind:!0,alias:"punctuation"}},t.inside.interpreted.inside.rest={macro:e.languages.asciidoc.macro,inline:e.languages.asciidoc.inline,replacement:e.languages.asciidoc.replacement,entity:e.languages.asciidoc.entity},e.languages.asciidoc["passthrough-block"].inside.rest={macro:e.languages.asciidoc.macro},e.languages.asciidoc["literal-block"].inside.rest={callout:e.languages.asciidoc.callout},e.languages.asciidoc.table.inside.rest={"comment-block":e.languages.asciidoc["comment-block"],"passthrough-block":e.languages.asciidoc["passthrough-block"],"literal-block":e.languages.asciidoc["literal-block"],"other-block":e.languages.asciidoc["other-block"],"list-punctuation":e.languages.asciidoc["list-punctuation"],"indented-block":e.languages.asciidoc["indented-block"],comment:e.languages.asciidoc.comment,title:e.languages.asciidoc.title,"attribute-entry":e.languages.asciidoc["attribute-entry"],attributes:e.languages.asciidoc.attributes,hr:e.languages.asciidoc.hr,"page-break":e.languages.asciidoc["page-break"],admonition:e.languages.asciidoc.admonition,"list-label":e.languages.asciidoc["list-label"],callout:e.languages.asciidoc.callout,macro:e.languages.asciidoc.macro,inline:e.languages.asciidoc.inline,replacement:e.languages.asciidoc.replacement,entity:e.languages.asciidoc.entity,"line-continuation":e.languages.asciidoc["line-continuation"]},e.languages.asciidoc["other-block"].inside.rest={table:e.languages.asciidoc.table,"list-punctuation":e.languages.asciidoc["list-punctuation"],"indented-block":e.languages.asciidoc["indented-block"],comment:e.languages.asciidoc.comment,"attribute-entry":e.languages.asciidoc["attribute-entry"],attributes:e.languages.asciidoc.attributes,hr:e.languages.asciidoc.hr,"page-break":e.languages.asciidoc["page-break"],admonition:e.languages.asciidoc.admonition,"list-label":e.languages.asciidoc["list-label"],macro:e.languages.asciidoc.macro,inline:e.languages.asciidoc.inline,replacement:e.languages.asciidoc.replacement,entity:e.languages.asciidoc.entity,"line-continuation":e.languages.asciidoc["line-continuation"]},e.languages.asciidoc.title.inside.rest={macro:e.languages.asciidoc.macro,inline:e.languages.asciidoc.inline,replacement:e.languages.asciidoc.replacement,entity:e.languages.asciidoc.entity},e.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.value.replace(/&/,"&"))})}(e)}e.exports=r,r.displayName="asciidoc",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.asm6502={comment:/;.*/,directive:{pattern:/\.\w+(?= )/,alias:"keyword"},string:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,opcode:{pattern:/\b(?:adc|and|asl|bcc|bcs|beq|bit|bmi|bne|bpl|brk|bvc|bvs|clc|cld|cli|clv|cmp|cpx|cpy|dec|dex|dey|eor|inc|inx|iny|jmp|jsr|lda|ldx|ldy|lsr|nop|ora|pha|php|pla|plp|rol|ror|rti|rts|sbc|sec|sed|sei|sta|stx|sty|tax|tay|tsx|txa|txs|tya|ADC|AND|ASL|BCC|BCS|BEQ|BIT|BMI|BNE|BPL|BRK|BVC|BVS|CLC|CLD|CLI|CLV|CMP|CPX|CPY|DEC|DEX|DEY|EOR|INC|INX|INY|JMP|JSR|LDA|LDX|LDY|LSR|NOP|ORA|PHA|PHP|PLA|PLP|ROL|ROR|RTI|RTS|SBC|SEC|SED|SEI|STA|STX|STY|TAX|TAY|TSX|TXA|TXS|TYA)\b/,alias:"property"},hexnumber:{pattern:/#?\$[\da-f]{2,4}/i,alias:"string"},binarynumber:{pattern:/#?%[01]+/,alias:"string"},decimalnumber:{pattern:/#?\d+/,alias:"string"},register:{pattern:/\b[xya]\b/i,alias:"variable"}}}e.exports=r,r.displayName="asm6502",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.aspnet=e.languages.extend("markup",{"page-directive tag":{pattern:/<%\s*@.*%>/i,inside:{"page-directive tag":/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,rest:e.languages.markup.tag.inside}},"directive tag":{pattern:/<%.*%>/i,inside:{"directive tag":/<%\s*?[$=%#:]{0,2}|%>/i,rest:e.languages.csharp}}}),e.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,e.languages.insertBefore("inside","punctuation",{"directive tag":e.languages.aspnet["directive tag"]},e.languages.aspnet.tag.inside["attr-value"]),e.languages.insertBefore("aspnet","comment",{"asp comment":/<%--[\s\S]*?--%>/}),e.languages.insertBefore("aspnet",e.languages.javascript?"script":"tag",{"asp script":{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:e.languages.csharp||{}}})}e.exports=r,r.displayName="aspnet",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.autohotkey={comment:{pattern:/(^[^";\n]*("[^"\n]*?"[^"\n]*?)*)(?:;.*$|^\s*\/\*[\s\S]*\n\*\/)/m,lookbehind:!0},string:/"(?:[^"\n\r]|"")*"/m,function:/[^(); \t,\n+*\-=?>:\\\/<&%\[\]]+?(?=\()/m,tag:/^[ \t]*[^\s:]+?(?=:(?:[^:]|$))/m,variable:/%\w+%/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/\?|\/\/?=?|:=|\|[=|]?|&[=&]?|\+[=+]?|-[=-]?|\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\b(?:AND|NOT|OR)\b/,punctuation:/[{}[\]():,]/,boolean:/\b(?:true|false)\b/,selector:/\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/i,constant:/\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\b/i,builtin:/\b(?:abs|acos|asc|asin|atan|ceil|chr|class|cos|dllcall|exp|fileexist|Fileopen|floor|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|IsObject|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|strsplit|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__New|__Call|__Get|__Set)\b/i,symbol:/\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\b/i,important:/#\b(?:AllowSameLineComments|ClipboardTimeout|CommentFlag|ErrorStdOut|EscapeChar|HotkeyInterval|HotkeyModifierTimeout|Hotstring|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Include|IncludeAgain|InstallKeybdHook|InstallMouseHook|KeyHistory|LTrim|MaxHotkeysPerInterval|MaxMem|MaxThreads|MaxThreadsBuffer|MaxThreadsPerHotkey|NoEnv|NoTrayIcon|Persistent|SingleInstance|UseHook|WinActivateForce)\b/i,keyword:/\b(?:Abort|AboveNormal|Add|ahk_class|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Region|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|TryAgain|Type|UnCheck|underline|Unicode|Unlock|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\b/i}}e.exports=r,r.displayName="autohotkey",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.autoit={comment:[/;.*/,{pattern:/(^\s*)#(?:comments-start|cs)[\s\S]*?^\s*#(?:comments-end|ce)/m,lookbehind:!0}],url:{pattern:/(^\s*#include\s+)(?:<[^\r\n>]+>|"[^\r\n"]+")/m,lookbehind:!0},string:{pattern:/(["'])(?:\1\1|(?!\1)[^\r\n])*\1/,greedy:!0,inside:{variable:/([%$@])\w+\1/}},directive:{pattern:/(^\s*)#\w+/m,lookbehind:!0,alias:"keyword"},function:/\b\w+(?=\()/,variable:/[$@]\w+/,keyword:/\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\b/i,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,boolean:/\b(?:True|False)\b/i,operator:/<[=>]?|[-+*\/=&>]=?|[?^]|\b(?:And|Or|Not)\b/i,punctuation:/[\[\]().,:]/}}e.exports=r,r.displayName="autoit",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t={variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[\w#?*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/,greedy:!0,inside:t}],variable:t.variable,function:{pattern:/(^|[\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/,lookbehind:!0},boolean:{pattern:/(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var n=t.variable[1].inside;n.string=e.languages.bash.string,n.function=e.languages.bash.function,n.keyword=e.languages.bash.keyword,n.boolean=e.languages.bash.boolean,n.operator=e.languages.bash.operator,n.punctuation=e.languages.bash.punctuation,e.languages.shell=e.languages.bash}(e)}e.exports=r,r.displayName="bash",r.aliases=["shell"]},function(e,t,n){"use strict";function r(e){!function(e){var t=/%%?[~:\w]+%?|!\S+!/,n={pattern:/\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im,alias:"attr-name",inside:{punctuation:/:/}},r=/"[^"]*"/,o=/(?:\b|-)\d+\b/;e.languages.batch={comment:[/^::.*/m,{pattern:/((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0}],label:{pattern:/^:.*/m,alias:"property"},command:[{pattern:/((?:^|[&(])[ \t]*)for(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* \S+ in \([^)]+\) do/im,lookbehind:!0,inside:{keyword:/^for\b|\b(?:in|do)\b/i,string:r,parameter:n,variable:t,number:o,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*)if(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:"[^"]*"|\S+))/im,lookbehind:!0,inside:{keyword:/^if\b|\b(?:not|cmdextversion|defined|errorlevel|exist)\b/i,string:r,parameter:n,variable:t,number:o,operator:/\^|==|\b(?:equ|neq|lss|leq|gtr|geq)\b/i}},{pattern:/((?:^|[&()])[ \t]*)else\b/im,lookbehind:!0,inside:{keyword:/^else\b/i}},{pattern:/((?:^|[&(])[ \t]*)set(?: ?\/[a-z](?:[ :](?:"[^"]*"|\S+))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^set\b/i,string:r,parameter:n,variable:[t,/\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/],number:o,operator:/[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*@?)\w+\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^\w+\b/i,string:r,parameter:n,label:{pattern:/(^\s*):\S+/m,lookbehind:!0,alias:"property"},variable:t,number:o,operator:/\^/}}],operator:/[&@]/,punctuation:/[()']/}}(e)}e.exports=r,r.displayName="batch",r.aliases=[]},function(e,t,n){"use strict";var r=n(34);function o(e){e.register(r),e.languages.bison=e.languages.extend("c",{}),e.languages.insertBefore("bison","comment",{bison:{pattern:/^[\s\S]*?%%[\s\S]*?%%/,inside:{c:{pattern:/%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/,inside:{delimiter:{pattern:/^%?\{|%?\}$/,alias:"punctuation"},"bison-variable":{pattern:/[$@](?:<[^\s>]+>)?[\w$]+/,alias:"variable",inside:{punctuation:/<|>/}},rest:e.languages.c}},comment:e.languages.c.comment,string:e.languages.c.string,property:/\S+(?=:)/,keyword:/%\w+/,number:{pattern:/(^|[^@])\b(?:0x[\da-f]+|\d+)/i,lookbehind:!0},punctuation:/%[%?]|[|:;\[\]<>]/}}})}e.exports=o,o.displayName="bison",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.brainfuck={pointer:{pattern:/<|>/,alias:"keyword"},increment:{pattern:/\+/,alias:"inserted"},decrement:{pattern:/-/,alias:"deleted"},branching:{pattern:/\[|\]/,alias:"important"},operator:/[.,]/,comment:/\S+/}}e.exports=r,r.displayName="brainfuck",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.bro={comment:{pattern:/(^|[^\\$])#.*/,lookbehind:!0,inside:{italic:/\b(?:TODO|FIXME|XXX)\b/}},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},boolean:/\b[TF]\b/,function:{pattern:/(?:function|hook|event) \w+(?:::\w+)?/,inside:{keyword:/^(?:function|hook|event)/}},variable:{pattern:/(?:global|local) \w+/i,inside:{keyword:/(?:global|local)/}},builtin:/(?:@(?:load(?:-(?:sigs|plugin))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:redef|priority|log|optional|default|add_func|delete_func|expire_func|read_expire|write_expire|create_expire|synchronized|persistent|rotate_interval|rotate_size|encrypt|raw_output|mergeable|group|error_handler|type_column))/,constant:{pattern:/const \w+/i,inside:{keyword:/const/}},keyword:/\b(?:break|next|continue|alarm|using|of|add|delete|export|print|return|schedule|when|timeout|addr|any|bool|count|double|enum|file|int|interval|pattern|opaque|port|record|set|string|subnet|table|time|vector|for|if|else|in|module|function)\b/,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&|\|\|?|\?|\*|\/|~|\^|%/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="bro",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.clojure={comment:/;+.*/,string:/"(?:\\.|[^\\"\r\n])*"/,operator:/(?:::|[:|'])\b[a-z][\w*+!?-]*\b/i,keyword:{pattern:/([^\w+*'?-])(?:def|if|do|let|\.\.|quote|var|->>|->|fn|loop|recur|throw|try|monitor-enter|\.|new|set!|def\-|defn|defn\-|defmacro|defmulti|defmethod|defstruct|defonce|declare|definline|definterface|defprotocol|==|defrecord|>=|deftype|<=|defproject|ns|\*|\+|\-|\/|<|=|>|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|conj|cons|constantly|cond|if-not|construct-proxy|contains\?|count|create-ns|create-struct|cycle|dec|deref|difference|disj|dissoc|distinct|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\?|ensure|eval|every\?|false\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|for|fnseq|frest|gensym|get-proxy-class|get|hash-map|hash-set|identical\?|identity|if-let|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\?|last|lazy-cat|lazy-cons|left|lefts|line-seq|list\*|list|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|name|namespace|neg\?|new|newline|next|nil\?|node|not|not-any\?|not-every\?|not=|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\?|set|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\?|split-at|split-with|str|string\?|struct|struct-map|subs|subvec|symbol|symbol\?|sync|take|take-nth|take-while|test|time|to-array|to-array-2d|tree-seq|true\?|union|up|update-proxy|val|vals|var-get|var-set|var\?|vector|vector-zip|vector\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\?|zipmap|zipper)(?=[^\w+*'?-])/,lookbehind:!0},boolean:/\b(?:true|false|nil)\b/,number:/\b[0-9A-Fa-f]+\b/,punctuation:/[{}\[\](),]/}}e.exports=r,r.displayName="clojure",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"]}(e)}e.exports=r,r.displayName="coffeescript",r.aliases=[]},function(e,t,n){"use strict";var r=n(97);function o(e){e.register(r),function(e){e.languages.crystal=e.languages.extend("ruby",{keyword:[/\b(?:abstract|alias|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|rescue|return|require|select|self|sizeof|struct|super|then|type|typeof|uninitialized|union|unless|until|when|while|with|yield|__DIR__|__END_LINE__|__FILE__|__LINE__)\b/,{pattern:/(\.\s*)(?:is_a|responds_to)\?/,lookbehind:!0}],number:/\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\da-fA-F_]*[\da-fA-F]|(?:\d(?:[\d_]*\d)?)(?:\.[\d_]*\d)?(?:[eE][+-]?[\d_]*\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\b/}),e.languages.insertBefore("crystal","string",{attribute:{pattern:/@\[.+?\]/,alias:"attr-name",inside:{delimiter:{pattern:/^@\[|\]$/,alias:"tag"},rest:e.languages.crystal}},expansion:[{pattern:/\{\{.+?\}\}/,inside:{delimiter:{pattern:/^\{\{|\}\}$/,alias:"tag"},rest:e.languages.crystal}},{pattern:/\{%.+?%\}/,inside:{delimiter:{pattern:/^\{%|%\}$/,alias:"tag"},rest:e.languages.crystal}}]})}(e)}e.exports=o,o.displayName="crystal",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.csharp=e.languages.extend("clike",{keyword:/\b(?:abstract|add|alias|as|ascending|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|descending|do|double|dynamic|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|from|get|global|goto|group|if|implicit|in|int|interface|internal|into|is|join|let|lock|long|namespace|new|null|object|operator|orderby|out|override|params|partial|private|protected|public|readonly|ref|remove|return|sbyte|sealed|select|set|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|value|var|virtual|void|volatile|where|while|yield)\b/,string:[{pattern:/@("|')(?:\1\1|\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*?\1/,greedy:!0}],"class-name":[{pattern:/\b[A-Z]\w*(?:\.\w+)*\b(?=\s+\w+)/,inside:{punctuation:/\./}},{pattern:/(\[)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/(\b(?:class|interface)\s+[A-Z]\w*(?:\.\w+)*\s*:\s*)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/((?:\b(?:class|interface|new)\s+)|(?:catch\s+\())[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}}],number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)f?/i}),e.languages.insertBefore("csharp","class-name",{"generic-method":{pattern:/\w+\s*<[^>\r\n]+?>\s*(?=\()/,inside:{function:/^\w+/,"class-name":{pattern:/\b[A-Z]\w*(?:\.\w+)*\b/,inside:{punctuation:/\./}},keyword:e.languages.csharp.keyword,punctuation:/[<>(),.:]/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}}),e.languages.dotnet=e.languages.csharp}e.exports=r,r.displayName="csharp",r.aliases=["dotnet"]},function(e,t,n){"use strict";function r(e){e.languages.csp={directive:{pattern:/\b(?:(?:base-uri|form-action|frame-ancestors|plugin-types|referrer|reflected-xss|report-to|report-uri|require-sri-for|sandbox) |(?:block-all-mixed-content|disown-opener|upgrade-insecure-requests)(?: |;)|(?:child|connect|default|font|frame|img|manifest|media|object|script|style|worker)-src )/i,alias:"keyword"},safe:{pattern:/'(?:self|none|strict-dynamic|(?:nonce-|sha(?:256|384|512)-)[a-zA-Z\d+=\/]+)'/,alias:"selector"},unsafe:{pattern:/(?:'unsafe-inline'|'unsafe-eval'|'unsafe-hashed-attributes'|\*)/,alias:"function"}}}e.exports=r,r.displayName="csp",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.css.selector={pattern:/[^{}\s][^{}]*(?=\s*\{)/,inside:{"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+(?:\(.*\))?/,class:/\.[-:.\w]+/,id:/#[-:.\w]+/,attribute:/\[[^\]]+\]/}},e.languages.insertBefore("css","function",{hexcode:/#[\da-f]{3,8}/i,entity:/\\[\da-f]{1,8}/i,number:/[\d%.]+/})}e.exports=r,r.displayName="cssExtras",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.d=e.languages.extend("clike",{string:[/\b[rx]"(?:\\[\s\S]|[^\\"])*"[cwd]?/,/\bq"(?:\[[\s\S]*?\]|\([\s\S]*?\)|<[\s\S]*?>|\{[\s\S]*?\})"/,/\bq"([_a-zA-Z][_a-zA-Z\d]*)(?:\r?\n|\r)[\s\S]*?(?:\r?\n|\r)\1"/,/\bq"(.)[\s\S]*?\1"/,/'(?:\\'|\\?[^']+)'/,/(["`])(?:\\[\s\S]|(?!\1)[^\\])*\1[cwd]?/],number:[/\b0x\.?[a-f\d_]+(?:(?!\.\.)\.[a-f\d_]*)?(?:p[+-]?[a-f\d_]+)?[ulfi]*/i,{pattern:/((?:\.\.)?)(?:\b0b\.?|\b|\.)\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:e[+-]?\d[\d_]*)?[ulfi]*/i,lookbehind:!0}],keyword:/\$|\b(?:abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__(?:(?:FILE|MODULE|LINE|FUNCTION|PRETTY_FUNCTION|DATE|EOF|TIME|TIMESTAMP|VENDOR|VERSION)__|gshared|traits|vector|parameters)|string|wstring|dstring|size_t|ptrdiff_t)\b/,operator:/\|[|=]?|&[&=]?|\+[+=]?|-[-=]?|\.?\.\.|=[>=]?|!(?:i[ns]\b|<>?=?|>=?|=)?|\bi[ns]\b|(?:<[<>]?|>>?>?|\^\^|[*\/%^~])=?/}),e.languages.d.comment=[/^\s*#!.+/,{pattern:/(^|[^\\])\/\+(?:\/\+[\s\S]*?\+\/|[\s\S])*?\+\//,lookbehind:!0}].concat(e.languages.d.comment),e.languages.insertBefore("d","comment",{"token-string":{pattern:/\bq\{(?:\{[^}]*\}|[^}])*\}/,alias:"string"}}),e.languages.insertBefore("d","keyword",{property:/\B@\w*/}),e.languages.insertBefore("d","function",{register:{pattern:/\b(?:[ABCD][LHX]|E[ABCD]X|E?(?:BP|SP|DI|SI)|[ECSDGF]S|CR[0234]|DR[012367]|TR[3-7]|X?MM[0-7]|R[ABCD]X|[BS]PL|R[BS]P|[DS]IL|R[DS]I|R(?:[89]|1[0-5])[BWD]?|XMM(?:[89]|1[0-5])|YMM(?:1[0-5]|\d))\b|\bST(?:\([0-7]\)|\b)/,alias:"variable"}})}e.exports=r,r.displayName="d",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.dart=e.languages.extend("clike",{string:[{pattern:/r?("""|''')[\s\S]*?\1/,greedy:!0},{pattern:/r?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],keyword:[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|default|deferred|do|dynamic|else|enum|export|external|extends|factory|final|finally|for|get|if|implements|import|in|library|new|null|operator|part|rethrow|return|set|static|super|switch|this|throw|try|typedef|var|void|while|with|yield)\b/],operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","function",{metadata:{pattern:/@\w+/,alias:"symbol"}})}e.exports=r,r.displayName="dart",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d+.*$/m],deleted:/^[-<].*$/m,inserted:/^[+>].*$/m,diff:{pattern:/^!(?!!).+$/m,alias:"important"}}}e.exports=r,r.displayName="diff",r.aliases=[]},function(e,t,n){"use strict";function r(e){var t={property:{pattern:/(?:{{|{%)[\s\S]*?(?:%}|}})/g,greedy:!0,inside:{string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/\b(?:\||load|verbatim|widthratio|ssi|firstof|for|url|ifchanged|csrf_token|lorem|ifnotequal|autoescape|now|templatetag|debug|cycle|ifequal|regroup|comment|filter|endfilter|if|spaceless|with|extends|block|include|else|empty|endif|endfor|as|endblock|endautoescape|endverbatim|trans|endtrans|[Tt]rue|[Ff]alse|[Nn]one|in|is|static|macro|endmacro|call|endcall|set|endset|raw|endraw)\b/,operator:/[-+=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,function:/\b(?:_|abs|add|addslashes|attr|batch|callable|capfirst|capitalize|center|count|cut|d|date|default|default_if_none|defined|dictsort|dictsortreversed|divisibleby|e|equalto|escape|escaped|escapejs|even|filesizeformat|first|float|floatformat|force_escape|forceescape|format|get_digit|groupby|indent|int|iriencode|iterable|join|last|length|length_is|linebreaks|linebreaksbr|linenumbers|list|ljust|lower|make_list|map|mapping|number|odd|phone2numeric|pluralize|pprint|random|reject|rejectattr|removetags|replace|reverse|rjust|round|safe|safeseq|sameas|select|selectattr|sequence|slice|slugify|sort|string|stringformat|striptags|sum|time|timesince|timeuntil|title|trim|truncate|truncatechars|truncatechars_html|truncatewords|truncatewords_html|undefined|unordered_list|upper|urlencode|urlize|urlizetrunc|wordcount|wordwrap|xmlattr|yesno)\b/,important:/\b-?\d+(?:\.\d+)?\b/,variable:/\b\w+?\b/,punctuation:/[[\];(),.:]/}}};e.languages.django=e.languages.extend("markup",{comment:/(?:)/}),e.languages.django.tag.pattern=/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^>=]+))?)*\s*\/?>/i,e.languages.insertBefore("django","entity",t),e.languages.insertBefore("inside","tag",t,e.languages.django.tag),e.languages.javascript&&(e.languages.insertBefore("inside","string",t,e.languages.django.script),e.languages.django.script.inside.string.inside=t),e.languages.css&&(e.languages.insertBefore("inside","atrule",{tag:t.property},e.languages.django.style),e.languages.django.style.inside.string.inside=t),e.languages.jinja2=e.languages.django}e.exports=r,r.displayName="django",r.aliases=["jinja2"]},function(e,t,n){"use strict";function r(e){e.languages.docker={keyword:{pattern:/(^\s*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)/im,lookbehind:!0},string:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,comment:/#.*/,punctuation:/---|\.\.\.|[:[\]{}\-,|>?]/},e.languages.dockerfile=e.languages.docker}e.exports=r,r.displayName="docker",r.aliases=["dockerfile"]},function(e,t,n){"use strict";function r(e){e.languages.eiffel={comment:/--.*/,string:[{pattern:/"([^[]*)\[[\s\S]*?\]\1"/,greedy:!0},{pattern:/"([^{]*)\{[\s\S]*?\}\1"/,greedy:!0},{pattern:/"(?:%\s+%|%.|[^%"\r\n])*"/,greedy:!0}],char:/'(?:%.|[^%'\r\n])+'/,keyword:/\b(?:across|agent|alias|all|and|attached|as|assign|attribute|check|class|convert|create|Current|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|implies|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|or|Precursor|redefine|rename|require|rescue|Result|retry|select|separate|some|then|undefine|until|variant|Void|when|xor)\b/i,boolean:/\b(?:True|False)\b/i,"class-name":{pattern:/\b[A-Z][\dA-Z_]*\b/,alias:"builtin"},number:[/\b0[xcb][\da-f](?:_*[\da-f])*\b/i,/(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?e[+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/i],punctuation:/:=|<<|>>|\(\||\|\)|->|\.(?=\w)|[{}[\];(),:?]/,operator:/\\\\|\|\.\.\||\.\.|\/[~\/=]?|[><]=?|[-+*^=~]/}}e.exports=r,r.displayName="eiffel",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.elixir={comment:{pattern:/#.*/m,lookbehind:!0},regex:{pattern:/~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/,greedy:!0},string:[{pattern:/~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/,greedy:!0,inside:{}},{pattern:/("""|''')[\s\S]*?\1/,greedy:!0,inside:{}},{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{}}],atom:{pattern:/(^|[^:]):\w+/,lookbehind:!0,alias:"symbol"},"attr-name":/\w+:(?!:)/,capture:{pattern:/(^|[^&])&(?:[^&\s\d()][^\s()]*|(?=\())/,lookbehind:!0,alias:"function"},argument:{pattern:/(^|[^&])&\d+/,lookbehind:!0,alias:"variable"},attribute:{pattern:/@\w+/,alias:"variable"},number:/\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,keyword:/\b(?:after|alias|and|case|catch|cond|def(?:callback|exception|impl|module|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|require|rescue|try|unless|use|when)\b/,boolean:/\b(?:true|false|nil)\b/,operator:[/\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*\/^]/,{pattern:/([^<])<(?!<)/,lookbehind:!0},{pattern:/([^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,%\[\]{}()]/},e.languages.elixir.string.forEach(function(t){t.inside={interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:e.languages.elixir}}}})}e.exports=r,r.displayName="elixir",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.elm={comment:/--.*|{-[\s\S]*?-}/,char:{pattern:/'(?:[^\\'\r\n]|\\(?:[abfnrtv\\']|\d+|x[0-9a-fA-F]+))'/,greedy:!0},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:[^\\"\r\n]|\\(?:[abfnrtv\\"]|\d+|x[0-9a-fA-F]+))*"/,greedy:!0}],import_statement:{pattern:/^\s*import\s+[A-Z]\w*(?:\.[A-Z]\w*)*(?:\s+as\s+([A-Z]\w*)(?:\.[A-Z]\w*)*)?(?:\s+exposing\s+)?/m,inside:{keyword:/\b(?:import|as|exposing)\b/}},keyword:/\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\b/,builtin:/\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[+\-\/*=.$<>:&|^?%#@~!]{2,}|[+\-\/*=$<>:&|^?%#@~!]/,hvariable:/\b(?:[A-Z]\w*\.)*[a-z]\w*\b/,constant:/\b(?:[A-Z]\w*\.)*[A-Z]\w*\b/,punctuation:/[{}[\]|(),.:]/}}e.exports=r,r.displayName="elm",r.aliases=[]},function(e,t,n){"use strict";var r=n(97);function o(e){e.register(r),function(e){e.languages.erb=e.languages.extend("ruby",{}),e.languages.insertBefore("erb","comment",{delimiter:{pattern:/^<%=?|%>$/,alias:"punctuation"}}),e.hooks.add("before-tokenize",function(t){e.languages["markup-templating"].buildPlaceholders(t,"erb",/<%=?[\s\S]+?%>/g)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"erb")})}(e)}e.exports=o,o.displayName="erb",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.erlang={comment:/%.+/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},"quoted-function":{pattern:/'(?:\\.|[^\\'\r\n])+'(?=\()/,alias:"function"},"quoted-atom":{pattern:/'(?:\\.|[^\\'\r\n])+'/,alias:"atom"},boolean:/\b(?:true|false)\b/,keyword:/\b(?:fun|when|case|of|end|if|receive|after|try|catch)\b/,number:[/\$\\?./,/\d+#[a-z0-9]+/i,/(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i],function:/\b[a-z][\w@]*(?=\()/,variable:{pattern:/(^|[^@])(?:\b|\?)[A-Z_][\w@]*/,lookbehind:!0},operator:[/[=\/<>:]=|=[:\/]=|\+\+?|--?|[=*\/!]|\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\b/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],atom:/\b[a-z][\w@]*/,punctuation:/[()[\]{}:;,.#|]|<<|>>/}}e.exports=r,r.displayName="erlang",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\b/,alias:"tag"}]}),e.languages.flow["function-variable"].pattern=/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),"Array"!==e.util.type(e.languages.flow.keyword)&&(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:type|opaque|declare|Class)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\b(?!\$)/,lookbehind:!0})}(e)}e.exports=r,r.displayName="flow",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.fortran={"quoted-number":{pattern:/[BOZ](['"])[A-F0-9]+\1/i,alias:"number"},string:{pattern:/(?:\w+_)?(['"])(?:\1\1|&(?:\r\n?|\n)(?:\s*!.+(?:\r\n?|\n))?|(?!\1).)*(?:\1|&)/,inside:{comment:{pattern:/(&(?:\r\n?|\n)\s*)!.*/,lookbehind:!0}}},comment:{pattern:/!.*/,greedy:!0},boolean:/\.(?:TRUE|FALSE)\.(?:_\w+)?/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[ED][+-]?\d+)?(?:_\w+)?/i,keyword:[/\b(?:INTEGER|REAL|DOUBLE ?PRECISION|COMPLEX|CHARACTER|LOGICAL)\b/i,/\b(?:END ?)?(?:BLOCK ?DATA|DO|FILE|FORALL|FUNCTION|IF|INTERFACE|MODULE(?! PROCEDURE)|PROGRAM|SELECT|SUBROUTINE|TYPE|WHERE)\b/i,/\b(?:ALLOCATABLE|ALLOCATE|BACKSPACE|CALL|CASE|CLOSE|COMMON|CONTAINS|CONTINUE|CYCLE|DATA|DEALLOCATE|DIMENSION|DO|END|EQUIVALENCE|EXIT|EXTERNAL|FORMAT|GO ?TO|IMPLICIT(?: NONE)?|INQUIRE|INTENT|INTRINSIC|MODULE PROCEDURE|NAMELIST|NULLIFY|OPEN|OPTIONAL|PARAMETER|POINTER|PRINT|PRIVATE|PUBLIC|READ|RETURN|REWIND|SAVE|SELECT|STOP|TARGET|WHILE|WRITE)\b/i,/\b(?:ASSIGNMENT|DEFAULT|ELEMENTAL|ELSE|ELSEWHERE|ELSEIF|ENTRY|IN|INCLUDE|INOUT|KIND|NULL|ONLY|OPERATOR|OUT|PURE|RECURSIVE|RESULT|SEQUENCE|STAT|THEN|USE)\b/i],operator:[/\*\*|\/\/|=>|[=\/]=|[<>]=?|::|[+\-*=%]|\.(?:EQ|NE|LT|LE|GT|GE|NOT|AND|OR|EQV|NEQV)\.|\.[A-Z]+\./i,{pattern:/(^|(?!\().)\/(?!\))/,lookbehind:!0}],punctuation:/\(\/|\/\)|[(),;:&]/}}e.exports=r,r.displayName="fortran",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.fsharp=e.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*[\s\S]*?\*\)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\b/,string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1)B?/,greedy:!0},number:[/\b0x[\da-fA-F]+(?:un|lf|LF)?\b/,/\b0b[01]+(?:y|uy)?\b/,/(?:\b\d+\.?\d*|\B\.\d+)(?:[fm]|e[+-]?\d+)?\b/i,/\b\d+(?:[IlLsy]|u[lsy]?|UL)?\b/]}),e.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/^[^\r\n\S]*#.*/m,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}})}e.exports=r,r.displayName="fsharp",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.gedcom={"line-value":{pattern:/(^\s*\d+ +(?:@\w[\w!"$%&'()*+,\-.\/:;<=>?[\\\]^`{|}~\x80-\xfe #]*@ +)?\w+ +).+/m,lookbehind:!0,inside:{pointer:{pattern:/^@\w[\w!"$%&'()*+,\-.\/:;<=>?[\\\]^`{|}~\x80-\xfe #]*@$/,alias:"variable"}}},tag:{pattern:/(^\s*\d+ +(?:@\w[\w!"$%&'()*+,\-.\/:;<=>?[\\\]^`{|}~\x80-\xfe #]*@ +)?)\w+/m,lookbehind:!0,alias:"string"},level:{pattern:/(^\s*)\d+/m,lookbehind:!0,alias:"number"},pointer:{pattern:/@\w[\w!"$%&'()*+,\-.\/:;<=>?[\\\]^`{|}~\x80-\xfe #]*@/,alias:"variable"}}}e.exports=r,r.displayName="gedcom",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.gherkin={pystring:{pattern:/("""|''')[\s\S]+?\1/,alias:"string"},comment:{pattern:/((?:^|\r?\n|\r)[ \t]*)#.*/,lookbehind:!0},tag:{pattern:/((?:^|\r?\n|\r)[ \t]*)@\S*/,lookbehind:!0},feature:{pattern:/((?:^|\r?\n|\r)[ \t]*)(?:Ability|Ahoy matey!|Arwedd|Aspekt|Besigheid Behoefte|Business Need|Caracteristica|Característica|Egenskab|Egenskap|Eiginleiki|Feature|Fīča|Fitur|Fonctionnalité|Fonksyonalite|Funcionalidade|Funcionalitat|Functionalitate|Funcţionalitate|Funcționalitate|Functionaliteit|Fungsi|Funkcia|Funkcija|Funkcionalitāte|Funkcionalnost|Funkcja|Funksie|Funktionalität|Funktionalitéit|Funzionalità|Hwaet|Hwæt|Jellemző|Karakteristik|laH|Lastnost|Mak|Mogucnost|Mogućnost|Moznosti|Možnosti|OH HAI|Omadus|Ominaisuus|Osobina|Özellik|perbogh|poQbogh malja'|Potrzeba biznesowa|Požadavek|Požiadavka|Pretty much|Qap|Qu'meH 'ut|Savybė|Tính năng|Trajto|Vermoë|Vlastnosť|Właściwość|Značilnost|Δυνατότητα|Λειτουργία|Могућност|Мөмкинлек|Особина|Свойство|Үзенчәлеклелек|Функционал|Функционалност|Функция|Функціонал|תכונה|خاصية|خصوصیت|صلاحیت|کاروبار کی ضرورت|وِیژگی|रूप लेख|ਖਾਸੀਅਤ|ਨਕਸ਼ ਨੁਹਾਰ|ਮੁਹਾਂਦਰਾ|గుణము|ಹೆಚ್ಚಳ|ความต้องการทางธุรกิจ|ความสามารถ|โครงหลัก|기능|フィーチャ|功能|機能):(?:[^:]+(?:\r?\n|\r|$))*/,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]+/,lookbehind:!0},keyword:/[^:\r\n]+:/}},scenario:{pattern:/((?:^|\r?\n|\r)[ \t]*)(?:Abstract Scenario|Abstrakt Scenario|Achtergrond|Aer|Ær|Agtergrond|All y'all|Antecedentes|Antecedents|Atburðarás|Atburðarásir|Awww, look mate|B4|Background|Baggrund|Bakgrund|Bakgrunn|Bakgrunnur|Beispiele|Beispiller|Bối cảnh|Cefndir|Cenario|Cenário|Cenario de Fundo|Cenário de Fundo|Cenarios|Cenários|Contesto|Context|Contexte|Contexto|Conto|Contoh|Contone|Dæmi|Dasar|Dead men tell no tales|Delineacao do Cenario|Delineação do Cenário|Dis is what went down|Dữ liệu|Dyagram senaryo|Dyagram Senaryo|Egzanp|Ejemplos|Eksempler|Ekzemploj|Enghreifftiau|Esbozo do escenario|Escenari|Escenario|Esempi|Esquema de l'escenari|Esquema del escenario|Esquema do Cenario|Esquema do Cenário|Examples|EXAMPLZ|Exempel|Exemple|Exemples|Exemplos|First off|Fono|Forgatókönyv|Forgatókönyv vázlat|Fundo|Geçmiş|ghantoH|Grundlage|Hannergrond|Háttér|Heave to|Istorik|Juhtumid|Keadaan|Khung kịch bản|Khung tình huống|Kịch bản|Koncept|Konsep skenario|Kontèks|Kontekst|Kontekstas|Konteksts|Kontext|Konturo de la scenaro|Latar Belakang|lut|lut chovnatlh|lutmey|Lýsing Atburðarásar|Lýsing Dæma|Menggariskan Senario|MISHUN|MISHUN SRSLY|mo'|Náčrt Scenára|Náčrt Scénáře|Náčrt Scenáru|Oris scenarija|Örnekler|Osnova|Osnova Scenára|Osnova scénáře|Osnutek|Ozadje|Paraugs|Pavyzdžiai|Példák|Piemēri|Plan du scénario|Plan du Scénario|Plan senaryo|Plan Senaryo|Plang vum Szenario|Pozadí|Pozadie|Pozadina|Príklady|Příklady|Primer|Primeri|Primjeri|Przykłady|Raamstsenaarium|Reckon it's like|Rerefons|Scenár|Scénář|Scenarie|Scenarij|Scenarijai|Scenarijaus šablonas|Scenariji|Scenārijs|Scenārijs pēc parauga|Scenarijus|Scenario|Scénario|Scenario Amlinellol|Scenario Outline|Scenario Template|Scenariomal|Scenariomall|Scenarios|Scenariu|Scenariusz|Scenaro|Schema dello scenario|Se ðe|Se the|Se þe|Senario|Senaryo|Senaryo deskripsyon|Senaryo Deskripsyon|Senaryo taslağı|Shiver me timbers|Situācija|Situai|Situasie|Situasie Uiteensetting|Skenario|Skenario konsep|Skica|Structura scenariu|Structură scenariu|Struktura scenarija|Stsenaarium|Swa|Swa hwaer swa|Swa hwær swa|Szablon scenariusza|Szenario|Szenariogrundriss|Tapaukset|Tapaus|Tapausaihio|Taust|Tausta|Template Keadaan|Template Senario|Template Situai|The thing of it is|Tình huống|Variantai|Voorbeelde|Voorbeelden|Wharrimean is|Yo\-ho\-ho|You'll wanna|Założenia|Παραδείγματα|Περιγραφή Σεναρίου|Σενάρια|Σενάριο|Υπόβαθρο|Кереш|Контекст|Концепт|Мисаллар|Мисоллар|Основа|Передумова|Позадина|Предистория|Предыстория|Приклади|Пример|Примери|Примеры|Рамка на сценарий|Скица|Структура сценарија|Структура сценария|Структура сценарію|Сценарий|Сценарий структураси|Сценарийның төзелеше|Сценарији|Сценарио|Сценарій|Тарих|Үрнәкләр|דוגמאות|רקע|תבנית תרחיש|תרחיש|الخلفية|الگوی سناریو|امثلة|پس منظر|زمینه|سناریو|سيناريو|سيناريو مخطط|مثالیں|منظر نامے کا خاکہ|منظرنامہ|نمونه ها|उदाहरण|परिदृश्य|परिदृश्य रूपरेखा|पृष्ठभूमि|ਉਦਾਹਰਨਾਂ|ਪਟਕਥਾ|ਪਟਕਥਾ ਢਾਂਚਾ|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਿਛੋਕੜ|ఉదాహరణలు|కథనం|నేపథ్యం|సన్నివేశం|ಉದಾಹರಣೆಗಳು|ಕಥಾಸಾರಾಂಶ|ವಿವರಣೆ|ಹಿನ್ನೆಲೆ|โครงสร้างของเหตุการณ์|ชุดของตัวอย่าง|ชุดของเหตุการณ์|แนวคิด|สรุปเหตุการณ์|เหตุการณ์|배경|시나리오|시나리오 개요|예|サンプル|シナリオ|シナリオアウトライン|シナリオテンプレ|シナリオテンプレート|テンプレ|例|例子|剧本|剧本大纲|劇本|劇本大綱|场景|场景大纲|場景|場景大綱|背景):[^:\r\n]*/,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]*/,lookbehind:!0},keyword:/[^:\r\n]+:/}},"table-body":{pattern:/((?:\r?\n|\r)[ \t]*\|.+\|[^\r\n]*)+/,lookbehind:!0,inside:{outline:{pattern:/<[^>]+?>/,alias:"variable"},td:{pattern:/\s*[^\s|][^|]*/,alias:"string"},punctuation:/\|/}},"table-head":{pattern:/(?:\r?\n|\r)[ \t]*\|.+\|[^\r\n]*/,inside:{th:{pattern:/\s*[^\s|][^|]*/,alias:"variable"},punctuation:/\|/}},atrule:{pattern:/((?:\r?\n|\r)[ \t]+)(?:'ach|'a|'ej|7|a|A také|A taktiež|A tiež|A zároveň|Aber|Ac|Adott|Akkor|Ak|Aleshores|Ale|Ali|Allora|Alors|Als|Ama|Amennyiben|Amikor|Ampak|an|AN|Ananging|And y'all|And|Angenommen|Anrhegedig a|An|Apabila|Atès|Atesa|Atunci|Avast!|Aye|A|awer|Bagi|Banjur|Bet|Biết|Blimey!|Buh|But at the end of the day I reckon|But y'all|But|BUT|Cal|Când|Cando|Cand|Ce|Cuando|Če|Ða ðe|Ða|Dadas|Dada|Dados|Dado|DaH ghu' bejlu'|dann|Dann|Dano|Dan|Dar|Dat fiind|Data|Date fiind|Date|Dati fiind|Dati|Daţi fiind|Dați fiind|Dato|DEN|Den youse gotta|Dengan|De|Diberi|Diyelim ki|Donada|Donat|Donitaĵo|Do|Dun|Duota|Ðurh|Eeldades|Ef|Eğer ki|Entao|Então|Entón|Entonces|En|Epi|E|És|Etant donnée|Etant donné|Et|Étant données|Étant donnée|Étant donné|Etant données|Etant donnés|Étant donnés|Fakat|Gangway!|Gdy|Gegeben seien|Gegeben sei|Gegeven|Gegewe|ghu' noblu'|Gitt|Given y'all|Given|Givet|Givun|Ha|Cho|I CAN HAZ|In|Ir|It's just unbelievable|I|Ja|Jeśli|Jeżeli|Kadar|Kada|Kad|Kai|Kaj|Když|Keď|Kemudian|Ketika|Khi|Kiedy|Ko|Kuid|Kui|Kun|Lan|latlh|Le sa a|Let go and haul|Le|Lè sa a|Lè|Logo|Lorsqu'<|Lorsque|mä|Maar|Mais|Mając|Majd|Maka|Manawa|Mas|Ma|Menawa|Men|Mutta|Nalikaning|Nalika|Nanging|Når|När|Nato|Nhưng|Niin|Njuk|O zaman|Og|Och|Oletetaan|Onda|Ond|Oraz|Pak|Pero|Però|Podano|Pokiaľ|Pokud|Potem|Potom|Privzeto|Pryd|qaSDI'|Quando|Quand|Quan|Så|Sed|Se|Siis|Sipoze ke|Sipoze Ke|Sipoze|Si|Şi|Și|Soit|Stel|Tada|Tad|Takrat|Tak|Tapi|Ter|Tetapi|Tha the|Tha|Then y'all|Then|Thì|Thurh|Toda|Too right|ugeholl|Und|Un|Và|vaj|Vendar|Ve|wann|Wanneer|WEN|Wenn|When y'all|When|Wtedy|Wun|Y'know|Yeah nah|Yna|Youse know like when|Youse know when youse got|Y|Za predpokladu|Za předpokladu|Zadani|Zadano|Zadan|Zadate|Zadato|Zakładając|Zaradi|Zatati|Þa þe|Þa|Þá|Þegar|Þurh|Αλλά|Δεδομένου|Και|Όταν|Τότε|А також|Агар|Але|Али|Аммо|А|Әгәр|Әйтик|Әмма|Бирок|Ва|Вә|Дадено|Дано|Допустим|Если|Задате|Задати|Задато|И|І|К тому же|Када|Кад|Когато|Когда|Коли|Ләкин|Лекин|Нәтиҗәдә|Нехай|Но|Онда|Припустимо, що|Припустимо|Пусть|Также|Та|Тогда|Тоді|То|Унда|Һәм|Якщо|אבל|אזי|אז|בהינתן|וגם|כאשר|آنگاه|اذاً|اگر|اما|اور|با فرض|بالفرض|بفرض|پھر|تب|ثم|جب|عندما|فرض کیا|لكن|لیکن|متى|هنگامی|و|अगर|और|कदा|किन्तु|चूंकि|जब|तथा|तदा|तब|परन्तु|पर|यदि|ਅਤੇ|ਜਦੋਂ|ਜਿਵੇਂ ਕਿ|ਜੇਕਰ|ਤਦ|ਪਰ|అప్పుడు|ఈ పరిస్థితిలో|కాని|చెప్పబడినది|మరియు|ಆದರೆ|ನಂತರ|ನೀಡಿದ|ಮತ್ತು|ಸ್ಥಿತಿಯನ್ನು|กำหนดให้|ดังนั้น|แต่|เมื่อ|และ|그러면<|그리고<|단<|만약<|만일<|먼저<|조건<|하지만<|かつ<|しかし<|ただし<|ならば<|もし<|並且<|但し<|但是<|假如<|假定<|假設<|假设<|前提<|同时<|同時<|并且<|当<|當<|而且<|那么<|那麼<)(?=[ \t]+)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\\r\n])*"|'(?:\\.|[^'\\\r\n])*'/,inside:{outline:{pattern:/<[^>]+?>/,alias:"variable"}}},outline:{pattern:/<[^>]+?>/,alias:"variable"}}}e.exports=r,r.displayName="gherkin",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,commit_sha1:/^commit \w{40}$/m}}e.exports=r,r.displayName="git",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.glsl=e.languages.extend("clike",{comment:[/\/\*[\s\S]*?\*\//,/\/\/(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/],number:/(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ulf]*/i,keyword:/\b(?:attribute|const|uniform|varying|buffer|shared|coherent|volatile|restrict|readonly|writeonly|atomic_uint|layout|centroid|flat|smooth|noperspective|patch|sample|break|continue|do|for|while|switch|case|default|if|else|subroutine|in|out|inout|float|double|int|void|bool|true|false|invariant|precise|discard|return|d?mat[234](?:x[234])?|[ibdu]?vec[234]|uint|lowp|mediump|highp|precision|[iu]?sampler[123]D|[iu]?samplerCube|sampler[12]DShadow|samplerCubeShadow|[iu]?sampler[12]DArray|sampler[12]DArrayShadow|[iu]?sampler2DRect|sampler2DRectShadow|[iu]?samplerBuffer|[iu]?sampler2DMS(?:Array)?|[iu]?samplerCubeArray|samplerCubeArrayShadow|[iu]?image[123]D|[iu]?image2DRect|[iu]?imageCube|[iu]?imageBuffer|[iu]?image[12]DArray|[iu]?imageCubeArray|[iu]?image2DMS(?:Array)?|struct|common|partition|active|asm|class|union|enum|typedef|template|this|resource|goto|inline|noinline|public|static|extern|external|interface|long|short|half|fixed|unsigned|superp|input|output|hvec[234]|fvec[234]|sampler3DRect|filter|sizeof|cast|namespace|using)\b/}),e.languages.insertBefore("glsl","comment",{preprocessor:{pattern:/(^[ \t]*)#(?:(?:define|undef|if|ifdef|ifndef|else|elif|endif|error|pragma|extension|version|line)\b)?/m,lookbehind:!0,alias:"builtin"}})}e.exports=r,r.displayName="glsl",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.go=e.languages.extend("clike",{keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,number:/(?:\b0x[a-f\d]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[-+]?\d+)?)i?/i,string:{pattern:/(["'`])(\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0}}),delete e.languages.go["class-name"]}e.exports=r,r.displayName="go",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.graphql={comment:/#.*/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":/[a-z_]\w*(?=\s*:)/i,keyword:[{pattern:/(fragment\s+(?!on)[a-z_]\w*\s+|\.{3}\s*)on\b/,lookbehind:!0},/\b(?:query|fragment|mutation)\b/],operator:/!|=|\.{3}/,punctuation:/[!(){}\[\]:=,]/}}e.exports=r,r.displayName="graphql",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.groovy=e.languages.extend("clike",{keyword:/\b(?:as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\b/,string:[{pattern:/("""|''')[\s\S]*?\1|(?:\$\/)(?:\$\/\$|[\s\S])*?\/\$/,greedy:!0},{pattern:/(["'\/])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],number:/\b(?:0b[01_]+|0x[\da-f_]+(?:\.[\da-f_p\-]+)?|[\d_]+(?:\.[\d_]+)?(?:e[+-]?[\d]+)?)[glidf]?\b/i,operator:{pattern:/(^|[^.])(?:~|==?~?|\?[.:]?|\*(?:[.=]|\*=?)?|\.[@&]|\.\.<|\.{1,2}(?!\.)|-[-=>]?|\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\|[|=]?|\/=?|\^=?|%=?)/,lookbehind:!0},punctuation:/\.+|[{}[\];(),:$]/}),e.languages.insertBefore("groovy","string",{shebang:{pattern:/#!.+/,alias:"comment"}}),e.languages.insertBefore("groovy","punctuation",{"spock-block":/\b(?:setup|given|when|then|and|cleanup|expect|where):/}),e.languages.insertBefore("groovy","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}}),e.hooks.add("wrap",function(t){if("groovy"===t.language&&"string"===t.type){var n=t.content.value[0];if("'"!=n){var r=/([^\\])(?:\$(?:\{.*?\}|[\w.]+))/;"$"===n&&(r=/([^\$])(?:\$(?:\{.*?\}|[\w.]+))/),t.content.value=t.content.value.replace(/</g,"<").replace(/&/g,"&"),t.content=e.highlight(t.content.value,{expression:{pattern:r,lookbehind:!0,inside:e.languages.groovy}}),t.classes.push("/"===n?"regex":"gstring")}}})}e.exports=r,r.displayName="groovy",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.haml={"multiline-comment":{pattern:/((?:^|\r?\n|\r)([\t ]*))(?:\/|-#).*(?:(?:\r?\n|\r)\2[\t ]+.+)*/,lookbehind:!0,alias:"comment"},"multiline-code":[{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*,[\t ]*(?:(?:\r?\n|\r)\2[\t ]+.*,[\t ]*)*(?:(?:\r?\n|\r)\2[\t ]+.+)/,lookbehind:!0,inside:{rest:e.languages.ruby}},{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*\|[\t ]*(?:(?:\r?\n|\r)\2[\t ]+.*\|[\t ]*)*/,lookbehind:!0,inside:{rest:e.languages.ruby}}],filter:{pattern:/((?:^|\r?\n|\r)([\t ]*)):[\w-]+(?:(?:\r?\n|\r)(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},markup:{pattern:/((?:^|\r?\n|\r)[\t ]*)<.+/,lookbehind:!0,inside:{rest:e.languages.markup}},doctype:{pattern:/((?:^|\r?\n|\r)[\t ]*)!!!(?: .+)?/,lookbehind:!0},tag:{pattern:/((?:^|\r?\n|\r)[\t ]*)[%.#][\w\-#.]*[\w\-](?:\([^)]+\)|\{(?:\{[^}]+\}|[^}])+\}|\[[^\]]+\])*[\/<>]*/,lookbehind:!0,inside:{attributes:[{pattern:/(^|[^#])\{(?:\{[^}]+\}|[^}])+\}/,lookbehind:!0,inside:{rest:e.languages.ruby}},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:"(?:\\.|[^\\"\r\n])*"|[^)\s]+)/,lookbehind:!0},"attr-name":/[\w:-]+(?=\s*!?=|\s*[,)])/,punctuation:/[=(),]/}},{pattern:/\[[^\]]+\]/,inside:{rest:e.languages.ruby}}],punctuation:/[<>]/}},code:{pattern:/((?:^|\r?\n|\r)[\t ]*(?:[~-]|[&!]?=)).+/,lookbehind:!0,inside:{rest:e.languages.ruby}},interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:e.languages.ruby}},punctuation:{pattern:/((?:^|\r?\n|\r)[\t ]*)[~=\-&!]+/,lookbehind:!0}};for(var t=["css",{filter:"coffee",language:"coffeescript"},"erb","javascript","less","markdown","ruby","scss","textile"],n={},r=0,o=t.length;r@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})}(e)}e.exports=r,r.displayName="handlebars",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\\/])(?:--[^-!#$%*+=?&@|~.:<>^\\\/].*|{-[\s\S]*?-})/m,lookbehind:!0},char:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,string:{pattern:/"(?:[^\\"]|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+)|\\\s+\\)*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,import_statement:{pattern:/((?:\r?\n|\r|^)\s*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][_a-zA-Z0-9']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:import|qualified|as|hiding)\b/}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[-!#$%*+=?&@|~.:<>^\\\/]*\.[-!#$%*+=?&@|~.:<>^\\\/]+|[-!#$%*+=?&@|~.:<>^\\\/]+\.[-!#$%*+=?&@|~.:<>^\\\/]*|[-!#$%*+=?&@|~:<>^\\\/]+|`([A-Z][\w']*\.)*[_a-z][\w']*`/,hvariable:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*\b/,constant:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*\b/,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="haskell",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.haxe=e.languages.extend("clike",{string:{pattern:/(["'])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{interpolation:{pattern:/(^|[^\\])\$(?:\w+|\{[^}]+\})/,lookbehind:!0,inside:{interpolation:{pattern:/^\$\w*/,alias:"variable"}}}}},keyword:/\bthis\b|\b(?:abstract|as|break|case|cast|catch|class|continue|default|do|dynamic|else|enum|extends|extern|from|for|function|if|implements|import|in|inline|interface|macro|new|null|override|public|private|return|static|super|switch|throw|to|try|typedef|using|var|while)(?!\.)\b/,operator:/\.{3}|\+\+?|-[->]?|[=!]=?|&&?|\|\|?|<[<=]?|>[>=]?|[*\/%~^]/}),e.languages.insertBefore("haxe","class-name",{regex:{pattern:/~\/(?:[^\/\\\r\n]|\\.)+\/[igmsu]*/,greedy:!0}}),e.languages.insertBefore("haxe","keyword",{preprocessor:{pattern:/#\w+/,alias:"builtin"},metadata:{pattern:/@:?\w+/,alias:"symbol"},reification:{pattern:/\$(?:\w+|(?=\{))/,alias:"variable"}}),e.languages.haxe.string.inside.interpolation.inside.rest=e.languages.haxe,delete e.languages.haxe["class-name"]}e.exports=r,r.displayName="haxe",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.hpkp={directive:{pattern:/\b(?:(?:includeSubDomains|preload|strict)(?: |;)|pin-sha256="[a-zA-Z\d+=\/]+"|(?:max-age|report-uri)=|report-to )/,alias:"keyword"},safe:{pattern:/\d{7,}/,alias:"selector"},unsafe:{pattern:/\d{0,6}/,alias:"function"}}}e.exports=r,r.displayName="hpkp",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.hsts={directive:{pattern:/\b(?:max-age=|includeSubDomains|preload)/,alias:"keyword"},safe:{pattern:/\d{8,}/,alias:"selector"},unsafe:{pattern:/\d{0,7}/,alias:"function"}}}e.exports=r,r.displayName="hsts",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.http={"request-line":{pattern:/^(?:POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\s(?:https?:\/\/|\/)\S+\sHTTP\/[0-9.]+/m,inside:{property:/^(?:POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b/,"attr-name":/:\w+/}},"response-status":{pattern:/^HTTP\/1.[01] \d+.*/m,inside:{property:{pattern:/(^HTTP\/1.[01] )\d+.*/i,lookbehind:!0}}},"header-name":{pattern:/^[\w-]+:(?=.)/m,alias:"keyword"}};var t={"application/json":e.languages.javascript,"application/xml":e.languages.markup,"text/xml":e.languages.markup,"text/html":e.languages.markup};for(var n in t)if(t[n]){var r={};r[n]={pattern:new RegExp("(content-type:\\s*"+n+"[\\w\\W]*?)(?:\\r?\\n|\\r){2}[\\w\\W]*","i"),lookbehind:!0,inside:{rest:t[n]}},e.languages.insertBefore("http","header-name",r)}}e.exports=r,r.displayName="http",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.ichigojam={comment:/(?:\B'|REM)(?:[^\n\r]*)/i,string:{pattern:/"(?:""|[!#$%&'()*,\/:;<=>?^_ +\-.A-Z\d])*"/i,greedy:!0},number:/\B#[0-9A-F]+|\B`[01]+|(?:\b\d+\.?\d*|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:BEEP|BPS|CASE|CLEAR|CLK|CLO|CLP|CLS|CLT|CLV|CONT|COPY|ELSE|END|FILE|FILES|FOR|GOSUB|GSB|GOTO|IF|INPUT|KBD|LED|LET|LIST|LOAD|LOCATE|LRUN|NEW|NEXT|OUT|RIGHT|PLAY|POKE|PRINT|PWM|REM|RENUM|RESET|RETURN|RTN|RUN|SAVE|SCROLL|SLEEP|SRND|STEP|STOP|SUB|TEMPO|THEN|TO|UART|VIDEO|WAIT)(?:\$|\b)/i,function:/\b(?:ABS|ANA|ASC|BIN|BTN|DEC|END|FREE|HELP|HEX|I2CR|I2CW|IN|INKEY|LEN|LINE|PEEK|RND|SCR|SOUND|STR|TICK|USR|VER|VPEEK|ZER)(?:\$|\b)/i,label:/(?:\B@[^\s]+)/i,operator:/<[=>]?|>=?|\|\||&&|[+\-*\/=|&^~!]|\b(?:AND|NOT|OR)\b/i,punctuation:/[\[,;:()\]]/}}e.exports=r,r.displayName="ichigojam",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.icon={comment:/#.*/,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n_]|\\.|_(?!\1)(?:\r\n|[\s\S]))*\1/,greedy:!0},number:/\b(?:\d+r[a-z\d]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b|\.\d+\b/i,"builtin-keyword":{pattern:/&(?:allocated|ascii|clock|collections|cset|current|date|dateline|digits|dump|e|error(?:number|text|value)?|errout|fail|features|file|host|input|lcase|letters|level|line|main|null|output|phi|pi|pos|progname|random|regions|source|storage|subject|time|trace|ucase|version)\b/,alias:"variable"},directive:{pattern:/\$\w+/,alias:"builtin"},keyword:/\b(?:break|by|case|create|default|do|else|end|every|fail|global|if|initial|invocable|link|local|next|not|of|procedure|record|repeat|return|static|suspend|then|to|until|while)\b/,function:/(?!\d)\w+(?=\s*[({]|\s*!\s*\[)/,operator:/[+-]:(?!=)|(?:[\/?@^%&]|\+\+?|--?|==?=?|~==?=?|\*\*?|\|\|\|?|<(?:->?|>?=?)(?::=)?|:(?:=:?)?|[!.\\|~]/,punctuation:/[\[\](){},;]/}}e.exports=r,r.displayName="icon",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.inform7={string:{pattern:/"[^"]*"/,inside:{substitution:{pattern:/\[[^\]]+\]/,inside:{delimiter:{pattern:/\[|\]/,alias:"punctuation"}}}}},comment:{pattern:/\[[^\]]+\]/,greedy:!0},title:{pattern:/^[ \t]*(?:volume|book|part(?! of)|chapter|section|table)\b.+/im,alias:"important"},number:{pattern:/(^|[^-])(?:\b\d+(?:\.\d+)?(?:\^\d+)?\w*|\b(?:one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve))\b(?!-)/i,lookbehind:!0},verb:{pattern:/(^|[^-])\b(?:applying to|are|attacking|answering|asking|be(?:ing)?|burning|buying|called|carries|carry(?! out)|carrying|climbing|closing|conceal(?:s|ing)?|consulting|contain(?:s|ing)?|cutting|drinking|dropping|eating|enclos(?:es?|ing)|entering|examining|exiting|getting|giving|going|ha(?:ve|s|ving)|hold(?:s|ing)?|impl(?:y|ies)|incorporat(?:es?|ing)|inserting|is|jumping|kissing|listening|locking|looking|mean(?:s|ing)?|opening|provid(?:es?|ing)|pulling|pushing|putting|relat(?:es?|ing)|removing|searching|see(?:s|ing)?|setting|showing|singing|sleeping|smelling|squeezing|switching|support(?:s|ing)?|swearing|taking|tasting|telling|thinking|throwing|touching|turning|tying|unlock(?:s|ing)?|var(?:y|ies|ying)|waiting|waking|waving|wear(?:s|ing)?)\b(?!-)/i,lookbehind:!0,alias:"operator"},keyword:{pattern:/(^|[^-])\b(?:after|before|carry out|check|continue the action|definition(?= *:)|do nothing|else|end (?:if|unless|the story)|every turn|if|include|instead(?: of)?|let|move|no|now|otherwise|repeat|report|resume the story|rule for|running through|say(?:ing)?|stop the action|test|try(?:ing)?|understand|unless|use|when|while|yes)\b(?!-)/i,lookbehind:!0},property:{pattern:/(^|[^-])\b(?:adjacent(?! to)|carried|closed|concealed|contained|dark|described|edible|empty|enclosed|enterable|even|female|fixed in place|full|handled|held|improper-named|incorporated|inedible|invisible|lighted|lit|lock(?:able|ed)|male|marked for listing|mentioned|negative|neuter|non-(?:empty|full|recurring)|odd|opaque|open(?:able)?|plural-named|portable|positive|privately-named|proper-named|provided|publically-named|pushable between rooms|recurring|related|rubbing|scenery|seen|singular-named|supported|swinging|switch(?:able|ed(?: on| off)?)|touch(?:able|ed)|transparent|unconcealed|undescribed|unlit|unlocked|unmarked for listing|unmentioned|unopenable|untouchable|unvisited|variable|visible|visited|wearable|worn)\b(?!-)/i,lookbehind:!0,alias:"symbol"},position:{pattern:/(^|[^-])\b(?:above|adjacent to|back side of|below|between|down|east|everywhere|front side|here|in|inside(?: from)?|north(?:east|west)?|nowhere|on(?: top of)?|other side|outside(?: from)?|parts? of|regionally in|south(?:east|west)?|through|up|west|within)\b(?!-)/i,lookbehind:!0,alias:"keyword"},type:{pattern:/(^|[^-])\b(?:actions?|activit(?:y|ies)|actors?|animals?|backdrops?|containers?|devices?|directions?|doors?|holders?|kinds?|lists?|m[ae]n|nobody|nothing|nouns?|numbers?|objects?|people|persons?|player(?:'s holdall)?|regions?|relations?|rooms?|rule(?:book)?s?|scenes?|someone|something|supporters?|tables?|texts?|things?|time|vehicles?|wom[ae]n)\b(?!-)/i,lookbehind:!0,alias:"variable"},punctuation:/[.,:;(){}]/},e.languages.inform7.string.inside.substitution.inside.rest=e.languages.inform7,e.languages.inform7.string.inside.substitution.inside.rest.text={pattern:/\S(?:\s*\S)*/,alias:"comment"}}e.exports=r,r.displayName="inform7",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.ini={comment:/^[ \t]*;.*$/m,selector:/^[ \t]*\[.*?\]/m,constant:/^[ \t]*[^\s=]+?(?=[ \t]*=)/m,"attr-value":{pattern:/=.*/,inside:{punctuation:/^[=]/}}}}e.exports=r,r.displayName="ini",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.io={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0},{pattern:/(^|[^\\])#.*/,lookbehind:!0}],"triple-quoted-string":{pattern:/"""(?:\\[\s\S]|(?!""")[^\\])*"""/,greedy:!0,alias:"string"},string:{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},keyword:/\b(?:activate|activeCoroCount|asString|block|break|catch|clone|collectGarbage|compileString|continue|do|doFile|doMessage|doString|else|elseif|exit|for|foreach|forward|getSlot|getEnvironmentVariable|hasSlot|if|ifFalse|ifNil|ifNilEval|ifTrue|isActive|isNil|isResumable|list|message|method|parent|pass|pause|perform|performWithArgList|print|println|proto|raise|raiseResumable|removeSlot|resend|resume|schedulerSleepSeconds|self|sender|setSchedulerSleepSeconds|setSlot|shallowCopy|slotNames|super|system|then|thisBlock|thisContext|call|try|type|uniqueId|updateSlot|wait|while|write|yield)\b/,builtin:/\b(?:Array|AudioDevice|AudioMixer|Block|Box|Buffer|CFunction|CGI|Color|Curses|DBM|DNSResolver|DOConnection|DOProxy|DOServer|Date|Directory|Duration|DynLib|Error|Exception|FFT|File|Fnmatch|Font|Future|GL|GLE|GLScissor|GLU|GLUCylinder|GLUQuadric|GLUSphere|GLUT|Host|Image|Importer|LinkList|List|Lobby|Locals|MD5|MP3Decoder|MP3Encoder|Map|Message|Movie|Notification|Number|Object|OpenGL|Point|Protos|Regex|SGML|SGMLElement|SGMLParser|SQLite|Server|Sequence|ShowMessage|SleepyCat|SleepyCatCursor|Socket|SocketManager|Sound|Soup|Store|String|Tree|UDPSender|UPDReceiver|URL|User|Warning|WeakLink|Random|BigNum|Sequence)\b/,boolean:/\b(?:true|false|nil)\b/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e-?\d+)?/i,operator:/[=!*\/%+-^&|]=|>>?=?|<+*\-%$|,#][.:]?|[?^]\.?|[;\[]:?|[~}"i][.:]|[ACeEIjLor]\.|(?:[_\/\\qsux]|_?\d):)/,alias:"keyword"},number:/\b_?(?:(?!\d:)\d+(?:\.\d+)?(?:(?:[ejpx]|ad|ar)_?\d+(?:\.\d+)?)*(?:b_?[\da-z]+(?:\.[\da-z]+)?)?|_(?!\.))/,adverb:{pattern:/[~}]|[\/\\]\.?|[bfM]\.|t[.:]/,alias:"builtin"},operator:/[=a][.:]|_\./,conjunction:{pattern:/&(?:\.:?|:)?|[.:@][.:]?|[!D][.:]|[;dHT]\.|`:?|[\^LS]:|"/,alias:"variable"},punctuation:/[()]/}}e.exports=r,r.displayName="j",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.jolie=e.languages.extend("clike",{keyword:/\b(?:include|define|is_defined|undef|main|init|outputPort|inputPort|Location|Protocol|Interfaces|RequestResponse|OneWay|type|interface|extender|throws|cset|csets|forward|Aggregates|Redirects|embedded|courier|execution|sequential|concurrent|single|scope|install|throw|comp|cH|default|global|linkIn|linkOut|synchronized|this|new|for|if|else|while|in|Jolie|Java|Javascript|nullProcess|spawn|constants|with|provide|until|exit|foreach|instanceof|over|service)\b/,builtin:/\b(?:undefined|string|int|void|long|Byte|bool|double|float|char|any)\b/,number:/(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?l?/i,operator:/-[-=>]?|\+[+=]?|<[<=]?|[>=*!]=?|&&|\|\||[:?\/%^]/,symbol:/[|;@]/,punctuation:/[,.]/,string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0}}),delete e.languages.jolie["class-name"],delete e.languages.jolie.function,e.languages.insertBefore("jolie","keyword",{function:{pattern:/((?:\b(?:outputPort|inputPort|in|service|courier)\b|@)\s*)\w+/,lookbehind:!0},aggregates:{pattern:/(\bAggregates\s*:\s*)(?:\w+(?:\s+with\s+\w+)?\s*,\s*)*\w+(?:\s+with\s+\w+)?/,lookbehind:!0,inside:{withExtension:{pattern:/\bwith\s+\w+/,inside:{keyword:/\bwith\b/}},function:{pattern:/\w+/},punctuation:{pattern:/,/}}},redirects:{pattern:/(\bRedirects\s*:\s*)(?:\w+\s*=>\s*\w+\s*,\s*)*(?:\w+\s*=>\s*\w+)/,lookbehind:!0,inside:{punctuation:{pattern:/,/},function:{pattern:/\w+/},symbol:{pattern:/=>/}}}})}e.exports=r,r.displayName="jolie",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.json={property:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/i,string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,punctuation:/[{}[\]);,]/,operator:/:/g,boolean:/\b(?:true|false)\b/i,null:/\bnull\b/i},e.languages.jsonp=e.languages.json}e.exports=r,r.displayName="json",r.aliases=["jsonp"]},function(e,t,n){"use strict";function r(e){e.languages.julia={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2/,keyword:/\b(?:abstract|baremodule|begin|bitstype|break|catch|ccall|const|continue|do|else|elseif|end|export|finally|for|function|global|if|immutable|import|importall|let|local|macro|module|print|println|quote|return|try|type|typealias|using|while)\b/,boolean:/\b(?:true|false)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[box])?(?:[\da-f]+\.?\d*|\.\d+)(?:[efp][+-]?\d+)?j?/i,operator:/[-+*^%÷&$\\]=?|\/[\/=]?|!=?=?|\|[=>]?|<(?:<=?|[=:])?|>(?:=|>>?=?)?|==?=?|[~≠≤≥]/,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="julia",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.keyman={comment:/\bc\s.*/i,function:/\[\s*(?:(?:CTRL|SHIFT|ALT|LCTRL|RCTRL|LALT|RALT|CAPS|NCAPS)\s+)*(?:[TKU]_[\w?]+|".+?"|'.+?')\s*\]/i,string:/("|').*?\1/,bold:[/&(?:baselayout|bitmap|capsononly|capsalwaysoff|shiftfreescaps|copyright|ethnologuecode|hotkey|includecodes|keyboardversion|kmw_embedcss|kmw_embedjs|kmw_helpfile|kmw_helptext|kmw_rtl|language|layer|layoutfile|message|mnemoniclayout|name|oldcharposmatching|platform|targets|version|visualkeyboard|windowslanguages)\b/i,/\b(?:bitmap|bitmaps|caps on only|caps always off|shift frees caps|copyright|hotkey|language|layout|message|name|version)\b/i],keyword:/\b(?:any|baselayout|beep|call|context|deadkey|dk|if|index|layer|notany|nul|outs|platform|return|reset|save|set|store|use)\b/i,atrule:/\b(?:ansi|begin|unicode|group|using keys|match|nomatch)\b/i,number:/\b(?:U\+[\dA-F]+|d\d+|x[\da-f]+|\d+)\b/i,operator:/[+>\\,()]/,tag:/\$(?:keyman|kmfl|weaver|keymanweb|keymanonly):/i}}e.exports=r,r.displayName="keyman",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[/\w+(?=\s*\()/,{pattern:/(\.)\w+(?=\s*\{)/,lookbehind:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"],e.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/("""|''')[\s\S]*?\1/,alias:"string"}}),e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\w+@|@\w+/,alias:"symbol"}});var t=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:e.languages.kotlin}},{pattern:/\$\w+/,alias:"variable"}];e.languages.kotlin.string.inside=e.languages.kotlin["raw-string"].inside={interpolation:t}}(e)}e.exports=r,r.displayName="kotlin",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t=/\\(?:[^a-z()[\]]|[a-z*]+)/i,n={"equation-command":{pattern:t,alias:"regex"}};e.languages.latex={comment:/%.*/m,cdata:{pattern:/(\\begin\{((?:verbatim|lstlisting)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0},equation:[{pattern:/\$(?:\\[\s\S]|[^\\$])*\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]/,inside:n,alias:"string"},{pattern:/(\\begin\{((?:equation|math|eqnarray|align|multline|gather)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0,inside:n,alias:"string"}],keyword:{pattern:/(\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0},url:{pattern:/(\\url\{)[^}]+(?=\})/,lookbehind:!0},headline:{pattern:/(\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\}(?:\[[^\]]+\])?)/,lookbehind:!0,alias:"class-name"},function:{pattern:t,alias:"selector"},punctuation:/[[\]{}&]/}}(e)}e.exports=r,r.displayName="latex",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.less=e.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-]+?(?:\([^{}]+\)|[^(){};])*?(?=\s*\{)/i,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\([^{}]*\)|[^{};@])*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,punctuation:/[{}();:,]/,operator:/[+\-*\/]/}),e.languages.insertBefore("less","punctuation",{function:e.languages.less.function}),e.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/,lookbehind:!0,alias:"function"}})}e.exports=r,r.displayName="less",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.liquid={keyword:/\b(?:comment|endcomment|if|elsif|else|endif|unless|endunless|for|endfor|case|endcase|when|in|break|assign|continue|limit|offset|range|reversed|raw|endraw|capture|endcapture|tablerow|endtablerow)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp-]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?[df]?/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0},function:{pattern:/(^|[\s;|&])(?:append|prepend|capitalize|cycle|cols|increment|decrement|abs|at_least|at_most|ceil|compact|concat|date|default|divided_by|downcase|escape|escape_once|first|floor|join|last|lstrip|map|minus|modulo|newline_to_br|plus|remove|remove_first|replace|replace_first|reverse|round|rstrip|size|slice|sort|sort_natural|split|strip|strip_html|strip_newlines|times|truncate|truncatewords|uniq|upcase|url_decode|url_encode|include|paginate)(?=$|[\s;|&])/,lookbehind:!0}}}e.exports=r,r.displayName="liquid",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){function t(e){return new RegExp("(\\()"+e+"(?=[\\s\\)])")}function n(e){return new RegExp("([\\s([])"+e+"(?=[\\s)])")}var r="[-+*/_~!@$%^=<>{}\\w]+",o="(\\()",a={heading:{pattern:/;;;.*/,alias:["comment","title"]},comment:/;.*/,string:{pattern:/"(?:[^"\\]*|\\.)*"/,greedy:!0,inside:{argument:/[-A-Z]+(?=[.,\s])/,symbol:new RegExp("`"+r+"'")}},"quoted-symbol":{pattern:new RegExp("#?'"+r),alias:["variable","symbol"]},"lisp-property":{pattern:new RegExp(":"+r),alias:"property"},splice:{pattern:new RegExp(",@?"+r),alias:["symbol","variable"]},keyword:[{pattern:new RegExp(o+"(?:(?:lexical-)?let\\*?|(?:cl-)?letf|if|when|while|unless|cons|cl-loop|and|or|not|cond|setq|error|message|null|require|provide|use-package)(?=\\s)"),lookbehind:!0},{pattern:new RegExp(o+"(?:for|do|collect|return|finally|append|concat|in|by)(?=\\s)"),lookbehind:!0}],declare:{pattern:t("declare"),lookbehind:!0,alias:"keyword"},interactive:{pattern:t("interactive"),lookbehind:!0,alias:"keyword"},boolean:{pattern:n("(?:t|nil)"),lookbehind:!0},number:{pattern:n("[-+]?\\d+(?:\\.\\d*)?"),lookbehind:!0},defvar:{pattern:new RegExp(o+"def(?:var|const|custom|group)\\s+"+r),lookbehind:!0,inside:{keyword:/^def[a-z]+/,variable:new RegExp(r)}},defun:{pattern:new RegExp(o+"(?:cl-)?(?:defun\\*?|defmacro)\\s+"+r+"\\s+\\([\\s\\S]*?\\)"),lookbehind:!0,inside:{keyword:/^(?:cl-)?def\S+/,arguments:null,function:{pattern:new RegExp("(^\\s)"+r),lookbehind:!0},punctuation:/[()]/}},lambda:{pattern:new RegExp(o+"lambda\\s+\\((?:&?"+r+"\\s*)*\\)"),lookbehind:!0,inside:{keyword:/^lambda/,arguments:null,punctuation:/[()]/}},car:{pattern:new RegExp(o+r),lookbehind:!0},punctuation:[/(['`,]?\(|[)\[\]])/,{pattern:/(\s)\.(?=\s)/,lookbehind:!0}]},i={"lisp-marker":new RegExp("&[-+*/_~!@$%^=<>{}\\w]+"),rest:{argument:{pattern:new RegExp(r),alias:"variable"},varform:{pattern:new RegExp(o+r+"\\s+\\S[\\s\\S]*(?=\\))"),lookbehind:!0,inside:{string:a.string,boolean:a.boolean,number:a.number,symbol:a.symbol,punctuation:/[()]/}}}},l="\\S+(?:\\s+\\S+)*",s={pattern:new RegExp(o+"[\\s\\S]*(?=\\))"),lookbehind:!0,inside:{"rest-vars":{pattern:new RegExp("&(?:rest|body)\\s+"+l),inside:i},"other-marker-vars":{pattern:new RegExp("&(?:optional|aux)\\s+"+l),inside:i},keys:{pattern:new RegExp("&key\\s+"+l+"(?:\\s+&allow-other-keys)?"),inside:i},argument:{pattern:new RegExp(r),alias:"variable"},punctuation:/[()]/}};a.lambda.inside.arguments=s,a.defun.inside.arguments=e.util.clone(s),a.defun.inside.arguments.inside.sublist=s,e.languages.lisp=a,e.languages.elisp=a,e.languages.emacs=a,e.languages["emacs-lisp"]=a}(e)}e.exports=r,r.displayName="lisp",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.livescript={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\])#.*/,lookbehind:!0}],"interpolated-string":{pattern:/(^|[^"])("""|")(?:\\[\s\S]|(?!\2)[^\\])*\2(?!")/,lookbehind:!0,greedy:!0,inside:{variable:{pattern:/(^|[^\\])#[a-z_](?:-?[a-z]|[\d_])*/m,lookbehind:!0},interpolation:{pattern:/(^|[^\\])#\{[^}]+\}/m,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^#\{|\}$/,alias:"variable"}}},string:/[\s\S]+/}},string:[{pattern:/('''|')(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/<\[[\s\S]*?\]>/,greedy:!0},/\\[^\s,;\])}]+/],regex:[{pattern:/\/\/(\[.+?]|\\.|(?!\/\/)[^\\])+\/\/[gimyu]{0,5}/,greedy:!0,inside:{comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0}}},{pattern:/\/(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}/,greedy:!0}],keyword:{pattern:/(^|(?!-).)\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\b/m,lookbehind:!0},"keyword-operator":{pattern:/(^|[^-])\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?:nt| not)?|not|of|or|til|to|typeof|with|xor)(?!-)\b)/m,lookbehind:!0,alias:"operator"},boolean:{pattern:/(^|[^-])\b(?:false|no|off|on|true|yes)(?!-)\b/m,lookbehind:!0},argument:{pattern:/(^|(?!\.&\.)[^&])&(?!&)\d*/m,lookbehind:!0,alias:"variable"},number:/\b(?:\d+~[\da-z]+|\d[\d_]*(?:\.\d[\d_]*)?(?:[a-z]\w*)?)/i,identifier:/[a-z_](?:-?[a-z]|[\d_])*/i,operator:[{pattern:/( )\.(?= )/,lookbehind:!0},/\.(?:[=~]|\.\.?)|\.(?:[&|^]|<<|>>>?)\.|:(?:=|:=?)|&&|\|[|>]|<(?:<[>=?]?|-(?:->?|>)?|\+\+?|@@?|%%?|\*\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\^\^?|[\/?]/],punctuation:/[(){}\[\]|.,:;`]/},e.languages.livescript["interpolated-string"].inside.interpolation.inside.rest=e.languages.livescript}e.exports=r,r.displayName="livescript",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.lolcode={comment:[/\bOBTW\s+[\s\S]*?\s+TLDR\b/,/\bBTW.+/],string:{pattern:/"(?::.|[^"])*"/,inside:{variable:/:\{[^}]+\}/,symbol:[/:\([a-f\d]+\)/i,/:\[[^\]]+\]/,/:[)>o":]/]},greedy:!0},number:/(?:\B-)?(?:\b\d+\.?\d*|\B\.\d+)/,symbol:{pattern:/(^|\s)(?:A )?(?:YARN|NUMBR|NUMBAR|TROOF|BUKKIT|NOOB)(?=\s|,|$)/,lookbehind:!0,inside:{keyword:/A(?=\s)/}},label:{pattern:/((?:^|\s)(?:IM IN YR|IM OUTTA YR) )[a-zA-Z]\w*/,lookbehind:!0,alias:"string"},function:{pattern:/((?:^|\s)(?:I IZ|HOW IZ I|IZ) )[a-zA-Z]\w*/,lookbehind:!0},keyword:[{pattern:/(^|\s)(?:O HAI IM|KTHX|HAI|KTHXBYE|I HAS A|ITZ(?: A)?|R|AN|MKAY|SMOOSH|MAEK|IS NOW(?: A)?|VISIBLE|GIMMEH|O RLY\?|YA RLY|NO WAI|OIC|MEBBE|WTF\?|OMG|OMGWTF|GTFO|IM IN YR|IM OUTTA YR|FOUND YR|YR|TIL|WILE|UPPIN|NERFIN|I IZ|HOW IZ I|IF U SAY SO|SRS|HAS A|LIEK(?: A)?|IZ)(?=\s|,|$)/,lookbehind:!0},/'Z(?=\s|,|$)/],boolean:{pattern:/(^|\s)(?:WIN|FAIL)(?=\s|,|$)/,lookbehind:!0},variable:{pattern:/(^|\s)IT(?=\s|,|$)/,lookbehind:!0},operator:{pattern:/(^|\s)(?:NOT|BOTH SAEM|DIFFRINT|(?:SUM|DIFF|PRODUKT|QUOSHUNT|MOD|BIGGR|SMALLR|BOTH|EITHER|WON|ALL|ANY) OF)(?=\s|,|$)/,lookbehind:!0},punctuation:/\.{3}|…|,|!/}}e.exports=r,r.displayName="lolcode",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.lua={comment:/^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,greedy:!0},number:/\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,keyword:/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,function:/(?!\d)\w+(?=\s*(?:[({]))/,operator:[/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/}}e.exports=r,r.displayName="lua",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^[^:=\r\n]+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/}}e.exports=r,r.displayName="makefile",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},code:[{pattern:/^(?: {4}|\t).+/m,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*(?:\r?\n|\r)(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*$|__$/}},italic:{pattern:/(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),e.languages.markdown.bold.inside.url=e.languages.markdown.url,e.languages.markdown.italic.inside.url=e.languages.markdown.url,e.languages.markdown.bold.inside.italic=e.languages.markdown.italic,e.languages.markdown.italic.inside.bold=e.languages.markdown.bold}e.exports=r,r.displayName="markdown",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages["markup-templating"]={},Object.defineProperties(e.languages["markup-templating"],{buildPlaceholders:{value:function(t,n,r,o){t.language===n&&(t.tokenStack=[],t.code=t.code.replace(r,function(e){if("function"==typeof o&&!o(e))return e;for(var r=t.tokenStack.length;-1!==t.code.indexOf("___"+n.toUpperCase()+r+"___");)++r;return t.tokenStack[r]=e,"___"+n.toUpperCase()+r+"___"}),t.grammar=e.languages.markup)}},tokenizePlaceholders:{value:function(t,n){if(t.language===n&&t.tokenStack){t.grammar=e.languages[n];var r=0,o=Object.keys(t.tokenStack),a=function(i){if(!(r>=o.length))for(var l=0;l-1){++r;var f,m=d.substring(0,p),g=new e.Token(n,e.tokenize(c,t.grammar,n),"language-"+n,c),h=d.substring(p+("___"+n.toUpperCase()+u+"___").length);if(m||h?(f=[m,g,h].filter(function(e){return!!e}),a(f)):f=g,"string"==typeof s?Array.prototype.splice.apply(i,[l,1].concat(f)):s.content=f,r>=o.length)break}}else s.content&&"string"!=typeof s.content&&a(s.content)}};a(t.tokens)}}}})}e.exports=r,r.displayName="markupTemplating",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.matlab={comment:[/%\{[\s\S]*?\}%/,/%.+/],string:{pattern:/\B'(?:''|[^'\r\n])*'/,greedy:!0},number:/(?:\b\d+\.?\d*|\B\.\d+)(?:[eE][+-]?\d+)?(?:[ij])?|\b[ij]\b/,keyword:/\b(?:break|case|catch|continue|else|elseif|end|for|function|if|inf|NaN|otherwise|parfor|pause|pi|return|switch|try|while)\b/,function:/(?!\d)\w+(?=\s*\()/,operator:/\.?[*^\/\\']|[+\-:@]|[<>=~]=?|&&?|\|\|?/,punctuation:/\.{3}|[.,;\[\](){}!]/}}e.exports=r,r.displayName="matlab",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.mel={comment:/\/\/.*/,code:{pattern:/`(?:\\.|[^\\`\r\n])*`/,greedy:!0,alias:"italic",inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"}}},string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},variable:/\$\w+/,number:/\b0x[\da-fA-F]+\b|\b\d+\.?\d*|\B\.\d+/,flag:{pattern:/-[^\d\W]\w*/,alias:"operator"},keyword:/\b(?:break|case|continue|default|do|else|float|for|global|if|in|int|matrix|proc|return|string|switch|vector|while)\b/,function:/\w+(?=\()|\b(?:about|abs|addAttr|addAttributeEditorNodeHelp|addDynamic|addNewShelfTab|addPP|addPanelCategory|addPrefixToName|advanceToNextDrivenKey|affectedNet|affects|aimConstraint|air|alias|aliasAttr|align|alignCtx|alignCurve|alignSurface|allViewFit|ambientLight|angle|angleBetween|animCone|animCurveEditor|animDisplay|animView|annotate|appendStringArray|applicationName|applyAttrPreset|applyTake|arcLenDimContext|arcLengthDimension|arclen|arrayMapper|art3dPaintCtx|artAttrCtx|artAttrPaintVertexCtx|artAttrSkinPaintCtx|artAttrTool|artBuildPaintMenu|artFluidAttrCtx|artPuttyCtx|artSelectCtx|artSetPaintCtx|artUserPaintCtx|assignCommand|assignInputDevice|assignViewportFactories|attachCurve|attachDeviceAttr|attachSurface|attrColorSliderGrp|attrCompatibility|attrControlGrp|attrEnumOptionMenu|attrEnumOptionMenuGrp|attrFieldGrp|attrFieldSliderGrp|attrNavigationControlGrp|attrPresetEditWin|attributeExists|attributeInfo|attributeMenu|attributeQuery|autoKeyframe|autoPlace|bakeClip|bakeFluidShading|bakePartialHistory|bakeResults|bakeSimulation|basename|basenameEx|batchRender|bessel|bevel|bevelPlus|binMembership|bindSkin|blend2|blendShape|blendShapeEditor|blendShapePanel|blendTwoAttr|blindDataType|boneLattice|boundary|boxDollyCtx|boxZoomCtx|bufferCurve|buildBookmarkMenu|buildKeyframeMenu|button|buttonManip|CBG|cacheFile|cacheFileCombine|cacheFileMerge|cacheFileTrack|camera|cameraView|canCreateManip|canvas|capitalizeString|catch|catchQuiet|ceil|changeSubdivComponentDisplayLevel|changeSubdivRegion|channelBox|character|characterMap|characterOutlineEditor|characterize|chdir|checkBox|checkBoxGrp|checkDefaultRenderGlobals|choice|circle|circularFillet|clamp|clear|clearCache|clip|clipEditor|clipEditorCurrentTimeCtx|clipSchedule|clipSchedulerOutliner|clipTrimBefore|closeCurve|closeSurface|cluster|cmdFileOutput|cmdScrollFieldExecuter|cmdScrollFieldReporter|cmdShell|coarsenSubdivSelectionList|collision|color|colorAtPoint|colorEditor|colorIndex|colorIndexSliderGrp|colorSliderButtonGrp|colorSliderGrp|columnLayout|commandEcho|commandLine|commandPort|compactHairSystem|componentEditor|compositingInterop|computePolysetVolume|condition|cone|confirmDialog|connectAttr|connectControl|connectDynamic|connectJoint|connectionInfo|constrain|constrainValue|constructionHistory|container|containsMultibyte|contextInfo|control|convertFromOldLayers|convertIffToPsd|convertLightmap|convertSolidTx|convertTessellation|convertUnit|copyArray|copyFlexor|copyKey|copySkinWeights|cos|cpButton|cpCache|cpClothSet|cpCollision|cpConstraint|cpConvClothToMesh|cpForces|cpGetSolverAttr|cpPanel|cpProperty|cpRigidCollisionFilter|cpSeam|cpSetEdit|cpSetSolverAttr|cpSolver|cpSolverTypes|cpTool|cpUpdateClothUVs|createDisplayLayer|createDrawCtx|createEditor|createLayeredPsdFile|createMotionField|createNewShelf|createNode|createRenderLayer|createSubdivRegion|cross|crossProduct|ctxAbort|ctxCompletion|ctxEditMode|ctxTraverse|currentCtx|currentTime|currentTimeCtx|currentUnit|curve|curveAddPtCtx|curveCVCtx|curveEPCtx|curveEditorCtx|curveIntersect|curveMoveEPCtx|curveOnSurface|curveSketchCtx|cutKey|cycleCheck|cylinder|dagPose|date|defaultLightListCheckBox|defaultNavigation|defineDataServer|defineVirtualDevice|deformer|deg_to_rad|delete|deleteAttr|deleteShadingGroupsAndMaterials|deleteShelfTab|deleteUI|deleteUnusedBrushes|delrandstr|detachCurve|detachDeviceAttr|detachSurface|deviceEditor|devicePanel|dgInfo|dgdirty|dgeval|dgtimer|dimWhen|directKeyCtx|directionalLight|dirmap|dirname|disable|disconnectAttr|disconnectJoint|diskCache|displacementToPoly|displayAffected|displayColor|displayCull|displayLevelOfDetail|displayPref|displayRGBColor|displaySmoothness|displayStats|displayString|displaySurface|distanceDimContext|distanceDimension|doBlur|dolly|dollyCtx|dopeSheetEditor|dot|dotProduct|doubleProfileBirailSurface|drag|dragAttrContext|draggerContext|dropoffLocator|duplicate|duplicateCurve|duplicateSurface|dynCache|dynControl|dynExport|dynExpression|dynGlobals|dynPaintEditor|dynParticleCtx|dynPref|dynRelEdPanel|dynRelEditor|dynamicLoad|editAttrLimits|editDisplayLayerGlobals|editDisplayLayerMembers|editRenderLayerAdjustment|editRenderLayerGlobals|editRenderLayerMembers|editor|editorTemplate|effector|emit|emitter|enableDevice|encodeString|endString|endsWith|env|equivalent|equivalentTol|erf|error|eval|evalDeferred|evalEcho|event|exactWorldBoundingBox|exclusiveLightCheckBox|exec|executeForEachObject|exists|exp|expression|expressionEditorListen|extendCurve|extendSurface|extrude|fcheck|fclose|feof|fflush|fgetline|fgetword|file|fileBrowserDialog|fileDialog|fileExtension|fileInfo|filetest|filletCurve|filter|filterCurve|filterExpand|filterStudioImport|findAllIntersections|findAnimCurves|findKeyframe|findMenuItem|findRelatedSkinCluster|finder|firstParentOf|fitBspline|flexor|floatEq|floatField|floatFieldGrp|floatScrollBar|floatSlider|floatSlider2|floatSliderButtonGrp|floatSliderGrp|floor|flow|fluidCacheInfo|fluidEmitter|fluidVoxelInfo|flushUndo|fmod|fontDialog|fopen|formLayout|format|fprint|frameLayout|fread|freeFormFillet|frewind|fromNativePath|fwrite|gamma|gauss|geometryConstraint|getApplicationVersionAsFloat|getAttr|getClassification|getDefaultBrush|getFileList|getFluidAttr|getInputDeviceRange|getMayaPanelTypes|getModifiers|getPanel|getParticleAttr|getPluginResource|getenv|getpid|glRender|glRenderEditor|globalStitch|gmatch|goal|gotoBindPose|grabColor|gradientControl|gradientControlNoAttr|graphDollyCtx|graphSelectContext|graphTrackCtx|gravity|grid|gridLayout|group|groupObjectsByName|HfAddAttractorToAS|HfAssignAS|HfBuildEqualMap|HfBuildFurFiles|HfBuildFurImages|HfCancelAFR|HfConnectASToHF|HfCreateAttractor|HfDeleteAS|HfEditAS|HfPerformCreateAS|HfRemoveAttractorFromAS|HfSelectAttached|HfSelectAttractors|HfUnAssignAS|hardenPointCurve|hardware|hardwareRenderPanel|headsUpDisplay|headsUpMessage|help|helpLine|hermite|hide|hilite|hitTest|hotBox|hotkey|hotkeyCheck|hsv_to_rgb|hudButton|hudSlider|hudSliderButton|hwReflectionMap|hwRender|hwRenderLoad|hyperGraph|hyperPanel|hyperShade|hypot|iconTextButton|iconTextCheckBox|iconTextRadioButton|iconTextRadioCollection|iconTextScrollList|iconTextStaticLabel|ikHandle|ikHandleCtx|ikHandleDisplayScale|ikSolver|ikSplineHandleCtx|ikSystem|ikSystemInfo|ikfkDisplayMethod|illustratorCurves|image|imfPlugins|inheritTransform|insertJoint|insertJointCtx|insertKeyCtx|insertKnotCurve|insertKnotSurface|instance|instanceable|instancer|intField|intFieldGrp|intScrollBar|intSlider|intSliderGrp|interToUI|internalVar|intersect|iprEngine|isAnimCurve|isConnected|isDirty|isParentOf|isSameObject|isTrue|isValidObjectName|isValidString|isValidUiName|isolateSelect|itemFilter|itemFilterAttr|itemFilterRender|itemFilterType|joint|jointCluster|jointCtx|jointDisplayScale|jointLattice|keyTangent|keyframe|keyframeOutliner|keyframeRegionCurrentTimeCtx|keyframeRegionDirectKeyCtx|keyframeRegionDollyCtx|keyframeRegionInsertKeyCtx|keyframeRegionMoveKeyCtx|keyframeRegionScaleKeyCtx|keyframeRegionSelectKeyCtx|keyframeRegionSetKeyCtx|keyframeRegionTrackCtx|keyframeStats|lassoContext|lattice|latticeDeformKeyCtx|launch|launchImageEditor|layerButton|layeredShaderPort|layeredTexturePort|layout|layoutDialog|lightList|lightListEditor|lightListPanel|lightlink|lineIntersection|linearPrecision|linstep|listAnimatable|listAttr|listCameras|listConnections|listDeviceAttachments|listHistory|listInputDeviceAxes|listInputDeviceButtons|listInputDevices|listMenuAnnotation|listNodeTypes|listPanelCategories|listRelatives|listSets|listTransforms|listUnselected|listerEditor|loadFluid|loadNewShelf|loadPlugin|loadPluginLanguageResources|loadPrefObjects|localizedPanelLabel|lockNode|loft|log|longNameOf|lookThru|ls|lsThroughFilter|lsType|lsUI|Mayatomr|mag|makeIdentity|makeLive|makePaintable|makeRoll|makeSingleSurface|makeTubeOn|makebot|manipMoveContext|manipMoveLimitsCtx|manipOptions|manipRotateContext|manipRotateLimitsCtx|manipScaleContext|manipScaleLimitsCtx|marker|match|max|memory|menu|menuBarLayout|menuEditor|menuItem|menuItemToShelf|menuSet|menuSetPref|messageLine|min|minimizeApp|mirrorJoint|modelCurrentTimeCtx|modelEditor|modelPanel|mouse|movIn|movOut|move|moveIKtoFK|moveKeyCtx|moveVertexAlongDirection|multiProfileBirailSurface|mute|nParticle|nameCommand|nameField|namespace|namespaceInfo|newPanelItems|newton|nodeCast|nodeIconButton|nodeOutliner|nodePreset|nodeType|noise|nonLinear|normalConstraint|normalize|nurbsBoolean|nurbsCopyUVSet|nurbsCube|nurbsEditUV|nurbsPlane|nurbsSelect|nurbsSquare|nurbsToPoly|nurbsToPolygonsPref|nurbsToSubdiv|nurbsToSubdivPref|nurbsUVSet|nurbsViewDirectionVector|objExists|objectCenter|objectLayer|objectType|objectTypeUI|obsoleteProc|oceanNurbsPreviewPlane|offsetCurve|offsetCurveOnSurface|offsetSurface|openGLExtension|openMayaPref|optionMenu|optionMenuGrp|optionVar|orbit|orbitCtx|orientConstraint|outlinerEditor|outlinerPanel|overrideModifier|paintEffectsDisplay|pairBlend|palettePort|paneLayout|panel|panelConfiguration|panelHistory|paramDimContext|paramDimension|paramLocator|parent|parentConstraint|particle|particleExists|particleInstancer|particleRenderInfo|partition|pasteKey|pathAnimation|pause|pclose|percent|performanceOptions|pfxstrokes|pickWalk|picture|pixelMove|planarSrf|plane|play|playbackOptions|playblast|plugAttr|plugNode|pluginInfo|pluginResourceUtil|pointConstraint|pointCurveConstraint|pointLight|pointMatrixMult|pointOnCurve|pointOnSurface|pointPosition|poleVectorConstraint|polyAppend|polyAppendFacetCtx|polyAppendVertex|polyAutoProjection|polyAverageNormal|polyAverageVertex|polyBevel|polyBlendColor|polyBlindData|polyBoolOp|polyBridgeEdge|polyCacheMonitor|polyCheck|polyChipOff|polyClipboard|polyCloseBorder|polyCollapseEdge|polyCollapseFacet|polyColorBlindData|polyColorDel|polyColorPerVertex|polyColorSet|polyCompare|polyCone|polyCopyUV|polyCrease|polyCreaseCtx|polyCreateFacet|polyCreateFacetCtx|polyCube|polyCut|polyCutCtx|polyCylinder|polyCylindricalProjection|polyDelEdge|polyDelFacet|polyDelVertex|polyDuplicateAndConnect|polyDuplicateEdge|polyEditUV|polyEditUVShell|polyEvaluate|polyExtrudeEdge|polyExtrudeFacet|polyExtrudeVertex|polyFlipEdge|polyFlipUV|polyForceUV|polyGeoSampler|polyHelix|polyInfo|polyInstallAction|polyLayoutUV|polyListComponentConversion|polyMapCut|polyMapDel|polyMapSew|polyMapSewMove|polyMergeEdge|polyMergeEdgeCtx|polyMergeFacet|polyMergeFacetCtx|polyMergeUV|polyMergeVertex|polyMirrorFace|polyMoveEdge|polyMoveFacet|polyMoveFacetUV|polyMoveUV|polyMoveVertex|polyNormal|polyNormalPerVertex|polyNormalizeUV|polyOptUvs|polyOptions|polyOutput|polyPipe|polyPlanarProjection|polyPlane|polyPlatonicSolid|polyPoke|polyPrimitive|polyPrism|polyProjection|polyPyramid|polyQuad|polyQueryBlindData|polyReduce|polySelect|polySelectConstraint|polySelectConstraintMonitor|polySelectCtx|polySelectEditCtx|polySeparate|polySetToFaceNormal|polySewEdge|polyShortestPathCtx|polySmooth|polySoftEdge|polySphere|polySphericalProjection|polySplit|polySplitCtx|polySplitEdge|polySplitRing|polySplitVertex|polyStraightenUVBorder|polySubdivideEdge|polySubdivideFacet|polyToSubdiv|polyTorus|polyTransfer|polyTriangulate|polyUVSet|polyUnite|polyWedgeFace|popen|popupMenu|pose|pow|preloadRefEd|print|progressBar|progressWindow|projFileViewer|projectCurve|projectTangent|projectionContext|projectionManip|promptDialog|propModCtx|propMove|psdChannelOutliner|psdEditTextureFile|psdExport|psdTextureFile|putenv|pwd|python|querySubdiv|quit|rad_to_deg|radial|radioButton|radioButtonGrp|radioCollection|radioMenuItemCollection|rampColorPort|rand|randomizeFollicles|randstate|rangeControl|readTake|rebuildCurve|rebuildSurface|recordAttr|recordDevice|redo|reference|referenceEdit|referenceQuery|refineSubdivSelectionList|refresh|refreshAE|registerPluginResource|rehash|reloadImage|removeJoint|removeMultiInstance|removePanelCategory|rename|renameAttr|renameSelectionList|renameUI|render|renderGlobalsNode|renderInfo|renderLayerButton|renderLayerParent|renderLayerPostProcess|renderLayerUnparent|renderManip|renderPartition|renderQualityNode|renderSettings|renderThumbnailUpdate|renderWindowEditor|renderWindowSelectContext|renderer|reorder|reorderDeformers|requires|reroot|resampleFluid|resetAE|resetPfxToPolyCamera|resetTool|resolutionNode|retarget|reverseCurve|reverseSurface|revolve|rgb_to_hsv|rigidBody|rigidSolver|roll|rollCtx|rootOf|rot|rotate|rotationInterpolation|roundConstantRadius|rowColumnLayout|rowLayout|runTimeCommand|runup|sampleImage|saveAllShelves|saveAttrPreset|saveFluid|saveImage|saveInitialState|saveMenu|savePrefObjects|savePrefs|saveShelf|saveToolSettings|scale|scaleBrushBrightness|scaleComponents|scaleConstraint|scaleKey|scaleKeyCtx|sceneEditor|sceneUIReplacement|scmh|scriptCtx|scriptEditorInfo|scriptJob|scriptNode|scriptTable|scriptToShelf|scriptedPanel|scriptedPanelType|scrollField|scrollLayout|sculpt|searchPathArray|seed|selLoadSettings|select|selectContext|selectCurveCV|selectKey|selectKeyCtx|selectKeyframeRegionCtx|selectMode|selectPref|selectPriority|selectType|selectedNodes|selectionConnection|separator|setAttr|setAttrEnumResource|setAttrMapping|setAttrNiceNameResource|setConstraintRestPosition|setDefaultShadingGroup|setDrivenKeyframe|setDynamic|setEditCtx|setEditor|setFluidAttr|setFocus|setInfinity|setInputDeviceMapping|setKeyCtx|setKeyPath|setKeyframe|setKeyframeBlendshapeTargetWts|setMenuMode|setNodeNiceNameResource|setNodeTypeFlag|setParent|setParticleAttr|setPfxToPolyCamera|setPluginResource|setProject|setStampDensity|setStartupMessage|setState|setToolTo|setUITemplate|setXformManip|sets|shadingConnection|shadingGeometryRelCtx|shadingLightRelCtx|shadingNetworkCompare|shadingNode|shapeCompare|shelfButton|shelfLayout|shelfTabLayout|shellField|shortNameOf|showHelp|showHidden|showManipCtx|showSelectionInTitle|showShadingGroupAttrEditor|showWindow|sign|simplify|sin|singleProfileBirailSurface|size|sizeBytes|skinCluster|skinPercent|smoothCurve|smoothTangentSurface|smoothstep|snap2to2|snapKey|snapMode|snapTogetherCtx|snapshot|soft|softMod|softModCtx|sort|sound|soundControl|source|spaceLocator|sphere|sphrand|spotLight|spotLightPreviewPort|spreadSheetEditor|spring|sqrt|squareSurface|srtContext|stackTrace|startString|startsWith|stitchAndExplodeShell|stitchSurface|stitchSurfacePoints|strcmp|stringArrayCatenate|stringArrayContains|stringArrayCount|stringArrayInsertAtIndex|stringArrayIntersector|stringArrayRemove|stringArrayRemoveAtIndex|stringArrayRemoveDuplicates|stringArrayRemoveExact|stringArrayToString|stringToStringArray|strip|stripPrefixFromName|stroke|subdAutoProjection|subdCleanTopology|subdCollapse|subdDuplicateAndConnect|subdEditUV|subdListComponentConversion|subdMapCut|subdMapSewMove|subdMatchTopology|subdMirror|subdToBlind|subdToPoly|subdTransferUVsToCache|subdiv|subdivCrease|subdivDisplaySmoothness|substitute|substituteAllString|substituteGeometry|substring|surface|surfaceSampler|surfaceShaderList|swatchDisplayPort|switchTable|symbolButton|symbolCheckBox|sysFile|system|tabLayout|tan|tangentConstraint|texLatticeDeformContext|texManipContext|texMoveContext|texMoveUVShellContext|texRotateContext|texScaleContext|texSelectContext|texSelectShortestPathCtx|texSmudgeUVContext|texWinToolCtx|text|textCurves|textField|textFieldButtonGrp|textFieldGrp|textManip|textScrollList|textToShelf|textureDisplacePlane|textureHairColor|texturePlacementContext|textureWindow|threadCount|threePointArcCtx|timeControl|timePort|timerX|toNativePath|toggle|toggleAxis|toggleWindowVisibility|tokenize|tokenizeList|tolerance|tolower|toolButton|toolCollection|toolDropped|toolHasOptions|toolPropertyWindow|torus|toupper|trace|track|trackCtx|transferAttributes|transformCompare|transformLimits|translator|trim|trunc|truncateFluidCache|truncateHairCache|tumble|tumbleCtx|turbulence|twoPointArcCtx|uiRes|uiTemplate|unassignInputDevice|undo|undoInfo|ungroup|uniform|unit|unloadPlugin|untangleUV|untitledFileName|untrim|upAxis|updateAE|userCtx|uvLink|uvSnapshot|validateShelfName|vectorize|view2dToolCtx|viewCamera|viewClipPlane|viewFit|viewHeadOn|viewLookAt|viewManip|viewPlace|viewSet|visor|volumeAxis|vortex|waitCursor|warning|webBrowser|webBrowserPrefs|whatIs|window|windowPref|wire|wireContext|workspace|wrinkle|wrinkleContext|writeTake|xbmLangPathList|xform)\b/,operator:[/\+[+=]?|-[-=]?|&&|\|\||[<>]=|[*\/!=]=?|[%^]/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,:;?\[\](){}]/},e.languages.mel.code.inside.rest=e.languages.mel}e.exports=r,r.displayName="mel",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.mizar={comment:/::.+/,keyword:/@proof\b|\b(?:according|aggregate|all|and|antonym|are|as|associativity|assume|asymmetry|attr|be|begin|being|by|canceled|case|cases|clusters?|coherence|commutativity|compatibility|connectedness|consider|consistency|constructors|contradiction|correctness|def|deffunc|define|definitions?|defpred|do|does|equals|end|environ|ex|exactly|existence|for|from|func|given|hence|hereby|holds|idempotence|identity|iff?|implies|involutiveness|irreflexivity|is|it|let|means|mode|non|not|notations?|now|of|or|otherwise|over|per|pred|prefix|projectivity|proof|provided|qua|reconsider|redefine|reduce|reducibility|reflexivity|registrations?|requirements|reserve|sch|schemes?|section|selector|set|sethood|st|struct|such|suppose|symmetry|synonym|take|that|the|then|theorems?|thesis|thus|to|transitivity|uniqueness|vocabular(?:y|ies)|when|where|with|wrt)\b/,parameter:{pattern:/\$(?:10|\d)/,alias:"variable"},variable:/\w+(?=:)/,number:/(?:\b|-)\d+\b/,operator:/\.\.\.|->|&|\.?=/,punctuation:/\(#|#\)|[,:;\[\](){}]/}}e.exports=r,r.displayName="mizar",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.monkey={string:/"[^"\r\n]*"/,comment:[{pattern:/^#Rem\s+[\s\S]*?^#End/im,greedy:!0},{pattern:/'.+/,greedy:!0}],preprocessor:{pattern:/(^[ \t]*)#.+/m,lookbehind:!0,alias:"comment"},function:/\w+(?=\()/,"type-char":{pattern:/(\w)[?%#$]/,lookbehind:!0,alias:"variable"},number:{pattern:/((?:\.\.)?)(?:(?:\b|\B-\.?|\B\.)\d+(?:(?!\.\.)\.\d*)?|\$[\da-f]+)/i,lookbehind:!0},keyword:/\b(?:Void|Strict|Public|Private|Property|Bool|Int|Float|String|Array|Object|Continue|Exit|Import|Extern|New|Self|Super|Try|Catch|Eachin|True|False|Extends|Abstract|Final|Select|Case|Default|Const|Local|Global|Field|Method|Function|Class|End|If|Then|Else|ElseIf|EndIf|While|Wend|Repeat|Until|Forever|For|To|Step|Next|Return|Module|Interface|Implements|Inline|Throw|Null)\b/i,operator:/\.\.|<[=>]?|>=?|:?=|(?:[+\-*\/&~|]|\b(?:Mod|Shl|Shr)\b)=?|\b(?:And|Not|Or)\b/i,punctuation:/[.,:;()\[\]]/}}e.exports=r,r.displayName="monkey",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.n4js=e.languages.extend("javascript",{keyword:/\b(?:any|Array|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),e.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),e.languages.n4jsd=e.languages.n4js}e.exports=r,r.displayName="n4js",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.nasm={comment:/;.*$/m,string:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,label:{pattern:/(^\s*)[A-Za-z._?$][\w.?$@~#]*:/m,lookbehind:!0,alias:"function"},keyword:[/\[?BITS (?:16|32|64)\]?/,{pattern:/(^\s*)section\s*[a-zA-Z.]+:?/im,lookbehind:!0},/(?:extern|global)[^;\r\n]*/i,/(?:CPU|FLOAT|DEFAULT).*$/m],register:{pattern:/\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|sp|si|di)|[cdefgs]s)\b/i,alias:"variable"},number:/(?:\b|(?=\$))(?:0[hx][\da-f]*\.?[\da-f]+(?:p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|\d*\.?\d+(?:\.?e[+-]?\d+)?[dt]?)\b/i,operator:/[\[\]*+\-\/%<>=&|$!]/}}e.exports=r,r.displayName="nasm",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.nginx=e.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},keyword:/\b(?:CONTENT_|DOCUMENT_|GATEWAY_|HTTP_|HTTPS|if_not_empty|PATH_|QUERY_|REDIRECT_|REMOTE_|REQUEST_|SCGI|SCRIPT_|SERVER_|http|events|accept_mutex|accept_mutex_delay|access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth|auth_basic|auth_basic_user_file|auth_http|auth_http_header|auth_http_timeout|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|debug_connection|debug_points|default_type|deny|devpoll_changes|devpoll_events|directio|directio_alignment|disable_symlinks|empty_gif|env|epoll_events|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_redirect_errors|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|google_perftools_profiles|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|imap_capabilities|imap_client_buffer|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|kqueue_changes|kqueue_events|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|lock_file|log_format|log_format_combined|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|multi_accept|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|pop3_auth|pop3_capabilities|port_in_redirect|post_action|postpone_output|protocol|proxy|proxy_buffer|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_error_message|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_redirect_errors|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|proxy_timeout|proxy_upstream_fail_timeout|proxy_upstream_max_fails|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|rtsig_overflow_events|rtsig_overflow_test|rtsig_overflow_threshold|rtsig_signo|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|smtp_auth|smtp_capabilities|so_keepalive|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|starttls|stub_status|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timeout|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|use|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_rlimit_sigpending|working_directory|xclient|xml_entities|xslt_entities|xslt_stylesheet|xslt_types)\b/i}),e.languages.insertBefore("nginx","keyword",{variable:/\$[a-z_]+/i})}e.exports=r,r.displayName="nginx",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.nim={comment:/#.*/,string:{pattern:/(?:(?:\b(?!\d)(?:\w|\\x[8-9a-fA-F][0-9a-fA-F])+)?(?:"""[\s\S]*?"""(?!")|"(?:\\[\s\S]|""|[^"\\])*")|'(?:\\(?:\d+|x[\da-fA-F]{2}|.)|[^'])')/,greedy:!0},number:/\b(?:0[xXoObB][\da-fA-F_]+|\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:[eE][+-]?\d[\d_]*)?)(?:'?[iuf]\d*)?/,keyword:/\b(?:addr|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|include|interface|iterator|let|macro|method|mixin|nil|object|out|proc|ptr|raise|ref|return|static|template|try|tuple|type|using|var|when|while|with|without|yield)\b/,function:{pattern:/(?:(?!\d)(?:\w|\\x[8-9a-fA-F][0-9a-fA-F])+|`[^`\r\n]+`)\*?(?:\[[^\]]+\])?(?=\s*\()/,inside:{operator:/\*$/}},ignore:{pattern:/`[^`\r\n]+`/,inside:{punctuation:/`/}},operator:{pattern:/(^|[({\[](?=\.\.)|(?![({\[]\.).)(?:(?:[=+\-*\/<>@$~&%|!?^:\\]|\.\.|\.(?![)}\]]))+|\b(?:and|div|of|or|in|is|isnot|mod|not|notin|shl|shr|xor)\b)/m,lookbehind:!0},punctuation:/[({\[]\.|\.[)}\]]|[`(){}\[\],:]/}}e.exports=r,r.displayName="nim",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.nix={comment:/\/\*[\s\S]*?\*\/|#.*/,string:{pattern:/"(?:[^"\\]|\\[\s\S])*"|''(?:(?!'')[\s\S]|''(?:'|\\|\$\{))*''/,greedy:!0,inside:{interpolation:{pattern:/(^|(?:^|(?!'').)[^\\])\$\{(?:[^}]|\{[^}]*\})*}/,lookbehind:!0,inside:{antiquotation:{pattern:/^\$(?=\{)/,alias:"variable"}}}}},url:[/\b(?:[a-z]{3,7}:\/\/)[\w\-+%~\/.:#=?&]+/,{pattern:/([^\/])(?:[\w\-+%~.:#=?&]*(?!\/\/)[\w\-+%~\/.:#=?&])?(?!\/\/)\/[\w\-+%~\/.:#=?&]*/,lookbehind:!0}],antiquotation:{pattern:/\$(?=\{)/,alias:"variable"},number:/\b\d+\b/,keyword:/\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\b/,function:/\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:url|Tarball)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\b|\bfoldl'\B/,boolean:/\b(?:true|false)\b/,operator:/[=!<>]=?|\+\+?|\|\||&&|\/\/|->?|[?@]/,punctuation:/[{}()[\].,:;]/},e.languages.nix.string.inside.interpolation.inside.rest=e.languages.nix}e.exports=r,r.displayName="nix",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.nsis={comment:{pattern:/(^|[^\\])(\/\*[\s\S]*?\*\/|[#;].*)/,lookbehind:!0},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:{pattern:/(^\s*)(?:Abort|Add(?:BrandingImage|Size)|AdvSplash|Allow(?:RootDirInstall|SkipFiles)|AutoCloseWindow|Banner|BG(?:Font|Gradient|Image)|BrandingText|BringToFront|Call(?:InstDLL)?|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|Create(?:Directory|Font|ShortCut)|Delete(?:INISec|INIStr|RegKey|RegValue)?|Detail(?:Print|sButtonText)|Dialer|Dir(?:Text|Var|Verify)|EnableWindow|Enum(?:RegKey|RegValue)|Exch|Exec(?:Shell(?:Wait)?|Wait)?|ExpandEnvStrings|File(?:BufSize|Close|ErrorText|Open|Read|ReadByte|ReadUTF16LE|ReadWord|WriteUTF16LE|Seek|Write|WriteByte|WriteWord)?|Find(?:Close|First|Next|Window)|FlushINI|Get(?:CurInstType|CurrentAddress|DlgItem|DLLVersion(?:Local)?|ErrorLevel|FileTime(?:Local)?|FullPathName|Function(?:Address|End)?|InstDirError|LabelAddress|TempFileName)|Goto|HideWindow|Icon|If(?:Abort|Errors|FileExists|RebootFlag|Silent)|InitPluginsDir|Install(?:ButtonText|Colors|Dir(?:RegKey)?)|InstProgressFlags|Inst(?:Type(?:GetText|SetText)?)|Int(?:64|Ptr)?CmpU?|Int(?:64)?Fmt|Int(?:Ptr)?Op|IsWindow|Lang(?:DLL|String)|License(?:BkColor|Data|ForceSelection|LangString|Text)|LoadLanguageFile|LockWindow|Log(?:Set|Text)|Manifest(?:DPIAware|SupportedOS)|Math|MessageBox|MiscButtonText|Name|Nop|ns(?:Dialogs|Exec)|NSISdl|OutFile|Page(?:Callbacks)?|PE(?:DllCharacteristics|SubsysVer)|Pop|Push|Quit|Read(?:EnvStr|INIStr|RegDWORD|RegStr)|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|Section(?:End|GetFlags|GetInstTypes|GetSize|GetText|Group|In|SetFlags|SetInstTypes|SetSize|SetText)?|SendMessage|Set(?:AutoClose|BrandingImage|Compress|Compressor(?:DictSize)?|CtlColors|CurInstType|DatablockOptimize|DateSave|Details(?:Print|View)|ErrorLevel|Errors|FileAttributes|Font|OutPath|Overwrite|PluginUnload|RebootFlag|RegView|ShellVarContext|Silent)|Show(?:InstDetails|UninstDetails|Window)|Silent(?:Install|UnInstall)|Sleep|SpaceTexts|Splash|StartMenu|Str(?:CmpS?|Cpy|Len)|SubCaption|System|Unicode|Uninstall(?:ButtonText|Caption|Icon|SubCaption|Text)|UninstPage|UnRegDLL|UserInfo|Var|VI(?:AddVersionKey|FileVersion|ProductVersion)|VPatch|WindowIcon|Write(?:INIStr|Reg(?:Bin|DWORD|ExpandStr|MultiStr|None|Str)|Uninstaller)|XPStyle)\b/m,lookbehind:!0},property:/\b(?:admin|all|auto|both|colored|false|force|hide|highest|lastused|leave|listonly|none|normal|notset|off|on|open|print|show|silent|silentlog|smooth|textonly|true|user|ARCHIVE|FILE_(ATTRIBUTE_ARCHIVE|ATTRIBUTE_NORMAL|ATTRIBUTE_OFFLINE|ATTRIBUTE_READONLY|ATTRIBUTE_SYSTEM|ATTRIBUTE_TEMPORARY)|HK((CR|CU|LM)(32|64)?|DD|PD|U)|HKEY_(CLASSES_ROOT|CURRENT_CONFIG|CURRENT_USER|DYN_DATA|LOCAL_MACHINE|PERFORMANCE_DATA|USERS)|ID(ABORT|CANCEL|IGNORE|NO|OK|RETRY|YES)|MB_(ABORTRETRYIGNORE|DEFBUTTON1|DEFBUTTON2|DEFBUTTON3|DEFBUTTON4|ICONEXCLAMATION|ICONINFORMATION|ICONQUESTION|ICONSTOP|OK|OKCANCEL|RETRYCANCEL|RIGHT|RTLREADING|SETFOREGROUND|TOPMOST|USERICON|YESNO)|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)\b/,constant:/\${[\w\.:\^-]+}|\$\([\w\.:\^-]+\)/i,variable:/\$\w+/i,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|\+\+?|<=?|>=?|==?=?|&&?|\|\|?|[?*\/~^%]/,punctuation:/[{}[\];(),.:]/,important:{pattern:/(^\s*)!(?:addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|ifdef|ifmacrodef|ifmacrondef|ifndef|if|include|insertmacro|macroend|macro|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|verbose|warning)\b/im,lookbehind:!0}}}e.exports=r,r.displayName="nsis",r.aliases=[]},function(e,t,n){"use strict";var r=n(34);function o(e){e.register(r),e.languages.objectivec=e.languages.extend("c",{keyword:/\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,string:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/})}e.exports=o,o.displayName="objectivec",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*\.?[\d_]*(?:e[+-]?[\d_]+)?)/i,type:{pattern:/\B['`]\w*/,alias:"variable"},directive:{pattern:/\B#\w+/,alias:"function"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|prefix|private|rec|then|sig|struct|to|try|type|val|value|virtual|where|while|with)\b/,boolean:/\b(?:false|true)\b/,operator:/:=|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lxor|lsl|lsr|mod|nor|or)\b/,punctuation:/[(){}\[\]|_.,:;]/}}e.exports=r,r.displayName="ocaml",r.aliases=[]},function(e,t,n){"use strict";var r=n(34),o=n(96);function a(e){e.register(r),e.register(o),function(e){e.languages.opencl=e.languages.extend("c",{keyword:/\b(?:__attribute__|(?:__)?(?:constant|global|kernel|local|private|read_only|read_write|write_only)|_cl_(?:command_queue|context|device_id|event|kernel|mem|platform_id|program|sampler)|auto|break|case|cl_(?:image_format|mem_fence_flags)|clk_event_t|complex|const|continue|default|do|(?:float|double)(?:16(?:x(?:1|16|2|4|8))?|1x(?:1|16|2|4|8)|2(?:x(?:1|16|2|4|8))?|3|4(?:x(?:1|16|2|4|8))?|8(?:x(?:1|16|2|4|8))?)?|else|enum|event_t|extern|for|goto|(?:u?(?:char|short|int|long)|half|quad|bool)(?:2|3|4|8|16)?|if|image(?:1d_(?:array_|buffer_)?t|2d_(?:array_(?:depth_|msaa_depth_|msaa_)?|depth_|msaa_depth_|msaa_)?t|3d_t)|imaginary|inline|intptr_t|ndrange_t|packed|pipe|ptrdiff_t|queue_t|register|reserve_id_t|restrict|return|sampler_t|signed|size_t|sizeof|static|struct|switch|typedef|uintptr_t|uniform|union|unsigned|void|volatile|while)\b/,"function-opencl-kernel":{pattern:/\b(?:abs(?:_diff)?|a?(?:cos|sin)(?:h|pi)?|add_sat|aligned|all|and|any|async(?:_work_group_copy|_work_group_strided_copy)?|atan(?:2?(?:pi)?|h)?|atom_(?:add|and|cmpxchg|dec|inc|max|min|or|sub|xchg|xor)|barrier|bitselect|cbrt|ceil|clamp|clz|copies|copysign|cross|degrees|distance|dot|endian|erf|erfc|exp(?:2|10)?|expm1|fabs|fast_(?:distance|length|normalize)|fdim|floor|fma|fmax|fmin|fract|frexp|fro|from|get_(?:global_(?:id|offset|size)|group_id|image_(?:channel_data_type|channel_order|depth|dim|height|width)|local(?:_id|_size)|num_groups|work_dim)|hadd|(?:half|native)_(?:cos|divide|exp(?:2|10)?|log(?:2|10)?|powr|recip|r?sqrt|sin|tan)|hypot|ilogb|is(?:equal|finite|greater(?:equal)?|inf|less(?:equal|greater)?|nan|normal|notequal|(?:un)?ordered)|ldexp|length|lgamma|lgamma_r|log(?:b|1p|2|10)?|mad(?:24|_hi|_sat)?|max|mem(?:_fence)?|min|mix|modf|mul24|mul_hi|nan|nextafter|normalize|pow[nr]?|prefetch|radians|read_(?:image)(?:f|h|u?i)|read_mem_fence|remainder|remquo|reqd_work_group_size|rhadd|rint|rootn|rotate|round|rsqrt|select|shuffle2?|sign|signbit|sincos|smoothstep|sqrt|step|sub_sat|tan|tanh|tanpi|tgamma|to|trunc|upsample|vec_(?:step|type_hint)|v(?:load|store)(?:_half)?(?:2|3|4|8|16)?|v(?:loada_half|storea?(?:_half)?)(?:2|3|4|8|16)?(?:_(?:rte|rtn|rtp|rtz))?|wait_group_events|work_group_size_hint|write_image(?:f|h|u?i)|write_mem_fence)\b/,alias:"function"},"constant-opencl-kernel":{pattern:/\b(?:CHAR_(?:BIT|MAX|MIN)|CLK_(?:ADDRESS_(?:CLAMP(?:_TO_EDGE)?|NONE|REPEAT)|FILTER_(?:LINEAR|NEAREST)|(?:LOCAL|GLOBAL)_MEM_FENCE|NORMALIZED_COORDS_(?:FALSE|TRUE))|CL_(?:BGRA|(?:HALF_)?FLOAT|INTENSITY|LUMINANCE|A?R?G?B?[Ax]?|(?:(?:UN)?SIGNED|[US]NORM)_(?:INT(?:8|16|32))|UNORM_(?:INT_101010|SHORT_(?:555|565)))|(?:DBL|FLT)_(?:DIG|EPSILON|MANT_DIG|(?:MIN|MAX)(?:(?:_10)?_EXP)?)|FLT_RADIX|HUGE_VALF|INFINITY|(?:INT|LONG|SCHAR|SHRT|UCHAR|UINT|ULONG)_(?:MAX|MIN)|MAXFLOAT|M_(?:[12]_PI|2_SQRTPI|E|LN(?:2|10)|LOG(?:10|2)E?|PI[24]?|SQRT(?:1_2|2))|NAN)\b/,alias:"constant"}});var t={"type-opencl-host":{pattern:/\b(?:cl_(?:GLenum|GLint|GLuin|addressing_mode|bitfield|bool|buffer_create_type|build_status|channel_(?:order|type)|(?:u?(?:char|short|int|long)|float|double)(?:2|3|4|8|16)?|command_(?:queue(?:_info|_properties)?|type)|context(?:_info|_properties)?|device_(?:exec_capabilities|fp_config|id|info|local_mem_type|mem_cache_type|type)|(?:event|sampler)(?:_info)?|filter_mode|half|image_info|kernel(?:_info|_work_group_info)?|map_flags|mem(?:_flags|_info|_object_type)?|platform_(?:id|info)|profiling_info|program(?:_build_info|_info)?))\b/,alias:"keyword"},"boolean-opencl-host":{pattern:/\bCL_(?:TRUE|FALSE)\b/,alias:"boolean"},"constant-opencl-host":{pattern:/\bCL_(?:A|ABGR|ADDRESS_(?:CLAMP(?:_TO_EDGE)?|MIRRORED_REPEAT|NONE|REPEAT)|ARGB|BGRA|BLOCKING|BUFFER_CREATE_TYPE_REGION|BUILD_(?:ERROR|IN_PROGRESS|NONE|PROGRAM_FAILURE|SUCCESS)|COMMAND_(?:ACQUIRE_GL_OBJECTS|BARRIER|COPY_(?:BUFFER(?:_RECT|_TO_IMAGE)?|IMAGE(?:_TO_BUFFER)?)|FILL_(?:BUFFER|IMAGE)|MAP(?:_BUFFER|_IMAGE)|MARKER|MIGRATE(?:_SVM)?_MEM_OBJECTS|NATIVE_KERNEL|NDRANGE_KERNEL|READ_(?:BUFFER(?:_RECT)?|IMAGE)|RELEASE_GL_OBJECTS|SVM_(?:FREE|MAP|MEMCPY|MEMFILL|UNMAP)|TASK|UNMAP_MEM_OBJECT|USER|WRITE_(?:BUFFER(?:_RECT)?|IMAGE))|COMPILER_NOT_AVAILABLE|COMPILE_PROGRAM_FAILURE|COMPLETE|CONTEXT_(?:DEVICES|INTEROP_USER_SYNC|NUM_DEVICES|PLATFORM|PROPERTIES|REFERENCE_COUNT)|DEPTH(?:_STENCIL)?|DEVICE_(?:ADDRESS_BITS|AFFINITY_DOMAIN_(?:L[1-4]_CACHE|NEXT_PARTITIONABLE|NUMA)|AVAILABLE|BUILT_IN_KERNELS|COMPILER_AVAILABLE|DOUBLE_FP_CONFIG|ENDIAN_LITTLE|ERROR_CORRECTION_SUPPORT|EXECUTION_CAPABILITIES|EXTENSIONS|GLOBAL_(?:MEM_(?:CACHELINE_SIZE|CACHE_SIZE|CACHE_TYPE|SIZE)|VARIABLE_PREFERRED_TOTAL_SIZE)|HOST_UNIFIED_MEMORY|IL_VERSION|IMAGE(?:2D_MAX_(?:HEIGHT|WIDTH)|3D_MAX_(?:DEPTH|HEIGHT|WIDTH)|_BASE_ADDRESS_ALIGNMENT|_MAX_ARRAY_SIZE|_MAX_BUFFER_SIZE|_PITCH_ALIGNMENT|_SUPPORT)|LINKER_AVAILABLE|LOCAL_MEM_SIZE|LOCAL_MEM_TYPE|MAX_(?:CLOCK_FREQUENCY|COMPUTE_UNITS|CONSTANT_ARGS|CONSTANT_BUFFER_SIZE|GLOBAL_VARIABLE_SIZE|MEM_ALLOC_SIZE|NUM_SUB_GROUPS|ON_DEVICE_(?:EVENTS|QUEUES)|PARAMETER_SIZE|PIPE_ARGS|READ_IMAGE_ARGS|READ_WRITE_IMAGE_ARGS|SAMPLERS|WORK_GROUP_SIZE|WORK_ITEM_DIMENSIONS|WORK_ITEM_SIZES|WRITE_IMAGE_ARGS)|MEM_BASE_ADDR_ALIGN|MIN_DATA_TYPE_ALIGN_SIZE|NAME|NATIVE_VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT)|NOT_(?:AVAILABLE|FOUND)|OPENCL_C_VERSION|PARENT_DEVICE|PARTITION_(?:AFFINITY_DOMAIN|BY_AFFINITY_DOMAIN|BY_COUNTS|BY_COUNTS_LIST_END|EQUALLY|FAILED|MAX_SUB_DEVICES|PROPERTIES|TYPE)|PIPE_MAX_(?:ACTIVE_RESERVATIONS|PACKET_SIZE)|PLATFORM|PREFERRED_(?:GLOBAL_ATOMIC_ALIGNMENT|INTEROP_USER_SYNC|LOCAL_ATOMIC_ALIGNMENT|PLATFORM_ATOMIC_ALIGNMENT|VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT))|PRINTF_BUFFER_SIZE|PROFILE|PROFILING_TIMER_RESOLUTION|QUEUE_(?:ON_(?:DEVICE_(?:MAX_SIZE|PREFERRED_SIZE|PROPERTIES)|HOST_PROPERTIES)|PROPERTIES)|REFERENCE_COUNT|SINGLE_FP_CONFIG|SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS|SVM_(?:ATOMICS|CAPABILITIES|COARSE_GRAIN_BUFFER|FINE_GRAIN_BUFFER|FINE_GRAIN_SYSTEM)|TYPE(?:_ACCELERATOR|_ALL|_CPU|_CUSTOM|_DEFAULT|_GPU)?|VENDOR(?:_ID)?|VERSION)|DRIVER_VERSION|EVENT_(?:COMMAND_(?:EXECUTION_STATUS|QUEUE|TYPE)|CONTEXT|REFERENCE_COUNT)|EXEC_(?:KERNEL|NATIVE_KERNEL|STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST)|FILTER_(?:LINEAR|NEAREST)|FLOAT|FP_(?:CORRECTLY_ROUNDED_DIVIDE_SQRT|DENORM|FMA|INF_NAN|ROUND_TO_INF|ROUND_TO_NEAREST|ROUND_TO_ZERO|SOFT_FLOAT)|GLOBAL|HALF_FLOAT|IMAGE_(?:ARRAY_SIZE|BUFFER|DEPTH|ELEMENT_SIZE|FORMAT|FORMAT_MISMATCH|FORMAT_NOT_SUPPORTED|HEIGHT|NUM_MIP_LEVELS|NUM_SAMPLES|ROW_PITCH|SLICE_PITCH|WIDTH)|INTENSITY|INVALID_(?:ARG_INDEX|ARG_SIZE|ARG_VALUE|BINARY|BUFFER_SIZE|BUILD_OPTIONS|COMMAND_QUEUE|COMPILER_OPTIONS|CONTEXT|DEVICE|DEVICE_PARTITION_COUNT|DEVICE_QUEUE|DEVICE_TYPE|EVENT|EVENT_WAIT_LIST|GLOBAL_OFFSET|GLOBAL_WORK_SIZE|GL_OBJECT|HOST_PTR|IMAGE_DESCRIPTOR|IMAGE_FORMAT_DESCRIPTOR|IMAGE_SIZE|KERNEL|KERNEL_ARGS|KERNEL_DEFINITION|KERNEL_NAME|LINKER_OPTIONS|MEM_OBJECT|MIP_LEVEL|OPERATION|PIPE_SIZE|PLATFORM|PROGRAM|PROGRAM_EXECUTABLE|PROPERTY|QUEUE_PROPERTIES|SAMPLER|VALUE|WORK_DIMENSION|WORK_GROUP_SIZE|WORK_ITEM_SIZE)|KERNEL_(?:ARG_(?:ACCESS_(?:NONE|QUALIFIER|READ_ONLY|READ_WRITE|WRITE_ONLY)|ADDRESS_(?:CONSTANT|GLOBAL|LOCAL|PRIVATE|QUALIFIER)|INFO_NOT_AVAILABLE|NAME|TYPE_(?:CONST|NAME|NONE|PIPE|QUALIFIER|RESTRICT|VOLATILE))|ATTRIBUTES|COMPILE_NUM_SUB_GROUPS|COMPILE_WORK_GROUP_SIZE|CONTEXT|EXEC_INFO_SVM_FINE_GRAIN_SYSTEM|EXEC_INFO_SVM_PTRS|FUNCTION_NAME|GLOBAL_WORK_SIZE|LOCAL_MEM_SIZE|LOCAL_SIZE_FOR_SUB_GROUP_COUNT|MAX_NUM_SUB_GROUPS|MAX_SUB_GROUP_SIZE_FOR_NDRANGE|NUM_ARGS|PREFERRED_WORK_GROUP_SIZE_MULTIPLE|PRIVATE_MEM_SIZE|PROGRAM|REFERENCE_COUNT|SUB_GROUP_COUNT_FOR_NDRANGE|WORK_GROUP_SIZE)|LINKER_NOT_AVAILABLE|LINK_PROGRAM_FAILURE|LOCAL|LUMINANCE|MAP_(?:FAILURE|READ|WRITE|WRITE_INVALIDATE_REGION)|MEM_(?:ALLOC_HOST_PTR|ASSOCIATED_MEMOBJECT|CONTEXT|COPY_HOST_PTR|COPY_OVERLAP|FLAGS|HOST_NO_ACCESS|HOST_PTR|HOST_READ_ONLY|HOST_WRITE_ONLY|KERNEL_READ_AND_WRITE|MAP_COUNT|OBJECT_(?:ALLOCATION_FAILURE|BUFFER|IMAGE1D|IMAGE1D_ARRAY|IMAGE1D_BUFFER|IMAGE2D|IMAGE2D_ARRAY|IMAGE3D|PIPE)|OFFSET|READ_ONLY|READ_WRITE|REFERENCE_COUNT|SIZE|SVM_ATOMICS|SVM_FINE_GRAIN_BUFFER|TYPE|USES_SVM_POINTER|USE_HOST_PTR|WRITE_ONLY)|MIGRATE_MEM_OBJECT_(?:CONTENT_UNDEFINED|HOST)|MISALIGNED_SUB_BUFFER_OFFSET|NONE|NON_BLOCKING|OUT_OF_(?:HOST_MEMORY|RESOURCES)|PIPE_(?:MAX_PACKETS|PACKET_SIZE)|PLATFORM_(?:EXTENSIONS|HOST_TIMER_RESOLUTION|NAME|PROFILE|VENDOR|VERSION)|PROFILING_(?:COMMAND_(?:COMPLETE|END|QUEUED|START|SUBMIT)|INFO_NOT_AVAILABLE)|PROGRAM_(?:BINARIES|BINARY_SIZES|BINARY_TYPE(?:_COMPILED_OBJECT|_EXECUTABLE|_LIBRARY|_NONE)?|BUILD_(?:GLOBAL_VARIABLE_TOTAL_SIZE|LOG|OPTIONS|STATUS)|CONTEXT|DEVICES|IL|KERNEL_NAMES|NUM_DEVICES|NUM_KERNELS|REFERENCE_COUNT|SOURCE)|QUEUED|QUEUE_(?:CONTEXT|DEVICE|DEVICE_DEFAULT|ON_DEVICE|ON_DEVICE_DEFAULT|OUT_OF_ORDER_EXEC_MODE_ENABLE|PROFILING_ENABLE|PROPERTIES|REFERENCE_COUNT|SIZE)|R|RA|READ_(?:ONLY|WRITE)_CACHE|RG|RGB|RGBA|RGBx|RGx|RUNNING|Rx|SAMPLER_(?:ADDRESSING_MODE|CONTEXT|FILTER_MODE|LOD_MAX|LOD_MIN|MIP_FILTER_MODE|NORMALIZED_COORDS|REFERENCE_COUNT)|(?:UN)?SIGNED_INT(?:8|16|32)|SNORM_INT(?:8|16)|SUBMITTED|SUCCESS|UNORM_INT(?:16|24|8|_101010|_101010_2)|UNORM_SHORT_(?:555|565)|VERSION_(?:1_0|1_1|1_2|2_0|2_1)|sBGRA|sRGB|sRGBA|sRGBx)\b/,alias:"constant"},"function-opencl-host":{pattern:/\bcl(?:BuildProgram|CloneKernel|CompileProgram|Create(?:Buffer|CommandQueue(?:WithProperties)?|Context|ContextFromType|Image|Image2D|Image3D|Kernel|KernelsInProgram|Pipe|ProgramWith(?:Binary|BuiltInKernels|IL|Source)|Sampler|SamplerWithProperties|SubBuffer|SubDevices|UserEvent)|Enqueue(?:(?:Barrier|Marker)(?:WithWaitList)?|Copy(?:Buffer(?:Rect|ToImage)?|Image(?:ToBuffer)?)|(?:Fill|Map)(?:Buffer|Image)|MigrateMemObjects|NDRangeKernel|NativeKernel|(?:Read|Write)(?:Buffer(?:Rect)?|Image)|SVM(?:Free|Map|MemFill|Memcpy|MigrateMem|Unmap)|Task|UnmapMemObject|WaitForEvents)|Finish|Flush|Get(?:CommandQueueInfo|ContextInfo|Device(?:AndHostTimer|IDs|Info)|Event(?:Profiling)?Info|ExtensionFunctionAddress(?:ForPlatform)?|HostTimer|ImageInfo|Kernel(?:ArgInfo|Info|SubGroupInfo|WorkGroupInfo)|MemObjectInfo|PipeInfo|Platform(?:IDs|Info)|Program(?:Build)?Info|SamplerInfo|SupportedImageFormats)|LinkProgram|(?:Release|Retain)(?:CommandQueue|Context|Device|Event|Kernel|MemObject|Program|Sampler)|SVM(?:Alloc|Free)|Set(?:CommandQueueProperty|DefaultDeviceCommandQueue|EventCallback|Kernel(?:Arg(?:SVMPointer)?|ExecInfo)|Kernel|MemObjectDestructorCallback|UserEventStatus)|Unload(?:Platform)?Compiler|WaitForEvents)\b/,alias:"function"}};e.languages.insertBefore("c","keyword",t),t["type-opencl-host-c++"]={pattern:/\b(?:Buffer|BufferGL|BufferRenderGL|CommandQueue|Context|Device|DeviceCommandQueue|EnqueueArgs|Event|Image|Image1D|Image1DArray|Image1DBuffer|Image2D|Image2DArray|Image2DGL|Image3D|Image3DGL|ImageFormat|ImageGL|Kernel|KernelFunctor|LocalSpaceArg|Memory|NDRange|Pipe|Platform|Program|Sampler|SVMAllocator|SVMTraitAtomic|SVMTraitCoarse|SVMTraitFine|SVMTraitReadOnly|SVMTraitReadWrite|SVMTraitWriteOnly|UserEvent)\b/,alias:"keyword"},e.languages.insertBefore("cpp","keyword",t)}(e)}e.exports=a,a.displayName="opencl",a.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.oz={comment:/\/\*[\s\S]*?\*\/|%.*/,string:{pattern:/"(?:[^"\\]|\\[\s\S])*"/,greedy:!0},atom:{pattern:/'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,alias:"builtin"},keyword:/[$_]|\[\]|\b(?:at|attr|case|catch|choice|class|cond|declare|define|dis|else(?:case|if)?|end|export|fail|false|feat|finally|from|fun|functor|if|import|in|local|lock|meth|nil|not|of|or|prepare|proc|prop|raise|require|self|skip|then|thread|true|try|unit)\b/,function:[/[a-z][A-Za-z\d]*(?=\()/,{pattern:/(\{)[A-Z][A-Za-z\d]*/,lookbehind:!0}],number:/\b(?:0[bx][\da-f]+|\d+\.?\d*(?:e~?\d+)?\b)|&(?:[^\\]|\\(?:\d{3}|.))/i,variable:/\b[A-Z][A-Za-z\d]*|`(?:[^`\\]|\\.)+`/,"attr-name":/\w+(?=:)/,operator:/:(?:=|::?)|<[-:=]?|=(?:=|=?:?|\\=:?|!!?|[|#+\-*\/,~^@]|\b(?:andthen|div|mod|orelse)\b/,punctuation:/[\[\](){}.:;?]/}}e.exports=r,r.displayName="oz",r.aliases=[]},function(e,t,n){"use strict";function r(e){var t;e.languages.parigp={comment:/\/\*[\s\S]*?\*\/|\\\\.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"/,greedy:!0},keyword:(t=["breakpoint","break","dbg_down","dbg_err","dbg_up","dbg_x","forcomposite","fordiv","forell","forpart","forprime","forstep","forsubgroup","forvec","for","iferr","if","local","my","next","return","until","while"],t=t.map(function(e){return e.split("").join(" *")}).join("|"),RegExp("\\b(?:"+t+")\\b")),function:/\w[\w ]*?(?= *\()/,number:{pattern:/((?:\. *\. *)?)(?:\d(?: *\d)*(?: *(?!\. *\.)\.(?: *\d)*)?|\. *\d(?: *\d)*)(?: *e *[+-]? *\d(?: *\d)*)?/i,lookbehind:!0},operator:/\. *\.|[*\/!](?: *=)?|%(?: *=|(?: *#)?(?: *')*)?|\+(?: *[+=])?|-(?: *[-=>])?|<(?:(?: *<)?(?: *=)?| *>)?|>(?: *>)?(?: *=)?|=(?: *=){0,2}|\\(?: *\/)?(?: *=)?|&(?: *&)?|\| *\||['#~^]/,punctuation:/[\[\]{}().,:;|]/}}e.exports=r,r.displayName="parigp",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.parser=e.languages.extend("markup",{keyword:{pattern:/(^|[^^])(?:\^(?:case|eval|for|if|switch|throw)\b|@(?:BASE|CLASS|GET(?:_DEFAULT)?|OPTIONS|SET_DEFAULT|USE)\b)/,lookbehind:!0},variable:{pattern:/(^|[^^])\B\$(?:\w+|(?=[.{]))(?:(?:\.|::?)\w+)*(?:\.|::?)?/,lookbehind:!0,inside:{punctuation:/\.|:+/}},function:{pattern:/(^|[^^])\B[@^]\w+(?:(?:\.|::?)\w+)*(?:\.|::?)?/,lookbehind:!0,inside:{keyword:{pattern:/(^@)(?:GET_|SET_)/,lookbehind:!0},punctuation:/\.|:+/}},escape:{pattern:/\^(?:[$^;@()\[\]{}"':]|#[a-f\d]*)/i,alias:"builtin"},punctuation:/[\[\](){};]/}),e.languages.insertBefore("parser","keyword",{"parser-comment":{pattern:/(\s)#.*/,lookbehind:!0,alias:"comment"},expression:{pattern:/(^|[^^])\((?:[^()]|\((?:[^()]|\((?:[^()])*\))*\))*\)/,greedy:!0,lookbehind:!0,inside:{string:{pattern:/(^|[^^])(["'])(?:(?!\2)[^^]|\^[\s\S])*\2/,lookbehind:!0},keyword:e.languages.parser.keyword,variable:e.languages.parser.variable,function:e.languages.parser.function,boolean:/\b(?:true|false)\b/,number:/\b(?:0x[a-f\d]+|\d+\.?\d*(?:e[+-]?\d+)?)\b/i,escape:e.languages.parser.escape,operator:/[~+*\/\\%]|!(?:\|\|?|=)?|&&?|\|\|?|==|<[<=]?|>[>=]?|-[fd]?|\b(?:def|eq|ge|gt|in|is|le|lt|ne)\b/,punctuation:e.languages.parser.punctuation}}}),e.languages.insertBefore("inside","punctuation",{expression:e.languages.parser.expression,keyword:e.languages.parser.keyword,variable:e.languages.parser.variable,function:e.languages.parser.function,escape:e.languages.parser.escape,"parser-punctuation":{pattern:e.languages.parser.punctuation,alias:"punctuation"}},e.languages.parser.tag.inside["attr-value"])}e.exports=r,r.displayName="parser",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.pascal={comment:[/\(\*[\s\S]+?\*\)/,/\{[\s\S]+?\}/,/\/\/.*/],string:{pattern:/(?:'(?:''|[^'\r\n])*'|#[&$%]?[a-f\d]+)+|\^[a-z]/i,greedy:!0},keyword:[{pattern:/(^|[^&])\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:dispose|exit|false|new|true)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\b/i,lookbehind:!0}],number:[/(?:[&%]\d+|\$[a-f\d]+)/i,/\b\d+(?:\.\d+)?(?:e[+-]?\d+)?/i],operator:[/\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=]/i,{pattern:/(^|[^&])\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\b/,lookbehind:!0}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/},e.languages.objectpascal=e.languages.pascal}e.exports=r,r.displayName="pascal",r.aliases=["objectpascal"]},function(e,t,n){"use strict";function r(e){e.languages.perl={comment:[{pattern:/(^\s*)=\w+[\s\S]*?=cut.*/m,lookbehind:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0}],string:[{pattern:/\b(?:q|qq|qx|qw)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\{(?:[^{}\\]|\\[\s\S])*\}/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\[(?:[^[\]\\]|\\[\s\S])*\]/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:/\b(?:m|qr)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngc]*/,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s+([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\((?:[^()\\]|\\[\s\S])*\)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\{(?:[^{}\\]|\\[\s\S])*\}\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\[(?:[^[\]\\]|\\[\s\S])*\]\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*<(?:[^<>\\]|\\[\s\S])*>\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+)+(?:::)*/i,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*>|\b_\b/,alias:"symbol"},vstring:{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:"string"},function:{pattern:/sub [a-z0-9_]+/i,inside:{keyword:/sub/}},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:\d(?:_?\d)*)?\.?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\b/,punctuation:/[{}[\];(),:]/}}e.exports=r,r.displayName="perl",r.aliases=[]},function(e,t,n){"use strict";var r=n(166);function o(e){e.register(r),e.languages.insertBefore("php","variable",{this:/\$this\b/,global:/\$(?:_(?:SERVER|GET|POST|FILES|REQUEST|SESSION|ENV|COOKIE)|GLOBALS|HTTP_RAW_POST_DATA|argc|argv|php_errormsg|http_response_header)\b/,scope:{pattern:/\b[\w\\]+::/,inside:{keyword:/static|self|parent/,punctuation:/::|\\/}}})}e.exports=o,o.displayName="phpExtras",o.aliases=[]},function(e,t,n){"use strict";var r=n(167);function o(e){e.register(r),e.languages.plsql=e.languages.extend("sql",{comment:[/\/\*[\s\S]*?\*\//,/--.*/]}),"Array"!==e.util.type(e.languages.plsql.keyword)&&(e.languages.plsql.keyword=[e.languages.plsql.keyword]),e.languages.plsql.keyword.unshift(/\b(?:ACCESS|AGENT|AGGREGATE|ARRAY|ARROW|AT|ATTRIBUTE|AUDIT|AUTHID|BFILE_BASE|BLOB_BASE|BLOCK|BODY|BOTH|BOUND|BYTE|CALLING|CHAR_BASE|CHARSET(?:FORM|ID)|CLOB_BASE|COLAUTH|COLLECT|CLUSTERS?|COMPILED|COMPRESS|CONSTANT|CONSTRUCTOR|CONTEXT|CRASH|CUSTOMDATUM|DANGLING|DATE_BASE|DEFINE|DETERMINISTIC|DURATION|ELEMENT|EMPTY|EXCEPTIONS?|EXCLUSIVE|EXTERNAL|FINAL|FORALL|FORM|FOUND|GENERAL|HEAP|HIDDEN|IDENTIFIED|IMMEDIATE|INCLUDING|INCREMENT|INDICATOR|INDEXES|INDICES|INFINITE|INITIAL|ISOPEN|INSTANTIABLE|INTERFACE|INVALIDATE|JAVA|LARGE|LEADING|LENGTH|LIBRARY|LIKE[24C]|LIMITED|LONG|LOOP|MAP|MAXEXTENTS|MAXLEN|MEMBER|MINUS|MLSLABEL|MULTISET|NAME|NAN|NATIVE|NEW|NOAUDIT|NOCOMPRESS|NOCOPY|NOTFOUND|NOWAIT|NUMBER(?:_BASE)?|OBJECT|OCI(?:COLL|DATE|DATETIME|DURATION|INTERVAL|LOBLOCATOR|NUMBER|RAW|REF|REFCURSOR|ROWID|STRING|TYPE)|OFFLINE|ONLINE|ONLY|OPAQUE|OPERATOR|ORACLE|ORADATA|ORGANIZATION|ORL(?:ANY|VARY)|OTHERS|OVERLAPS|OVERRIDING|PACKAGE|PARALLEL_ENABLE|PARAMETERS?|PASCAL|PCTFREE|PIPE(?:LINED)?|PRAGMA|PRIOR|PRIVATE|RAISE|RANGE|RAW|RECORD|REF|REFERENCE|REM|REMAINDER|RESULT|RESOURCE|RETURNING|REVERSE|ROW(?:ID|NUM|TYPE)|SAMPLE|SB[124]|SEGMENT|SELF|SEPARATE|SEQUENCE|SHORT|SIZE(?:_T)?|SPARSE|SQL(?:CODE|DATA|NAME|STATE)|STANDARD|STATIC|STDDEV|STORED|STRING|STRUCT|STYLE|SUBMULTISET|SUBPARTITION|SUBSTITUTABLE|SUBTYPE|SUCCESSFUL|SYNONYM|SYSDATE|TABAUTH|TDO|THE|TIMEZONE_(?:ABBR|HOUR|MINUTE|REGION)|TRAILING|TRANSAC(?:TIONAL)?|TRUSTED|UB[124]|UID|UNDER|UNTRUSTED|VALIDATE|VALIST|VARCHAR2|VARIABLE|VARIANCE|VARRAY|VIEWS|VOID|WHENEVER|WRAPPED|ZONE)\b/i),"Array"!==e.util.type(e.languages.plsql.operator)&&(e.languages.plsql.operator=[e.languages.plsql.operator]),e.languages.plsql.operator.unshift(/:=/)}e.exports=o,o.displayName="plsql",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{function:{pattern:/(^|[^`])\$\((?:\$\(.*?\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*]|[^\[\]])*]|[^\[\]])*]/i,boolean:/\$(?:true|false)\b/i,variable:/\$\w+\b/i,function:[/\b(?:Add-(?:Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(?:Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(?:Csv|Json|StringData)|Convert-Path|ConvertTo-(?:Csv|Html|Json|Xml)|Copy-(?:Item|ItemProperty)|Debug-Process|Disable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(?:Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(?:Custom|List|Table|Wide)|Get-(?:Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(?:Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(?:Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(?:Command|Object)|Move-(?:Item|ItemProperty)|New-(?:Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(?:Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(?:Job|PSSession)|Register-(?:EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(?:Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(?:Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(?:Computer|Service)|Restore-Computer|Resume-(?:Job|Service)|Save-Help|Select-(?:Object|String|Xml)|Send-MailMessage|Set-(?:Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(?:Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(?:Job|Process|Service|Sleep|Transaction)|Stop-(?:Computer|Job|Process|Service)|Suspend-(?:Job|Service)|Tee-Object|Test-(?:ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(?:Event|PSSessionConfiguration)|Update-(?:FormatData|Help|List|TypeData)|Use-Transaction|Wait-(?:Event|Job|Process)|Where-Object|Write-(?:Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},e.languages.powershell.string[0].inside.boolean=e.languages.powershell.boolean,e.languages.powershell.string[0].inside.variable=e.languages.powershell.variable,e.languages.powershell.string[0].inside.function.inside=e.languages.powershell}e.exports=r,r.displayName="powershell",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.processing=e.languages.extend("clike",{keyword:/\b(?:break|catch|case|class|continue|default|else|extends|final|for|if|implements|import|new|null|private|public|return|static|super|switch|this|try|void|while)\b/,operator:/<[<=]?|>[>=]?|&&?|\|\|?|[%?]|[!=+\-*\/]=?/}),e.languages.insertBefore("processing","number",{constant:/\b(?!XML\b)[A-Z][A-Z\d_]+\b/,type:{pattern:/\b(?:boolean|byte|char|color|double|float|int|XML|[A-Z]\w*)\b/,alias:"variable"}}),e.languages.processing.function.pattern=/\w+(?=\s*\()/,e.languages.processing["class-name"].alias="variable"}e.exports=r,r.displayName="processing",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.prolog={comment:[/%.+/,/\/\*[\s\S]*?\*\//],string:{pattern:/(["'])(?:\1\1|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\b(?:fx|fy|xf[xy]?|yfx?)\b/,variable:/\b[A-Z_]\w*/,function:/\b[a-z]\w*(?:(?=\()|\/\d+)/,number:/\b\d+\.?\d*/,operator:/[:\\=><\-?*@\/;+^|!$.]+|\b(?:is|mod|not|xor)\b/,punctuation:/[(){}\[\],]/}}e.exports=r,r.displayName="prolog",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.properties={comment:/^[ \t]*[#!].*$/m,"attr-value":{pattern:/(^[ \t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+?(?: *[=:] *| ))(?:\\(?:\r\n|[\s\S])|[^\\\r\n])+/m,lookbehind:!0},"attr-name":/^[ \t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+?(?= *[=:] *| )/m,punctuation:/[=:]/}}e.exports=r,r.displayName="properties",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.protobuf=e.languages.extend("clike",{keyword:/\b(?:package|import|message|enum)\b/,builtin:/\b(?:required|repeated|optional|reserved)\b/,primitive:{pattern:/\b(?:double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes)\b/,alias:"symbol"}})}e.exports=r,r.displayName="protobuf",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.pug={comment:{pattern:/(^([\t ]*))\/\/.*(?:(?:\r?\n|\r)\2[\t ]+.+)*/m,lookbehind:!0},"multiline-script":{pattern:/(^([\t ]*)script\b.*\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{rest:e.languages.javascript}},filter:{pattern:/(^([\t ]*)):.+(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},"multiline-plain-text":{pattern:/(^([\t ]*)[\w\-#.]+\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0},markup:{pattern:/(^[\t ]*)<.+/m,lookbehind:!0,inside:{rest:e.languages.markup}},doctype:{pattern:/((?:^|\n)[\t ]*)doctype(?: .+)?/,lookbehind:!0},"flow-control":{pattern:/(^[\t ]*)(?:if|unless|else|case|when|default|each|while)\b(?: .+)?/m,lookbehind:!0,inside:{each:{pattern:/^each .+? in\b/,inside:{keyword:/\b(?:each|in)\b/,punctuation:/,/}},branch:{pattern:/^(?:if|unless|else|case|when|default|while)\b/,alias:"keyword"},rest:e.languages.javascript}},keyword:{pattern:/(^[\t ]*)(?:block|extends|include|append|prepend)\b.+/m,lookbehind:!0},mixin:[{pattern:/(^[\t ]*)mixin .+/m,lookbehind:!0,inside:{keyword:/^mixin/,function:/\w+(?=\s*\(|\s*$)/,punctuation:/[(),.]/}},{pattern:/(^[\t ]*)\+.+/m,lookbehind:!0,inside:{name:{pattern:/^\+\w+/,alias:"function"},rest:e.languages.javascript}}],script:{pattern:/(^[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*[\t ]+).+/m,lookbehind:!0,inside:{rest:e.languages.javascript}},"plain-text":{pattern:/(^[\t ]*(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?[\t ]+).+/m,lookbehind:!0},tag:{pattern:/(^[\t ]*)(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?:?/m,lookbehind:!0,inside:{attributes:[{pattern:/&[^(]+\([^)]+\)/,inside:{rest:e.languages.javascript}},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:\{[^}]*\}|[^,)\r\n]+)/,lookbehind:!0,inside:{rest:e.languages.javascript}},"attr-name":/[\w-]+(?=\s*!?=|\s*[,)])/,punctuation:/[!=(),]+/}}],punctuation:/:/}},code:[{pattern:/(^[\t ]*(?:-|!?=)).+/m,lookbehind:!0,inside:{rest:e.languages.javascript}}],punctuation:/[.\-!=|]+/};for(var t=[{filter:"atpl",language:"twig"},{filter:"coffee",language:"coffeescript"},"ejs","handlebars","hogan","less","livescript","markdown","mustache","plates",{filter:"sass",language:"scss"},"stylus","swig"],n={},r=0,o=t.length;r\s*|^\s*))\/(?:[^\/\\]|\\[\s\S])+\/(?:[imx]+\b|\B)/,lookbehind:!0,greedy:!0,inside:{"extended-regex":{pattern:/^\/(?:[^\/\\]|\\[\s\S])+\/[im]*x[im]*$/,inside:{comment:/#.*/}}}},comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},string:{pattern:/(["'])(?:\$\{(?:[^'"}]|(["'])(?:(?!\2)[^\\]|\\[\s\S])*\2)+\}|(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{"double-quoted":{pattern:/^"[\s\S]*"$/,inside:{}}}},variable:{pattern:/\$(?:::)?\w+(?:::\w+)*/,inside:{punctuation:/::/}},"attr-name":/(?:\w+|\*)(?=\s*=>)/,function:[{pattern:/(\.)(?!\d)\w+/,lookbehind:!0},/\b(?:contain|debug|err|fail|include|info|notice|realize|require|tag|warning)\b|\b(?!\d)\w+(?=\()/],number:/\b(?:0x[a-f\d]+|\d+(?:\.\d+)?(?:e-?\d+)?)\b/i,boolean:/\b(?:true|false)\b/,keyword:/\b(?:application|attr|case|class|consumes|default|define|else|elsif|function|if|import|inherits|node|private|produces|type|undef|unless)\b/,datatype:{pattern:/\b(?:Any|Array|Boolean|Callable|Catalogentry|Class|Collection|Data|Default|Enum|Float|Hash|Integer|NotUndef|Numeric|Optional|Pattern|Regexp|Resource|Runtime|Scalar|String|Struct|Tuple|Type|Undef|Variant)\b/,alias:"symbol"},operator:/=[=~>]?|![=~]?|<(?:<\|?|[=~|-])?|>[>=]?|->?|~>|\|>?>?|[*\/%+?]|\b(?:and|in|or)\b/,punctuation:/[\[\]{}().,;]|:+/};var t=[{pattern:/(^|[^\\])\$\{(?:[^'"{}]|\{[^}]*\}|(["'])(?:(?!\2)[^\\]|\\[\s\S])*\2)+\}/,lookbehind:!0,inside:{"short-variable":{pattern:/(^\$\{)(?!\w+\()(?:::)?\w+(?:::\w+)*/,lookbehind:!0,alias:"variable",inside:{punctuation:/::/}},delimiter:{pattern:/^\$/,alias:"variable"},rest:e.languages.puppet}},{pattern:/(^|[^\\])\$(?:::)?\w+(?:::\w+)*/,lookbehind:!0,alias:"variable",inside:{punctuation:/::/}}];e.languages.puppet.heredoc[0].inside.interpolation=t,e.languages.puppet.string.inside["double-quoted"].inside.interpolation=t}(e)}e.exports=r,r.displayName="puppet",r.aliases=[]},function(e,t,n){"use strict";var r=n(34);function o(e){e.register(r),function(e){e.languages.pure={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0},/#!.+/],"inline-lang":{pattern:/%<[\s\S]+?%>/,greedy:!0,inside:{lang:{pattern:/(^%< *)-\*-.+?-\*-/,lookbehind:!0,alias:"comment"},delimiter:{pattern:/^%<.*|%>$/,alias:"punctuation"}}},string:{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0},number:{pattern:/((?:\.\.)?)(?:\b(?:inf|nan)\b|\b0x[\da-f]+|(?:\b(?:0b)?\d+(?:\.\d)?|\B\.\d)\d*(?:e[+-]?\d+)?L?)/i,lookbehind:!0},keyword:/\b(?:ans|break|bt|case|catch|cd|clear|const|def|del|dump|else|end|exit|extern|false|force|help|if|infix[lr]?|interface|let|ls|mem|namespace|nonfix|NULL|of|otherwise|outfix|override|postfix|prefix|private|public|pwd|quit|run|save|show|stats|then|throw|trace|true|type|underride|using|when|with)\b/,function:/\b(?:abs|add_(?:(?:fundef|interface|macdef|typedef)(?:_at)?|addr|constdef|vardef)|all|any|applp?|arity|bigintp?|blob(?:_crc|_size|p)?|boolp?|byte_(?:matrix|pointer)|byte_c?string(?:_pointer)?|calloc|cat|catmap|ceil|char[ps]?|check_ptrtag|chr|clear_sentry|clearsym|closurep?|cmatrixp?|cols?|colcat(?:map)?|colmap|colrev|colvector(?:p|seq)?|complex(?:_float_(?:matrix|pointer)|_matrix(?:_view)?|_pointer|p)?|conj|cookedp?|cst|cstring(?:_(?:dup|list|vector))?|curry3?|cyclen?|del_(?:constdef|fundef|interface|macdef|typedef|vardef)|delete|diag(?:mat)?|dim|dmatrixp?|do|double(?:_matrix(?:_view)?|_pointer|p)?|dowith3?|drop|dropwhile|eval(?:cmd)?|exactp|filter|fix|fixity|flip|float(?:_matrix|_pointer)|floor|fold[lr]1?|frac|free|funp?|functionp?|gcd|get(?:_(?:byte|constdef|double|float|fundef|int(?:64)?|interface(?:_typedef)?|long|macdef|pointer|ptrtag|short|sentry|string|typedef|vardef))?|globsym|hash|head|id|im|imatrixp?|index|inexactp|infp|init|insert|int(?:_matrix(?:_view)?|_pointer|p)?|int64_(?:matrix|pointer)|integerp?|iteraten?|iterwhile|join|keys?|lambdap?|last(?:err(?:pos)?)?|lcd|list[2p]?|listmap|make_ptrtag|malloc|map|matcat|matrixp?|max|member|min|nanp|nargs|nmatrixp?|null|numberp?|ord|pack(?:ed)?|pointer(?:_cast|_tag|_type|p)?|pow|pred|ptrtag|put(?:_(?:byte|double|float|int(?:64)?|long|pointer|short|string))?|rationalp?|re|realp?|realloc|recordp?|redim|reduce(?:_with)?|refp?|repeatn?|reverse|rlistp?|round|rows?|rowcat(?:map)?|rowmap|rowrev|rowvector(?:p|seq)?|same|scan[lr]1?|sentry|sgn|short_(?:matrix|pointer)|slice|smatrixp?|sort|split|str|strcat|stream|stride|string(?:_(?:dup|list|vector)|p)?|subdiag(?:mat)?|submat|subseq2?|substr|succ|supdiag(?:mat)?|symbolp?|tail|take|takewhile|thunkp?|transpose|trunc|tuplep?|typep|ubyte|uint(?:64)?|ulong|uncurry3?|unref|unzip3?|update|ushort|vals?|varp?|vector(?:p|seq)?|void|zip3?|zipwith3?)\b/,special:{pattern:/\b__[a-z]+__\b/i,alias:"builtin"},operator:/(?=\b_|[^_])[!"#$%&'*+,\-.\/:<=>?@\\^_`|~\u00a1-\u00bf\u00d7-\u00f7\u20d0-\u2bff]+|\b(?:and|div|mod|not|or)\b/,punctuation:/[(){}\[\];,|]/};["c",{lang:"c++",alias:"cpp"},"fortran","ats","dsp"].forEach(function(t){var n=t;if("string"!=typeof t&&(n=t.alias,t=t.lang),e.languages[n]){var r={};r["inline-lang-"+n]={pattern:RegExp("%< *-\\*- *{lang}\\d* *-\\*-[\\s\\S]+?%>".replace("{lang}",t.replace(/([.+*?\/\\(){}\[\]])/g,"\\$1")),"i"),inside:e.util.clone(e.languages.pure["inline-lang"].inside)},r["inline-lang-"+n].inside.rest=e.util.clone(e.languages[n]),e.languages.insertBefore("pure","inline-lang",r)}}),e.languages.c&&(e.languages.pure["inline-lang"].inside.rest=e.util.clone(e.languages.c))}(e)}e.exports=o,o.displayName="pure",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"triple-quoted-string":{pattern:/("""|''')[\s\S]+?\1/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="python",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.q={string:/"(?:\\.|[^"\\\r\n])*"/,comment:[{pattern:/([\t )\]}])\/.*/,lookbehind:!0,greedy:!0},{pattern:/(^|\r?\n|\r)\/[\t ]*(?:(?:\r?\n|\r)(?:.*(?:\r?\n|\r))*?(?:\\(?=[\t ]*(?:\r?\n|\r))|$)|\S.*)/,lookbehind:!0,greedy:!0},{pattern:/^\\[\t ]*(?:\r?\n|\r)[\s\S]+/m,greedy:!0},{pattern:/^#!.+/m,greedy:!0}],symbol:/`(?::\S+|[\w.]*)/,datetime:{pattern:/0N[mdzuvt]|0W[dtz]|\d{4}\.\d\d(?:m|\.\d\d(?:T(?:\d\d(?::\d\d(?::\d\d(?:[.:]\d\d\d)?)?)?)?)?[dz]?)|\d\d:\d\d(?::\d\d(?:[.:]\d\d\d)?)?[uvt]?/,alias:"number"},number:/\b(?![01]:)(?:0[wn]|0W[hj]?|0N[hje]?|0x[\da-fA-F]+|\d+\.?\d*(?:e[+-]?\d+)?[hjfeb]?)/,keyword:/\\\w+\b|\b(?:abs|acos|aj0?|all|and|any|asc|asin|asof|atan|attr|avgs?|binr?|by|ceiling|cols|cor|cos|count|cov|cross|csv|cut|delete|deltas|desc|dev|differ|distinct|div|do|dsave|ej|enlist|eval|except|exec|exit|exp|fby|fills|first|fkeys|flip|floor|from|get|getenv|group|gtime|hclose|hcount|hdel|hopen|hsym|iasc|identity|idesc|if|ij|in|insert|inter|inv|keys?|last|like|list|ljf?|load|log|lower|lsq|ltime|ltrim|mavg|maxs?|mcount|md5|mdev|med|meta|mins?|mmax|mmin|mmu|mod|msum|neg|next|not|null|or|over|parse|peach|pj|plist|prds?|prev|prior|rand|rank|ratios|raze|read0|read1|reciprocal|reval|reverse|rload|rotate|rsave|rtrim|save|scan|scov|sdev|select|set|setenv|show|signum|sin|sqrt|ssr?|string|sublist|sums?|sv|svar|system|tables|tan|til|trim|txf|type|uj|ungroup|union|update|upper|upsert|value|var|views?|vs|wavg|where|while|within|wj1?|wsum|ww|xasc|xbar|xcols?|xdesc|xexp|xgroup|xkey|xlog|xprev|xrank)\b/,adverb:{pattern:/['\/\\]:?|\beach\b/,alias:"function"},verb:{pattern:/(?:\B\.\B|\b[01]:|<[=>]?|>=?|[:+\-*%,!?_~=|$&#@^]):?/,alias:"operator"},punctuation:/[(){}\[\];.]/}}e.exports=r,r.displayName="q",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.qore=e.languages.extend("clike",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:\/\/|#).*)/,lookbehind:!0},string:{pattern:/("|')(\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},variable:/\$(?!\d)\w+\b/,keyword:/\b(?:abstract|any|assert|binary|bool|boolean|break|byte|case|catch|char|class|code|const|continue|data|default|do|double|else|enum|extends|final|finally|float|for|goto|hash|if|implements|import|inherits|instanceof|int|interface|long|my|native|new|nothing|null|object|our|own|private|reference|rethrow|return|short|soft(?:int|float|number|bool|string|date|list)|static|strictfp|string|sub|super|switch|synchronized|this|throw|throws|transient|try|void|volatile|while)\b/,number:/\b(?:0b[01]+|0x[\da-f]*\.?[\da-fp\-]+|\d*\.?\d+e?\d*[df]|\d*\.?\d+)\b/i,boolean:/\b(?:true|false)\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|[!=](?:==?|~)?|>>?=?|<(?:=>?|<=?)?|&[&=]?|\|[|=]?|[*\/%^]=?|[~?])/,lookbehind:!0},function:/\$?\b(?!\d)\w+(?=\()/})}e.exports=r,r.displayName="qore",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.r={comment:/#.*/,string:{pattern:/(['"])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"percent-operator":{pattern:/%[^%\s]*%/,alias:"operator"},boolean:/\b(?:TRUE|FALSE)\b/,ellipsis:/\.\.(?:\.|\d+)/,number:[/\b(?:NaN|Inf)\b/,/(?:\b0x[\dA-Fa-f]+(?:\.\d*)?|\b\d+\.?\d*|\B\.\d+)(?:[EePp][+-]?\d+)?[iL]?/],keyword:/\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\b/,operator:/->?>?|<(?:=|=!]=?|::?|&&?|\|\|?|[+*\/^$@~]/,punctuation:/[(){}\[\],;]/}}e.exports=r,r.displayName="r",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.reason=e.languages.extend("clike",{comment:{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/}),e.languages.insertBefore("reason","class-name",{character:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,alias:"string"},constructor:{pattern:/\b[A-Z]\w*\b(?!\s*\.)/,alias:"variable"},label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete e.languages.reason.function}e.exports=r,r.displayName="reason",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.renpy={comment:{pattern:/(^|[^\\])#.+/,lookbehind:!0},string:{pattern:/("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2|(?:^#?(?:(?:[0-9a-fA-F]{2}){3}|(?:[0-9a-fA-F]){3})$)/m,greedy:!0},function:/[a-z_]\w*(?=\()/i,property:/\b(?:insensitive|idle|hover|selected_idle|selected_hover|background|position|alt|xpos|ypos|pos|xanchor|yanchor|anchor|xalign|yalign|align|xcenter|ycenter|xofsset|yoffset|ymaximum|maximum|xmaximum|xminimum|yminimum|minimum|xsize|ysizexysize|xfill|yfill|area|antialias|black_color|bold|caret|color|first_indent|font|size|italic|justify|kerning|language|layout|line_leading|line_overlap_split|line_spacing|min_width|newline_indent|outlines|rest_indent|ruby_style|slow_cps|slow_cps_multiplier|strikethrough|text_align|underline|hyperlink_functions|vertical|hinting|foreground|left_margin|xmargin|top_margin|bottom_margin|ymargin|left_padding|right_padding|xpadding|top_padding|bottom_padding|ypadding|size_group|child|hover_sound|activate_sound|mouse|focus_mask|keyboard_focus|bar_vertical|bar_invert|bar_resizing|left_gutter|right_gutter|top_gutter|bottom_gutter|left_bar|right_bar|top_bar|bottom_bar|thumb|thumb_shadow|thumb_offset|unscrollable|spacing|first_spacing|box_reverse|box_wrap|order_reverse|fit_first|ysize|thumbnail_width|thumbnail_height|help|text_ypos|text_xpos|idle_color|hover_color|selected_idle_color|selected_hover_color|insensitive_color|alpha|insensitive_background|hover_background|zorder|value|width|xadjustment|xanchoraround|xaround|xinitial|xoffset|xzoom|yadjustment|yanchoraround|yaround|yinitial|yzoom|zoom|ground|height|text_style|text_y_fudge|selected_insensitive|has_sound|has_music|has_voice|focus|hovered|image_style|length|minwidth|mousewheel|offset|prefix|radius|range|right_margin|rotate|rotate_pad|developer|screen_width|screen_height|window_title|name|version|windows_icon|default_fullscreen|default_text_cps|default_afm_time|main_menu_music|sample_sound|enter_sound|exit_sound|save_directory|enter_transition|exit_transition|intra_transition|main_game_transition|game_main_transition|end_splash_transition|end_game_transition|after_load_transition|window_show_transition|window_hide_transition|adv_nvl_transition|nvl_adv_transition|enter_yesno_transition|exit_yesno_transition|enter_replay_transition|exit_replay_transition|say_attribute_transition|directory_name|executable_name|include_update|window_icon|modal|google_play_key|google_play_salt|drag_name|drag_handle|draggable|dragged|droppable|dropped|narrator_menu|action|default_afm_enable|version_name|version_tuple|inside|fadeout|fadein|layers|layer_clipping|linear|scrollbars|side_xpos|side_ypos|side_spacing|edgescroll|drag_joined|drag_raise|drop_shadow|drop_shadow_color|subpixel|easein|easeout|time|crop|auto|update|get_installed_packages|can_update|UpdateVersion|Update|overlay_functions|translations|window_left_padding|show_side_image|show_two_window)\b/,tag:/\b(?:label|image|menu|[hv]box|frame|text|imagemap|imagebutton|bar|vbar|screen|textbutton|buttoscreenn|fixed|grid|input|key|mousearea|side|timer|viewport|window|hotspot|hotbar|self|button|drag|draggroup|tag|mm_menu_frame|nvl|block|parallel)\b|\$/,keyword:/\b(?:as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|yield|adjustment|alignaround|allow|angle|around|box_layout|cache|changed|child_size|clicked|clipping|corner1|corner2|default|delay|exclude|scope|slow|slow_abortable|slow_done|sound|style_group|substitute|suffix|transform_anchor|transpose|unhovered|config|theme|mm_root|gm_root|rounded_window|build|disabled_text|disabled|widget_selected|widget_text|widget_hover|widget|updater|behind|call|expression|hide|init|jump|onlayer|python|renpy|scene|set|show|transform|play|queue|stop|pause|define|window|repeat|contains|choice|on|function|event|animation|clockwise|counterclockwise|circles|knot|null|None|random|has|add|use|fade|dissolve|style|store|id|voice|center|left|right|less_rounded|music|movie|clear|persistent|ui)\b/,boolean:/\b(?:[Tt]rue|[Ff]alse)\b/,number:/(?:\b(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*)|\B\.\d+)(?:e[+-]?\d+)?j?/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not|with|at)\b/,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="renpy",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.rest={table:[{pattern:/(\s*)(?:\+[=-]+)+\+(?:\r?\n|\r)(?:\1(?:[+|].+)+[+|](?:\r?\n|\r))+\1(?:\+[=-]+)+\+/,lookbehind:!0,inside:{punctuation:/\||(?:\+[=-]+)+\+/}},{pattern:/(\s*)(?:=+ +)+=+(?:(?:\r?\n|\r)\1.+)+(?:\r?\n|\r)\1(?:=+ +)+=+(?=(?:\r?\n|\r){2}|\s*$)/,lookbehind:!0,inside:{punctuation:/[=-]+/}}],"substitution-def":{pattern:/(^\s*\.\. )\|(?:[^|\s](?:[^|]*[^|\s])?)\| [^:]+::/m,lookbehind:!0,inside:{substitution:{pattern:/^\|(?:[^|\s]|[^|\s][^|]*[^|\s])\|/,alias:"attr-value",inside:{punctuation:/^\||\|$/}},directive:{pattern:/( +)[^:]+::/,lookbehind:!0,alias:"function",inside:{punctuation:/::$/}}}},"link-target":[{pattern:/(^\s*\.\. )\[[^\]]+\]/m,lookbehind:!0,alias:"string",inside:{punctuation:/^\[|\]$/}},{pattern:/(^\s*\.\. )_(?:`[^`]+`|(?:[^:\\]|\\.)+):/m,lookbehind:!0,alias:"string",inside:{punctuation:/^_|:$/}}],directive:{pattern:/(^\s*\.\. )[^:]+::/m,lookbehind:!0,alias:"function",inside:{punctuation:/::$/}},comment:{pattern:/(^\s*\.\.)(?:(?: .+)?(?:(?:\r?\n|\r).+)+| .+)(?=(?:\r?\n|\r){2}|$)/m,lookbehind:!0},title:[{pattern:/^(([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2+)(?:\r?\n|\r).+(?:\r?\n|\r)\1$/m,inside:{punctuation:/^[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+|[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,important:/.+/}},{pattern:/(^|(?:\r?\n|\r){2}).+(?:\r?\n|\r)([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2+(?=\r?\n|\r|$)/,lookbehind:!0,inside:{punctuation:/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,important:/.+/}}],hr:{pattern:/((?:\r?\n|\r){2})([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2{3,}(?=(?:\r?\n|\r){2})/,lookbehind:!0,alias:"punctuation"},field:{pattern:/(^\s*):[^:\r\n]+:(?= )/m,lookbehind:!0,alias:"attr-name"},"command-line-option":{pattern:/(^\s*)(?:[+-][a-z\d]|(?:--|\/)[a-z\d-]+)(?:[ =](?:[a-z][\w-]*|<[^<>]+>))?(?:, (?:[+-][a-z\d]|(?:--|\/)[a-z\d-]+)(?:[ =](?:[a-z][\w-]*|<[^<>]+>))?)*(?=(?:\r?\n|\r)? {2,}\S)/im,lookbehind:!0,alias:"symbol"},"literal-block":{pattern:/::(?:\r?\n|\r){2}([ \t]+).+(?:(?:\r?\n|\r)\1.+)*/,inside:{"literal-block-punctuation":{pattern:/^::/,alias:"punctuation"}}},"quoted-literal-block":{pattern:/::(?:\r?\n|\r){2}([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]).*(?:(?:\r?\n|\r)\1.*)*/,inside:{"literal-block-punctuation":{pattern:/^(?:::|([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\1*)/m,alias:"punctuation"}}},"list-bullet":{pattern:/(^\s*)(?:[*+\-•‣⁃]|\(?(?:\d+|[a-z]|[ivxdclm]+)\)|(?:\d+|[a-z]|[ivxdclm]+)\.)(?= )/im,lookbehind:!0,alias:"punctuation"},"doctest-block":{pattern:/(^\s*)>>> .+(?:(?:\r?\n|\r).+)*/m,lookbehind:!0,inside:{punctuation:/^>>>/}},inline:[{pattern:/(^|[\s\-:\/'"<(\[{])(?::[^:]+:`.*?`|`.*?`:[^:]+:|(\*\*?|``?|\|)(?!\s).*?[^\s]\2(?=[\s\-.,:;!?\\\/'")\]}]|$))/m,lookbehind:!0,inside:{bold:{pattern:/(^\*\*).+(?=\*\*$)/,lookbehind:!0},italic:{pattern:/(^\*).+(?=\*$)/,lookbehind:!0},"inline-literal":{pattern:/(^``).+(?=``$)/,lookbehind:!0,alias:"symbol"},role:{pattern:/^:[^:]+:|:[^:]+:$/,alias:"function",inside:{punctuation:/^:|:$/}},"interpreted-text":{pattern:/(^`).+(?=`$)/,lookbehind:!0,alias:"attr-value"},substitution:{pattern:/(^\|).+(?=\|$)/,lookbehind:!0,alias:"attr-value"},punctuation:/\*\*?|``?|\|/}}],link:[{pattern:/\[[^\]]+\]_(?=[\s\-.,:;!?\\\/'")\]}]|$)/,alias:"string",inside:{punctuation:/^\[|\]_$/}},{pattern:/(?:\b[a-z\d](?:[_.:+]?[a-z\d]+)*_?_|`[^`]+`_?_|_`[^`]+`)(?=[\s\-.,:;!?\\\/'")\]}]|$)/i,alias:"string",inside:{punctuation:/^_?`|`$|`?_?_$/}}],punctuation:{pattern:/(^\s*)(?:\|(?= |$)|(?:---?|—|\.\.|__)(?= )|\.\.$)/m,lookbehind:!0}}}e.exports=r,r.displayName="rest",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.rip={comment:/#.*/,keyword:/(?:=>|->)|\b(?:class|if|else|switch|case|return|exit|try|catch|finally|raise)\b/,builtin:/@|\bSystem\b/,boolean:/\b(?:true|false)\b/,date:/\b\d{4}-\d{2}-\d{2}\b/,time:/\b\d{2}:\d{2}:\d{2}\b/,datetime:/\b\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\b/,character:/\B`[^\s`'",.:;#\/\\()<>\[\]{}]\b/,regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},symbol:/:[^\d\s`'",.:;#\/\\()<>\[\]{}][^\s`'",.:;#\/\\()<>\[\]{}]*/,string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},number:/[+-]?(?:(?:\d+\.\d+)|(?:\d+))/,punctuation:/(?:\.{2,3})|[`,.:;=\/\\()<>\[\]{}]/,reference:/[^\d\s`'",.:;#\/\\()<>\[\]{}][^\s`'",.:;#\/\\()<>\[\]{}]*/}}e.exports=r,r.displayName="rip",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.roboconf={comment:/#.*/,keyword:{pattern:/(^|\s)(?:(?:facet|instance of)(?=[ \t]+[\w-]+[ \t]*\{)|(?:external|import)\b)/,lookbehind:!0},component:{pattern:/[\w-]+(?=[ \t]*\{)/,alias:"variable"},property:/[\w.-]+(?=[ \t]*:)/,value:{pattern:/(=[ \t]*)[^,;]+/,lookbehind:!0,alias:"attr-value"},optional:{pattern:/\(optional\)/,alias:"builtin"},wildcard:{pattern:/(\.)\*/,lookbehind:!0,alias:"operator"},punctuation:/[{},.;:=]/}}e.exports=r,r.displayName="roboconf",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.rust={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:[{pattern:/b?r(#*)"(?:\\.|(?!"\1)[^\\\r\n])*"\1/,greedy:!0},{pattern:/b?"(?:\\.|[^\\\r\n"])*"/,greedy:!0}],char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u{(?:[\da-fA-F]_*){1,6}|.)|[^\\\r\n\t'])'/,alias:"string"},"lifetime-annotation":{pattern:/'[^\s>']+/,alias:"symbol"},keyword:/\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/,attribute:{pattern:/#!?\[.+?\]/,greedy:!0,alias:"attr-name"},function:[/\w+(?=\s*\()/,/\w+!(?=\s*\(|\[)/],"macro-rules":{pattern:/\w+!/,alias:"function"},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\d(?:_?\d)*)?\.?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\b/,"closure-params":{pattern:/\|[^|]*\|(?=\s*[{-])/,inside:{punctuation:/[|:,]/,operator:/[&*]/}},punctuation:/[{}[\];(),:]|\.+|->/,operator:/[-+*\/%!^]=?|=[=>]?|@|&[&=]?|\|[|=]?|<>?=?/}}e.exports=r,r.displayName="rust",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.sas={datalines:{pattern:/^\s*(?:(?:data)?lines|cards);[\s\S]+?(?:\r?\n|\r);/im,alias:"string",inside:{keyword:{pattern:/^(\s*)(?:(?:data)?lines|cards)/i,lookbehind:!0},punctuation:/;/}},comment:[{pattern:/(^\s*|;\s*)\*.*;/m,lookbehind:!0},/\/\*[\s\S]+?\*\//],datetime:{pattern:/'[^']+'(?:dt?|t)\b/i,alias:"number"},string:{pattern:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,greedy:!0},keyword:/\b(?:data|else|format|if|input|proc\s\w+|quit|run|then)\b/i,number:/\b(?:[\da-f]+x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,operator:/\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?|\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,punctuation:/[$%@.(){}\[\];,\\]/}}e.exports=r,r.displayName="sas",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,delete e.languages.sass.selector,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,lookbehind:!0}})}(e)}e.exports=r,r.displayName="sass",r.aliases=[]},function(e,t,n){"use strict";var r=n(164);function o(e){e.register(r),e.languages.scala=e.languages.extend("java",{keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],builtin:/\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,number:/\b0x[\da-f]*\.?[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e\d+)?[dfl]?/i,symbol:/'[^\d\s\\]\w*/}),delete e.languages.scala["class-name"],delete e.languages.scala.function}e.exports=o,o.displayName="scala",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"|'[^('\s]*/,greedy:!0},keyword:{pattern:/(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)/,lookbehind:!0},number:{pattern:/(\s|[()])[-+]?\d*\.?\d+(?:\s*[-+]\s*\d*\.?\d+i)?\b/,lookbehind:!0},boolean:/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)/,lookbehind:!0},function:{pattern:/(\()[^\s()]*(?=\s)/,lookbehind:!0},punctuation:/[()]/}}e.exports=r,r.displayName="scheme",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.scss=e.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)*url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()]|&|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}]+[:{][^}]+))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),e.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),e.languages.scss.property={pattern:/(?:[\w-]|\$[-\w]+|#\{\$[-\w]+\})+(?=\s*:)/i,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}},e.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),e.languages.insertBefore("scss","function",{placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:/\bnull\b/,operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),e.languages.scss.atrule.inside.rest=e.languages.scss}e.exports=r,r.displayName="scss",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.smalltalk={comment:/"(?:""|[^"])+"/,string:/'(?:''|[^'])+'/,symbol:/#[\da-z]+|#(?:-|([+\/\\*~<>=@%|&?!])\1?)|#(?=\()/i,"block-arguments":{pattern:/(\[\s*):[^\[|]*\|/,lookbehind:!0,inside:{variable:/:[\da-z]+/i,punctuation:/\|/}},"temporary-variables":{pattern:/\|[^|]+\|/,inside:{variable:/[\da-z]+/i,punctuation:/\|/}},keyword:/\b(?:nil|true|false|self|super|new)\b/,character:{pattern:/\$./,alias:"string"},number:[/\d+r-?[\dA-Z]+(?:\.[\dA-Z]+)?(?:e-?\d+)?/,/\b\d+(?:\.\d+)?(?:e-?\d+)?/],operator:/[<=]=?|:=|~[~=]|\/\/?|\\\\|>[>=]?|[!^+\-*&|,@]/,punctuation:/[.;:?\[\](){}]/}}e.exports=r,r.displayName="smalltalk",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.smarty={comment:/\{\*[\s\S]*?\*\}/,delimiter:{pattern:/^\{|\}$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][-+]?\d+)?/,variable:[/\$(?!\d)\w+/,/#(?!\d)\w+#/,{pattern:/(\.|->)(?!\d)\w+/,lookbehind:!0},{pattern:/(\[)(?!\d)\w+(?=\])/,lookbehind:!0}],function:[{pattern:/(\|\s*)@?(?!\d)\w+/,lookbehind:!0},/^\/?(?!\d)\w+/,/(?!\d)\w+(?=\()/],"attr-name":{pattern:/\w+\s*=\s*(?:(?!\d)\w+)?/,inside:{variable:{pattern:/(=\s*)(?!\d)\w+/,lookbehind:!0},operator:/=/}},punctuation:[/[\[\]().,:`]|->/],operator:[/[+\-*\/%]|==?=?|[!<>]=?|&&|\|\|?/,/\bis\s+(?:not\s+)?(?:div|even|odd)(?:\s+by)?\b/,/\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\b/],keyword:/\b(?:false|off|on|no|true|yes)\b/},e.languages.insertBefore("smarty","tag",{"smarty-comment":{pattern:/\{\*[\s\S]*?\*\}/,alias:["smarty","comment"]}}),e.hooks.add("before-tokenize",function(t){var n=!1;e.languages["markup-templating"].buildPlaceholders(t,"smarty",/\{\*[\s\S]*?\*\}|\{[\s\S]+?\}/g,function(e){return"{/literal}"===e&&(n=!1),!n&&("{literal}"===e&&(n=!0),!0)})}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"smarty")})}(e)}e.exports=r,r.displayName="smarty",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t=/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=/\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0x[\dA-F]+\b/;e.languages.soy={comment:[/\/\*[\s\S]*?\*\//,{pattern:/(\s)\/\/.*/,lookbehind:!0,greedy:!0}],"command-arg":{pattern:/({+\/?\s*(?:alias|call|delcall|delpackage|deltemplate|namespace|template)\s+)\.?[\w.]+/,lookbehind:!0,alias:"string",inside:{punctuation:/\./}},parameter:{pattern:/({+\/?\s*@?param\??\s+)\.?[\w.]+/,lookbehind:!0,alias:"variable"},keyword:[{pattern:/({+\/?[^\S\r\n]*)(?:\\[nrt]|alias|call|case|css|default|delcall|delpackage|deltemplate|else(?:if)?|fallbackmsg|for(?:each)?|if(?:empty)?|lb|let|literal|msg|namespace|nil|@?param\??|rb|sp|switch|template|xid)/,lookbehind:!0},/\b(?:any|as|attributes|bool|css|float|in|int|js|html|list|map|null|number|string|uri)\b/],delimiter:{pattern:/^{+\/?|\/?}+$/,alias:"punctuation"},property:/\w+(?==)/,variable:{pattern:/\$[^\W\d]\w*(?:\??(?:\.\w+|\[[^\]]+]))*/,inside:{string:{pattern:t,greedy:!0},number:n,punctuation:/[\[\].?]/}},string:{pattern:t,greedy:!0},function:[/\w+(?=\()/,{pattern:/(\|[^\S\r\n]*)\w+/,lookbehind:!0}],boolean:/\b(?:true|false)\b/,number:n,operator:/\?:?|<=?|>=?|==?|!=|[+*\/%-]|\b(?:and|not|or)\b/,punctuation:/[{}()\[\]|.,:]/},e.hooks.add("before-tokenize",function(t){var n=!1;e.languages["markup-templating"].buildPlaceholders(t,"soy",/{{.+?}}|{.+?}|\s\/\/.*|\/\*[\s\S]*?\*\//g,function(e){return"{/literal}"===e&&(n=!1),!n&&("{literal}"===e&&(n=!0),!0)})}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"soy")})}(e)}e.exports=r,r.displayName="soy",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t={url:/url\((["']?).*?\1\)/i,string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,number:/\b\d+(?:\.\d+)?%?/,boolean:/\b(?:true|false)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.+|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],punctuation:/[{}()\[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^{|}$/,alias:"punctuation"},rest:t}},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:t}},e.languages.stylus={comment:{pattern:/(^|[^\\])(\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},"atrule-declaration":{pattern:/(^\s*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:(?:\{[^}]*\}|.+)|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t]+.+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(\r?\n|\r)(?:\{|\2[ \t]+)))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,lookbehind:!0,inside:{interpolation:t.interpolation,punctuation:/[{},]/}},func:t.func,string:t.string,interpolation:t.interpolation,punctuation:/[{}()\[\];:.]/}}(e)}e.exports=r,r.displayName="stylus",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.swift=e.languages.extend("clike",{string:{pattern:/("|')(\\(?:\((?:[^()]|\([^)]+\))+\)|\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/\\\((?:[^()]|\([^)]+\))+\)/,inside:{delimiter:{pattern:/^\\\(|\)$/,alias:"variable"}}}}},keyword:/\b(?:as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\b/,number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,constant:/\b(?:nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,atrule:/@\b(?:IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\b/,builtin:/\b(?:[A-Z]\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\b/}),e.languages.swift.string.inside.interpolation.inside.rest=e.languages.swift}e.exports=r,r.displayName="swift",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.tap={fail:/not ok[^#{\n\r]*/,pass:/ok[^#{\n\r]*/,pragma:/pragma [+-][a-z]+/,bailout:/bail out!.*/i,version:/TAP version \d+/i,plan:/\d+\.\.\d+(?: +#.*)?/,subtest:{pattern:/# Subtest(?:: .*)?/,greedy:!0},punctuation:/[{}]/,directive:/#.*/,yamlish:{pattern:/(^[^\S\r\n]*)---(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?[^\S\r\n]*\.\.\.$/m,lookbehind:!0,inside:e.languages.yaml,alias:"language-yaml"}}}e.exports=r,r.displayName="tap",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.tcl={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:{pattern:/"(?:[^"\\\r\n]|\\(?:\r\n|[\s\S]))*"/,greedy:!0},variable:[{pattern:/(\$)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/,lookbehind:!0},{pattern:/(\$){[^}]+}/,lookbehind:!0},{pattern:/(^\s*set[ \t]+)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/m,lookbehind:!0}],function:{pattern:/(^\s*proc[ \t]+)[^\s]+/m,lookbehind:!0},builtin:[{pattern:/(^\s*)(?:proc|return|class|error|eval|exit|for|foreach|if|switch|while|break|continue)\b/m,lookbehind:!0},/\b(?:elseif|else)\b/],scope:{pattern:/(^\s*)(?:global|upvar|variable)\b/m,lookbehind:!0,alias:"constant"},keyword:{pattern:/(^\s*|\[)(?:after|append|apply|array|auto_(?:execok|import|load|mkindex|qualify|reset)|automkindex_old|bgerror|binary|catch|cd|chan|clock|close|concat|dde|dict|encoding|eof|exec|expr|fblocked|fconfigure|fcopy|file(?:event|name)?|flush|gets|glob|history|http|incr|info|interp|join|lappend|lassign|lindex|linsert|list|llength|load|lrange|lrepeat|lreplace|lreverse|lsearch|lset|lsort|math(?:func|op)|memory|msgcat|namespace|open|package|parray|pid|pkg_mkIndex|platform|puts|pwd|re_syntax|read|refchan|regexp|registry|regsub|rename|Safe_Base|scan|seek|set|socket|source|split|string|subst|Tcl|tcl(?:_endOfWord|_findLibrary|startOf(?:Next|Previous)Word|wordBreak(?:After|Before)|test|vars)|tell|time|tm|trace|unknown|unload|unset|update|uplevel|vwait)\b/m,lookbehind:!0},operator:/!=?|\*\*?|==|&&?|\|\|?|<[=<]?|>[=>]?|[-+~\/%?^]|\b(?:eq|ne|in|ni)\b/,punctuation:/[{}()\[\]]/}}e.exports=r,r.displayName="tcl",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t="(?:\\([^|)]+\\)|\\[[^\\]]+\\]|\\{[^}]+\\})+",n={css:{pattern:/\{[^}]+\}/,inside:{rest:e.languages.css}},"class-id":{pattern:/(\()[^)]+(?=\))/,lookbehind:!0,alias:"attr-value"},lang:{pattern:/(\[)[^\]]+(?=\])/,lookbehind:!0,alias:"attr-value"},punctuation:/[\\\/]\d+|\S/};e.languages.textile=e.languages.extend("markup",{phrase:{pattern:/(^|\r|\n)\S[\s\S]*?(?=$|\r?\n\r?\n|\r\r)/,lookbehind:!0,inside:{"block-tag":{pattern:RegExp("^[a-z]\\w*(?:"+t+"|[<>=()])*\\."),inside:{modifier:{pattern:RegExp("(^[a-z]\\w*)(?:"+t+"|[<>=()])+(?=\\.)"),lookbehind:!0,inside:n},tag:/^[a-z]\w*/,punctuation:/\.$/}},list:{pattern:RegExp("^[*#]+(?:"+t+")?\\s+.+","m"),inside:{modifier:{pattern:RegExp("(^[*#]+)"+t),lookbehind:!0,inside:n},punctuation:/^[*#]+/}},table:{pattern:RegExp("^(?:(?:"+t+"|[<>=()^~])+\\.\\s*)?(?:\\|(?:(?:"+t+"|[<>=()^~_]|[\\\\/]\\d+)+\\.)?[^|]*)+\\|","m"),inside:{modifier:{pattern:RegExp("(^|\\|(?:\\r?\\n|\\r)?)(?:"+t+"|[<>=()^~_]|[\\\\/]\\d+)+(?=\\.)"),lookbehind:!0,inside:n},punctuation:/\||^\./}},inline:{pattern:RegExp("(\\*\\*|__|\\?\\?|[*_%@+\\-^~])(?:"+t+")?.+?\\1"),inside:{bold:{pattern:RegExp("(^(\\*\\*?)(?:"+t+")?).+?(?=\\2)"),lookbehind:!0},italic:{pattern:RegExp("(^(__?)(?:"+t+")?).+?(?=\\2)"),lookbehind:!0},cite:{pattern:RegExp("(^\\?\\?(?:"+t+")?).+?(?=\\?\\?)"),lookbehind:!0,alias:"string"},code:{pattern:RegExp("(^@(?:"+t+")?).+?(?=@)"),lookbehind:!0,alias:"keyword"},inserted:{pattern:RegExp("(^\\+(?:"+t+")?).+?(?=\\+)"),lookbehind:!0},deleted:{pattern:RegExp("(^-(?:"+t+")?).+?(?=-)"),lookbehind:!0},span:{pattern:RegExp("(^%(?:"+t+")?).+?(?=%)"),lookbehind:!0},modifier:{pattern:RegExp("(^\\*\\*|__|\\?\\?|[*_%@+\\-^~])"+t),lookbehind:!0,inside:n},punctuation:/[*_%?@+\-^~]+/}},"link-ref":{pattern:/^\[[^\]]+\]\S+$/m,inside:{string:{pattern:/(\[)[^\]]+(?=\])/,lookbehind:!0},url:{pattern:/(\])\S+$/,lookbehind:!0},punctuation:/[\[\]]/}},link:{pattern:RegExp('"(?:'+t+')?[^"]+":.+?(?=[^\\w/]?(?:\\s|$))'),inside:{text:{pattern:RegExp('(^"(?:'+t+')?)[^"]+(?=")'),lookbehind:!0},modifier:{pattern:RegExp('(^")'+t),lookbehind:!0,inside:n},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[":]/}},image:{pattern:RegExp("!(?:"+t+"|[<>=()])*[^!\\s()]+(?:\\([^)]+\\))?!(?::.+?(?=[^\\w/]?(?:\\s|$)))?"),inside:{source:{pattern:RegExp("(^!(?:"+t+"|[<>=()])*)[^!\\s()]+(?:\\([^)]+\\))?(?=!)"),lookbehind:!0,alias:"url"},modifier:{pattern:RegExp("(^!)(?:"+t+"|[<>=()])+"),lookbehind:!0,inside:n},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[!:]/}},footnote:{pattern:/\b\[\d+\]/,alias:"comment",inside:{punctuation:/\[|\]/}},acronym:{pattern:/\b[A-Z\d]+\([^)]+\)/,inside:{comment:{pattern:/(\()[^)]+(?=\))/,lookbehind:!0},punctuation:/[()]/}},mark:{pattern:/\b\((?:TM|R|C)\)/,alias:"comment",inside:{punctuation:/[()]/}}}}});var r={inline:e.languages.textile.phrase.inside.inline,link:e.languages.textile.phrase.inside.link,image:e.languages.textile.phrase.inside.image,footnote:e.languages.textile.phrase.inside.footnote,acronym:e.languages.textile.phrase.inside.acronym,mark:e.languages.textile.phrase.inside.mark};e.languages.textile.tag.pattern=/<\/?(?!\d)[a-z0-9]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,e.languages.textile.phrase.inside.inline.inside.bold.inside=r,e.languages.textile.phrase.inside.inline.inside.italic.inside=r,e.languages.textile.phrase.inside.inline.inside.inserted.inside=r,e.languages.textile.phrase.inside.inline.inside.deleted.inside=r,e.languages.textile.phrase.inside.inline.inside.span.inside=r,e.languages.textile.phrase.inside.table.inside.inline=r.inline,e.languages.textile.phrase.inside.table.inside.link=r.link,e.languages.textile.phrase.inside.table.inside.image=r.image,e.languages.textile.phrase.inside.table.inside.footnote=r.footnote,e.languages.textile.phrase.inside.table.inside.acronym=r.acronym,e.languages.textile.phrase.inside.table.inside.mark=r.mark}(e)}e.exports=r,r.displayName="textile",r.aliases=[]},function(e,t,n){"use strict";var r=n(165),o=n(168);function a(e){e.register(r),e.register(o);var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t)}e.exports=a,a.displayName="tsx",a.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.tt2=e.languages.extend("clike",{comment:{pattern:/#.*|\[%#[\s\S]*?%\]/,lookbehind:!0},keyword:/\b(?:BLOCK|CALL|CASE|CATCH|CLEAR|DEBUG|DEFAULT|ELSE|ELSIF|END|FILTER|FINAL|FOREACH|GET|IF|IN|INCLUDE|INSERT|LAST|MACRO|META|NEXT|PERL|PROCESS|RAWPERL|RETURN|SET|STOP|TAGS|THROW|TRY|SWITCH|UNLESS|USE|WHILE|WRAPPER)\b/,punctuation:/[[\]{},()]/}),delete e.languages.tt2.operator,delete e.languages.tt2.variable,e.languages.insertBefore("tt2","number",{operator:/=[>=]?|!=?|<=?|>=?|&&|\|\|?|\b(?:and|or|not)\b/,variable:{pattern:/[a-z]\w*(?:\s*\.\s*(?:\d+|\$?[a-z]\w*))*/i}}),delete e.languages.tt2.delimiter,e.languages.insertBefore("tt2","keyword",{delimiter:{pattern:/^(?:\[%|%%)-?|-?%]$/,alias:"punctuation"}}),e.languages.insertBefore("tt2","string",{"single-quoted-string":{pattern:/'[^\\']*(?:\\[\s\S][^\\']*)*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"[^\\"]*(?:\\[\s\S][^\\"]*)*"/,greedy:!0,alias:"string",inside:{variable:{pattern:/\$(?:[a-z]\w*(?:\.(?:\d+|\$?[a-z]\w*))*)/i}}}}),delete e.languages.tt2.string,e.hooks.add("before-tokenize",function(t){e.languages["markup-templating"].buildPlaceholders(t,"tt2",/\[%[\s\S]+?%\]/g)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"tt2")})}(e)}e.exports=r,r.displayName="tt2",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.twig={comment:/\{#[\s\S]*?#\}/,tag:{pattern:/\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}/,inside:{ld:{pattern:/^(?:\{\{-?|\{%-?\s*\w+)/,inside:{punctuation:/^(?:\{\{|\{%)-?/,keyword:/\w+/}},rd:{pattern:/-?(?:%\}|\}\})$/,inside:{punctuation:/.*/}},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,inside:{punctuation:/^['"]|['"]$/}},keyword:/\b(?:even|if|odd)\b/,boolean:/\b(?:true|false|null)\b/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][-+]?\d+)?/,operator:[{pattern:/(\s)(?:and|b-and|b-xor|b-or|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,lookbehind:!0},/[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/],property:/\b[a-zA-Z_]\w*\b/,punctuation:/[()\[\]{}:.,]/}},other:{pattern:/\S(?:[\s\S]*\S)?/,inside:e.languages.markup}}}e.exports=r,r.displayName="twig",r.aliases=[]},function(e,t,n){"use strict";var r=n(163);function o(e){e.register(r),e.languages.vbnet=e.languages.extend("basic",{keyword:/(?:\b(?:ADDHANDLER|ADDRESSOF|ALIAS|AND|ANDALSO|AS|BEEP|BLOAD|BOOLEAN|BSAVE|BYREF|BYTE|BYVAL|CALL(?: ABSOLUTE)?|CASE|CATCH|CBOOL|CBYTE|CCHAR|CDATE|CDEC|CDBL|CHAIN|CHAR|CHDIR|CINT|CLASS|CLEAR|CLNG|CLOSE|CLS|COBJ|COM|COMMON|CONST|CONTINUE|CSBYTE|CSHORT|CSNG|CSTR|CTYPE|CUINT|CULNG|CUSHORT|DATA|DATE|DECIMAL|DECLARE|DEFAULT|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DELEGATE|DIM|DIRECTCAST|DO|DOUBLE|ELSE|ELSEIF|END|ENUM|ENVIRON|ERASE|ERROR|EVENT|EXIT|FALSE|FIELD|FILES|FINALLY|FOR(?: EACH)?|FRIEND|FUNCTION|GET|GETTYPE|GETXMLNAMESPACE|GLOBAL|GOSUB|GOTO|HANDLES|IF|IMPLEMENTS|IMPORTS|IN|INHERITS|INPUT|INTEGER|INTERFACE|IOCTL|IS|ISNOT|KEY|KILL|LINE INPUT|LET|LIB|LIKE|LOCATE|LOCK|LONG|LOOP|LSET|ME|MKDIR|MOD|MODULE|MUSTINHERIT|MUSTOVERRIDE|MYBASE|MYCLASS|NAME|NAMESPACE|NARROWING|NEW|NEXT|NOT|NOTHING|NOTINHERITABLE|NOTOVERRIDABLE|OBJECT|OF|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPERATOR|OPEN|OPTION(?: BASE)?|OPTIONAL|OR|ORELSE|OUT|OVERLOADS|OVERRIDABLE|OVERRIDES|PARAMARRAY|PARTIAL|POKE|PRIVATE|PROPERTY|PROTECTED|PUBLIC|PUT|RAISEEVENT|READ|READONLY|REDIM|REM|REMOVEHANDLER|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SBYTE|SELECT(?: CASE)?|SET|SHADOWS|SHARED|SHORT|SINGLE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|STRUCTURE|SUB|SYNCLOCK|SWAP|SYSTEM|THEN|THROW|TIMER|TO|TROFF|TRON|TRUE|TRY|TRYCAST|TYPE|TYPEOF|UINTEGER|ULONG|UNLOCK|UNTIL|USHORT|USING|VIEW PRINT|WAIT|WEND|WHEN|WHILE|WIDENING|WITH|WITHEVENTS|WRITE|WRITEONLY|XOR)|\B(?:#CONST|#ELSE|#ELSEIF|#END|#IF))(?:\$|\b)/i,comment:[{pattern:/(?:!|REM\b).+/i,inside:{keyword:/^REM/i}},{pattern:/(^|[^\\:])'.*/,lookbehind:!0}]})}e.exports=o,o.displayName="vbnet",o.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.velocity=e.languages.extend("markup",{});var t={variable:{pattern:/(^|[^\\](?:\\\\)*)\$!?(?:[a-z][\w-]*(?:\([^)]*\))?(?:\.[a-z][\w-]*(?:\([^)]*\))?|\[[^\]]+])*|{[^}]+})/i,lookbehind:!0,inside:{}},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},number:/\b\d+\b/,boolean:/\b(?:true|false)\b/,operator:/[=!<>]=?|[+*\/%-]|&&|\|\||\.\.|\b(?:eq|g[et]|l[et]|n(?:e|ot))\b/,punctuation:/[(){}[\]:,.]/};t.variable.inside={string:t.string,function:{pattern:/([^\w-])[a-z][\w-]*(?=\()/,lookbehind:!0},number:t.number,boolean:t.boolean,punctuation:t.punctuation},e.languages.insertBefore("velocity","comment",{unparsed:{pattern:/(^|[^\\])#\[\[[\s\S]*?]]#/,lookbehind:!0,greedy:!0,inside:{punctuation:/^#\[\[|]]#$/}},"velocity-comment":[{pattern:/(^|[^\\])#\*[\s\S]*?\*#/,lookbehind:!0,greedy:!0,alias:"comment"},{pattern:/(^|[^\\])##.*/,lookbehind:!0,greedy:!0,alias:"comment"}],directive:{pattern:/(^|[^\\](?:\\\\)*)#@?(?:[a-z][\w-]*|{[a-z][\w-]*})(?:\s*\((?:[^()]|\([^()]*\))*\))?/i,lookbehind:!0,inside:{keyword:{pattern:/^#@?(?:[a-z][\w-]*|{[a-z][\w-]*})|\bin\b/,inside:{punctuation:/[{}]/}},rest:t}},variable:t.variable}),e.languages.velocity.tag.inside["attr-value"].inside.rest=e.languages.velocity}(e)}e.exports=r,r.displayName="velocity",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.verilog={comment:/\/\/.*|\/\*[\s\S]*?\*\//,string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},property:/\B\$\w+\b/,constant:/\B`\w+\b/,function:/\w+(?=\()/,keyword:/\b(?:alias|and|assert|assign|assume|automatic|before|begin|bind|bins|binsof|bit|break|buf|bufif0|bufif1|byte|class|case|casex|casez|cell|chandle|clocking|cmos|config|const|constraint|context|continue|cover|covergroup|coverpoint|cross|deassign|default|defparam|design|disable|dist|do|edge|else|end|endcase|endclass|endclocking|endconfig|endfunction|endgenerate|endgroup|endinterface|endmodule|endpackage|endprimitive|endprogram|endproperty|endspecify|endsequence|endtable|endtask|enum|event|expect|export|extends|extern|final|first_match|for|force|foreach|forever|fork|forkjoin|function|generate|genvar|highz0|highz1|if|iff|ifnone|ignore_bins|illegal_bins|import|incdir|include|initial|inout|input|inside|instance|int|integer|interface|intersect|join|join_any|join_none|large|liblist|library|local|localparam|logic|longint|macromodule|matches|medium|modport|module|nand|negedge|new|nmos|nor|noshowcancelled|not|notif0|notif1|null|or|output|package|packed|parameter|pmos|posedge|primitive|priority|program|property|protected|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|pure|rand|randc|randcase|randsequence|rcmos|real|realtime|ref|reg|release|repeat|return|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|sequence|shortint|shortreal|showcancelled|signed|small|solve|specify|specparam|static|string|strong0|strong1|struct|super|supply0|supply1|table|tagged|task|this|throughout|time|timeprecision|timeunit|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|type|typedef|union|unique|unsigned|use|uwire|var|vectored|virtual|void|wait|wait_order|wand|weak0|weak1|while|wildcard|wire|with|within|wor|xnor|xor)\b/,important:/\b(?:always_latch|always_comb|always_ff|always)\b ?@?/,number:/\B##?\d+|(?:\b\d+)?'[odbh] ?[\da-fzx_?]+|\b\d*[._]?\d+(?:e[-+]?\d+)?/i,operator:/[-+{}^~%*\/?=!<>&|]+/,punctuation:/[[\];(),.:]/}}e.exports=r,r.displayName="verilog",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.vhdl={comment:/--.+/,"vhdl-vectors":{pattern:/\b[oxb]"[\da-f_]+"|"[01uxzwlh-]+"/i,alias:"number"},"quoted-function":{pattern:/"\S+?"(?=\()/,alias:"function"},string:/"(?:[^\\"\r\n]|\\(?:\r\n|[\s\S]))*"/,constant:/\b(?:use|library)\b/i,keyword:/\b(?:'active|'ascending|'base|'delayed|'driving|'driving_value|'event|'high|'image|'instance_name|'last_active|'last_event|'last_value|'left|'leftof|'length|'low|'path_name|'pos|'pred|'quiet|'range|'reverse_range|'right|'rightof|'simple_name|'stable|'succ|'transaction|'val|'value|access|after|alias|all|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|new|next|null|of|on|open|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with)\b/i,boolean:/\b(?:true|false)\b/i,function:/\w+(?=\()/,number:/'[01uxzwlh-]'|\b(?:\d+#[\da-f_.]+#|\d[\d_.]*)(?:e[-+]?\d+)?/i,operator:/[<>]=?|:=|[-+*\/&=]|\b(?:abs|not|mod|rem|sll|srl|sla|sra|rol|ror|and|or|nand|xnor|xor|nor)\b/i,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="vhdl",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,function:/\w+(?=\()/,keyword:/\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|sm|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/}}e.exports=r,r.displayName="vim",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages["visual-basic"]={comment:{pattern:/(?:['‘’]|REM\b).*/i,inside:{keyword:/^REM/i}},directive:{pattern:/#(?:Const|Else|ElseIf|End|ExternalChecksum|ExternalSource|If|Region)(?:[^\S\r\n]_[^\S\r\n]*(?:\r\n?|\n)|.)+/i,alias:"comment",greedy:!0},string:{pattern:/["“”](?:["“”]{2}|[^"“”])*["“”]C?/i,greedy:!0},date:{pattern:/#[^\S\r\n]*(?:\d+([\/-])\d+\1\d+(?:[^\S\r\n]+(?:\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?))?|(?:\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?))[^\S\r\n]*#/i,alias:"builtin"},number:/(?:(?:\b\d+(?:\.\d+)?|\.\d+)(?:E[+-]?\d+)?|&[HO][\dA-F]+)(?:U?[ILS]|[FRD])?/i,boolean:/\b(?:True|False|Nothing)\b/i,keyword:/\b(?:AddHandler|AddressOf|Alias|And(?:Also)?|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|C(?:Bool|Byte|Char|Date|Dbl|Dec|Int|Lng|Obj|SByte|Short|Sng|Str|Type|UInt|ULng|UShort)|Char|Class|Const|Continue|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else(?:If)?|End(?:If)?|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get(?:Type|XMLNamespace)?|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|Must(?:Inherit|Override)|My(?:Base|Class)|Namespace|Narrowing|New|Next|Not(?:Inheritable|Overridable)?|Object|Of|On|Operator|Option(?:al)?|Or(?:Else)?|Out|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TryCast|TypeOf|U(?:Integer|Long|Short)|Using|Variant|Wend|When|While|Widening|With(?:Events)?|WriteOnly|Xor)\b/i,operator:[/[+\-*\/\\^<=>&#@$%!]/,{pattern:/([^\S\r\n])_(?=[^\S\r\n]*[\r\n])/,lookbehind:!0}],punctuation:/[{}().,:?]/},e.languages.vb=e.languages["visual-basic"]}e.exports=r,r.displayName="visualBasic",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-.\/:<=>?@\\^_`|~]+/i,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/}}e.exports=r,r.displayName="wasm",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.wiki=e.languages.extend("markup",{"block-comment":{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0,alias:"comment"},heading:{pattern:/^(=+).+?\1/m,inside:{punctuation:/^=+|=+$/,important:/.+/}},emphasis:{pattern:/('{2,5}).+?\1/,inside:{"bold italic":{pattern:/(''''').+?(?=\1)/,lookbehind:!0},bold:{pattern:/(''')[^'](?:.*?[^'])?(?=\1)/,lookbehind:!0},italic:{pattern:/('')[^'](?:.*?[^'])?(?=\1)/,lookbehind:!0},punctuation:/^''+|''+$/}},hr:{pattern:/^-{4,}/m,alias:"punctuation"},url:[/ISBN +(?:97[89][ -]?)?(?:\d[ -]?){9}[\dx]\b|(?:RFC|PMID) +\d+/i,/\[\[.+?\]\]|\[.+?\]/],variable:[/__[A-Z]+__/,/\{{3}.+?\}{3}/,/\{\{.+?\}\}/],symbol:[/^#redirect/im,/~{3,5}/],"table-tag":{pattern:/((?:^|[|!])[|!])[^|\r\n]+\|(?!\|)/m,lookbehind:!0,inside:{"table-bar":{pattern:/\|$/,alias:"punctuation"},rest:e.languages.markup.tag.inside}},punctuation:/^(?:\{\||\|\}|\|-|[*#:;!|])|\|\||!!/m}),e.languages.insertBefore("wiki","tag",{nowiki:{pattern:/<(nowiki|pre|source)\b[\s\S]*?>[\s\S]*?<\/\1>/i,inside:{tag:{pattern:/<(?:nowiki|pre|source)\b[\s\S]*?>|<\/(?:nowiki|pre|source)>/i,inside:e.languages.markup.tag.inside}}}})}e.exports=r,r.displayName="wiki",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.xeora=e.languages.extend("markup",{constant:{pattern:/\$(?:DomainContents|PageRenderDuration)\$/,inside:{punctuation:{pattern:/\$/}}},variable:{pattern:/\$@?(?:#+|[-+*~=^])?[\w.]+\$/,inside:{punctuation:{pattern:/[$.]/},operator:{pattern:/#+|[-+*~=^@]/}}},"function-inline":{pattern:/\$F:[-\w.]+\?[-\w.]+(?:,(?:\|?(?:[-#.^+*~]*(?:[\w+][^$]*)|=(?:[\S+][^$]*)|@[-#]*(?:\w+.)[\w+.]+)?)*)?\$/,inside:{variable:{pattern:/(?:[,|])@?(?:#+|[-+*~=^])?[\w.]+/,inside:{punctuation:{pattern:/[,.|]/},operator:{pattern:/#+|[-+*~=^@]/}}},punctuation:{pattern:/\$\w:|[$:?.,|]/}},alias:"function"},"function-block":{pattern:/\$XF:{[-\w.]+\?[-\w.]+(?:,(?:\|?(?:[-#.^+*~]*(?:[\w+][^$]*)|=(?:[\S+][^$]*)|@[-#]*(?:\w+.)[\w+.]+)?)*)?}:XF\$/,inside:{punctuation:{pattern:/[$:{}?.,|]/}},alias:"function"},"directive-inline":{pattern:/\$\w(?:#\d+\+?)?(?:\[[-\w.]+])?:[-\/\w.]+\$/,inside:{punctuation:{pattern:/\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,inside:{tag:{pattern:/#\d/}}}},alias:"function"},"directive-block-open":{pattern:/\$\w+:{|\$\w(?:#\d+\+?)?(?:\[[-\w.]+])?:[-\w.]+:{(![A-Z]+)?/,inside:{punctuation:{pattern:/\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,inside:{tag:{pattern:/#\d/}}},attribute:{pattern:/![A-Z]+$/,inside:{punctuation:{pattern:/!/}},alias:"keyword"}},alias:"function"},"directive-block-separator":{pattern:/}:[-\w.]+:{/,inside:{punctuation:{pattern:/[:{}]/}},alias:"function"},"directive-block-close":{pattern:/}:[-\w.]+\$/,inside:{punctuation:{pattern:/[:{}$]/}},alias:"function"}}),e.languages.insertBefore("inside","punctuation",{variable:e.languages.xeora["function-inline"].inside.variable},e.languages.xeora["function-block"]),e.languages.xeoracube=e.languages.xeora}(e)}e.exports=r,r.displayName="xeora",r.aliases=["xeoracube"]},function(e,t,n){"use strict";function r(e){e.languages.xojo={comment:{pattern:/(?:'|\/\/|Rem\b).+/i,inside:{keyword:/^Rem/i}},string:{pattern:/"(?:""|[^"])*"/,greedy:!0},number:[/(?:\b\d+\.?\d*|\B\.\d+)(?:E[+-]?\d+)?/i,/&[bchou][a-z\d]+/i],symbol:/#(?:If|Else|ElseIf|Endif|Pragma)\b/i,keyword:/\b(?:AddHandler|App|Array|As(?:signs)?|By(?:Ref|Val)|Break|Call|Case|Catch|Const|Continue|CurrentMethodName|Declare|Dim|Do(?:wnTo)?|Each|Else(?:If)?|End|Exit|Extends|False|Finally|For|Global|If|In|Lib|Loop|Me|Next|Nil|Optional|ParamArray|Raise(?:Event)?|ReDim|Rem|RemoveHandler|Return|Select|Self|Soft|Static|Step|Super|Then|To|True|Try|Ubound|Until|Using|Wend|While)\b/i,operator:/<[=>]?|>=?|[+\-*\/\\^=]|\b(?:AddressOf|And|Ctype|IsA?|Mod|New|Not|Or|Xor|WeakAddressOf)\b/i,punctuation:/[.,;:()]/}}e.exports=r,r.displayName="xojo",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.xquery=e.languages.extend("markup",{"xquery-comment":{pattern:/\(:[\s\S]*?:\)/,greedy:!0,alias:"comment"},string:{pattern:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,greedy:!0},extension:{pattern:/\(#.+?#\)/,alias:"symbol"},variable:/\$[\w-:]+/,axis:{pattern:/(^|[^-])(?:ancestor(?:-or-self)?|attribute|child|descendant(?:-or-self)?|following(?:-sibling)?|parent|preceding(?:-sibling)?|self)(?=::)/,lookbehind:!0,alias:"operator"},"keyword-operator":{pattern:/(^|[^:-])\b(?:and|castable as|div|eq|except|ge|gt|idiv|instance of|intersect|is|le|lt|mod|ne|or|union)\b(?=$|[^:-])/,lookbehind:!0,alias:"operator"},keyword:{pattern:/(^|[^:-])\b(?:as|ascending|at|base-uri|boundary-space|case|cast as|collation|construction|copy-namespaces|declare|default|descending|else|empty (?:greatest|least)|encoding|every|external|for|function|if|import|in|inherit|lax|let|map|module|namespace|no-inherit|no-preserve|option|order(?: by|ed|ing)?|preserve|return|satisfies|schema|some|stable|strict|strip|then|to|treat as|typeswitch|unordered|validate|variable|version|where|xquery)\b(?=$|[^:-])/,lookbehind:!0},function:/[\w-]+(?::[\w-]+)*(?=\s*\()/,"xquery-element":{pattern:/(element\s+)[\w-]+(?::[\w-]+)*/,lookbehind:!0,alias:"tag"},"xquery-attribute":{pattern:/(attribute\s+)[\w-]+(?::[\w-]+)*/,lookbehind:!0,alias:"attr-name"},builtin:{pattern:/(^|[^:-])\b(?:attribute|comment|document|element|processing-instruction|text|xs:(?:anyAtomicType|anyType|anyURI|base64Binary|boolean|byte|date|dateTime|dayTimeDuration|decimal|double|duration|ENTITIES|ENTITY|float|gDay|gMonth|gMonthDay|gYear|gYearMonth|hexBinary|ID|IDREFS?|int|integer|language|long|Name|NCName|negativeInteger|NMTOKENS?|nonNegativeInteger|nonPositiveInteger|normalizedString|NOTATION|positiveInteger|QName|short|string|time|token|unsigned(?:Byte|Int|Long|Short)|untyped(?:Atomic)?|yearMonthDuration))\b(?=$|[^:-])/,lookbehind:!0},number:/\b\d+(?:\.\d+)?(?:E[+-]?\d+)?/,operator:[/[+*=?|@]|\.\.?|:=|!=|<[=<]?|>[=>]?/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}],punctuation:/[[\](){},;:\/]/}),e.languages.xquery.tag.pattern=/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|{(?!{)(?:{(?:{[^}]*}|[^}])*}|[^}])+}|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,e.languages.xquery.tag.inside["attr-value"].pattern=/=(?:("|')(?:\\[\s\S]|{(?!{)(?:{(?:{[^}]*}|[^}])*}|[^}])+}|(?!\1)[^\\])*\1|[^\s'">=]+)/i,e.languages.xquery.tag.inside["attr-value"].inside.punctuation=/^="|"$/,e.languages.xquery.tag.inside["attr-value"].inside.expression={pattern:/{(?!{)(?:{(?:{[^}]*}|[^}])*}|[^}])+}/,inside:{rest:e.languages.xquery},alias:"language-xquery"};var t=function(e){return"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(t).join("")},n=function(r){for(var o=[],a=0;a0&&o[o.length-1].tagName===t(i.content[0].content[1])&&o.pop():"/>"===i.content[i.content.length-1].content||o.push({tagName:t(i.content[0].content[1]),openedBraces:0}):!(o.length>0&&"punctuation"===i.type&&"{"===i.content)||r[a+1]&&"punctuation"===r[a+1].type&&"{"===r[a+1].content||r[a-1]&&"plain-text"===r[a-1].type&&"{"===r[a-1].content?o.length>0&&o[o.length-1].openedBraces>0&&"punctuation"===i.type&&"}"===i.content?o[o.length-1].openedBraces--:"comment"!==i.type&&(l=!0):o[o.length-1].openedBraces++),(l||"string"==typeof i)&&o.length>0&&0===o[o.length-1].openedBraces){var s=t(i);a0&&("string"==typeof r[a-1]||"plain-text"===r[a-1].type)&&(s=t(r[a-1])+s,r.splice(a-1,1),a--),/^\s+$/.test(s)?r[a]=s:r[a]=new e.Token("plain-text",s,null,s)}i.content&&"string"!=typeof i.content&&n(i.content)}};e.hooks.add("after-tokenize",function(e){"xquery"===e.language&&n(e.tokens)})}(e)}e.exports=r,r.displayName="xquery",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.yaml={scalar:{pattern:/([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,alias:"number"},boolean:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},null:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./}}e.exports=r,r.displayName="yaml",r.aliases=[]},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"black",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"black",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",position:"relative",margin:".5em 0",overflow:"visible",padding:"0",backgroundColor:"#fdfdfd",WebkitBoxSizing:"border-box",MozBoxSizing:"border-box",boxSizing:"border-box",marginBottom:"1em"},'pre[class*="language-"]>code':{position:"relative",borderLeft:"10px solid #358ccb",boxShadow:"-1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf",backgroundColor:"#fdfdfd",backgroundImage:"linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%)",backgroundSize:"3em 3em",backgroundOrigin:"content-box",backgroundAttachment:"local"},'code[class*="language"]':{maxHeight:"inherit",height:"inherit",padding:"0 1em",display:"block",overflow:"auto"},':not(pre) > code[class*="language-"]':{backgroundColor:"#fdfdfd",WebkitBoxSizing:"border-box",MozBoxSizing:"border-box",boxSizing:"border-box",marginBottom:"1em",position:"relative",padding:".2em",borderRadius:"0.3em",color:"#c92c2c",border:"1px solid rgba(0, 0, 0, 0.1)",display:"inline",whiteSpace:"normal"},'pre[class*="language-"]:before':{content:"''",zIndex:"-2",display:"block",position:"absolute",bottom:"0.75em",left:"0.18em",width:"40%",height:"20%",maxHeight:"13em",boxShadow:"0px 13px 8px #979797",WebkitTransform:"rotate(-2deg)",MozTransform:"rotate(-2deg)",msTransform:"rotate(-2deg)",OTransform:"rotate(-2deg)",transform:"rotate(-2deg)"},'pre[class*="language-"]:after':{content:"''",zIndex:"-2",display:"block",position:"absolute",bottom:"0.75em",left:"auto",width:"40%",height:"20%",maxHeight:"13em",boxShadow:"0px 13px 8px #979797",WebkitTransform:"rotate(2deg)",MozTransform:"rotate(2deg)",msTransform:"rotate(2deg)",OTransform:"rotate(2deg)",transform:"rotate(2deg)",right:"0.75em"},':not(pre) > code[class*="language-"]:after':{right:"0.75em",left:"auto",WebkitTransform:"rotate(2deg)",MozTransform:"rotate(2deg)",msTransform:"rotate(2deg)",OTransform:"rotate(2deg)",transform:"rotate(2deg)"},comment:{color:"#7D8B99"},"block-comment":{color:"#7D8B99"},prolog:{color:"#7D8B99"},doctype:{color:"#7D8B99"},cdata:{color:"#7D8B99"},punctuation:{color:"#5F6364"},property:{color:"#c92c2c"},tag:{color:"#c92c2c"},boolean:{color:"#c92c2c"},number:{color:"#c92c2c"},"function-name":{color:"#c92c2c"},constant:{color:"#c92c2c"},symbol:{color:"#c92c2c"},deleted:{color:"#c92c2c"},selector:{color:"#2f9c0a"},"attr-name":{color:"#2f9c0a"},string:{color:"#2f9c0a"},char:{color:"#2f9c0a"},function:{color:"#2f9c0a"},builtin:{color:"#2f9c0a"},inserted:{color:"#2f9c0a"},operator:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},entity:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)",cursor:"help"},url:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},variable:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},atrule:{color:"#1990b8"},"attr-value":{color:"#1990b8"},keyword:{color:"#1990b8"},"class-name":{color:"#1990b8"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"normal"},".language-css .token.string":{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},".style .token.string":{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},".namespace":{Opacity:".7"},"tab:not(:empty):before":{color:"#e0d7d1"},"cr:before":{color:"#e0d7d1"},"lf:before":{color:"#e0d7d1"},'pre[class*="language-"].line-numbers':{paddingLeft:"0"},'pre[class*="language-"].line-numbers code':{paddingLeft:"3.8em"},'pre[class*="language-"].line-numbers .line-numbers-rows':{left:"0"},'pre[class*="language-"][data-line]':{paddingTop:"0",paddingBottom:"0",paddingLeft:"0"},"pre[data-line] code":{position:"relative",paddingLeft:"4em"},"pre .line-highlight":{marginTop:"0"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"white",background:"none",textShadow:"0 -.1em .2em black",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"white",background:"hsl(30, 20%, 25%)",textShadow:"0 -.1em .2em black",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",border:".3em solid hsl(30, 20%, 40%)",borderRadius:".5em",boxShadow:"1px 1px .5em black inset"},':not(pre) > code[class*="language-"]':{background:"hsl(30, 20%, 25%)",padding:".15em .2em .05em",borderRadius:".3em",border:".13em solid hsl(30, 20%, 40%)",boxShadow:"1px 1px .3em -.1em black inset",whiteSpace:"normal"},comment:{color:"hsl(30, 20%, 50%)"},prolog:{color:"hsl(30, 20%, 50%)"},doctype:{color:"hsl(30, 20%, 50%)"},cdata:{color:"hsl(30, 20%, 50%)"},punctuation:{Opacity:".7"},".namespace":{Opacity:".7"},property:{color:"hsl(350, 40%, 70%)"},tag:{color:"hsl(350, 40%, 70%)"},boolean:{color:"hsl(350, 40%, 70%)"},number:{color:"hsl(350, 40%, 70%)"},constant:{color:"hsl(350, 40%, 70%)"},symbol:{color:"hsl(350, 40%, 70%)"},selector:{color:"hsl(75, 70%, 60%)"},"attr-name":{color:"hsl(75, 70%, 60%)"},string:{color:"hsl(75, 70%, 60%)"},char:{color:"hsl(75, 70%, 60%)"},builtin:{color:"hsl(75, 70%, 60%)"},inserted:{color:"hsl(75, 70%, 60%)"},operator:{color:"hsl(40, 90%, 60%)"},entity:{color:"hsl(40, 90%, 60%)",cursor:"help"},url:{color:"hsl(40, 90%, 60%)"},".language-css .token.string":{color:"hsl(40, 90%, 60%)"},".style .token.string":{color:"hsl(40, 90%, 60%)"},variable:{color:"hsl(40, 90%, 60%)"},atrule:{color:"hsl(350, 40%, 70%)"},"attr-value":{color:"hsl(350, 40%, 70%)"},keyword:{color:"hsl(350, 40%, 70%)"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},deleted:{color:"red"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"black",color:"white",boxShadow:"-.3em 0 0 .3em black, .3em 0 0 .3em black"},'pre[class*="language-"]':{fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:".4em .8em",margin:".5em 0",overflow:"auto",background:'url(\'data:image/svg+xml;charset=utf-8,%0D%0A%0D%0A%0D%0A<%2Fsvg>\')',backgroundSize:"1em 1em"},':not(pre) > code[class*="language-"]':{padding:".2em",borderRadius:".3em",boxShadow:"none",whiteSpace:"normal"},comment:{color:"#aaa"},prolog:{color:"#aaa"},doctype:{color:"#aaa"},cdata:{color:"#aaa"},punctuation:{color:"#999"},".namespace":{Opacity:".7"},property:{color:"#0cf"},tag:{color:"#0cf"},boolean:{color:"#0cf"},number:{color:"#0cf"},constant:{color:"#0cf"},symbol:{color:"#0cf"},selector:{color:"yellow"},"attr-name":{color:"yellow"},string:{color:"yellow"},char:{color:"yellow"},builtin:{color:"yellow"},operator:{color:"yellowgreen"},entity:{color:"yellowgreen",cursor:"help"},url:{color:"yellowgreen"},".language-css .token.string":{color:"yellowgreen"},".toke.variable":{color:"yellowgreen"},inserted:{color:"yellowgreen"},atrule:{color:"deeppink"},"attr-value":{color:"deeppink"},keyword:{color:"deeppink"},regex:{color:"orange"},important:{color:"orange",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},deleted:{color:"red"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#f8f8f2",background:"none",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#f8f8f2",background:"#272822",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em"},':not(pre) > code[class*="language-"]':{background:"#272822",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"slategray"},prolog:{color:"slategray"},doctype:{color:"slategray"},cdata:{color:"slategray"},punctuation:{color:"#f8f8f2"},".namespace":{Opacity:".7"},property:{color:"#f92672"},tag:{color:"#f92672"},constant:{color:"#f92672"},symbol:{color:"#f92672"},deleted:{color:"#f92672"},boolean:{color:"#ae81ff"},number:{color:"#ae81ff"},selector:{color:"#a6e22e"},"attr-name":{color:"#a6e22e"},string:{color:"#a6e22e"},char:{color:"#a6e22e"},builtin:{color:"#a6e22e"},inserted:{color:"#a6e22e"},operator:{color:"#f8f8f2"},entity:{color:"#f8f8f2",cursor:"help"},url:{color:"#f8f8f2"},".language-css .token.string":{color:"#f8f8f2"},".style .token.string":{color:"#f8f8f2"},variable:{color:"#f8f8f2"},atrule:{color:"#e6db74"},"attr-value":{color:"#e6db74"},function:{color:"#e6db74"},keyword:{color:"#66d9ef"},regex:{color:"#fd971f"},important:{color:"#fd971f",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#657b83",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#657b83",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em",backgroundColor:"#fdf6e3"},'pre[class*="language-"]::-moz-selection':{background:"#073642"},'pre[class*="language-"] ::-moz-selection':{background:"#073642"},'code[class*="language-"]::-moz-selection':{background:"#073642"},'code[class*="language-"] ::-moz-selection':{background:"#073642"},'pre[class*="language-"]::selection':{background:"#073642"},'pre[class*="language-"] ::selection':{background:"#073642"},'code[class*="language-"]::selection':{background:"#073642"},'code[class*="language-"] ::selection':{background:"#073642"},':not(pre) > code[class*="language-"]':{backgroundColor:"#fdf6e3",padding:".1em",borderRadius:".3em"},comment:{color:"#93a1a1"},prolog:{color:"#93a1a1"},doctype:{color:"#93a1a1"},cdata:{color:"#93a1a1"},punctuation:{color:"#586e75"},".namespace":{Opacity:".7"},property:{color:"#268bd2"},tag:{color:"#268bd2"},boolean:{color:"#268bd2"},number:{color:"#268bd2"},constant:{color:"#268bd2"},symbol:{color:"#268bd2"},deleted:{color:"#268bd2"},selector:{color:"#2aa198"},"attr-name":{color:"#2aa198"},string:{color:"#2aa198"},char:{color:"#2aa198"},builtin:{color:"#2aa198"},url:{color:"#2aa198"},inserted:{color:"#2aa198"},entity:{color:"#657b83",background:"#eee8d5",cursor:"help"},atrule:{color:"#859900"},"attr-value":{color:"#859900"},keyword:{color:"#859900"},function:{color:"#b58900"},regex:{color:"#cb4b16"},important:{color:"#cb4b16",fontWeight:"bold"},variable:{color:"#cb4b16"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#ccc",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#ccc",background:"#2d2d2d",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto"},':not(pre) > code[class*="language-"]':{background:"#2d2d2d",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"#999"},"block-comment":{color:"#999"},prolog:{color:"#999"},doctype:{color:"#999"},cdata:{color:"#999"},punctuation:{color:"#ccc"},tag:{color:"#e2777a"},"attr-name":{color:"#e2777a"},namespace:{color:"#e2777a"},deleted:{color:"#e2777a"},"function-name":{color:"#6196cc"},boolean:{color:"#f08d49"},number:{color:"#f08d49"},function:{color:"#f08d49"},property:{color:"#f8c555"},"class-name":{color:"#f8c555"},constant:{color:"#f8c555"},symbol:{color:"#f8c555"},selector:{color:"#cc99cd"},important:{color:"#cc99cd",fontWeight:"bold"},atrule:{color:"#cc99cd"},keyword:{color:"#cc99cd"},builtin:{color:"#cc99cd"},string:{color:"#7ec699"},char:{color:"#7ec699"},"attr-value":{color:"#7ec699"},regex:{color:"#7ec699"},variable:{color:"#7ec699"},operator:{color:"#67cdcc"},entity:{color:"#67cdcc",cursor:"help"},url:{color:"#67cdcc"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},inserted:{color:"green"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"white",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",textShadow:"0 -.1em .2em black",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"white",background:"hsl(0, 0%, 8%)",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",textShadow:"0 -.1em .2em black",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",borderRadius:".5em",border:".3em solid hsl(0, 0%, 33%)",boxShadow:"1px 1px .5em black inset",margin:".5em 0",overflow:"auto",padding:"1em"},':not(pre) > code[class*="language-"]':{background:"hsl(0, 0%, 8%)",borderRadius:".3em",border:".13em solid hsl(0, 0%, 33%)",boxShadow:"1px 1px .3em -.1em black inset",padding:".15em .2em .05em",whiteSpace:"normal"},'pre[class*="language-"]::-moz-selection':{background:"hsla(0, 0%, 93%, 0.15)",textShadow:"none"},'pre[class*="language-"]::selection':{background:"hsla(0, 0%, 93%, 0.15)",textShadow:"none"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"]::selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"] ::selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},comment:{color:"hsl(0, 0%, 47%)"},prolog:{color:"hsl(0, 0%, 47%)"},doctype:{color:"hsl(0, 0%, 47%)"},cdata:{color:"hsl(0, 0%, 47%)"},punctuation:{Opacity:".7"},".namespace":{Opacity:".7"},tag:{color:"hsl(14, 58%, 55%)"},boolean:{color:"hsl(14, 58%, 55%)"},number:{color:"hsl(14, 58%, 55%)"},deleted:{color:"hsl(14, 58%, 55%)"},keyword:{color:"hsl(53, 89%, 79%)"},property:{color:"hsl(53, 89%, 79%)"},selector:{color:"hsl(53, 89%, 79%)"},constant:{color:"hsl(53, 89%, 79%)"},symbol:{color:"hsl(53, 89%, 79%)"},builtin:{color:"hsl(53, 89%, 79%)"},"attr-name":{color:"hsl(76, 21%, 52%)"},"attr-value":{color:"hsl(76, 21%, 52%)"},string:{color:"hsl(76, 21%, 52%)"},char:{color:"hsl(76, 21%, 52%)"},operator:{color:"hsl(76, 21%, 52%)"},entity:{color:"hsl(76, 21%, 52%)",cursor:"help"},url:{color:"hsl(76, 21%, 52%)"},".language-css .token.string":{color:"hsl(76, 21%, 52%)"},".style .token.string":{color:"hsl(76, 21%, 52%)"},variable:{color:"hsl(76, 21%, 52%)"},inserted:{color:"hsl(76, 21%, 52%)"},atrule:{color:"hsl(218, 22%, 55%)"},regex:{color:"hsl(42, 75%, 65%)"},important:{color:"hsl(42, 75%, 65%)",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},"pre[data-line]":{padding:"1em 0 1em 3em",position:"relative"},".language-markup .token.tag":{color:"hsl(33, 33%, 52%)"},".language-markup .token.attr-name":{color:"hsl(33, 33%, 52%)"},".language-markup .token.punctuation":{color:"hsl(33, 33%, 52%)"},"":{position:"relative",zIndex:"1"},".line-highlight":{background:"linear-gradient(to right, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0))",borderBottom:"1px dashed hsl(0, 0%, 33%)",borderTop:"1px dashed hsl(0, 0%, 33%)",left:"0",lineHeight:"inherit",marginTop:"0.75em",padding:"inherit 0",pointerEvents:"none",position:"absolute",right:"0",whiteSpace:"pre",zIndex:"0"},".line-highlight:before":{backgroundColor:"hsl(215, 15%, 59%)",borderRadius:"999px",boxShadow:"0 1px white",color:"hsl(24, 20%, 95%)",content:"attr(data-start)",font:"bold 65%/1.5 sans-serif",left:".6em",minWidth:"1em",padding:"0 .5em",position:"absolute",textAlign:"center",textShadow:"none",top:".4em",verticalAlign:".3em"},".line-highlight[data-end]:after":{backgroundColor:"hsl(215, 15%, 59%)",borderRadius:"999px",boxShadow:"0 1px white",color:"hsl(24, 20%, 95%)",content:"attr(data-end)",font:"bold 65%/1.5 sans-serif",left:".6em",minWidth:"1em",padding:"0 .5em",position:"absolute",textAlign:"center",textShadow:"none",top:"auto",verticalAlign:".3em",bottom:".4em"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"black",background:"none",textShadow:"0 1px white",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"black",background:"#f5f2f0",textShadow:"0 1px white",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"]::selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#b3d4fc"},':not(pre) > code[class*="language-"]':{background:"#f5f2f0",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"slategray"},prolog:{color:"slategray"},doctype:{color:"slategray"},cdata:{color:"slategray"},punctuation:{color:"#999"},".namespace":{Opacity:".7"},property:{color:"#905"},tag:{color:"#905"},boolean:{color:"#905"},number:{color:"#905"},constant:{color:"#905"},symbol:{color:"#905"},deleted:{color:"#905"},selector:{color:"#690"},"attr-name":{color:"#690"},string:{color:"#690"},char:{color:"#690"},builtin:{color:"#690"},inserted:{color:"#690"},operator:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},entity:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)",cursor:"help"},url:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".language-css .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".style .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},atrule:{color:"#07a"},"attr-value":{color:"#07a"},keyword:{color:"#07a"},function:{color:"#DD4A68"},"class-name":{color:"#DD4A68"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"bold"},variable:{color:"#e90"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#c5c8c6",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#c5c8c6",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em",background:"#1d1f21"},':not(pre) > code[class*="language-"]':{background:"#1d1f21",padding:".1em",borderRadius:".3em"},comment:{color:"#7C7C7C"},prolog:{color:"#7C7C7C"},doctype:{color:"#7C7C7C"},cdata:{color:"#7C7C7C"},punctuation:{color:"#c5c8c6"},".namespace":{Opacity:".7"},property:{color:"#96CBFE"},keyword:{color:"#96CBFE"},tag:{color:"#96CBFE"},"class-name":{color:"#FFFFB6",textDecoration:"underline"},boolean:{color:"#99CC99"},constant:{color:"#99CC99"},symbol:{color:"#f92672"},deleted:{color:"#f92672"},number:{color:"#FF73FD"},selector:{color:"#A8FF60"},"attr-name":{color:"#A8FF60"},string:{color:"#A8FF60"},char:{color:"#A8FF60"},builtin:{color:"#A8FF60"},inserted:{color:"#A8FF60"},variable:{color:"#C6C5FE"},operator:{color:"#EDEDED"},entity:{color:"#FFFFB6",cursor:"help"},url:{color:"#96CBFE"},".language-css .token.string":{color:"#87C38A"},".style .token.string":{color:"#87C38A"},atrule:{color:"#F9EE98"},"attr-value":{color:"#F9EE98"},function:{color:"#DAD085"},regex:{color:"#E9C062"},important:{color:"#fd971f",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#f5f7ff",color:"#5e6687"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#f5f7ff",color:"#5e6687",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#dfe2f1"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"]::selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#dfe2f1"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#898ea4"},prolog:{color:"#898ea4"},doctype:{color:"#898ea4"},cdata:{color:"#898ea4"},punctuation:{color:"#5e6687"},namespace:{Opacity:".7"},operator:{color:"#c76b29"},boolean:{color:"#c76b29"},number:{color:"#c76b29"},property:{color:"#c08b30"},tag:{color:"#3d8fd1"},string:{color:"#22a2c9"},selector:{color:"#6679cc"},"attr-name":{color:"#c76b29"},entity:{color:"#22a2c9",cursor:"help"},url:{color:"#22a2c9"},".language-css .token.string":{color:"#22a2c9"},".style .token.string":{color:"#22a2c9"},"attr-value":{color:"#ac9739"},keyword:{color:"#ac9739"},control:{color:"#ac9739"},directive:{color:"#ac9739"},unit:{color:"#ac9739"},statement:{color:"#22a2c9"},regex:{color:"#22a2c9"},atrule:{color:"#22a2c9"},placeholder:{color:"#3d8fd1"},variable:{color:"#3d8fd1"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #202746",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#c94922"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:"0.4em solid #c94922",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#dfe2f1"},".line-numbers-rows > span:before":{color:"#979db4"},".line-highlight":{background:"linear-gradient(to right, rgba(107, 115, 148, 0.2) 70%, rgba(107, 115, 148, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#fff",textShadow:"0 1px 1px #000",fontFamily:'Menlo, Monaco, "Courier New", monospace',direction:"ltr",textAlign:"left",wordSpacing:"normal",whiteSpace:"pre",wordWrap:"normal",lineHeight:"1.4",background:"none",border:"0",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#fff",textShadow:"0 1px 1px #000",fontFamily:'Menlo, Monaco, "Courier New", monospace',direction:"ltr",textAlign:"left",wordSpacing:"normal",whiteSpace:"pre",wordWrap:"normal",lineHeight:"1.4",background:"#222",border:"0",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"15px",margin:"1em 0",overflow:"auto",MozBorderRadius:"8px",WebkitBorderRadius:"8px",borderRadius:"8px"},'pre[class*="language-"] code':{float:"left",padding:"0 15px 0 0"},':not(pre) > code[class*="language-"]':{background:"#222",padding:"5px 10px",lineHeight:"1",MozBorderRadius:"3px",WebkitBorderRadius:"3px",borderRadius:"3px"},comment:{color:"#797979"},prolog:{color:"#797979"},doctype:{color:"#797979"},cdata:{color:"#797979"},selector:{color:"#fff"},operator:{color:"#fff"},punctuation:{color:"#fff"},namespace:{Opacity:".7"},tag:{color:"#ffd893"},boolean:{color:"#ffd893"},atrule:{color:"#B0C975"},"attr-value":{color:"#B0C975"},hex:{color:"#B0C975"},string:{color:"#B0C975"},property:{color:"#c27628"},entity:{color:"#c27628",cursor:"help"},url:{color:"#c27628"},"attr-name":{color:"#c27628"},keyword:{color:"#c27628"},regex:{color:"#9B71C6"},function:{color:"#e5a638"},constant:{color:"#e5a638"},variable:{color:"#fdfba8"},number:{color:"#8799B0"},important:{color:"#E45734"},deliminator:{color:"#E45734"},"pre[data-line]":{position:"relative",padding:"1em 0 1em 3em"},".line-highlight":{position:"absolute",left:"0",right:"0",marginTop:"1em",background:"rgba(255,255,255,.2)",pointerEvents:"none",lineHeight:"inherit",whiteSpace:"pre"},".line-highlight:before":{content:"attr(data-start)",position:"absolute",top:".3em",left:".6em",minWidth:"1em",padding:"0 .5em",backgroundColor:"rgba(255,255,255,.3)",color:"#fff",font:"bold 65%/1.5 sans-serif",textAlign:"center",MozBorderRadius:"8px",WebkitBorderRadius:"8px",borderRadius:"8px",textShadow:"none"},".line-highlight[data-end]:after":{content:"attr(data-end)",position:"absolute",top:"auto",left:".6em",minWidth:"1em",padding:"0 .5em",backgroundColor:"rgba(255,255,255,.3)",color:"#fff",font:"bold 65%/1.5 sans-serif",textAlign:"center",MozBorderRadius:"8px",WebkitBorderRadius:"8px",borderRadius:"8px",textShadow:"none",bottom:".4em"},".line-numbers-rows":{margin:"0"},".line-numbers-rows span":{paddingRight:"10px",borderRight:"3px #d9d336 solid"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#a9b7c6",fontFamily:"Consolas, Monaco, 'Andale Mono', monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#a9b7c6",fontFamily:"Consolas, Monaco, 'Andale Mono', monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",background:"#2b2b2b"},'pre[class*="language-"]::-moz-selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'pre[class*="language-"] ::-moz-selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'code[class*="language-"]::-moz-selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'code[class*="language-"] ::-moz-selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'pre[class*="language-"]::selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'pre[class*="language-"] ::selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'code[class*="language-"]::selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'code[class*="language-"] ::selection':{color:"inherit",background:"rgba(33,66,131,.85)"},':not(pre) > code[class*="language-"]':{background:"#2b2b2b",padding:".1em",borderRadius:".3em"},comment:{color:"#808080"},prolog:{color:"#808080"},cdata:{color:"#808080"},delimiter:{color:"#cc7832"},boolean:{color:"#cc7832"},keyword:{color:"#cc7832"},selector:{color:"#cc7832"},important:{color:"#cc7832"},atrule:{color:"#cc7832"},operator:{color:"#a9b7c6"},punctuation:{color:"#a9b7c6"},"attr-name":{color:"#a9b7c6"},tag:{color:"#e8bf6a"},"tag .punctuation":{color:"#e8bf6a"},doctype:{color:"#e8bf6a"},builtin:{color:"#e8bf6a"},entity:{color:"#6897bb"},number:{color:"#6897bb"},symbol:{color:"#6897bb"},property:{color:"#9876aa"},constant:{color:"#9876aa"},variable:{color:"#9876aa"},string:{color:"#6a8759"},char:{color:"#6a8759"},"attr-value":{color:"#a5c261"},"attr-value .punctuation":{color:"#a5c261"},"attr-value .punctuation:first-child":{color:"#a9b7c6"},url:{color:"#287bde",textDecoration:"underline"},function:{color:"#ffc66d"},regex:{background:"#364135"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},inserted:{background:"#294436"},deleted:{background:"#484a4a"},"code.language-css .token.property":{color:"#a9b7c6"},"code.language-css .token.property + .token.punctuation":{color:"#a9b7c6"},"code.language-css .token.id":{color:"#ffc66d"},"code.language-css .token.selector > .token.class":{color:"#ffc66d"},"code.language-css .token.selector > .token.attribute":{color:"#ffc66d"},"code.language-css .token.selector > .token.pseudo-class":{color:"#ffc66d"},"code.language-css .token.selector > .token.pseudo-element":{color:"#ffc66d"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2734",color:"#9a86fd"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2734",color:"#9a86fd",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6a51e6"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6a51e6"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#6a51e6"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"]::selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#6a51e6"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#6c6783"},prolog:{color:"#6c6783"},doctype:{color:"#6c6783"},cdata:{color:"#6c6783"},punctuation:{color:"#6c6783"},namespace:{Opacity:".7"},tag:{color:"#e09142"},operator:{color:"#e09142"},number:{color:"#e09142"},property:{color:"#9a86fd"},function:{color:"#9a86fd"},"tag-id":{color:"#eeebff"},selector:{color:"#eeebff"},"atrule-id":{color:"#eeebff"},"code.language-javascript":{color:"#c4b9fe"},"attr-name":{color:"#c4b9fe"},"code.language-css":{color:"#ffcc99"},"code.language-scss":{color:"#ffcc99"},boolean:{color:"#ffcc99"},string:{color:"#ffcc99"},entity:{color:"#ffcc99",cursor:"help"},url:{color:"#ffcc99"},".language-css .token.string":{color:"#ffcc99"},".language-scss .token.string":{color:"#ffcc99"},".style .token.string":{color:"#ffcc99"},"attr-value":{color:"#ffcc99"},keyword:{color:"#ffcc99"},control:{color:"#ffcc99"},directive:{color:"#ffcc99"},unit:{color:"#ffcc99"},statement:{color:"#ffcc99"},regex:{color:"#ffcc99"},atrule:{color:"#ffcc99"},placeholder:{color:"#ffcc99"},variable:{color:"#ffcc99"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #eeebff",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#c4b9fe"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #8a75f5",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#2c2937"},".line-numbers-rows > span:before":{color:"#3c3949"},".line-highlight":{background:"linear-gradient(to right, rgba(224, 145, 66, 0.2) 70%, rgba(224, 145, 66, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#322d29",color:"#88786d"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#322d29",color:"#88786d",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6f5849"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6f5849"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#6f5849"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"]::selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#6f5849"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#6a5f58"},prolog:{color:"#6a5f58"},doctype:{color:"#6a5f58"},cdata:{color:"#6a5f58"},punctuation:{color:"#6a5f58"},namespace:{Opacity:".7"},tag:{color:"#bfa05a"},operator:{color:"#bfa05a"},number:{color:"#bfa05a"},property:{color:"#88786d"},function:{color:"#88786d"},"tag-id":{color:"#fff3eb"},selector:{color:"#fff3eb"},"atrule-id":{color:"#fff3eb"},"code.language-javascript":{color:"#a48774"},"attr-name":{color:"#a48774"},"code.language-css":{color:"#fcc440"},"code.language-scss":{color:"#fcc440"},boolean:{color:"#fcc440"},string:{color:"#fcc440"},entity:{color:"#fcc440",cursor:"help"},url:{color:"#fcc440"},".language-css .token.string":{color:"#fcc440"},".language-scss .token.string":{color:"#fcc440"},".style .token.string":{color:"#fcc440"},"attr-value":{color:"#fcc440"},keyword:{color:"#fcc440"},control:{color:"#fcc440"},directive:{color:"#fcc440"},unit:{color:"#fcc440"},statement:{color:"#fcc440"},regex:{color:"#fcc440"},atrule:{color:"#fcc440"},placeholder:{color:"#fcc440"},variable:{color:"#fcc440"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #fff3eb",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#a48774"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #816d5f",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#35302b"},".line-numbers-rows > span:before":{color:"#46403d"},".line-highlight":{background:"linear-gradient(to right, rgba(191, 160, 90, 0.2) 70%, rgba(191, 160, 90, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2d2a",color:"#687d68"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2d2a",color:"#687d68",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#435643"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#435643"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#435643"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#435643"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#435643"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#435643"},'code[class*="language-"]::selection':{textShadow:"none",background:"#435643"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#435643"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#535f53"},prolog:{color:"#535f53"},doctype:{color:"#535f53"},cdata:{color:"#535f53"},punctuation:{color:"#535f53"},namespace:{Opacity:".7"},tag:{color:"#a2b34d"},operator:{color:"#a2b34d"},number:{color:"#a2b34d"},property:{color:"#687d68"},function:{color:"#687d68"},"tag-id":{color:"#f0fff0"},selector:{color:"#f0fff0"},"atrule-id":{color:"#f0fff0"},"code.language-javascript":{color:"#b3d6b3"},"attr-name":{color:"#b3d6b3"},"code.language-css":{color:"#e5fb79"},"code.language-scss":{color:"#e5fb79"},boolean:{color:"#e5fb79"},string:{color:"#e5fb79"},entity:{color:"#e5fb79",cursor:"help"},url:{color:"#e5fb79"},".language-css .token.string":{color:"#e5fb79"},".language-scss .token.string":{color:"#e5fb79"},".style .token.string":{color:"#e5fb79"},"attr-value":{color:"#e5fb79"},keyword:{color:"#e5fb79"},control:{color:"#e5fb79"},directive:{color:"#e5fb79"},unit:{color:"#e5fb79"},statement:{color:"#e5fb79"},regex:{color:"#e5fb79"},atrule:{color:"#e5fb79"},placeholder:{color:"#e5fb79"},variable:{color:"#e5fb79"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #f0fff0",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#b3d6b3"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #5c705c",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#2c302c"},".line-numbers-rows > span:before":{color:"#3b423b"},".line-highlight":{background:"linear-gradient(to right, rgba(162, 179, 77, 0.2) 70%, rgba(162, 179, 77, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#faf8f5",color:"#728fcb"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#faf8f5",color:"#728fcb",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#faf8f5"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#faf8f5"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#faf8f5"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"]::selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#faf8f5"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#b6ad9a"},prolog:{color:"#b6ad9a"},doctype:{color:"#b6ad9a"},cdata:{color:"#b6ad9a"},punctuation:{color:"#b6ad9a"},namespace:{Opacity:".7"},tag:{color:"#063289"},operator:{color:"#063289"},number:{color:"#063289"},property:{color:"#b29762"},function:{color:"#b29762"},"tag-id":{color:"#2d2006"},selector:{color:"#2d2006"},"atrule-id":{color:"#2d2006"},"code.language-javascript":{color:"#896724"},"attr-name":{color:"#896724"},"code.language-css":{color:"#728fcb"},"code.language-scss":{color:"#728fcb"},boolean:{color:"#728fcb"},string:{color:"#728fcb"},entity:{color:"#728fcb",cursor:"help"},url:{color:"#728fcb"},".language-css .token.string":{color:"#728fcb"},".language-scss .token.string":{color:"#728fcb"},".style .token.string":{color:"#728fcb"},"attr-value":{color:"#728fcb"},keyword:{color:"#728fcb"},control:{color:"#728fcb"},directive:{color:"#728fcb"},unit:{color:"#728fcb"},statement:{color:"#728fcb"},regex:{color:"#728fcb"},atrule:{color:"#728fcb"},placeholder:{color:"#93abdc"},variable:{color:"#93abdc"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #2d2006",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#896724"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #896724",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#ece8de"},".line-numbers-rows > span:before":{color:"#cdc4b1"},".line-highlight":{background:"linear-gradient(to right, rgba(45, 32, 6, 0.2) 70%, rgba(45, 32, 6, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#1d262f",color:"#57718e"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#1d262f",color:"#57718e",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#004a9e"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#004a9e"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#004a9e"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"]::selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#004a9e"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#4a5f78"},prolog:{color:"#4a5f78"},doctype:{color:"#4a5f78"},cdata:{color:"#4a5f78"},punctuation:{color:"#4a5f78"},namespace:{Opacity:".7"},tag:{color:"#0aa370"},operator:{color:"#0aa370"},number:{color:"#0aa370"},property:{color:"#57718e"},function:{color:"#57718e"},"tag-id":{color:"#ebf4ff"},selector:{color:"#ebf4ff"},"atrule-id":{color:"#ebf4ff"},"code.language-javascript":{color:"#7eb6f6"},"attr-name":{color:"#7eb6f6"},"code.language-css":{color:"#47ebb4"},"code.language-scss":{color:"#47ebb4"},boolean:{color:"#47ebb4"},string:{color:"#47ebb4"},entity:{color:"#47ebb4",cursor:"help"},url:{color:"#47ebb4"},".language-css .token.string":{color:"#47ebb4"},".language-scss .token.string":{color:"#47ebb4"},".style .token.string":{color:"#47ebb4"},"attr-value":{color:"#47ebb4"},keyword:{color:"#47ebb4"},control:{color:"#47ebb4"},directive:{color:"#47ebb4"},unit:{color:"#47ebb4"},statement:{color:"#47ebb4"},regex:{color:"#47ebb4"},atrule:{color:"#47ebb4"},placeholder:{color:"#47ebb4"},variable:{color:"#47ebb4"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #ebf4ff",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#7eb6f6"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #34659d",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#1f2932"},".line-numbers-rows > span:before":{color:"#2c3847"},".line-highlight":{background:"linear-gradient(to right, rgba(10, 163, 112, 0.2) 70%, rgba(10, 163, 112, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#24242e",color:"#767693"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#24242e",color:"#767693",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#5151e6"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#5151e6"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#5151e6"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"]::selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#5151e6"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#5b5b76"},prolog:{color:"#5b5b76"},doctype:{color:"#5b5b76"},cdata:{color:"#5b5b76"},punctuation:{color:"#5b5b76"},namespace:{Opacity:".7"},tag:{color:"#dd672c"},operator:{color:"#dd672c"},number:{color:"#dd672c"},property:{color:"#767693"},function:{color:"#767693"},"tag-id":{color:"#ebebff"},selector:{color:"#ebebff"},"atrule-id":{color:"#ebebff"},"code.language-javascript":{color:"#aaaaca"},"attr-name":{color:"#aaaaca"},"code.language-css":{color:"#fe8c52"},"code.language-scss":{color:"#fe8c52"},boolean:{color:"#fe8c52"},string:{color:"#fe8c52"},entity:{color:"#fe8c52",cursor:"help"},url:{color:"#fe8c52"},".language-css .token.string":{color:"#fe8c52"},".language-scss .token.string":{color:"#fe8c52"},".style .token.string":{color:"#fe8c52"},"attr-value":{color:"#fe8c52"},keyword:{color:"#fe8c52"},control:{color:"#fe8c52"},directive:{color:"#fe8c52"},unit:{color:"#fe8c52"},statement:{color:"#fe8c52"},regex:{color:"#fe8c52"},atrule:{color:"#fe8c52"},placeholder:{color:"#fe8c52"},variable:{color:"#fe8c52"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #ebebff",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#aaaaca"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #7676f4",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#262631"},".line-numbers-rows > span:before":{color:"#393949"},".line-highlight":{background:"linear-gradient(to right, rgba(221, 103, 44, 0.2) 70%, rgba(221, 103, 44, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:"0.95em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:"0.95em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",border:"1px solid #dddddd",backgroundColor:"white"},'pre[class*="language-"]::-moz-selection':{background:"#b3d4fc"},'pre[class*="language-"] ::-moz-selection':{background:"#b3d4fc"},'code[class*="language-"]::-moz-selection':{background:"#b3d4fc"},'code[class*="language-"] ::-moz-selection':{background:"#b3d4fc"},'pre[class*="language-"]::selection':{background:"#b3d4fc"},'pre[class*="language-"] ::selection':{background:"#b3d4fc"},'code[class*="language-"]::selection':{background:"#b3d4fc"},'code[class*="language-"] ::selection':{background:"#b3d4fc"},':not(pre) > code[class*="language-"]':{padding:".2em",paddingTop:"1px",paddingBottom:"1px",background:"#f8f8f8",border:"1px solid #dddddd"},comment:{color:"#999988",fontStyle:"italic"},prolog:{color:"#999988",fontStyle:"italic"},doctype:{color:"#999988",fontStyle:"italic"},cdata:{color:"#999988",fontStyle:"italic"},namespace:{Opacity:".7"},string:{color:"#e3116c"},"attr-value":{color:"#e3116c"},punctuation:{color:"#393A34"},operator:{color:"#393A34"},entity:{color:"#36acaa"},url:{color:"#36acaa"},symbol:{color:"#36acaa"},number:{color:"#36acaa"},boolean:{color:"#36acaa"},variable:{color:"#36acaa"},constant:{color:"#36acaa"},property:{color:"#36acaa"},regex:{color:"#36acaa"},inserted:{color:"#36acaa"},atrule:{color:"#00a4db"},keyword:{color:"#00a4db"},"attr-name":{color:"#00a4db"},".language-autohotkey .token.selector":{color:"#00a4db"},function:{color:"#9a050f",fontWeight:"bold"},deleted:{color:"#9a050f"},".language-autohotkey .token.tag":{color:"#9a050f"},tag:{color:"#00009f"},selector:{color:"#00009f"},".language-autohotkey .token.keyword":{color:"#00009f"},important:{fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#b9b5b8",fontFamily:'"Fira Mono", Menlo, Monaco, "Lucida Console","Courier New", Courier, monospace',fontSize:"16px",lineHeight:"1.375",direction:"ltr",textAlign:"left",wordSpacing:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",background:"#322931"},'pre[class*="language-"]':{color:"#b9b5b8",fontFamily:'"Fira Mono", Menlo, Monaco, "Lucida Console","Courier New", Courier, monospace',fontSize:"16px",lineHeight:"1.375",direction:"ltr",textAlign:"left",wordSpacing:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",background:"#322931",padding:"1em",margin:".5em 0",overflow:"auto"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#797379"},prolog:{color:"#797379"},doctype:{color:"#797379"},cdata:{color:"#797379"},punctuation:{color:"#b9b5b8"},".namespace":{Opacity:".7"},null:{color:"#fd8b19"},operator:{color:"#fd8b19"},boolean:{color:"#fd8b19"},number:{color:"#fd8b19"},property:{color:"#fdcc59"},tag:{color:"#1290bf"},string:{color:"#149b93"},selector:{color:"#c85e7c"},"attr-name":{color:"#fd8b19"},entity:{color:"#149b93",cursor:"help"},url:{color:"#149b93"},".language-css .token.string":{color:"#149b93"},".style .token.string":{color:"#149b93"},"attr-value":{color:"#8fc13e"},keyword:{color:"#8fc13e"},control:{color:"#8fc13e"},directive:{color:"#8fc13e"},unit:{color:"#8fc13e"},statement:{color:"#149b93"},regex:{color:"#149b93"},atrule:{color:"#149b93"},placeholder:{color:"#1290bf"},variable:{color:"#1290bf"},important:{color:"#dd464c",fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid red",OutlineOffset:".4em"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"15px",lineHeight:"1.5",color:"#dccf8f",textShadow:"0"},'pre[class*="language-"]':{MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"15px",lineHeight:"1.5",color:"#DCCF8F",textShadow:"0",borderRadius:"5px",border:"1px solid #000",background:"#181914 url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAMAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQACQYGBgcGCQcHCQ0IBwgNDwsJCQsPEQ4ODw4OERENDg4ODg0RERQUFhQUERoaHBwaGiYmJiYmKysrKysrKysrKwEJCAgJCgkMCgoMDwwODA8TDg4ODhMVDg4PDg4VGhMRERERExoXGhYWFhoXHR0aGh0dJCQjJCQrKysrKysrKysr/8AAEQgAjACMAwEiAAIRAQMRAf/EAF4AAQEBAAAAAAAAAAAAAAAAAAABBwEBAQAAAAAAAAAAAAAAAAAAAAIQAAEDAwIHAQEAAAAAAAAAAADwAREhYaExkUFRcYGxwdHh8REBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AyGFEjHaBS2fDDs2zkhKmBKktb7km+ZwwCnXPkLVmCTMItj6AXFxRS465/BTnkAJvkLkJe+7AKKoi2AtRS2zuAWsCb5GOlBN8gKfmuGHZ8MFqIth3ALmFoFwbwKWyAlTAp17uKqBvgBD8sM4fTjhvAhkzhaRkBMKBrfs7jGPIpzy7gFrAqnC0C0gB0EWwBDW2cBVQwm+QtPpa3wBO3sVvszCnLAhkzgL5/RLf13cLQd8/AGlu0Cb5HTx9KuAEieGJEdcehS3eRTp2ATdt3CpIm+QtZwAhROXFeb7swp/ahaM3kBE/jSIUBc/AWrgBN8uNFAl+b7sAXFxFn2YLUU5Ns7gFX8C4ib+hN8gFWXwK3bZglxEJm+gKdciLPsFV/TClsgJUwKJ5FVA7tvIFrfZhVfGJDcsCKaYgAqv6YRbE+RWOWBtu7+AL3yRalXLyKqAIIfk+zARbDgFyEsncYwJvlgFRW+GEWntIi2P0BooyFxcNr8Ep3+ANLbMO+QyhvbiqdgC0kVvgUUiLYgBS2QtPbiVI1/sgOmG9uO+Y8DW+7jS2zAOnj6O2BndwuIAUtkdRN8gFoK3wwXMQyZwHVbClsuNLd4E3yAUR6FVDBR+BafQGt93LVMxJTv8ABts4CVLhcfYWsCb5kC9/BHdU8CLYFY5bMAd+eX9MGthhpbA1vu4B7+RKkaW2Yq4AQtVBBFsAJU/AuIXBhN8gGWnstefhiZyWvLAEnbYS1uzSFP6Jvn4Baxx70JKkQojLib5AVTey1jjgkKJGO0AKWyOm7N7cSpgSpAdPH0Tfd/gp1z5C1ZgKqN9J2wFxcUUuAFLZAm+QC0Fb4YUVRFsAOvj4KW2dwtYE3yAWk/wS/PLMKfmuGHZ8MAXF/Ja32Yi5haAKWz4Ydm2cSpgU693Atb7km+Zwwh+WGcPpxw3gAkzCLY+iYUDW/Z3Adc/gpzyFrAqnALkJe+7DoItgAtRS2zuKqGE3yAx0oJvkdvYrfZmALURbDuL5/RLf13cAuDeBS2RpbtAm+QFVA3wR+3fUtFHoBDJnC0jIXH0HWsgMY8inPLuOkd9chp4z20ALQLSA8cI9jYAIa2zjzjBd8gRafS1vgiUho/kAKcsCGTOGWvoOpkAtB3z8Hm8x2Ff5ADp4+lXAlIvcmwH/2Q==') repeat left top",padding:"12px",overflow:"auto"},':not(pre) > code[class*="language-"]':{borderRadius:"5px",border:"1px solid #000",color:"#DCCF8F",background:"#181914 url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAMAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQACQYGBgcGCQcHCQ0IBwgNDwsJCQsPEQ4ODw4OERENDg4ODg0RERQUFhQUERoaHBwaGiYmJiYmKysrKysrKysrKwEJCAgJCgkMCgoMDwwODA8TDg4ODhMVDg4PDg4VGhMRERERExoXGhYWFhoXHR0aGh0dJCQjJCQrKysrKysrKysr/8AAEQgAjACMAwEiAAIRAQMRAf/EAF4AAQEBAAAAAAAAAAAAAAAAAAABBwEBAQAAAAAAAAAAAAAAAAAAAAIQAAEDAwIHAQEAAAAAAAAAAADwAREhYaExkUFRcYGxwdHh8REBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AyGFEjHaBS2fDDs2zkhKmBKktb7km+ZwwCnXPkLVmCTMItj6AXFxRS465/BTnkAJvkLkJe+7AKKoi2AtRS2zuAWsCb5GOlBN8gKfmuGHZ8MFqIth3ALmFoFwbwKWyAlTAp17uKqBvgBD8sM4fTjhvAhkzhaRkBMKBrfs7jGPIpzy7gFrAqnC0C0gB0EWwBDW2cBVQwm+QtPpa3wBO3sVvszCnLAhkzgL5/RLf13cLQd8/AGlu0Cb5HTx9KuAEieGJEdcehS3eRTp2ATdt3CpIm+QtZwAhROXFeb7swp/ahaM3kBE/jSIUBc/AWrgBN8uNFAl+b7sAXFxFn2YLUU5Ns7gFX8C4ib+hN8gFWXwK3bZglxEJm+gKdciLPsFV/TClsgJUwKJ5FVA7tvIFrfZhVfGJDcsCKaYgAqv6YRbE+RWOWBtu7+AL3yRalXLyKqAIIfk+zARbDgFyEsncYwJvlgFRW+GEWntIi2P0BooyFxcNr8Ep3+ANLbMO+QyhvbiqdgC0kVvgUUiLYgBS2QtPbiVI1/sgOmG9uO+Y8DW+7jS2zAOnj6O2BndwuIAUtkdRN8gFoK3wwXMQyZwHVbClsuNLd4E3yAUR6FVDBR+BafQGt93LVMxJTv8ABts4CVLhcfYWsCb5kC9/BHdU8CLYFY5bMAd+eX9MGthhpbA1vu4B7+RKkaW2Yq4AQtVBBFsAJU/AuIXBhN8gGWnstefhiZyWvLAEnbYS1uzSFP6Jvn4Baxx70JKkQojLib5AVTey1jjgkKJGO0AKWyOm7N7cSpgSpAdPH0Tfd/gp1z5C1ZgKqN9J2wFxcUUuAFLZAm+QC0Fb4YUVRFsAOvj4KW2dwtYE3yAWk/wS/PLMKfmuGHZ8MAXF/Ja32Yi5haAKWz4Ydm2cSpgU693Atb7km+Zwwh+WGcPpxw3gAkzCLY+iYUDW/Z3Adc/gpzyFrAqnALkJe+7DoItgAtRS2zuKqGE3yAx0oJvkdvYrfZmALURbDuL5/RLf13cAuDeBS2RpbtAm+QFVA3wR+3fUtFHoBDJnC0jIXH0HWsgMY8inPLuOkd9chp4z20ALQLSA8cI9jYAIa2zjzjBd8gRafS1vgiUho/kAKcsCGTOGWvoOpkAtB3z8Hm8x2Ff5ADp4+lXAlIvcmwH/2Q==') repeat left top",padding:"2px 6px"},namespace:{Opacity:".7"},comment:{color:"#586e75",fontStyle:"italic"},prolog:{color:"#586e75",fontStyle:"italic"},doctype:{color:"#586e75",fontStyle:"italic"},cdata:{color:"#586e75",fontStyle:"italic"},number:{color:"#b89859"},string:{color:"#468966"},char:{color:"#468966"},builtin:{color:"#468966"},inserted:{color:"#468966"},"attr-name":{color:"#b89859"},operator:{color:"#dccf8f"},entity:{color:"#dccf8f",cursor:"help"},url:{color:"#dccf8f"},".language-css .token.string":{color:"#dccf8f"},".style .token.string":{color:"#dccf8f"},selector:{color:"#859900"},regex:{color:"#859900"},atrule:{color:"#cb4b16"},keyword:{color:"#cb4b16"},"attr-value":{color:"#468966"},function:{color:"#b58900"},variable:{color:"#b58900"},placeholder:{color:"#b58900"},property:{color:"#b89859"},tag:{color:"#ffb03b"},boolean:{color:"#b89859"},constant:{color:"#b89859"},symbol:{color:"#b89859"},important:{color:"#dc322f"},statement:{color:"#dc322f"},deleted:{color:"#dc322f"},punctuation:{color:"#dccf8f"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:"0.95em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:"0.95em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",border:"1px solid #dddddd",backgroundColor:"white"},'pre[class*="language-"]::-moz-selection':{background:"#C1DEF1"},'pre[class*="language-"] ::-moz-selection':{background:"#C1DEF1"},'code[class*="language-"]::-moz-selection':{background:"#C1DEF1"},'code[class*="language-"] ::-moz-selection':{background:"#C1DEF1"},'pre[class*="language-"]::selection':{background:"#C1DEF1"},'pre[class*="language-"] ::selection':{background:"#C1DEF1"},'code[class*="language-"]::selection':{background:"#C1DEF1"},'code[class*="language-"] ::selection':{background:"#C1DEF1"},':not(pre) > code[class*="language-"]':{padding:".2em",paddingTop:"1px",paddingBottom:"1px",background:"#f8f8f8",border:"1px solid #dddddd"},comment:{color:"#008000",fontStyle:"italic"},prolog:{color:"#008000",fontStyle:"italic"},doctype:{color:"#008000",fontStyle:"italic"},cdata:{color:"#008000",fontStyle:"italic"},namespace:{Opacity:".7"},string:{color:"#A31515"},punctuation:{color:"#393A34"},operator:{color:"#393A34"},url:{color:"#36acaa"},symbol:{color:"#36acaa"},number:{color:"#36acaa"},boolean:{color:"#36acaa"},variable:{color:"#36acaa"},constant:{color:"#36acaa"},inserted:{color:"#36acaa"},atrule:{color:"#0000ff"},keyword:{color:"#0000ff"},"attr-value":{color:"#0000ff"},".language-autohotkey .token.selector":{color:"#0000ff"},".language-json .token.boolean":{color:"#0000ff"},".language-json .token.number":{color:"#0000ff"},'code[class*="language-css"]':{color:"#0000ff"},function:{color:"#393A34"},deleted:{color:"#9a050f"},".language-autohotkey .token.tag":{color:"#9a050f"},selector:{color:"#800000"},".language-autohotkey .token.keyword":{color:"#00009f"},important:{fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},"class-name":{color:"#2B91AF"},".language-json .token.property":{color:"#2B91AF"},tag:{color:"#800000"},"attr-name":{color:"#ff0000"},property:{color:"#ff0000"},regex:{color:"#ff0000"},entity:{color:"#ff0000"},"directive.tag .tag":{background:"#ffff00",color:"#393A34"},".line-numbers .line-numbers-rows":{borderRightColor:"#a5a5a5"},".line-numbers-rows > span:before":{color:"#2B91AF"},".line-highlight":{background:"linear-gradient(to right, rgba(193, 222, 241, 0.2) 70%, rgba(221, 222, 241, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordWrap:"normal",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"14px",color:"#76d9e6",textShadow:"none"},'pre[class*="language-"]':{MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordWrap:"normal",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"14px",color:"#76d9e6",textShadow:"none",background:"#2a2a2a",padding:"15px",borderRadius:"4px",border:"1px solid #e1e1e8",overflow:"auto",position:"relative"},':not(pre)>code[class*="language-"]':{background:"#2a2a2a",padding:"0.15em 0.2em 0.05em",borderRadius:".3em",border:"0.13em solid #7a6652",boxShadow:"1px 1px 0.3em -0.1em #000 inset"},'pre[class*="language-"] code':{whiteSpace:"pre",display:"block"},namespace:{Opacity:".7"},comment:{color:"#6f705e"},prolog:{color:"#6f705e"},doctype:{color:"#6f705e"},cdata:{color:"#6f705e"},operator:{color:"#a77afe"},boolean:{color:"#a77afe"},number:{color:"#a77afe"},"attr-name":{color:"#e6d06c"},string:{color:"#e6d06c"},entity:{color:"#e6d06c",cursor:"help"},url:{color:"#e6d06c"},".language-css .token.string":{color:"#e6d06c"},".style .token.string":{color:"#e6d06c"},selector:{color:"#a6e22d"},inserted:{color:"#a6e22d"},atrule:{color:"#ef3b7d"},"attr-value":{color:"#ef3b7d"},keyword:{color:"#ef3b7d"},important:{color:"#ef3b7d",fontWeight:"bold"},deleted:{color:"#ef3b7d"},regex:{color:"#76d9e6"},statement:{color:"#76d9e6",fontWeight:"bold"},placeholder:{color:"#fff"},variable:{color:"#fff"},bold:{fontWeight:"bold"},punctuation:{color:"#bebec5"},italic:{fontStyle:"italic"},"code.language-markup":{color:"#f9f9f9"},"code.language-markup .token.tag":{color:"#ef3b7d"},"code.language-markup .token.attr-name":{color:"#a6e22d"},"code.language-markup .token.attr-value":{color:"#e6d06c"},"code.language-markup .token.style":{color:"#76d9e6"},"code.language-markup .token.script":{color:"#76d9e6"},"code.language-markup .token.script .token.keyword":{color:"#76d9e6"},'pre[class*="language-"][data-line]':{position:"relative",padding:"1em 0 1em 3em"},"pre[data-line] .line-highlight":{position:"absolute",left:"0",right:"0",padding:"0",marginTop:"1em",background:"rgba(255, 255, 255, 0.08)",pointerEvents:"none",lineHeight:"inherit",whiteSpace:"pre"},"pre[data-line] .line-highlight:before":{content:"attr(data-start)",position:"absolute",top:".4em",left:".6em",minWidth:"1em",padding:"0.2em 0.5em",backgroundColor:"rgba(255, 255, 255, 0.4)",color:"black",font:"bold 65%/1 sans-serif",height:"1em",lineHeight:"1em",textAlign:"center",borderRadius:"999px",textShadow:"none",boxShadow:"0 1px 1px rgba(255, 255, 255, 0.7)"},"pre[data-line] .line-highlight[data-end]:after":{content:"attr(data-end)",position:"absolute",top:"auto",left:".6em",minWidth:"1em",padding:"0.2em 0.5em",backgroundColor:"rgba(255, 255, 255, 0.4)",color:"black",font:"bold 65%/1 sans-serif",height:"1em",lineHeight:"1em",textAlign:"center",borderRadius:"999px",textShadow:"none",boxShadow:"0 1px 1px rgba(255, 255, 255, 0.7)",bottom:".4em"}}},function(e,t,n){"use strict";n.r(t),n.d(t,"getSuggestedFruitSync",function(){return s}),n.d(t,"default",function(){return u});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(e){return i.a.filter(function(t){return t.name.toLowerCase().includes(e.toLowerCase())})}function u(){var e=l(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:s,label:"Your favourite fruit",fullWidth:!0})}},function(e,t,n){var r=n(169),o=n(670),a=n(672),i="Expected a function",l=Math.max,s=Math.min;e.exports=function(e,t,n){var u,c,d,p,f,m,g=0,h=!1,b=!1,y=!0;if("function"!=typeof e)throw new TypeError(i);function v(t){var n=u,r=c;return u=c=void 0,g=t,p=e.apply(r,n)}function S(e){var n=e-m;return void 0===m||n>=t||n<0||b&&e-g>=d}function E(){var e=o();if(S(e))return x(e);f=setTimeout(E,function(e){var n=t-(e-m);return b?s(n,d-(e-g)):n}(e))}function x(e){return f=void 0,y&&u?v(e):(u=c=void 0,p)}function w(){var e=o(),n=S(e);if(u=arguments,c=this,m=e,n){if(void 0===f)return function(e){return g=e,f=setTimeout(E,t),h?v(e):p}(m);if(b)return f=setTimeout(E,t),v(m)}return void 0===f&&(f=setTimeout(E,t)),p}return t=a(t)||0,r(n)&&(h=!!n.leading,d=(b="maxWait"in n)?l(a(n.maxWait)||0,t):d,y="trailing"in n?!!n.trailing:y),w.cancel=function(){void 0!==f&&clearTimeout(f),g=0,u=m=c=f=void 0},w.flush=function(){return void 0===f?p:x(o())},w}},function(e,t,n){var r=n(170);e.exports=function(){return r.Date.now()}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(27))},function(e,t,n){var r=n(169),o=n(673),a=NaN,i=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,u=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return a;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(i,"");var n=s.test(e);return n||u.test(e)?c(e.slice(2),n?2:8):l.test(e)?a:+e}},function(e,t,n){var r=n(674),o=n(677),a="[object Symbol]";e.exports=function(e){return"symbol"==typeof e||o(e)&&r(e)==a}},function(e,t,n){var r=n(171),o=n(675),a=n(676),i="[object Null]",l="[object Undefined]",s=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?l:i:s&&s in Object(e)?o(e):a(e)}},function(e,t,n){var r=n(171),o=Object.prototype,a=o.hasOwnProperty,i=o.toString,l=r?r.toStringTag:void 0;e.exports=function(e){var t=a.call(e,l),n=e[l];try{e[l]=void 0;var r=!0}catch(e){}var o=i.call(e);return r&&(t?e[l]=n:delete e[l]),o}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return s});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(){var e=l(Object(r.useState)(i.a),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:i.b,label:"Your favourite fruit",fullWidth:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return s});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(){var e=l(Object(r.useState)(i.a.slice(0,2)),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:i.b,label:"Your favourite fruit",fullWidth:!0,disabled:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return s});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(){var e=l(Object(r.useState)(i.a.slice(0,2)),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:i.b,label:"Your favourite fruit",fullWidth:!0,error:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return d});var r=n(0),o=n.n(r),a=n(11),i=n(10),l=n(18);function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var u=3;function c(e){return e.length>=u?Object(i.b)(e):l.b}function d(){var e=s(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:c,label:"Your favourite fruit",fullWidth:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return s});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(){var e=l(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:i.b,label:"Your favourite fruit",fullWidth:!0,maxDropdownHeight:250})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return c});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var s=800;function u(e){return e.length?new Promise(function(t){setTimeout(function(){return t(Object(i.b)(e))},s)}):Promise.resolve([])}function c(){var e=l(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:u,label:"Your favourite fruit",fullWidth:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return d});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var s=800,u=500;function c(e){return e.length?new Promise(function(t){setTimeout(function(){return t(Object(i.b)(e))},s)}):Promise.resolve([])}function d(){var e=l(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:c,label:"Your favourite fruit",fetchDelay:u,fullWidth:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return u});var r=n(0),o=n.n(r),a=n(11);function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var l=800;function s(e){return e.length?new Promise(function(e,t){setTimeout(function(){return t(new Error("Suggestion fetch failed!"))},l)}):Promise.resolve([])}function u(){var e=i(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:s,label:"Your favourite fruit",fullWidth:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return c});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return e.reduce(function(e,t){return S()({},e,n[t])},t)}function x(e){var t,n=e.node,r=e.stylesheet,a=e.style,i=void 0===a?{}:a,l=e.useInlineStyles,s=e.key,u=n.properties,c=n.type,d=n.tagName,p=n.value;if("text"===c)return p;if(d){var f=function(e,t){var n=0;return function(r){return n+=1,r.map(function(r,o){return x({node:r,stylesheet:e,useInlineStyles:t,key:"code-segment-".concat(n,"-").concat(o)})})}}(r,l),m=l&&u.className&&u.className.filter(function(e){return!r[e]}),g=m&&m.length?m:void 0,h=l?S()({},u,{className:g},{style:E(u.className,Object.assign({},u.style,i),r)}):S()({},u,{className:(t=u.className,t.join(" "))}),b=f(n.children);return o.a.createElement(d,y()({key:s},h),b)}}var w=/\n/g;function k(e){var t=e.codeString,n=e.codeStyle,r=e.containerStyle,a=void 0===r?{float:"left",paddingRight:"10px"}:r,i=e.numberStyle,l=void 0===i?{}:i,s=e.startingLineNumber;return o.a.createElement("code",{style:Object.assign({},n,a)},function(e){var t=e.lines,n=e.startingLineNumber,r=e.style;return t.map(function(e,t){var a=t+n;return o.a.createElement("span",{key:"line-".concat(t),className:"react-syntax-highlighter-line-number",style:"function"==typeof r?r(a):r},"".concat(a,"\n"))})}({lines:t.replace(/\n$/,"").split("\n"),style:l,startingLineNumber:s}))}function _(e){var t=e.children,n=e.lineNumber,r=e.lineProps,o=e.className,a=void 0===o?[]:o,i=("function"==typeof r?r(n):r)||{};return i.className=i.className?a.concat(i.className):a,{type:"element",tagName:"span",properties:i,children:t}}function T(e,t){for(var n=function e(t){for(var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=0;o code[class*="language-"]':{background:"#f5f2f0",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"slategray"},prolog:{color:"slategray"},doctype:{color:"slategray"},cdata:{color:"slategray"},punctuation:{color:"#999"},".namespace":{Opacity:".7"},property:{color:"#905"},tag:{color:"#905"},boolean:{color:"#905"},number:{color:"#905"},constant:{color:"#905"},symbol:{color:"#905"},deleted:{color:"#905"},selector:{color:"#690"},"attr-name":{color:"#690"},string:{color:"#690"},char:{color:"#690"},builtin:{color:"#690"},inserted:{color:"#690"},operator:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},entity:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)",cursor:"help"},url:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".language-css .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".style .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},atrule:{color:"#07a"},"attr-value":{color:"#07a"},keyword:{color:"#07a"},function:{color:"#DD4A68"},"class-name":{color:"#DD4A68"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"bold"},variable:{color:"#e90"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}},function(e){var t=e.language,n=e.children,r=e.style,a=void 0===r?O:r,i=e.customStyle,l=void 0===i?{}:i,s=e.codeTagProps,u=void 0===s?{style:a['code[class*="language-"]']}:s,c=e.useInlineStyles,d=void 0===c||c,p=e.showLineNumbers,f=void 0!==p&&p,m=e.startingLineNumber,g=void 0===m?1:m,b=e.lineNumberContainerStyle,y=e.lineNumberStyle,v=e.wrapLines,S=e.lineProps,E=void 0===S?{}:S,x=e.renderer,w=e.PreTag,_=void 0===w?"pre":w,I=e.CodeTag,N=void 0===I?"code":I,R=e.code,P=void 0===R?Array.isArray(n)?n[0]:n:R,M=e.astGenerator,L=h()(e,["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"]);M=M||C;var D=f?o.a.createElement(k,{containerStyle:b,codeStyle:u.style||{},numberStyle:y,startingLineNumber:g,codeString:P}):null,F=a.hljs||a['pre[class*="language-"]']||{backgroundColor:"#fff"},B=d?Object.assign({},L,{style:Object.assign({},F,l)}):Object.assign({},L,{className:"hljs"});if(!M)return o.a.createElement(_,B,D,o.a.createElement(N,u,P));v=!(!x||void 0!==v)||v,x=x||A;var j=[{type:"text",value:P}],U=function(e){var t=e.astGenerator,n=e.language,r=e.code,o=e.defaultCodeValue;if(t.getLanguage){var a=n&&t.getLanguage(n);return"text"===n?{value:o,language:"text"}:a?t.highlight(n,r):t.highlightAuto(r)}try{return n&&"text"!==n?{value:t.highlight(r,n)}:{value:o}}catch(e){return{value:o}}}({astGenerator:M,language:t,code:P,defaultCodeValue:j});null===U.language&&(U.value=j);var z=v?T(U,E):U.value;return o.a.createElement(_,B,D,o.a.createElement(N,u,x({rows:z,stylesheet:a,useInlineStyles:d})))});N.supportedLanguages=["abap","actionscript","ada","apacheconf","apl","applescript","arduino","arff","asciidoc","asm6502","aspnet","autohotkey","autoit","bash","basic","batch","bison","brainfuck","bro","c","clike","clojure","coffeescript","cpp","crystal","csharp","csp","css-extras","css","d","dart","diff","django","docker","eiffel","elixir","elm","erb","erlang","flow","fortran","fsharp","gedcom","gherkin","git","glsl","go","graphql","groovy","haml","handlebars","haskell","haxe","hpkp","hsts","http","ichigojam","icon","inform7","ini","io","j","java","javascript","jolie","json","jsx","julia","keyman","kotlin","latex","less","liquid","lisp","livescript","lolcode","lua","makefile","markdown","markup-templating","markup","matlab","mel","mizar","monkey","n4js","nasm","nginx","nim","nix","nsis","objectivec","ocaml","opencl","oz","parigp","parser","pascal","perl","php-extras","php","plsql","powershell","processing","prolog","properties","protobuf","pug","puppet","pure","python","q","qore","r","reason","renpy","rest","rip","roboconf","ruby","rust","sas","sass","scala","scheme","scss","smalltalk","smarty","soy","sql","stylus","swift","tap","tcl","textile","tsx","tt2","twig","typescript","vbnet","velocity","verilog","vhdl","vim","visual-basic","wasm","wiki","xeora","xojo","xquery","yaml"];var R=N,P=n(56),M=n(1);function L(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function D(e){var t=e.DemoComponent,n=e.title,a=L(Object(r.useState)(!1),2),i=a[0],s=a[1],u=o.a.createElement(l.p,{checked:i,onChange:function(e,t){return s(t)}});return o.a.createElement("section",{style:{margin:"48px 0"}},o.a.createElement("div",{style:{display:"flex",alignItems:"center"}},o.a.createElement(l.w,{variant:"h5",style:{flex:"1 1 0"}},n),o.a.createElement(l.f,{control:u,label:"Source"})),o.a.createElement(m,{source:t.__markdown__}),o.a.createElement("div",{style:{width:"100%",marginTop:"8px"}},o.a.createElement(t,null),o.a.createElement(l.c,{in:i},o.a.createElement(R,{language:"jsx",style:P.atomDark},t.__source__.replace(/export default\s*/g,"")))))}D.propTypes={DemoComponent:M.any.isRequired,title:M.string.isRequired};var F=n(186),B=n.n(F),j=n(188),U=n.n(j),z=n(189),H=n.n(z),W=n(190),G=n.n(W),V=n(191),$=n.n(V),q=n(192),K=n.n(q),Y=n(193),X=n.n(Y),Z=n(194),Q=n.n(Z),J=n(195),ee=n.n(J),te=n(196),ne=n.n(te),re=n(197),oe=n.n(re),ae=n(198),ie=n.n(ae),le=n(199),se=n.n(le),ue=n(200),ce=n.n(ue),de=n(202),pe=n.n(de),fe=n(203),me=n.n(fe),ge=n(204),he=n.n(ge),be=n(11),ye=n(10);function ve(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Se(e){var t=e.fields,n=e.value,r=e.onChange,a=function(e,t){return r(function(e){for(var t=1;t fruit.name }\n getSuggestedItems={ getSuggestedFruitSync }\n".concat(t," \n />;\n}\n").trim()}(i)))),o.a.createElement(l.d,null),o.a.createElement("div",{style:{padding:"32px"}},o.a.createElement(l.w,{variant:"h6"},"Result"),o.a.createElement(be.a,Ee({value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:ye.b},i))))}var Ae=Object(i.createMuiTheme)({palette:{primary:s.blue,secondary:s.red},typography:{useNextVariants:!0}});Object(a.render)(o.a.createElement(function(){var e="https://www.npmjs.com/package/".concat(u.name),t=u.repository.url,n="".concat(t,"/blob/master/README.md"),r="".concat(t,"/blob/master/CHANGELOG.md");return o.a.createElement(i.MuiThemeProvider,{theme:Ae},o.a.createElement(l.w,{component:"div",style:{maxWidth:"750px",margin:"0 auto",paddingBottom:"500px"}},o.a.createElement(l.w,{variant:"h2"},"Material Multi Picker ",u.version),o.a.createElement("div",null,o.a.createElement(l.k,{href:u.repository.url},"Github")," · ",o.a.createElement(l.k,{href:e},"NPM")," · ",o.a.createElement(l.k,{href:n},"Readme")," · ",o.a.createElement(l.k,{href:r},"Changelog")),o.a.createElement(D,{title:"Simple synchronous suggestion list",DemoComponent:B.a}),o.a.createElement(D,{title:"Chips wrap onto multiple lines",DemoComponent:U.a}),o.a.createElement(D,{title:"Can be disabled",DemoComponent:H.a}),o.a.createElement(D,{title:"Shows error state",DemoComponent:G.a}),o.a.createElement(D,{title:"Clearing the input field on blur",DemoComponent:he.a}),o.a.createElement(l.w,{variant:"h4"},"Providing suggestions"),o.a.createElement(D,{title:"Minimum input length for suggestions",DemoComponent:$.a}),o.a.createElement(D,{title:"Asynchronous suggestion list",DemoComponent:X.a}),o.a.createElement(D,{title:"Throttling requests",DemoComponent:Q.a}),o.a.createElement(D,{title:"Handle suggestion fetch errors",DemoComponent:ee.a}),o.a.createElement(D,{title:"Dynamically generated suggestions",DemoComponent:ne.a}),o.a.createElement(D,{title:"Scrollable dropdown",DemoComponent:K.a}),o.a.createElement(l.w,{variant:"h4"},"Customising presentation"),o.a.createElement(D,{title:"With helper text",DemoComponent:oe.a}),o.a.createElement(D,{title:"Required field indicator",DemoComponent:ie.a}),o.a.createElement(D,{title:"Custom field appearance",DemoComponent:se.a}),o.a.createElement(D,{title:"Custom suggestion components",DemoComponent:ce.a}),o.a.createElement(D,{title:"Custom chip appearance",DemoComponent:pe.a}),o.a.createElement(l.w,{variant:"h4"},"Performance"),o.a.createElement(D,{title:"Global cache",DemoComponent:me.a}),o.a.createElement(l.w,{variant:"h4"},"Sandbox"),o.a.createElement(Te,null)))},null),document.getElementById("docs"))}]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy1idW5kbGUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZG9jcy1idW5kbGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9bi5tPWUsbi5jPXQsbi5kPWZ1bmN0aW9uKGUsdCxyKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLnI9ZnVuY3Rpb24oZSl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sbi50PWZ1bmN0aW9uKGUsdCl7aWYoMSZ0JiYoZT1uKGUpKSw4JnQpcmV0dXJuIGU7aWYoNCZ0JiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciByPU9iamVjdC5jcmVhdGUobnVsbCk7aWYobi5yKHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJnQmJlwic3RyaW5nXCIhPXR5cGVvZiBlKWZvcih2YXIgbyBpbiBlKW4uZChyLG8sZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19LmJpbmQobnVsbCxvKSk7cmV0dXJuIHJ9LG4ubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbi5kKHQsXCJhXCIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9XCJcIixuKG4ucz03MDkpfShbZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uKDI3MSl9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigzNDQpKCl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDEwNyksbz1uLm4ocik7bi5kKHQsXCJhXCIsZnVuY3Rpb24oKXtyZXR1cm4gby5hfSk7dmFyIGE9bigxMjgpLGk9bi5uKGEpO24uZCh0LFwiYlwiLGZ1bmN0aW9uKCl7cmV0dXJuIGkuYX0pO3ZhciBsPW4oMTMyKSxzPW4ubihsKTtuLmQodCxcImNcIixmdW5jdGlvbigpe3JldHVybiBzLmF9KTt2YXIgdT1uKDEzNCksYz1uLm4odSk7bi5kKHQsXCJkXCIsZnVuY3Rpb24oKXtyZXR1cm4gYy5hfSk7dmFyIGQ9big3MSkscD1uLm4oZCk7bi5kKHQsXCJlXCIsZnVuY3Rpb24oKXtyZXR1cm4gcC5hfSk7dmFyIGY9bigxMzUpLG09bi5uKGYpO24uZCh0LFwiZlwiLGZ1bmN0aW9uKCl7cmV0dXJuIG0uYX0pO3ZhciBnPW4oMTM2KSxoPW4ubihnKTtuLmQodCxcImdcIixmdW5jdGlvbigpe3JldHVybiBoLmF9KTt2YXIgYj1uKDc0KSx5PW4ubihiKTtuLmQodCxcImhcIixmdW5jdGlvbigpe3JldHVybiB5LmF9KTt2YXIgdj1uKDc1KSxTPW4ubih2KTtuLmQodCxcImlcIixmdW5jdGlvbigpe3JldHVybiBTLmF9KTt2YXIgRT1uKDEzNykseD1uLm4oRSk7bi5kKHQsXCJqXCIsZnVuY3Rpb24oKXtyZXR1cm4geC5hfSk7dmFyIHc9bigxMzgpLGs9bi5uKHcpO24uZCh0LFwia1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGsuYX0pO3ZhciBfPW4oMTM5KSxUPW4ubihfKTtuLmQodCxcImxcIixmdW5jdGlvbigpe3JldHVybiBULmF9KTt2YXIgQT1uKDgwKSxDPW4ubihBKTtuLmQodCxcIm1cIixmdW5jdGlvbigpe3JldHVybiBDLmF9KTt2YXIgTz1uKDgxKSxJPW4ubihPKTtuLmQodCxcIm5cIixmdW5jdGlvbigpe3JldHVybiBJLmF9KTt2YXIgTj1uKDg4KSxSPW4ubihOKTtuLmQodCxcIm9cIixmdW5jdGlvbigpe3JldHVybiBSLmF9KTt2YXIgUD1uKDE1MSksTT1uLm4oUCk7bi5kKHQsXCJwXCIsZnVuY3Rpb24oKXtyZXR1cm4gTS5hfSk7dmFyIEw9bigxNTIpLEQ9bi5uKEwpO24uZCh0LFwicVwiLGZ1bmN0aW9uKCl7cmV0dXJuIEQuYX0pO3ZhciBGPW4oMTU0KSxCPW4ubihGKTtuLmQodCxcInJcIixmdW5jdGlvbigpe3JldHVybiBCLmF9KTt2YXIgaj1uKDE1NSksVT1uLm4oaik7bi5kKHQsXCJzXCIsZnVuY3Rpb24oKXtyZXR1cm4gVS5hfSk7dmFyIHo9bigxNTYpLEg9bi5uKHopO24uZCh0LFwidFwiLGZ1bmN0aW9uKCl7cmV0dXJuIEguYX0pO3ZhciBXPW4oMTU3KSxHPW4ubihXKTtuLmQodCxcInVcIixmdW5jdGlvbigpe3JldHVybiBHLmF9KTt2YXIgVj1uKDE1OCksJD1uLm4oVik7bi5kKHQsXCJ2XCIsZnVuY3Rpb24oKXtyZXR1cm4gJC5hfSk7dmFyIHE9big1MiksSz1uLm4ocSk7bi5kKHQsXCJ3XCIsZnVuY3Rpb24oKXtyZXR1cm4gSy5hfSl9LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3JldHVybiBlLmV4cG9ydHM9bj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMzU4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLG8sYT1yKGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iobz0wO288aS5sZW5ndGg7bysrKW49aVtvXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYoYVtuXT1lW25dKX1yZXR1cm4gYX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtcbi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTcgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTcgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbiFmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBuPXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIG8oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtpZihyKXt2YXIgYT10eXBlb2YgcjtpZihcInN0cmluZ1wiPT09YXx8XCJudW1iZXJcIj09PWEpZS5wdXNoKHIpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShyKSYmci5sZW5ndGgpe3ZhciBpPW8uYXBwbHkobnVsbCxyKTtpJiZlLnB1c2goaSl9ZWxzZSBpZihcIm9iamVjdFwiPT09YSlmb3IodmFyIGwgaW4gciluLmNhbGwocixsKSYmcltsXSYmZS5wdXNoKGwpfX1yZXR1cm4gZS5qb2luKFwiIFwiKX1lLmV4cG9ydHM/KG8uZGVmYXVsdD1vLGUuZXhwb3J0cz1vKTp2b2lkIDA9PT0ocj1mdW5jdGlvbigpe3JldHVybiBvfS5hcHBseSh0LFtdKSl8fChlLmV4cG9ydHM9cil9KCl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCk7dmFyIHI9bigxMDkpLG89bi5uKHIpO24uZCh0LFwiY29tcG9uZW50UHJvcFR5cGVcIixmdW5jdGlvbigpe3JldHVybiBvLmF9KTt2YXIgYT1uKDExMCksaT1uLm4oYSk7bi5kKHQsXCJjaGFpblByb3BUeXBlc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGkuYX0pO3ZhciBsPW4oMTExKSxzPW4ubihsKTtuLmQodCxcImV4YWN0UHJvcFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHMuYX0pO3ZhciB1PW4oMTEyKSxjPW4ubih1KTtuLmQodCxcImdldERpc3BsYXlOYW1lXCIsZnVuY3Rpb24oKXtyZXR1cm4gYy5hfSk7dmFyIGQ9bigxMTMpLHA9bi5uKGQpO24uZCh0LFwicG9ueWZpbGxHbG9iYWxcIixmdW5jdGlvbigpe3JldHVybiBwLmF9KX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc2hlZXRzTWFuYWdlcj12b2lkIDA7dmFyIG89cihuKDkpKSxhPXIobig0KSksaT1yKG4oMTIpKSxsPXIobigxMykpLHM9cihuKDE0KSksdT1yKG4oMTUpKSxjPXIobigxNikpLGQ9cihuKDUpKSxwPXIobigwKSksZj1yKG4oMSkpLG09KHIobigxNykpLHIobig2MykpKSxnPW4oNyksaD1uKDExNCksYj1yKG4oMzgwKSkseT1yKG4oMTIwKSksdj1yKG4oMTIxKSksUz1yKG4oMzkzKSksRT1yKG4oNjcpKSx4PXIobig2OSkpLHc9cihuKDEyNykpLGs9cihuKDQwNCkpLF89cihuKDQwNSkpLFQ9KDAsaC5jcmVhdGUpKCgwLHkuZGVmYXVsdCkoKSksQT0oMCx3LmRlZmF1bHQpKCksQz0tMWUxMSxPPW5ldyBNYXA7dC5zaGVldHNNYW5hZ2VyPU87dmFyIEk9e30sTj0oMCxFLmRlZmF1bHQpKHt0eXBvZ3JhcGh5OntzdXBwcmVzc1dhcm5pbmc6ITB9fSk7Zy5wb255ZmlsbEdsb2JhbC5fX01VSV9TVFlMRVNfX3x8KGcucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX189e30pLGcucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX18ud2l0aFN0eWxlc3x8KGcucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX18ud2l0aFN0eWxlcz1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLGc9dC53aXRoVGhlbWUsaD12b2lkIDAhPT1nJiZnLHk9dC5mbGlwLEU9dm9pZCAwPT09eT9udWxsOnksdz10Lm5hbWUsUj0oMCxkLmRlZmF1bHQpKHQsW1wid2l0aFRoZW1lXCIsXCJmbGlwXCIsXCJuYW1lXCJdKSxQPSgwLGsuZGVmYXVsdCkoZSksTT1QLnRoZW1pbmdFbmFibGVkfHxcInN0cmluZ1wiPT10eXBlb2Ygd3x8aDtDKz0xLFAub3B0aW9ucy5pbmRleD1DO3ZhciBMPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSxuKXt2YXIgcjsoMCxpLmRlZmF1bHQpKHRoaXMsdCksKHI9KDAscy5kZWZhdWx0KSh0aGlzLCgwLHUuZGVmYXVsdCkodCkuY2FsbCh0aGlzLGUsbikpKS5qc3M9bltiLmRlZmF1bHQuanNzXXx8VCxyLnNoZWV0c01hbmFnZXI9TyxyLnVuc3Vic2NyaWJlSWQ9bnVsbDt2YXIgbz1uLm11aVRoZW1lUHJvdmlkZXJPcHRpb25zO3JldHVybiBvJiYoby5zaGVldHNNYW5hZ2VyJiYoci5zaGVldHNNYW5hZ2VyPW8uc2hlZXRzTWFuYWdlciksci5zaGVldHNDYWNoZT1vLnNoZWV0c0NhY2hlLHIuZGlzYWJsZVN0eWxlc0dlbmVyYXRpb249by5kaXNhYmxlU3R5bGVzR2VuZXJhdGlvbiksci5zdHlsZXNDcmVhdG9yU2F2ZWQ9UCxyLnNoZWV0T3B0aW9ucz0oMCxhLmRlZmF1bHQpKHtnZW5lcmF0ZUNsYXNzTmFtZTpBfSxuW2IuZGVmYXVsdC5zaGVldE9wdGlvbnNdKSxyLnRoZW1lPU0/eC5kZWZhdWx0LmluaXRpYWwobil8fE46SSxyLmF0dGFjaChyLnRoZW1lKSxyLmNhY2hlQ2xhc3Nlcz17dmFsdWU6bnVsbCxsYXN0UHJvcDpudWxsLGxhc3RKU1M6e319LHJ9cmV0dXJuKDAsYy5kZWZhdWx0KSh0LGUpLCgwLGwuZGVmYXVsdCkodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO00mJih0aGlzLnVuc3Vic2NyaWJlSWQ9eC5kZWZhdWx0LnN1YnNjcmliZSh0aGlzLmNvbnRleHQsZnVuY3Rpb24odCl7dmFyIG49ZS50aGVtZTtlLnRoZW1lPXQsZS5hdHRhY2goZS50aGVtZSksZS5zZXRTdGF0ZSh7fSxmdW5jdGlvbigpe2UuZGV0YWNoKG4pfSl9KSl9fSx7a2V5OlwiY29tcG9uZW50RGlkVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlc0NyZWF0b3JTYXZlZH19LHtrZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kZXRhY2godGhpcy50aGVtZSksbnVsbCE9PXRoaXMudW5zdWJzY3JpYmVJZCYmeC5kZWZhdWx0LnVuc3Vic2NyaWJlKHRoaXMuY29udGV4dCx0aGlzLnVuc3Vic2NyaWJlSWQpfX0se2tleTpcImdldENsYXNzZXNcIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuZGlzYWJsZVN0eWxlc0dlbmVyYXRpb24pcmV0dXJuIHRoaXMucHJvcHMuY2xhc3Nlc3x8e307dmFyIGU9ITEsdD1TLmRlZmF1bHQuZ2V0KHRoaXMuc2hlZXRzTWFuYWdlcix0aGlzLnN0eWxlc0NyZWF0b3JTYXZlZCx0aGlzLnRoZW1lKTtyZXR1cm4gdC5zaGVldC5jbGFzc2VzIT09dGhpcy5jYWNoZUNsYXNzZXMubGFzdEpTUyYmKHRoaXMuY2FjaGVDbGFzc2VzLmxhc3RKU1M9dC5zaGVldC5jbGFzc2VzLGU9ITApLHRoaXMucHJvcHMuY2xhc3NlcyE9PXRoaXMuY2FjaGVDbGFzc2VzLmxhc3RQcm9wJiYodGhpcy5jYWNoZUNsYXNzZXMubGFzdFByb3A9dGhpcy5wcm9wcy5jbGFzc2VzLGU9ITApLGUmJih0aGlzLmNhY2hlQ2xhc3Nlcy52YWx1ZT0oMCx2LmRlZmF1bHQpKHtiYXNlQ2xhc3Nlczp0aGlzLmNhY2hlQ2xhc3Nlcy5sYXN0SlNTLG5ld0NsYXNzZXM6dGhpcy5wcm9wcy5jbGFzc2VzLENvbXBvbmVudDpufSkpLHRoaXMuY2FjaGVDbGFzc2VzLnZhbHVlfX0se2tleTpcImF0dGFjaFwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLmRpc2FibGVTdHlsZXNHZW5lcmF0aW9uKXt2YXIgdD10aGlzLnN0eWxlc0NyZWF0b3JTYXZlZCxuPVMuZGVmYXVsdC5nZXQodGhpcy5zaGVldHNNYW5hZ2VyLHQsZSk7aWYobnx8KG49e3JlZnM6MCxzaGVldDpudWxsfSxTLmRlZmF1bHQuc2V0KHRoaXMuc2hlZXRzTWFuYWdlcix0LGUsbikpLDA9PT1uLnJlZnMpe3ZhciByO3RoaXMuc2hlZXRzQ2FjaGUmJihyPVMuZGVmYXVsdC5nZXQodGhpcy5zaGVldHNDYWNoZSx0LGUpKSxyfHwoKHI9dGhpcy5jcmVhdGVTaGVldChlKSkuYXR0YWNoKCksdGhpcy5zaGVldHNDYWNoZSYmUy5kZWZhdWx0LnNldCh0aGlzLnNoZWV0c0NhY2hlLHQsZSxyKSksbi5zaGVldD1yO3ZhciBvPXRoaXMuY29udGV4dFtiLmRlZmF1bHQuc2hlZXRzUmVnaXN0cnldO28mJm8uYWRkKHIpfW4ucmVmcys9MX19fSx7a2V5OlwiY3JlYXRlU2hlZXRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0eWxlc0NyZWF0b3JTYXZlZC5jcmVhdGUoZSx3KSxyPXc7cmV0dXJuIHRoaXMuanNzLmNyZWF0ZVN0eWxlU2hlZXQodCwoMCxhLmRlZmF1bHQpKHttZXRhOnIsY2xhc3NOYW1lUHJlZml4OnIsZmxpcDpcImJvb2xlYW5cIj09dHlwZW9mIEU/RTpcInJ0bFwiPT09ZS5kaXJlY3Rpb24sbGluazohMX0sdGhpcy5zaGVldE9wdGlvbnMsdGhpcy5zdHlsZXNDcmVhdG9yU2F2ZWQub3B0aW9ucyx7bmFtZTp3fHxuLmRpc3BsYXlOYW1lfSxSKSl9fSx7a2V5OlwiZGV0YWNoXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZGlzYWJsZVN0eWxlc0dlbmVyYXRpb24pe3ZhciB0PVMuZGVmYXVsdC5nZXQodGhpcy5zaGVldHNNYW5hZ2VyLHRoaXMuc3R5bGVzQ3JlYXRvclNhdmVkLGUpO2lmKHQucmVmcy09MSwwPT09dC5yZWZzKXtTLmRlZmF1bHQuZGVsZXRlKHRoaXMuc2hlZXRzTWFuYWdlcix0aGlzLnN0eWxlc0NyZWF0b3JTYXZlZCxlKSx0aGlzLmpzcy5yZW1vdmVTdHlsZVNoZWV0KHQuc2hlZXQpO3ZhciBuPXRoaXMuY29udGV4dFtiLmRlZmF1bHQuc2hlZXRzUmVnaXN0cnldO24mJm4ucmVtb3ZlKHQuc2hlZXQpfX19fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9KGUuY2xhc3NlcyxlLmlubmVyUmVmKSxyPSgwLGQuZGVmYXVsdCkoZSxbXCJjbGFzc2VzXCIsXCJpbm5lclJlZlwiXSksbz0oMCxfLmRlZmF1bHQpKHt0aGVtZTp0aGlzLnRoZW1lLG5hbWU6dyxwcm9wczpyfSk7cmV0dXJuIGgmJiFvLnRoZW1lJiYoby50aGVtZT10aGlzLnRoZW1lKSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChuLCgwLGEuZGVmYXVsdCkoe30sbyx7Y2xhc3Nlczp0aGlzLmdldENsYXNzZXMoKSxyZWY6dH0pKX19XSksdH0ocC5kZWZhdWx0LkNvbXBvbmVudCk7cmV0dXJuIEwuY29udGV4dFR5cGVzPSgwLGEuZGVmYXVsdCkoKHI9e211aVRoZW1lUHJvdmlkZXJPcHRpb25zOmYuZGVmYXVsdC5vYmplY3R9LCgwLG8uZGVmYXVsdCkocixiLmRlZmF1bHQuanNzLGYuZGVmYXVsdC5vYmplY3QpLCgwLG8uZGVmYXVsdCkocixiLmRlZmF1bHQuc2hlZXRPcHRpb25zLGYuZGVmYXVsdC5vYmplY3QpLCgwLG8uZGVmYXVsdCkocixiLmRlZmF1bHQuc2hlZXRzUmVnaXN0cnksZi5kZWZhdWx0Lm9iamVjdCksciksTT94LmRlZmF1bHQuY29udGV4dFR5cGVzOnt9KSwoMCxtLmRlZmF1bHQpKEwsbiksTH19KTt0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZy5wb255ZmlsbEdsb2JhbC5fX01VSV9TVFlMRVNfXy53aXRoU3R5bGVzKGUsKDAsYS5kZWZhdWx0KSh7ZGVmYXVsdFRoZW1lOk59LHQpKX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDE3Miksbz1uLm4ociksYT1uKDE3MyksaT1uLm4oYSksbD1uKDE3NCkscz1uLm4obCksdT1uKDE3NSksYz1uLm4odSksZD1uKDE3NikscD1uLm4oZCksZj1uKDE3NyksbT1uLm4oZiksZz1uKDE3OCksaD1uLm4oZyksYj1uKDE3OSkseT1uLm4oYiksdj1uKDE4MCksUz1uLm4odiksRT1uKDE4MSkseD1uLm4oRSksdz1uKDE4Miksaz1uLm4odyk7bi5kKHQsXCJhXCIsZnVuY3Rpb24oKXtyZXR1cm4gX30pLG4uZCh0LFwiYlwiLGZ1bmN0aW9uKCl7cmV0dXJuIFR9KTt2YXIgXz1be25hbWU6XCJhcHBsZVwiLHN0b2NrOjAsaW1hZ2U6by5hLGRldGFpbDpcIktlZXBzIHRoZSBkb2N0b3IgYXdheVwifSx7bmFtZTpcInBlYXJcIixzdG9jazoxNCxpbWFnZTppLmEsZGV0YWlsOlwiVGhlIHRhc3RpZXN0IGZydWl0IGluIHRoZSB3b3JsZFwifSx7bmFtZTpcImJhbmFuYVwiLHN0b2NrOjI4MixpbWFnZTpzLmEsZGV0YWlsOlwiRnVsbCBvZiBsb3ZlbHkgcG90YXNzaXVtIVwifSx7bmFtZTpcIm1lbG9uXCIsc3RvY2s6ODEsaW1hZ2U6cC5hLGRldGFpbDpcIkF2YWlsYWJsZSBpbiBtYW55IGRpZmZlcmVudCBmbGF2b3Vyc1wifSx7bmFtZTpcInJhc3BiZXJyeVwiLHN0b2NrOjQyMixpbWFnZTpjLmEsZGV0YWlsOlwiVGVjaG5pY2FsbHkgbm90IGEgYmVycnksIGJ1dCB3aGF0ZXZzXCJ9LHtuYW1lOlwiZ3JhcGVzXCIsc3RvY2s6MTA5LGltYWdlOm0uYSxkZXRhaWw6XCJZb3UgY291bGQgdGhlb3JldGljYWxseSBtYWtlIHdpbmVcIn0se25hbWU6XCJwb21lZ3JhbmF0ZVwiLHN0b2NrOjc1LGltYWdlOnkuYSxkZXRhaWw6XCJOby1vbmUga25vd3Mgd2hhdCB0aGVzZSBhcmVcIn0se25hbWU6XCJ0b21hdG9cIixzdG9jazo1LGltYWdlOnguYSxkZXRhaWw6XCJUaGlzIGlzIGRlZmluaXRlbHkgYSBmcnVpdCwgZ2V0IG9mZiBteSBjYXNlXCJ9LHtuYW1lOlwibGVtb25cIixzdG9jazo3NSxpbWFnZTprLmEsZGV0YWlsOlwiV2hlbiBsaWZlIGdpdmUgeW91IGxlbW9ucywgc29tZXRoaW5nIHNvbWV0aGluZyBncmVuYWRlXCJ9LHtuYW1lOlwicGx1bVwiLHN0b2NrOjIsaW1hZ2U6aC5hLGRldGFpbDpcIk5vdCBhcyBnb29kIGFzIGEgbmVjdGFyaW5lLCBkZWFsIHdpdGggaXRcIn0se25hbWU6XCJ3YXRlcm1lbG9uXCIsc3RvY2s6MTA0NSxpbWFnZTpTLmEsZGV0YWlsOlwiU29vb28gcmVmcmVzaGluZyBvbiBhIGhvdCBkYXlcIn1dO2Z1bmN0aW9uIFQoZSl7cmV0dXJuIF8uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhlLnRvTG93ZXJDYXNlKCkpfSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigwKSxvPW4ubihyKTtmdW5jdGlvbiBhKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfWZ1bmN0aW9uIGkoKXtyZXR1cm4oaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGwoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9dmFyIHM9bigxKTtuKDM5KTtmdW5jdGlvbiB1KGUpe3JldHVybiBudWxsIT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmMT09PWUubm9kZVR5cGV9ZnVuY3Rpb24gYyhlLHQpe3JldHVybighdHx8XCJoaWRkZW5cIiE9PWUpJiYoXCJ2aXNpYmxlXCIhPT1lJiZcImNsaXBcIiE9PWUpfWZ1bmN0aW9uIGQoZSx0KXtpZihlLmNsaWVudEhlaWdodDxlLnNjcm9sbEhlaWdodHx8ZS5jbGllbnRXaWR0aDxlLnNjcm9sbFdpZHRoKXt2YXIgbj1nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCk7cmV0dXJuIGMobi5vdmVyZmxvd1ksdCl8fGMobi5vdmVyZmxvd1gsdCl9cmV0dXJuITF9ZnVuY3Rpb24gcChlLHQsbixyLG8sYSxpLGwpe3JldHVybiBhPGUmJmk+dHx8YT5lJiZpPHQ/MDphPD1lJiZsPD1ufHxpPj10JiZsPj1uP2EtZS1yOmk+dCYmbDxufHxhPGUmJmw+bj9pLXQrbzowfXZhciBmPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zY3JvbGxNb2RlLHI9dC5ibG9jayxvPXQuaW5saW5lLGE9dC5ib3VuZGFyeSxpPXQuc2tpcE92ZXJmbG93SGlkZGVuRWxlbWVudHMsbD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBhP2E6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT1hfTtpZighdShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCB0YXJnZXRcIik7Zm9yKHZhciBzPWRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxjPVtdLGY9ZTt1KGYpJiZsKGYpOyl7aWYoKGY9Zi5wYXJlbnROb2RlKT09PXMpe2MucHVzaChmKTticmVha31mPT09ZG9jdW1lbnQuYm9keSYmZChmKSYmIWQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KXx8ZChmLGkpJiZjLnB1c2goZil9Zm9yKHZhciBtPXdpbmRvdy52aXN1YWxWaWV3cG9ydD92aXN1YWxWaWV3cG9ydC53aWR0aDppbm5lcldpZHRoLGc9d2luZG93LnZpc3VhbFZpZXdwb3J0P3Zpc3VhbFZpZXdwb3J0LmhlaWdodDppbm5lckhlaWdodCxoPXdpbmRvdy5zY3JvbGxYfHxwYWdlWE9mZnNldCxiPXdpbmRvdy5zY3JvbGxZfHxwYWdlWU9mZnNldCx5PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdj15LmhlaWdodCxTPXkud2lkdGgsRT15LnRvcCx4PXkucmlnaHQsdz15LmJvdHRvbSxrPXkubGVmdCxfPVwic3RhcnRcIj09PXJ8fFwibmVhcmVzdFwiPT09cj9FOlwiZW5kXCI9PT1yP3c6RSt2LzIsVD1cImNlbnRlclwiPT09bz9rK1MvMjpcImVuZFwiPT09bz94OmssQT1bXSxDPTA7QzxjLmxlbmd0aDtDKyspe3ZhciBPPWNbQ10sST1PLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLE49SS5oZWlnaHQsUj1JLndpZHRoLFA9SS50b3AsTT1JLnJpZ2h0LEw9SS5ib3R0b20sRD1JLmxlZnQ7aWYoXCJpZi1uZWVkZWRcIj09PW4mJkU+PTAmJms+PTAmJnc8PWcmJng8PW0mJkU+PVAmJnc8PUwmJms+PUQmJng8PU0pcmV0dXJuIEE7dmFyIEY9Z2V0Q29tcHV0ZWRTdHlsZShPKSxCPXBhcnNlSW50KEYuYm9yZGVyTGVmdFdpZHRoLDEwKSxqPXBhcnNlSW50KEYuYm9yZGVyVG9wV2lkdGgsMTApLFU9cGFyc2VJbnQoRi5ib3JkZXJSaWdodFdpZHRoLDEwKSx6PXBhcnNlSW50KEYuYm9yZGVyQm90dG9tV2lkdGgsMTApLEg9MCxXPTAsRz1cIm9mZnNldFdpZHRoXCJpbiBPP08ub2Zmc2V0V2lkdGgtTy5jbGllbnRXaWR0aC1CLVU6MCxWPVwib2Zmc2V0SGVpZ2h0XCJpbiBPP08ub2Zmc2V0SGVpZ2h0LU8uY2xpZW50SGVpZ2h0LWotejowO2lmKHM9PT1PKUg9XCJzdGFydFwiPT09cj9fOlwiZW5kXCI9PT1yP18tZzpcIm5lYXJlc3RcIj09PXI/cChiLGIrZyxnLGoseixiK18sYitfK3Ysdik6Xy1nLzIsVz1cInN0YXJ0XCI9PT1vP1Q6XCJjZW50ZXJcIj09PW8/VC1tLzI6XCJlbmRcIj09PW8/VC1tOnAoaCxoK20sbSxCLFUsaCtULGgrVCtTLFMpLEg9TWF0aC5tYXgoMCxIK2IpLFc9TWF0aC5tYXgoMCxXK2gpO2Vsc2V7SD1cInN0YXJ0XCI9PT1yP18tUC1qOlwiZW5kXCI9PT1yP18tTCt6K1Y6XCJuZWFyZXN0XCI9PT1yP3AoUCxMLE4saix6K1YsXyxfK3Ysdik6Xy0oUCtOLzIpK1YvMixXPVwic3RhcnRcIj09PW8/VC1ELUI6XCJjZW50ZXJcIj09PW8/VC0oRCtSLzIpK0cvMjpcImVuZFwiPT09bz9ULU0rVStHOnAoRCxNLFIsQixVK0csVCxUK1MsUyk7dmFyICQ9Ty5zY3JvbGxMZWZ0LHE9Ty5zY3JvbGxUb3A7Xys9cS0oSD1NYXRoLm1heCgwLE1hdGgubWluKHErSCxPLnNjcm9sbEhlaWdodC1OK1YpKSksVCs9JC0oVz1NYXRoLm1heCgwLE1hdGgubWluKCQrVyxPLnNjcm9sbFdpZHRoLVIrRykpKX1BLnB1c2goe2VsOk8sdG9wOkgsbGVmdDpXfSl9cmV0dXJuIEF9LG09XCJ1bmRlZmluZWRcIj09dHlwZW9mIGRvY3VtZW50P251bGw6ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhMTF5LXN0YXR1cy1tZXNzYWdlXCIpLGc9W107ZnVuY3Rpb24gaChlKXt2YXIgdD1nW2cubGVuZ3RoLTFdPT09ZTtnPXQ/W10uY29uY2F0KGcsW2VdKTpbZV07Zm9yKHZhciBuPWZ1bmN0aW9uKCl7aWYobSlyZXR1cm4gbTtyZXR1cm4obT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiYTExeS1zdGF0dXMtbWVzc2FnZVwiKSxtLnNldEF0dHJpYnV0ZShcInJvbGVcIixcInN0YXR1c1wiKSxtLnNldEF0dHJpYnV0ZShcImFyaWEtbGl2ZVwiLFwicG9saXRlXCIpLG0uc2V0QXR0cmlidXRlKFwiYXJpYS1yZWxldmFudFwiLFwiYWRkaXRpb25zIHRleHRcIiksT2JqZWN0LmFzc2lnbihtLnN0eWxlLHtib3JkZXI6XCIwXCIsY2xpcDpcInJlY3QoMCAwIDAgMClcIixoZWlnaHQ6XCIxcHhcIixtYXJnaW46XCItMXB4XCIsb3ZlcmZsb3c6XCJoaWRkZW5cIixwYWRkaW5nOlwiMFwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIix3aWR0aDpcIjFweFwifSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtKSxtfSgpO24ubGFzdENoaWxkOyluLnJlbW92ZUNoaWxkKG4uZmlyc3RDaGlsZCk7Zy5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChmdW5jdGlvbihlLHQpe24uYXBwZW5kQ2hpbGQoZnVuY3Rpb24oZSx0KXt2YXIgbj10PT09Zy5sZW5ndGgtMT9cImJsb2NrXCI6XCJub25lXCIscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3JldHVybiByLnN0eWxlLmRpc3BsYXk9bixyLnRleHRDb250ZW50PWUscn0oZSx0KSl9KX12YXIgYj0wLHk9Mix2PTMsUz00LEU9NSx4PTYsdz03LGs9OCxfPTksVD0xMCxBPTExLEM9MTIsTz0xMyxJPTE0LE49T2JqZWN0LmZyZWV6ZSh7dW5rbm93bjpiLG1vdXNlVXA6MSxpdGVtTW91c2VFbnRlcjp5LGtleURvd25BcnJvd1VwOnYsa2V5RG93bkFycm93RG93bjpTLGtleURvd25Fc2NhcGU6RSxrZXlEb3duRW50ZXI6eCxrZXlEb3duSG9tZTp3LGtleURvd25FbmQ6ayxjbGlja0l0ZW06XyxibHVySW5wdXQ6VCxjaGFuZ2VJbnB1dDpBLGtleURvd25TcGFjZUJ1dHRvbjpDLGNsaWNrQnV0dG9uOk8sYmx1ckJ1dHRvbjpJLGNvbnRyb2xsZWRQcm9wVXBkYXRlZFNlbGVjdGVkSXRlbToxNSx0b3VjaEVuZDoxNn0pLFI9MDtmdW5jdGlvbiBQKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZTpNfWZ1bmN0aW9uIE0oKXt9ZnVuY3Rpb24gTChlLHQpe3JldHVybiBlPT09dHx8ZS5jb250YWlucyYmZS5jb250YWlucyh0KX1mdW5jdGlvbiBEKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4+MT9uLTE6MCksbz0xO288bjtvKyspcltvLTFdPWFyZ3VtZW50c1tvXTtyZXR1cm4gdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0LmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KHIpKSxlLnByZXZlbnREb3duc2hpZnREZWZhdWx0fHxlLmhhc093blByb3BlcnR5KFwibmF0aXZlRXZlbnRcIikmJmUubmF0aXZlRXZlbnQucHJldmVudERvd25zaGlmdERlZmF1bHR9KX19ZnVuY3Rpb24gRihlLHQpe3JldHVybiEoZT1BcnJheS5pc0FycmF5KGUpP2VbMF06ZSkmJnQ/dDplfWZ1bmN0aW9uIEIoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUudHlwZX1mdW5jdGlvbiBqKGUpe3JldHVybiBlLnByb3BzfXZhciBVPVtcImhpZ2hsaWdodGVkSW5kZXhcIixcImlucHV0VmFsdWVcIixcImlzT3BlblwiLFwic2VsZWN0ZWRJdGVtXCIsXCJ0eXBlXCJdO2Z1bmN0aW9uIHooZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciB0PXt9O3JldHVybiBVLmZvckVhY2goZnVuY3Rpb24obil7ZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9KSx0fWZ1bmN0aW9uIEgoZSl7dmFyIHQ9ZS5rZXksbj1lLmtleUNvZGU7cmV0dXJuIG4+PTM3JiZuPD00MCYmMCE9PXQuaW5kZXhPZihcIkFycm93XCIpP1wiQXJyb3dcIit0OnR9ZnVuY3Rpb24gVyhlLHQsbil7dmFyIHI9bi0xOyhcIm51bWJlclwiIT10eXBlb2YgdHx8dDwwfHx0Pj1uKSYmKHQ9ZT4wPy0xOnIrMSk7dmFyIG89dCtlO3JldHVybiBvPDA/bz1yOm8+ciYmKG89MCksb312YXIgRz1mdW5jdGlvbihlKXt2YXIgdCxuO2Z1bmN0aW9uIHIodCl7dmFyIG49ZS5jYWxsKHRoaXMsdCl8fHRoaXM7bi5pZD1uLnByb3BzLmlkfHxcImRvd25zaGlmdC1cIitTdHJpbmcoUisrKSxuLm1lbnVJZD1uLnByb3BzLm1lbnVJZHx8bi5pZCtcIi1tZW51XCIsbi5sYWJlbElkPW4ucHJvcHMubGFiZWxJZHx8bi5pZCtcIi1sYWJlbFwiLG4uaW5wdXRJZD1uLnByb3BzLmlucHV0SWR8fG4uaWQrXCItaW5wdXRcIixuLmdldEl0ZW1JZD1uLnByb3BzLmdldEl0ZW1JZHx8ZnVuY3Rpb24oZSl7cmV0dXJuIG4uaWQrXCItaXRlbS1cIitlfSxuLmlucHV0PW51bGwsbi5pdGVtcz1bXSxuLml0ZW1Db3VudD1udWxsLG4ucHJldmlvdXNSZXN1bHRDb3VudD0wLG4udGltZW91dElkcz1bXSxuLmludGVybmFsU2V0VGltZW91dD1mdW5jdGlvbihlLHQpe3ZhciByPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLnRpbWVvdXRJZHM9bi50aW1lb3V0SWRzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9PXJ9KSxlKCl9LHQpO24udGltZW91dElkcy5wdXNoKHIpfSxuLnNldEl0ZW1Db3VudD1mdW5jdGlvbihlKXtuLml0ZW1Db3VudD1lfSxuLnVuc2V0SXRlbUNvdW50PWZ1bmN0aW9uKCl7bi5pdGVtQ291bnQ9bnVsbH0sbi5zZXRIaWdobGlnaHRlZEluZGV4PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09ZSYmKGU9bi5wcm9wcy5kZWZhdWx0SGlnaGxpZ2h0ZWRJbmRleCksdm9pZCAwPT09dCYmKHQ9e30pLHQ9eih0KSxuLmludGVybmFsU2V0U3RhdGUoaSh7aGlnaGxpZ2h0ZWRJbmRleDplfSx0KSl9LG4uY2xlYXJTZWxlY3Rpb249ZnVuY3Rpb24oZSl7bi5pbnRlcm5hbFNldFN0YXRlKHtzZWxlY3RlZEl0ZW06bnVsbCxpbnB1dFZhbHVlOlwiXCIsaGlnaGxpZ2h0ZWRJbmRleDpuLnByb3BzLmRlZmF1bHRIaWdobGlnaHRlZEluZGV4LGlzT3BlbjpuLnByb3BzLmRlZmF1bHRJc09wZW59LGUpfSxuLnNlbGVjdEl0ZW09ZnVuY3Rpb24oZSx0LHIpe3Q9eih0KSxuLmludGVybmFsU2V0U3RhdGUoaSh7aXNPcGVuOm4ucHJvcHMuZGVmYXVsdElzT3BlbixoaWdobGlnaHRlZEluZGV4Om4ucHJvcHMuZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXgsc2VsZWN0ZWRJdGVtOmUsaW5wdXRWYWx1ZTpuLnByb3BzLml0ZW1Ub1N0cmluZyhlKX0sdCkscil9LG4uc2VsZWN0SXRlbUF0SW5kZXg9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPW4uaXRlbXNbZV07bnVsbCE9byYmbi5zZWxlY3RJdGVtKG8sdCxyKX0sbi5zZWxlY3RIaWdobGlnaHRlZEl0ZW09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5zZWxlY3RJdGVtQXRJbmRleChuLmdldFN0YXRlKCkuaGlnaGxpZ2h0ZWRJbmRleCxlLHQpfSxuLmludGVybmFsU2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgcixvLGE9e30sbD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlO3JldHVybiFsJiZlLmhhc093blByb3BlcnR5KFwiaW5wdXRWYWx1ZVwiKSYmbi5wcm9wcy5vbklucHV0VmFsdWVDaGFuZ2UoZS5pbnB1dFZhbHVlLGkoe30sbi5nZXRTdGF0ZUFuZEhlbHBlcnMoKSxlKSksbi5zZXRTdGF0ZShmdW5jdGlvbih0KXt0PW4uZ2V0U3RhdGUodCk7dmFyIHM9bD9lKHQpOmU7cz1uLnByb3BzLnN0YXRlUmVkdWNlcih0LHMpLHI9cy5oYXNPd25Qcm9wZXJ0eShcInNlbGVjdGVkSXRlbVwiKTt2YXIgdT17fSxjPXt9O3JldHVybiByJiZzLnNlbGVjdGVkSXRlbSE9PXQuc2VsZWN0ZWRJdGVtJiYobz1zLnNlbGVjdGVkSXRlbSkscy50eXBlPXMudHlwZXx8YixPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV0hPT1zW2VdJiYoYVtlXT1zW2VdKSxcInR5cGVcIiE9PWUmJihjW2VdPXNbZV0sbi5pc0NvbnRyb2xsZWRQcm9wKGUpfHwodVtlXT1zW2VdKSl9KSxsJiZzLmhhc093blByb3BlcnR5KFwiaW5wdXRWYWx1ZVwiKSYmbi5wcm9wcy5vbklucHV0VmFsdWVDaGFuZ2Uocy5pbnB1dFZhbHVlLGkoe30sbi5nZXRTdGF0ZUFuZEhlbHBlcnMoKSxzKSksdX0sZnVuY3Rpb24oKXtQKHQpKCksT2JqZWN0LmtleXMoYSkubGVuZ3RoPjEmJm4ucHJvcHMub25TdGF0ZUNoYW5nZShhLG4uZ2V0U3RhdGVBbmRIZWxwZXJzKCkpLHImJm4ucHJvcHMub25TZWxlY3QoZS5zZWxlY3RlZEl0ZW0sbi5nZXRTdGF0ZUFuZEhlbHBlcnMoKSksdm9pZCAwIT09byYmbi5wcm9wcy5vbkNoYW5nZShvLG4uZ2V0U3RhdGVBbmRIZWxwZXJzKCkpLG4ucHJvcHMub25Vc2VyQWN0aW9uKGEsbi5nZXRTdGF0ZUFuZEhlbHBlcnMoKSl9KX0sbi5yb290UmVmPWZ1bmN0aW9uKGUpe3JldHVybiBuLl9yb290Tm9kZT1lfSxuLmdldFJvb3RQcm9wcz1mdW5jdGlvbihlLHQpe3ZhciByLG89dm9pZCAwPT09ZT97fTplLGw9by5yZWZLZXkscz12b2lkIDA9PT1sP1wicmVmXCI6bCx1PWEobyxbXCJyZWZLZXlcIl0pLGM9KHZvaWQgMD09PXQ/e306dCkuc3VwcHJlc3NSZWZFcnJvcixkPXZvaWQgMCE9PWMmJmM7bi5nZXRSb290UHJvcHMuY2FsbGVkPSEwLG4uZ2V0Um9vdFByb3BzLnJlZktleT1zLG4uZ2V0Um9vdFByb3BzLnN1cHByZXNzUmVmRXJyb3I9ZDt2YXIgcD1uLmdldFN0YXRlKCkuaXNPcGVuO3JldHVybiBpKCgocj17fSlbc109bi5yb290UmVmLHIucm9sZT1cImNvbWJvYm94XCIscltcImFyaWEtZXhwYW5kZWRcIl09cCxyW1wiYXJpYS1oYXNwb3B1cFwiXT1cImxpc3Rib3hcIixyW1wiYXJpYS1vd25zXCJdPXA/bi5tZW51SWQ6bnVsbCxyW1wiYXJpYS1sYWJlbGxlZGJ5XCJdPW4ubGFiZWxJZCxyKSx1KX0sbi5rZXlEb3duSGFuZGxlcnM9e0Fycm93RG93bjpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKGUucHJldmVudERlZmF1bHQoKSx0aGlzLmdldFN0YXRlKCkuaXNPcGVuKXt2YXIgbj1lLnNoaWZ0S2V5PzU6MTt0aGlzLm1vdmVIaWdobGlnaHRlZEluZGV4KG4se3R5cGU6U30pfWVsc2UgdGhpcy5pbnRlcm5hbFNldFN0YXRlKHtpc09wZW46ITAsdHlwZTpTfSxmdW5jdGlvbigpe3ZhciBlPXQuZ2V0SXRlbUNvdW50KCk7ZT4wJiZ0LnNldEhpZ2hsaWdodGVkSW5kZXgoVygxLHQuZ2V0U3RhdGUoKS5oaWdobGlnaHRlZEluZGV4LGUpLHt0eXBlOlN9KX0pfSxBcnJvd1VwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZ2V0U3RhdGUoKS5pc09wZW4pe3ZhciBuPWUuc2hpZnRLZXk/LTU6LTE7dGhpcy5tb3ZlSGlnaGxpZ2h0ZWRJbmRleChuLHt0eXBlOnZ9KX1lbHNlIHRoaXMuaW50ZXJuYWxTZXRTdGF0ZSh7aXNPcGVuOiEwLHR5cGU6dn0sZnVuY3Rpb24oKXt2YXIgZT10LmdldEl0ZW1Db3VudCgpO2U+MCYmdC5zZXRIaWdobGlnaHRlZEluZGV4KFcoLTEsdC5nZXRTdGF0ZSgpLmhpZ2hsaWdodGVkSW5kZXgsZSkse3R5cGU6U30pfSl9LEVudGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0U3RhdGUoKSxuPXQuaXNPcGVuLHI9dC5oaWdobGlnaHRlZEluZGV4O2lmKG4mJm51bGwhPXIpe2UucHJldmVudERlZmF1bHQoKTt2YXIgbz10aGlzLml0ZW1zW3JdLGE9dGhpcy5nZXRJdGVtTm9kZUZyb21JbmRleChyKTtpZihudWxsPT1vfHxhJiZhLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpKXJldHVybjt0aGlzLnNlbGVjdEhpZ2hsaWdodGVkSXRlbSh7dHlwZTp4fSl9fSxFc2NhcGU6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucmVzZXQoe3R5cGU6RX0pfX0sbi5idXR0b25LZXlEb3duSGFuZGxlcnM9aSh7fSxuLmtleURvd25IYW5kbGVycyx7XCIgXCI6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMudG9nZ2xlTWVudSh7dHlwZTpDfSl9fSksbi5pbnB1dEtleURvd25IYW5kbGVycz1pKHt9LG4ua2V5RG93bkhhbmRsZXJzLHtIb21lOmZ1bmN0aW9uKGUpe3RoaXMuaGlnaGxpZ2h0Rmlyc3RPckxhc3RJbmRleChlLCEwLHt0eXBlOnd9KX0sRW5kOmZ1bmN0aW9uKGUpe3RoaXMuaGlnaGxpZ2h0Rmlyc3RPckxhc3RJbmRleChlLCExLHt0eXBlOmt9KX19KSxuLmdldFRvZ2dsZUJ1dHRvblByb3BzPWZ1bmN0aW9uKGUpe3ZhciB0PXZvaWQgMD09PWU/e306ZSxyPXQub25DbGljayxvPSh0Lm9uUHJlc3MsdC5vbktleURvd24pLGw9dC5vbktleVVwLHM9dC5vbkJsdXIsdT1hKHQsW1wib25DbGlja1wiLFwib25QcmVzc1wiLFwib25LZXlEb3duXCIsXCJvbktleVVwXCIsXCJvbkJsdXJcIl0pLGM9bi5nZXRTdGF0ZSgpLmlzT3BlbixkPXtvbkNsaWNrOkQocixuLmJ1dHRvbkhhbmRsZUNsaWNrKSxvbktleURvd246RChvLG4uYnV0dG9uSGFuZGxlS2V5RG93biksb25LZXlVcDpEKGwsbi5idXR0b25IYW5kbGVLZXlVcCksb25CbHVyOkQocyxuLmJ1dHRvbkhhbmRsZUJsdXIpfTtyZXR1cm4gaSh7dHlwZTpcImJ1dHRvblwiLHJvbGU6XCJidXR0b25cIixcImFyaWEtbGFiZWxcIjpjP1wiY2xvc2UgbWVudVwiOlwib3BlbiBtZW51XCIsXCJhcmlhLWhhc3BvcHVwXCI6ITAsXCJkYXRhLXRvZ2dsZVwiOiEwfSx1LmRpc2FibGVkP3t9OmQsdSl9LG4uYnV0dG9uSGFuZGxlS2V5VXA9ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpfSxuLmJ1dHRvbkhhbmRsZUtleURvd249ZnVuY3Rpb24oZSl7dmFyIHQ9SChlKTtuLmJ1dHRvbktleURvd25IYW5kbGVyc1t0XSYmbi5idXR0b25LZXlEb3duSGFuZGxlcnNbdF0uY2FsbChsKG4pLGUpfSxuLmJ1dHRvbkhhbmRsZUNsaWNrPWZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxuLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1uLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmJvZHkmJmUudGFyZ2V0LmZvY3VzKCksbi5pbnRlcm5hbFNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gbi50b2dnbGVNZW51KHt0eXBlOk99KX0pfSxuLmJ1dHRvbkhhbmRsZUJsdXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7bi5pbnRlcm5hbFNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLmlzTW91c2VEb3dufHxudWxsIT1uLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJm4ucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pZD09PW4uaW5wdXRJZHx8bi5wcm9wcy5lbnZpcm9ubWVudC5kb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dHx8bi5yZXNldCh7dHlwZTpJfSl9KX0sbi5nZXRMYWJlbFByb3BzPWZ1bmN0aW9uKGUpe3JldHVybiBpKHtodG1sRm9yOm4uaW5wdXRJZCxpZDpuLmxhYmVsSWR9LGUpfSxuLmdldElucHV0UHJvcHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dm9pZCAwPT09ZT97fTplLHI9dC5vbktleURvd24sbz10Lm9uQmx1cixsPXQub25DaGFuZ2Uscz10Lm9uSW5wdXQsdT0odC5vbkNoYW5nZVRleHQsYSh0LFtcIm9uS2V5RG93blwiLFwib25CbHVyXCIsXCJvbkNoYW5nZVwiLFwib25JbnB1dFwiLFwib25DaGFuZ2VUZXh0XCJdKSksYz17fTt2YXIgZCxwPW4uZ2V0U3RhdGUoKSxmPXAuaW5wdXRWYWx1ZSxtPXAuaXNPcGVuLGc9cC5oaWdobGlnaHRlZEluZGV4O3UuZGlzYWJsZWR8fCgoZD17fSkub25DaGFuZ2U9RChsLHMsbi5pbnB1dEhhbmRsZUNoYW5nZSksZC5vbktleURvd249RChyLG4uaW5wdXRIYW5kbGVLZXlEb3duKSxkLm9uQmx1cj1EKG8sbi5pbnB1dEhhbmRsZUJsdXIpLGM9ZCk7cmV0dXJuIGkoe1wiYXJpYS1hdXRvY29tcGxldGVcIjpcImxpc3RcIixcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOm0mJlwibnVtYmVyXCI9PXR5cGVvZiBnJiZnPj0wP24uZ2V0SXRlbUlkKGcpOm51bGwsXCJhcmlhLWNvbnRyb2xzXCI6bT9uLm1lbnVJZDpudWxsLFwiYXJpYS1sYWJlbGxlZGJ5XCI6bi5sYWJlbElkLGF1dG9Db21wbGV0ZTpcIm9mZlwiLHZhbHVlOmYsaWQ6bi5pbnB1dElkfSxjLHUpfSxuLmlucHV0SGFuZGxlS2V5RG93bj1mdW5jdGlvbihlKXt2YXIgdD1IKGUpO3QmJm4uaW5wdXRLZXlEb3duSGFuZGxlcnNbdF0mJm4uaW5wdXRLZXlEb3duSGFuZGxlcnNbdF0uY2FsbChsKG4pLGUpfSxuLmlucHV0SGFuZGxlQ2hhbmdlPWZ1bmN0aW9uKGUpe24uaW50ZXJuYWxTZXRTdGF0ZSh7dHlwZTpBLGlzT3BlbjohMCxpbnB1dFZhbHVlOmUudGFyZ2V0LnZhbHVlfSl9LG4uaW5wdXRIYW5kbGVUZXh0Q2hhbmdlPWZ1bmN0aW9uKGUpe24uaW50ZXJuYWxTZXRTdGF0ZSh7dHlwZTpBLGlzT3BlbjohMCxpbnB1dFZhbHVlOmV9KX0sbi5pbnB1dEhhbmRsZUJsdXI9ZnVuY3Rpb24oKXtuLmludGVybmFsU2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPW4ucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQmJiEhbi5wcm9wcy5lbnZpcm9ubWVudC5kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYhIW4ucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5kYXRhc2V0JiZuLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZGF0YXNldC50b2dnbGUmJm4uX3Jvb3ROb2RlJiZuLl9yb290Tm9kZS5jb250YWlucyhuLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO24uaXNNb3VzZURvd258fGV8fG4ucmVzZXQoe3R5cGU6VH0pfSl9LG4ubWVudVJlZj1mdW5jdGlvbihlKXtuLl9tZW51Tm9kZT1lfSxuLmdldE1lbnVQcm9wcz1mdW5jdGlvbihlLHQpe3ZhciByLG89dm9pZCAwPT09ZT97fTplLGw9by5yZWZLZXkscz12b2lkIDA9PT1sP1wicmVmXCI6bCx1PW8ucmVmLGM9YShvLFtcInJlZktleVwiLFwicmVmXCJdKSxkPSh2b2lkIDA9PT10P3t9OnQpLnN1cHByZXNzUmVmRXJyb3IscD12b2lkIDAhPT1kJiZkO3JldHVybiBuLmdldE1lbnVQcm9wcy5jYWxsZWQ9ITAsbi5nZXRNZW51UHJvcHMucmVmS2V5PXMsbi5nZXRNZW51UHJvcHMuc3VwcHJlc3NSZWZFcnJvcj1wLGkoKChyPXt9KVtzXT1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09YXJndW1lbnRzW3JdO3QuZm9yRWFjaChmdW5jdGlvbihlKXtlJiZlLmFwcGx5KHZvaWQgMCxuKX0pfX0odSxuLm1lbnVSZWYpLHIucm9sZT1cImxpc3Rib3hcIixyW1wiYXJpYS1sYWJlbGxlZGJ5XCJdPWMmJmNbXCJhcmlhLWxhYmVsXCJdP251bGw6bi5sYWJlbElkLHIuaWQ9bi5tZW51SWQsciksYyl9LG4uZ2V0SXRlbVByb3BzPWZ1bmN0aW9uKGUpe3ZhciB0LHI9dm9pZCAwPT09ZT97fTplLG89ci5vbk1vdXNlTW92ZSxsPXIub25Nb3VzZURvd24scz1yLm9uQ2xpY2ssdT0oci5vblByZXNzLHIuaW5kZXgpLGM9ci5pdGVtLGQ9dm9pZCAwPT09Yz92b2lkIDA6YyxwPWEocixbXCJvbk1vdXNlTW92ZVwiLFwib25Nb3VzZURvd25cIixcIm9uQ2xpY2tcIixcIm9uUHJlc3NcIixcImluZGV4XCIsXCJpdGVtXCJdKTt2b2lkIDA9PT11PyhuLml0ZW1zLnB1c2goZCksdT1uLml0ZW1zLmluZGV4T2YoZCkpOm4uaXRlbXNbdV09ZDt2YXIgZj1zLG09KCh0PXtvbk1vdXNlTW92ZTpEKG8sZnVuY3Rpb24oKXt1IT09bi5nZXRTdGF0ZSgpLmhpZ2hsaWdodGVkSW5kZXgmJihuLnNldEhpZ2hsaWdodGVkSW5kZXgodSx7dHlwZTp5fSksbi5hdm9pZFNjcm9sbGluZz0hMCxuLmludGVybmFsU2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBuLmF2b2lkU2Nyb2xsaW5nPSExfSwyNTApKX0pLG9uTW91c2VEb3duOkQobCxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCl9KX0pLm9uQ2xpY2s9RChmLGZ1bmN0aW9uKCl7bi5zZWxlY3RJdGVtQXRJbmRleCh1LHt0eXBlOl99KX0pLHQpLGc9cC5kaXNhYmxlZD97b25Nb3VzZURvd246bS5vbk1vdXNlRG93bn06bTtyZXR1cm4gaSh7aWQ6bi5nZXRJdGVtSWQodSkscm9sZTpcIm9wdGlvblwiLFwiYXJpYS1zZWxlY3RlZFwiOm4uZ2V0U3RhdGUoKS5oaWdobGlnaHRlZEluZGV4PT09dX0sZyxwKX0sbi5jbGVhckl0ZW1zPWZ1bmN0aW9uKCl7bi5pdGVtcz1bXX0sbi5yZXNldD1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PWUmJihlPXt9KSxlPXooZSksbi5pbnRlcm5hbFNldFN0YXRlKGZ1bmN0aW9uKHQpe3ZhciByPXQuc2VsZWN0ZWRJdGVtO3JldHVybiBpKHtpc09wZW46bi5wcm9wcy5kZWZhdWx0SXNPcGVuLGhpZ2hsaWdodGVkSW5kZXg6bi5wcm9wcy5kZWZhdWx0SGlnaGxpZ2h0ZWRJbmRleCxpbnB1dFZhbHVlOm4ucHJvcHMuaXRlbVRvU3RyaW5nKHIpfSxlKX0sdCl9LG4udG9nZ2xlTWVudT1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PWUmJihlPXt9KSxlPXooZSksbi5pbnRlcm5hbFNldFN0YXRlKGZ1bmN0aW9uKHQpe3ZhciByPXQuaXNPcGVuO3JldHVybiBpKHtpc09wZW46IXJ9LHImJntoaWdobGlnaHRlZEluZGV4Om4ucHJvcHMuZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXh9LGUpfSxmdW5jdGlvbigpe3ZhciByPW4uZ2V0U3RhdGUoKSxvPXIuaXNPcGVuLGE9ci5oaWdobGlnaHRlZEluZGV4O28mJm4uZ2V0SXRlbUNvdW50KCk+MCYmXCJudW1iZXJcIj09dHlwZW9mIGEmJm4uc2V0SGlnaGxpZ2h0ZWRJbmRleChhLGUpLFAodCkoKX0pfSxuLm9wZW5NZW51PWZ1bmN0aW9uKGUpe24uaW50ZXJuYWxTZXRTdGF0ZSh7aXNPcGVuOiEwfSxlKX0sbi5jbG9zZU1lbnU9ZnVuY3Rpb24oZSl7bi5pbnRlcm5hbFNldFN0YXRlKHtpc09wZW46ITF9LGUpfSxuLnVwZGF0ZVN0YXR1cz1mdW5jdGlvbihlLHQpe3ZhciBuO2Z1bmN0aW9uIHIoKXtuJiZjbGVhclRpbWVvdXQobil9ZnVuY3Rpb24gbygpe2Zvcih2YXIgbz1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KG8pLGk9MDtpPG87aSsrKWFbaV09YXJndW1lbnRzW2ldO3IoKSxuPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtuPW51bGwsZS5hcHBseSh2b2lkIDAsYSl9LHQpfXJldHVybiBvLmNhbmNlbD1yLG99KGZ1bmN0aW9uKCl7dmFyIGU9bi5nZXRTdGF0ZSgpLHQ9bi5pdGVtc1tlLmhpZ2hsaWdodGVkSW5kZXhdLHI9bi5nZXRJdGVtQ291bnQoKSxvPW4ucHJvcHMuZ2V0QTExeVN0YXR1c01lc3NhZ2UoaSh7aXRlbVRvU3RyaW5nOm4ucHJvcHMuaXRlbVRvU3RyaW5nLHByZXZpb3VzUmVzdWx0Q291bnQ6bi5wcmV2aW91c1Jlc3VsdENvdW50LHJlc3VsdENvdW50OnIsaGlnaGxpZ2h0ZWRJdGVtOnR9LGUpKTtuLnByZXZpb3VzUmVzdWx0Q291bnQ9cixoKG8pfSwyMDApO3ZhciByPW4ucHJvcHMsbz1yLmRlZmF1bHRIaWdobGlnaHRlZEluZGV4LHM9ci5pbml0aWFsSGlnaGxpZ2h0ZWRJbmRleCx1PXZvaWQgMD09PXM/bzpzLGM9ci5kZWZhdWx0SXNPcGVuLGQ9ci5pbml0aWFsSXNPcGVuLHA9dm9pZCAwPT09ZD9jOmQsZj1yLmluaXRpYWxJbnB1dFZhbHVlLG09dm9pZCAwPT09Zj9cIlwiOmYsZz1yLmluaXRpYWxTZWxlY3RlZEl0ZW0sTj12b2lkIDA9PT1nP251bGw6ZyxNPW4uZ2V0U3RhdGUoe2hpZ2hsaWdodGVkSW5kZXg6dSxpc09wZW46cCxpbnB1dFZhbHVlOm0sc2VsZWN0ZWRJdGVtOk59KTtyZXR1cm4gbnVsbCE9TS5zZWxlY3RlZEl0ZW0mJnZvaWQgMD09PW4ucHJvcHMuaW5pdGlhbElucHV0VmFsdWUmJihNLmlucHV0VmFsdWU9bi5wcm9wcy5pdGVtVG9TdHJpbmcoTS5zZWxlY3RlZEl0ZW0pKSxuLnN0YXRlPU0sbn1uPWUsKHQ9cikucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5fX3Byb3RvX189bjt2YXIgcz1yLnByb3RvdHlwZTtyZXR1cm4gcy5pbnRlcm5hbENsZWFyVGltZW91dHM9ZnVuY3Rpb24oKXt0aGlzLnRpbWVvdXRJZHMuZm9yRWFjaChmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQoZSl9KSx0aGlzLnRpbWVvdXRJZHM9W119LHMuZ2V0U3RhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dGhpcy5zdGF0ZSksT2JqZWN0LmtleXMoZSkucmVkdWNlKGZ1bmN0aW9uKG4scil7cmV0dXJuIG5bcl09dC5pc0NvbnRyb2xsZWRQcm9wKHIpP3QucHJvcHNbcl06ZVtyXSxufSx7fSl9LHMuaXNDb250cm9sbGVkUHJvcD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5wcm9wc1tlXX0scy5nZXRJdGVtQ291bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLml0ZW1zLmxlbmd0aDtyZXR1cm4gbnVsbCE9dGhpcy5pdGVtQ291bnQ/ZT10aGlzLml0ZW1Db3VudDp2b2lkIDAhPT10aGlzLnByb3BzLml0ZW1Db3VudCYmKGU9dGhpcy5wcm9wcy5pdGVtQ291bnQpLGV9LHMuZ2V0SXRlbU5vZGVGcm9tSW5kZXg9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5nZXRJdGVtSWQoZSkpfSxzLnNjcm9sbEhpZ2hsaWdodGVkSXRlbUludG9WaWV3PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRJdGVtTm9kZUZyb21JbmRleCh0aGlzLmdldFN0YXRlKCkuaGlnaGxpZ2h0ZWRJbmRleCk7dGhpcy5wcm9wcy5zY3JvbGxJbnRvVmlldyhlLHRoaXMuX21lbnVOb2RlKX0scy5tb3ZlSGlnaGxpZ2h0ZWRJbmRleD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0SXRlbUNvdW50KCk7aWYobj4wKXt2YXIgcj1XKGUsdGhpcy5nZXRTdGF0ZSgpLmhpZ2hsaWdodGVkSW5kZXgsbik7dGhpcy5zZXRIaWdobGlnaHRlZEluZGV4KHIsdCl9fSxzLmhpZ2hsaWdodEZpcnN0T3JMYXN0SW5kZXg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZ2V0SXRlbUNvdW50KCktMTtyPDB8fCF0aGlzLmdldFN0YXRlKCkuaXNPcGVufHwoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2V0SGlnaGxpZ2h0ZWRJbmRleCh0PzA6cixuKSl9LHMuZ2V0U3RhdGVBbmRIZWxwZXJzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRTdGF0ZSgpLHQ9ZS5oaWdobGlnaHRlZEluZGV4LG49ZS5pbnB1dFZhbHVlLHI9ZS5zZWxlY3RlZEl0ZW0sbz1lLmlzT3BlbixhPXRoaXMucHJvcHMuaXRlbVRvU3RyaW5nLGk9dGhpcy5pZCxsPXRoaXMuZ2V0Um9vdFByb3BzLHM9dGhpcy5nZXRUb2dnbGVCdXR0b25Qcm9wcyx1PXRoaXMuZ2V0TGFiZWxQcm9wcyxjPXRoaXMuZ2V0TWVudVByb3BzLGQ9dGhpcy5nZXRJbnB1dFByb3BzLHA9dGhpcy5nZXRJdGVtUHJvcHMsZj10aGlzLm9wZW5NZW51LG09dGhpcy5jbG9zZU1lbnUsZz10aGlzLnRvZ2dsZU1lbnUsaD10aGlzLnNlbGVjdEl0ZW0sYj10aGlzLnNlbGVjdEl0ZW1BdEluZGV4LHk9dGhpcy5zZWxlY3RIaWdobGlnaHRlZEl0ZW0sdj10aGlzLnNldEhpZ2hsaWdodGVkSW5kZXgsUz10aGlzLmNsZWFyU2VsZWN0aW9uLEU9dGhpcy5jbGVhckl0ZW1zO3JldHVybntnZXRSb290UHJvcHM6bCxnZXRUb2dnbGVCdXR0b25Qcm9wczpzLGdldExhYmVsUHJvcHM6dSxnZXRNZW51UHJvcHM6YyxnZXRJbnB1dFByb3BzOmQsZ2V0SXRlbVByb3BzOnAscmVzZXQ6dGhpcy5yZXNldCxvcGVuTWVudTpmLGNsb3NlTWVudTptLHRvZ2dsZU1lbnU6ZyxzZWxlY3RJdGVtOmgsc2VsZWN0SXRlbUF0SW5kZXg6YixzZWxlY3RIaWdobGlnaHRlZEl0ZW06eSxzZXRIaWdobGlnaHRlZEluZGV4OnYsY2xlYXJTZWxlY3Rpb246UyxjbGVhckl0ZW1zOkUsc2V0SXRlbUNvdW50OnRoaXMuc2V0SXRlbUNvdW50LHVuc2V0SXRlbUNvdW50OnRoaXMudW5zZXRJdGVtQ291bnQsc2V0U3RhdGU6dGhpcy5pbnRlcm5hbFNldFN0YXRlLGl0ZW1Ub1N0cmluZzphLGlkOmksaGlnaGxpZ2h0ZWRJbmRleDp0LGlucHV0VmFsdWU6bixpc09wZW46byxzZWxlY3RlZEl0ZW06cn19LHMuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3ZhciB0PWZ1bmN0aW9uKHQsbil7dm9pZCAwPT09biYmKG49ITApO3ZhciByPWUucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQ7cmV0dXJuW2UuX3Jvb3ROb2RlLGUuX21lbnVOb2RlXS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBlJiYoTChlLHQpfHxuJiZMKGUsci5hY3RpdmVFbGVtZW50KSl9KX0sbj1mdW5jdGlvbigpe2UuaXNNb3VzZURvd249ITB9LHI9ZnVuY3Rpb24obil7ZS5pc01vdXNlRG93bj0hMSwhdChuLnRhcmdldCkmJmUuZ2V0U3RhdGUoKS5pc09wZW4mJmUucmVzZXQoe3R5cGU6MX0sZnVuY3Rpb24oKXtyZXR1cm4gZS5wcm9wcy5vbk91dGVyQ2xpY2soZS5nZXRTdGF0ZUFuZEhlbHBlcnMoKSl9KX0sbz1mdW5jdGlvbigpe2UuaXNUb3VjaE1vdmU9ITF9LGE9ZnVuY3Rpb24oKXtlLmlzVG91Y2hNb3ZlPSEwfSxpPWZ1bmN0aW9uKG4pe3ZhciByPXQobi50YXJnZXQsITEpO2UuaXNUb3VjaE1vdmV8fHJ8fCFlLmdldFN0YXRlKCkuaXNPcGVufHxlLnJlc2V0KHt0eXBlOjE2fSxmdW5jdGlvbigpe3JldHVybiBlLnByb3BzLm9uT3V0ZXJDbGljayhlLmdldFN0YXRlQW5kSGVscGVycygpKX0pfTt0aGlzLnByb3BzLmVudmlyb25tZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixuKSx0aGlzLnByb3BzLmVudmlyb25tZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsciksdGhpcy5wcm9wcy5lbnZpcm9ubWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLG8pLHRoaXMucHJvcHMuZW52aXJvbm1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLGEpLHRoaXMucHJvcHMuZW52aXJvbm1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsaSksdGhpcy5jbGVhbnVwPWZ1bmN0aW9uKCl7ZS5pbnRlcm5hbENsZWFyVGltZW91dHMoKSxlLnVwZGF0ZVN0YXR1cy5jYW5jZWwoKSxlLnByb3BzLmVudmlyb25tZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixuKSxlLnByb3BzLmVudmlyb25tZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsciksZS5wcm9wcy5lbnZpcm9ubWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLG8pLGUucHJvcHMuZW52aXJvbm1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLGEpLGUucHJvcHMuZW52aXJvbm1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsaSl9fSxzLnNob3VsZFNjcm9sbD1mdW5jdGlvbihlLHQpe3ZhciBuPSh2b2lkIDA9PT10aGlzLnByb3BzLmhpZ2hsaWdodGVkSW5kZXg/dGhpcy5nZXRTdGF0ZSgpOnRoaXMucHJvcHMpLmhpZ2hsaWdodGVkSW5kZXgscj0odm9pZCAwPT09dC5oaWdobGlnaHRlZEluZGV4P2U6dCkuaGlnaGxpZ2h0ZWRJbmRleDtyZXR1cm4gbiYmdGhpcy5nZXRTdGF0ZSgpLmlzT3BlbiYmIWUuaXNPcGVufHxuIT09cn0scy5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzQ29udHJvbGxlZFByb3AoXCJzZWxlY3RlZEl0ZW1cIikmJnRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtQ2hhbmdlZChlLnNlbGVjdGVkSXRlbSx0aGlzLnByb3BzLnNlbGVjdGVkSXRlbSkmJnRoaXMuaW50ZXJuYWxTZXRTdGF0ZSh7dHlwZToxNSxpbnB1dFZhbHVlOnRoaXMucHJvcHMuaXRlbVRvU3RyaW5nKHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtKX0pLCF0aGlzLmF2b2lkU2Nyb2xsaW5nJiZ0aGlzLnNob3VsZFNjcm9sbCh0LGUpJiZ0aGlzLnNjcm9sbEhpZ2hsaWdodGVkSXRlbUludG9WaWV3KCksdGhpcy51cGRhdGVTdGF0dXMoKX0scy5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuY2xlYW51cCgpfSxzLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPUYodGhpcy5wcm9wcy5jaGlsZHJlbixNKTt0aGlzLmNsZWFySXRlbXMoKSx0aGlzLmdldFJvb3RQcm9wcy5jYWxsZWQ9ITEsdGhpcy5nZXRSb290UHJvcHMucmVmS2V5PXZvaWQgMCx0aGlzLmdldFJvb3RQcm9wcy5zdXBwcmVzc1JlZkVycm9yPXZvaWQgMCx0aGlzLmdldE1lbnVQcm9wcy5jYWxsZWQ9ITEsdGhpcy5nZXRNZW51UHJvcHMucmVmS2V5PXZvaWQgMCx0aGlzLmdldE1lbnVQcm9wcy5zdXBwcmVzc1JlZkVycm9yPXZvaWQgMCx0aGlzLmdldExhYmVsUHJvcHMuY2FsbGVkPSExLHRoaXMuZ2V0SW5wdXRQcm9wcy5jYWxsZWQ9ITE7dmFyIHQ9RihlKHRoaXMuZ2V0U3RhdGVBbmRIZWxwZXJzKCkpKTtyZXR1cm4gdD90aGlzLmdldFJvb3RQcm9wcy5jYWxsZWR8fHRoaXMucHJvcHMuc3VwcHJlc3NSZWZFcnJvcj90OkIodCk/by5hLmNsb25lRWxlbWVudCh0LHRoaXMuZ2V0Um9vdFByb3BzKGoodCkpKTp2b2lkIDA6bnVsbH0scn0oci5Db21wb25lbnQpO0cuZGVmYXVsdFByb3BzPXtkZWZhdWx0SGlnaGxpZ2h0ZWRJbmRleDpudWxsLGRlZmF1bHRJc09wZW46ITEsZ2V0QTExeVN0YXR1c01lc3NhZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pc09wZW4sbj1lLnNlbGVjdGVkSXRlbSxyPWUucmVzdWx0Q291bnQsbz1lLnByZXZpb3VzUmVzdWx0Q291bnQsYT1lLml0ZW1Ub1N0cmluZztyZXR1cm4gdD9yP3IhPT1vP3IrXCIgcmVzdWx0XCIrKDE9PT1yP1wiIGlzXCI6XCJzIGFyZVwiKStcIiBhdmFpbGFibGUsIHVzZSB1cCBhbmQgZG93biBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlLiBQcmVzcyBFbnRlciBrZXkgdG8gc2VsZWN0LlwiOlwiXCI6XCJObyByZXN1bHRzIGFyZSBhdmFpbGFibGUuXCI6bj9hKG4pOlwiXCJ9LGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9cIlwiOlN0cmluZyhlKX0sb25TdGF0ZUNoYW5nZTpNLG9uSW5wdXRWYWx1ZUNoYW5nZTpNLG9uVXNlckFjdGlvbjpNLG9uQ2hhbmdlOk0sb25TZWxlY3Q6TSxvbk91dGVyQ2xpY2s6TSxzZWxlY3RlZEl0ZW1DaGFuZ2VkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUhPT10fSxlbnZpcm9ubWVudDpcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93P3t9OndpbmRvdyxzdGF0ZVJlZHVjZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0sc3VwcHJlc3NSZWZFcnJvcjohMSxzY3JvbGxJbnRvVmlldzpmdW5jdGlvbihlLHQpe251bGwhPT1lJiZmKGUse2JvdW5kYXJ5OnQsYmxvY2s6XCJuZWFyZXN0XCIsc2Nyb2xsTW9kZTpcImlmLW5lZWRlZFwifSkuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLmVsLG49ZS50b3Ascj1lLmxlZnQ7dC5zY3JvbGxUb3A9bix0LnNjcm9sbExlZnQ9cn0pfX0sRy5zdGF0ZUNoYW5nZVR5cGVzPU47dmFyIFY9RywkPW4oMykscT1uKDE5KTtmdW5jdGlvbiBLKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXtZKGUsdCxuW3RdKX0pfXJldHVybiBlfWZ1bmN0aW9uIFkoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFgoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfXZhciBaPWZ1bmN0aW9uKGUpe3JldHVybltcImZpbGxlZFwiLFwib3V0bGluZWRcIl0uaW5jbHVkZXMoZSl9O2Z1bmN0aW9uIFEoZSl7cmV0dXJuXCJvdXRsaW5lZFwiPT09ZT97cGFkZGluZzpcIjE4LjVweCAxNHB4XCJ9OlwiZmlsbGVkXCI9PT1lP3twYWRkaW5nOlwiMjdweCAxMnB4IDEwcHhcIn06dm9pZCAwfWZ1bmN0aW9uIEooZSl7dmFyIHQ9ZS52YWx1ZSxuPWUub25DaGFuZ2Uscj1lLnN0YXJ0QWRvcm5tZW50LGE9ZS5jbGFzc2VzLGk9ZS5mdWxsV2lkdGgsbD1lLmxhYmVsLHM9ZS5vbkJsdXIsdT1lLm9uS2V5RG93bixjPWUuZGlzYWJsZWQsZD1lLmVycm9yLHA9ZS52YXJpYW50LGY9ZS5oZWxwZXJUZXh0LG09ZS5yZXF1aXJlZCxnPWUubmFtZSxoPXtpbnB1dFByb3BzOksoe30sWChlLFtcInZhbHVlXCIsXCJvbkNoYW5nZVwiLFwic3RhcnRBZG9ybm1lbnRcIixcImNsYXNzZXNcIixcImZ1bGxXaWR0aFwiLFwibGFiZWxcIixcIm9uQmx1clwiLFwib25LZXlEb3duXCIsXCJkaXNhYmxlZFwiLFwiZXJyb3JcIixcInZhcmlhbnRcIixcImhlbHBlclRleHRcIixcInJlcXVpcmVkXCIsXCJuYW1lXCJdKSx7Y2xhc3NOYW1lOmEuaW5wdXRSb290LHN0eWxlOloocCk/e3BhZGRpbmc6XCI2LjVweCAwXCJ9OnZvaWQgMH0pLHN0eWxlOlEocCksc3RhcnRBZG9ybm1lbnQ6cixjbGFzc2VzOntyb290OmEuSW5wdXRSb290fX0sYj17c2hyaW5rOkJvb2xlYW4odC5sZW5ndGh8fHIpLGNsYXNzZXM6e3Jvb3Q6YS5JbnB1dExhYmVsUm9vdCxzaHJpbms6YS5JbnB1dExhYmVsU2hyaW5rLGZpbGxlZDphLklucHV0TGFiZWxGaWxsZWR9fTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoJC52LHtsYWJlbDpsLHZhbHVlOnQsb25DaGFuZ2U6bixvbkJsdXI6cyxvbktleURvd246dSxJbnB1dFByb3BzOmgsSW5wdXRMYWJlbFByb3BzOmIsZnVsbFdpZHRoOmksZGlzYWJsZWQ6YyxlcnJvcjpkLHZhcmlhbnQ6cCxoZWxwZXJUZXh0OmYscmVxdWlyZWQ6bSxuYW1lOmd9KX1KLnByb3BUeXBlcz17ZGlzYWJsZWQ6cy5ib29sLGVycm9yOnMuYm9vbCxsYWJlbDpzLnN0cmluZyx2YWx1ZTpzLnN0cmluZy5pc1JlcXVpcmVkLG9uQ2hhbmdlOnMuZnVuYyxvbkJsdXI6cy5mdW5jLG9uS2V5RG93bjpzLmZ1bmMsZnVsbFdpZHRoOnMuYm9vbCxzdGFydEFkb3JubWVudDpzLm5vZGUsdmFyaWFudDpzLnN0cmluZyxjbGFzc2VzOnMub2JqZWN0LGhlbHBlclRleHQ6cy5ub2RlLHJlcXVpcmVkOnMuYm9vbCxuYW1lOnMuc3RyaW5nfSxKLmRlZmF1bHRQcm9wcz17bGFiZWw6XCJcIixmdWxsV2lkdGg6ITEsc3RhcnRBZG9ybm1lbnQ6ITF9O3ZhciBlZT1PYmplY3QocS53aXRoU3R5bGVzKShmdW5jdGlvbihlKXtyZXR1cm57SW5wdXRSb290OntkaXNwbGF5OlwiZmxleFwiLGZsZXhXcmFwOlwid3JhcFwiLHBhZGRpbmc6XCJcIi5jb25jYXQoLjUqZS5zcGFjaW5nLnVuaXQsXCJweCAwXCIpfSxJbnB1dExhYmVsUm9vdDp7dG9wOmUuc3BhY2luZy51bml0fSxJbnB1dExhYmVsRmlsbGVkOnt0b3A6MiplLnNwYWNpbmcudW5pdH0sSW5wdXRMYWJlbFNocmluazp7dG9wOjB9LGlucHV0Um9vdDp7ZmxleDpcIjEgMSBhdXRvXCIsbWFyZ2luVG9wOi4yNSplLnNwYWNpbmcudW5pdCxtaW5XaWR0aDpcIjIwMHB4XCIsd2lkdGg6XCJhdXRvXCJ9fX0pKEopLHRlPW4oMTgpO2Z1bmN0aW9uIG5lKGUpe3ZhciB0PWUuY2xhc3NlcyxuPVwiXCIuY29uY2F0KHQucm9vdCxcIiBzdWdnZXN0aW9uLWVycm9yLW1lc3NhZ2VcIik7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCQudyx7dmFyaWFudDpcImg2XCIsYWxpZ246XCJjZW50ZXJcIixjbGFzc05hbWU6bn0sXCJBbiBlcnJvciBvY2N1cnJlZCFcIil9bmUucHJvcFR5cGVzPXtjbGFzc2VzOnMub2JqZWN0fTt2YXIgcmU9T2JqZWN0KHEud2l0aFN0eWxlcykoZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e2NvbG9yOmUucGFsZXR0ZS5lcnJvci5tYWlufX19KShuZSk7ZnVuY3Rpb24gb2UoZSl7dmFyIHQ9ZS5pdGVtSWQ7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCQudyx7c3R5bGU6e3BhZGRpbmc6XCIxMXB4IDE2cHhcIn19LHQpfW9lLnByb3BUeXBlcz17aXRlbUlkOnMuc3RyaW5nLmlzUmVxdWlyZWR9O3ZhciBhZT1vZTtmdW5jdGlvbiBpZShlKXt2YXIgdD1lLmlucHV0VmFsdWU7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCQudyx7dmFyaWFudDpcInN1YnRpdGxlMVwiLGFsaWduOlwiY2VudGVyXCIsY2xhc3NOYW1lOlwibm8tc3VnZ2VzdGlvbnMtbWVzc2FnZVwifSxcIk5vIHN1Z2dlc3Rpb25zIGZvdW5kIGZvciBcIixvLmEuY3JlYXRlRWxlbWVudChcInN0cm9uZ1wiLG51bGwsdCkpfWllLnByb3BUeXBlcz17aW5wdXRWYWx1ZTpzLnN0cmluZy5pc1JlcXVpcmVkfTt2YXIgbGU9aWU7ZnVuY3Rpb24gc2UoZSl7dmFyIHQ9ZS5pbnB1dFZhbHVlO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChvLmEuRnJhZ21lbnQsbnVsbCxvLmEuY3JlYXRlRWxlbWVudCgkLncse3ZhcmlhbnQ6XCJoNlwiLGFsaWduOlwiY2VudGVyXCIsZ3V0dGVyQm90dG9tOiEwfSxcIkxvYWRpbmcgc3VnZ2VzdGlvbnMgZm9yIFwiLG8uYS5jcmVhdGVFbGVtZW50KFwic3Ryb25nXCIsbnVsbCx0KSxcIuKAplwiKSxvLmEuY3JlYXRlRWxlbWVudCgkLmosbnVsbCkpfXNlLnByb3BUeXBlcz17aW5wdXRWYWx1ZTpzLnN0cmluZ307dmFyIHVlPXNlO3ZhciBjZT1mdW5jdGlvbigpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudCgkLncse3ZhcmlhbnQ6XCJzdWJ0aXRsZTFcIixhbGlnbjpcImNlbnRlclwiLGNsYXNzTmFtZTpcIm1vcmUtY2hhcmFjdGVycy1tZXNzYWdlXCJ9LFwiVHlwZSBtb3JlIGNoYXJhY3RlcnMgdG8gc2VlIHN1Z2dlc3Rpb25zXCIpfTtmdW5jdGlvbiBkZSgpe3JldHVybihkZT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHBlKGUpe3ZhciB0PWUuc3VnZ2VzdGlvbnMsbj1lLmdldEl0ZW1Qcm9wcyxyPWUuaGlnaGxpZ2h0ZWRJbmRleCxhPWUuaXRlbVRvU3RyaW5nLGk9ZS5pbnB1dFZhbHVlLGw9ZS5TdWdnZXN0aW9uQ29tcG9uZW50LHM9dm9pZCAwPT09bD9hZTpsLHU9ZS5FcnJvckNvbXBvbmVudCxjPXZvaWQgMD09PXU/cmU6dSxkPWUuY2xhc3NlcztpZihPYmplY3QodGUuZykodCkpcmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGMse2Vycm9yOnQsaW5wdXRWYWx1ZTppfSk7aWYodD09PXRlLmIpcmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGNlLG51bGwpO2lmKHQ9PT10ZS5hKXJldHVybiBvLmEuY3JlYXRlRWxlbWVudCh1ZSx7aW5wdXRWYWx1ZTppfSk7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5sZW5ndGg/by5hLmNyZWF0ZUVsZW1lbnQoby5hLkZyYWdtZW50LG51bGwsdC5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgbD1hKGUpLHU9cj09PXQsYz1uKHtpbmRleDp0LGl0ZW06ZSxjbGFzc05hbWU6dT9kLmhpZ2hsaWdodGVkOlwiXCIsc3R5bGU6e3BhZGRpbmc6MCxoZWlnaHQ6XCJhdXRvXCJ9fSk7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCQubCxkZSh7Y2xhc3NOYW1lOlwic3VnZ2VzdGlvblwiLGtleTpsfSxjKSxvLmEuY3JlYXRlRWxlbWVudChzLHtpdGVtSWQ6bCxpdGVtOmUsaXNIaWdobGlnaHRlZDp1LGlucHV0VmFsdWU6aX0pKX0pKTohIWkubGVuZ3RoJiZvLmEuY3JlYXRlRWxlbWVudChsZSx7aW5wdXRWYWx1ZTppfSk7dGhyb3cgY29uc29sZS5lcnJvcih0KSxuZXcgRXJyb3IoXCJzaG91bGQgbmV2ZXIgaGFwcGVuIVwiKX1wZS5wcm9wVHlwZXM9e3N1Z2dlc3Rpb25zOnRlLmksZ2V0SXRlbVByb3BzOnMuZnVuYy5pc1JlcXVpcmVkLGhpZ2hsaWdodGVkSW5kZXg6cy5udW1iZXIsaXRlbVRvU3RyaW5nOnMuZnVuYy5pc1JlcXVpcmVkLGlucHV0VmFsdWU6cy5zdHJpbmcuaXNSZXF1aXJlZCxTdWdnZXN0aW9uQ29tcG9uZW50OnMuYW55LEVycm9yQ29tcG9uZW50OnMuYW55LGNsYXNzZXM6cy5vYmplY3R9O3ZhciBmZT1PYmplY3QocS53aXRoU3R5bGVzKShmdW5jdGlvbihlKXtyZXR1cm57aGlnaGxpZ2h0ZWQ6e2JhY2tncm91bmRDb2xvcjplLnBhbGV0dGUuZ3JleVszMDBdfX19KShwZSksbWU9bigxODcpLGdlPW4ubihtZSk7ZnVuY3Rpb24gaGUoKXtyZXR1cm4oaGU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBiZShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24geWUoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfXZhciB2ZT17cG9zaXRpb246XCJhYnNvbHV0ZVwiLHpJbmRleDoyMCx3aWR0aDpcIjEwMCVcIixvdmVyZmxvd1k6XCJhdXRvXCJ9O2Z1bmN0aW9uIFNlKGUpe3ZhciB0PWUuaXNPcGVuLG49ZS5zdWdnZXN0aW9ucyxyPWUubWF4SGVpZ2h0LGE9eWUoZSxbXCJpc09wZW5cIixcInN1Z2dlc3Rpb25zXCIsXCJtYXhIZWlnaHRcIl0pO2lmKHQmJm4pe3ZhciBpPXI/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe2JlKGUsdCxuW3RdKX0pfXJldHVybiBlfSh7fSx2ZSx7bWF4SGVpZ2h0OnJ9KTp2ZTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoJC5tLHtzcXVhcmU6ITAsc3R5bGU6aX0sby5hLmNyZWF0ZUVsZW1lbnQoZmUsaGUoe3N1Z2dlc3Rpb25zOm59LGEpKSl9cmV0dXJuITF9U2UucHJvcFR5cGVzPXtpc09wZW46cy5ib29sLHN1Z2dlc3Rpb25zOnRlLmksbWF4SGVpZ2h0OnMubnVtYmVyfTt2YXIgRWU9Z2UoKShTZSw1MCk7ZnVuY3Rpb24geGUoZSl7cmV0dXJuKHhlPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiB3ZSgpe3JldHVybih3ZT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGtlKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb31mdW5jdGlvbiBfZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gVGUoZSx0KXtyZXR1cm4hdHx8XCJvYmplY3RcIiE9PXhlKHQpJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0P2Z1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfShlKTp0fWZ1bmN0aW9uIEFlKGUpe3JldHVybihBZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gQ2UoZSx0KXtyZXR1cm4oQ2U9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfXZhciBPZT17dmVydGljYWw6XCJ0b3BcIixob3Jpem9udGFsOlwiY2VudGVyXCJ9LEllPXt2ZXJ0aWNhbDpcImJvdHRvbVwiLGhvcml6b250YWw6XCJjZW50ZXJcIn0sTmU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbjtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHQpLChuPVRlKHRoaXMsQWUodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e3RhcmdldEVsZW1lbnQ6dm9pZCAwfSxufXZhciBuLGEsaTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJkNlKGUsdCl9KHQscltcIlB1cmVDb21wb25lbnRcIl0pLG49dCwoYT1be2tleTpcImhhbmRsZU1vdXNlT3ZlclwiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3RhcmdldEVsZW1lbnQ6ZS5jdXJyZW50VGFyZ2V0fSl9fSx7a2V5OlwiY2xvc2VQb3BvdmVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldFN0YXRlKHt0YXJnZXRFbGVtZW50OnZvaWQgMH0pfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuc3RhdGUudGFyZ2V0RWxlbWVudCxuPXRoaXMucHJvcHMscj1uLmdldFBvcG92ZXJDb250ZW50LGE9a2UobixbXCJnZXRQb3BvdmVyQ29udGVudFwiXSk7aWYocil7dmFyIGk9Qm9vbGVhbih0KSYmcigpLGw9Qm9vbGVhbihpKTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoby5hLkZyYWdtZW50LG51bGwsby5hLmNyZWF0ZUVsZW1lbnQoJC5iLHdlKHtvbk1vdXNlRW50ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGUuaGFuZGxlTW91c2VPdmVyKHQpfSxvbk1vdXNlTGVhdmU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5jbG9zZVBvcG92ZXIoKX19LGEse1wiYXJpYS1vd25zXCI6bD9cIm1hdGVyaWFsLW11bHRpLXBpY2tlci1tb3VzZS1wb3BvdmVyXCI6dm9pZCAwLFwiYXJpYS1oYXNwb3B1cFwiOlwidHJ1ZVwifSkpLG8uYS5jcmVhdGVFbGVtZW50KCQubix7aWQ6XCJtYXRlcmlhbC1tdWx0aS1waWNrZXItbW91c2UtcG9wb3ZlclwiLHN0eWxlOntwb2ludGVyRXZlbnRzOlwibm9uZVwifSxvbkNsb3NlOmZ1bmN0aW9uKCl7cmV0dXJuIGUuY2xvc2VQb3BvdmVyKCl9LGFuY2hvck9yaWdpbjpPZSx0cmFuc2Zvcm1PcmlnaW46SWUsYW5jaG9yRWw6dCxvcGVuOmwsZGlzYWJsZVJlc3RvcmVGb2N1czohMH0saSkpfXJldHVybiBvLmEuY3JlYXRlRWxlbWVudCgkLmIsYSl9fV0pJiZfZShuLnByb3RvdHlwZSxhKSxpJiZfZShuLGkpLHR9KCk7TmUucHJvcFR5cGVzPXtnZXRQb3BvdmVyQ29udGVudDpzLmZ1bmN9O3ZhciBSZT1OZSxQZT1mdW5jdGlvbigpe307ZnVuY3Rpb24gTWUoZSl7dmFyIHQ9ZS5zZWxlY3RlZEl0ZW1zLG49ZS5kaXNhYmxlZCxyPWUuY29sb3IsYT1lLm9uRGVsZXRlLGk9ZS5pdGVtVG9TdHJpbmcsbD1lLml0ZW1Ub0xhYmVsLHM9ZS5pdGVtVG9Qb3BvdmVyLHU9ZS5pdGVtVG9BdmF0YXIsYz12b2lkIDA9PT11P1BlOnUsZD1lLnZhcmlhbnQscD1lLmNsYXNzZXM7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KG8uYS5GcmFnbWVudCxudWxsLHQubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChSZSx7Z2V0UG9wb3ZlckNvbnRlbnQ6cz9mdW5jdGlvbigpe3JldHVybiBzKGUpfTp2b2lkIDAsa2V5OmkoZSksdGFiSW5kZXg6LTEsY2xhc3NOYW1lOnAucGlja2VyQ2hpcCxsYWJlbDpsP2woZSk6aShlKSxvbkRlbGV0ZTpuP3ZvaWQgMDpmdW5jdGlvbigpe3JldHVybiBhKGUpfSxhdmF0YXI6YyhlKSxjb2xvcjpyLHZhcmlhbnQ6XCJmaWxsZWRcIj09PWQ/XCJvdXRsaW5lZFwiOlwiZGVmYXVsdFwifSl9KSl9TWUucHJvcFR5cGVzPXtkaXNhYmxlZDpzLmJvb2wsc2VsZWN0ZWRJdGVtczpzLmFycmF5LGNvbG9yOnRlLmgsb25EZWxldGU6cy5mdW5jLGl0ZW1Ub1N0cmluZzpzLmZ1bmMuaXNSZXF1aXJlZCxpdGVtVG9MYWJlbDpzLmZ1bmMsaXRlbVRvQXZhdGFyOnMuZnVuYyxpdGVtVG9Qb3BvdmVyOnMuZnVuYyxjbGFzc2VzOnMub2JqZWN0LHZhcmlhbnQ6cy5zdHJpbmd9O3ZhciBMZT1NZSxEZT17fTtmdW5jdGlvbiBGZSgpe3ZhciBlPXt9LHQ9W107cmV0dXJue2dldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSxzZXRWYWx1ZTpmdW5jdGlvbihuLHIpe2Vbbl09cix0LmZvckVhY2goZnVuY3Rpb24oZSl7dHJ5e2UoKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfX0pfSxzdWJzY3JpYmVUb1VwZGF0ZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHVzaChlKSxmdW5jdGlvbigpe3JldHVybiBuPWUsdm9pZCgocj10LmluZGV4T2YobikpPj0wJiZ0LnNwbGljZShyLDEpKTt2YXIgbixyfX0sZ2V0TGlzdGVuZXJDb3VudDpmdW5jdGlvbigpe3JldHVybiB0Lmxlbmd0aH19fWZ1bmN0aW9uIEJlKGUpe3JldHVybiBEZVtlXXx8KERlW2VdPUZlKCkpLERlW2VdfXZhciBqZT0uMjUsVWU9LjU7ZnVuY3Rpb24gemUoZSl7cmV0dXJuKHplPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiBIZSgpe3JldHVybihIZT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFdlKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb31mdW5jdGlvbiBHZShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAsbj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XTtyZXR1cm4gbn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHxcIltvYmplY3QgQXJndW1lbnRzXVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gVmUoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uICRlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBxZShlLHQpe3JldHVybiF0fHxcIm9iamVjdFwiIT09emUodCkmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQ/ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9KGUpOnR9ZnVuY3Rpb24gS2UoZSl7cmV0dXJuKEtlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBZZShlLHQpe3JldHVybihZZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0pKGUsdCl9dmFyIFhlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIG47IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyx0KSwobj1xZSh0aGlzLEtlKHQpLmNhbGwodGhpcyxlKSkpLnN0YXRlPXtpbnB1dFZhbHVlOlwiXCIsYWxsU3VnZ2VzdGlvbnM6e319O3ZhciByPWUudXNlR2xvYmFsQ2FjaGU7cmV0dXJuIHImJihuLnVuc3Vic2NyaWJlR2xvYmFsQ2FjaGU9QmUocikuc3Vic2NyaWJlVG9VcGRhdGVzKGZ1bmN0aW9uKCl7cmV0dXJuIG4uZm9yY2VVcGRhdGUoKX0pKSxufXZhciBuLGEsaTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJlllKGUsdCl9KHQscltcIlB1cmVDb21wb25lbnRcIl0pLG49dCwoYT1be2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5kZWxheWVkTG9va3VwKSx0aGlzLnVuc3Vic2NyaWJlR2xvYmFsQ2FjaGUoKX19LHtrZXk6XCJoYW5kbGVJbnB1dENoYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLnByb3BzLmZldGNoRGVsYXkscj12b2lkIDA9PT1uPzA6bixvPWUudGFyZ2V0LnZhbHVlO3RoaXMuc2V0U3RhdGUoe2lucHV0VmFsdWU6b30sZnVuY3Rpb24oKXt0LmdldFN1Z2dlc3Rpb25zKCl8fChjbGVhclRpbWVvdXQodC5kZWxheWVkTG9va3VwKSx0LmRlbGF5ZWRMb29rdXA9c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB0LmZldGNoU3VnZ2VzdGlvbnNGb3Iobyl9LHIpKX0pfX0se2tleTpcImZldGNoU3VnZ2VzdGlvbnNGb3JcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy5wcm9wcyxyPW4uZ2V0U3VnZ2VzdGVkSXRlbXMsbz1uLnZhbHVlO3RoaXMudXBkYXRlU3VnZ2VzdGlvbnMoZSx0ZS5hKSxPYmplY3QodGUuYykoZnVuY3Rpb24oKXtyZXR1cm4gcihlLG8pfSkudGhlbihmdW5jdGlvbihuKXtyZXR1cm4gT2JqZWN0KHRlLmQpKG4pLHQudXBkYXRlU3VnZ2VzdGlvbnMoZSxuKSwhMH0pLmNhdGNoKGZ1bmN0aW9uKG4pe3QudXBkYXRlU3VnZ2VzdGlvbnMoZSxuKSxjb25zb2xlLmVycm9yKG4pfSl9fSx7a2V5Olwic2FmZUl0ZW1Ub1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlJiZ0aGlzLnByb3BzLml0ZW1Ub1N0cmluZyhlKX19LHtrZXk6XCJ1cGRhdGVTdWdnZXN0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5wcm9wcy51c2VHbG9iYWxDYWNoZTtuP0JlKG4pLnNldFZhbHVlKGUsdCk6dGhpcy5zZXRTdGF0ZShmdW5jdGlvbihuKXtyZXR1cm57YWxsU3VnZ2VzdGlvbnM6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe1ZlKGUsdCxuW3RdKX0pfXJldHVybiBlfSh7fSxuLmFsbFN1Z2dlc3Rpb25zLFZlKHt9LGUsdCkpfX0pfX0se2tleTpcImhhbmRsZUtleURvd25cIix2YWx1ZTpmdW5jdGlvbihlKXtpZighdGhpcy5zdGF0ZS5pbnB1dFZhbHVlLmxlbmd0aCYmT2JqZWN0KHRlLmYpKGUpKXt2YXIgdD10aGlzLnByb3BzLnZhbHVlLG49T2JqZWN0KHRlLmUpKHQpO24mJnRoaXMuaGFuZGxlRGVsZXRlSXRlbShuKX19fSx7a2V5OlwiaGFuZGxlQmx1clwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcm9wcy5jbGVhcklucHV0T25CbHVyJiZ0aGlzLnNldFN0YXRlKHtpbnB1dFZhbHVlOlwiXCJ9KX19LHtrZXk6XCJoYW5kbGVBZGRJdGVtXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQudmFsdWU7KDAsdC5vbkNoYW5nZSkoW10uY29uY2F0KEdlKG4pLFtlXSkpLHRoaXMuc2V0U3RhdGUoe2lucHV0VmFsdWU6XCJcIn0pfX0se2tleTpcImhhbmRsZURlbGV0ZUl0ZW1cIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy5wcm9wcyxyPW4udmFsdWU7KDAsbi5vbkNoYW5nZSkoci5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIHQuc2FmZUl0ZW1Ub1N0cmluZyhuKSE9PXQuc2FmZUl0ZW1Ub1N0cmluZyhlKX0pKX19LHtrZXk6XCJnZXRTdWdnZXN0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMudXNlR2xvYmFsQ2FjaGUsbj10aGlzLnN0YXRlLHI9bi5pbnB1dFZhbHVlLG89bi5hbGxTdWdnZXN0aW9ucyxhPXQ/QmUodCkuZ2V0VmFsdWUocik6b1tyXTtpZihBcnJheS5pc0FycmF5KGEpKXt2YXIgaT10aGlzLnByb3BzLnZhbHVlLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZS5zYWZlSXRlbVRvU3RyaW5nKHQpfSk7cmV0dXJuIGEuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiFpLmluY2x1ZGVzKGUuc2FmZUl0ZW1Ub1N0cmluZyh0KSl9KX1yZXR1cm4gYX19LHtrZXk6XCJyZW5kZXJJbnB1dEFkb3JubWVudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmRpc2FibGVkLHI9dC52YWx1ZSxhPXQuaXRlbVRvTGFiZWwsaT10Lml0ZW1Ub0F2YXRhcixsPXQuaXRlbVRvUG9wb3ZlcixzPXQuY2hpcENvbG9yLHU9dC52YXJpYW50LGM9dC5jbGFzc2VzO3JldHVybiEhci5sZW5ndGgmJm8uYS5jcmVhdGVFbGVtZW50KExlLHtrZXk6XCJwaWNrZXItY2hpcHNcIixzZWxlY3RlZEl0ZW1zOnIsY29sb3I6cyxjbGFzc2VzOmMsb25EZWxldGU6ZnVuY3Rpb24odCl7cmV0dXJuIGUuaGFuZGxlRGVsZXRlSXRlbSh0KX0saXRlbVRvU3RyaW5nOmZ1bmN0aW9uKHQpe3JldHVybiBlLnNhZmVJdGVtVG9TdHJpbmcodCl9LGl0ZW1Ub0xhYmVsOmEsaXRlbVRvQXZhdGFyOmksaXRlbVRvUG9wb3ZlcjpsLGRpc2FibGVkOm4sdmFyaWFudDp1fSl9fSx7a2V5OlwicmVuZGVyRG93bnNoaWZ0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPWUuZ2V0SW5wdXRQcm9wcyxyPVdlKGUsW1wiZ2V0SW5wdXRQcm9wc1wiXSksYT10aGlzLnByb3BzLGk9YS5kaXNhYmxlZCxsPWEuZXJyb3Iscz1hLmZ1bGxXaWR0aCx1PWEubGFiZWwsYz1hLlN1Z2dlc3Rpb25Db21wb25lbnQsZD1hLkVycm9yQ29tcG9uZW50LHA9YS52YXJpYW50LGY9YS5oZWxwZXJUZXh0LG09YS5yZXF1aXJlZCxnPWEubmFtZSxoPWEubWF4RHJvcGRvd25IZWlnaHQ7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0eWxlOntwb3NpdGlvbjpcInJlbGF0aXZlXCJ9fSxvLmEuY3JlYXRlRWxlbWVudChlZSxIZSh7fSxuKHtzdGFydEFkb3JubWVudDp0aGlzLnJlbmRlcklucHV0QWRvcm5tZW50KCksb25DaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuaGFuZGxlSW5wdXRDaGFuZ2UoZSl9LG9uS2V5RG93bjpmdW5jdGlvbihlKXtyZXR1cm4gdC5oYW5kbGVLZXlEb3duKGUpfSxvbkJsdXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuaGFuZGxlQmx1cihlKX0sZXJyb3I6bCxkaXNhYmxlZDppfSkse2Z1bGxXaWR0aDpzLGxhYmVsOnUsdmFyaWFudDpwLGhlbHBlclRleHQ6ZixyZXF1aXJlZDptLG5hbWU6Z30pKSxvLmEuY3JlYXRlRWxlbWVudChFZSxIZSh7c3VnZ2VzdGlvbnM6dGhpcy5nZXRTdWdnZXN0aW9ucygpLFN1Z2dlc3Rpb25Db21wb25lbnQ6YyxFcnJvckNvbXBvbmVudDpkLG1heEhlaWdodDpofSxyKSkpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuc3RhdGUuaW5wdXRWYWx1ZTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoVix7aW5wdXRWYWx1ZTp0LG9uU2VsZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBlLmhhbmRsZUFkZEl0ZW0odCl9LGl0ZW1Ub1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4gZS5zYWZlSXRlbVRvU3RyaW5nKHQpfSxmdWxsV2lkdGg6ITB9LGZ1bmN0aW9uKCl7cmV0dXJuIGUucmVuZGVyRG93bnNoaWZ0LmFwcGx5KGUsYXJndW1lbnRzKX0pfX1dKSYmJGUobi5wcm90b3R5cGUsYSksaSYmJGUobixpKSx0fSgpO1hlLnByb3BUeXBlcz17dmFsdWU6cy5hcnJheS5pc1JlcXVpcmVkLG9uQ2hhbmdlOnMuZnVuYy5pc1JlcXVpcmVkLGdldFN1Z2dlc3RlZEl0ZW1zOnMuZnVuYy5pc1JlcXVpcmVkLGl0ZW1Ub0xhYmVsOnMuZnVuYyxpdGVtVG9TdHJpbmc6cy5mdW5jLmlzUmVxdWlyZWQsaXRlbVRvQXZhdGFyOnMuZnVuYyxpdGVtVG9Qb3BvdmVyOnMuZnVuYyxmdWxsV2lkdGg6cy5ib29sLGVycm9yOnMuYm9vbCxsYWJlbDpzLnN0cmluZyxmZXRjaERlbGF5OnMubnVtYmVyLFN1Z2dlc3Rpb25Db21wb25lbnQ6cy5hbnksRXJyb3JDb21wb25lbnQ6cy5hbnksY2hpcENvbG9yOnRlLmgsdXNlR2xvYmFsQ2FjaGU6cy5zdHJpbmcsY2xhc3NlczpzLm9iamVjdCxkaXNhYmxlZDpzLmJvb2wsY2xlYXJJbnB1dE9uQmx1cjpzLmJvb2wsdmFyaWFudDpzLnN0cmluZyxoZWxwZXJUZXh0OnMubm9kZSxyZXF1aXJlZDpzLmJvb2wsbmFtZTpzLnN0cmluZyxtYXhEcm9wZG93bkhlaWdodDpzLm51bWJlcn07dC5hPU9iamVjdChxLndpdGhTdHlsZXMpKGZ1bmN0aW9uKGUpe3JldHVybntwaWNrZXJDaGlwOnttYXJnaW5SaWdodDplLnNwYWNpbmcudW5pdCpVZSxtYXJnaW5Ub3A6ZS5zcGFjaW5nLnVuaXQqamV9fX0pKFhlKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0JiZuKGUucHJvdG90eXBlLHQpLHImJm4oZSxyKSxlfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMjkpLG89big0NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIXR8fFwib2JqZWN0XCIhPT1yKHQpJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0P28oZSk6dH19LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZS5leHBvcnRzPW49T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sbih0KX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMzYwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJnIoZSx0KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1mdW5jdGlvbigpe307ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCxcImdcIixmdW5jdGlvbigpe3JldHVybiBvfSksbi5kKHQsXCJmXCIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pLG4uZCh0LFwiZVwiLGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSxuLmQodCxcImNcIixmdW5jdGlvbigpe3JldHVybiBsfSksbi5kKHQsXCJhXCIsZnVuY3Rpb24oKXtyZXR1cm4gc30pLG4uZCh0LFwiYlwiLGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSxuLmQodCxcImRcIixmdW5jdGlvbigpe3JldHVybiBjfSksbi5kKHQsXCJpXCIsZnVuY3Rpb24oKXtyZXR1cm4gZH0pLG4uZCh0LFwiaFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHB9KTt2YXIgcj1uKDEpLG89ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcn0sYT1mdW5jdGlvbihlKXtyZXR1cm4gOD09PWUua2V5Q29kZX07ZnVuY3Rpb24gaShlKXtpZihlLmxlbmd0aClyZXR1cm4gZVtlLmxlbmd0aC0xXX1mdW5jdGlvbiBsKGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LG4pe3RyeXt0KGUoKSl9Y2F0Y2goZSl7bihlKX19KX12YXIgcz1TeW1ib2woXCJsb2FkaW5nXCIpLHU9U3ltYm9sKFwibm90IGVub3VnaCBjaGFyYWN0ZXJzXCIpO2Z1bmN0aW9uIGMoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtpZihlPT09dSlyZXR1cm4hMDt0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN1Z2dlc3Rpb25zIHJldHVybmVkIC0gZXhwZWN0ZWQgYW4gYXJyYXksIGJ1dCBpbnN0ZWFkIGdvdCBcIi5jb25jYXQoZSkpfXZhciBkPU9iamVjdChyLm9uZU9mVHlwZSkoW3IuYXJyYXksT2JqZWN0KHIuaW5zdGFuY2VPZikoRXJyb3IpLE9iamVjdChyLm9uZU9mKShbcyx1XSldKSxwPU9iamVjdChyLm9uZU9mKShbXCJkZWZhdWx0XCIsXCJwcmltYXJ5XCIsXCJzZWNvbmRhcnlcIl0pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImNyZWF0ZUdlbmVyYXRlQ2xhc3NOYW1lXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImNyZWF0ZU11aVRoZW1lXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImpzc1ByZXNldFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJNdWlUaGVtZVByb3ZpZGVyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImNyZWF0ZVN0eWxlc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJ3aXRoU3R5bGVzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHUuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIndpdGhUaGVtZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBjLmRlZmF1bHR9fSk7dmFyIG89cihuKDEyNykpLGE9cihuKDY3KSksaT1yKG4oMTIwKSksbD1yKG4oNDgyKSkscz1yKG4oNDg1KSksdT1yKG4oOCkpLGM9cihuKDg2KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8udGVzdChcIm51bWJlclwiPT10eXBlb2YgZT9yKGUpOmUuY2hhckF0KDApKX07dmFyIHI9U3RyaW5nLmZyb21DaGFyQ29kZSxvPS9cXHMvfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNhcGl0YWxpemU9ZnVuY3Rpb24oZSl7MDtyZXR1cm4gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpfSx0LmNvbnRhaW5zPWEsdC5maW5kSW5kZXg9aSx0LmZpbmQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1pKGUsdCk7cmV0dXJuIG4+LTE/ZVtuXTp2b2lkIDB9LHQuY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PXQ/ZTpmdW5jdGlvbigpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4pLG89MDtvPG47bysrKXJbb109YXJndW1lbnRzW29dO2UuYXBwbHkodGhpcyxyKSx0LmFwcGx5KHRoaXMscil9fSxmdW5jdGlvbigpe30pfTt2YXIgbz1yKG4oMjkpKTtyKG4oMTcpKTtmdW5jdGlvbiBhKGUsdCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmV2ZXJ5KGZ1bmN0aW9uKG4pe3JldHVybiBlLmhhc093blByb3BlcnR5KG4pJiZlW25dPT09dFtuXX0pfWZ1bmN0aW9uIGkoZSx0KXtmb3IodmFyIG49KDAsby5kZWZhdWx0KSh0KSxyPTA7cjxlLmxlbmd0aDtyKz0xKXtpZihcImZ1bmN0aW9uXCI9PT1uJiYhMD09ISF0KGVbcl0scixlKSlyZXR1cm4gcjtpZihcIm9iamVjdFwiPT09biYmYShlW3JdLHQpKXJldHVybiByO2lmKC0xIT09W1wic3RyaW5nXCIsXCJudW1iZXJcIixcImJvb2xlYW5cIl0uaW5kZXhPZihuKSlyZXR1cm4gZS5pbmRleE9mKHQpfXJldHVybi0xfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiOyFmdW5jdGlvbiBlKCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyYmXCJmdW5jdGlvblwiPT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKXRyeXtfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoZSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX19KCksZS5leHBvcnRzPW4oMjcyKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmb3IodmFyIGU9e30sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtmb3IodmFyIG8gaW4gciluLmNhbGwocixvKSYmKGVbb109cltvXSl9cmV0dXJuIGV9O3ZhciBuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHl9LGZ1bmN0aW9uKGUsdCl7KHQ9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL15cXHMqfFxccyokL2csXCJcIil9KS5sZWZ0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL15cXHMqLyxcIlwiKX0sdC5yaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9cXHMqJC8sXCJcIil9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGwuZGVmYXVsdC5Db25zdW1lcixudWxsLGZ1bmN0aW9uKG4pe3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChlLCgwLG8uZGVmYXVsdCkoe211aUZvcm1Db250cm9sOm59LHQpKX0pfTswO3JldHVybigwLGkuZGVmYXVsdCkodCxlKSx0fTt2YXIgbz1yKG4oNCkpLGE9cihuKDApKSxpPXIobig2MykpLGw9cihuKDczKSk7big3KX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUub3duZXJEb2N1bWVudHx8ZG9jdW1lbnR9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQpe3ZhciBuO249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKTt0cnl7bj1ufHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKGUpe1wib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJihuPXdpbmRvdyl9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt9fSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuKG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIHIodCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT09bihTeW1ib2wuaXRlcmF0b3IpP2UuZXhwb3J0cz1yPWZ1bmN0aW9uKGUpe3JldHVybiBuKGUpfTplLmV4cG9ydHM9cj1mdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOm4oZSl9LHIodCl9ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxvPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxpPXUobigyOCkpLGw9dShuKDY0KSkscz11KG4oNDYpKTtmdW5jdGlvbiB1KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuLHIpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy50eXBlPVwic3R5bGVcIix0aGlzLmlzUHJvY2Vzc2VkPSExO3ZhciBvPXIuc2hlZXQsYT1yLlJlbmRlcmVyLGk9ci5zZWxlY3Rvcjt0aGlzLmtleT10LHRoaXMub3B0aW9ucz1yLHRoaXMuc3R5bGU9bixpJiYodGhpcy5zZWxlY3RvclRleHQ9aSksdGhpcy5yZW5kZXJlcj1vP28ucmVuZGVyZXI6bmV3IGF9cmV0dXJuIGEoZSxbe2tleTpcInByb3BcIix2YWx1ZTpmdW5jdGlvbihlLHQpe2lmKHZvaWQgMD09PXQpcmV0dXJuIHRoaXMuc3R5bGVbZV07aWYodGhpcy5zdHlsZVtlXT09PXQpcmV0dXJuIHRoaXM7dmFyIG49bnVsbD09KHQ9dGhpcy5vcHRpb25zLmpzcy5wbHVnaW5zLm9uQ2hhbmdlVmFsdWUodCxlLHRoaXMpKXx8ITE9PT10LHI9ZSBpbiB0aGlzLnN0eWxlO2lmKG4mJiFyKXJldHVybiB0aGlzO3ZhciBvPW4mJnI7aWYobz9kZWxldGUgdGhpcy5zdHlsZVtlXTp0aGlzLnN0eWxlW2VdPXQsdGhpcy5yZW5kZXJhYmxlKXJldHVybiBvP3RoaXMucmVuZGVyZXIucmVtb3ZlUHJvcGVydHkodGhpcy5yZW5kZXJhYmxlLGUpOnRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5yZW5kZXJhYmxlLGUsdCksdGhpczt2YXIgYT10aGlzLm9wdGlvbnMuc2hlZXQ7cmV0dXJuIGEmJmEuYXR0YWNoZWQmJigwLGkuZGVmYXVsdCkoITEsJ1J1bGUgaXMgbm90IGxpbmtlZC4gTWlzc2luZyBzaGVldCBvcHRpb24gXCJsaW5rOiB0cnVlXCIuJyksdGhpc319LHtrZXk6XCJhcHBseVRvXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50b0pTT04oKTtmb3IodmFyIG4gaW4gdCl0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KGUsbix0W25dKTtyZXR1cm4gdGhpc319LHtrZXk6XCJ0b0pTT05cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXt9O2Zvcih2YXIgdCBpbiB0aGlzLnN0eWxlKXt2YXIgbj10aGlzLnN0eWxlW3RdO1wib2JqZWN0XCIhPT0odm9pZCAwPT09bj9cInVuZGVmaW5lZFwiOm8obikpP2VbdF09bjpBcnJheS5pc0FycmF5KG4pJiYoZVt0XT0oMCxzLmRlZmF1bHQpKG4pKX1yZXR1cm4gZX19LHtrZXk6XCJ0b1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucy5zaGVldCxuPSEhdCYmdC5vcHRpb25zLmxpbms/cih7fSxlLHthbGxvd0VtcHR5OiEwfSk6ZTtyZXR1cm4oMCxsLmRlZmF1bHQpKHRoaXMuc2VsZWN0b3IsdGhpcy5zdHlsZSxuKX19LHtrZXk6XCJzZWxlY3RvclwiLHNldDpmdW5jdGlvbihlKXtpZihlIT09dGhpcy5zZWxlY3RvclRleHQmJih0aGlzLnNlbGVjdG9yVGV4dD1lLHRoaXMucmVuZGVyYWJsZSYmIXRoaXMucmVuZGVyZXIuc2V0U2VsZWN0b3IodGhpcy5yZW5kZXJhYmxlLGUpJiZ0aGlzLnJlbmRlcmFibGUpKXt2YXIgdD10aGlzLnJlbmRlcmVyLnJlcGxhY2VSdWxlKHRoaXMucmVuZGVyYWJsZSx0aGlzKTt0JiYodGhpcy5yZW5kZXJhYmxlPXQpfX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0b3JUZXh0fX1dKSxlfSgpO3QuZGVmYXVsdD1jfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNvbnZlcnRIZXhUb1JHQj1hLHQucmdiVG9IZXg9ZnVuY3Rpb24oZSl7aWYoMD09PWUuaW5kZXhPZihcIiNcIikpcmV0dXJuIGU7dmFyIHQ9aShlKS52YWx1ZXM7cmV0dXJuIHQ9dC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT0odD1lLnRvU3RyaW5nKDE2KSkubGVuZ3RoP1wiMFwiLmNvbmNhdCh0KTp0O3ZhciB0fSksXCIjXCIuY29uY2F0KHQuam9pbihcIlwiKSl9LHQuZGVjb21wb3NlQ29sb3I9aSx0LnJlY29tcG9zZUNvbG9yPWwsdC5nZXRDb250cmFzdFJhdGlvPWZ1bmN0aW9uKGUsdCl7dmFyIG49cyhlKSxyPXModCk7cmV0dXJuKE1hdGgubWF4KG4scikrLjA1KS8oTWF0aC5taW4obixyKSsuMDUpfSx0LmdldEx1bWluYW5jZT1zLHQuZW1waGFzaXplPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTouMTU7cmV0dXJuIHMoZSk+LjU/dShlLHQpOmMoZSx0KX0sdC5mYWRlPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuIGU7ZT1pKGUpLHQ9byh0KSwoXCJyZ2JcIj09PWUudHlwZXx8XCJoc2xcIj09PWUudHlwZSkmJihlLnR5cGUrPVwiYVwiKTtyZXR1cm4gZS52YWx1ZXNbM109dCxsKGUpfSx0LmRhcmtlbj11LHQubGlnaHRlbj1jO3IobigxNykpO2Z1bmN0aW9uIG8oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTtyZXR1cm4gZTx0P3Q6ZT5uP246ZX1mdW5jdGlvbiBhKGUpe2U9ZS5zdWJzdHIoMSk7dmFyIHQ9bmV3IFJlZ0V4cChcIi57MSxcIi5jb25jYXQoZS5sZW5ndGgvMyxcIn1cIiksXCJnXCIpLG49ZS5tYXRjaCh0KTtyZXR1cm4gbiYmMT09PW5bMF0ubGVuZ3RoJiYobj1uLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZStlfSkpLG4/XCJyZ2IoXCIuY29uY2F0KG4ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUludChlLDE2KX0pLmpvaW4oXCIsIFwiKSxcIilcIik6XCJcIn1mdW5jdGlvbiBpKGUpe2lmKFwiI1wiPT09ZS5jaGFyQXQoMCkpcmV0dXJuIGkoYShlKSk7dmFyIHQ9ZS5pbmRleE9mKFwiKFwiKSxuPWUuc3Vic3RyaW5nKDAsdCkscj1lLnN1YnN0cmluZyh0KzEsZS5sZW5ndGgtMSkuc3BsaXQoXCIsXCIpO3JldHVybnt0eXBlOm4sdmFsdWVzOnI9ci5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlRmxvYXQoZSl9KX19ZnVuY3Rpb24gbChlKXt2YXIgdD1lLnR5cGUsbj1lLnZhbHVlcztyZXR1cm4tMSE9PXQuaW5kZXhPZihcInJnYlwiKSYmKG49bi5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdDwzP3BhcnNlSW50KGUsMTApOmV9KSksLTEhPT10LmluZGV4T2YoXCJoc2xcIikmJihuWzFdPVwiXCIuY29uY2F0KG5bMV0sXCIlXCIpLG5bMl09XCJcIi5jb25jYXQoblsyXSxcIiVcIikpLFwiXCIuY29uY2F0KGUudHlwZSxcIihcIikuY29uY2F0KG4uam9pbihcIiwgXCIpLFwiKVwiKX1mdW5jdGlvbiBzKGUpe3ZhciB0PWkoZSk7aWYoLTEhPT10LnR5cGUuaW5kZXhPZihcInJnYlwiKSl7dmFyIG49dC52YWx1ZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybihlLz0yNTUpPD0uMDM5Mjg/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfSk7cmV0dXJuIE51bWJlcigoLjIxMjYqblswXSsuNzE1MipuWzFdKy4wNzIyKm5bMl0pLnRvRml4ZWQoMykpfXJldHVybiB0LnZhbHVlc1syXS8xMDB9ZnVuY3Rpb24gdShlLHQpe2lmKCFlKXJldHVybiBlO2lmKGU9aShlKSx0PW8odCksLTEhPT1lLnR5cGUuaW5kZXhPZihcImhzbFwiKSllLnZhbHVlc1syXSo9MS10O2Vsc2UgaWYoLTEhPT1lLnR5cGUuaW5kZXhPZihcInJnYlwiKSlmb3IodmFyIG49MDtuPDM7bis9MSllLnZhbHVlc1tuXSo9MS10O3JldHVybiBsKGUpfWZ1bmN0aW9uIGMoZSx0KXtpZighZSlyZXR1cm4gZTtpZihlPWkoZSksdD1vKHQpLC0xIT09ZS50eXBlLmluZGV4T2YoXCJoc2xcIikpZS52YWx1ZXNbMl0rPSgxMDAtZS52YWx1ZXNbMl0pKnQ7ZWxzZSBpZigtMSE9PWUudHlwZS5pbmRleE9mKFwicmdiXCIpKWZvcih2YXIgbj0wO248MztuKz0xKWUudmFsdWVzW25dKz0oMjU1LWUudmFsdWVzW25dKSp0O3JldHVybiBsKGUpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jbG9uZUVsZW1lbnRXaXRoQ2xhc3NOYW1lPWksdC5jbG9uZUNoaWxkcmVuV2l0aENsYXNzTmFtZT1mdW5jdGlvbihlLHQpe3JldHVybiBvLmRlZmF1bHQuQ2hpbGRyZW4ubWFwKGUsZnVuY3Rpb24oZSl7cmV0dXJuIG8uZGVmYXVsdC5pc1ZhbGlkRWxlbWVudChlKSYmaShlLHQpfSl9LHQuaXNNdWlFbGVtZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8uZGVmYXVsdC5pc1ZhbGlkRWxlbWVudChlKSYmLTEhPT10LmluZGV4T2YoZS50eXBlLm11aU5hbWUpfSx0LnNldFJlZj1mdW5jdGlvbihlLHQpe1wiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZSh0KTplJiYoZS5jdXJyZW50PXQpfTt2YXIgbz1yKG4oMCkpLGE9cihuKDYpKTtmdW5jdGlvbiBpKGUsdCl7cmV0dXJuIG8uZGVmYXVsdC5jbG9uZUVsZW1lbnQoZSx7Y2xhc3NOYW1lOigwLGEuZGVmYXVsdCkoZS5wcm9wcy5jbGFzc05hbWUsdCl9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wcm9wcyxuPWUuc3RhdGVzLHI9ZS5tdWlGb3JtQ29udHJvbDtyZXR1cm4gbi5yZWR1Y2UoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZVtuXT10W25dLHImJnZvaWQgMD09PXRbbl0mJihlW25dPXJbbl0pLGV9LHt9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmM9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7a2V5d29yZDovXFxiKD86X0FsaWduYXN8X0FsaWdub2Z8X0F0b21pY3xfQm9vbHxfQ29tcGxleHxfR2VuZXJpY3xfSW1hZ2luYXJ5fF9Ob3JldHVybnxfU3RhdGljX2Fzc2VydHxfVGhyZWFkX2xvY2FsfGFzbXx0eXBlb2Z8aW5saW5lfGF1dG98YnJlYWt8Y2FzZXxjaGFyfGNvbnN0fGNvbnRpbnVlfGRlZmF1bHR8ZG98ZG91YmxlfGVsc2V8ZW51bXxleHRlcm58ZmxvYXR8Zm9yfGdvdG98aWZ8aW50fGxvbmd8cmVnaXN0ZXJ8cmV0dXJufHNob3J0fHNpZ25lZHxzaXplb2Z8c3RhdGljfHN0cnVjdHxzd2l0Y2h8dHlwZWRlZnx1bmlvbnx1bnNpZ25lZHx2b2lkfHZvbGF0aWxlfHdoaWxlKVxcYi8sb3BlcmF0b3I6Ly1bPi1dP3xcXCtcXCs/fCE9P3w8PD89P3w+Pj89P3w9PT98JiY/fFxcfFxcfD98W35eJT8qXFwvXS8sbnVtYmVyOi8oPzpcXGIweFtcXGRhLWZdK3woPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzplWystXT9cXGQrKT8pW2Z1bF0qL2l9KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJjXCIsXCJzdHJpbmdcIix7bWFjcm86e3BhdHRlcm46LyheXFxzKikjXFxzKlthLXpdKyg/OlteXFxyXFxuXFxcXF18XFxcXCg/OlxcclxcbnxbXFxzXFxTXSkpKi9pbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwicHJvcGVydHlcIixpbnNpZGU6e3N0cmluZzp7cGF0dGVybjovKCNcXHMqaW5jbHVkZVxccyopKD86PC4rPz58KFwifCcpKD86XFxcXD8uKSs/XFwyKS8sbG9va2JlaGluZDohMH0sZGlyZWN0aXZlOntwYXR0ZXJuOi8oI1xccyopXFxiKD86ZGVmaW5lfGRlZmluZWR8ZWxpZnxlbHNlfGVuZGlmfGVycm9yfGlmZGVmfGlmbmRlZnxpZnxpbXBvcnR8aW5jbHVkZXxsaW5lfHByYWdtYXx1bmRlZnx1c2luZylcXGIvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJrZXl3b3JkXCJ9fX0sY29uc3RhbnQ6L1xcYig/Ol9fRklMRV9ffF9fTElORV9ffF9fREFURV9ffF9fVElNRV9ffF9fVElNRVNUQU1QX198X19mdW5jX198RU9GfE5VTEx8U0VFS19DVVJ8U0VFS19FTkR8U0VFS19TRVR8c3RkaW58c3Rkb3V0fHN0ZGVycilcXGIvfSksZGVsZXRlIGUubGFuZ3VhZ2VzLmNbXCJjbGFzcy1uYW1lXCJdLGRlbGV0ZSBlLmxhbmd1YWdlcy5jLmJvb2xlYW59ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImNcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksYT11KG4oNDcpKSxpPXUobigxMTcpKSxsPXUobigzMCkpLHM9dShuKDM2NikpO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgbj10aGlzOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy5tYXA9e30sdGhpcy5yYXc9e30sdGhpcy5pbmRleD1bXSx0aGlzLnVwZGF0ZT1mdW5jdGlvbihlLHQpe3ZhciByPW4ub3B0aW9ucyxvPXIuanNzLnBsdWdpbnMsYT1yLnNoZWV0O2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKW8ub25VcGRhdGUodCxuLmdldChlKSxhKTtlbHNlIGZvcih2YXIgaT0wO2k8bi5pbmRleC5sZW5ndGg7aSsrKW8ub25VcGRhdGUoZSxuLmluZGV4W2ldLGEpfSx0aGlzLm9wdGlvbnM9dCx0aGlzLmNsYXNzZXM9dC5jbGFzc2VzfXJldHVybiBvKGUsW3trZXk6XCJhZGRcIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7dmFyIG89dGhpcy5vcHRpb25zLGk9by5wYXJlbnQsdT1vLnNoZWV0LGM9by5qc3MsZD1vLlJlbmRlcmVyLHA9by5nZW5lcmF0ZUNsYXNzTmFtZTshKG49cih7Y2xhc3Nlczp0aGlzLmNsYXNzZXMscGFyZW50Omksc2hlZXQ6dSxqc3M6YyxSZW5kZXJlcjpkLGdlbmVyYXRlQ2xhc3NOYW1lOnB9LG4pKS5zZWxlY3RvciYmdGhpcy5jbGFzc2VzW2VdJiYobi5zZWxlY3Rvcj1cIi5cIisoMCxzLmRlZmF1bHQpKHRoaXMuY2xhc3Nlc1tlXSkpLHRoaXMucmF3W2VdPXQ7dmFyIGY9KDAsYS5kZWZhdWx0KShlLHQsbiksbT12b2lkIDA7IW4uc2VsZWN0b3ImJmYgaW5zdGFuY2VvZiBsLmRlZmF1bHQmJihtPXAoZix1KSxmLnNlbGVjdG9yPVwiLlwiKygwLHMuZGVmYXVsdCkobSkpLHRoaXMucmVnaXN0ZXIoZixtKTt2YXIgZz12b2lkIDA9PT1uLmluZGV4P3RoaXMuaW5kZXgubGVuZ3RoOm4uaW5kZXg7cmV0dXJuIHRoaXMuaW5kZXguc3BsaWNlKGcsMCxmKSxmfX0se2tleTpcImdldFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm1hcFtlXX19LHtrZXk6XCJyZW1vdmVcIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnVucmVnaXN0ZXIoZSksdGhpcy5pbmRleC5zcGxpY2UodGhpcy5pbmRleE9mKGUpLDEpfX0se2tleTpcImluZGV4T2ZcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbmRleC5pbmRleE9mKGUpfX0se2tleTpcInByb2Nlc3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy5qc3MucGx1Z2luczt0aGlzLmluZGV4LnNsaWNlKDApLmZvckVhY2goZS5vblByb2Nlc3NSdWxlLGUpfX0se2tleTpcInJlZ2lzdGVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLm1hcFtlLmtleV09ZSxlIGluc3RhbmNlb2YgbC5kZWZhdWx0JiYodGhpcy5tYXBbZS5zZWxlY3Rvcl09ZSx0JiYodGhpcy5jbGFzc2VzW2Uua2V5XT10KSl9fSx7a2V5OlwidW5yZWdpc3RlclwiLHZhbHVlOmZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLm1hcFtlLmtleV0sZSBpbnN0YW5jZW9mIGwuZGVmYXVsdCYmKGRlbGV0ZSB0aGlzLm1hcFtlLnNlbGVjdG9yXSxkZWxldGUgdGhpcy5jbGFzc2VzW2Uua2V5XSl9fSx7a2V5OlwibGlua1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLm9wdGlvbnMuc2hlZXQucmVuZGVyZXIuZ2V0VW5lc2NhcGVkS2V5c01hcCh0aGlzLmluZGV4KSxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl0sbz10aGlzLm9wdGlvbnMuc2hlZXQucmVuZGVyZXIuZ2V0S2V5KHIpO3Rbb10mJihvPXRbb10pO3ZhciBhPXRoaXMubWFwW29dO2EmJigwLGkuZGVmYXVsdCkoYSxyKX19fSx7a2V5OlwidG9TdHJpbmdcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9XCJcIixuPXRoaXMub3B0aW9ucy5zaGVldCxyPSEhbiYmbi5vcHRpb25zLmxpbmssbz0wO288dGhpcy5pbmRleC5sZW5ndGg7bysrKXt2YXIgYT10aGlzLmluZGV4W29dLnRvU3RyaW5nKGUpOyhhfHxyKSYmKHQmJih0Kz1cIlxcblwiKSx0Kz1hKX1yZXR1cm4gdH19XSksZX0oKTt0LmRlZmF1bHQ9Y30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDY1KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ2NikpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big5NCksbz1uKDE1OSksYT1uKDE2MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LG4saT1lLnNwYWNlLGw9ZS5tdXN0VXNlUHJvcGVydHl8fFtdLHM9ZS5hdHRyaWJ1dGVzfHx7fSx1PWUucHJvcGVydGllcyxjPWUudHJhbnNmb3JtLGQ9e30scD17fTtmb3IodCBpbiB1KW49bmV3IGEodCxjKHMsdCksdVt0XSxpKSwtMSE9PWwuaW5kZXhPZih0KSYmKG4ubXVzdFVzZVByb3BlcnR5PSEwKSxkW3RdPW4scFtyKHQpXT10LHBbcihuLmF0dHJpYnV0ZSldPXQ7cmV0dXJuIG5ldyBvKGQscCxpKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bigzNTkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImNvbW1vblwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJyZWRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicGlua1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJwdXJwbGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVlcFB1cnBsZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJpbmRpZ29cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdS5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiYmx1ZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBjLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJsaWdodEJsdWVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiY3lhblwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBwLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJ0ZWFsXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImdyZWVuXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0uZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImxpZ2h0R3JlZW5cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZy5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwibGltZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBoLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJ5ZWxsb3dcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYi5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiYW1iZXJcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geS5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwib3JhbmdlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZXBPcmFuZ2VcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUy5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiYnJvd25cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRS5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZ3JleVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB4LmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJibHVlR3JleVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB3LmRlZmF1bHR9fSk7dmFyIG89cihuKDEyNikpLGE9cihuKDEyNSkpLGk9cihuKDEyMykpLGw9cihuKDY5NCkpLHM9cihuKDY5NSkpLHU9cihuKDEyMikpLGM9cihuKDY5NikpLGQ9cihuKDY5NykpLHA9cihuKDY5OCkpLGY9cihuKDY5OSkpLG09cihuKDcwMCkpLGc9cihuKDcwMSkpLGg9cihuKDcwMikpLGI9cihuKDcwMykpLHk9cihuKDcwNCkpLHY9cihuKDcwNSkpLFM9cihuKDcwNikpLEU9cihuKDcwNykpLHg9cihuKDEyNCkpLHc9cihuKDcwOCkpfSxmdW5jdGlvbihlKXtlLmV4cG9ydHM9e25hbWU6XCJtYXRlcmlhbC1tdWx0aS1waWNrZXJcIix2ZXJzaW9uOlwiMS41LjBcIixkZXNjcmlwdGlvbjpcIkEgdHlwZWFoZWFkIG11bHRpc2VsZWN0IGNvbXBvbmVudCBmb3IgUmVhY3QgYW5kIE1hdGVyaWFsIFVJXCIsbWFpbjpcImxpYi9pbmRleC5qc1wiLHJlcG9zaXRvcnk6e3R5cGU6XCJnaXRcIix1cmw6XCJodHRwczovL2dpdGh1Yi5jb20vYXRyb3Bvcy10ZWNoL21hdGVyaWFsLW11bHRpLXBpY2tlclwifSxob21lcGFnZTpcImh0dHBzOi8vYXRyb3Bvcy10ZWNoLmdpdGh1Yi5pby9tYXRlcmlhbC1tdWx0aS1waWNrZXIvaW5kZXguaHRtbFwiLGJ1Z3M6e3VybDpcImh0dHBzOi8vZ2l0aHViLmNvbS9hdHJvcG9zLXRlY2gvbWF0ZXJpYWwtbXVsdGktcGlja2VyL2lzc3Vlc1wifSxzY3JpcHRzOnt0ZXN0OlwiamVzdCAtLXdhdGNoIC0tY292ZXJhZ2UgLS1uby1jYWNoZSAtLXJ1bkluQmFuZFwiLFwidGVzdC1jaVwiOlwiamVzdCAtLWNvdmVyYWdlIC0tY2kgLS1uby1jYWNoZSAtLXJ1bkluQmFuZCAtLXJlcG9ydGVycz1qZXN0LWp1bml0ICYmIGNvZGVjb3ZcIixcImRldi1kb2NzXCI6XCJ3ZWJwYWNrLWRldi1zZXJ2ZXIgLS1jb25maWcgd2VicGFjay5jb25maWcuanMgLS1ob3QgLS1pbmxpbmUgLS1jb2xvciAtLXByb2dyZXNzIC0tb3BlbiAtLW1vZGUgZGV2ZWxvcG1lbnRcIix0cmFuc3BpbGU6J2JhYmVsIHNyYyAtLW91dC1kaXIgbGliIC0taWdub3JlIFwic3JjLyoqLyouc3BlYy5qc1wiJyxcImJ1aWxkLWRvY3NcIjpcInJpbXJhZiAuL2RvY3MgJiYgd2VicGFjayAtLWNvbmZpZyB3ZWJwYWNrLmNvbmZpZy5qcyAtLW1vZGU9cHJvZHVjdGlvbiAmJiBjb3B5ZmlsZXMgLXUgMSAuL3B1YmxpYy8qIC4vZG9jc1wiLGxpbnQ6XCJlc2xpbnQgc3JjXCIsc3RhcnQ6XCJucG0gcnVuIGRldi1kb2NzXCJ9LGtleXdvcmRzOltcInJlYWN0LWNvbXBvbmVudFwiLFwicmVhY3RcIixcImRvd25zaGlmdFwiLFwicGlja2VyXCIsXCJtYXRlcmlhbC11aVwiXSxhdXRob3I6XCJEdW5jYW4gVGhhY2tlciAoZHVuY2FuLnRoYWNrZXJAYXRyb3Bvcy5jby51aylcIixsaWNlbnNlOlwiTUlUXCIsZGVwZW5kZW5jaWVzOntkb3duc2hpZnQ6XCJeMy4yLjZcIixcInJlYWN0LWRlYm91bmNlLXJlbmRlclwiOlwiXjUuMC4wXCJ9LGRldkRlcGVuZGVuY2llczp7XCJAYmFiZWwvY2xpXCI6XCJeNy4yLjNcIixcIkBiYWJlbC9jb3JlXCI6XCJeNy4zLjRcIixcIkBiYWJlbC9wcmVzZXQtZW52XCI6XCJeNy4zLjRcIixcIkBiYWJlbC9wcmVzZXQtcmVhY3RcIjpcIl43LjAuMFwiLFwiQGJhYmVsL3J1bnRpbWVcIjpcIl43LjMuNFwiLFwiQG1hdGVyaWFsLXVpL2NvcmVcIjpcIl4zLjkuMlwiLFwiYmFiZWwtZXNsaW50XCI6XCJeMTAuMC4xXCIsXCJiYWJlbC1sb2FkZXJcIjpcIl44LjAuNVwiLGNvZGVjb3Y6XCJeMy4yLjBcIixjb3B5ZmlsZXM6XCJeMi4xLjBcIixcImRlbW8tc291cmNlLWxvYWRlclwiOlwiXjAuMS4wXCIsZW56eW1lOlwiXjMuOS4wXCIsXCJlbnp5bWUtYWRhcHRlci1yZWFjdC0xNlwiOlwiXjEuMTAuMFwiLGVzbGludDpcIl41LjE0LjFcIixcImVzbGludC1wbHVnaW4taW1wb3J0XCI6XCJeMi4xNi4wXCIsXCJlc2xpbnQtcGx1Z2luLWplc3RcIjpcIl4yMi4zLjBcIixcImVzbGludC1wbHVnaW4tcHJvbWlzZVwiOlwiXjQuMC4xXCIsXCJlc2xpbnQtcGx1Z2luLXJlYWN0XCI6XCJeNy4xMi40XCIsXCJmaWxlLWxvYWRlclwiOlwiXjMuMC4xXCIsamVzdDpcIl4yNC4xLjBcIixcImplc3QtZW52aXJvbm1lbnQtZW56eW1lXCI6XCJeNy4wLjFcIixcImplc3QtZW56eW1lXCI6XCJeNy4wLjFcIixcImplc3QtanVuaXRcIjpcIl42LjMuMFwiLFwicHJvcC10eXBlc1wiOlwiXjE1LjcuMlwiLHJlYWN0OlwiXjE2LjguM1wiLFwicmVhY3QtY3VycnktY29tcG9uZW50XCI6XCJeMS4xLjBcIixcInJlYWN0LWRvbVwiOlwiXjE2LjguM1wiLFwicmVhY3QtaGlnaGxpZ2h0LXdvcmRzXCI6XCJeMC4xNi4wXCIsXCJyZWFjdC1qc3NcIjpcIl44LjYuMVwiLFwicmVhY3QtbWFya2Rvd25cIjpcIl40LjAuNlwiLFwicmVhY3Qtc3ludGF4LWhpZ2hsaWdodGVyXCI6XCJeMTAuMS4zXCIscmltcmFmOlwiXjIuNi4zXCIsd2VicGFjazpcIl40LjI5LjVcIixcIndlYnBhY2stY2xpXCI6XCJeMy4yLjNcIixcIndlYnBhY2stZGV2LXNlcnZlclwiOlwiXjMuMi4xXCJ9LHBlZXJEZXBlbmRlbmNpZXM6e3JlYWN0OlwiXjE2LjBcIixcIkBtYXRlcmlhbC11aS9jb3JlXCI6XCJeMy4wXCJ9LGplc3Q6e3NldHVwRmlsZXNBZnRlckVudjpbXCJqZXN0LWVuenltZVwiXSx0ZXN0RW52aXJvbm1lbnQ6XCJlbnp5bWVcIix0ZXN0RW52aXJvbm1lbnRPcHRpb25zOntlbnp5bWVBZGFwdGVyOlwicmVhY3QxNlwifSxjb2xsZWN0Q292ZXJhZ2VGcm9tOltcInNyYy8qKi8qLmpzXCJdLHdhdGNoUGF0aElnbm9yZVBhdHRlcm5zOltcIi9kb2NzcmMvXCJdfX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDI5Niksbz1uKDI5NyksYT1uKDQzKSxpPW4oMjk4KSxsPW4oMjk5KSxzPW4oMzAwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixhLGk9e307dHx8KHQ9e30pO2ZvcihhIGluIHApbj10W2FdLGlbYV09bnVsbD09bj9wW2FdOm47KGkucG9zaXRpb24uaW5kZW50fHxpLnBvc2l0aW9uLnN0YXJ0KSYmKGkuaW5kZW50PWkucG9zaXRpb24uaW5kZW50fHxbXSxpLnBvc2l0aW9uPWkucG9zaXRpb24uc3RhcnQpO3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuLGEsaSxwLEEsQyxPLEksTixSLFAsTSxMLEQsRixCLGosVSx6LEg9dC5hZGRpdGlvbmFsLFc9dC5ub25UZXJtaW5hdGVkLEc9dC50ZXh0LFY9dC5yZWZlcmVuY2UsJD10Lndhcm5pbmcscT10LnRleHRDb250ZXh0LEs9dC5yZWZlcmVuY2VDb250ZXh0LFk9dC53YXJuaW5nQ29udGV4dCxYPXQucG9zaXRpb24sWj10LmluZGVudHx8W10sUT1lLmxlbmd0aCxKPTAsZWU9LTEsdGU9WC5jb2x1bW58fDEsbmU9WC5saW5lfHwxLHJlPVwiXCIsb2U9W107Qj1pZSgpLEk9JD9mdW5jdGlvbihlLHQpe3ZhciBuPWllKCk7bi5jb2x1bW4rPXQsbi5vZmZzZXQrPXQsJC5jYWxsKFksX1tlXSxuLGUpfTpkLEotLSxRKys7Zm9yKDsrK0o8UTspaWYoXCJcXG5cIj09PUEmJih0ZT1aW2VlXXx8MSksXCImXCIhPT0oQT1sZShKKSkpXCJcXG5cIj09PUEmJihuZSsrLGVlKyssdGU9MCksQT8ocmUrPUEsdGUrKyk6c2UoKTtlbHNle2lmKFwiXFx0XCI9PT0oTz1sZShKKzEpKXx8XCJcXG5cIj09PU98fFwiXFxmXCI9PT1PfHxcIiBcIj09PU98fFwiPFwiPT09T3x8XCImXCI9PT1PfHxcIlwiPT09T3x8SCYmTz09PUgpe3JlKz1BLHRlKys7Y29udGludWV9Zm9yKE09TD1KKzEsej1MLFwiI1wiIT09Tz9EPWY6KHo9KytNLFwieFwiPT09KE89bGUoeikpfHxcIlhcIj09PU8/KEQ9bSx6PSsrTSk6RD1nKSxuPVwiXCIsUD1cIlwiLHA9XCJcIixGPWJbRF0sei0tOysrejxRJiYoTz1sZSh6KSxGKE8pKTspcCs9TyxEPT09ZiYmdS5jYWxsKHIscCkmJihuPXAsUD1yW3BdKTsoaT1cIjtcIj09PWxlKHopKSYmKHorKywoYT1EPT09ZiYmcyhwKSkmJihuPXAsUD1hKSksVT0xK3otTCwoaXx8VykmJihwP0Q9PT1mPyhpJiYhUD9JKHgsMSk6KG4hPT1wJiYoej1NK24ubGVuZ3RoLFU9MSt6LU0saT0hMSksaXx8KE49bj95OlMsdC5hdHRyaWJ1dGU/XCI9XCI9PT0oTz1sZSh6KSk/KEkoTixVKSxQPW51bGwpOmwoTyk/UD1udWxsOkkoTixVKTpJKE4sVSkpKSxDPVApOihpfHxJKHYsVSksQz1wYXJzZUludChwLGhbRF0pLChhZT1DKT49NTUyOTYmJmFlPD01NzM0M3x8YWU+MTExNDExMT8oSShrLFUpLEM9XCLvv71cIik6QyBpbiBvPyhJKHcsVSksQz1vW0NdKTooUj1cIlwiLFQoQykmJkkodyxVKSxDPjY1NTM1JiYoUis9YygoQy09NjU1MzYpPj4+MTB8NTUyOTYpLEM9NTYzMjB8MTAyMyZDKSxDPVIrYyhDKSkpOkQhPT1mJiZJKEUsVSkpLEM/KHNlKCksQj1pZSgpLEo9ei0xLHRlKz16LUwrMSxvZS5wdXNoKEMpLChqPWllKCkpLm9mZnNldCsrLFYmJlYuY2FsbChLLEMse3N0YXJ0OkIsZW5kOmp9LGUuc2xpY2UoTC0xLHopKSxCPWopOihwPWUuc2xpY2UoTC0xLHopLHJlKz1wLHRlKz1wLmxlbmd0aCxKPXotMSl9dmFyIGFlO3JldHVybiBvZS5qb2luKFwiXCIpO2Z1bmN0aW9uIGllKCl7cmV0dXJue2xpbmU6bmUsY29sdW1uOnRlLG9mZnNldDpKKyhYLm9mZnNldHx8MCl9fWZ1bmN0aW9uIGxlKHQpe3JldHVybiBlLmNoYXJBdCh0KX1mdW5jdGlvbiBzZSgpe3JlJiYob2UucHVzaChyZSksRyYmRy5jYWxsKHEscmUse3N0YXJ0OkIsZW5kOmllKCl9KSxyZT1cIlwiKX19KGUsaSl9O3ZhciB1PXt9Lmhhc093blByb3BlcnR5LGM9U3RyaW5nLmZyb21DaGFyQ29kZSxkPUZ1bmN0aW9uLnByb3RvdHlwZSxwPXt3YXJuaW5nOm51bGwscmVmZXJlbmNlOm51bGwsdGV4dDpudWxsLHdhcm5pbmdDb250ZXh0Om51bGwscmVmZXJlbmNlQ29udGV4dDpudWxsLHRleHRDb250ZXh0Om51bGwscG9zaXRpb246e30sYWRkaXRpb25hbDpudWxsLGF0dHJpYnV0ZTohMSxub25UZXJtaW5hdGVkOiEwfSxmPVwibmFtZWRcIixtPVwiaGV4YWRlY2ltYWxcIixnPVwiZGVjaW1hbFwiLGg9e307aFttXT0xNixoW2ddPTEwO3ZhciBiPXt9O2JbZl09bCxiW2ddPWEsYlttXT1pO3ZhciB5PTEsdj0yLFM9MyxFPTQseD01LHc9NixrPTcsXz17fTtmdW5jdGlvbiBUKGUpe3JldHVybiBlPj0xJiZlPD04fHwxMT09PWV8fGU+PTEzJiZlPD0zMXx8ZT49MTI3JiZlPD0xNTl8fGU+PTY0OTc2JiZlPD02NTAwN3x8NjU1MzU9PSg2NTUzNSZlKXx8NjU1MzQ9PSg2NTUzNSZlKX1fW3ldPVwiTmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgbXVzdCBiZSB0ZXJtaW5hdGVkIGJ5IGEgc2VtaWNvbG9uXCIsX1t2XT1cIk51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgbXVzdCBiZSB0ZXJtaW5hdGVkIGJ5IGEgc2VtaWNvbG9uXCIsX1tTXT1cIk5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIGNhbm5vdCBiZSBlbXB0eVwiLF9bRV09XCJOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIGNhbm5vdCBiZSBlbXB0eVwiLF9beF09XCJOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIGtub3duXCIsX1t3XT1cIk51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIGRpc2FsbG93ZWRcIixfW2tdPVwiTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgb3V0c2lkZSB0aGUgcGVybWlzc2libGUgVW5pY29kZSByYW5nZVwifSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVwic3RyaW5nXCI9PXR5cGVvZiBlP2UuY2hhckNvZGVBdCgwKTplO3JldHVybiB0Pj00OCYmdDw9NTd9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWw7dmFyIHI9bigzMDcpLG89ci5DT05USU5VRSxhPXIuU0tJUCxpPXIuRVhJVDtmdW5jdGlvbiBsKGUsdCxuLG8pe1wiZnVuY3Rpb25cIj09dHlwZW9mIHQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIG4mJihvPW4sbj10LHQ9bnVsbCkscihlLHQsZnVuY3Rpb24oZSx0KXt2YXIgcj10W3QubGVuZ3RoLTFdLG89cj9yLmNoaWxkcmVuLmluZGV4T2YoZSk6bnVsbDtyZXR1cm4gbihlLG8scil9LG8pfWwuQ09OVElOVUU9byxsLlNLSVA9YSxsLkVYSVQ9aX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7dmFyIG49XCJcIjtpZihBcnJheS5pc0FycmF5KGVbMF0pKWZvcih2YXIgbz0wO288ZS5sZW5ndGgmJlwiIWltcG9ydGFudFwiIT09ZVtvXTtvKyspbiYmKG4rPVwiLCBcIiksbis9cihlW29dLFwiIFwiKTtlbHNlIG49cihlLFwiLCBcIik7dHx8XCIhaW1wb3J0YW50XCIhPT1lW2UubGVuZ3RoLTFdfHwobis9XCIgIWltcG9ydGFudFwiKTtyZXR1cm4gbn07dmFyIHI9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49XCJcIixyPTA7cjxlLmxlbmd0aCYmXCIhaW1wb3J0YW50XCIhPT1lW3JdO3IrKyluJiYobis9dCksbis9ZVtyXTtyZXR1cm4gbn19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCJ1bm5hbWVkXCIsdD1hcmd1bWVudHNbMV0sbj1hcmd1bWVudHNbMl0saT1uLmpzcyxsPSgwLGEuZGVmYXVsdCkodCkscz1pLnBsdWdpbnMub25DcmVhdGVSdWxlKGUsbCxuKTtpZihzKXJldHVybiBzO1wiQFwiPT09ZVswXSYmKDAsci5kZWZhdWx0KSghMSxcIltKU1NdIFVua25vd24gYXQtcnVsZSAlc1wiLGUpO3JldHVybiBuZXcgby5kZWZhdWx0KGUsbCxuKX07dmFyIHI9aShuKDI4KSksbz1pKG4oMzApKSxhPWkobigzNjMpKTtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJpc0Jyb3dzZXJcIixmdW5jdGlvbigpe3JldHVybiBvfSk7dmFyIHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sbz1cIm9iamVjdFwiPT09KFwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3c/XCJ1bmRlZmluZWRcIjpyKHdpbmRvdykpJiZcIm9iamVjdFwiPT09KFwidW5kZWZpbmVkXCI9PXR5cGVvZiBkb2N1bWVudD9cInVuZGVmaW5lZFwiOnIoZG9jdW1lbnQpKSYmOT09PWRvY3VtZW50Lm5vZGVUeXBlO3QuZGVmYXVsdD1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiEhZSYmXCJvYmplY3RcIj09dHlwZW9mIGV9KGUpJiYhZnVuY3Rpb24oZSl7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO3JldHVyblwiW29iamVjdCBSZWdFeHBdXCI9PT1ufHxcIltvYmplY3QgRGF0ZV1cIj09PW58fGZ1bmN0aW9uKGUpe3JldHVybiBlLiQkdHlwZW9mPT09dH0oZSl9KGUpfSx0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcj9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMztmdW5jdGlvbiBuKGUsdCl7cmV0dXJuITEhPT10LmNsb25lJiZ0LmlzTWVyZ2VhYmxlT2JqZWN0KGUpP28oKG49ZSxBcnJheS5pc0FycmF5KG4pP1tdOnt9KSxlLHQpOmU7dmFyIG59ZnVuY3Rpb24gcihlLHQscil7cmV0dXJuIGUuY29uY2F0KHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gbihlLHIpfSl9ZnVuY3Rpb24gbyh0LGEsaSl7KGk9aXx8e30pLmFycmF5TWVyZ2U9aS5hcnJheU1lcmdlfHxyLGkuaXNNZXJnZWFibGVPYmplY3Q9aS5pc01lcmdlYWJsZU9iamVjdHx8ZTt2YXIgbD1BcnJheS5pc0FycmF5KGEpLHM9QXJyYXkuaXNBcnJheSh0KSx1PWw9PT1zO3JldHVybiB1P2w/aS5hcnJheU1lcmdlKHQsYSxpKTpmdW5jdGlvbihlLHQscil7dmFyIGE9e307cmV0dXJuIHIuaXNNZXJnZWFibGVPYmplY3QoZSkmJk9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24odCl7YVt0XT1uKGVbdF0scil9KSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3IuaXNNZXJnZWFibGVPYmplY3QodFtpXSkmJmVbaV0/YVtpXT1vKGVbaV0sdFtpXSxyKTphW2ldPW4odFtpXSxyKX0pLGF9KHQsYSxpKTpuKGEsaSl9cmV0dXJuIG8uYWxsPWZ1bmN0aW9uKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpdGhyb3cgbmV3IEVycm9yKFwiZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGFuIGFycmF5XCIpO3JldHVybiBlLnJlZHVjZShmdW5jdGlvbihlLG4pe3JldHVybiBvKGUsbix0KX0se30pfSxvfSgpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0MTQpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dC5FWElUSU5HPXQuRU5URVJFRD10LkVOVEVSSU5HPXQuRVhJVEVEPXQuVU5NT1VOVEVEPXZvaWQgMDt2YXIgcj1mdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSl7dmFyIHI9T2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKTp7fTtyLmdldHx8ci5zZXQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixyKTp0W25dPWVbbl19cmV0dXJuIHQuZGVmYXVsdD1lLHR9KG4oMSkpLG89bChuKDApKSxhPWwobigyMikpLGk9bigxMzMpO24oNDE3KTtmdW5jdGlvbiBsKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgcz1cInVubW91bnRlZFwiO3QuVU5NT1VOVEVEPXM7dmFyIHU9XCJleGl0ZWRcIjt0LkVYSVRFRD11O3ZhciBjPVwiZW50ZXJpbmdcIjt0LkVOVEVSSU5HPWM7dmFyIGQ9XCJlbnRlcmVkXCI7dC5FTlRFUkVEPWQ7dC5FWElUSU5HPVwiZXhpdGluZ1wiO3ZhciBwPWZ1bmN0aW9uKGUpe3ZhciB0LG47ZnVuY3Rpb24gcih0LG4pe3ZhciByO3I9ZS5jYWxsKHRoaXMsdCxuKXx8dGhpczt2YXIgbyxhPW4udHJhbnNpdGlvbkdyb3VwLGk9YSYmIWEuaXNNb3VudGluZz90LmVudGVyOnQuYXBwZWFyO3JldHVybiByLmFwcGVhclN0YXR1cz1udWxsLHQuaW4/aT8obz11LHIuYXBwZWFyU3RhdHVzPWMpOm89ZDpvPXQudW5tb3VudE9uRXhpdHx8dC5tb3VudE9uRW50ZXI/czp1LHIuc3RhdGU9e3N0YXR1czpvfSxyLm5leHRDYWxsYmFjaz1udWxsLHJ9bj1lLCh0PXIpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPW47dmFyIGk9ci5wcm90b3R5cGU7cmV0dXJuIGkuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJue3RyYW5zaXRpb25Hcm91cDpudWxsfX0sci5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pbiYmdC5zdGF0dXM9PT1zP3tzdGF0dXM6dX06bnVsbH0saS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMudXBkYXRlU3RhdHVzKCEwLHRoaXMuYXBwZWFyU3RhdHVzKX0saS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZihlIT09dGhpcy5wcm9wcyl7dmFyIG49dGhpcy5zdGF0ZS5zdGF0dXM7dGhpcy5wcm9wcy5pbj9uIT09YyYmbiE9PWQmJih0PWMpOm4hPT1jJiZuIT09ZHx8KHQ9XCJleGl0aW5nXCIpfXRoaXMudXBkYXRlU3RhdHVzKCExLHQpfSxpLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxOZXh0Q2FsbGJhY2soKX0saS5nZXRUaW1lb3V0cz1mdW5jdGlvbigpe3ZhciBlLHQsbixyPXRoaXMucHJvcHMudGltZW91dDtyZXR1cm4gZT10PW49cixudWxsIT1yJiZcIm51bWJlclwiIT10eXBlb2YgciYmKGU9ci5leGl0LHQ9ci5lbnRlcixuPXIuYXBwZWFyKSx7ZXhpdDplLGVudGVyOnQsYXBwZWFyOm59fSxpLnVwZGF0ZVN0YXR1cz1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMD09PWUmJihlPSExKSxudWxsIT09dCl7dGhpcy5jYW5jZWxOZXh0Q2FsbGJhY2soKTt2YXIgbj1hLmRlZmF1bHQuZmluZERPTU5vZGUodGhpcyk7dD09PWM/dGhpcy5wZXJmb3JtRW50ZXIobixlKTp0aGlzLnBlcmZvcm1FeGl0KG4pfWVsc2UgdGhpcy5wcm9wcy51bm1vdW50T25FeGl0JiZ0aGlzLnN0YXRlLnN0YXR1cz09PXUmJnRoaXMuc2V0U3RhdGUoe3N0YXR1czpzfSl9LGkucGVyZm9ybUVudGVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPXRoaXMucHJvcHMuZW50ZXIsbz10aGlzLmNvbnRleHQudHJhbnNpdGlvbkdyb3VwP3RoaXMuY29udGV4dC50cmFuc2l0aW9uR3JvdXAuaXNNb3VudGluZzp0LGE9dGhpcy5nZXRUaW1lb3V0cygpO3R8fHI/KHRoaXMucHJvcHMub25FbnRlcihlLG8pLHRoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6Y30sZnVuY3Rpb24oKXtuLnByb3BzLm9uRW50ZXJpbmcoZSxvKSxuLm9uVHJhbnNpdGlvbkVuZChlLGEuZW50ZXIsZnVuY3Rpb24oKXtuLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOmR9LGZ1bmN0aW9uKCl7bi5wcm9wcy5vbkVudGVyZWQoZSxvKX0pfSl9KSk6dGhpcy5zYWZlU2V0U3RhdGUoe3N0YXR1czpkfSxmdW5jdGlvbigpe24ucHJvcHMub25FbnRlcmVkKGUpfSl9LGkucGVyZm9ybUV4aXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMucHJvcHMuZXhpdCxyPXRoaXMuZ2V0VGltZW91dHMoKTtuPyh0aGlzLnByb3BzLm9uRXhpdChlKSx0aGlzLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOlwiZXhpdGluZ1wifSxmdW5jdGlvbigpe3QucHJvcHMub25FeGl0aW5nKGUpLHQub25UcmFuc2l0aW9uRW5kKGUsci5leGl0LGZ1bmN0aW9uKCl7dC5zYWZlU2V0U3RhdGUoe3N0YXR1czp1fSxmdW5jdGlvbigpe3QucHJvcHMub25FeGl0ZWQoZSl9KX0pfSkpOnRoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6dX0sZnVuY3Rpb24oKXt0LnByb3BzLm9uRXhpdGVkKGUpfSl9LGkuY2FuY2VsTmV4dENhbGxiYWNrPWZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMubmV4dENhbGxiYWNrJiYodGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsKCksdGhpcy5uZXh0Q2FsbGJhY2s9bnVsbCl9LGkuc2FmZVNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7dD10aGlzLnNldE5leHRDYWxsYmFjayh0KSx0aGlzLnNldFN0YXRlKGUsdCl9LGkuc2V0TmV4dENhbGxiYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj0hMDtyZXR1cm4gdGhpcy5uZXh0Q2FsbGJhY2s9ZnVuY3Rpb24ocil7biYmKG49ITEsdC5uZXh0Q2FsbGJhY2s9bnVsbCxlKHIpKX0sdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsPWZ1bmN0aW9uKCl7bj0hMX0sdGhpcy5uZXh0Q2FsbGJhY2t9LGkub25UcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnNldE5leHRDYWxsYmFjayhuKSxlPyh0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyJiZ0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyKGUsdGhpcy5uZXh0Q2FsbGJhY2spLG51bGwhPXQmJnNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssdCkpOnNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssMCl9LGkucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZS5zdGF0dXM7aWYoZT09PXMpcmV0dXJuIG51bGw7dmFyIHQ9dGhpcy5wcm9wcyxuPXQuY2hpbGRyZW4scj1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30odCxbXCJjaGlsZHJlblwiXSk7aWYoZGVsZXRlIHIuaW4sZGVsZXRlIHIubW91bnRPbkVudGVyLGRlbGV0ZSByLnVubW91bnRPbkV4aXQsZGVsZXRlIHIuYXBwZWFyLGRlbGV0ZSByLmVudGVyLGRlbGV0ZSByLmV4aXQsZGVsZXRlIHIudGltZW91dCxkZWxldGUgci5hZGRFbmRMaXN0ZW5lcixkZWxldGUgci5vbkVudGVyLGRlbGV0ZSByLm9uRW50ZXJpbmcsZGVsZXRlIHIub25FbnRlcmVkLGRlbGV0ZSByLm9uRXhpdCxkZWxldGUgci5vbkV4aXRpbmcsZGVsZXRlIHIub25FeGl0ZWQsXCJmdW5jdGlvblwiPT10eXBlb2YgbilyZXR1cm4gbihlLHIpO3ZhciBhPW8uZGVmYXVsdC5DaGlsZHJlbi5vbmx5KG4pO3JldHVybiBvLmRlZmF1bHQuY2xvbmVFbGVtZW50KGEscil9LHJ9KG8uZGVmYXVsdC5Db21wb25lbnQpO2Z1bmN0aW9uIGYoKXt9cC5jb250ZXh0VHlwZXM9e3RyYW5zaXRpb25Hcm91cDpyLm9iamVjdH0scC5jaGlsZENvbnRleHRUeXBlcz17dHJhbnNpdGlvbkdyb3VwOmZ1bmN0aW9uKCl7fX0scC5wcm9wVHlwZXM9e30scC5kZWZhdWx0UHJvcHM9e2luOiExLG1vdW50T25FbnRlcjohMSx1bm1vdW50T25FeGl0OiExLGFwcGVhcjohMSxlbnRlcjohMCxleGl0OiEwLG9uRW50ZXI6ZixvbkVudGVyaW5nOmYsb25FbnRlcmVkOmYsb25FeGl0OmYsb25FeGl0aW5nOmYsb25FeGl0ZWQ6Zn0scC5VTk1PVU5URUQ9MCxwLkVYSVRFRD0xLHAuRU5URVJJTkc9MixwLkVOVEVSRUQ9MyxwLkVYSVRJTkc9NDt2YXIgbT0oMCxpLnBvbHlmaWxsKShwKTt0LmRlZmF1bHQ9bX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDIxKSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQzMCkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiTW9kYWxNYW5hZ2VyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuZGVmYXVsdH19KTt2YXIgbz1yKG4oNDQ0KSksYT1yKG4oMTQ0KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDApKS5kZWZhdWx0LmNyZWF0ZUNvbnRleHQoKTt0LmRlZmF1bHQ9b30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPW4oNjQ1KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImNveVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKHIpLmRlZmF1bHR9fSk7dmFyIG89big2NDYpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGFya1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKG8pLmRlZmF1bHR9fSk7dmFyIGE9big2NDcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZnVua3lcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVChhKS5kZWZhdWx0fX0pO3ZhciBpPW4oNjQ4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIm9rYWlkaWFcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVChpKS5kZWZhdWx0fX0pO3ZhciBsPW4oNjQ5KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInNvbGFyaXplZGxpZ2h0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQobCkuZGVmYXVsdH19KTt2YXIgcz1uKDY1MCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJ0b21vcnJvd1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKHMpLmRlZmF1bHR9fSk7dmFyIHU9big2NTEpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwidHdpbGlnaHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVCh1KS5kZWZhdWx0fX0pO3ZhciBjPW4oNjUyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInByaXNtXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQoYykuZGVmYXVsdH19KTt2YXIgZD1uKDY1Myk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJhdG9tRGFya1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKGQpLmRlZmF1bHR9fSk7dmFyIHA9big2NTQpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiYmFzZTE2QXRlbGllcnN1bHBodXJwb29sTGlnaHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVChwKS5kZWZhdWx0fX0pO3ZhciBmPW4oNjU1KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImNiXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQoZikuZGVmYXVsdH19KTt2YXIgbT1uKDY1Nik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkYXJjdWxhXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQobSkuZGVmYXVsdH19KTt2YXIgZz1uKDY1Nyk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkdW90b25lRGFya1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKGcpLmRlZmF1bHR9fSk7dmFyIGg9big2NTgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZHVvdG9uZUVhcnRoXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQoaCkuZGVmYXVsdH19KTt2YXIgYj1uKDY1OSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkdW90b25lRm9yZXN0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQoYikuZGVmYXVsdH19KTt2YXIgeT1uKDY2MCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkdW90b25lTGlnaHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVCh5KS5kZWZhdWx0fX0pO3ZhciB2PW4oNjYxKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImR1b3RvbmVTZWFcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVCh2KS5kZWZhdWx0fX0pO3ZhciBTPW4oNjYyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImR1b3RvbmVTcGFjZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKFMpLmRlZmF1bHR9fSk7dmFyIEU9big2NjMpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZ2hjb2xvcnNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVChFKS5kZWZhdWx0fX0pO3ZhciB4PW4oNjY0KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImhvcHNjb3RjaFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKHgpLmRlZmF1bHR9fSk7dmFyIHc9big2NjUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicG9qb2FxdWVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVCh3KS5kZWZhdWx0fX0pO3ZhciBrPW4oNjY2KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInZzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQoaykuZGVmYXVsdH19KTt2YXIgXz1uKDY2Nyk7ZnVuY3Rpb24gVChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJ4b25va2FpXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQoXykuZGVmYXVsdH19KX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY3Vycnk9bCx0LmN1cnJ5U29mdD1mdW5jdGlvbihlLHQpe3JldHVybiBsKGUsdCxhLmFsbG93T3ZlcndyaXRlKX0sdC5jdXJyeUhhcmQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbChlLHQsYS5mb3JjZUN1cnJ5KX0sdC5jdXJyeVNtYXJ0PWZ1bmN0aW9uKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtyZXR1cm4gbChlLHQsZnVuY3Rpb24oZSx0KXtyZXR1cm4oMCxhLm1lcmdlQ29tcGxleFByb3BzKShlLHQsbil9KX07dmFyIHI9aShuKDApKSxvPWkobigzNTYpKSxhPW4oMzU3KTtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBsKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOmEuYWxsb3dPdmVyd3JpdGUsaT1lLnByb3BzLGw9ZS50eXBlLHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bihpLGUpO3JldHVybiByLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsLHQpfTtyZXR1cm4gcy5kaXNwbGF5TmFtZT10fHxcIkN1cnJpZWQoXCIuY29uY2F0KCgwLG8uZGVmYXVsdCkobCksXCIpXCIpLHMucHJvcFR5cGVzPWwucHJvcFR5cGVzLHN9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxvPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihvPW8uY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksby5mb3JFYWNoKGZ1bmN0aW9uKHQpe3IoZSx0LG5bdF0pfSl9cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7XG4vKiFcbiAqIHJlcGVhdC1zdHJpbmcgPGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hsaW5rZXJ0L3JlcGVhdC1zdHJpbmc+XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUsIEpvbiBTY2hsaW5rZXJ0LlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovdmFyIHIsbz1cIlwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJleHBlY3RlZCBhIHN0cmluZ1wiKTtpZigxPT09dClyZXR1cm4gZTtpZigyPT09dClyZXR1cm4gZStlO3ZhciBuPWUubGVuZ3RoKnQ7aWYociE9PWV8fHZvaWQgMD09PXIpcj1lLG89XCJcIjtlbHNlIGlmKG8ubGVuZ3RoPj1uKXJldHVybiBvLnN1YnN0cigwLG4pO2Zvcig7bj5vLmxlbmd0aCYmdD4xOykxJnQmJihvKz1lKSx0Pj49MSxlKz1lO3JldHVybiBvPShvKz1lKS5zdWJzdHIoMCxuKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9U3RyaW5nKGUpLG49dC5sZW5ndGg7Zm9yKDt0LmNoYXJBdCgtLW4pPT09cjspO3JldHVybiB0LnNsaWNlKDAsbisxKX07dmFyIHI9XCJcXG5cIn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxhLGksbCxzLHUsYz1bXCJwZWRhbnRpY1wiLFwiY29tbW9ubWFya1wiXSxkPWMubGVuZ3RoLHA9ZS5sZW5ndGgsZj0tMTtmb3IoOysrZjxwOyl7Zm9yKG89ZVtmXSxhPW9bMV18fHt9LGk9b1swXSxsPS0xLHU9ITE7KytsPGQ7KWlmKHZvaWQgMCE9PWFbcz1jW2xdXSYmYVtzXSE9PW4ub3B0aW9uc1tzXSl7dT0hMDticmVha31pZighdSYmdFtpXS5hcHBseShuLHIpKXJldHVybiEwfXJldHVybiExfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMzIwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSkudG9Mb3dlckNhc2UoKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDM5KSxvPXtjaGlsZENvbnRleHRUeXBlczohMCxjb250ZXh0VHlwZTohMCxjb250ZXh0VHlwZXM6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLGdldERlZmF1bHRQcm9wczohMCxnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I6ITAsZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiEwLG1peGluczohMCxwcm9wVHlwZXM6ITAsdHlwZTohMH0sYT17bmFtZTohMCxsZW5ndGg6ITAscHJvdG90eXBlOiEwLGNhbGxlcjohMCxjYWxsZWU6ITAsYXJndW1lbnRzOiEwLGFyaXR5OiEwfSxpPXskJHR5cGVvZjohMCxjb21wYXJlOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxwcm9wVHlwZXM6ITAsdHlwZTohMH0sbD17fTtmdW5jdGlvbiBzKGUpe3JldHVybiByLmlzTWVtbyhlKT9pOmxbZS4kJHR5cGVvZl18fG99bFtyLkZvcndhcmRSZWZdPXskJHR5cGVvZjohMCxyZW5kZXI6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLHByb3BUeXBlczohMH07dmFyIHU9T2JqZWN0LmRlZmluZVByb3BlcnR5LGM9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsZD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLHA9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixmPU9iamVjdC5nZXRQcm90b3R5cGVPZixtPU9iamVjdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uIGUodCxuLHIpe2lmKFwic3RyaW5nXCIhPXR5cGVvZiBuKXtpZihtKXt2YXIgbz1mKG4pO28mJm8hPT1tJiZlKHQsbyxyKX12YXIgaT1jKG4pO2QmJihpPWkuY29uY2F0KGQobikpKTtmb3IodmFyIGw9cyh0KSxnPXMobiksaD0wO2g8aS5sZW5ndGg7KytoKXt2YXIgYj1pW2hdO2lmKCEoYVtiXXx8ciYmcltiXXx8ZyYmZ1tiXXx8bCYmbFtiXSkpe3ZhciB5PXAobixiKTt0cnl7dSh0LGIseSl9Y2F0Y2goZSl7fX19cmV0dXJuIHR9cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9LHI9XCJcIjtpZighdClyZXR1cm4gcjt2YXIgbz1uLmluZGVudCxsPXZvaWQgMD09PW8/MDpvLHM9dC5mYWxsYmFja3M7aWYobCsrLHMpaWYoQXJyYXkuaXNBcnJheShzKSlmb3IodmFyIHU9MDt1PHMubGVuZ3RoO3UrKyl7dmFyIGM9c1t1XTtmb3IodmFyIGQgaW4gYyl7dmFyIHA9Y1tkXTtudWxsIT1wJiYocis9XCJcXG5cIitpKGQrXCI6IFwiKygwLGEuZGVmYXVsdCkocCkrXCI7XCIsbCkpfX1lbHNlIGZvcih2YXIgZiBpbiBzKXt2YXIgbT1zW2ZdO251bGwhPW0mJihyKz1cIlxcblwiK2koZitcIjogXCIrKDAsYS5kZWZhdWx0KShtKStcIjtcIixsKSl9Zm9yKHZhciBnIGluIHQpe3ZhciBoPXRbZ107bnVsbCE9aCYmXCJmYWxsYmFja3NcIiE9PWcmJihyKz1cIlxcblwiK2koZytcIjogXCIrKDAsYS5kZWZhdWx0KShoKStcIjtcIixsKSl9cmV0dXJuIHJ8fG4uYWxsb3dFbXB0eT9yPWkoZStcIiB7XCIrcitcIlxcblwiLC0tbCkraShcIn1cIixsKTpyfTt2YXIgcixvPW4oNDYpLGE9KHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O2Z1bmN0aW9uIGkoZSx0KXtmb3IodmFyIG49XCJcIixyPTA7cjx0O3IrKyluKz1cIiAgXCI7cmV0dXJuIG4rZX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcixvPW4oMTE1KSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTt0LmRlZmF1bHQ9bmV3IGEuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByLG89big0OCk7dmFyIGE9XCJcIixpPVwiXCI7aWYoKChyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfSkuZGVmYXVsdCl7dmFyIGw9e01vejpcIi1tb3otXCIsbXM6XCItbXMtXCIsTzpcIi1vLVwiLFdlYmtpdDpcIi13ZWJraXQtXCJ9LHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInBcIikuc3R5bGU7Zm9yKHZhciB1IGluIGwpaWYodStcIlRyYW5zZm9ybVwiaW4gcyl7YT11LGk9bFt1XTticmVha319dC5kZWZhdWx0PXtqczphLGNzczppfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDtyKG4oOSkpO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDQ5KSksbD1yKG4oMzk0KSkscz0ocihuKDE3KSkscihuKDM5NikpKSx1PXIobigzOTcpKSxjPXIobigzOTgpKSxkPXIobigzOTkpKSxwPXIobig0MDApKSxmPXIobig0MDEpKSxtPXIobig0MDIpKSxnPXIobig2OCkpLGg9cihuKDQwMykpO3ZhciBiPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9ZS5icmVha3BvaW50cyxuPXZvaWQgMD09PXQ/e306dCxyPWUubWl4aW5zLGI9dm9pZCAwPT09cj97fTpyLHk9ZS5wYWxldHRlLHY9dm9pZCAwPT09eT97fTp5LFM9ZS5zaGFkb3dzLEU9ZS5zcGFjaW5nLHg9dm9pZCAwPT09RT97fTpFLHc9ZS50eXBvZ3JhcGh5LGs9dm9pZCAwPT09dz97fTp3LF89KDAsYS5kZWZhdWx0KShlLFtcImJyZWFrcG9pbnRzXCIsXCJtaXhpbnNcIixcInBhbGV0dGVcIixcInNoYWRvd3NcIixcInNwYWNpbmdcIixcInR5cG9ncmFwaHlcIl0pLFQ9KDAsYy5kZWZhdWx0KSh2KSxBPSgwLHMuZGVmYXVsdCkobiksQz0oMCxvLmRlZmF1bHQpKHt9LG0uZGVmYXVsdCx4KTtyZXR1cm4oMCxvLmRlZmF1bHQpKHticmVha3BvaW50czpBLGRpcmVjdGlvbjpcImx0clwiLG1peGluczooMCx1LmRlZmF1bHQpKEEsQyxiKSxvdmVycmlkZXM6e30scGFsZXR0ZTpULHByb3BzOnt9LHNoYWRvd3M6U3x8cC5kZWZhdWx0LHR5cG9ncmFwaHk6KDAsZC5kZWZhdWx0KShULGspfSwoMCxpLmRlZmF1bHQpKHtzaGFwZTpmLmRlZmF1bHQsc3BhY2luZzpDLHRyYW5zaXRpb25zOmcuZGVmYXVsdCx6SW5kZXg6aC5kZWZhdWx0fSxfLHtpc01lcmdlYWJsZU9iamVjdDpsLmRlZmF1bHR9KSl9O3QuZGVmYXVsdD1ifSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5pc051bWJlcj10LmlzU3RyaW5nPXQuZm9ybWF0TXM9dC5kdXJhdGlvbj10LmVhc2luZz12b2lkIDA7dmFyIG89cihuKDUpKSxhPShyKG4oMTcpKSx7ZWFzZUluT3V0OlwiY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKVwiLGVhc2VPdXQ6XCJjdWJpYy1iZXppZXIoMC4wLCAwLCAwLjIsIDEpXCIsZWFzZUluOlwiY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSlcIixzaGFycDpcImN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSlcIn0pO3QuZWFzaW5nPWE7dmFyIGk9e3Nob3J0ZXN0OjE1MCxzaG9ydGVyOjIwMCxzaG9ydDoyNTAsc3RhbmRhcmQ6MzAwLGNvbXBsZXg6Mzc1LGVudGVyaW5nU2NyZWVuOjIyNSxsZWF2aW5nU2NyZWVuOjE5NX07dC5kdXJhdGlvbj1pO3ZhciBsPWZ1bmN0aW9uKGUpe3JldHVyblwiXCIuY29uY2F0KE1hdGgucm91bmQoZSksXCJtc1wiKX07dC5mb3JtYXRNcz1sO3QuaXNTdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV9O3QuaXNOdW1iZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQoZSkpfTt2YXIgcz17ZWFzaW5nOmEsZHVyYXRpb246aSxjcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W1wiYWxsXCJdLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LG49dC5kdXJhdGlvbixyPXZvaWQgMD09PW4/aS5zdGFuZGFyZDpuLHM9dC5lYXNpbmcsdT12b2lkIDA9PT1zP2EuZWFzZUluT3V0OnMsYz10LmRlbGF5LGQ9dm9pZCAwPT09Yz8wOmM7KDAsby5kZWZhdWx0KSh0LFtcImR1cmF0aW9uXCIsXCJlYXNpbmdcIixcImRlbGF5XCJdKTtyZXR1cm4oQXJyYXkuaXNBcnJheShlKT9lOltlXSkubWFwKGZ1bmN0aW9uKGUpe3JldHVyblwiXCIuY29uY2F0KGUsXCIgXCIpLmNvbmNhdChcInN0cmluZ1wiPT10eXBlb2Ygcj9yOmwociksXCIgXCIpLmNvbmNhdCh1LFwiIFwiKS5jb25jYXQoXCJzdHJpbmdcIj09dHlwZW9mIGQ/ZDpsKGQpKX0pLmpvaW4oXCIsXCIpfSxnZXRBdXRvSGVpZ2h0RHVyYXRpb246ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIDA7dmFyIHQ9ZS8zNjtyZXR1cm4gTWF0aC5yb3VuZCgxMCooNCsxNSpNYXRoLnBvdyh0LC4yNSkrdC81KSl9fTt0LmRlZmF1bHQ9c30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuQ0hBTk5FTD12b2lkIDA7dmFyIG89cihuKDkpKSxhPVwiX19USEVNSU5HX19cIjt0LkNIQU5ORUw9YTt2YXIgaT17Y29udGV4dFR5cGVzOigwLG8uZGVmYXVsdCkoe30sYSxmdW5jdGlvbigpe30pLGluaXRpYWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbYV0/ZVthXS5nZXRTdGF0ZSgpOm51bGx9LHN1YnNjcmliZTpmdW5jdGlvbihlLHQpe3JldHVybiBlW2FdP2VbYV0uc3Vic2NyaWJlKHQpOm51bGx9LHVuc3Vic2NyaWJlOmZ1bmN0aW9uKGUsdCl7ZVthXSYmZVthXS51bnN1YnNjcmliZSh0KX19O3QuZGVmYXVsdD1pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRUcmFuc2l0aW9uUHJvcHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnRpbWVvdXQscj1lLnN0eWxlLG89dm9pZCAwPT09cj97fTpyO3JldHVybntkdXJhdGlvbjpvLnRyYW5zaXRpb25EdXJhdGlvbnx8XCJudW1iZXJcIj09dHlwZW9mIG4/bjpuW3QubW9kZV0sZGVsYXk6by50cmFuc2l0aW9uRGVsYXl9fSx0LnJlZmxvdz12b2lkIDA7dC5yZWZsb3c9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2Nyb2xsVG9wfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDE5KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe3JldHVybiBudWxsIT1lJiYhKEFycmF5LmlzQXJyYXkoZSkmJjA9PT1lLmxlbmd0aCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5oYXNWYWx1ZT1yLHQuaXNGaWxsZWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtyZXR1cm4gZSYmKHIoZS52YWx1ZSkmJlwiXCIhPT1lLnZhbHVlfHx0JiZyKGUuZGVmYXVsdFZhbHVlKSYmXCJcIiE9PWUuZGVmYXVsdFZhbHVlKX0sdC5pc0Fkb3JuZWRTdGFydD1mdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydEFkb3JubWVudH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDApKS5kZWZhdWx0LmNyZWF0ZUNvbnRleHQoKTt0LmRlZmF1bHQ9b30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDIzKSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQyNCkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0MjUpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDI5KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDI2KSk7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOndpbmRvdyxuPSgwLG8uZGVmYXVsdCkoZSk7cmV0dXJuIG4uZGVmYXVsdFZpZXd8fG4ucGFyZW50Vmlld3x8dH07dC5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQzMSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NDIpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDQzKSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ0NSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NDYpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDU3KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ1OCkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvLGE9cihuKDQpKSxpPXIobig1KSksbD1yKG4oMTIpKSxzPXIobigxMykpLHU9cihuKDE0KSksYz1yKG4oMTUpKSxkPXIobigxNikpLHA9cihuKDApKSxmPShyKG4oMSkpLHIobig2MykpKSxtPW4oNyksZz1yKG4oNjcpKSxoPXIobig2OSkpO20ucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX198fChtLnBvbnlmaWxsR2xvYmFsLl9fTVVJX1NUWUxFU19fPXt9KSxtLnBvbnlmaWxsR2xvYmFsLl9fTVVJX1NUWUxFU19fLndpdGhUaGVtZXx8KG0ucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX18ud2l0aFRoZW1lPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSx0KXt2YXIgcjtyZXR1cm4oMCxsLmRlZmF1bHQpKHRoaXMsbiksKHI9KDAsdS5kZWZhdWx0KSh0aGlzLCgwLGMuZGVmYXVsdCkobikuY2FsbCh0aGlzKSkpLnN0YXRlPXt0aGVtZTpoLmRlZmF1bHQuaW5pdGlhbCh0KXx8b3x8KG89KDAsZy5kZWZhdWx0KSh7dHlwb2dyYXBoeTp7c3VwcHJlc3NXYXJuaW5nOiEwfX0pKX0scn1yZXR1cm4oMCxkLmRlZmF1bHQpKG4sdCksKDAscy5kZWZhdWx0KShuLFt7a2V5OlwiY29tcG9uZW50RGlkTW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy51bnN1YnNjcmliZUlkPWguZGVmYXVsdC5zdWJzY3JpYmUodGhpcy5jb250ZXh0LGZ1bmN0aW9uKHQpe2Uuc2V0U3RhdGUoe3RoZW1lOnR9KX0pfX0se2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy51bnN1YnNjcmliZUlkJiZoLmRlZmF1bHQudW5zdWJzY3JpYmUodGhpcy5jb250ZXh0LHRoaXMudW5zdWJzY3JpYmVJZCl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnByb3BzLG49dC5pbm5lclJlZixyPSgwLGkuZGVmYXVsdCkodCxbXCJpbm5lclJlZlwiXSk7cmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGUsKDAsYS5kZWZhdWx0KSh7dGhlbWU6dGhpcy5zdGF0ZS50aGVtZSxyZWY6bn0scikpfX1dKSxufShwLmRlZmF1bHQuQ29tcG9uZW50KTtyZXR1cm4gdC5jb250ZXh0VHlwZXM9aC5kZWZhdWx0LmNvbnRleHRUeXBlcywoMCxmLmRlZmF1bHQpKHQsZSksdH19KTt2YXIgYj1tLnBvbnlmaWxsR2xvYmFsLl9fTVVJX1NUWUxFU19fLndpdGhUaGVtZTt0LmRlZmF1bHQ9Yn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDU5KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ2MCkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NjMpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDY0KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ3MSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NzkpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDgwKSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj0wO2Z1bmN0aW9uIG8oKXtyZXR1cm4gTWF0aC5wb3coMiwrK3IpfXQuYm9vbGVhbj1vKCksdC5ib29sZWFuaXNoPW8oKSx0Lm92ZXJsb2FkZWRCb29sZWFuPW8oKSx0Lm51bWJlcj1vKCksdC5zcGFjZVNlcGFyYXRlZD1vKCksdC5jb21tYVNlcGFyYXRlZD1vKCksdC5jb21tYU9yU3BhY2VTZXBhcmF0ZWQ9bygpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigzNCk7ZnVuY3Rpb24gbyhlKXtlLnJlZ2lzdGVyKHIpLGUubGFuZ3VhZ2VzLmNwcD1lLmxhbmd1YWdlcy5leHRlbmQoXCJjXCIse2tleXdvcmQ6L1xcYig/OmFsaWduYXN8YWxpZ25vZnxhc218YXV0b3xib29sfGJyZWFrfGNhc2V8Y2F0Y2h8Y2hhcnxjaGFyMTZfdHxjaGFyMzJfdHxjbGFzc3xjb21wbHxjb25zdHxjb25zdGV4cHJ8Y29uc3RfY2FzdHxjb250aW51ZXxkZWNsdHlwZXxkZWZhdWx0fGRlbGV0ZXxkb3xkb3VibGV8ZHluYW1pY19jYXN0fGVsc2V8ZW51bXxleHBsaWNpdHxleHBvcnR8ZXh0ZXJufGZsb2F0fGZvcnxmcmllbmR8Z290b3xpZnxpbmxpbmV8aW50fGludDhfdHxpbnQxNl90fGludDMyX3R8aW50NjRfdHx1aW50OF90fHVpbnQxNl90fHVpbnQzMl90fHVpbnQ2NF90fGxvbmd8bXV0YWJsZXxuYW1lc3BhY2V8bmV3fG5vZXhjZXB0fG51bGxwdHJ8b3BlcmF0b3J8cHJpdmF0ZXxwcm90ZWN0ZWR8cHVibGljfHJlZ2lzdGVyfHJlaW50ZXJwcmV0X2Nhc3R8cmV0dXJufHNob3J0fHNpZ25lZHxzaXplb2Z8c3RhdGljfHN0YXRpY19hc3NlcnR8c3RhdGljX2Nhc3R8c3RydWN0fHN3aXRjaHx0ZW1wbGF0ZXx0aGlzfHRocmVhZF9sb2NhbHx0aHJvd3x0cnl8dHlwZWRlZnx0eXBlaWR8dHlwZW5hbWV8dW5pb258dW5zaWduZWR8dXNpbmd8dmlydHVhbHx2b2lkfHZvbGF0aWxlfHdjaGFyX3R8d2hpbGUpXFxiLyxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi8sb3BlcmF0b3I6Ly0tP3xcXCtcXCs/fCE9P3w8ezEsMn09P3w+ezEsMn09P3wtPnw6ezEsMn18PXsxLDJ9fFxcXnx+fCV8JnsxLDJ9fFxcfFxcfD98XFw/fFxcKnxcXC98XFxiKD86YW5kfGFuZF9lcXxiaXRhbmR8Yml0b3J8bm90fG5vdF9lcXxvcnxvcl9lcXx4b3J8eG9yX2VxKVxcYi99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJjcHBcIixcImtleXdvcmRcIix7XCJjbGFzcy1uYW1lXCI6e3BhdHRlcm46LyhjbGFzc1xccyspXFx3Ky9pLGxvb2tiZWhpbmQ6ITB9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiY3BwXCIsXCJzdHJpbmdcIix7XCJyYXctc3RyaW5nXCI6e3BhdHRlcm46L1JcIihbXigpXFxcXCBdezAsMTZ9KVxcKFtcXHNcXFNdKj9cXClcXDFcIi8sYWxpYXM6XCJzdHJpbmdcIixncmVlZHk6ITB9fSl9ZS5leHBvcnRzPW8sby5kaXNwbGF5TmFtZT1cImNwcFwiLG8uYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLnJ1Ynk9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7Y29tbWVudDpbLyMuKi8se3BhdHRlcm46L149YmVnaW4oPzpcXHI/XFxufFxccikoPzouKig/Olxccj9cXG58XFxyKSkqPz1lbmQvbSxncmVlZHk6ITB9XSxrZXl3b3JkOi9cXGIoPzphbGlhc3xhbmR8QkVHSU58YmVnaW58YnJlYWt8Y2FzZXxjbGFzc3xkZWZ8ZGVmaW5lX21ldGhvZHxkZWZpbmVkfGRvfGVhY2h8ZWxzZXxlbHNpZnxFTkR8ZW5kfGVuc3VyZXxmYWxzZXxmb3J8aWZ8aW58bW9kdWxlfG5ld3xuZXh0fG5pbHxub3R8b3J8cHJvdGVjdGVkfHByaXZhdGV8cHVibGljfHJhaXNlfHJlZG98cmVxdWlyZXxyZXNjdWV8cmV0cnl8cmV0dXJufHNlbGZ8c3VwZXJ8dGhlbnx0aHJvd3x0cnVlfHVuZGVmfHVubGVzc3x1bnRpbHx3aGVufHdoaWxlfHlpZWxkKVxcYi99KTt2YXIgdD17cGF0dGVybjovI1xce1tefV0rXFx9LyxpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXiNcXHt8XFx9JC8sYWxpYXM6XCJ0YWdcIn0scmVzdDplLmxhbmd1YWdlcy5ydWJ5fX07ZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwicnVieVwiLFwia2V5d29yZFwiLHtyZWdleDpbe3BhdHRlcm46LyVyKFteYS16QS1aMC05XFxzeyhcXFs8XSkoPzooPyFcXDEpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMVtnaW1dezAsM30vLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246dH19LHtwYXR0ZXJuOi8lclxcKCg/OlteKClcXFxcXXxcXFxcW1xcc1xcU10pKlxcKVtnaW1dezAsM30vLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246dH19LHtwYXR0ZXJuOi8lclxceyg/OlteI3t9XFxcXF18Iyg/Olxce1tefV0rXFx9KT98XFxcXFtcXHNcXFNdKSpcXH1bZ2ltXXswLDN9LyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOnR9fSx7cGF0dGVybjovJXJcXFsoPzpbXlxcW1xcXVxcXFxdfFxcXFxbXFxzXFxTXSkqXFxdW2dpbV17MCwzfS8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp0fX0se3BhdHRlcm46LyVyPCg/OltePD5cXFxcXXxcXFxcW1xcc1xcU10pKj5bZ2ltXXswLDN9LyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOnR9fSx7cGF0dGVybjovKF58W15cXC9dKVxcLyg/IVxcLykoXFxbLis/XXxcXFxcLnxbXlxcL1xcXFxcXHJcXG5dKStcXC9bZ2ltXXswLDN9KD89XFxzKigkfFtcXHJcXG4sLjt9KV0pKS8sbG9va2JlaGluZDohMCxncmVlZHk6ITB9XSx2YXJpYWJsZTovW0AkXStbYS16QS1aX11cXHcqKD86Wz8hXXxcXGIpLyxzeW1ib2w6e3BhdHRlcm46LyhefFteOl0pOlthLXpBLVpfXVxcdyooPzpbPyFdfFxcYikvLGxvb2tiZWhpbmQ6ITB9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwicnVieVwiLFwibnVtYmVyXCIse2J1aWx0aW46L1xcYig/OkFycmF5fEJpZ251bXxCaW5kaW5nfENsYXNzfENvbnRpbnVhdGlvbnxEaXJ8RXhjZXB0aW9ufEZhbHNlQ2xhc3N8RmlsZXxTdGF0fEZpeG51bXxGbG9hdHxIYXNofEludGVnZXJ8SU98TWF0Y2hEYXRhfE1ldGhvZHxNb2R1bGV8TmlsQ2xhc3N8TnVtZXJpY3xPYmplY3R8UHJvY3xSYW5nZXxSZWdleHB8U3RyaW5nfFN0cnVjdHxUTVN8U3ltYm9sfFRocmVhZEdyb3VwfFRocmVhZHxUaW1lfFRydWVDbGFzcylcXGIvLGNvbnN0YW50Oi9cXGJbQS1aXVxcdyooPzpbPyFdfFxcYikvfSksZS5sYW5ndWFnZXMucnVieS5zdHJpbmc9W3twYXR0ZXJuOi8lW3FRaUl3V3hzXT8oW15hLXpBLVowLTlcXHN7KFxcWzxdKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFxbXFxzXFxTXSkqXFwxLyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOnR9fSx7cGF0dGVybjovJVtxUWlJd1d4c10/XFwoKD86W14oKVxcXFxdfFxcXFxbXFxzXFxTXSkqXFwpLyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOnR9fSx7cGF0dGVybjovJVtxUWlJd1d4c10/XFx7KD86W14je31cXFxcXXwjKD86XFx7W159XStcXH0pP3xcXFxcW1xcc1xcU10pKlxcfS8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp0fX0se3BhdHRlcm46LyVbcVFpSXdXeHNdP1xcWyg/OlteXFxbXFxdXFxcXF18XFxcXFtcXHNcXFNdKSpcXF0vLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246dH19LHtwYXR0ZXJuOi8lW3FRaUl3V3hzXT88KD86W148PlxcXFxdfFxcXFxbXFxzXFxTXSkqPi8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp0fX0se3BhdHRlcm46LyhcInwnKSg/OiNcXHtbXn1dK1xcfXxcXFxcKD86XFxyXFxufFtcXHNcXFNdKXwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOnR9fV19KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJydWJ5XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7XG4vKlxub2JqZWN0LWFzc2lnblxuKGMpIFNpbmRyZSBTb3JodXNcbkBsaWNlbnNlIE1JVFxuKi92YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmcoXCJhYmNcIik7aWYoZVs1XT1cImRlXCIsXCI1XCI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbXCJfXCIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjtpZihcIjAxMjM0NTY3ODlcIiE9PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pLmpvaW4oXCJcIikpcmV0dXJuITE7dmFyIHI9e307cmV0dXJuXCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiLnNwbGl0KFwiXCIpLmZvckVhY2goZnVuY3Rpb24oZSl7cltlXT1lfSksXCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxyKSkuam9pbihcIlwiKX1jYXRjaChlKXtyZXR1cm4hMX19KCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixpLGw9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWRcIik7cmV0dXJuIE9iamVjdChlKX0oZSkscz0xO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspe2Zvcih2YXIgdSBpbiBuPU9iamVjdChhcmd1bWVudHNbc10pKW8uY2FsbChuLHUpJiYobFt1XT1uW3VdKTtpZihyKXtpPXIobik7Zm9yKHZhciBjPTA7YzxpLmxlbmd0aDtjKyspYS5jYWxsKG4saVtjXSkmJihsW2lbY11dPW5baVtjXV0pfX1yZXR1cm4gbH19LGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPWUuZXhwb3J0cz17fTtmdW5jdGlvbiBhKCl7dGhyb3cgbmV3IEVycm9yKFwic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBpKCl7dGhyb3cgbmV3IEVycm9yKFwiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIGwoZSl7aWYobj09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigobj09PWF8fCFuKSYmc2V0VGltZW91dClyZXR1cm4gbj1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIG4oZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIG4uY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuIG4uY2FsbCh0aGlzLGUsMCl9fX0hZnVuY3Rpb24oKXt0cnl7bj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6YX1jYXRjaChlKXtuPWF9dHJ5e3I9XCJmdW5jdGlvblwiPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDppfWNhdGNoKGUpe3I9aX19KCk7dmFyIHMsdT1bXSxjPSExLGQ9LTE7ZnVuY3Rpb24gcCgpe2MmJnMmJihjPSExLHMubGVuZ3RoP3U9cy5jb25jYXQodSk6ZD0tMSx1Lmxlbmd0aCYmZigpKX1mdW5jdGlvbiBmKCl7aWYoIWMpe3ZhciBlPWwocCk7Yz0hMDtmb3IodmFyIHQ9dS5sZW5ndGg7dDspe2ZvcihzPXUsdT1bXTsrK2Q8dDspcyYmc1tkXS5ydW4oKTtkPS0xLHQ9dS5sZW5ndGh9cz1udWxsLGM9ITEsZnVuY3Rpb24oZSl7aWYocj09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChyPT09aXx8IXIpJiZjbGVhclRpbWVvdXQpcmV0dXJuIHI9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7cihlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHIuY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiByLmNhbGwodGhpcyxlKX19fShlKX19ZnVuY3Rpb24gbShlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fWZ1bmN0aW9uIGcoKXt9by5uZXh0VGljaz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3UucHVzaChuZXcgbShlLHQpKSwxIT09dS5sZW5ndGh8fGN8fGwoZil9LG0ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LG8udGl0bGU9XCJicm93c2VyXCIsby5icm93c2VyPSEwLG8uZW52PXt9LG8uYXJndj1bXSxvLnZlcnNpb249XCJcIixvLnZlcnNpb25zPXt9LG8ub249ZyxvLmFkZExpc3RlbmVyPWcsby5vbmNlPWcsby5vZmY9ZyxvLnJlbW92ZUxpc3RlbmVyPWcsby5yZW1vdmVBbGxMaXN0ZW5lcnM9ZyxvLmVtaXQ9ZyxvLnByZXBlbmRMaXN0ZW5lcj1nLG8ucHJlcGVuZE9uY2VMaXN0ZW5lcj1nLG8ubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybltdfSxvLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWRcIil9LG8uY3dkPWZ1bmN0aW9uKCl7cmV0dXJuXCIvXCJ9LG8uY2hkaXI9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkXCIpfSxvLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoLTE7cj49MDtyLS0pe3ZhciBvPWVbcl07XCIuXCI9PT1vP2Uuc3BsaWNlKHIsMSk6XCIuLlwiPT09bz8oZS5zcGxpY2UociwxKSxuKyspOm4mJihlLnNwbGljZShyLDEpLG4tLSl9aWYodClmb3IoO24tLTtuKWUudW5zaGlmdChcIi4uXCIpO3JldHVybiBlfXZhciByPS9eKFxcLz98KShbXFxzXFxTXSo/KSgoPzpcXC57MSwyfXxbXlxcL10rP3wpKFxcLlteLlxcL10qfCkpKD86W1xcL10qKSQvLG89ZnVuY3Rpb24oZSl7cmV0dXJuIHIuZXhlYyhlKS5zbGljZSgxKX07ZnVuY3Rpb24gYShlLHQpe2lmKGUuZmlsdGVyKXJldHVybiBlLmZpbHRlcih0KTtmb3IodmFyIG49W10scj0wO3I8ZS5sZW5ndGg7cisrKXQoZVtyXSxyLGUpJiZuLnB1c2goZVtyXSk7cmV0dXJuIG59dC5yZXNvbHZlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVwiXCIscj0hMSxvPWFyZ3VtZW50cy5sZW5ndGgtMTtvPj0tMSYmIXI7by0tKXt2YXIgaT1vPj0wP2FyZ3VtZW50c1tvXTplLmN3ZCgpO2lmKFwic3RyaW5nXCIhPXR5cGVvZiBpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5nc1wiKTtpJiYodD1pK1wiL1wiK3Qscj1cIi9cIj09PWkuY2hhckF0KDApKX1yZXR1cm4ocj9cIi9cIjpcIlwiKSsodD1uKGEodC5zcGxpdChcIi9cIiksZnVuY3Rpb24oZSl7cmV0dXJuISFlfSksIXIpLmpvaW4oXCIvXCIpKXx8XCIuXCJ9LHQubm9ybWFsaXplPWZ1bmN0aW9uKGUpe3ZhciByPXQuaXNBYnNvbHV0ZShlKSxvPVwiL1wiPT09aShlLC0xKTtyZXR1cm4oZT1uKGEoZS5zcGxpdChcIi9cIiksZnVuY3Rpb24oZSl7cmV0dXJuISFlfSksIXIpLmpvaW4oXCIvXCIpKXx8cnx8KGU9XCIuXCIpLGUmJm8mJihlKz1cIi9cIiksKHI/XCIvXCI6XCJcIikrZX0sdC5pc0Fic29sdXRlPWZ1bmN0aW9uKGUpe3JldHVyblwiL1wiPT09ZS5jaGFyQXQoMCl9LHQuam9pbj1mdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gdC5ub3JtYWxpemUoYShlLGZ1bmN0aW9uKGUsdCl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzXCIpO3JldHVybiBlfSkuam9pbihcIi9cIikpfSx0LnJlbGF0aXZlPWZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoJiZcIlwiPT09ZVt0XTt0KyspO2Zvcih2YXIgbj1lLmxlbmd0aC0xO24+PTAmJlwiXCI9PT1lW25dO24tLSk7cmV0dXJuIHQ+bj9bXTplLnNsaWNlKHQsbi10KzEpfWU9dC5yZXNvbHZlKGUpLnN1YnN0cigxKSxuPXQucmVzb2x2ZShuKS5zdWJzdHIoMSk7Zm9yKHZhciBvPXIoZS5zcGxpdChcIi9cIikpLGE9cihuLnNwbGl0KFwiL1wiKSksaT1NYXRoLm1pbihvLmxlbmd0aCxhLmxlbmd0aCksbD1pLHM9MDtzPGk7cysrKWlmKG9bc10hPT1hW3NdKXtsPXM7YnJlYWt9dmFyIHU9W107Zm9yKHM9bDtzPG8ubGVuZ3RoO3MrKyl1LnB1c2goXCIuLlwiKTtyZXR1cm4odT11LmNvbmNhdChhLnNsaWNlKGwpKSkuam9pbihcIi9cIil9LHQuc2VwPVwiL1wiLHQuZGVsaW1pdGVyPVwiOlwiLHQuZGlybmFtZT1mdW5jdGlvbihlKXt2YXIgdD1vKGUpLG49dFswXSxyPXRbMV07cmV0dXJuIG58fHI/KHImJihyPXIuc3Vic3RyKDAsci5sZW5ndGgtMSkpLG4rcik6XCIuXCJ9LHQuYmFzZW5hbWU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1vKGUpWzJdO3JldHVybiB0JiZuLnN1YnN0cigtMSp0Lmxlbmd0aCk9PT10JiYobj1uLnN1YnN0cigwLG4ubGVuZ3RoLXQubGVuZ3RoKSksbn0sdC5leHRuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiBvKGUpWzNdfTt2YXIgaT1cImJcIj09PVwiYWJcIi5zdWJzdHIoLTEpP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5zdWJzdHIodCxuKX06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PDAmJih0PWUubGVuZ3RoK3QpLGUuc3Vic3RyKHQsbil9fSkuY2FsbCh0aGlzLG4oOTkpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1cInN0cmluZ1wiPT10eXBlb2YgZT9lLmNoYXJDb2RlQXQoMCk6ZTtyZXR1cm4gdD49OTcmJnQ8PTEyMnx8dD49NjUmJnQ8PTkwfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz17cG9zaXRpb246ITAsZ2ZtOiEwLGNvbW1vbm1hcms6ITEsZm9vdG5vdGVzOiExLHBlZGFudGljOiExLGJsb2NrczpuKDMwNCl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LG49MCxvPTAsYT1lLmNoYXJBdChuKSxpPXt9O2Zvcig7YSBpbiByOyl0PXJbYV0sbys9dCx0PjEmJihvPU1hdGguZmxvb3Ioby90KSp0KSxpW29dPW4sYT1lLmNoYXJBdCgrK24pO3JldHVybntpbmRlbnQ6byxzdG9wczppfX07dmFyIHI9e1wiIFwiOjEsXCJcXHRcIjo0fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPVwiPFtBLVphLXpdW0EtWmEtejAtOVxcXFwtXSooPzpcXFxccytbYS16QS1aXzpdW2EtekEtWjAtOTouXy1dKig/OlxcXFxzKj1cXFxccyooPzpbXlxcXCInPTw+YFxcXFx1MDAwMC1cXFxcdTAwMjBdK3wnW14nXSonfFxcXCJbXlxcXCJdKlxcXCIpKT8pKlxcXFxzKlxcXFwvPz5cIixvPVwiPFxcXFwvW0EtWmEtel1bQS1aYS16MC05XFxcXC1dKlxcXFxzKj5cIjt0Lm9wZW5DbG9zZVRhZz1uZXcgUmVnRXhwKFwiXig/OlwiK3IrXCJ8XCIrbytcIilcIiksdC50YWc9bmV3IFJlZ0V4cChcIl4oPzpcIityK1wifFwiK28rXCJ8XFx4M2MhLS0tLVxceDNlfFxceDNjIS0tKD86LT9bXj4tXSkoPzotP1teLV0pKi0tXFx4M2V8PFs/XS4qP1s/XT58PCFbQS1aYS16XStcXFxccytbXj5dKj58PCFcXFxcW0NEQVRBXFxcXFtbXFxcXHNcXFxcU10qP1xcXFxdXFxcXF0+KVwiKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBlLmluZGV4T2YoXCI8XCIsdCl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pbmRleE9mKFwiW1wiLHQpLHI9ZS5pbmRleE9mKFwiIVtcIix0KTtpZigtMT09PXIpcmV0dXJuIG47cmV0dXJuIG48cj9uOnJ9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobigxMDgpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oOSkpLGE9cihuKDQpKSxpPXIobig1KSksbD1yKG4oMCkpLHM9KHIobigxKSkscihuKDYpKSksdT0obig3KSxyKG4oOCkpKSxjPWZ1bmN0aW9uKGUpe3JldHVybntyb290Ontwb3NpdGlvbjpcInJlbGF0aXZlXCIsZGlzcGxheTpcImZsZXhcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCIsanVzdGlmeUNvbnRlbnQ6XCJjZW50ZXJcIixmbGV4U2hyaW5rOjAsd2lkdGg6NDAsaGVpZ2h0OjQwLGZvbnRGYW1pbHk6ZS50eXBvZ3JhcGh5LmZvbnRGYW1pbHksZm9udFNpemU6ZS50eXBvZ3JhcGh5LnB4VG9SZW0oMjApLGJvcmRlclJhZGl1czpcIjUwJVwiLG92ZXJmbG93OlwiaGlkZGVuXCIsdXNlclNlbGVjdDpcIm5vbmVcIn0sY29sb3JEZWZhdWx0Ontjb2xvcjplLnBhbGV0dGUuYmFja2dyb3VuZC5kZWZhdWx0LGJhY2tncm91bmRDb2xvcjpcImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT9lLnBhbGV0dGUuZ3JleVs0MDBdOmUucGFsZXR0ZS5ncmV5WzYwMF19LGltZzp7d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLHRleHRBbGlnbjpcImNlbnRlclwiLG9iamVjdEZpdDpcImNvdmVyXCJ9fX07ZnVuY3Rpb24gZChlKXt2YXIgdD1lLmFsdCxuPWUuY2hpbGRyZW4scj1lLmNoaWxkcmVuQ2xhc3NOYW1lLHU9ZS5jbGFzc2VzLGM9ZS5jbGFzc05hbWUsZD1lLmNvbXBvbmVudCxwPWUuaW1nUHJvcHMsZj1lLnNpemVzLG09ZS5zcmMsZz1lLnNyY1NldCxoPSgwLGkuZGVmYXVsdCkoZSxbXCJhbHRcIixcImNoaWxkcmVuXCIsXCJjaGlsZHJlbkNsYXNzTmFtZVwiLFwiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb21wb25lbnRcIixcImltZ1Byb3BzXCIsXCJzaXplc1wiLFwic3JjXCIsXCJzcmNTZXRcIl0pLGI9bnVsbCx5PW18fGc7cmV0dXJuIGI9eT9sLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImltZ1wiLCgwLGEuZGVmYXVsdCkoe2FsdDp0LHNyYzptLHNyY1NldDpnLHNpemVzOmYsY2xhc3NOYW1lOnUuaW1nfSxwKSk6ciYmbC5kZWZhdWx0LmlzVmFsaWRFbGVtZW50KG4pP2wuZGVmYXVsdC5jbG9uZUVsZW1lbnQobix7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkocixuLnByb3BzLmNsYXNzTmFtZSl9KTpuLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGQsKDAsYS5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkodS5yb290LHUuc3lzdGVtLCgwLG8uZGVmYXVsdCkoe30sdS5jb2xvckRlZmF1bHQsIXkpLGMpfSxoKSxiKX10LnN0eWxlcz1jLGQuZGVmYXVsdFByb3BzPXtjb21wb25lbnQ6XCJkaXZcIn07dmFyIHA9KDAsdS5kZWZhdWx0KShjLHtuYW1lOlwiTXVpQXZhdGFyXCJ9KShkKTt0LmRlZmF1bHQ9cH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDtyKG4oMjkpKSxuKDM5KTt2YXIgbz1mdW5jdGlvbigpe3JldHVybiBudWxsfTtvLmlzUmVxdWlyZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH07dmFyIGE9bzt0LmRlZmF1bHQ9YX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zcGVjaWFsUHJvcGVydHk9dm9pZCAwO3Iobig5KSkscihuKDQpKTt2YXIgbz1cImV4YWN0LXByb3A6IOKAi1wiO3Quc3BlY2lhbFByb3BlcnR5PW87dmFyIGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9O3QuZGVmYXVsdD1hfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRGdW5jdGlvbk5hbWU9byx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPS9eXFxzKmZ1bmN0aW9uKD86XFxzfFxccypcXC9cXCouKlxcKlxcL1xccyopKyhbXihcXHNcXC9dKilcXHMqLztmdW5jdGlvbiBvKGUpe3ZhciB0PVwiXCIuY29uY2F0KGUpLm1hdGNoKHIpO3JldHVybiB0JiZ0WzFdfHxcIlwifXZhciBhPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6ZT9lLmRpc3BsYXlOYW1lfHxlLm5hbWV8fG8oZSl8fFwiQ29tcG9uZW50XCI6dm9pZCAwfTt0LmRlZmF1bHQ9YX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmJiZzZWxmLk1hdGg9PU1hdGg/c2VsZjpGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNyZWF0ZT10LmNyZWF0ZUdlbmVyYXRlQ2xhc3NOYW1lPXQuc2hlZXRzPXQuUnVsZUxpc3Q9dC5TaGVldHNNYW5hZ2VyPXQuU2hlZXRzUmVnaXN0cnk9dC50b0Nzc1ZhbHVlPXQuZ2V0RHluYW1pY1N0eWxlcz12b2lkIDA7dmFyIHI9bigzNjEpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZ2V0RHluYW1pY1N0eWxlc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkKHIpLmRlZmF1bHR9fSk7dmFyIG89big0Nik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJ0b0Nzc1ZhbHVlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGQobykuZGVmYXVsdH19KTt2YXIgYT1uKDExNSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJTaGVldHNSZWdpc3RyeVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkKGEpLmRlZmF1bHR9fSk7dmFyIGk9bigzNjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiU2hlZXRzTWFuYWdlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkKGkpLmRlZmF1bHR9fSk7dmFyIGw9bigzNSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJSdWxlTGlzdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkKGwpLmRlZmF1bHR9fSk7dmFyIHM9big2NSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJzaGVldHNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZChzKS5kZWZhdWx0fX0pO3ZhciB1PW4oMTE4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImNyZWF0ZUdlbmVyYXRlQ2xhc3NOYW1lXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGQodSkuZGVmYXVsdH19KTt2YXIgYz1kKG4oMzY4KSk7ZnVuY3Rpb24gZChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHA9dC5jcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBjLmRlZmF1bHQoZSl9O3QuZGVmYXVsdD1wKCl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpO3ZhciBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy5yZWdpc3RyeT1bXX1yZXR1cm4gcihlLFt7a2V5OlwiYWRkXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5yZWdpc3RyeSxuPWUub3B0aW9ucy5pbmRleDtpZigtMT09PXQuaW5kZXhPZihlKSlpZigwPT09dC5sZW5ndGh8fG4+PXRoaXMuaW5kZXgpdC5wdXNoKGUpO2Vsc2UgZm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspaWYodFtyXS5vcHRpb25zLmluZGV4Pm4pcmV0dXJuIHZvaWQgdC5zcGxpY2UociwwLGUpfX0se2tleTpcInJlc2V0XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlZ2lzdHJ5PVtdfX0se2tleTpcInJlbW92ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucmVnaXN0cnkuaW5kZXhPZihlKTt0aGlzLnJlZ2lzdHJ5LnNwbGljZSh0LDEpfX0se2tleTpcInRvU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVnaXN0cnkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmF0dGFjaGVkfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKGUpfSkuam9pbihcIlxcblwiKX19LHtrZXk6XCJpbmRleFwiLGdldDpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5yZWdpc3RyeS5sZW5ndGg/MDp0aGlzLnJlZ2lzdHJ5W3RoaXMucmVnaXN0cnkubGVuZ3RoLTFdLm9wdGlvbnMuaW5kZXh9fV0pLGV9KCk7dC5kZWZhdWx0PW99LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcixvPW4oMzY0KSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTt0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmVbYS5kZWZhdWx0XSYmZT09PWVbYS5kZWZhdWx0XSgpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe2UucmVuZGVyYWJsZT10LGUucnVsZXMmJnQuY3NzUnVsZXMmJmUucnVsZXMubGluayh0LmNzc1J1bGVzKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1hKG4oMjgpKSxvPShhKG4oMTE5KSksYShuKDM2NykpKTtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10LmRlZmF1bHQ9ZnVuY3Rpb24oKXt2YXIgZT0wO3JldHVybiBmdW5jdGlvbih0LG4peyhlKz0xKT4xZTEwJiYoMCxyLmRlZmF1bHQpKCExLFwiW0pTU10gWW91IG1pZ2h0IGhhdmUgYSBtZW1vcnkgbGVhay4gUnVsZSBjb3VudGVyIGlzIGF0ICVzLlwiLGUpO3ZhciBhPVwiY1wiLGk9XCJcIjtyZXR1cm4gbiYmKGE9bi5vcHRpb25zLmNsYXNzTmFtZVByZWZpeHx8XCJjXCIsbnVsbCE9bi5vcHRpb25zLmpzcy5pZCYmKGkrPW4ub3B0aW9ucy5qc3MuaWQpKSxcIlwiK2Erby5kZWZhdWx0K2krZX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9bChuKDExNykpLGk9bChuKDM1KSk7ZnVuY3Rpb24gbChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7dmFyIG89dGhpcztmb3IodmFyIGEgaW4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpLHRoaXMudXBkYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/by5ydWxlcy51cGRhdGUoZSx0KTpvLnJ1bGVzLnVwZGF0ZShlKSxvfSx0aGlzLmF0dGFjaGVkPSExLHRoaXMuZGVwbG95ZWQ9ITEsdGhpcy5saW5rZWQ9ITEsdGhpcy5jbGFzc2VzPXt9LHRoaXMub3B0aW9ucz1yKHt9LG4se3NoZWV0OnRoaXMscGFyZW50OnRoaXMsY2xhc3Nlczp0aGlzLmNsYXNzZXN9KSx0aGlzLnJlbmRlcmVyPW5ldyBuLlJlbmRlcmVyKHRoaXMpLHRoaXMucnVsZXM9bmV3IGkuZGVmYXVsdCh0aGlzLm9wdGlvbnMpLHQpdGhpcy5ydWxlcy5hZGQoYSx0W2FdKTt0aGlzLnJ1bGVzLnByb2Nlc3MoKX1yZXR1cm4gbyhlLFt7a2V5OlwiYXR0YWNoXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRhY2hlZD90aGlzOih0aGlzLmRlcGxveWVkfHx0aGlzLmRlcGxveSgpLHRoaXMucmVuZGVyZXIuYXR0YWNoKCksIXRoaXMubGlua2VkJiZ0aGlzLm9wdGlvbnMubGluayYmdGhpcy5saW5rKCksdGhpcy5hdHRhY2hlZD0hMCx0aGlzKX19LHtrZXk6XCJkZXRhY2hcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dGFjaGVkPyh0aGlzLnJlbmRlcmVyLmRldGFjaCgpLHRoaXMuYXR0YWNoZWQ9ITEsdGhpcyk6dGhpc319LHtrZXk6XCJhZGRSdWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMucXVldWU7dGhpcy5hdHRhY2hlZCYmIXImJih0aGlzLnF1ZXVlPVtdKTt2YXIgbz10aGlzLnJ1bGVzLmFkZChlLHQsbik7cmV0dXJuIHRoaXMub3B0aW9ucy5qc3MucGx1Z2lucy5vblByb2Nlc3NSdWxlKG8pLHRoaXMuYXR0YWNoZWQ/dGhpcy5kZXBsb3llZD8ocj9yLnB1c2gobyk6KHRoaXMuaW5zZXJ0UnVsZShvKSx0aGlzLnF1ZXVlJiYodGhpcy5xdWV1ZS5mb3JFYWNoKHRoaXMuaW5zZXJ0UnVsZSx0aGlzKSx0aGlzLnF1ZXVlPXZvaWQgMCkpLG8pOm86KHRoaXMuZGVwbG95ZWQ9ITEsbyl9fSx7a2V5OlwiaW5zZXJ0UnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucmVuZGVyZXIuaW5zZXJ0UnVsZShlKTt0JiZ0aGlzLm9wdGlvbnMubGluayYmKDAsYS5kZWZhdWx0KShlLHQpfX0se2tleTpcImFkZFJ1bGVzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2godGhpcy5hZGRSdWxlKHIsZVtyXSx0KSk7cmV0dXJuIG59fSx7a2V5OlwiZ2V0UnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJ1bGVzLmdldChlKX19LHtrZXk6XCJkZWxldGVSdWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ydWxlcy5nZXQoZSk7cmV0dXJuISF0JiYodGhpcy5ydWxlcy5yZW1vdmUodCksIXRoaXMuYXR0YWNoZWR8fCF0LnJlbmRlcmFibGV8fHRoaXMucmVuZGVyZXIuZGVsZXRlUnVsZSh0LnJlbmRlcmFibGUpKX19LHtrZXk6XCJpbmRleE9mXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucnVsZXMuaW5kZXhPZihlKX19LHtrZXk6XCJkZXBsb3lcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlcmVyLmRlcGxveSgpLHRoaXMuZGVwbG95ZWQ9ITAsdGhpc319LHtrZXk6XCJsaW5rXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlbmRlcmVyLmdldFJ1bGVzKCk7cmV0dXJuIGUmJnRoaXMucnVsZXMubGluayhlKSx0aGlzLmxpbmtlZD0hMCx0aGlzfX0se2tleTpcInRvU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucnVsZXMudG9TdHJpbmcoZSl9fV0pLGV9KCk7dC5kZWZhdWx0PXN9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDM4MSkpLGE9cihuKDM4MikpLGk9cihuKDM4MykpLGw9cihuKDM4NSkpLHM9cihuKDM4NykpLHU9cihuKDM5MikpO3ZhciBjPWZ1bmN0aW9uKCl7cmV0dXJue3BsdWdpbnM6WygwLG8uZGVmYXVsdCkoKSwoMCxhLmRlZmF1bHQpKCksKDAsaS5kZWZhdWx0KSgpLCgwLGwuZGVmYXVsdCkoKSxcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93P251bGw6KDAscy5kZWZhdWx0KSgpLCgwLHUuZGVmYXVsdCkoKV19fTt0LmRlZmF1bHQ9Y30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oNCkpO3IobigxNykpLG4oNyk7dmFyIGE9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1lLmJhc2VDbGFzc2VzLG49ZS5uZXdDbGFzc2VzO2lmKGUuQ29tcG9uZW50LCFuKXJldHVybiB0O3ZhciByPSgwLG8uZGVmYXVsdCkoe30sdCk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24oZSl7bltlXSYmKHJbZV09XCJcIi5jb25jYXQodFtlXSxcIiBcIikuY29uY2F0KG5bZV0pKX0pLHJ9O3QuZGVmYXVsdD1hfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZThlYWY2XCIsMTAwOlwiI2M1Y2FlOVwiLDIwMDpcIiM5ZmE4ZGFcIiwzMDA6XCIjNzk4NmNiXCIsNDAwOlwiIzVjNmJjMFwiLDUwMDpcIiMzZjUxYjVcIiw2MDA6XCIjMzk0OWFiXCIsNzAwOlwiIzMwM2Y5ZlwiLDgwMDpcIiMyODM1OTNcIiw5MDA6XCIjMWEyMzdlXCIsQTEwMDpcIiM4YzllZmZcIixBMjAwOlwiIzUzNmRmZVwiLEE0MDA6XCIjM2Q1YWZlXCIsQTcwMDpcIiMzMDRmZmVcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNmY2U0ZWNcIiwxMDA6XCIjZjhiYmQwXCIsMjAwOlwiI2Y0OGZiMVwiLDMwMDpcIiNmMDYyOTJcIiw0MDA6XCIjZWM0MDdhXCIsNTAwOlwiI2U5MWU2M1wiLDYwMDpcIiNkODFiNjBcIiw3MDA6XCIjYzIxODViXCIsODAwOlwiI2FkMTQ1N1wiLDkwMDpcIiM4ODBlNGZcIixBMTAwOlwiI2ZmODBhYlwiLEEyMDA6XCIjZmY0MDgxXCIsQTQwMDpcIiNmNTAwNTdcIixBNzAwOlwiI2M1MTE2MlwifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2ZhZmFmYVwiLDEwMDpcIiNmNWY1ZjVcIiwyMDA6XCIjZWVlZWVlXCIsMzAwOlwiI2UwZTBlMFwiLDQwMDpcIiNiZGJkYmRcIiw1MDA6XCIjOWU5ZTllXCIsNjAwOlwiIzc1NzU3NVwiLDcwMDpcIiM2MTYxNjFcIiw4MDA6XCIjNDI0MjQyXCIsOTAwOlwiIzIxMjEyMVwiLEExMDA6XCIjZDVkNWQ1XCIsQTIwMDpcIiNhYWFhYWFcIixBNDAwOlwiIzMwMzAzMFwiLEE3MDA6XCIjNjE2MTYxXCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZmZlYmVlXCIsMTAwOlwiI2ZmY2RkMlwiLDIwMDpcIiNlZjlhOWFcIiwzMDA6XCIjZTU3MzczXCIsNDAwOlwiI2VmNTM1MFwiLDUwMDpcIiNmNDQzMzZcIiw2MDA6XCIjZTUzOTM1XCIsNzAwOlwiI2QzMmYyZlwiLDgwMDpcIiNjNjI4MjhcIiw5MDA6XCIjYjcxYzFjXCIsQTEwMDpcIiNmZjhhODBcIixBMjAwOlwiI2ZmNTI1MlwiLEE0MDA6XCIjZmYxNzQ0XCIsQTcwMDpcIiNkNTAwMDBcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXtibGFjazpcIiMwMDBcIix3aGl0ZTpcIiNmZmZcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWUuZGFuZ2Vyb3VzbHlVc2VHbG9iYWxDU1Msbj12b2lkIDAhPT10JiZ0LHI9ZS5wcm9kdWN0aW9uUHJlZml4LG89dm9pZCAwPT09cj9cImpzc1wiOnIsaT1lLnNlZWQsbD12b2lkIDA9PT1pP1wiXCI6aSxzPTA7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHMrPTEsbiYmdCYmdC5vcHRpb25zLm5hbWU/XCJcIi5jb25jYXQoYSh0Lm9wdGlvbnMubmFtZSksXCItXCIpLmNvbmNhdChlLmtleSk6XCJcIi5jb25jYXQobykuY29uY2F0KGwpLmNvbmNhdChzKX19O3IobigxNykpO3ZhciBvPS8oW1tcXF0uIyokPjwrfj18XjooKSxcIidgXFxzXSkvZztmdW5jdGlvbiBhKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZShvLFwiLVwiKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQwNikpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oNDA4KSksYT1yKG4oNDEyKSksaT0ocihuKDEzMCkpLHIobigxMzEpKSxmdW5jdGlvbihlKXtyZXR1cm4oMCxvLmRlZmF1bHQpKGZ1bmN0aW9uKGUsdCl7cmV0dXJuISgwLGEuZGVmYXVsdCkoZSx0KX0pKGUpfSk7dC5kZWZhdWx0PWl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobig0MTApKSxhPWZ1bmN0aW9uKGUpe3JldHVybigwLG8uZGVmYXVsdCkoXCJkaXNwbGF5TmFtZVwiLGUpfTt0LmRlZmF1bHQ9YX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDQxMSkpLGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCtcIihcIisoMCxvLmRlZmF1bHQpKGUpK1wiKVwifTt0LmRlZmF1bHQ9YX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDE2KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKCl7dmFyIGU9dGhpcy5jb25zdHJ1Y3Rvci5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHModGhpcy5wcm9wcyx0aGlzLnN0YXRlKTtudWxsIT1lJiZ0aGlzLnNldFN0YXRlKGUpfWZ1bmN0aW9uIG8oZSl7dGhpcy5zZXRTdGF0ZShmdW5jdGlvbih0KXt2YXIgbj10aGlzLmNvbnN0cnVjdG9yLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhlLHQpO3JldHVybiBudWxsIT1uP246bnVsbH0uYmluZCh0aGlzKSl9ZnVuY3Rpb24gYShlLHQpe3RyeXt2YXIgbj10aGlzLnByb3BzLHI9dGhpcy5zdGF0ZTt0aGlzLnByb3BzPWUsdGhpcy5zdGF0ZT10LHRoaXMuX19yZWFjdEludGVybmFsU25hcHNob3RGbGFnPSEwLHRoaXMuX19yZWFjdEludGVybmFsU25hcHNob3Q9dGhpcy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShuLHIpfWZpbmFsbHl7dGhpcy5wcm9wcz1uLHRoaXMuc3RhdGU9cn19ZnVuY3Rpb24gaShlKXt2YXIgdD1lLnByb3RvdHlwZTtpZighdHx8IXQuaXNSZWFjdENvbXBvbmVudCl0aHJvdyBuZXcgRXJyb3IoXCJDYW4gb25seSBwb2x5ZmlsbCBjbGFzcyBjb21wb25lbnRzXCIpO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXJldHVybiBlO3ZhciBuPW51bGwsaT1udWxsLGw9bnVsbDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmNvbXBvbmVudFdpbGxNb3VudD9uPVwiY29tcG9uZW50V2lsbE1vdW50XCI6XCJmdW5jdGlvblwiPT10eXBlb2YgdC5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiYobj1cIlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnRcIiksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzP2k9XCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzXCI6XCJmdW5jdGlvblwiPT10eXBlb2YgdC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmKGk9XCJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc1wiKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmNvbXBvbmVudFdpbGxVcGRhdGU/bD1cImNvbXBvbmVudFdpbGxVcGRhdGVcIjpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiYobD1cIlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlXCIpLG51bGwhPT1ufHxudWxsIT09aXx8bnVsbCE9PWwpe3ZhciBzPWUuZGlzcGxheU5hbWV8fGUubmFtZSx1PVwiZnVuY3Rpb25cIj09dHlwZW9mIGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzP1wiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKClcIjpcImdldFNuYXBzaG90QmVmb3JlVXBkYXRlKClcIjt0aHJvdyBFcnJvcihcIlVuc2FmZSBsZWdhY3kgbGlmZWN5Y2xlcyB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yIGNvbXBvbmVudHMgdXNpbmcgbmV3IGNvbXBvbmVudCBBUElzLlxcblxcblwiK3MrXCIgdXNlcyBcIit1K1wiIGJ1dCBhbHNvIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgbGVnYWN5IGxpZmVjeWNsZXM6XCIrKG51bGwhPT1uP1wiXFxuICBcIituOlwiXCIpKyhudWxsIT09aT9cIlxcbiAgXCIraTpcIlwiKSsobnVsbCE9PWw/XCJcXG4gIFwiK2w6XCJcIikrXCJcXG5cXG5UaGUgYWJvdmUgbGlmZWN5Y2xlcyBzaG91bGQgYmUgcmVtb3ZlZC4gTGVhcm4gbW9yZSBhYm91dCB0aGlzIHdhcm5pbmcgaGVyZTpcXG5odHRwczovL2ZiLm1lL3JlYWN0LWFzeW5jLWNvbXBvbmVudC1saWZlY3ljbGUtaG9va3NcIil9aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMmJih0LmNvbXBvbmVudFdpbGxNb3VudD1yLHQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz1vKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LmNvbXBvbmVudERpZFVwZGF0ZSl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcG9seWZpbGwgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoKSBmb3IgY29tcG9uZW50cyB0aGF0IGRvIG5vdCBkZWZpbmUgY29tcG9uZW50RGlkVXBkYXRlKCkgb24gdGhlIHByb3RvdHlwZVwiKTt0LmNvbXBvbmVudFdpbGxVcGRhdGU9YTt2YXIgYz10LmNvbXBvbmVudERpZFVwZGF0ZTt0LmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEZsYWc/dGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdDpuO2MuY2FsbCh0aGlzLGUsdCxyKX19cmV0dXJuIGV9bi5yKHQpLG4uZCh0LFwicG9seWZpbGxcIixmdW5jdGlvbigpe3JldHVybiBpfSksci5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nPSEwLG8uX19zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZz0hMCxhLl9fc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmc9ITB9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQxOCkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0MjApKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDIyKSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQyNikpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0MjcpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDI4KSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDQzNCksbz1uKDQzNSksYT1uKDQzNik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKGUpfHxvKGUpfHxhKCl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobigwKSkuZGVmYXVsdC5jcmVhdGVDb250ZXh0KHt9KTt0LmRlZmF1bHQ9b30sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUsdCxuKXt2YXIgcixvLGEsaSxsO2Z1bmN0aW9uIHMoKXt2YXIgdT1EYXRlLm5vdygpLWk7dTx0JiZ1Pj0wP3I9c2V0VGltZW91dChzLHQtdSk6KHI9bnVsbCxufHwobD1lLmFwcGx5KGEsbyksYT1vPW51bGwpKX1udWxsPT10JiYodD0xMDApO3ZhciB1PWZ1bmN0aW9uKCl7YT10aGlzLG89YXJndW1lbnRzLGk9RGF0ZS5ub3coKTt2YXIgdT1uJiYhcjtyZXR1cm4gcnx8KHI9c2V0VGltZW91dChzLHQpKSx1JiYobD1lLmFwcGx5KGEsbyksYT1vPW51bGwpLGx9O3JldHVybiB1LmNsZWFyPWZ1bmN0aW9uKCl7ciYmKGNsZWFyVGltZW91dChyKSxyPW51bGwpfSx1LmZsdXNoPWZ1bmN0aW9uKCl7ciYmKGw9ZS5hcHBseShhLG8pLGE9bz1udWxsLGNsZWFyVGltZW91dChyKSxyPW51bGwpfSx1fW4uZGVib3VuY2U9bixlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZcImRlZmF1bHRcImluIGU/ZS5kZWZhdWx0OmV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIG89cihuKDEyKSksYT1yKG4oMTMpKSxpPXIobigxNCkpLGw9cihuKDE1KSkscz1yKG4oMTYpKSx1PXIobigyOSkpLGM9cihuKDUpKSxkPXIobig0KSkscD1yKG4oMCkpO3IobigxKSkscihuKDE3KSk7dmFyIGYsbT0oZj1udWxsLGZ1bmN0aW9uKCl7aWYobnVsbCE9PWYpcmV0dXJuIGY7dmFyIGUsdCxuLHI9ITE7dHJ5e3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidGVzdFwiLG51bGwsKGU9e30sdD1cInBhc3NpdmVcIixuPXtnZXQ6ZnVuY3Rpb24oKXtyPSEwfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxuKSkpfWNhdGNoKGUpe31yZXR1cm4gZj1yLHJ9KCkpLGc9e2NhcHR1cmU6ITEscGFzc2l2ZTohMX07ZnVuY3Rpb24gaChlKXtyZXR1cm4gZCh7fSxnLGUpfWZ1bmN0aW9uIGIoZSx0LG4pe3ZhciByPVtlLHRdO3JldHVybiByLnB1c2gobT9uOm4uY2FwdHVyZSkscn1mdW5jdGlvbiB5KGUsdCxuLHIpe2UuYWRkRXZlbnRMaXN0ZW5lci5hcHBseShlLGIodCxuLHIpKX1mdW5jdGlvbiB2KGUsdCxuLHIpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShlLGIodCxuLHIpKX12YXIgUz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIG8odGhpcyx0KSxpKHRoaXMsbCh0KS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBzKHQsZSksYSh0LFt7a2V5OlwiY29tcG9uZW50RGlkTW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYXBwbHlMaXN0ZW5lcnMoeSl9fSx7a2V5OlwiY29tcG9uZW50RGlkVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5hcHBseUxpc3RlbmVycyh2LGUpLHRoaXMuYXBwbHlMaXN0ZW5lcnMoeSl9fSx7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYXBwbHlMaXN0ZW5lcnModil9fSx7a2V5OlwiYXBwbHlMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5wcm9wcyxuPXQudGFyZ2V0O2lmKG4pe3ZhciByPW47XCJzdHJpbmdcIj09dHlwZW9mIG4mJihyPXdpbmRvd1tuXSksZnVuY3Rpb24oZSx0KXtlLmNoaWxkcmVuLGUudGFyZ2V0O3ZhciBuPWMoZSxbXCJjaGlsZHJlblwiLFwidGFyZ2V0XCJdKTtPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKFwib25cIj09PWUuc3Vic3RyaW5nKDAsMikpe3ZhciByPW5bZV0sbz11KHIpLGE9XCJvYmplY3RcIj09PW87aWYoYXx8XCJmdW5jdGlvblwiPT09byl7dmFyIGk9XCJjYXB0dXJlXCI9PT1lLnN1YnN0cigtNykudG9Mb3dlckNhc2UoKSxsPWUuc3Vic3RyaW5nKDIpLnRvTG93ZXJDYXNlKCk7bD1pP2wuc3Vic3RyaW5nKDAsbC5sZW5ndGgtNyk6bCxhP3QobCxyLmhhbmRsZXIsci5vcHRpb25zKTp0KGwscixoKHtjYXB0dXJlOml9KSl9fX0pfSh0LGUuYmluZChudWxsLHIpKX19fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbnx8bnVsbH19XSksdH0ocC5QdXJlQ29tcG9uZW50KTtTLnByb3BUeXBlcz17fSx0LndpdGhPcHRpb25zPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2hhbmRsZXI6ZSxvcHRpb25zOmgodCl9fSx0LmRlZmF1bHQ9U30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oMTIpKSxhPXIobigxMykpLGk9cihuKDQ0NykpLGw9cihuKDE0NykpLHM9cihuKDI2KSksdT1yKG4oNDU1KSksYz1uKDE0OCk7ZnVuY3Rpb24gZChlLHQpe3ZhciBuPS0xO3JldHVybiBlLnNvbWUoZnVuY3Rpb24oZSxyKXtyZXR1cm4hIXQoZSkmJihuPXIsITApfSksbn1mdW5jdGlvbiBwKGUpe3JldHVybiBwYXJzZUludCgoMCxpLmRlZmF1bHQpKGUsXCJwYWRkaW5nUmlnaHRcIil8fDAsMTApfXZhciBmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTsoMCxvLmRlZmF1bHQpKHRoaXMsZSk7dmFyIG49dC5oaWRlU2libGluZ05vZGVzLHI9dm9pZCAwPT09bnx8bixhPXQuaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3csaT12b2lkIDA9PT1hfHxhO3RoaXMuaGlkZVNpYmxpbmdOb2Rlcz1yLHRoaXMuaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3c9aSx0aGlzLm1vZGFscz1bXSx0aGlzLmRhdGE9W119cmV0dXJuKDAsYS5kZWZhdWx0KShlLFt7a2V5OlwiYWRkXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLm1vZGFscy5pbmRleE9mKGUpO2lmKC0xIT09bilyZXR1cm4gbjtuPXRoaXMubW9kYWxzLmxlbmd0aCx0aGlzLm1vZGFscy5wdXNoKGUpLGUubW9kYWxSZWYmJigwLGMuYXJpYUhpZGRlbikoZS5tb2RhbFJlZiwhMSksdGhpcy5oaWRlU2libGluZ05vZGVzJiYoMCxjLmFyaWFIaWRkZW5TaWJsaW5ncykodCxlLm1vdW50Tm9kZSxlLm1vZGFsUmVmLCEwKTt2YXIgcj1kKHRoaXMuZGF0YSxmdW5jdGlvbihlKXtyZXR1cm4gZS5jb250YWluZXI9PT10fSk7aWYoLTEhPT1yKXJldHVybiB0aGlzLmRhdGFbcl0ubW9kYWxzLnB1c2goZSksbjt2YXIgbz17bW9kYWxzOltlXSxjb250YWluZXI6dCxvdmVyZmxvd2luZzooMCx1LmRlZmF1bHQpKHQpLHByZXZQYWRkaW5nczpbXX07cmV0dXJuIHRoaXMuZGF0YS5wdXNoKG8pLG59fSx7a2V5OlwibW91bnRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1kKHRoaXMuZGF0YSxmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXQubW9kYWxzLmluZGV4T2YoZSl9KSxuPXRoaXMuZGF0YVt0XTshbi5zdHlsZSYmdGhpcy5oYW5kbGVDb250YWluZXJPdmVyZmxvdyYmZnVuY3Rpb24oZSl7ZS5zdHlsZT17b3ZlcmZsb3c6ZS5jb250YWluZXIuc3R5bGUub3ZlcmZsb3cscGFkZGluZ1JpZ2h0OmUuY29udGFpbmVyLnN0eWxlLnBhZGRpbmdSaWdodH07dmFyIHQ9e292ZXJmbG93OlwiaGlkZGVuXCJ9O2lmKGUub3ZlcmZsb3dpbmcpe3ZhciBuPSgwLGwuZGVmYXVsdCkoKTt0LnBhZGRpbmdSaWdodD1cIlwiLmNvbmNhdChwKGUuY29udGFpbmVyKStuLFwicHhcIik7Zm9yKHZhciByPSgwLHMuZGVmYXVsdCkoZS5jb250YWluZXIpLnF1ZXJ5U2VsZWN0b3JBbGwoXCIubXVpLWZpeGVkXCIpLG89MDtvPHIubGVuZ3RoO28rPTEpe3ZhciBhPXAocltvXSk7ZS5wcmV2UGFkZGluZ3MucHVzaChhKSxyW29dLnN0eWxlLnBhZGRpbmdSaWdodD1cIlwiLmNvbmNhdChhK24sXCJweFwiKX19T2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihuKXtlLmNvbnRhaW5lci5zdHlsZVtuXT10W25dfSl9KG4pfX0se2tleTpcInJlbW92ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubW9kYWxzLmluZGV4T2YoZSk7aWYoLTE9PT10KXJldHVybiB0O3ZhciBuPWQodGhpcy5kYXRhLGZ1bmN0aW9uKHQpe3JldHVybi0xIT09dC5tb2RhbHMuaW5kZXhPZihlKX0pLHI9dGhpcy5kYXRhW25dO2lmKHIubW9kYWxzLnNwbGljZShyLm1vZGFscy5pbmRleE9mKGUpLDEpLHRoaXMubW9kYWxzLnNwbGljZSh0LDEpLDA9PT1yLm1vZGFscy5sZW5ndGgpdGhpcy5oYW5kbGVDb250YWluZXJPdmVyZmxvdyYmZnVuY3Rpb24oZSl7ZS5zdHlsZSYmT2JqZWN0LmtleXMoZS5zdHlsZSkuZm9yRWFjaChmdW5jdGlvbih0KXtlLmNvbnRhaW5lci5zdHlsZVt0XT1lLnN0eWxlW3RdfSk7Zm9yKHZhciB0PSgwLHMuZGVmYXVsdCkoZS5jb250YWluZXIpLnF1ZXJ5U2VsZWN0b3JBbGwoXCIubXVpLWZpeGVkXCIpLG49MDtuPHQubGVuZ3RoO24rPTEpdFtuXS5zdHlsZS5wYWRkaW5nUmlnaHQ9XCJcIi5jb25jYXQoZS5wcmV2UGFkZGluZ3Nbbl0sXCJweFwiKX0ociksZS5tb2RhbFJlZiYmKDAsYy5hcmlhSGlkZGVuKShlLm1vZGFsUmVmLCEwKSx0aGlzLmhpZGVTaWJsaW5nTm9kZXMmJigwLGMuYXJpYUhpZGRlblNpYmxpbmdzKShyLmNvbnRhaW5lcixlLm1vdW50Tm9kZSxlLm1vZGFsUmVmLCExKSx0aGlzLmRhdGEuc3BsaWNlKG4sMSk7ZWxzZSBpZih0aGlzLmhpZGVTaWJsaW5nTm9kZXMpe3ZhciBvPXIubW9kYWxzW3IubW9kYWxzLmxlbmd0aC0xXTtvLm1vZGFsUmVmJiYoMCxjLmFyaWFIaWRkZW4pKG8ubW9kYWxSZWYsITEpfXJldHVybiB0fX0se2tleTpcImlzVG9wTW9kYWxcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4hIXRoaXMubW9kYWxzLmxlbmd0aCYmdGhpcy5tb2RhbHNbdGhpcy5tb2RhbHMubGVuZ3RoLTFdPT09ZX19XSksZX0oKTt0LmRlZmF1bHQ9Zn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4oMCxvLmRlZmF1bHQpKGUucmVwbGFjZShhLFwibXMtXCIpKX07dmFyIG89cihuKDQ0OCkpLGE9L14tbXMtLztlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9IShcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO3QuZGVmYXVsdD1yLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7aWYoKCFvJiYwIT09b3x8ZSkmJmEuZGVmYXVsdCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt0LnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix0LnN0eWxlLnRvcD1cIi05OTk5cHhcIix0LnN0eWxlLndpZHRoPVwiNTBweFwiLHQuc3R5bGUuaGVpZ2h0PVwiNTBweFwiLHQuc3R5bGUub3ZlcmZsb3c9XCJzY3JvbGxcIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpLG89dC5vZmZzZXRXaWR0aC10LmNsaWVudFdpZHRoLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCl9cmV0dXJuIG99O3ZhciBvLGE9cihuKDE0NikpO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmFyaWFIaWRkZW49byx0LmFyaWFIaWRkZW5TaWJsaW5ncz1mdW5jdGlvbihlLHQsbixhKXshZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGE9W3Qsbl07W10uZm9yRWFjaC5jYWxsKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSl7LTE9PT1hLmluZGV4T2YoZSkmJmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZSYmLTE9PT1yLmluZGV4T2YoZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpfShlKSYmbyhlKX0pfShlLHQsbixmdW5jdGlvbihlKXtyZXR1cm4gbyhlLGEpfSl9O3ZhciByPVtcInRlbXBsYXRlXCIsXCJzY3JpcHRcIixcInN0eWxlXCJdO2Z1bmN0aW9uIG8oZSx0KXt0P2Uuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIik6ZS5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDApKSxhPXIobigxMjkpKSxpPXIobig1MCkpLGw9by5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIse2Q6XCJNNyAxMGw1IDUgNS01elwifSkscz1mdW5jdGlvbihlKXtyZXR1cm4gby5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaS5kZWZhdWx0LGUsbCl9OyhzPSgwLGEuZGVmYXVsdCkocykpLm11aU5hbWU9XCJTdmdJY29uXCI7dmFyIHU9czt0LmRlZmF1bHQ9dX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMCkpLHM9KHIobigxKSkscihuKDYpKSk7big3KTt2YXIgdT1mdW5jdGlvbihlKXt2YXIgdCxuPWUuY2hpbGRyZW4scj1lLmNsYXNzZXMsdT1lLmNsYXNzTmFtZSxjPWUuZGlzYWJsZWQsZD1lLkljb25Db21wb25lbnQscD1lLmlucHV0UmVmLGY9ZS5uYW1lLG09ZS5vbkNoYW5nZSxnPWUudmFsdWUsaD1lLnZhcmlhbnQsYj0oMCxpLmRlZmF1bHQpKGUsW1wiY2hpbGRyZW5cIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiZGlzYWJsZWRcIixcIkljb25Db21wb25lbnRcIixcImlucHV0UmVmXCIsXCJuYW1lXCIsXCJvbkNoYW5nZVwiLFwidmFsdWVcIixcInZhcmlhbnRcIl0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6ci5yb290fSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNlbGVjdFwiLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHIuc2VsZWN0LCh0PXt9LCgwLGEuZGVmYXVsdCkodCxyLmZpbGxlZCxcImZpbGxlZFwiPT09aCksKDAsYS5kZWZhdWx0KSh0LHIub3V0bGluZWQsXCJvdXRsaW5lZFwiPT09aCksKDAsYS5kZWZhdWx0KSh0LHIuZGlzYWJsZWQsYyksdCksdSksbmFtZTpmLGRpc2FibGVkOmMsb25DaGFuZ2U6bSx2YWx1ZTpnLHJlZjpwfSxiKSxuKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLHtjbGFzc05hbWU6ci5pY29ufSkpfTt0LmRlZmF1bHQ9dX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDY5KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ3MikpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobigwKSkuZGVmYXVsdC5jcmVhdGVDb250ZXh0KCk7dC5kZWZhdWx0PW99LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ3MykpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NzQpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDc2KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ3NykpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NzgpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1vO3ZhciByPW8ucHJvdG90eXBlO2Z1bmN0aW9uIG8oZSx0LG4pe3RoaXMucHJvcGVydHk9ZSx0aGlzLm5vcm1hbD10LG4mJih0aGlzLnNwYWNlPW4pfXIuc3BhY2U9bnVsbCxyLm5vcm1hbD17fSxyLnByb3BlcnR5PXt9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigxNjEpLG89big5NSk7ZnVuY3Rpb24gYShlLHQsbixhKXtpKHRoaXMsXCJzcGFjZVwiLGEpLHIuY2FsbCh0aGlzLGUsdCksaSh0aGlzLFwiYm9vbGVhblwiLGwobixvLmJvb2xlYW4pKSxpKHRoaXMsXCJib29sZWFuaXNoXCIsbChuLG8uYm9vbGVhbmlzaCkpLGkodGhpcyxcIm92ZXJsb2FkZWRCb29sZWFuXCIsbChuLG8ub3ZlcmxvYWRlZEJvb2xlYW4pKSxpKHRoaXMsXCJudW1iZXJcIixsKG4sby5udW1iZXIpKSxpKHRoaXMsXCJjb21tYVNlcGFyYXRlZFwiLGwobixvLmNvbW1hU2VwYXJhdGVkKSksaSh0aGlzLFwic3BhY2VTZXBhcmF0ZWRcIixsKG4sby5zcGFjZVNlcGFyYXRlZCkpLGkodGhpcyxcImNvbW1hT3JTcGFjZVNlcGFyYXRlZFwiLGwobixvLmNvbW1hT3JTcGFjZVNlcGFyYXRlZCkpfWZ1bmN0aW9uIGkoZSx0LG4pe24mJihlW3RdPW4pfWZ1bmN0aW9uIGwoZSx0KXtyZXR1cm4oZSZ0KT09PXR9ZS5leHBvcnRzPWEsYS5wcm90b3R5cGU9bmV3IHIsYS5wcm90b3R5cGUuZGVmaW5lZD0hMH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1vO3ZhciByPW8ucHJvdG90eXBlO2Z1bmN0aW9uIG8oZSx0KXt0aGlzLnByb3BlcnR5PWUsdGhpcy5hdHRyaWJ1dGU9dH1yLnNwYWNlPW51bGwsci5hdHRyaWJ1dGU9bnVsbCxyLnByb3BlcnR5PW51bGwsci5ib29sZWFuPSExLHIuYm9vbGVhbmlzaD0hMSxyLm92ZXJsb2FkZWRCb29sZWFuPSExLHIubnVtYmVyPSExLHIuY29tbWFTZXBhcmF0ZWQ9ITEsci5zcGFjZVNlcGFyYXRlZD0hMSxyLmNvbW1hT3JTcGFjZVNlcGFyYXRlZD0hMSxyLm11c3RVc2VQcm9wZXJ0eT0hMSxyLmRlZmluZWQ9ITF9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDQ5NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSx0LnRvTG93ZXJDYXNlKCkpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuYmFzaWM9e2NvbW1lbnQ6e3BhdHRlcm46Lyg/OiF8UkVNXFxiKS4rL2ksaW5zaWRlOntrZXl3b3JkOi9eUkVNL2l9fSxzdHJpbmc6e3BhdHRlcm46L1wiKD86XCJcInxbISMkJSYnKCkqLFxcLzo7PD0+P15fICtcXC0uQS1aXFxkXSkqXCIvaSxncmVlZHk6ITB9LG51bWJlcjovKD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86RVsrLV0/XFxkKyk/L2ksa2V5d29yZDovXFxiKD86QVN8QkVFUHxCTE9BRHxCU0FWRXxDQUxMKD86IEFCU09MVVRFKT98Q0FTRXxDSEFJTnxDSERJUnxDTEVBUnxDTE9TRXxDTFN8Q09NfENPTU1PTnxDT05TVHxEQVRBfERFQ0xBUkV8REVGKD86IEZOfCBTRUd8REJMfElOVHxMTkd8U05HfFNUUil8RElNfERPfERPVUJMRXxFTFNFfEVMU0VJRnxFTkR8RU5WSVJPTnxFUkFTRXxFUlJPUnxFWElUfEZJRUxEfEZJTEVTfEZPUnxGVU5DVElPTnxHRVR8R09TVUJ8R09UT3xJRnxJTlBVVHxJTlRFR0VSfElPQ1RMfEtFWXxLSUxMfExJTkUgSU5QVVR8TE9DQVRFfExPQ0t8TE9OR3xMT09QfExTRVR8TUtESVJ8TkFNRXxORVhUfE9GRnxPTig/OiBDT018IEVSUk9SfCBLRVl8IFRJTUVSKT98T1BFTnxPUFRJT04gQkFTRXxPVVR8UE9LRXxQVVR8UkVBRHxSRURJTXxSRU18UkVTVE9SRXxSRVNVTUV8UkVUVVJOfFJNRElSfFJTRVR8UlVOfFNIQVJFRHxTSU5HTEV8U0VMRUNUIENBU0V8U0hFTEx8U0xFRVB8U1RBVElDfFNURVB8U1RPUHxTVFJJTkd8U1VCfFNXQVB8U1lTVEVNfFRIRU58VElNRVJ8VE98VFJPRkZ8VFJPTnxUWVBFfFVOTE9DS3xVTlRJTHxVU0lOR3xWSUVXIFBSSU5UfFdBSVR8V0VORHxXSElMRXxXUklURSkoPzpcXCR8XFxiKS9pLGZ1bmN0aW9uOi9cXGIoPzpBQlN8QUNDRVNTfEFDT1N8QU5HTEV8QVJFQXxBUklUSE1FVElDfEFSUkFZfEFTSU58QVNLfEFUfEFUTnxCQVNFfEJFR0lOfEJSRUFLfENBVVNFfENFSUx8Q0hSfENMSVB8Q09MTEFURXxDT0xPUnxDT058Q09TfENPU0h8Q09UfENTQ3xEQVRFfERBVFVNfERFQlVHfERFQ0lNQUx8REVGfERFR3xERUdSRUVTfERFTEVURXxERVR8REVWSUNFfERJU1BMQVl8RE9UfEVMQVBTRUR8RVBTfEVSQVNBQkxFfEVYTElORXxFWFB8RVhURVJOQUx8RVhUWVBFfEZJTEVUWVBFfEZJWEVEfEZQfEdPfEdSQVBIfEhBTkRMRVJ8SUROfElNQUdFfElOfElOVHxJTlRFUk5BTHxJUHxJU3xLRVlFRHxMQk9VTkR8TENBU0V8TEVGVHxMRU58TEVOR1RIfExFVHxMSU5FfExJTkVTfExPR3xMT0cxMHxMT0cyfExUUklNfE1BUkdJTnxNQVR8TUFYfE1BWE5VTXxNSUR8TUlOfE1JU1NJTkd8TU9EfE5BVElWRXxOVUx8TlVNRVJJQ3xPRnxPUFRJT058T1JEfE9SR0FOSVpBVElPTnxPVVRJTnxPVVRQVVR8UEl8UE9JTlR8UE9JTlRFUnxQT0lOVFN8UE9TfFBSSU5UfFBST0dSQU18UFJPTVBUfFJBRHxSQURJQU5TfFJBTkRPTUlaRXxSRUNPUkR8UkVDU0laRXxSRUNUWVBFfFJFTEFUSVZFfFJFTUFJTkRFUnxSRVBFQVR8UkVTVHxSRVRSWXxSRVdSSVRFfFJJR0hUfFJORHxST1VORHxSVFJJTXxTQU1FfFNFQ3xTRUxFQ1R8U0VRVUVOVElBTHxTRVR8U0VUVEVSfFNHTnxTSU58U0lOSHxTSVpFfFNLSVB8U1FSfFNUQU5EQVJEfFNUQVRVU3xTVFJ8U1RSRUFNfFNUWUxFfFRBQnxUQU58VEFOSHxURU1QTEFURXxURVhUfFRIRVJFfFRJTUV8VElNRU9VVHxUUkFDRXxUUkFOU0ZPUk18VFJVTkNBVEV8VUJPVU5EfFVDQVNFfFVTRXxWQUx8VkFSSUFCTEV8VklFV1BPUlR8V0hFTnxXSU5ET1d8V0lUSHxaRVJ8Wk9ORVdJRFRIKSg/OlxcJHxcXGIpL2ksb3BlcmF0b3I6LzxbPT5dP3w+PT98WytcXC0qXFwvXj0mXXxcXGIoPzpBTkR8RVFWfElNUHxOT1R8T1J8WE9SKVxcYi9pLHB1bmN0dWF0aW9uOi9bLDs6KCldL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImJhc2ljXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5qYXZhPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2tleXdvcmQ6L1xcYig/OmFic3RyYWN0fGNvbnRpbnVlfGZvcnxuZXd8c3dpdGNofGFzc2VydHxkZWZhdWx0fGdvdG98cGFja2FnZXxzeW5jaHJvbml6ZWR8Ym9vbGVhbnxkb3xpZnxwcml2YXRlfHRoaXN8YnJlYWt8ZG91YmxlfGltcGxlbWVudHN8cHJvdGVjdGVkfHRocm93fGJ5dGV8ZWxzZXxpbXBvcnR8cHVibGljfHRocm93c3xjYXNlfGVudW18aW5zdGFuY2VvZnxyZXR1cm58dHJhbnNpZW50fGNhdGNofGV4dGVuZHN8aW50fHNob3J0fHRyeXxjaGFyfGZpbmFsfGludGVyZmFjZXxzdGF0aWN8dm9pZHxjbGFzc3xmaW5hbGx5fGxvbmd8c3RyaWN0ZnB8dm9sYXRpbGV8Y29uc3R8ZmxvYXR8bmF0aXZlfHN1cGVyfHdoaWxlKVxcYi8sbnVtYmVyOi9cXGIwYlswMV0rXFxifFxcYjB4W1xcZGEtZl0qXFwuP1tcXGRhLWZwLV0rXFxifCg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OmVbKy1dP1xcZCspP1tkZl0/L2ksb3BlcmF0b3I6e3BhdHRlcm46LyhefFteLl0pKD86XFwrWys9XT98LVstPV0/fCE9P3w8PD89P3w+Pj8+Pz0/fD09P3wmWyY9XT98XFx8W3w9XT98XFwqPT98XFwvPT98JT0/fFxcXj0/fFs/On5dKS9tLGxvb2tiZWhpbmQ6ITB9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiamF2YVwiLFwiZnVuY3Rpb25cIix7YW5ub3RhdGlvbjp7YWxpYXM6XCJwdW5jdHVhdGlvblwiLHBhdHRlcm46LyhefFteLl0pQFxcdysvLGxvb2tiZWhpbmQ6ITB9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiamF2YVwiLFwiY2xhc3MtbmFtZVwiLHtnZW5lcmljczp7cGF0dGVybjovPFxccypcXHcrKD86XFwuXFx3Kyk/KD86XFxzKixcXHMqXFx3Kyg/OlxcLlxcdyspPykqPi9pLGFsaWFzOlwiZnVuY3Rpb25cIixpbnNpZGU6e2tleXdvcmQ6ZS5sYW5ndWFnZXMuamF2YS5rZXl3b3JkLHB1bmN0dWF0aW9uOi9bPD4oKSwuOl0vfX19KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiamF2YVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe3ZhciB0PWUudXRpbC5jbG9uZShlLmxhbmd1YWdlcy5qYXZhc2NyaXB0KTtlLmxhbmd1YWdlcy5qc3g9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwibWFya3VwXCIsdCksZS5sYW5ndWFnZXMuanN4LnRhZy5wYXR0ZXJuPS88XFwvPyg/OltcXHcuOi1dK1xccyooPzpcXHMrKD86W1xcdy46LV0rKD86PSg/OihcInwnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxfFteXFxzeydcIj49XSt8XFx7KD86XFx7KD86XFx7W159XSpcXH18W157fV0pKlxcfXxbXnt9XSkrXFx9KSk/fFxce1xcLnszfVthLXpfJF1bXFx3JF0qKD86XFwuW2Etel8kXVtcXHckXSopKlxcfSkpKlxccypcXC8/KT8+L2ksZS5sYW5ndWFnZXMuanN4LnRhZy5pbnNpZGUudGFnLnBhdHRlcm49L148XFwvP1teXFxzPlxcL10qL2ksZS5sYW5ndWFnZXMuanN4LnRhZy5pbnNpZGVbXCJhdHRyLXZhbHVlXCJdLnBhdHRlcm49Lz0oPyFcXHspKD86KFwifCcpKD86XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKSpcXDF8W15cXHMnXCI+XSspL2ksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiaW5zaWRlXCIsXCJhdHRyLW5hbWVcIix7c3ByZWFkOntwYXR0ZXJuOi9cXHtcXC57M31bYS16XyRdW1xcdyRdKig/OlxcLlthLXpfJF1bXFx3JF0qKSpcXH0vLGluc2lkZTp7cHVuY3R1YXRpb246L1xcLnszfXxbe30uXS8sXCJhdHRyLXZhbHVlXCI6L1xcdysvfX19LGUubGFuZ3VhZ2VzLmpzeC50YWcpLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImluc2lkZVwiLFwiYXR0ci12YWx1ZVwiLHtzY3JpcHQ6e3BhdHRlcm46Lz0oXFx7KD86XFx7KD86XFx7W159XSpcXH18W159XSkqXFx9fFtefV0pK1xcfSkvaSxpbnNpZGU6e1wic2NyaXB0LXB1bmN0dWF0aW9uXCI6e3BhdHRlcm46L149KD89eykvLGFsaWFzOlwicHVuY3R1YXRpb25cIn0scmVzdDplLmxhbmd1YWdlcy5qc3h9LGFsaWFzOlwibGFuZ3VhZ2UtamF2YXNjcmlwdFwifX0sZS5sYW5ndWFnZXMuanN4LnRhZyk7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuIGU/XCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpcInN0cmluZ1wiPT10eXBlb2YgZS5jb250ZW50P2UuY29udGVudDplLmNvbnRlbnQubWFwKG4pLmpvaW4oXCJcIik6XCJcIn0scj1mdW5jdGlvbih0KXtmb3IodmFyIG89W10sYT0wO2E8dC5sZW5ndGg7YSsrKXt2YXIgaT10W2FdLGw9ITE7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGkmJihcInRhZ1wiPT09aS50eXBlJiZpLmNvbnRlbnRbMF0mJlwidGFnXCI9PT1pLmNvbnRlbnRbMF0udHlwZT9cIjwvXCI9PT1pLmNvbnRlbnRbMF0uY29udGVudFswXS5jb250ZW50P28ubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0udGFnTmFtZT09PW4oaS5jb250ZW50WzBdLmNvbnRlbnRbMV0pJiZvLnBvcCgpOlwiLz5cIj09PWkuY29udGVudFtpLmNvbnRlbnQubGVuZ3RoLTFdLmNvbnRlbnR8fG8ucHVzaCh7dGFnTmFtZTpuKGkuY29udGVudFswXS5jb250ZW50WzFdKSxvcGVuZWRCcmFjZXM6MH0pOm8ubGVuZ3RoPjAmJlwicHVuY3R1YXRpb25cIj09PWkudHlwZSYmXCJ7XCI9PT1pLmNvbnRlbnQ/b1tvLmxlbmd0aC0xXS5vcGVuZWRCcmFjZXMrKzpvLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdLm9wZW5lZEJyYWNlcz4wJiZcInB1bmN0dWF0aW9uXCI9PT1pLnR5cGUmJlwifVwiPT09aS5jb250ZW50P29bby5sZW5ndGgtMV0ub3BlbmVkQnJhY2VzLS06bD0hMCksKGx8fFwic3RyaW5nXCI9PXR5cGVvZiBpKSYmby5sZW5ndGg+MCYmMD09PW9bby5sZW5ndGgtMV0ub3BlbmVkQnJhY2VzKXt2YXIgcz1uKGkpO2E8dC5sZW5ndGgtMSYmKFwic3RyaW5nXCI9PXR5cGVvZiB0W2ErMV18fFwicGxhaW4tdGV4dFwiPT09dFthKzFdLnR5cGUpJiYocys9bih0W2ErMV0pLHQuc3BsaWNlKGErMSwxKSksYT4wJiYoXCJzdHJpbmdcIj09dHlwZW9mIHRbYS0xXXx8XCJwbGFpbi10ZXh0XCI9PT10W2EtMV0udHlwZSkmJihzPW4odFthLTFdKStzLHQuc3BsaWNlKGEtMSwxKSxhLS0pLHRbYV09bmV3IGUuVG9rZW4oXCJwbGFpbi10ZXh0XCIscyxudWxsLHMpfWkuY29udGVudCYmXCJzdHJpbmdcIiE9dHlwZW9mIGkuY29udGVudCYmcihpLmNvbnRlbnQpfX07ZS5ob29rcy5hZGQoXCJhZnRlci10b2tlbml6ZVwiLGZ1bmN0aW9uKGUpe1wianN4XCIhPT1lLmxhbmd1YWdlJiZcInRzeFwiIT09ZS5sYW5ndWFnZXx8cihlLnRva2Vucyl9KX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImpzeFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLnBocD1lLmxhbmd1YWdlcy5leHRlbmQoXCJjbGlrZVwiLHtrZXl3b3JkOi9cXGIoPzphbmR8b3J8eG9yfGFycmF5fGFzfGJyZWFrfGNhc2V8Y2Z1bmN0aW9ufGNsYXNzfGNvbnN0fGNvbnRpbnVlfGRlY2xhcmV8ZGVmYXVsdHxkaWV8ZG98ZWxzZXxlbHNlaWZ8ZW5kZGVjbGFyZXxlbmRmb3J8ZW5kZm9yZWFjaHxlbmRpZnxlbmRzd2l0Y2h8ZW5kd2hpbGV8ZXh0ZW5kc3xmb3J8Zm9yZWFjaHxmdW5jdGlvbnxpbmNsdWRlfGluY2x1ZGVfb25jZXxnbG9iYWx8aWZ8bmV3fHJldHVybnxzdGF0aWN8c3dpdGNofHVzZXxyZXF1aXJlfHJlcXVpcmVfb25jZXx2YXJ8d2hpbGV8YWJzdHJhY3R8aW50ZXJmYWNlfHB1YmxpY3xpbXBsZW1lbnRzfHByaXZhdGV8cHJvdGVjdGVkfHBhcmVudHx0aHJvd3xudWxsfGVjaG98cHJpbnR8dHJhaXR8bmFtZXNwYWNlfGZpbmFsfHlpZWxkfGdvdG98aW5zdGFuY2VvZnxmaW5hbGx5fHRyeXxjYXRjaClcXGIvaSxjb25zdGFudDovXFxiW0EtWjAtOV9dezIsfVxcYi8sY29tbWVudDp7cGF0dGVybjovKF58W15cXFxcXSkoPzpcXC9cXCpbXFxzXFxTXSo/XFwqXFwvfFxcL1xcLy4qKS8sbG9va2JlaGluZDohMH19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJwaHBcIixcInN0cmluZ1wiLHtcInNoZWxsLWNvbW1lbnRcIjp7cGF0dGVybjovKF58W15cXFxcXSkjLiovLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJjb21tZW50XCJ9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwicGhwXCIsXCJrZXl3b3JkXCIse2RlbGltaXRlcjp7cGF0dGVybjovXFw/Pnw8XFw/KD86cGhwfD0pPy9pLGFsaWFzOlwiaW1wb3J0YW50XCJ9LHZhcmlhYmxlOi9cXCQrKD86XFx3K1xcYnwoPz17KSkvaSxwYWNrYWdlOntwYXR0ZXJuOi8oXFxcXHxuYW1lc3BhY2VcXHMrfHVzZVxccyspW1xcd1xcXFxdKy8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cXFxcL319fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwicGhwXCIsXCJvcGVyYXRvclwiLHtwcm9wZXJ0eTp7cGF0dGVybjovKC0+KVtcXHddKy8sbG9va2JlaGluZDohMH19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJwaHBcIixcInN0cmluZ1wiLHtcIm5vd2RvYy1zdHJpbmdcIjp7cGF0dGVybjovPDw8JyhbXiddKyknKD86XFxyXFxuP3xcXG4pKD86LiooPzpcXHJcXG4/fFxcbikpKj9cXDE7LyxncmVlZHk6ITAsYWxpYXM6XCJzdHJpbmdcIixpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXjw8PCdbXiddKyd8W2Etel9dXFx3KjskL2ksYWxpYXM6XCJzeW1ib2xcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi9ePDw8Jz98Wyc7XSQvfX19fSxcImhlcmVkb2Mtc3RyaW5nXCI6e3BhdHRlcm46Lzw8PCg/OlwiKFteXCJdKylcIig/Olxcclxcbj98XFxuKSg/Oi4qKD86XFxyXFxuP3xcXG4pKSo/XFwxO3woW2Etel9dXFx3KikoPzpcXHJcXG4/fFxcbikoPzouKig/Olxcclxcbj98XFxuKSkqP1xcMjspL2ksZ3JlZWR5OiEwLGFsaWFzOlwic3RyaW5nXCIsaW5zaWRlOntkZWxpbWl0ZXI6e3BhdHRlcm46L148PDwoPzpcIlteXCJdK1wifFthLXpfXVxcdyopfFthLXpfXVxcdyo7JC9pLGFsaWFzOlwic3ltYm9sXCIsaW5zaWRlOntwdW5jdHVhdGlvbjovXjw8PFwiP3xbXCI7XSQvfX0saW50ZXJwb2xhdGlvbjpudWxsfX0sXCJzaW5nbGUtcXVvdGVkLXN0cmluZ1wiOntwYXR0ZXJuOi8nKD86XFxcXFtcXHNcXFNdfFteXFxcXCddKSonLyxncmVlZHk6ITAsYWxpYXM6XCJzdHJpbmdcIn0sXCJkb3VibGUtcXVvdGVkLXN0cmluZ1wiOntwYXR0ZXJuOi9cIig/OlxcXFxbXFxzXFxTXXxbXlxcXFxcIl0pKlwiLyxncmVlZHk6ITAsYWxpYXM6XCJzdHJpbmdcIixpbnNpZGU6e2ludGVycG9sYXRpb246bnVsbH19fSksZGVsZXRlIGUubGFuZ3VhZ2VzLnBocC5zdHJpbmc7dmFyIHQ9e3BhdHRlcm46L3tcXCQoPzp7KD86e1tee31dK318W157fV0rKX18W157fV0pK318KF58W15cXFxce10pXFwkKyg/OlxcdysoPzpcXFsuKz9dfC0+XFx3KykqKS8sbG9va2JlaGluZDohMCxpbnNpZGU6e3Jlc3Q6ZS5sYW5ndWFnZXMucGhwfX07ZS5sYW5ndWFnZXMucGhwW1wiaGVyZWRvYy1zdHJpbmdcIl0uaW5zaWRlLmludGVycG9sYXRpb249dCxlLmxhbmd1YWdlcy5waHBbXCJkb3VibGUtcXVvdGVkLXN0cmluZ1wiXS5pbnNpZGUuaW50ZXJwb2xhdGlvbj10LGUuaG9va3MuYWRkKFwiYmVmb3JlLXRva2VuaXplXCIsZnVuY3Rpb24odCl7aWYoLyg/OjxcXD9waHB8PFxcPykvZ2kudGVzdCh0LmNvZGUpKXtlLmxhbmd1YWdlc1tcIm1hcmt1cC10ZW1wbGF0aW5nXCJdLmJ1aWxkUGxhY2Vob2xkZXJzKHQsXCJwaHBcIiwvKD86PFxcP3BocHw8XFw/KVtcXHNcXFNdKj8oPzpcXD8+fCQpL2dpKX19KSxlLmhvb2tzLmFkZChcImFmdGVyLXRva2VuaXplXCIsZnVuY3Rpb24odCl7ZS5sYW5ndWFnZXNbXCJtYXJrdXAtdGVtcGxhdGluZ1wiXS50b2tlbml6ZVBsYWNlaG9sZGVycyh0LFwicGhwXCIpfSl9KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJwaHBcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnNxbD17Y29tbWVudDp7cGF0dGVybjovKF58W15cXFxcXSkoPzpcXC9cXCpbXFxzXFxTXSo/XFwqXFwvfCg/Oi0tfFxcL1xcL3wjKS4qKS8sbG9va2JlaGluZDohMH0sc3RyaW5nOntwYXR0ZXJuOi8oXnxbXkBcXFxcXSkoXCJ8JykoPzpcXFxcW1xcc1xcU118KD8hXFwyKVteXFxcXF0pKlxcMi8sZ3JlZWR5OiEwLGxvb2tiZWhpbmQ6ITB9LHZhcmlhYmxlOi9AW1xcdy4kXSt8QChbXCInYF0pKD86XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKStcXDEvLGZ1bmN0aW9uOi9cXGIoPzpBVkd8Q09VTlR8RklSU1R8Rk9STUFUfExBU1R8TENBU0V8TEVOfE1BWHxNSUR8TUlOfE1PRHxOT1d8Uk9VTkR8U1VNfFVDQVNFKSg/PVxccypcXCgpL2ksa2V5d29yZDovXFxiKD86QUNUSU9OfEFERHxBRlRFUnxBTEdPUklUSE18QUxMfEFMVEVSfEFOQUxZWkV8QU5ZfEFQUExZfEFTfEFTQ3xBVVRIT1JJWkFUSU9OfEFVVE9fSU5DUkVNRU5UfEJBQ0tVUHxCREJ8QkVHSU58QkVSS0VMRVlEQnxCSUdJTlR8QklOQVJZfEJJVHxCTE9CfEJPT0x8Qk9PTEVBTnxCUkVBS3xCUk9XU0V8QlRSRUV8QlVMS3xCWXxDQUxMfENBU0NBREVEP3xDQVNFfENIQUlOfENIQVIoPzpBQ1RFUnxTRVQpP3xDSEVDSyg/OlBPSU5UKT98Q0xPU0V8Q0xVU1RFUkVEfENPQUxFU0NFfENPTExBVEV8Q09MVU1OUz98Q09NTUVOVHxDT01NSVQoPzpURUQpP3xDT01QVVRFfENPTk5FQ1R8Q09OU0lTVEVOVHxDT05TVFJBSU5UfENPTlRBSU5TKD86VEFCTEUpP3xDT05USU5VRXxDT05WRVJUfENSRUFURXxDUk9TU3xDVVJSRU5UKD86X0RBVEV8X1RJTUV8X1RJTUVTVEFNUHxfVVNFUik/fENVUlNPUnxDWUNMRXxEQVRBKD86QkFTRVM/KT98REFURSg/OlRJTUUpP3xEQVl8REJDQ3xERUFMTE9DQVRFfERFQ3xERUNJTUFMfERFQ0xBUkV8REVGQVVMVHxERUZJTkVSfERFTEFZRUR8REVMRVRFfERFTElNSVRFUlM/fERFTll8REVTQ3xERVNDUklCRXxERVRFUk1JTklTVElDfERJU0FCTEV8RElTQ0FSRHxESVNLfERJU1RJTkNUfERJU1RJTkNUUk9XfERJU1RSSUJVVEVEfERPfERPVUJMRXxEUk9QfERVTU1ZfERVTVAoPzpGSUxFKT98RFVQTElDQVRFfEVMU0UoPzpJRik/fEVOQUJMRXxFTkNMT1NFRHxFTkR8RU5HSU5FfEVOVU18RVJSTFZMfEVSUk9SU3xFU0NBUEVEP3xFWENFUFR8RVhFQyg/OlVURSk/fEVYSVNUU3xFWElUfEVYUExBSU58RVhURU5ERUR8RkVUQ0h8RklFTERTfEZJTEV8RklMTEZBQ1RPUnxGSVJTVHxGSVhFRHxGTE9BVHxGT0xMT1dJTkd8Rk9SKD86IEVBQ0ggUk9XKT98Rk9SQ0V8Rk9SRUlHTnxGUkVFVEVYVCg/OlRBQkxFKT98RlJPTXxGVUxMfEZVTkNUSU9OfEdFT01FVFJZKD86Q09MTEVDVElPTik/fEdMT0JBTHxHT1RPfEdSQU5UfEdST1VQfEhBTkRMRVJ8SEFTSHxIQVZJTkd8SE9MRExPQ0t8SE9VUnxJREVOVElUWSg/Ol9JTlNFUlR8Q09MKT98SUZ8SUdOT1JFfElNUE9SVHxJTkRFWHxJTkZJTEV8SU5ORVJ8SU5OT0RCfElOT1VUfElOU0VSVHxJTlR8SU5URUdFUnxJTlRFUlNFQ1R8SU5URVJWQUx8SU5UT3xJTlZPS0VSfElTT0xBVElPTnxJVEVSQVRFfEpPSU58S0VZUz98S0lMTHxMQU5HVUFHRXxMQVNUfExFQVZFfExFRlR8TEVWRUx8TElNSVR8TElORU5PfExJTkVTfExJTkVTVFJJTkd8TE9BRHxMT0NBTHxMT0NLfExPTkcoPzpCTE9CfFRFWFQpfExPT1B8TUFUQ0goPzpFRCk/fE1FRElVTSg/OkJMT0J8SU5UfFRFWFQpfE1FUkdFfE1JRERMRUlOVHxNSU5VVEV8TU9ERXxNT0RJRklFU3xNT0RJRll8TU9OVEh8TVVMVEkoPzpMSU5FU1RSSU5HfFBPSU5UfFBPTFlHT04pfE5BVElPTkFMfE5BVFVSQUx8TkNIQVJ8TkVYVHxOT3xOT05DTFVTVEVSRUR8TlVMTElGfE5VTUVSSUN8T0ZGP3xPRkZTRVRTP3xPTnxPUEVOKD86REFUQVNPVVJDRXxRVUVSWXxST1dTRVQpP3xPUFRJTUlaRXxPUFRJT04oPzpBTExZKT98T1JERVJ8T1VUKD86RVJ8RklMRSk/fE9WRVJ8UEFSVElBTHxQQVJUSVRJT058UEVSQ0VOVHxQSVZPVHxQTEFOfFBPSU5UfFBPTFlHT058UFJFQ0VESU5HfFBSRUNJU0lPTnxQUkVQQVJFfFBSRVZ8UFJJTUFSWXxQUklOVHxQUklWSUxFR0VTfFBST0MoPzpFRFVSRSk/fFBVQkxJQ3xQVVJHRXxRVUlDS3xSQUlTRVJST1J8UkVBRFM/fFJFQUx8UkVDT05GSUdVUkV8UkVGRVJFTkNFU3xSRUxFQVNFfFJFTkFNRXxSRVBFQVQoPzpBQkxFKT98UkVQTEFDRXxSRVBMSUNBVElPTnxSRVFVSVJFfFJFU0lHTkFMfFJFU1RPUkV8UkVTVFJJQ1R8UkVUVVJOUz98UkVWT0tFfFJJR0hUfFJPTExCQUNLfFJPVVRJTkV8Uk9XKD86Q09VTlR8R1VJRENPTHxTKT98UlRSRUV8UlVMRXxTQVZFKD86UE9JTlQpP3xTQ0hFTUF8U0VDT05EfFNFTEVDVHxTRVJJQUwoPzpJWkFCTEUpP3xTRVNTSU9OKD86X1VTRVIpP3xTRVQoPzpVU0VSKT98U0hBUkV8U0hPV3xTSFVURE9XTnxTSU1QTEV8U01BTExJTlR8U05BUFNIT1R8U09NRXxTT05BTUV8U1FMfFNUQVJUKD86SU5HKT98U1RBVElTVElDU3xTVEFUVVN8U1RSSVBFRHxTWVNURU1fVVNFUnxUQUJMRVM/fFRBQkxFU1BBQ0V8VEVNUCg/Ok9SQVJZfFRBQkxFKT98VEVSTUlOQVRFRHxURVhUKD86U0laRSk/fFRIRU58VElNRSg/OlNUQU1QKT98VElOWSg/OkJMT0J8SU5UfFRFWFQpfFRPUD98VFJBTig/OlNBQ1RJT05TPyk/fFRSSUdHRVJ8VFJVTkNBVEV8VFNFUVVBTHxUWVBFUz98VU5CT1VOREVEfFVOQ09NTUlUVEVEfFVOREVGSU5FRHxVTklPTnxVTklRVUV8VU5MT0NLfFVOUElWT1R8VU5TSUdORUR8VVBEQVRFKD86VEVYVCk/fFVTQUdFfFVTRXxVU0VSfFVTSU5HfFZBTFVFUz98VkFSKD86QklOQVJZfENIQVJ8Q0hBUkFDVEVSfFlJTkcpfFZJRVd8V0FJVEZPUnxXQVJOSU5HU3xXSEVOfFdIRVJFfFdISUxFfFdJVEgoPzogUk9MTFVQfElOKT98V09SS3xXUklURSg/OlRFWFQpP3xZRUFSKVxcYi9pLGJvb2xlYW46L1xcYig/OlRSVUV8RkFMU0V8TlVMTClcXGIvaSxudW1iZXI6L1xcYjB4W1xcZGEtZl0rXFxifFxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrXFxiL2ksb3BlcmF0b3I6L1stKypcXC89JV5+XXwmJj98XFx8XFx8P3whPT98PCg/Oj0+P3w8fD4pP3w+Wz49XT98XFxiKD86QU5EfEJFVFdFRU58SU58TElLRXxOT1R8T1J8SVN8RElWfFJFR0VYUHxSTElLRXxTT1VORFMgTElLRXxYT1IpXFxiL2kscHVuY3R1YXRpb246L1s7W1xcXSgpYCwuXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJzcWxcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnR5cGVzY3JpcHQ9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiamF2YXNjcmlwdFwiLHtrZXl3b3JkOi9cXGIoPzphc3xhc3luY3xhd2FpdHxicmVha3xjYXNlfGNhdGNofGNsYXNzfGNvbnN0fGNvbnRpbnVlfGRlYnVnZ2VyfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZW51bXxleHBvcnR8ZXh0ZW5kc3xmaW5hbGx5fGZvcnxmcm9tfGZ1bmN0aW9ufGdldHxpZnxpbXBsZW1lbnRzfGltcG9ydHxpbnxpbnN0YW5jZW9mfGludGVyZmFjZXxsZXR8bmV3fG51bGx8b2Z8cGFja2FnZXxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8cmV0dXJufHNldHxzdGF0aWN8c3VwZXJ8c3dpdGNofHRoaXN8dGhyb3d8dHJ5fHR5cGVvZnx2YXJ8dm9pZHx3aGlsZXx3aXRofHlpZWxkfG1vZHVsZXxkZWNsYXJlfGNvbnN0cnVjdG9yfG5hbWVzcGFjZXxhYnN0cmFjdHxyZXF1aXJlfHR5cGUpXFxiLyxidWlsdGluOi9cXGIoPzpzdHJpbmd8RnVuY3Rpb258YW55fG51bWJlcnxib29sZWFufEFycmF5fHN5bWJvbHxjb25zb2xlKVxcYi99KSxlLmxhbmd1YWdlcy50cz1lLmxhbmd1YWdlcy50eXBlc2NyaXB0fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJ0eXBlc2NyaXB0XCIsci5hbGlhc2VzPVtcInRzXCJdfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gbnVsbCE9ZSYmKFwib2JqZWN0XCI9PXR8fFwiZnVuY3Rpb25cIj09dCl9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big2NzEpLG89XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9cnx8b3x8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNzApLlN5bWJvbDtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uLnArXCIwYzU5NzcwYjViM2ZhNWEyYWY0YzI1Y2VhMjRjMTE2MS5zdmdcIn0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uLnArXCI5NjlhMzRiZTcwZjYxMzU2N2FhZTY3Mzg4YTY0NmM1YS5zdmdcIn0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uLnArXCJmZDBjMmI0NmE2OWMzNDcxNTIyMDI0ZWRmNjg3NGUzMy5zdmdcIn0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uLnArXCIxYjFhM2EyOTY3NDk5NzVmN2IwMjQ0M2I4MTRmM2JkMi5zdmdcIn0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uLnArXCI0MGNjMGVmNjlhMDE4MTE0NGNiNjUwMDU1ZmM3MmU3OS5zdmdcIn0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uLnArXCJiNDE3ZDc1MjJiNjY4ZWEyZTQzN2RiODRmNDliYzAxMi5zdmdcIn0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uLnArXCI3NWM0NDYwNDZjMmY4NGUwNDkyNjBiODQ3OWYzNjIyNi5zdmdcIn0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uLnArXCJlYjEwNmUxN2VjOThiNTAzYTllYTFiNWE0NTJhNDRlNi5zdmdcIn0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uLnArXCI3MTNkMWJhMGQ1ODBjYzBhMzNhNDI0ZWFiMWU3Mjc3OS5zdmdcIn0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uLnArXCI0N2QxMDFhMGI0Mzk5NmE5YzYwMDgxNmNmMjEwNzc0Mi5zdmdcIn0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uLnArXCIxYjJhMzIxNmJiM2RjYzViMmRjZTc1MWJlY2E0MzQwYy5zdmdcIn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLG49bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07cmV0dXJuIG59fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8XCJbb2JqZWN0IEFyZ3VtZW50c11cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfSgpfXZhciBvPW4oMjMpLGE9bigyNzUpLGk9bigyODgpLGw9bigxKSxzPW4oMzQ2KSx1PW4oMzQ4KSxjPW4oMzQ5KSxkPW4oMzUwKSxwPW4oMzUxKSxmPW4oMzUyKSxtPW4oMzUzKSxnPW4oMzU0KSxoPW4oMzU1KSxiPU9iamVjdC5rZXlzKGcpLHk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zb3VyY2V8fGUuY2hpbGRyZW58fFwiXCI7aWYoZS5hbGxvd2VkVHlwZXMmJmUuZGlzYWxsb3dlZFR5cGVzKXRocm93IG5ldyBFcnJvcihcIk9ubHkgb25lIG9mIGBhbGxvd2VkVHlwZXNgIGFuZCBgZGlzYWxsb3dlZFR5cGVzYCBzaG91bGQgYmUgZGVmaW5lZFwiKTt2YXIgbj1vKGcsZS5yZW5kZXJlcnMpLHI9W2ldLmNvbmNhdChlLnBsdWdpbnN8fFtdKS5yZWR1Y2UodixhKCkpLnBhcnNlKHQpLGw9byhlLHtyZW5kZXJlcnM6bixkZWZpbml0aW9uczpmKHIpfSksbT1mdW5jdGlvbihlKXt2YXIgdD1bcCxzKCldLG49ZS5kaXNhbGxvd2VkVHlwZXM7ZS5hbGxvd2VkVHlwZXMmJihuPWIuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVyblwicm9vdFwiIT09dCYmLTE9PT1lLmFsbG93ZWRUeXBlcy5pbmRleE9mKHQpfSkpO3ZhciByPWUudW53cmFwRGlzYWxsb3dlZD9cInVud3JhcFwiOlwicmVtb3ZlXCI7biYmbi5sZW5ndGg+MCYmdC5wdXNoKGMub2ZUeXBlKG4scikpO2UuYWxsb3dOb2RlJiZ0LnB1c2goYy5pZk5vdE1hdGNoKGUuYWxsb3dOb2RlLHIpKTt2YXIgbz0hZS5lc2NhcGVIdG1sJiYhZS5za2lwSHRtbCxhPShlLmFzdFBsdWdpbnN8fFtdKS5zb21lKGZ1bmN0aW9uKGUpe3ZhciB0PUFycmF5LmlzQXJyYXkoZSk/ZVswXTplO3JldHVybiB0LmlkZW50aXR5PT09aC5IdG1sUGFyc2VyfSk7byYmIWEmJnQucHVzaCh1KTtyZXR1cm4gZS5hc3RQbHVnaW5zP3QuY29uY2F0KGUuYXN0UGx1Z2lucyk6dH0oZSkucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQoZSxsKX0scik7cmV0dXJuIGQobSxsKX07ZnVuY3Rpb24gdihlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP2UudXNlLmFwcGx5KGUscih0KSk6ZS51c2UodCl9eS5kZWZhdWx0UHJvcHM9e3JlbmRlcmVyczp7fSxlc2NhcGVIdG1sOiEwLHNraXBIdG1sOiExLHNvdXJjZVBvczohMSxyYXdTb3VyY2VQb3M6ITEsdHJhbnNmb3JtTGlua1VyaTptLGFzdFBsdWdpbnM6W10scGx1Z2luczpbXX0seS5wcm9wVHlwZXM9e2NsYXNzTmFtZTpsLnN0cmluZyxzb3VyY2U6bC5zdHJpbmcsY2hpbGRyZW46bC5zdHJpbmcsc291cmNlUG9zOmwuYm9vbCxyYXdTb3VyY2VQb3M6bC5ib29sLGVzY2FwZUh0bWw6bC5ib29sLHNraXBIdG1sOmwuYm9vbCxhbGxvd05vZGU6bC5mdW5jLGFsbG93ZWRUeXBlczpsLmFycmF5T2YobC5vbmVPZihiKSksZGlzYWxsb3dlZFR5cGVzOmwuYXJyYXlPZihsLm9uZU9mKGIpKSx0cmFuc2Zvcm1MaW5rVXJpOmwub25lT2ZUeXBlKFtsLmZ1bmMsbC5ib29sXSksbGlua1RhcmdldDpsLm9uZU9mVHlwZShbbC5mdW5jLGwuc3RyaW5nXSksdHJhbnNmb3JtSW1hZ2VVcmk6bC5mdW5jLGFzdFBsdWdpbnM6bC5hcnJheU9mKGwuZnVuYyksdW53cmFwRGlzYWxsb3dlZDpsLmJvb2wscmVuZGVyZXJzOmwub2JqZWN0LHBsdWdpbnM6bC5hcnJheX0seS50eXBlcz1iLHkucmVuZGVyZXJzPWcseS51cmlUcmFuc2Zvcm1lcj1tLGUuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXt2YXIgdCxuPWUuU3ltYm9sO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIG4/bi5vYnNlcnZhYmxlP3Q9bi5vYnNlcnZhYmxlOih0PW4oXCJvYnNlcnZhYmxlXCIpLG4ub2JzZXJ2YWJsZT10KTp0PVwiQEBvYnNlcnZhYmxlXCIsdH1uLmQodCxcImFcIixmdW5jdGlvbigpe3JldHVybiByfSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDQ4Nik7ZS5leHBvcnRzPXIsci5yZWdpc3RlcihuKDUwNykpLHIucmVnaXN0ZXIobig1MDgpKSxyLnJlZ2lzdGVyKG4oNTA5KSksci5yZWdpc3RlcihuKDUxMCkpLHIucmVnaXN0ZXIobig1MTEpKSxyLnJlZ2lzdGVyKG4oNTEyKSksci5yZWdpc3RlcihuKDUxMykpLHIucmVnaXN0ZXIobig1MTQpKSxyLnJlZ2lzdGVyKG4oNTE1KSksci5yZWdpc3RlcihuKDUxNikpLHIucmVnaXN0ZXIobig1MTcpKSxyLnJlZ2lzdGVyKG4oNTE4KSksci5yZWdpc3RlcihuKDUxOSkpLHIucmVnaXN0ZXIobig1MjApKSxyLnJlZ2lzdGVyKG4oMTYzKSksci5yZWdpc3RlcihuKDUyMSkpLHIucmVnaXN0ZXIobig1MjIpKSxyLnJlZ2lzdGVyKG4oNTIzKSksci5yZWdpc3RlcihuKDUyNCkpLHIucmVnaXN0ZXIobigzNCkpLHIucmVnaXN0ZXIobig1MjUpKSxyLnJlZ2lzdGVyKG4oNTI2KSksci5yZWdpc3RlcihuKDk2KSksci5yZWdpc3RlcihuKDUyNykpLHIucmVnaXN0ZXIobig1MjgpKSxyLnJlZ2lzdGVyKG4oNTI5KSksci5yZWdpc3RlcihuKDUzMCkpLHIucmVnaXN0ZXIobig1MzEpKSxyLnJlZ2lzdGVyKG4oNTMyKSksci5yZWdpc3RlcihuKDUzMykpLHIucmVnaXN0ZXIobig1MzQpKSxyLnJlZ2lzdGVyKG4oNTM1KSksci5yZWdpc3RlcihuKDUzNikpLHIucmVnaXN0ZXIobig1MzcpKSxyLnJlZ2lzdGVyKG4oNTM4KSksci5yZWdpc3RlcihuKDUzOSkpLHIucmVnaXN0ZXIobig1NDApKSxyLnJlZ2lzdGVyKG4oNTQxKSksci5yZWdpc3RlcihuKDU0MikpLHIucmVnaXN0ZXIobig1NDMpKSxyLnJlZ2lzdGVyKG4oNTQ0KSksci5yZWdpc3RlcihuKDU0NSkpLHIucmVnaXN0ZXIobig1NDYpKSxyLnJlZ2lzdGVyKG4oNTQ3KSksci5yZWdpc3RlcihuKDU0OCkpLHIucmVnaXN0ZXIobig1NDkpKSxyLnJlZ2lzdGVyKG4oNTUwKSksci5yZWdpc3RlcihuKDU1MSkpLHIucmVnaXN0ZXIobig1NTIpKSxyLnJlZ2lzdGVyKG4oNTUzKSksci5yZWdpc3RlcihuKDU1NCkpLHIucmVnaXN0ZXIobig1NTUpKSxyLnJlZ2lzdGVyKG4oNTU2KSksci5yZWdpc3RlcihuKDU1NykpLHIucmVnaXN0ZXIobig1NTgpKSxyLnJlZ2lzdGVyKG4oNTU5KSksci5yZWdpc3RlcihuKDU2MCkpLHIucmVnaXN0ZXIobig1NjEpKSxyLnJlZ2lzdGVyKG4oNTYyKSksci5yZWdpc3RlcihuKDU2MykpLHIucmVnaXN0ZXIobigxNjQpKSxyLnJlZ2lzdGVyKG4oNTY0KSksci5yZWdpc3RlcihuKDU2NSkpLHIucmVnaXN0ZXIobigxNjUpKSxyLnJlZ2lzdGVyKG4oNTY2KSksci5yZWdpc3RlcihuKDU2NykpLHIucmVnaXN0ZXIobig1NjgpKSxyLnJlZ2lzdGVyKG4oNTY5KSksci5yZWdpc3RlcihuKDU3MCkpLHIucmVnaXN0ZXIobig1NzEpKSxyLnJlZ2lzdGVyKG4oNTcyKSksci5yZWdpc3RlcihuKDU3MykpLHIucmVnaXN0ZXIobig1NzQpKSxyLnJlZ2lzdGVyKG4oNTc1KSksci5yZWdpc3RlcihuKDU3NikpLHIucmVnaXN0ZXIobig1NzcpKSxyLnJlZ2lzdGVyKG4oNTc4KSksci5yZWdpc3RlcihuKDU3OSkpLHIucmVnaXN0ZXIobig1ODApKSxyLnJlZ2lzdGVyKG4oNTgxKSksci5yZWdpc3RlcihuKDU4MikpLHIucmVnaXN0ZXIobig1ODMpKSxyLnJlZ2lzdGVyKG4oNTg0KSksci5yZWdpc3RlcihuKDU4NSkpLHIucmVnaXN0ZXIobig1ODYpKSxyLnJlZ2lzdGVyKG4oNTg3KSksci5yZWdpc3RlcihuKDU4OCkpLHIucmVnaXN0ZXIobig1ODkpKSxyLnJlZ2lzdGVyKG4oNTkwKSksci5yZWdpc3RlcihuKDU5MSkpLHIucmVnaXN0ZXIobig1OTIpKSxyLnJlZ2lzdGVyKG4oNTkzKSksci5yZWdpc3RlcihuKDU5NCkpLHIucmVnaXN0ZXIobig1OTUpKSxyLnJlZ2lzdGVyKG4oNTk2KSksci5yZWdpc3RlcihuKDU5NykpLHIucmVnaXN0ZXIobigxNjYpKSxyLnJlZ2lzdGVyKG4oNTk4KSksci5yZWdpc3RlcihuKDU5OSkpLHIucmVnaXN0ZXIobig2MDApKSxyLnJlZ2lzdGVyKG4oNjAxKSksci5yZWdpc3RlcihuKDYwMikpLHIucmVnaXN0ZXIobig2MDMpKSxyLnJlZ2lzdGVyKG4oNjA0KSksci5yZWdpc3RlcihuKDYwNSkpLHIucmVnaXN0ZXIobig2MDYpKSxyLnJlZ2lzdGVyKG4oNjA3KSksci5yZWdpc3RlcihuKDYwOCkpLHIucmVnaXN0ZXIobig2MDkpKSxyLnJlZ2lzdGVyKG4oNjEwKSksci5yZWdpc3RlcihuKDYxMSkpLHIucmVnaXN0ZXIobig2MTIpKSxyLnJlZ2lzdGVyKG4oNjEzKSksci5yZWdpc3RlcihuKDYxNCkpLHIucmVnaXN0ZXIobig2MTUpKSxyLnJlZ2lzdGVyKG4oOTcpKSxyLnJlZ2lzdGVyKG4oNjE2KSksci5yZWdpc3RlcihuKDYxNykpLHIucmVnaXN0ZXIobig2MTgpKSxyLnJlZ2lzdGVyKG4oNjE5KSksci5yZWdpc3RlcihuKDYyMCkpLHIucmVnaXN0ZXIobig2MjEpKSxyLnJlZ2lzdGVyKG4oNjIyKSksci5yZWdpc3RlcihuKDYyMykpLHIucmVnaXN0ZXIobig2MjQpKSxyLnJlZ2lzdGVyKG4oMTY3KSksci5yZWdpc3RlcihuKDYyNSkpLHIucmVnaXN0ZXIobig2MjYpKSxyLnJlZ2lzdGVyKG4oNjI3KSksci5yZWdpc3RlcihuKDYyOCkpLHIucmVnaXN0ZXIobig2MjkpKSxyLnJlZ2lzdGVyKG4oNjMwKSksci5yZWdpc3RlcihuKDYzMSkpLHIucmVnaXN0ZXIobig2MzIpKSxyLnJlZ2lzdGVyKG4oMTY4KSksci5yZWdpc3RlcihuKDYzMykpLHIucmVnaXN0ZXIobig2MzQpKSxyLnJlZ2lzdGVyKG4oNjM1KSksci5yZWdpc3RlcihuKDYzNikpLHIucmVnaXN0ZXIobig2MzcpKSxyLnJlZ2lzdGVyKG4oNjM4KSksci5yZWdpc3RlcihuKDYzOSkpLHIucmVnaXN0ZXIobig2NDApKSxyLnJlZ2lzdGVyKG4oNjQxKSksci5yZWdpc3RlcihuKDY0MikpLHIucmVnaXN0ZXIobig2NDMpKSxyLnJlZ2lzdGVyKG4oNjQ0KSl9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big2NjgpO2NvbnN0IHI9J2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuaW1wb3J0IHsgQUxMX0ZSVUlUUyB9IGZyb20gXCIuL2NvbW1vblwiO1xcclxcblxcclxcbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMoc2VhcmNoU3RyaW5nKSB7XFxyXFxuICAgIHJldHVybiBBTExfRlJVSVRTXFxyXFxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCkpKTtcXHJcXG59XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzaWNEZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBmdWxsV2lkdGhcXHJcXG4gICAgICAgIC8+XFxyXFxuICAgICk7XFxyXFxufVxcclxcbicsbz1cIlVzZXMgYSBzaW1wbGUgaW4tbWVtb3J5IGFycmF5IG1hdGNoZWQgYWdhaW5zdCB0aGUgaW5wdXQgc3RyaW5nIHdpdGggbG93ZXIgY2FzZSBtYXRjaGluZy5cIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKTt0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLGw9MTtsPHQ7bCsrKW5bbC0xXT1hcmd1bWVudHNbbF07cmV0dXJuIGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG8oKXt2YXIgZSx0LHI7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxvKTtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxsPUFycmF5KGEpLHU9MDt1PGE7dSsrKWxbdV09YXJndW1lbnRzW3VdO3JldHVybiByPXModGhpcywoZT1vLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKG8pKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChsKSkpLHQ9cixyLnVwZGF0ZURlYm91bmNlZD1pLmRlZmF1bHQuYXBwbHkodm9pZCAwLFtyLmZvcmNlVXBkYXRlXS5jb25jYXQobikpLHMocix0KX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0obyx0KSxyKG8sW3trZXk6XCJzaG91bGRDb21wb25lbnRVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVwZGF0ZURlYm91bmNlZCgpLCExfX0se2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZURlYm91bmNlZC5jYW5jZWwoKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChlLHRoaXMucHJvcHMpfX1dKSxvfShvLkNvbXBvbmVudCl9O3ZhciBvPW4oMCksYT1sKG8pLGk9bChuKDY2OSkpO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHMoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIXR8fFwib2JqZWN0XCIhPXR5cGVvZiB0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0P2U6dH19LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big2NzgpO2NvbnN0IHI9J2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuaW1wb3J0IHsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jLCBBTExfRlJVSVRTIH0gZnJvbSBcIi4vY29tbW9uXCI7XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2hpcHNXcmFwRGVtbygpIHtcXHJcXG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZShBTExfRlJVSVRTKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBmdWxsV2lkdGhcXHJcXG4gICAgICAgIC8+XFxyXFxuICAgICk7XFxyXFxufVxcclxcbicsbz1cIklmIHRoZXJlIGFyZSB0b28gbWFueSBzZWxlY3RlZCBpdGVtcywgdGhlIHBpY2tlciB3aWxsIGF1dG9tYXRpY2FsbHkgZXhwYW5kIHZlcnRpY2FsbHkgdG8gbWFrZSByb29tLlwiO2UuZXhwb3J0cy5kZWZhdWx0JiYoZS5leHBvcnRzLmRlZmF1bHQuX19zb3VyY2VfXz1yLGUuZXhwb3J0cy5kZWZhdWx0Ll9fbWFya2Rvd25fXz1vKSxlLmV4cG9ydHMuX19zb3VyY2U9cixlLmV4cG9ydHMuX19tYXJrZG93bl9fPW99LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big2NzkpO2NvbnN0IHI9J2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuaW1wb3J0IHsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jLCBBTExfRlJVSVRTIH0gZnJvbSBcIi4vY29tbW9uXCI7XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGlzYWJsZWREZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKEFMTF9GUlVJVFMuc2xpY2UoMCwgMikpO1xcclxcbiAgICByZXR1cm4gKFxcclxcbiAgICAgICAgPE11bHRpUGlja2VyXFxyXFxuICAgICAgICAgICAgdmFsdWU9eyBpdGVtcyB9XFxyXFxuICAgICAgICAgICAgb25DaGFuZ2U9eyBzZXRJdGVtcyB9XFxyXFxuICAgICAgICAgICAgaXRlbVRvU3RyaW5nPXsgZnJ1aXQgPT4gZnJ1aXQubmFtZSB9XFxyXFxuICAgICAgICAgICAgZ2V0U3VnZ2VzdGVkSXRlbXM9eyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfVxcclxcbiAgICAgICAgICAgIGxhYmVsPVwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIlxcclxcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgICAgIGRpc2FibGVkXFxyXFxuICAgICAgICAvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG4nLG89XCJUaGUgYGRpc2FibGVkYCBwcm9wIGNhbiBiZSB1c2VkIHRvIHB1dCB0aGUgcGlja2VyIGludG8gYSByZWFkLW9ubHkgc3RhdGUuIEl0IHdpbGwgbm90IGJlIHBvc3NpYmxlIHRvIHR5cGUgaW50byB0aGUgaW5wdXQgZmllbGQsIG9yIHRvIGRlbGV0ZSBjaGlwcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC5cIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjgwKTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcbmltcG9ydCB7IGdldFN1Z2dlc3RlZEZydWl0U3luYywgQUxMX0ZSVUlUUyB9IGZyb20gXCIuL2NvbW1vblwiO1xcclxcblxcclxcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEVycm9yRGVtbygpIHtcXHJcXG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZShBTExfRlJVSVRTLnNsaWNlKDAsIDIpKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBmdWxsV2lkdGhcXHJcXG4gICAgICAgICAgICBlcnJvclxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPVwiVGhlIGBlcnJvcmAgcHJvcCBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBwaWNrZXIgaXMgaW4gYW4gZXJyb3Igc3RhdGUuXCI7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDY4MSk7Y29uc3Qgcj0naW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XFxyXFxuaW1wb3J0IE11bHRpUGlja2VyIGZyb20gXCIuLi8uLi9zcmMvaW5kZXhcIjtcXHJcXG5pbXBvcnQgeyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5pbXBvcnQgeyBOT1RfRU5PVUdIX0NIQVJBQ1RFUlMgfSBmcm9tIFwiLi4vLi4vc3JjL3V0aWxzXCI7XFxyXFxuXFxyXFxuY29uc3QgTUlOSU1VTV9DSEFSQUNURVJTID0gMztcXHJcXG5cXHJcXG5mdW5jdGlvbiBnZXRTdWdnZXN0ZWRGcnVpdFdpdGhNaW5pbXVtKGlucHV0VmFsdWUpIHtcXHJcXG4gICAgaWYgKCBpbnB1dFZhbHVlLmxlbmd0aCA+PSBNSU5JTVVNX0NIQVJBQ1RFUlMgKSB7XFxyXFxuICAgICAgICByZXR1cm4gZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jKGlucHV0VmFsdWUpO1xcclxcbiAgICB9XFxyXFxuICAgIHJldHVybiBOT1RfRU5PVUdIX0NIQVJBQ1RFUlM7XFxyXFxufVxcclxcblxcclxcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1pbmltdW1DaGFyYWN0ZXJzRGVtbygpIHtcXHJcXG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZShbXSk7XFxyXFxuICAgIHJldHVybiAoXFxyXFxuICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0V2l0aE1pbmltdW0gfVxcclxcbiAgICAgICAgICAgIGxhYmVsPVwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIlxcclxcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPVwiSWYgeW91IHJldHVybiB0aGUgc3BlY2lhbCBgTk9UX0VOT1VHSF9DSEFSQUNURVJTYCBzeW1ib2wgZnJvbSB5b3VyIGBnZXRTdWdnZXN0ZWRJdGVtcygpYCBmdW5jdGlvbiwgdGhlIHBpY2tlciB3aWxsIHByb3ZpZGUgYW4gYXBwcm9wcmlhdGUgd2FybmluZyB0byB0aGUgdXNlci5cIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjgyKTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcbmltcG9ydCB7IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9IGZyb20gXCIuL2NvbW1vblwiO1xcclxcblxcclxcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcm9sbGFibGVTdWdnZXN0aW9uc0RlbW8oKSB7XFxyXFxuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGUoW10pO1xcclxcbiAgICByZXR1cm4gKFxcclxcbiAgICAgICAgPE11bHRpUGlja2VyXFxyXFxuICAgICAgICAgICAgdmFsdWU9eyBpdGVtcyB9XFxyXFxuICAgICAgICAgICAgb25DaGFuZ2U9eyBzZXRJdGVtcyB9XFxyXFxuICAgICAgICAgICAgaXRlbVRvU3RyaW5nPXsgZnJ1aXQgPT4gZnJ1aXQubmFtZSB9XFxyXFxuICAgICAgICAgICAgZ2V0U3VnZ2VzdGVkSXRlbXM9eyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfVxcclxcbiAgICAgICAgICAgIGxhYmVsPVwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIlxcclxcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgICAgIG1heERyb3Bkb3duSGVpZ2h0PXsgMjUwIH1cXHJcXG4gICAgICAgIC8+XFxyXFxuICAgICk7XFxyXFxufVxcclxcbicsbz1cIklmIHlvdXIgc3VnZ2VzdGlvbiBsaXN0IGlzIHRvbyBsb25nLCB5b3UgY2FuIHVzZSB0aGUgYG1heERyb3Bkb3duSGVpZ2h0YCBwcm9wIHRvIG1ha2UgaXQgc2Nyb2xsYWJsZS5cIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjgzKTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcbmltcG9ydCB7IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9IGZyb20gXCIuL2NvbW1vblwiO1xcclxcblxcclxcbmNvbnN0IFNFUlZFUl9SRVNQT05TRV9USU1FX0lOX01JTExJU0VDT05EUyA9IDgwMDtcXHJcXG5cXHJcXG5mdW5jdGlvbiBnZXRTdWdnZXN0ZWRGcnVpdEFzeW5jKGlucHV0VmFsdWUpIHtcXHJcXG4gICAgaWYgKCAhaW5wdXRWYWx1ZS5sZW5ndGggKSB7XFxyXFxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcXHJcXG4gICAgfVxcclxcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XFxyXFxuICAgICAgICBzZXRUaW1lb3V0KFxcclxcbiAgICAgICAgICAgICgpID0+IHJlc29sdmUoZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jKGlucHV0VmFsdWUpKSxcXHJcXG4gICAgICAgICAgICBTRVJWRVJfUkVTUE9OU0VfVElNRV9JTl9NSUxMSVNFQ09ORFNcXHJcXG4gICAgICAgICk7XFxyXFxuICAgIH0pO1xcclxcbn1cXHJcXG5cXHJcXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBc3luY2hyb25vdXNEZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRBc3luYyB9XFxyXFxuICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiXFxyXFxuICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG4nLG89XCJJZiB5b3VyIGBnZXRTdWdnZXN0ZWRJdGVtcygpYCBmdW5jdGlvbiByZXR1cm5zIGEgYFByb21pc2VgIG9yIFtzdGFuZGFyZHMtY29tcGxpYW50IGVxdWl2YWxlbnRdKGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vKSwgdGhlIHBpY2tlciB3aWxsIHNob3cgc3VnZ2VzdGlvbnMgb25seSBvbmNlIHRoZSBwcm9taXNlIGhhcyByZXNvbHZlZC4gVW50aWwgdGhlbiwgaXQgd2lsbCBzaG93IGEgbG9hZGluZyBtZXNzYWdlIHdpdGggYSBwcm9ncmVzcyBiYXIuXCI7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDY4NCk7Y29uc3Qgcj0naW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XFxyXFxuaW1wb3J0IE11bHRpUGlja2VyIGZyb20gXCIuLi8uLi9zcmMvaW5kZXhcIjtcXHJcXG5pbXBvcnQgeyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5cXHJcXG5jb25zdCBTRVJWRVJfUkVTUE9OU0VfVElNRV9JTl9NSUxMSVNFQ09ORFMgPSA4MDA7XFxyXFxuY29uc3QgRkVUQ0hfREVMQVlfSU5fTUlMTElTRUNPTkRTID0gNTAwO1xcclxcblxcclxcbmZ1bmN0aW9uIGdldFN1Z2dlc3RlZEZydWl0QXN5bmMoaW5wdXRWYWx1ZSkge1xcclxcbiAgICBpZiAoICFpbnB1dFZhbHVlLmxlbmd0aCApIHtcXHJcXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xcclxcbiAgICB9XFxyXFxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcXHJcXG4gICAgICAgIHNldFRpbWVvdXQoXFxyXFxuICAgICAgICAgICAgKCkgPT4gcmVzb2x2ZShnZXRTdWdnZXN0ZWRGcnVpdFN5bmMoaW5wdXRWYWx1ZSkpLFxcclxcbiAgICAgICAgICAgIFNFUlZFUl9SRVNQT05TRV9USU1FX0lOX01JTExJU0VDT05EU1xcclxcbiAgICAgICAgKTtcXHJcXG4gICAgfSk7XFxyXFxufVxcclxcblxcclxcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFzeW5jaHJvbm91c0RlbW8oKSB7XFxyXFxuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGUoW10pO1xcclxcbiAgICByZXR1cm4gKFxcclxcbiAgICAgICAgPE11bHRpUGlja2VyXFxyXFxuICAgICAgICAgICAgdmFsdWU9eyBpdGVtcyB9XFxyXFxuICAgICAgICAgICAgb25DaGFuZ2U9eyBzZXRJdGVtcyB9XFxyXFxuICAgICAgICAgICAgaXRlbVRvU3RyaW5nPXsgZnJ1aXQgPT4gZnJ1aXQubmFtZSB9XFxyXFxuICAgICAgICAgICAgZ2V0U3VnZ2VzdGVkSXRlbXM9eyBnZXRTdWdnZXN0ZWRGcnVpdEFzeW5jIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBmZXRjaERlbGF5PXsgRkVUQ0hfREVMQVlfSU5fTUlMTElTRUNPTkRTIH1cXHJcXG4gICAgICAgICAgICBmdWxsV2lkdGhcXHJcXG4gICAgICAgIC8+XFxyXFxuICAgICk7XFxyXFxufVxcclxcbicsbz1cIklmIHlvdSB3YW50IHRvIGF2b2lkIGhpdHRpbmcgYSByZW1vdGUgcmVzb3VyY2Ugd2l0aCB0b28gbWFueSBzZWFyY2ggcmVxdWVzdHMsIHNldHRpbmcgdGhlIGBmZXRjaERlbGF5YCBwcm9wIHdpbGwgY2F1c2UgdGhlIHBpY2tlciB0byBvbmx5IHJlcXVlc3Qgc3VnZ2VzdGlvbnMgYWZ0ZXIgdGhlIHVzZXIgaGFzIHN0b3BwZWQgdHlwaW5nIGZvciB0aGF0IG1hbnkgbWlsbGlzZWNvbmRzLlwiO2UuZXhwb3J0cy5kZWZhdWx0JiYoZS5leHBvcnRzLmRlZmF1bHQuX19zb3VyY2VfXz1yLGUuZXhwb3J0cy5kZWZhdWx0Ll9fbWFya2Rvd25fXz1vKSxlLmV4cG9ydHMuX19zb3VyY2U9cixlLmV4cG9ydHMuX19tYXJrZG93bl9fPW99LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big2ODUpO2NvbnN0IHI9J2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuXFxyXFxuY29uc3QgU0VSVkVSX1JFU1BPTlNFX1RJTUVfSU5fTUlMTElTRUNPTkRTID0gODAwO1xcclxcblxcclxcbmZ1bmN0aW9uIGdldFN1Z2dlc3RlZEZydWl0QXN5bmNFcnJvcihpbnB1dFZhbHVlKSB7XFxyXFxuICAgIGlmICggIWlucHV0VmFsdWUubGVuZ3RoICkge1xcclxcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XFxyXFxuICAgIH1cXHJcXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcXHJcXG4gICAgICAgIHNldFRpbWVvdXQoXFxyXFxuICAgICAgICAgICAgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihcIlN1Z2dlc3Rpb24gZmV0Y2ggZmFpbGVkIVwiKSksXFxyXFxuICAgICAgICAgICAgU0VSVkVSX1JFU1BPTlNFX1RJTUVfSU5fTUlMTElTRUNPTkRTXFxyXFxuICAgICAgICApO1xcclxcbiAgICB9KTtcXHJcXG59XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSGFuZGxlRXJyb3JzRGVtbygpIHtcXHJcXG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZShbXSk7XFxyXFxuICAgIHJldHVybiAoXFxyXFxuICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0QXN5bmNFcnJvciB9XFxyXFxuICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiXFxyXFxuICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG4nLG89XCJJZiB0aGUgYGdldFN1Z2dlc3RlZEl0ZW1zKClgIGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvciBvciByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlamVjdHMsIHRoZSBwaWNrZXIgd2lsbCBsb2cgdGhlIGVycm9yIHRvIHRoZSBjb25zb2xlIGFuZCBwcmVzZW50IHVzZXJzIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgZHJvcGRvd24uXCI7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDY4Nik7Y29uc3Qgcj0naW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XFxyXFxuaW1wb3J0IE11bHRpUGlja2VyIGZyb20gXCIuLi8uLi9zcmMvaW5kZXhcIjtcXHJcXG5pbXBvcnQgeyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5cXHJcXG5mdW5jdGlvbiBnZXREeW5hbWljU3VnZ2VzdGlvbkl0ZW1zKGlucHV0VmFsdWUpIHtcXHJcXG4gICAgY29uc3QgYmFzaWNTdWdnZXN0aW9ucyA9IGdldFN1Z2dlc3RlZEZydWl0U3luYyhpbnB1dFZhbHVlKTtcXHJcXG4gICAgaWYgKGJhc2ljU3VnZ2VzdGlvbnMubWFwKGl0ZW0gPT4gaXRlbS5uYW1lKS5pbmNsdWRlcyhpbnB1dFZhbHVlKSB8fCBpbnB1dFZhbHVlLmxlbmd0aCA9PT0gMCkge1xcclxcbiAgICAgICAgcmV0dXJuIGJhc2ljU3VnZ2VzdGlvbnM7XFxyXFxuICAgIH1cXHJcXG4gICAgcmV0dXJuIFsgLi4uYmFzaWNTdWdnZXN0aW9ucywgeyBuYW1lOiBpbnB1dFZhbHVlIH1dO1xcclxcbn1cXHJcXG5cXHJcXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEeW5hbWljU3VnZ2VzdGlvbnNEZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0RHluYW1pY1N1Z2dlc3Rpb25JdGVtcyB9XFxyXFxuICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiXFxyXFxuICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG4nLG89XCJJZiB5b3Ugd2FudCB0byBnaXZlIHVzZXJzIHRoZSBvcHRpb24gdG8gc3BlY2lmeSBhbiBpdGVtIHRoYXQncyBub3QgcGFydCBvZiBhIHByZWRlZmluZWQgbGlzdCwgeW91ciBgZ2V0U3VnZ2VzdGlvbkl0ZW1zKClgIGZ1bmN0aW9uIGNhbiByZXR1cm4gZHluYW1pY2FsbHkgY3JlYXRlZCBpdGVtcyBiYXNlZCBvbiB0aGUgdXNlcidzIGlucHV0IChqdXN0IG1ha2Ugc3VyZSBpdCBoYXMgYSB1bmlxdWUgc3RyaW5nIElEKS5cIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjg3KTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcbmltcG9ydCB7IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9IGZyb20gXCIuL2NvbW1vblwiO1xcclxcblxcclxcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhlbHBlclRleHREZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBmdWxsV2lkdGhcXHJcXG4gICAgICAgICAgICBoZWxwZXJUZXh0PVwiVGVsbCB1cyB3aGF0IGZydWl0cyB5b3UgcmVhbGx5IGxpa2VcIlxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPVwiQXMgd2l0aCB0aGUgW01hdGVyaWFsIFRleHQgRmllbGRdKGh0dHBzOi8vbWF0ZXJpYWwtdWkuY29tL2FwaS90ZXh0LWZpZWxkLyksIHlvdSBjYW4gc3VwcGx5IHRoZSBgaGVscGVyVGV4dGAgcHJvcCB0byBnaXZlIGV4dHJhIHVzZXIgZ3VpZGFuY2UgaWYgbmVlZGVkLlwiO2UuZXhwb3J0cy5kZWZhdWx0JiYoZS5leHBvcnRzLmRlZmF1bHQuX19zb3VyY2VfXz1yLGUuZXhwb3J0cy5kZWZhdWx0Ll9fbWFya2Rvd25fXz1vKSxlLmV4cG9ydHMuX19zb3VyY2U9cixlLmV4cG9ydHMuX19tYXJrZG93bl9fPW99LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big2ODgpO2NvbnN0IHI9J2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuaW1wb3J0IHsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH0gZnJvbSBcIi4vY29tbW9uXCI7XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVxdWlyZWRGaWVsZERlbW8oKSB7XFxyXFxuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGUoW10pO1xcclxcbiAgICByZXR1cm4gKFxcclxcbiAgICAgICAgPE11bHRpUGlja2VyXFxyXFxuICAgICAgICAgICAgdmFsdWU9eyBpdGVtcyB9XFxyXFxuICAgICAgICAgICAgb25DaGFuZ2U9eyBzZXRJdGVtcyB9XFxyXFxuICAgICAgICAgICAgaXRlbVRvU3RyaW5nPXsgZnJ1aXQgPT4gZnJ1aXQubmFtZSB9XFxyXFxuICAgICAgICAgICAgZ2V0U3VnZ2VzdGVkSXRlbXM9eyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfVxcclxcbiAgICAgICAgICAgIGxhYmVsPVwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIlxcclxcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgICAgIHJlcXVpcmVkXFxyXFxuICAgICAgICAvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG4nLG89XCJZb3UgY2FuIHVzZSB0aGUgYHJlcXVpcmVkYCBwcm9wZXJ0eSB0byB2aXN1YWxseSBpbmRpY2F0ZSB0aGF0IHRoaXMgZmllbGQgaXMgcmVxdWlyZWQuXCI7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDY4OSk7Y29uc3Qgcj0naW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XFxyXFxuaW1wb3J0IE11bHRpUGlja2VyIGZyb20gXCIuLi8uLi9zcmMvaW5kZXhcIjtcXHJcXG5pbXBvcnQgeyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5cXHJcXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDdXN0b21UZXh0RmllbGREZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBmdWxsV2lkdGhcXHJcXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPSdUaGUgYHZhcmlhbnRgIHByb3AgY2FuIGJlIHN1cHBsaWVkIGFzIGBcIm91dGxpbmVkXCJgIG9yIGBcImZpbGxlZFwiYCB0byBtYXRjaCB5b3VyIHByZWZlcnJlZCB2aXN1YWwgc3R5bGUuJztlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjkwKTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgeyBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtYXRlcmlhbC11aS9jb3JlXCI7XFxyXFxuaW1wb3J0IE11bHRpUGlja2VyIGZyb20gXCIuLi8uLi9zcmMvaW5kZXhcIjtcXHJcXG5pbXBvcnQgeyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5pbXBvcnQgSGlnaGxpZ2h0ZXIgZnJvbSBcInJlYWN0LWhpZ2hsaWdodC13b3Jkc1wiO1xcclxcbmltcG9ydCB7IG9iamVjdCwgYm9vbCwgc3RyaW5nIH0gZnJvbSBcInByb3AtdHlwZXNcIjtcXHJcXG5cXHJcXG5mdW5jdGlvbiBTdWdnZXN0aW9uV2l0aFN0b2NrTnVtYmVycyh7IGl0ZW0sIGlzSGlnaGxpZ2h0ZWQsIGlucHV0VmFsdWUgfSkge1xcclxcbiAgICBjb25zdCBzdHlsZSA9IHtcXHJcXG4gICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxcclxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0hpZ2hsaWdodGVkID8gXCIjYWFhXCIgOiBcIiNmZmZcIixcXHJcXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIlxcclxcbiAgICB9O1xcclxcbiAgICByZXR1cm4gKFxcclxcbiAgICAgICAgPGRpdiBzdHlsZT17IHN0eWxlIH0+XFxyXFxuICAgICAgICAgICAgPGltZyBzcmM9eyBpdGVtLmltYWdlIH0gc3R5bGU9eyB7IGhlaWdodDogXCI0MnB4XCIsIHdpZHRoOiBcIjQycHhcIiB9IH0gLz5cXHJcXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXsgeyBmbGV4OiBcIjEgMSAwXCJ9IH0+XFxyXFxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiPlxcclxcbiAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVyXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0U3R5bGU9eyB7IGJhY2tncm91bmRDb2xvcjogXCIjZmYyXCIgfSB9XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoV29yZHM9eyBbIGlucHV0VmFsdWUgXSB9XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFRvSGlnaGxpZ2h0PXsgaXRlbS5uYW1lIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxyXFxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+Jm5ic3A7KHsgaXRlbS5zdG9jayB9IGluIHN0b2NrKTwvc21hbGw+XFxyXFxuICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cXHJcXG4gICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+eyBpdGVtLmRldGFpbCB9PC9UeXBvZ3JhcGh5PlxcclxcbiAgICAgICAgICAgIDwvZGl2PlxcclxcbiAgICAgICAgPC9kaXY+XFxyXFxuICAgICk7XFxyXFxufVxcclxcblxcclxcblN1Z2dlc3Rpb25XaXRoU3RvY2tOdW1iZXJzLnByb3BUeXBlcyA9IHtcXHJcXG4gICAgaXRlbTogb2JqZWN0LmlzUmVxdWlyZWQsXFxyXFxuICAgIGlzSGlnaGxpZ2h0ZWQ6IGJvb2wsXFxyXFxuICAgIGlucHV0VmFsdWU6IHN0cmluZy5pc1JlcXVpcmVkXFxyXFxufTtcXHJcXG5cXHJcXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYXNpY0RlbW8oKSB7XFxyXFxuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGUoW10pO1xcclxcbiAgICByZXR1cm4gKFxcclxcbiAgICAgICAgPE11bHRpUGlja2VyXFxyXFxuICAgICAgICAgICAgdmFsdWU9eyBpdGVtcyB9XFxyXFxuICAgICAgICAgICAgb25DaGFuZ2U9eyBzZXRJdGVtcyB9XFxyXFxuICAgICAgICAgICAgaXRlbVRvU3RyaW5nPXsgZnJ1aXQgPT4gZnJ1aXQubmFtZSB9XFxyXFxuICAgICAgICAgICAgZ2V0U3VnZ2VzdGVkSXRlbXM9eyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfVxcclxcbiAgICAgICAgICAgIFN1Z2dlc3Rpb25Db21wb25lbnQ9eyBTdWdnZXN0aW9uV2l0aFN0b2NrTnVtYmVycyB9XFxyXFxuICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiXFxyXFxuICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG4nLG89XCJUaGUgZGVmYXVsdCBzdWdnZXN0aW9uIGNvbXBvbmVudCBqdXN0IGRpc3BsYXlzIHRoZSBpZCBvZiB0aGUgaXRlbSAoZXh0cmFjdGVkIHdpdGggYGl0ZW1Ub1N0cmluZygpYCkgaW4gYSBwbGFpbiBmb3JtYXQuIFlvdSBjYW4gc3VwcGx5IGEgUmVhY3QgY29tcG9uZW50IGFzIHRoZSBgU3VnZ2VzdGlvbkNvbXBvbmVudGAgcHJvcCwgd2hpY2ggd2lsbCBoYXZlIGFjY2VzcyB0byB0aGUgZm9sbG93aW5nIHByb3BzOlxcclxcblxcclxcbnwgUHJvcCBuYW1lIHwgVHlwZSB8IERlc2NyaXB0aW9uIHxcXHJcXG58IC0tLS0tLS0tLSB8IC0tLS0gfCAtLS0tLS0tLS0tLSB8XFxyXFxufCBgaXRlbUlkYCB8IHN0cmluZyB8IFRoZSB1bmlxdWUgSUQgb2YgdGhlIGl0ZW0gKGZyb20gYGl0ZW1Ub1N0cmluZ2ApIHxcXHJcXG58IGBpdGVtYCB8IGFueSB8IFRoZSBzdWdnZXN0aW9uIGdlbmVyYXRlZCBieSB5b3VyIGBnZXRTdWdnZXN0ZWRJdGVtc2AgZnVuY3Rpb24gfFxcclxcbnwgYGlzSGlnaGxpZ2h0ZWRgIHwgYm9vbGVhbiB8IGB0cnVlYCBpZiB0aGUgdXNlciBpcyBjdXJyZW50bHkgaGlnaGxpZ2h0aW5nIHRoaXMgc3VnZ2VzdGlvbiAoZWl0aGVyIHdpdGgga2V5Ym9hcmQgbmF2aWdhdGlvbiwgb3IgYnkgaG92ZXJpbmcgb3ZlciB3aXRoIHRoZSBtb3VzZSkgfFxcclxcbnwgYGlucHV0VmFsdWVgIHwgc3RyaW5nIHwgVGhlIHN0cmluZyBjdXJyZW50bHkgZW50ZXJlZCBpbiB0aGUgdGV4dCBpbnB1dCBmaWVsZC4gfFxcclxcblxcclxcblRoaXMgY2FuIGJlIGdvb2QgZm9yIGVtcGhhc2lzaW5nIHNlYXJjaCB0ZXh0IGFuZCBwcm92aWRpbmcgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3VnZ2VzdGlvbi5cXHJcXG5cIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2V4cG9ydHM6e30saWQ6cixsb2FkZWQ6ITF9O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubG9hZGVkPSEwLG8uZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5wPVwiXCIsbigwKX0oW2Z1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigxKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByLG89bigyKSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTt0LmRlZmF1bHQ9YS5kZWZhdWx0LGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTtmdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10LmRlZmF1bHQ9dTt2YXIgYT1uKDMpLGk9byhuKDQpKSxsPW4oMTQpLHM9byhuKDE1KSk7ZnVuY3Rpb24gdShlKXt2YXIgdD1lLmFjdGl2ZUNsYXNzTmFtZSxuPXZvaWQgMD09PXQ/XCJcIjp0LG89ZS5hY3RpdmVJbmRleCxpPXZvaWQgMD09PW8/LTE6byx1PWUuYWN0aXZlU3R5bGUsYz1lLmF1dG9Fc2NhcGUsZD1lLmNhc2VTZW5zaXRpdmUscD12b2lkIDAhPT1kJiZkLGY9ZS5jbGFzc05hbWUsbT1lLmZpbmRDaHVua3MsZz1lLmhpZ2hsaWdodENsYXNzTmFtZSxoPXZvaWQgMD09PWc/XCJcIjpnLGI9ZS5oaWdobGlnaHRTdHlsZSx5PXZvaWQgMD09PWI/e306Yix2PWUuaGlnaGxpZ2h0VGFnLFM9dm9pZCAwPT09dj9cIm1hcmtcIjp2LEU9ZS5zYW5pdGl6ZSx4PWUuc2VhcmNoV29yZHMsdz1lLnRleHRUb0hpZ2hsaWdodCxrPWUudW5oaWdobGlnaHRDbGFzc05hbWUsXz12b2lkIDA9PT1rP1wiXCI6ayxUPWUudW5oaWdobGlnaHRTdHlsZSxBPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59KGUsW1wiYWN0aXZlQ2xhc3NOYW1lXCIsXCJhY3RpdmVJbmRleFwiLFwiYWN0aXZlU3R5bGVcIixcImF1dG9Fc2NhcGVcIixcImNhc2VTZW5zaXRpdmVcIixcImNsYXNzTmFtZVwiLFwiZmluZENodW5rc1wiLFwiaGlnaGxpZ2h0Q2xhc3NOYW1lXCIsXCJoaWdobGlnaHRTdHlsZVwiLFwiaGlnaGxpZ2h0VGFnXCIsXCJzYW5pdGl6ZVwiLFwic2VhcmNoV29yZHNcIixcInRleHRUb0hpZ2hsaWdodFwiLFwidW5oaWdobGlnaHRDbGFzc05hbWVcIixcInVuaGlnaGxpZ2h0U3R5bGVcIl0pLEM9KDAsYS5maW5kQWxsKSh7YXV0b0VzY2FwZTpjLGNhc2VTZW5zaXRpdmU6cCxmaW5kQ2h1bmtzOm0sc2FuaXRpemU6RSxzZWFyY2hXb3Jkczp4LHRleHRUb0hpZ2hsaWdodDp3fSksTz1TLEk9LTEsTj1cIlwiLFI9dm9pZCAwLFA9KDAscy5kZWZhdWx0KShmdW5jdGlvbihlKXt2YXIgdD17fTtmb3IodmFyIG4gaW4gZSl0W24udG9Mb3dlckNhc2UoKV09ZVtuXTtyZXR1cm4gdH0pO3JldHVybigwLGwuY3JlYXRlRWxlbWVudCkoXCJzcGFuXCIscih7Y2xhc3NOYW1lOmZ9LEEse2NoaWxkcmVuOkMubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIHI9dy5zdWJzdHIoZS5zdGFydCxlLmVuZC1lLnN0YXJ0KTtpZihlLmhpZ2hsaWdodCl7SSsrO3ZhciBvPXZvaWQgMDtvPVwib2JqZWN0XCI9PXR5cGVvZiBoP3A/aFtyXTooaD1QKGgpKVtyLnRvTG93ZXJDYXNlKCldOmg7dmFyIGE9ST09PStpO049bytcIiBcIisoYT9uOlwiXCIpLFI9ITA9PT1hJiZudWxsIT11P09iamVjdC5hc3NpZ24oe30seSx1KTp5O3ZhciBzPXtjaGlsZHJlbjpyLGNsYXNzTmFtZTpOLGtleTp0LHN0eWxlOlJ9O3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiBPJiYocy5oaWdobGlnaHRJbmRleD1JKSwoMCxsLmNyZWF0ZUVsZW1lbnQpKE8scyl9cmV0dXJuKDAsbC5jcmVhdGVFbGVtZW50KShcInNwYW5cIix7Y2hpbGRyZW46cixjbGFzc05hbWU6XyxrZXk6dCxzdHlsZTpUfSl9KX0pKX11LnByb3BUeXBlcz17YWN0aXZlQ2xhc3NOYW1lOmkuZGVmYXVsdC5zdHJpbmcsYWN0aXZlSW5kZXg6aS5kZWZhdWx0Lm51bWJlcixhY3RpdmVTdHlsZTppLmRlZmF1bHQub2JqZWN0LGF1dG9Fc2NhcGU6aS5kZWZhdWx0LmJvb2wsY2xhc3NOYW1lOmkuZGVmYXVsdC5zdHJpbmcsZmluZENodW5rczppLmRlZmF1bHQuZnVuYyxoaWdobGlnaHRDbGFzc05hbWU6aS5kZWZhdWx0Lm9uZU9mVHlwZShbaS5kZWZhdWx0Lm9iamVjdCxpLmRlZmF1bHQuc3RyaW5nXSksaGlnaGxpZ2h0U3R5bGU6aS5kZWZhdWx0Lm9iamVjdCxoaWdobGlnaHRUYWc6aS5kZWZhdWx0Lm9uZU9mVHlwZShbaS5kZWZhdWx0Lm5vZGUsaS5kZWZhdWx0LmZ1bmMsaS5kZWZhdWx0LnN0cmluZ10pLHNhbml0aXplOmkuZGVmYXVsdC5mdW5jLHNlYXJjaFdvcmRzOmkuZGVmYXVsdC5hcnJheU9mKGkuZGVmYXVsdC5vbmVPZlR5cGUoW2kuZGVmYXVsdC5zdHJpbmcsaS5kZWZhdWx0Lmluc3RhbmNlT2YoUmVnRXhwKV0pKS5pc1JlcXVpcmVkLHRleHRUb0hpZ2hsaWdodDppLmRlZmF1bHQuc3RyaW5nLmlzUmVxdWlyZWQsdW5oaWdobGlnaHRDbGFzc05hbWU6aS5kZWZhdWx0LnN0cmluZyx1bmhpZ2hsaWdodFN0eWxlOmkuZGVmYXVsdC5vYmplY3R9LGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2V4cG9ydHM6e30saWQ6cixsb2FkZWQ6ITF9O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubG9hZGVkPSEwLG8uZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5wPVwiXCIsbigwKX0oW2Z1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigxKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjb21iaW5lQ2h1bmtzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuY29tYmluZUNodW5rc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImZpbGxJbkNodW5rc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmZpbGxJbkNodW5rc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImZpbmRBbGxcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5maW5kQWxsfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZmluZENodW5rc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmZpbmRDaHVua3N9fSl9LGZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dC5maW5kQWxsPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYXV0b0VzY2FwZSxhPWUuY2FzZVNlbnNpdGl2ZSxpPXZvaWQgMCE9PWEmJmEsbD1lLmZpbmRDaHVua3Mscz12b2lkIDA9PT1sP3I6bCx1PWUuc2FuaXRpemUsYz1lLnNlYXJjaFdvcmRzLGQ9ZS50ZXh0VG9IaWdobGlnaHQ7cmV0dXJuIG8oe2NodW5rc1RvSGlnaGxpZ2h0Om4oe2NodW5rczpzKHthdXRvRXNjYXBlOnQsY2FzZVNlbnNpdGl2ZTppLHNhbml0aXplOnUsc2VhcmNoV29yZHM6Yyx0ZXh0VG9IaWdobGlnaHQ6ZH0pfSksdG90YWxMZW5ndGg6ZD9kLmxlbmd0aDowfSl9O3ZhciBuPXQuY29tYmluZUNodW5rcz1mdW5jdGlvbihlKXt2YXIgdD1lLmNodW5rcztyZXR1cm4gdD10LnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdGFydC10LnN0YXJ0fSkucmVkdWNlKGZ1bmN0aW9uKGUsdCl7aWYoMD09PWUubGVuZ3RoKXJldHVyblt0XTt2YXIgbj1lLnBvcCgpO2lmKHQuc3RhcnQ8PW4uZW5kKXt2YXIgcj1NYXRoLm1heChuLmVuZCx0LmVuZCk7ZS5wdXNoKHtzdGFydDpuLnN0YXJ0LGVuZDpyfSl9ZWxzZSBlLnB1c2gobix0KTtyZXR1cm4gZX0sW10pfSxyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYXV0b0VzY2FwZSxuPWUuY2FzZVNlbnNpdGl2ZSxyPWUuc2FuaXRpemUsbz12b2lkIDA9PT1yP2E6cixpPWUuc2VhcmNoV29yZHMsbD1lLnRleHRUb0hpZ2hsaWdodDtyZXR1cm4gbD1vKGwpLGkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkucmVkdWNlKGZ1bmN0aW9uKGUscil7cj1vKHIpLHQmJihyPXIucmVwbGFjZSgvW1xcLVxcW1xcXVxcL1xce1xcfVxcKFxcKVxcKlxcK1xcP1xcLlxcXFxcXF5cXCRcXHxdL2csXCJcXFxcJCZcIikpO2Zvcih2YXIgYT1uZXcgUmVnRXhwKHIsbj9cImdcIjpcImdpXCIpLGk9dm9pZCAwO2k9YS5leGVjKGwpOyl7dmFyIHM9aS5pbmRleCx1PWEubGFzdEluZGV4O3U+cyYmZS5wdXNoKHtzdGFydDpzLGVuZDp1fSksaS5pbmRleD09YS5sYXN0SW5kZXgmJmEubGFzdEluZGV4Kyt9cmV0dXJuIGV9LFtdKX07dC5maW5kQ2h1bmtzPXI7dmFyIG89dC5maWxsSW5DaHVua3M9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaHVua3NUb0hpZ2hsaWdodCxuPWUudG90YWxMZW5ndGgscj1bXSxvPWZ1bmN0aW9uKGUsdCxuKXt0LWU+MCYmci5wdXNoKHtzdGFydDplLGVuZDp0LGhpZ2hsaWdodDpufSl9O2lmKDA9PT10Lmxlbmd0aClvKDAsbiwhMSk7ZWxzZXt2YXIgYT0wO3QuZm9yRWFjaChmdW5jdGlvbihlKXtvKGEsZS5zdGFydCwhMSksbyhlLnN0YXJ0LGUuZW5kLCEwKSxhPWUuZW5kfSksbyhhLG4sITEpfXJldHVybiByfTtmdW5jdGlvbiBhKGUpe3JldHVybiBlfX1dKX0sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0KXtpZihcInByb2R1Y3Rpb25cIiE9PXQuZW52Lk5PREVfRU5WKXt2YXIgcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpfHw2MDEwMztlLmV4cG9ydHM9big2KShmdW5jdGlvbihlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1yfSwhMCl9ZWxzZSBlLmV4cG9ydHM9bigxMykoKX0pLmNhbGwodCxuKDUpKX0sZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89ZS5leHBvcnRzPXt9O2Z1bmN0aW9uIGEoKXt0aHJvdyBuZXcgRXJyb3IoXCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIGkoKXt0aHJvdyBuZXcgRXJyb3IoXCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWRcIil9ZnVuY3Rpb24gbChlKXtpZihuPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChuPT09YXx8IW4pJiZzZXRUaW1lb3V0KXJldHVybiBuPXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gbihlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gbi5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gbi5jYWxsKHRoaXMsZSwwKX19fSFmdW5jdGlvbigpe3RyeXtuPVwiZnVuY3Rpb25cIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDphfWNhdGNoKGUpe249YX10cnl7cj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Oml9Y2F0Y2goZSl7cj1pfX0oKTt2YXIgcyx1PVtdLGM9ITEsZD0tMTtmdW5jdGlvbiBwKCl7YyYmcyYmKGM9ITEscy5sZW5ndGg/dT1zLmNvbmNhdCh1KTpkPS0xLHUubGVuZ3RoJiZmKCkpfWZ1bmN0aW9uIGYoKXtpZighYyl7dmFyIGU9bChwKTtjPSEwO2Zvcih2YXIgdD11Lmxlbmd0aDt0Oyl7Zm9yKHM9dSx1PVtdOysrZDx0OylzJiZzW2RdLnJ1bigpO2Q9LTEsdD11Lmxlbmd0aH1zPW51bGwsYz0hMSxmdW5jdGlvbihlKXtpZihyPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoZSk7aWYoKHI9PT1pfHwhcikmJmNsZWFyVGltZW91dClyZXR1cm4gcj1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXtyKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gci5jYWxsKG51bGwsZSl9Y2F0Y2godCl7cmV0dXJuIHIuY2FsbCh0aGlzLGUpfX19KGUpfX1mdW5jdGlvbiBtKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9ZnVuY3Rpb24gZygpe31vLm5leHRUaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dS5wdXNoKG5ldyBtKGUsdCkpLDEhPT11Lmxlbmd0aHx8Y3x8bChmKX0sbS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sby50aXRsZT1cImJyb3dzZXJcIixvLmJyb3dzZXI9ITAsby5lbnY9e30sby5hcmd2PVtdLG8udmVyc2lvbj1cIlwiLG8udmVyc2lvbnM9e30sby5vbj1nLG8uYWRkTGlzdGVuZXI9ZyxvLm9uY2U9ZyxvLm9mZj1nLG8ucmVtb3ZlTGlzdGVuZXI9ZyxvLnJlbW92ZUFsbExpc3RlbmVycz1nLG8uZW1pdD1nLG8ucHJlcGVuZExpc3RlbmVyPWcsby5wcmVwZW5kT25jZUxpc3RlbmVyPWcsby5saXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuW119LG8uYmluZGluZz1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZFwiKX0sby5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm5cIi9cIn0sby5jaGRpcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWRcIil9LG8udW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big3KSxvPW4oOCksYT1uKDkpLGk9bigxMCksbD1uKDExKSxzPW4oMTIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLG4pe3ZhciB1PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLGM9XCJAQGl0ZXJhdG9yXCI7dmFyIGQ9XCI8PGFub255bW91cz4+XCIscD17YXJyYXk6aChcImFycmF5XCIpLGJvb2w6aChcImJvb2xlYW5cIiksZnVuYzpoKFwiZnVuY3Rpb25cIiksbnVtYmVyOmgoXCJudW1iZXJcIiksb2JqZWN0OmgoXCJvYmplY3RcIiksc3RyaW5nOmgoXCJzdHJpbmdcIiksc3ltYm9sOmgoXCJzeW1ib2xcIiksYW55Omcoci50aGF0UmV0dXJuc051bGwpLGFycmF5T2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZnVuY3Rpb24odCxuLHIsbyxhKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXJldHVybiBuZXcgbShcIlByb3BlcnR5IGBcIithK1wiYCBvZiBjb21wb25lbnQgYFwiK3IrXCJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLlwiKTt2YXIgaT10W25dO2lmKCFBcnJheS5pc0FycmF5KGkpKXt2YXIgcz15KGkpO3JldHVybiBuZXcgbShcIkludmFsaWQgXCIrbytcIiBgXCIrYStcImAgb2YgdHlwZSBgXCIrcytcImAgc3VwcGxpZWQgdG8gYFwiK3IrXCJgLCBleHBlY3RlZCBhbiBhcnJheS5cIil9Zm9yKHZhciB1PTA7dTxpLmxlbmd0aDt1Kyspe3ZhciBjPWUoaSx1LHIsbyxhK1wiW1wiK3UrXCJdXCIsbCk7aWYoYyBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBjfXJldHVybiBudWxsfSl9LGVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZyhmdW5jdGlvbih0LG4scixvLGEpe3ZhciBpPXRbbl07aWYoIWUoaSkpe3ZhciBsPXkoaSk7cmV0dXJuIG5ldyBtKFwiSW52YWxpZCBcIitvK1wiIGBcIithK1wiYCBvZiB0eXBlIGBcIitsK1wiYCBzdXBwbGllZCB0byBgXCIrcitcImAsIGV4cGVjdGVkIGEgc2luZ2xlIFJlYWN0RWxlbWVudC5cIil9cmV0dXJuIG51bGx9KX0oKSxpbnN0YW5jZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBnKGZ1bmN0aW9uKHQsbixyLG8sYSl7aWYoISh0W25daW5zdGFuY2VvZiBlKSl7dmFyIGk9ZS5uYW1lfHxkLGw9ZnVuY3Rpb24oZSl7aWYoIWUuY29uc3RydWN0b3J8fCFlLmNvbnN0cnVjdG9yLm5hbWUpcmV0dXJuIGQ7cmV0dXJuIGUuY29uc3RydWN0b3IubmFtZX0odFtuXSk7cmV0dXJuIG5ldyBtKFwiSW52YWxpZCBcIitvK1wiIGBcIithK1wiYCBvZiB0eXBlIGBcIitsK1wiYCBzdXBwbGllZCB0byBgXCIrcitcImAsIGV4cGVjdGVkIGluc3RhbmNlIG9mIGBcIitpK1wiYC5cIil9cmV0dXJuIG51bGx9KX0sbm9kZTpmdW5jdGlvbigpe3JldHVybiBnKGZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYoIWIoZVt0XSkpcmV0dXJuIG5ldyBtKFwiSW52YWxpZCBcIityK1wiIGBcIitvK1wiYCBzdXBwbGllZCB0byBgXCIrbitcImAsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLlwiKTtyZXR1cm4gbnVsbH0pfSgpLG9iamVjdE9mOmZ1bmN0aW9uKGUpe3JldHVybiBnKGZ1bmN0aW9uKHQsbixyLG8sYSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSlyZXR1cm4gbmV3IG0oXCJQcm9wZXJ0eSBgXCIrYStcImAgb2YgY29tcG9uZW50IGBcIityK1wiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuXCIpO3ZhciBpPXRbbl0scz15KGkpO2lmKFwib2JqZWN0XCIhPT1zKXJldHVybiBuZXcgbShcIkludmFsaWQgXCIrbytcIiBgXCIrYStcImAgb2YgdHlwZSBgXCIrcytcImAgc3VwcGxpZWQgdG8gYFwiK3IrXCJgLCBleHBlY3RlZCBhbiBvYmplY3QuXCIpO2Zvcih2YXIgdSBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkodSkpe3ZhciBjPWUoaSx1LHIsbyxhK1wiLlwiK3UsbCk7aWYoYyBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBjfXJldHVybiBudWxsfSl9LG9uZU9mOmZ1bmN0aW9uKGUpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVyblwicHJvZHVjdGlvblwiIT09dC5lbnYuTk9ERV9FTlYmJmEoITEsXCJJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS5cIiksci50aGF0UmV0dXJuc051bGw7cmV0dXJuIGcoZnVuY3Rpb24odCxuLHIsbyxhKXtmb3IodmFyIGk9dFtuXSxsPTA7bDxlLmxlbmd0aDtsKyspaWYoZihpLGVbbF0pKXJldHVybiBudWxsO3ZhciBzPUpTT04uc3RyaW5naWZ5KGUpO3JldHVybiBuZXcgbShcIkludmFsaWQgXCIrbytcIiBgXCIrYStcImAgb2YgdmFsdWUgYFwiK2krXCJgIHN1cHBsaWVkIHRvIGBcIityK1wiYCwgZXhwZWN0ZWQgb25lIG9mIFwiK3MrXCIuXCIpfSl9LG9uZU9mVHlwZTpmdW5jdGlvbihlKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm5cInByb2R1Y3Rpb25cIiE9PXQuZW52Lk5PREVfRU5WJiZhKCExLFwiSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LlwiKSxyLnRoYXRSZXR1cm5zTnVsbDtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIG89ZVtuXTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBvKXJldHVybiBhKCExLFwiSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUuIEV4cGVjdGVkIGFuIGFycmF5IG9mIGNoZWNrIGZ1bmN0aW9ucywgYnV0IHJlY2VpdmVkICVzIGF0IGluZGV4ICVzLlwiLFMobyksbiksci50aGF0UmV0dXJuc051bGx9cmV0dXJuIGcoZnVuY3Rpb24odCxuLHIsbyxhKXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIHM9ZVtpXTtpZihudWxsPT1zKHQsbixyLG8sYSxsKSlyZXR1cm4gbnVsbH1yZXR1cm4gbmV3IG0oXCJJbnZhbGlkIFwiK28rXCIgYFwiK2ErXCJgIHN1cHBsaWVkIHRvIGBcIityK1wiYC5cIil9KX0sc2hhcGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZnVuY3Rpb24odCxuLHIsbyxhKXt2YXIgaT10W25dLHM9eShpKTtpZihcIm9iamVjdFwiIT09cylyZXR1cm4gbmV3IG0oXCJJbnZhbGlkIFwiK28rXCIgYFwiK2ErXCJgIG9mIHR5cGUgYFwiK3MrXCJgIHN1cHBsaWVkIHRvIGBcIityK1wiYCwgZXhwZWN0ZWQgYG9iamVjdGAuXCIpO2Zvcih2YXIgdSBpbiBlKXt2YXIgYz1lW3VdO2lmKGMpe3ZhciBkPWMoaSx1LHIsbyxhK1wiLlwiK3UsbCk7aWYoZClyZXR1cm4gZH19cmV0dXJuIG51bGx9KX0sZXhhY3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZnVuY3Rpb24odCxuLHIsbyxhKXt2YXIgcz10W25dLHU9eShzKTtpZihcIm9iamVjdFwiIT09dSlyZXR1cm4gbmV3IG0oXCJJbnZhbGlkIFwiK28rXCIgYFwiK2ErXCJgIG9mIHR5cGUgYFwiK3UrXCJgIHN1cHBsaWVkIHRvIGBcIityK1wiYCwgZXhwZWN0ZWQgYG9iamVjdGAuXCIpO3ZhciBjPWkoe30sdFtuXSxlKTtmb3IodmFyIGQgaW4gYyl7dmFyIHA9ZVtkXTtpZighcClyZXR1cm4gbmV3IG0oXCJJbnZhbGlkIFwiK28rXCIgYFwiK2ErXCJgIGtleSBgXCIrZCtcImAgc3VwcGxpZWQgdG8gYFwiK3IrXCJgLlxcbkJhZCBvYmplY3Q6IFwiK0pTT04uc3RyaW5naWZ5KHRbbl0sbnVsbCxcIiAgXCIpK1wiXFxuVmFsaWQga2V5czogXCIrSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoZSksbnVsbCxcIiAgXCIpKTt2YXIgZj1wKHMsZCxyLG8sYStcIi5cIitkLGwpO2lmKGYpcmV0dXJuIGZ9cmV0dXJuIG51bGx9KX19O2Z1bmN0aW9uIGYoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDEvZT09MS90OmUhPWUmJnQhPXR9ZnVuY3Rpb24gbShlKXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPVwiXCJ9ZnVuY3Rpb24gZyhlKXtpZihcInByb2R1Y3Rpb25cIiE9PXQuZW52Lk5PREVfRU5WKXZhciByPXt9LGk9MDtmdW5jdGlvbiBzKHMsdSxjLHAsZixnLGgpe2lmKHA9cHx8ZCxnPWd8fGMsaCE9PWwpaWYobilvKCExLFwiQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzXCIpO2Vsc2UgaWYoXCJwcm9kdWN0aW9uXCIhPT10LmVudi5OT0RFX0VOViYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGNvbnNvbGUpe3ZhciBiPXArXCI6XCIrYzshcltiXSYmaTwzJiYoYSghMSxcIllvdSBhcmUgbWFudWFsbHkgY2FsbGluZyBhIFJlYWN0LlByb3BUeXBlcyB2YWxpZGF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgYCVzYCBwcm9wIG9uIGAlc2AuIFRoaXMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byBhIHRoaXJkLXBhcnR5IFByb3BUeXBlcyBsaWJyYXJ5LiBTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLWRvbnQtY2FsbC1wcm9wdHlwZXMgZm9yIGRldGFpbHMuXCIsZyxwKSxyW2JdPSEwLGkrKyl9cmV0dXJuIG51bGw9PXVbY10/cz9udWxsPT09dVtjXT9uZXcgbShcIlRoZSBcIitmK1wiIGBcIitnK1wiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYFwiK3ArXCJgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC5cIik6bmV3IG0oXCJUaGUgXCIrZitcIiBgXCIrZytcImAgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluIGBcIitwK1wiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgdW5kZWZpbmVkYC5cIik6bnVsbDplKHUsYyxwLGYsZyl9dmFyIHU9cy5iaW5kKG51bGwsITEpO3JldHVybiB1LmlzUmVxdWlyZWQ9cy5iaW5kKG51bGwsITApLHV9ZnVuY3Rpb24gaChlKXtyZXR1cm4gZyhmdW5jdGlvbih0LG4scixvLGEsaSl7dmFyIGw9dFtuXTtyZXR1cm4geShsKSE9PWU/bmV3IG0oXCJJbnZhbGlkIFwiK28rXCIgYFwiK2ErXCJgIG9mIHR5cGUgYFwiK3YobCkrXCJgIHN1cHBsaWVkIHRvIGBcIityK1wiYCwgZXhwZWN0ZWQgYFwiK2UrXCJgLlwiKTpudWxsfSl9ZnVuY3Rpb24gYih0KXtzd2l0Y2godHlwZW9mIHQpe2Nhc2VcIm51bWJlclwiOmNhc2VcInN0cmluZ1wiOmNhc2VcInVuZGVmaW5lZFwiOnJldHVybiEwO2Nhc2VcImJvb2xlYW5cIjpyZXR1cm4hdDtjYXNlXCJvYmplY3RcIjppZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0LmV2ZXJ5KGIpO2lmKG51bGw9PT10fHxlKHQpKXJldHVybiEwO3ZhciBuPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJih1JiZlW3VdfHxlW2NdKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KXJldHVybiB0fSh0KTtpZighbilyZXR1cm4hMTt2YXIgcixvPW4uY2FsbCh0KTtpZihuIT09dC5lbnRyaWVzKXtmb3IoOyEocj1vLm5leHQoKSkuZG9uZTspaWYoIWIoci52YWx1ZSkpcmV0dXJuITF9ZWxzZSBmb3IoOyEocj1vLm5leHQoKSkuZG9uZTspe3ZhciBhPXIudmFsdWU7aWYoYSYmIWIoYVsxXSkpcmV0dXJuITF9cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24geShlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9cImFycmF5XCI6ZSBpbnN0YW5jZW9mIFJlZ0V4cD9cIm9iamVjdFwiOmZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJzeW1ib2xcIj09PWV8fFwiU3ltYm9sXCI9PT10W1wiQEB0b1N0cmluZ1RhZ1wiXXx8XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZ0IGluc3RhbmNlb2YgU3ltYm9sfSh0LGUpP1wic3ltYm9sXCI6dH1mdW5jdGlvbiB2KGUpe2lmKG51bGw9PWUpcmV0dXJuXCJcIitlO3ZhciB0PXkoZSk7aWYoXCJvYmplY3RcIj09PXQpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVyblwiZGF0ZVwiO2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuXCJyZWdleHBcIn1yZXR1cm4gdH1mdW5jdGlvbiBTKGUpe3ZhciB0PXYoZSk7c3dpdGNoKHQpe2Nhc2VcImFycmF5XCI6Y2FzZVwib2JqZWN0XCI6cmV0dXJuXCJhbiBcIit0O2Nhc2VcImJvb2xlYW5cIjpjYXNlXCJkYXRlXCI6Y2FzZVwicmVnZXhwXCI6cmV0dXJuXCJhIFwiK3Q7ZGVmYXVsdDpyZXR1cm4gdH19cmV0dXJuIG0ucHJvdG90eXBlPUVycm9yLnByb3RvdHlwZSxwLmNoZWNrUHJvcFR5cGVzPXMscC5Qcm9wVHlwZXM9cCxwfX0pLmNhbGwodCxuKDUpKX0sZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgcj1mdW5jdGlvbigpe307ci50aGF0UmV0dXJucz1uLHIudGhhdFJldHVybnNGYWxzZT1uKCExKSxyLnRoYXRSZXR1cm5zVHJ1ZT1uKCEwKSxyLnRoYXRSZXR1cm5zTnVsbD1uKG51bGwpLHIudGhhdFJldHVybnNUaGlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHIudGhhdFJldHVybnNBcmd1bWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZnVuY3Rpb24oZSl7fTtcInByb2R1Y3Rpb25cIiE9PXQuZW52Lk5PREVfRU5WJiYobj1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcihcImludmFyaWFudCByZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50XCIpfSksZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG8sYSxpLGwscyl7aWYobih0KSwhZSl7dmFyIHU7aWYodm9pZCAwPT09dCl1PW5ldyBFcnJvcihcIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCIpO2Vsc2V7dmFyIGM9W3IsbyxhLGksbCxzXSxkPTA7KHU9bmV3IEVycm9yKHQucmVwbGFjZSgvJXMvZyxmdW5jdGlvbigpe3JldHVybiBjW2QrK119KSkpLm5hbWU9XCJJbnZhcmlhbnQgVmlvbGF0aW9uXCJ9dGhyb3cgdS5mcmFtZXNUb1BvcD0xLHV9fX0pLmNhbGwodCxuKDUpKX0sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0KXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDcpO2lmKFwicHJvZHVjdGlvblwiIT09dC5lbnYuTk9ERV9FTlYpe3I9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcihcImB3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nIG1lc3NhZ2UgYXJndW1lbnRcIik7aWYoMCE9PXQuaW5kZXhPZihcIkZhaWxlZCBDb21wb3NpdGUgcHJvcFR5cGU6IFwiKSYmIWUpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkobj4yP24tMjowKSxvPTI7bzxuO28rKylyW28tMl09YXJndW1lbnRzW29dOyhmdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTt2YXIgbz0wLGE9XCJXYXJuaW5nOiBcIitlLnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gbltvKytdfSk7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUuZXJyb3IoYSk7dHJ5e3Rocm93IG5ldyBFcnJvcihhKX1jYXRjaChlKXt9fSkuYXBwbHkodm9pZCAwLFt0XS5jb25jYXQocikpfX19ZS5leHBvcnRzPXJ9KS5jYWxsKHQsbig1KSl9LGZ1bmN0aW9uKGUsdCl7XG4vKlxuXHRvYmplY3QtYXNzaWduXG5cdChjKSBTaW5kcmUgU29yaHVzXG5cdEBsaWNlbnNlIE1JVFxuXHQqL1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxyPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbz1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKFwiYWJjXCIpO2lmKGVbNV09XCJkZVwiLFwiNVwiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LG49MDtuPDEwO24rKyl0W1wiX1wiK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47aWYoXCIwMTIzNDU2Nzg5XCIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KS5qb2luKFwiXCIpKXJldHVybiExO3ZhciByPXt9O3JldHVyblwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIi5zcGxpdChcIlwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JbZV09ZX0pLFwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIj09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30scikpLmpvaW4oXCJcIil9Y2F0Y2goZSl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGEsaSxsPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBPYmplY3QoZSl9KGUpLHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXtmb3IodmFyIHUgaW4gYT1PYmplY3QoYXJndW1lbnRzW3NdKSlyLmNhbGwoYSx1KSYmKGxbdV09YVt1XSk7aWYobil7aT1uKGEpO2Zvcih2YXIgYz0wO2M8aS5sZW5ndGg7YysrKW8uY2FsbChhLGlbY10pJiYobFtpW2NdXT1hW2lbY11dKX19cmV0dXJuIGx9fSxmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1cIlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEXCJ9LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7XCJ1c2Ugc3RyaWN0XCI7aWYoXCJwcm9kdWN0aW9uXCIhPT10LmVudi5OT0RFX0VOVil2YXIgcj1uKDgpLG89big5KSxhPW4oMTEpLGk9e307ZS5leHBvcnRzPWZ1bmN0aW9uKGUsbixsLHMsdSl7aWYoXCJwcm9kdWN0aW9uXCIhPT10LmVudi5OT0RFX0VOVilmb3IodmFyIGMgaW4gZSlpZihlLmhhc093blByb3BlcnR5KGMpKXt2YXIgZDt0cnl7cihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlW2NdLFwiJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UsIGJ1dCByZWNlaXZlZCBgJXNgLlwiLHN8fFwiUmVhY3QgY2xhc3NcIixsLGMsdHlwZW9mIGVbY10pLGQ9ZVtjXShuLGMscyxsLG51bGwsYSl9Y2F0Y2goZSl7ZD1lfWlmKG8oIWR8fGQgaW5zdGFuY2VvZiBFcnJvcixcIiVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXMgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICVzLiBZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciBjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kIHNoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50KS5cIixzfHxcIlJlYWN0IGNsYXNzXCIsbCxjLHR5cGVvZiBkKSxkIGluc3RhbmNlb2YgRXJyb3ImJiEoZC5tZXNzYWdlIGluIGkpKXtpW2QubWVzc2FnZV09ITA7dmFyIHA9dT91KCk6XCJcIjtvKCExLFwiRmFpbGVkICVzIHR5cGU6ICVzJXNcIixsLGQubWVzc2FnZSxudWxsIT1wP3A6XCJcIil9fX19KS5jYWxsKHQsbig1KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDcpLG89big4KSxhPW4oMTEpO2UuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4scixpLGwpe2whPT1hJiZvKCExLFwiQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlc1wiKX1mdW5jdGlvbiB0KCl7cmV0dXJuIGV9ZS5pc1JlcXVpcmVkPWU7dmFyIG49e2FycmF5OmUsYm9vbDplLGZ1bmM6ZSxudW1iZXI6ZSxvYmplY3Q6ZSxzdHJpbmc6ZSxzeW1ib2w6ZSxhbnk6ZSxhcnJheU9mOnQsZWxlbWVudDplLGluc3RhbmNlT2Y6dCxub2RlOmUsb2JqZWN0T2Y6dCxvbmVPZjp0LG9uZU9mVHlwZTp0LHNoYXBlOnQsZXhhY3Q6dH07cmV0dXJuIG4uY2hlY2tQcm9wVHlwZXM9cixuLlByb3BUeXBlcz1uLG59fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKDApfSxmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO3ZhciBuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm4scj12b2lkIDAsbz1bXSxhPXZvaWQgMCxpPSExLGw9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG9bbl0pfTtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQpLHM9MDtzPHQ7cysrKW5bc109YXJndW1lbnRzW3NdO3JldHVybiBpJiZyPT09dGhpcyYmbi5sZW5ndGg9PT1vLmxlbmd0aCYmbi5ldmVyeShsKT9hOihpPSEwLHI9dGhpcyxvPW4sYT1lLmFwcGx5KHRoaXMsbikpfX19XSl9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big2OTEpO2NvbnN0IHI9J2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xcclxcbmltcG9ydCB7IEF2YXRhciwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbWF0ZXJpYWwtdWkvY29yZVwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuaW1wb3J0IHsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jLCBBTExfRlJVSVRTIH0gZnJvbSBcIi4vY29tbW9uXCI7XFxyXFxuXFxyXFxuY29uc3QgTlVNQkVSX09GX0ZSVUlUU19UT19TSE9XID0gMztcXHJcXG5cXHJcXG5jb25zdCBmcnVpdEF2YXRhcnMgPSBpdGVtID0+IDxBdmF0YXIgYWx0PXsgaXRlbS5uYW1lIH0gc3JjPXsgaXRlbS5pbWFnZSB9IC8+O1xcclxcblxcclxcbmNvbnN0IGZydWl0UG9wb3ZlciA9IGl0ZW0gPT4gKFxcclxcbiAgICA8ZGl2IHN0eWxlPXsgeyBkaXNwbGF5OiBcImZsZXhcIiwgYWxpZ25JdGVtczogXCJjZW50ZXJcIiwgcGFkZGluZzogXCI0cHggOHB4XCIgfSB9PlxcclxcbiAgICAgICAgPGltZyBzcmM9eyBpdGVtLmltYWdlIH0gc3R5bGU9eyB7IGhlaWdodDogXCIyMHB4XCIsIHdpZHRoOiBcIjIwcHhcIiB9IH0gLz5cXHJcXG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XFwnc3VidGl0bGUxXFwnPnsgaXRlbS5kZXRhaWwgfTwvVHlwb2dyYXBoeT5cXHJcXG4gICAgPC9kaXY+XFxyXFxuKTtcXHJcXG5cXHJcXG5jb25zdCBmcnVpdE5hbWVXaXRoU3RvY2sgPSBmcnVpdCA9PiBgJHtmcnVpdC5uYW1lfSAoJHtmcnVpdC5zdG9ja30pYDtcXHJcXG5cXHJcXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYXNpY0RlbW8oKSB7XFxyXFxuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGUoQUxMX0ZSVUlUUy5zbGljZSgwLCBOVU1CRVJfT0ZfRlJVSVRTX1RPX1NIT1cpKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH1cXHJcXG4gICAgICAgICAgICBjaGlwQ29sb3I9XFwncHJpbWFyeVxcJ1xcclxcbiAgICAgICAgICAgIGl0ZW1Ub0F2YXRhcj17IGZydWl0QXZhdGFycyB9XFxyXFxuICAgICAgICAgICAgaXRlbVRvTGFiZWw9eyBmcnVpdE5hbWVXaXRoU3RvY2sgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1BvcG92ZXI9eyBmcnVpdFBvcG92ZXIgfVxcclxcbiAgICAgICAgICAgIGxhYmVsPVwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIlxcclxcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPVwiVGhlIGNoaXAgZWxlbWVudHMgdGhhdCByZXByZXNlbnQgc2VsZWN0ZWQgaXRlbXMgYWxsb3cgdGhlIGZvbGxvd2luZyBjdXN0b21pc2F0aW9uczpcXHJcXG4gKiB3aXRoIHRoZSBgaXRlbVRvTGFiZWxgIHByb3AsIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY2hpcCBsYWJlbHMgKHdoaWNoIGFyZSBvYnRhaW5lZCB1c2luZyBgaXRlbVRvU3RyaW5nYClcXHJcXG4gKiB3aXRoIHRoZSBgY2hpcENvbG9yYCBwcm9wLCB5b3UgY2FuIHNwZWNpZnkgYSB0aGVtZSBjb2xvciB0byB1c2VcXHJcXG4gKiB3aXRoIHRoZSBgaXRlbVRvQXZhdGFyYCBwcm9wLCB5b3UgY2FuIHVzZSBbTWF0ZXJpYWwgQXZhdGFyc10oaHR0cHM6Ly9tYXRlcmlhbC11aS5jb20vZGVtb3MvYXZhdGFycy8pIHRvIGRpc3BsYXkgcGVyLWl0ZW0gaWNvbnNcXHJcXG4gKiB3aXRoIHRoZSBgaXRlbVRvUG9wb3ZlcmAgcHJvcCwgeW91IGNhbiBwcm92aWRlIHBlci1pdGVtIHBvcG92ZXIgaGVscGVycyB0aGF0IGFjdGl2YXRlIHdoZW4gdGhlIHVzZXIgaG92ZXJzIG92ZXIgdGhlIGNoaXBcIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjkyKTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcbmltcG9ydCB7IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9IGZyb20gXCIuL2NvbW1vblwiO1xcclxcblxcclxcbmNvbnN0IFNFUlZFUl9SRVNQT05TRV9USU1FX0lOX01JTExJU0VDT05EUyA9IDIwMDA7XFxyXFxuXFxyXFxuZnVuY3Rpb24gZ2V0U3VnZ2VzdGVkRnJ1aXRTbG9vb293KGlucHV0VmFsdWUpIHtcXHJcXG4gICAgaWYgKCAhaW5wdXRWYWx1ZS5sZW5ndGggKSB7XFxyXFxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcXHJcXG4gICAgfVxcclxcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XFxyXFxuICAgICAgICBzZXRUaW1lb3V0KFxcclxcbiAgICAgICAgICAgICgpID0+IHJlc29sdmUoZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jKGlucHV0VmFsdWUpKSxcXHJcXG4gICAgICAgICAgICBTRVJWRVJfUkVTUE9OU0VfVElNRV9JTl9NSUxMSVNFQ09ORFNcXHJcXG4gICAgICAgICk7XFxyXFxuICAgIH0pO1xcclxcbn1cXHJcXG5cXHJcXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHbG9iYWxDYWNoZURlbW8oKSB7XFxyXFxuICAgIGNvbnN0IFsgaXRlbXMxLCBzZXRJdGVtczEgXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgY29uc3QgWyBpdGVtczIsIHNldEl0ZW1zMiBdID0gdXNlU3RhdGUoW10pO1xcclxcbiAgICByZXR1cm4gKFxcclxcbiAgICAgICAgPD5cXHJcXG4gICAgICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICAgICAgdmFsdWU9eyBpdGVtczEgfVxcclxcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zMSB9XFxyXFxuICAgICAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0U2xvb29vdyB9XFxyXFxuICAgICAgICAgICAgICAgIHVzZUdsb2JhbENhY2hlPVwic2hhcmVkLWZydWl0XCJcXHJcXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdCAxXCJcXHJcXG4gICAgICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAgICAgLz5cXHJcXG4gICAgICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICAgICAgdmFsdWU9eyBpdGVtczIgfVxcclxcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zMiB9XFxyXFxuICAgICAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0U2xvb29vdyB9XFxyXFxuICAgICAgICAgICAgICAgIHVzZUdsb2JhbENhY2hlPVwic2hhcmVkLWZydWl0XCJcXHJcXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdCAyXCJcXHJcXG4gICAgICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAgICAgLz5cXHJcXG4gICAgICAgIDwvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG4nLG89XCJJZiB5b3UncmUgbWFraW5nIGEgcGlja2VyIGFuZCB3YW50IHRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Z2dlc3Rpb24gZmV0Y2hpbmcsIGFuZCB5b3UgY2FuJ3QgdXNlIGNhY2hpbmcgb24gdGhlIHJlcXVlc3QsIHlvdSBjYW4gcHJvdmlkZSB0aGUgYHVzZUdsb2JhbENhY2hlYCBwcm9wLiBUaGlzIHdpbGwgbWFrZSB0aGUgcGlja2VyIHN0b3JlIHN1Z2dlc3Rpb25zIGluIGEgc2hhcmVkIGNhY2hlIG9iamVjdCwgYW5kIGFsbCBvdGhlciBwaWNrZXJzIHRoYXQgdXNlIHRoZSBzYW1lIGNhY2hlIHdpbGwgYmUgYWJsZSB0byB1c2UgaXQgd3RpaG91dCBuZWVkaW5nIHRvIHJlLWZldGNoIHN1Z2dlc3Rpb25zIHJlbW90ZWx5LlwiO2UuZXhwb3J0cy5kZWZhdWx0JiYoZS5leHBvcnRzLmRlZmF1bHQuX19zb3VyY2VfXz1yLGUuZXhwb3J0cy5kZWZhdWx0Ll9fbWFya2Rvd25fXz1vKSxlLmV4cG9ydHMuX19zb3VyY2U9cixlLmV4cG9ydHMuX19tYXJrZG93bl9fPW99LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big2OTMpO2NvbnN0IHI9J2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuaW1wb3J0IHsgQUxMX0ZSVUlUUyB9IGZyb20gXCIuL2NvbW1vblwiO1xcclxcblxcclxcbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMoc2VhcmNoU3RyaW5nKSB7XFxyXFxuICAgIHJldHVybiBBTExfRlJVSVRTXFxyXFxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCkpKTtcXHJcXG59XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2xlYXJPbkJsdXJEZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBjbGVhcklucHV0T25CbHVyXFxyXFxuICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG4nLG89XCJUbyBhdm9pZCBjb25mdXNpb24gd2hlbiB1c2VycyBlbnRlciB0ZXh0IGJ1dCBkb24ndCBwaWNrIGFueXRoaW5nIGZyb20gdGhlIGRyb3Bkb3duLCB5b3UgY2FuIHNldCB0aGUgYGNsZWFySW5wdXRPbkJsdXJgIHByb3Agd2hpY2ggcmVtb3ZlcyB0aGUgdHlwZWQgaW5wdXQgdmFsdWUgd2hlbiB0aGUgcGlja2VyIGxvc2VzIGZvY3VzLlwiO2UuZXhwb3J0cy5kZWZhdWx0JiYoZS5leHBvcnRzLmRlZmF1bHQuX19zb3VyY2VfXz1yLGUuZXhwb3J0cy5kZWZhdWx0Ll9fbWFya2Rvd25fXz1vKSxlLmV4cG9ydHMuX19zb3VyY2U9cixlLmV4cG9ydHMuX19tYXJrZG93bl9fPW99LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtcbi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuOC4zXG4gKiByZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovdmFyIHI9big5OCksbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsYT1vP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLGk9bz9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGw9bz9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcscz1vP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCx1PW8/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGM9bz9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksZD1vP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLHA9bz9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLGY9bz9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIsbT1vP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxnPW8/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsaD1vP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2LGI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24geShlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aC0xLG49XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIitlLHI9MDtyPHQ7cisrKW4rPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW3IrMV0pOyFmdW5jdGlvbihlLHQsbixyLG8sYSxpLGwpe2lmKCFlKXtpZihlPXZvaWQgMCx2b2lkIDA9PT10KWU9RXJyb3IoXCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwiKTtlbHNle3ZhciBzPVtuLHIsbyxhLGksbF0sdT0wOyhlPUVycm9yKHQucmVwbGFjZSgvJXMvZyxmdW5jdGlvbigpe3JldHVybiBzW3UrK119KSkpLm5hbWU9XCJJbnZhcmlhbnQgVmlvbGF0aW9uXCJ9dGhyb3cgZS5mcmFtZXNUb1BvcD0xLGV9fSghMSxcIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIitlK1wiOyB2aXNpdCAlcyBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIFwiLG4pfXZhciB2PXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxTPXt9O2Z1bmN0aW9uIEUoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9Uyx0aGlzLnVwZGF0ZXI9bnx8dn1mdW5jdGlvbiB4KCl7fWZ1bmN0aW9uIHcoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9Uyx0aGlzLnVwZGF0ZXI9bnx8dn1FLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LEUucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7XCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPWUmJnkoXCI4NVwiKSx0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsZSx0LFwic2V0U3RhdGVcIil9LEUucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxlLFwiZm9yY2VVcGRhdGVcIil9LHgucHJvdG90eXBlPUUucHJvdG90eXBlO3ZhciBrPXcucHJvdG90eXBlPW5ldyB4O2suY29uc3RydWN0b3I9dyxyKGssRS5wcm90b3R5cGUpLGsuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIF89e2N1cnJlbnQ6bnVsbH0sVD17Y3VycmVudDpudWxsfSxBPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQz17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIE8oZSx0LG4pe3ZhciByPXZvaWQgMCxvPXt9LGk9bnVsbCxsPW51bGw7aWYobnVsbCE9dClmb3IociBpbiB2b2lkIDAhPT10LnJlZiYmKGw9dC5yZWYpLHZvaWQgMCE9PXQua2V5JiYoaT1cIlwiK3Qua2V5KSx0KUEuY2FsbCh0LHIpJiYhQy5oYXNPd25Qcm9wZXJ0eShyKSYmKG9bcl09dFtyXSk7dmFyIHM9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1zKW8uY2hpbGRyZW49bjtlbHNlIGlmKDE8cyl7Zm9yKHZhciB1PUFycmF5KHMpLGM9MDtjPHM7YysrKXVbY109YXJndW1lbnRzW2MrMl07by5jaGlsZHJlbj11fWlmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihyIGluIHM9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09b1tyXSYmKG9bcl09c1tyXSk7cmV0dXJueyQkdHlwZW9mOmEsdHlwZTplLGtleTppLHJlZjpsLHByb3BzOm8sX293bmVyOlQuY3VycmVudH19ZnVuY3Rpb24gSShlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1hfXZhciBOPS9cXC8rL2csUj1bXTtmdW5jdGlvbiBQKGUsdCxuLHIpe2lmKFIubGVuZ3RoKXt2YXIgbz1SLnBvcCgpO3JldHVybiBvLnJlc3VsdD1lLG8ua2V5UHJlZml4PXQsby5mdW5jPW4sby5jb250ZXh0PXIsby5jb3VudD0wLG99cmV0dXJue3Jlc3VsdDplLGtleVByZWZpeDp0LGZ1bmM6bixjb250ZXh0OnIsY291bnQ6MH19ZnVuY3Rpb24gTShlKXtlLnJlc3VsdD1udWxsLGUua2V5UHJlZml4PW51bGwsZS5mdW5jPW51bGwsZS5jb250ZXh0PW51bGwsZS5jb3VudD0wLDEwPlIubGVuZ3RoJiZSLnB1c2goZSl9ZnVuY3Rpb24gTChlLHQsbil7cmV0dXJuIG51bGw9PWU/MDpmdW5jdGlvbiBlKHQsbixyLG8pe3ZhciBsPXR5cGVvZiB0O1widW5kZWZpbmVkXCIhPT1sJiZcImJvb2xlYW5cIiE9PWx8fCh0PW51bGwpO3ZhciBzPSExO2lmKG51bGw9PT10KXM9ITA7ZWxzZSBzd2l0Y2gobCl7Y2FzZVwic3RyaW5nXCI6Y2FzZVwibnVtYmVyXCI6cz0hMDticmVhaztjYXNlXCJvYmplY3RcIjpzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBhOmNhc2UgaTpzPSEwfX1pZihzKXJldHVybiByKG8sdCxcIlwiPT09bj9cIi5cIitEKHQsMCk6biksMTtpZihzPTAsbj1cIlwiPT09bj9cIi5cIjpuK1wiOlwiLEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciB1PTA7dTx0Lmxlbmd0aDt1Kyspe3ZhciBjPW4rRChsPXRbdV0sdSk7cys9ZShsLGMscixvKX1lbHNlIGlmKGM9bnVsbD09PXR8fFwib2JqZWN0XCIhPXR5cGVvZiB0P251bGw6XCJmdW5jdGlvblwiPT10eXBlb2YoYz1iJiZ0W2JdfHx0W1wiQEBpdGVyYXRvclwiXSk/YzpudWxsLFwiZnVuY3Rpb25cIj09dHlwZW9mIGMpZm9yKHQ9Yy5jYWxsKHQpLHU9MDshKGw9dC5uZXh0KCkpLmRvbmU7KXMrPWUobD1sLnZhbHVlLGM9bitEKGwsdSsrKSxyLG8pO2Vsc2VcIm9iamVjdFwiPT09bCYmeShcIjMxXCIsXCJbb2JqZWN0IE9iamVjdF1cIj09KHI9XCJcIit0KT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKHQpLmpvaW4oXCIsIFwiKStcIn1cIjpyLFwiXCIpO3JldHVybiBzfShlLFwiXCIsdCxuKX1mdW5jdGlvbiBEKGUsdCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT9mdW5jdGlvbihlKXt2YXIgdD17XCI9XCI6XCI9MFwiLFwiOlwiOlwiPTJcIn07cmV0dXJuXCIkXCIrKFwiXCIrZSkucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9KGUua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBGKGUsdCl7ZS5mdW5jLmNhbGwoZS5jb250ZXh0LHQsZS5jb3VudCsrKX1mdW5jdGlvbiBCKGUsdCxuKXt2YXIgcj1lLnJlc3VsdCxvPWUua2V5UHJlZml4O2U9ZS5mdW5jLmNhbGwoZS5jb250ZXh0LHQsZS5jb3VudCsrKSxBcnJheS5pc0FycmF5KGUpP2ooZSxyLG4sZnVuY3Rpb24oZSl7cmV0dXJuIGV9KTpudWxsIT1lJiYoSShlKSYmKGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6YSx0eXBlOmUudHlwZSxrZXk6dCxyZWY6ZS5yZWYscHJvcHM6ZS5wcm9wcyxfb3duZXI6ZS5fb3duZXJ9fShlLG8rKCFlLmtleXx8dCYmdC5rZXk9PT1lLmtleT9cIlwiOihcIlwiK2Uua2V5KS5yZXBsYWNlKE4sXCIkJi9cIikrXCIvXCIpK24pKSxyLnB1c2goZSkpfWZ1bmN0aW9uIGooZSx0LG4scixvKXt2YXIgYT1cIlwiO251bGwhPW4mJihhPShcIlwiK24pLnJlcGxhY2UoTixcIiQmL1wiKStcIi9cIiksTChlLEIsdD1QKHQsYSxyLG8pKSxNKHQpfWZ1bmN0aW9uIFUoKXt2YXIgZT1fLmN1cnJlbnQ7cmV0dXJuIG51bGw9PT1lJiZ5KFwiMzA3XCIpLGV9dmFyIHo9e0NoaWxkcmVuOnttYXA6ZnVuY3Rpb24oZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIHI9W107cmV0dXJuIGooZSxyLG51bGwsdCxuKSxyfSxmb3JFYWNoOmZ1bmN0aW9uKGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO0woZSxGLHQ9UChudWxsLG51bGwsdCxuKSksTSh0KX0sY291bnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIEwoZSxmdW5jdGlvbigpe3JldHVybiBudWxsfSxudWxsKX0sdG9BcnJheTpmdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gaihlLHQsbnVsbCxmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHR9LG9ubHk6ZnVuY3Rpb24oZSl7cmV0dXJuIEkoZSl8fHkoXCIxNDNcIiksZX19LGNyZWF0ZVJlZjpmdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fSxDb21wb25lbnQ6RSxQdXJlQ29tcG9uZW50OncsY3JlYXRlQ29udGV4dDpmdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1udWxsKSwoZT17JCR0eXBlb2Y6ZCxfY2FsY3VsYXRlQ2hhbmdlZEJpdHM6dCxfY3VycmVudFZhbHVlOmUsX2N1cnJlbnRWYWx1ZTI6ZSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGx9KS5Qcm92aWRlcj17JCR0eXBlb2Y6YyxfY29udGV4dDplfSxlLkNvbnN1bWVyPWV9LGZvcndhcmRSZWY6ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOmYscmVuZGVyOmV9fSxsYXp5OmZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpoLF9jdG9yOmUsX3N0YXR1czotMSxfcmVzdWx0Om51bGx9fSxtZW1vOmZ1bmN0aW9uKGUsdCl7cmV0dXJueyQkdHlwZW9mOmcsdHlwZTplLGNvbXBhcmU6dm9pZCAwPT09dD9udWxsOnR9fSx1c2VDYWxsYmFjazpmdW5jdGlvbihlLHQpe3JldHVybiBVKCkudXNlQ2FsbGJhY2soZSx0KX0sdXNlQ29udGV4dDpmdW5jdGlvbihlLHQpe3JldHVybiBVKCkudXNlQ29udGV4dChlLHQpfSx1c2VFZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVSgpLnVzZUVmZmVjdChlLHQpfSx1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVSgpLnVzZUltcGVyYXRpdmVIYW5kbGUoZSx0LG4pfSx1c2VEZWJ1Z1ZhbHVlOmZ1bmN0aW9uKCl7fSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVSgpLnVzZUxheW91dEVmZmVjdChlLHQpfSx1c2VNZW1vOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFUoKS51c2VNZW1vKGUsdCl9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBVKCkudXNlUmVkdWNlcihlLHQsbil9LHVzZVJlZjpmdW5jdGlvbihlKXtyZXR1cm4gVSgpLnVzZVJlZihlKX0sdXNlU3RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIFUoKS51c2VTdGF0ZShlKX0sRnJhZ21lbnQ6bCxTdHJpY3RNb2RlOnMsU3VzcGVuc2U6bSxjcmVhdGVFbGVtZW50Ok8sY2xvbmVFbGVtZW50OmZ1bmN0aW9uKGUsdCxuKXtudWxsPT1lJiZ5KFwiMjY3XCIsZSk7dmFyIG89dm9pZCAwLGk9cih7fSxlLnByb3BzKSxsPWUua2V5LHM9ZS5yZWYsdT1lLl9vd25lcjtpZihudWxsIT10KXt2b2lkIDAhPT10LnJlZiYmKHM9dC5yZWYsdT1ULmN1cnJlbnQpLHZvaWQgMCE9PXQua2V5JiYobD1cIlwiK3Qua2V5KTt2YXIgYz12b2lkIDA7Zm9yKG8gaW4gZS50eXBlJiZlLnR5cGUuZGVmYXVsdFByb3BzJiYoYz1lLnR5cGUuZGVmYXVsdFByb3BzKSx0KUEuY2FsbCh0LG8pJiYhQy5oYXNPd25Qcm9wZXJ0eShvKSYmKGlbb109dm9pZCAwPT09dFtvXSYmdm9pZCAwIT09Yz9jW29dOnRbb10pfWlmKDE9PT0obz1hcmd1bWVudHMubGVuZ3RoLTIpKWkuY2hpbGRyZW49bjtlbHNlIGlmKDE8byl7Yz1BcnJheShvKTtmb3IodmFyIGQ9MDtkPG87ZCsrKWNbZF09YXJndW1lbnRzW2QrMl07aS5jaGlsZHJlbj1jfXJldHVybnskJHR5cGVvZjphLHR5cGU6ZS50eXBlLGtleTpsLHJlZjpzLHByb3BzOmksX293bmVyOnV9fSxjcmVhdGVGYWN0b3J5OmZ1bmN0aW9uKGUpe3ZhciB0PU8uYmluZChudWxsLGUpO3JldHVybiB0LnR5cGU9ZSx0fSxpc1ZhbGlkRWxlbWVudDpJLHZlcnNpb246XCIxNi44LjNcIix1bnN0YWJsZV9Db25jdXJyZW50TW9kZTpwLHVuc3RhYmxlX1Byb2ZpbGVyOnUsX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ6e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6XyxSZWFjdEN1cnJlbnRPd25lcjpULGFzc2lnbjpyfX0sSD17ZGVmYXVsdDp6fSxXPUgmJnp8fEg7ZS5leHBvcnRzPVcuZGVmYXVsdHx8V30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO1xuLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi44LjNcbiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovdmFyIHI9bigwKSxvPW4oOTgpLGE9bigyNzMpO2Z1bmN0aW9uIGkoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMSxuPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrZSxyPTA7cjx0O3IrKyluKz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tyKzFdKTshZnVuY3Rpb24oZSx0LG4scixvLGEsaSxsKXtpZighZSl7aWYoZT12b2lkIDAsdm9pZCAwPT09dCllPUVycm9yKFwiTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIik7ZWxzZXt2YXIgcz1bbixyLG8sYSxpLGxdLHU9MDsoZT1FcnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gc1t1KytdfSkpKS5uYW1lPVwiSW52YXJpYW50IFZpb2xhdGlvblwifXRocm93IGUuZnJhbWVzVG9Qb3A9MSxlfX0oITEsXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrZStcIjsgdmlzaXQgJXMgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiBcIixuKX1yfHxpKFwiMjI3XCIpO3ZhciBsPSExLHM9bnVsbCx1PSExLGM9bnVsbCxkPXtvbkVycm9yOmZ1bmN0aW9uKGUpe2w9ITAscz1lfX07ZnVuY3Rpb24gcChlLHQsbixyLG8sYSxpLHUsYyl7bD0hMSxzPW51bGwsZnVuY3Rpb24oZSx0LG4scixvLGEsaSxsLHMpe3ZhciB1PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKTt0cnl7dC5hcHBseShuLHUpfWNhdGNoKGUpe3RoaXMub25FcnJvcihlKX19LmFwcGx5KGQsYXJndW1lbnRzKX12YXIgZj1udWxsLG09e307ZnVuY3Rpb24gZygpe2lmKGYpZm9yKHZhciBlIGluIG0pe3ZhciB0PW1bZV0sbj1mLmluZGV4T2YoZSk7aWYoLTE8bnx8aShcIjk2XCIsZSksIWJbbl0pZm9yKHZhciByIGluIHQuZXh0cmFjdEV2ZW50c3x8aShcIjk3XCIsZSksYltuXT10LG49dC5ldmVudFR5cGVzKXt2YXIgbz12b2lkIDAsYT1uW3JdLGw9dCxzPXI7eS5oYXNPd25Qcm9wZXJ0eShzKSYmaShcIjk5XCIscykseVtzXT1hO3ZhciB1PWEucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7aWYodSl7Zm9yKG8gaW4gdSl1Lmhhc093blByb3BlcnR5KG8pJiZoKHVbb10sbCxzKTtvPSEwfWVsc2UgYS5yZWdpc3RyYXRpb25OYW1lPyhoKGEucmVnaXN0cmF0aW9uTmFtZSxsLHMpLG89ITApOm89ITE7b3x8aShcIjk4XCIscixlKX19fWZ1bmN0aW9uIGgoZSx0LG4pe3ZbZV0mJmkoXCIxMDBcIixlKSx2W2VdPXQsU1tlXT10LmV2ZW50VHlwZXNbbl0uZGVwZW5kZW5jaWVzfXZhciBiPVtdLHk9e30sdj17fSxTPXt9LEU9bnVsbCx4PW51bGwsdz1udWxsO2Z1bmN0aW9uIGsoZSx0LG4pe3ZhciByPWUudHlwZXx8XCJ1bmtub3duLWV2ZW50XCI7ZS5jdXJyZW50VGFyZ2V0PXcobiksZnVuY3Rpb24oZSx0LG4scixvLGEsZCxmLG0pe2lmKHAuYXBwbHkodGhpcyxhcmd1bWVudHMpLGwpe2lmKGwpe3ZhciBnPXM7bD0hMSxzPW51bGx9ZWxzZSBpKFwiMTk4XCIpLGc9dm9pZCAwO3V8fCh1PSEwLGM9Zyl9fShyLHQsdm9pZCAwLGUpLGUuY3VycmVudFRhcmdldD1udWxsfWZ1bmN0aW9uIF8oZSx0KXtyZXR1cm4gbnVsbD09dCYmaShcIjMwXCIpLG51bGw9PWU/dDpBcnJheS5pc0FycmF5KGUpP0FycmF5LmlzQXJyYXkodCk/KGUucHVzaC5hcHBseShlLHQpLGUpOihlLnB1c2godCksZSk6QXJyYXkuaXNBcnJheSh0KT9bZV0uY29uY2F0KHQpOltlLHRdfWZ1bmN0aW9uIFQoZSx0LG4pe0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKHQsbik6ZSYmdC5jYWxsKG4sZSl9dmFyIEE9bnVsbDtmdW5jdGlvbiBDKGUpe2lmKGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO3IrKylrKGUsdFtyXSxuW3JdKTtlbHNlIHQmJmsoZSx0LG4pO2UuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbCxlLmlzUGVyc2lzdGVudCgpfHxlLmNvbnN0cnVjdG9yLnJlbGVhc2UoZSl9fXZhciBPPXtpbmplY3RFdmVudFBsdWdpbk9yZGVyOmZ1bmN0aW9uKGUpe2YmJmkoXCIxMDFcIiksZj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSxnKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpmdW5jdGlvbihlKXt2YXIgdCxuPSExO2Zvcih0IGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIHI9ZVt0XTttLmhhc093blByb3BlcnR5KHQpJiZtW3RdPT09cnx8KG1bdF0mJmkoXCIxMDJcIix0KSxtW3RdPXIsbj0hMCl9biYmZygpfX07ZnVuY3Rpb24gSShlLHQpe3ZhciBuPWUuc3RhdGVOb2RlO2lmKCFuKXJldHVybiBudWxsO3ZhciByPUUobik7aWYoIXIpcmV0dXJuIG51bGw7bj1yW3RdO2U6c3dpdGNoKHQpe2Nhc2VcIm9uQ2xpY2tcIjpjYXNlXCJvbkNsaWNrQ2FwdHVyZVwiOmNhc2VcIm9uRG91YmxlQ2xpY2tcIjpjYXNlXCJvbkRvdWJsZUNsaWNrQ2FwdHVyZVwiOmNhc2VcIm9uTW91c2VEb3duXCI6Y2FzZVwib25Nb3VzZURvd25DYXB0dXJlXCI6Y2FzZVwib25Nb3VzZU1vdmVcIjpjYXNlXCJvbk1vdXNlTW92ZUNhcHR1cmVcIjpjYXNlXCJvbk1vdXNlVXBcIjpjYXNlXCJvbk1vdXNlVXBDYXB0dXJlXCI6KHI9IXIuZGlzYWJsZWQpfHwocj0hKFwiYnV0dG9uXCI9PT0oZT1lLnR5cGUpfHxcImlucHV0XCI9PT1lfHxcInNlbGVjdFwiPT09ZXx8XCJ0ZXh0YXJlYVwiPT09ZSkpLGU9IXI7YnJlYWsgZTtkZWZhdWx0OmU9ITF9cmV0dXJuIGU/bnVsbDoobiYmXCJmdW5jdGlvblwiIT10eXBlb2YgbiYmaShcIjIzMVwiLHQsdHlwZW9mIG4pLG4pfWZ1bmN0aW9uIE4oZSl7aWYobnVsbCE9PWUmJihBPV8oQSxlKSksZT1BLEE9bnVsbCxlJiYoVChlLEMpLEEmJmkoXCI5NVwiKSx1KSl0aHJvdyBlPWMsdT0hMSxjPW51bGwsZX12YXIgUj1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxQPVwiX19yZWFjdEludGVybmFsSW5zdGFuY2UkXCIrUixNPVwiX19yZWFjdEV2ZW50SGFuZGxlcnMkXCIrUjtmdW5jdGlvbiBMKGUpe2lmKGVbUF0pcmV0dXJuIGVbUF07Zm9yKDshZVtQXTspe2lmKCFlLnBhcmVudE5vZGUpcmV0dXJuIG51bGw7ZT1lLnBhcmVudE5vZGV9cmV0dXJuIDU9PT0oZT1lW1BdKS50YWd8fDY9PT1lLnRhZz9lOm51bGx9ZnVuY3Rpb24gRChlKXtyZXR1cm4hKGU9ZVtQXSl8fDUhPT1lLnRhZyYmNiE9PWUudGFnP251bGw6ZX1mdW5jdGlvbiBGKGUpe2lmKDU9PT1lLnRhZ3x8Nj09PWUudGFnKXJldHVybiBlLnN0YXRlTm9kZTtpKFwiMzNcIil9ZnVuY3Rpb24gQihlKXtyZXR1cm4gZVtNXXx8bnVsbH1mdW5jdGlvbiBqKGUpe2Rve2U9ZS5yZXR1cm59d2hpbGUoZSYmNSE9PWUudGFnKTtyZXR1cm4gZXx8bnVsbH1mdW5jdGlvbiBVKGUsdCxuKXsodD1JKGUsbi5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1t0XSkpJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9XyhuLl9kaXNwYXRjaExpc3RlbmVycyx0KSxuLl9kaXNwYXRjaEluc3RhbmNlcz1fKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiB6KGUpe2lmKGUmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe2Zvcih2YXIgdD1lLl90YXJnZXRJbnN0LG49W107dDspbi5wdXNoKHQpLHQ9aih0KTtmb3IodD1uLmxlbmd0aDswPHQtLTspVShuW3RdLFwiY2FwdHVyZWRcIixlKTtmb3IodD0wO3Q8bi5sZW5ndGg7dCsrKVUoblt0XSxcImJ1YmJsZWRcIixlKX19ZnVuY3Rpb24gSChlLHQsbil7ZSYmbiYmbi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiYodD1JKGUsbi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSkmJihuLl9kaXNwYXRjaExpc3RlbmVycz1fKG4uX2Rpc3BhdGNoTGlzdGVuZXJzLHQpLG4uX2Rpc3BhdGNoSW5zdGFuY2VzPV8obi5fZGlzcGF0Y2hJbnN0YW5jZXMsZSkpfWZ1bmN0aW9uIFcoZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiZIKGUuX3RhcmdldEluc3QsbnVsbCxlKX1mdW5jdGlvbiBHKGUpe1QoZSx6KX12YXIgVj0hKFwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuZG9jdW1lbnR8fCF3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7ZnVuY3Rpb24gJChlLHQpe3ZhciBuPXt9O3JldHVybiBuW2UudG9Mb3dlckNhc2UoKV09dC50b0xvd2VyQ2FzZSgpLG5bXCJXZWJraXRcIitlXT1cIndlYmtpdFwiK3QsbltcIk1velwiK2VdPVwibW96XCIrdCxufXZhciBxPXthbmltYXRpb25lbmQ6JChcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uRW5kXCIpLGFuaW1hdGlvbml0ZXJhdGlvbjokKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25JdGVyYXRpb25cIiksYW5pbWF0aW9uc3RhcnQ6JChcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uU3RhcnRcIiksdHJhbnNpdGlvbmVuZDokKFwiVHJhbnNpdGlvblwiLFwiVHJhbnNpdGlvbkVuZFwiKX0sSz17fSxZPXt9O2Z1bmN0aW9uIFgoZSl7aWYoS1tlXSlyZXR1cm4gS1tlXTtpZighcVtlXSlyZXR1cm4gZTt2YXIgdCxuPXFbZV07Zm9yKHQgaW4gbilpZihuLmhhc093blByb3BlcnR5KHQpJiZ0IGluIFkpcmV0dXJuIEtbZV09blt0XTtyZXR1cm4gZX1WJiYoWT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLnN0eWxlLFwiQW5pbWF0aW9uRXZlbnRcImluIHdpbmRvd3x8KGRlbGV0ZSBxLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIHEuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgcS5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLFwiVHJhbnNpdGlvbkV2ZW50XCJpbiB3aW5kb3d8fGRlbGV0ZSBxLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7dmFyIFo9WChcImFuaW1hdGlvbmVuZFwiKSxRPVgoXCJhbmltYXRpb25pdGVyYXRpb25cIiksSj1YKFwiYW5pbWF0aW9uc3RhcnRcIiksZWU9WChcInRyYW5zaXRpb25lbmRcIiksdGU9XCJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VzcGVuZCB0aW1ldXBkYXRlIHZvbHVtZWNoYW5nZSB3YWl0aW5nXCIuc3BsaXQoXCIgXCIpLG5lPW51bGwscmU9bnVsbCxvZT1udWxsO2Z1bmN0aW9uIGFlKCl7aWYob2UpcmV0dXJuIG9lO3ZhciBlLHQsbj1yZSxyPW4ubGVuZ3RoLG89XCJ2YWx1ZVwiaW4gbmU/bmUudmFsdWU6bmUudGV4dENvbnRlbnQsYT1vLmxlbmd0aDtmb3IoZT0wO2U8ciYmbltlXT09PW9bZV07ZSsrKTt2YXIgaT1yLWU7Zm9yKHQ9MTt0PD1pJiZuW3ItdF09PT1vW2EtdF07dCsrKTtyZXR1cm4gb2U9by5zbGljZShlLDE8dD8xLXQ6dm9pZCAwKX1mdW5jdGlvbiBpZSgpe3JldHVybiEwfWZ1bmN0aW9uIGxlKCl7cmV0dXJuITF9ZnVuY3Rpb24gc2UoZSx0LG4scil7Zm9yKHZhciBvIGluIHRoaXMuZGlzcGF0Y2hDb25maWc9ZSx0aGlzLl90YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVFdmVudD1uLGU9dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2UpZS5oYXNPd25Qcm9wZXJ0eShvKSYmKCh0PWVbb10pP3RoaXNbb109dChuKTpcInRhcmdldFwiPT09bz90aGlzLnRhcmdldD1yOnRoaXNbb109bltvXSk7cmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1uLmRlZmF1bHRQcmV2ZW50ZWQ/bi5kZWZhdWx0UHJldmVudGVkOiExPT09bi5yZXR1cm5WYWx1ZSk/aWU6bGUsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1sZSx0aGlzfWZ1bmN0aW9uIHVlKGUsdCxuLHIpe2lmKHRoaXMuZXZlbnRQb29sLmxlbmd0aCl7dmFyIG89dGhpcy5ldmVudFBvb2wucG9wKCk7cmV0dXJuIHRoaXMuY2FsbChvLGUsdCxuLHIpLG99cmV0dXJuIG5ldyB0aGlzKGUsdCxuLHIpfWZ1bmN0aW9uIGNlKGUpe2UgaW5zdGFuY2VvZiB0aGlzfHxpKFwiMjc5XCIpLGUuZGVzdHJ1Y3RvcigpLDEwPnRoaXMuZXZlbnRQb29sLmxlbmd0aCYmdGhpcy5ldmVudFBvb2wucHVzaChlKX1mdW5jdGlvbiBkZShlKXtlLmV2ZW50UG9vbD1bXSxlLmdldFBvb2xlZD11ZSxlLnJlbGVhc2U9Y2V9byhzZS5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOlwidW5rbm93blwiIT10eXBlb2YgZS5yZXR1cm5WYWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWllKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKTpcInVua25vd25cIiE9dHlwZW9mIGUuY2FuY2VsQnViYmxlJiYoZS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9aWUpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7dGhpcy5pc1BlcnNpc3RlbnQ9aWV9LGlzUGVyc2lzdGVudDpsZSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtmb3IoZSBpbiB0KXRoaXNbZV09bnVsbDt0aGlzLm5hdGl2ZUV2ZW50PXRoaXMuX3RhcmdldEluc3Q9dGhpcy5kaXNwYXRjaENvbmZpZz1udWxsLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9bGUsdGhpcy5fZGlzcGF0Y2hJbnN0YW5jZXM9dGhpcy5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbH19KSxzZS5JbnRlcmZhY2U9e3R5cGU6bnVsbCx0YXJnZXQ6bnVsbCxjdXJyZW50VGFyZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGV2ZW50UGhhc2U6bnVsbCxidWJibGVzOm51bGwsY2FuY2VsYWJsZTpudWxsLHRpbWVTdGFtcDpmdW5jdGlvbihlKXtyZXR1cm4gZS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6bnVsbCxpc1RydXN0ZWQ6bnVsbH0sc2UuZXh0ZW5kPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt9ZnVuY3Rpb24gbigpe3JldHVybiByLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgcj10aGlzO3QucHJvdG90eXBlPXIucHJvdG90eXBlO3ZhciBhPW5ldyB0O3JldHVybiBvKGEsbi5wcm90b3R5cGUpLG4ucHJvdG90eXBlPWEsbi5wcm90b3R5cGUuY29uc3RydWN0b3I9bixuLkludGVyZmFjZT1vKHt9LHIuSW50ZXJmYWNlLGUpLG4uZXh0ZW5kPXIuZXh0ZW5kLGRlKG4pLG59LGRlKHNlKTt2YXIgcGU9c2UuZXh0ZW5kKHtkYXRhOm51bGx9KSxmZT1zZS5leHRlbmQoe2RhdGE6bnVsbH0pLG1lPVs5LDEzLDI3LDMyXSxnZT1WJiZcIkNvbXBvc2l0aW9uRXZlbnRcImluIHdpbmRvdyxoZT1udWxsO1YmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmKGhlPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIGJlPVYmJlwiVGV4dEV2ZW50XCJpbiB3aW5kb3cmJiFoZSx5ZT1WJiYoIWdlfHxoZSYmODxoZSYmMTE+PWhlKSx2ZT1TdHJpbmcuZnJvbUNoYXJDb2RlKDMyKSxTZT17YmVmb3JlSW5wdXQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25CZWZvcmVJbnB1dFwiLGNhcHR1cmVkOlwib25CZWZvcmVJbnB1dENhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOltcImNvbXBvc2l0aW9uZW5kXCIsXCJrZXlwcmVzc1wiLFwidGV4dElucHV0XCIsXCJwYXN0ZVwiXX0sY29tcG9zaXRpb25FbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25Db21wb3NpdGlvbkVuZFwiLGNhcHR1cmVkOlwib25Db21wb3NpdGlvbkVuZENhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOlwiYmx1ciBjb21wb3NpdGlvbmVuZCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKX0sY29tcG9zaXRpb25TdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6XCJvbkNvbXBvc2l0aW9uU3RhcnRcIixjYXB0dXJlZDpcIm9uQ29tcG9zaXRpb25TdGFydENhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOlwiYmx1ciBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpfSxjb21wb3NpdGlvblVwZGF0ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6XCJvbkNvbXBvc2l0aW9uVXBkYXRlXCIsY2FwdHVyZWQ6XCJvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6XCJibHVyIGNvbXBvc2l0aW9udXBkYXRlIGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpfX0sRWU9ITE7ZnVuY3Rpb24geGUoZSx0KXtzd2l0Y2goZSl7Y2FzZVwia2V5dXBcIjpyZXR1cm4tMSE9PW1lLmluZGV4T2YodC5rZXlDb2RlKTtjYXNlXCJrZXlkb3duXCI6cmV0dXJuIDIyOSE9PXQua2V5Q29kZTtjYXNlXCJrZXlwcmVzc1wiOmNhc2VcIm1vdXNlZG93blwiOmNhc2VcImJsdXJcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiB3ZShlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YoZT1lLmRldGFpbCkmJlwiZGF0YVwiaW4gZT9lLmRhdGE6bnVsbH12YXIga2U9ITE7dmFyIF9lPXtldmVudFR5cGVzOlNlLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dm9pZCAwLGE9dm9pZCAwO2lmKGdlKWU6e3N3aXRjaChlKXtjYXNlXCJjb21wb3NpdGlvbnN0YXJ0XCI6bz1TZS5jb21wb3NpdGlvblN0YXJ0O2JyZWFrIGU7Y2FzZVwiY29tcG9zaXRpb25lbmRcIjpvPVNlLmNvbXBvc2l0aW9uRW5kO2JyZWFrIGU7Y2FzZVwiY29tcG9zaXRpb251cGRhdGVcIjpvPVNlLmNvbXBvc2l0aW9uVXBkYXRlO2JyZWFrIGV9bz12b2lkIDB9ZWxzZSBrZT94ZShlLG4pJiYobz1TZS5jb21wb3NpdGlvbkVuZCk6XCJrZXlkb3duXCI9PT1lJiYyMjk9PT1uLmtleUNvZGUmJihvPVNlLmNvbXBvc2l0aW9uU3RhcnQpO3JldHVybiBvPyh5ZSYmXCJrb1wiIT09bi5sb2NhbGUmJihrZXx8byE9PVNlLmNvbXBvc2l0aW9uU3RhcnQ/bz09PVNlLmNvbXBvc2l0aW9uRW5kJiZrZSYmKGE9YWUoKSk6KHJlPVwidmFsdWVcImluKG5lPXIpP25lLnZhbHVlOm5lLnRleHRDb250ZW50LGtlPSEwKSksbz1wZS5nZXRQb29sZWQobyx0LG4sciksYT9vLmRhdGE9YTpudWxsIT09KGE9d2UobikpJiYoby5kYXRhPWEpLEcobyksYT1vKTphPW51bGwsKGU9YmU/ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gd2UodCk7Y2FzZVwia2V5cHJlc3NcIjpyZXR1cm4gMzIhPT10LndoaWNoP251bGw6KEVlPSEwLHZlKTtjYXNlXCJ0ZXh0SW5wdXRcIjpyZXR1cm4oZT10LmRhdGEpPT09dmUmJkVlP251bGw6ZTtkZWZhdWx0OnJldHVybiBudWxsfX0oZSxuKTpmdW5jdGlvbihlLHQpe2lmKGtlKXJldHVyblwiY29tcG9zaXRpb25lbmRcIj09PWV8fCFnZSYmeGUoZSx0KT8oZT1hZSgpLG9lPXJlPW5lPW51bGwsa2U9ITEsZSk6bnVsbDtzd2l0Y2goZSl7Y2FzZVwicGFzdGVcIjpyZXR1cm4gbnVsbDtjYXNlXCJrZXlwcmVzc1wiOmlmKCEodC5jdHJsS2V5fHx0LmFsdEtleXx8dC5tZXRhS2V5KXx8dC5jdHJsS2V5JiZ0LmFsdEtleSl7aWYodC5jaGFyJiYxPHQuY2hhci5sZW5ndGgpcmV0dXJuIHQuY2hhcjtpZih0LndoaWNoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQud2hpY2gpfXJldHVybiBudWxsO2Nhc2VcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIHllJiZcImtvXCIhPT10LmxvY2FsZT9udWxsOnQuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX0oZSxuKSk/KCh0PWZlLmdldFBvb2xlZChTZS5iZWZvcmVJbnB1dCx0LG4scikpLmRhdGE9ZSxHKHQpKTp0PW51bGwsbnVsbD09PWE/dDpudWxsPT09dD9hOlthLHRdfX0sVGU9bnVsbCxBZT1udWxsLENlPW51bGw7ZnVuY3Rpb24gT2UoZSl7aWYoZT14KGUpKXtcImZ1bmN0aW9uXCIhPXR5cGVvZiBUZSYmaShcIjI4MFwiKTt2YXIgdD1FKGUuc3RhdGVOb2RlKTtUZShlLnN0YXRlTm9kZSxlLnR5cGUsdCl9fWZ1bmN0aW9uIEllKGUpe0FlP0NlP0NlLnB1c2goZSk6Q2U9W2VdOkFlPWV9ZnVuY3Rpb24gTmUoKXtpZihBZSl7dmFyIGU9QWUsdD1DZTtpZihDZT1BZT1udWxsLE9lKGUpLHQpZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylPZSh0W2VdKX19ZnVuY3Rpb24gUmUoZSx0KXtyZXR1cm4gZSh0KX1mdW5jdGlvbiBQZShlLHQsbil7cmV0dXJuIGUodCxuKX1mdW5jdGlvbiBNZSgpe312YXIgTGU9ITE7ZnVuY3Rpb24gRGUoZSx0KXtpZihMZSlyZXR1cm4gZSh0KTtMZT0hMDt0cnl7cmV0dXJuIFJlKGUsdCl9ZmluYWxseXtMZT0hMSwobnVsbCE9PUFlfHxudWxsIT09Q2UpJiYoTWUoKSxOZSgpKX19dmFyIEZlPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLFwiZGF0ZXRpbWUtbG9jYWxcIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2Z1bmN0aW9uIEJlKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT10PyEhRmVbZS50eXBlXTpcInRleHRhcmVhXCI9PT10fWZ1bmN0aW9uIGplKGUpe3JldHVybihlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdykuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihlPWUuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT1lLm5vZGVUeXBlP2UucGFyZW50Tm9kZTplfWZ1bmN0aW9uIFVlKGUpe2lmKCFWKXJldHVybiExO3ZhciB0PShlPVwib25cIitlKWluIGRvY3VtZW50O3JldHVybiB0fHwoKHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuc2V0QXR0cmlidXRlKGUsXCJyZXR1cm47XCIpLHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdFtlXSksdH1mdW5jdGlvbiB6ZShlKXt2YXIgdD1lLnR5cGU7cmV0dXJuKGU9ZS5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWUudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PXR8fFwicmFkaW9cIj09PXQpfWZ1bmN0aW9uIEhlKGUpe2UuX3ZhbHVlVHJhY2tlcnx8KGUuX3ZhbHVlVHJhY2tlcj1mdW5jdGlvbihlKXt2YXIgdD16ZShlKT9cImNoZWNrZWRcIjpcInZhbHVlXCIsbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUuY29uc3RydWN0b3IucHJvdG90eXBlLHQpLHI9XCJcIitlW3RdO2lmKCFlLmhhc093blByb3BlcnR5KHQpJiZ2b2lkIDAhPT1uJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLmdldCYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi5zZXQpe3ZhciBvPW4uZ2V0LGE9bi5zZXQ7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oZSl7cj1cIlwiK2UsYS5jYWxsKHRoaXMsZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTpuLmVudW1lcmFibGV9KSx7Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sc2V0VmFsdWU6ZnVuY3Rpb24oZSl7cj1cIlwiK2V9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2UuX3ZhbHVlVHJhY2tlcj1udWxsLGRlbGV0ZSBlW3RdfX19fShlKSl9ZnVuY3Rpb24gV2UoZSl7aWYoIWUpcmV0dXJuITE7dmFyIHQ9ZS5fdmFsdWVUcmFja2VyO2lmKCF0KXJldHVybiEwO3ZhciBuPXQuZ2V0VmFsdWUoKSxyPVwiXCI7cmV0dXJuIGUmJihyPXplKGUpP2UuY2hlY2tlZD9cInRydWVcIjpcImZhbHNlXCI6ZS52YWx1ZSksKGU9cikhPT1uJiYodC5zZXRWYWx1ZShlKSwhMCl9dmFyIEdlPXIuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7R2UuaGFzT3duUHJvcGVydHkoXCJSZWFjdEN1cnJlbnREaXNwYXRjaGVyXCIpfHwoR2UuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcj17Y3VycmVudDpudWxsfSk7dmFyIFZlPS9eKC4qKVtcXFxcXFwvXS8sJGU9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLHFlPSRlP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLEtlPSRlP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsWWU9JGU/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LFhlPSRlP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxaZT0kZT9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsUWU9JGU/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LEplPSRlP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGV0PSRlP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsdHQ9JGU/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLG50PSRlP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxydD0kZT9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSxvdD0kZT9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNixhdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBpdChlKXtyZXR1cm4gbnVsbD09PWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlP251bGw6XCJmdW5jdGlvblwiPT10eXBlb2YoZT1hdCYmZVthdF18fGVbXCJAQGl0ZXJhdG9yXCJdKT9lOm51bGx9ZnVuY3Rpb24gbHQoZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKXJldHVybiBlLmRpc3BsYXlOYW1lfHxlLm5hbWV8fG51bGw7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIGU7c3dpdGNoKGUpe2Nhc2UgZXQ6cmV0dXJuXCJDb25jdXJyZW50TW9kZVwiO2Nhc2UgWWU6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2UgS2U6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIFplOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIFhlOnJldHVyblwiU3RyaWN0TW9kZVwiO2Nhc2UgbnQ6cmV0dXJuXCJTdXNwZW5zZVwifWlmKFwib2JqZWN0XCI9PXR5cGVvZiBlKXN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIEplOnJldHVyblwiQ29udGV4dC5Db25zdW1lclwiO2Nhc2UgUWU6cmV0dXJuXCJDb250ZXh0LlByb3ZpZGVyXCI7Y2FzZSB0dDp2YXIgdD1lLnJlbmRlcjtyZXR1cm4gdD10LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fFwiXCIsZS5kaXNwbGF5TmFtZXx8KFwiXCIhPT10P1wiRm9yd2FyZFJlZihcIit0K1wiKVwiOlwiRm9yd2FyZFJlZlwiKTtjYXNlIHJ0OnJldHVybiBsdChlLnR5cGUpO2Nhc2Ugb3Q6aWYoZT0xPT09ZS5fc3RhdHVzP2UuX3Jlc3VsdDpudWxsKXJldHVybiBsdChlKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBzdChlKXt2YXIgdD1cIlwiO2Rve2U6c3dpdGNoKGUudGFnKXtjYXNlIDM6Y2FzZSA0OmNhc2UgNjpjYXNlIDc6Y2FzZSAxMDpjYXNlIDk6dmFyIG49XCJcIjticmVhayBlO2RlZmF1bHQ6dmFyIHI9ZS5fZGVidWdPd25lcixvPWUuX2RlYnVnU291cmNlLGE9bHQoZS50eXBlKTtuPW51bGwsciYmKG49bHQoci50eXBlKSkscj1hLGE9XCJcIixvP2E9XCIgKGF0IFwiK28uZmlsZU5hbWUucmVwbGFjZShWZSxcIlwiKStcIjpcIitvLmxpbmVOdW1iZXIrXCIpXCI6biYmKGE9XCIgKGNyZWF0ZWQgYnkgXCIrbitcIilcIiksbj1cIlxcbiAgICBpbiBcIisocnx8XCJVbmtub3duXCIpK2F9dCs9bixlPWUucmV0dXJufXdoaWxlKGUpO3JldHVybiB0fXZhciB1dD0vXls6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRF1bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MF0qJC8sY3Q9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxkdD17fSxwdD17fTtmdW5jdGlvbiBmdChlLHQsbixyLG8pe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT10fHwzPT09dHx8ND09PXQsdGhpcy5hdHRyaWJ1dGVOYW1lPXIsdGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9byx0aGlzLm11c3RVc2VQcm9wZXJ0eT1uLHRoaXMucHJvcGVydHlOYW1lPWUsdGhpcy50eXBlPXR9dmFyIG10PXt9O1wiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oZSl7bXRbZV09bmV3IGZ0KGUsMCwhMSxlLG51bGwpfSksW1tcImFjY2VwdENoYXJzZXRcIixcImFjY2VwdC1jaGFyc2V0XCJdLFtcImNsYXNzTmFtZVwiLFwiY2xhc3NcIl0sW1wiaHRtbEZvclwiLFwiZm9yXCJdLFtcImh0dHBFcXVpdlwiLFwiaHR0cC1lcXVpdlwiXV0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lWzBdO210W3RdPW5ldyBmdCh0LDEsITEsZVsxXSxudWxsKX0pLFtcImNvbnRlbnRFZGl0YWJsZVwiLFwiZHJhZ2dhYmxlXCIsXCJzcGVsbENoZWNrXCIsXCJ2YWx1ZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe210W2VdPW5ldyBmdChlLDIsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwpfSksW1wiYXV0b1JldmVyc2VcIixcImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcIixcImZvY3VzYWJsZVwiLFwicHJlc2VydmVBbHBoYVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe210W2VdPW5ldyBmdChlLDIsITEsZSxudWxsKX0pLFwiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oZSl7bXRbZV09bmV3IGZ0KGUsMywhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCl9KSxbXCJjaGVja2VkXCIsXCJtdWx0aXBsZVwiLFwibXV0ZWRcIixcInNlbGVjdGVkXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7bXRbZV09bmV3IGZ0KGUsMywhMCxlLG51bGwpfSksW1wiY2FwdHVyZVwiLFwiZG93bmxvYWRcIl0uZm9yRWFjaChmdW5jdGlvbihlKXttdFtlXT1uZXcgZnQoZSw0LCExLGUsbnVsbCl9KSxbXCJjb2xzXCIsXCJyb3dzXCIsXCJzaXplXCIsXCJzcGFuXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7bXRbZV09bmV3IGZ0KGUsNiwhMSxlLG51bGwpfSksW1wicm93U3BhblwiLFwic3RhcnRcIl0uZm9yRWFjaChmdW5jdGlvbihlKXttdFtlXT1uZXcgZnQoZSw1LCExLGUudG9Mb3dlckNhc2UoKSxudWxsKX0pO3ZhciBndD0vW1xcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIGh0KGUpe3JldHVybiBlWzFdLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gYnQoZSx0LG4scil7dmFyIG89bXQuaGFzT3duUHJvcGVydHkodCk/bXRbdF06bnVsbDsobnVsbCE9PW8/MD09PW8udHlwZTohciYmKDI8dC5sZW5ndGgmJihcIm9cIj09PXRbMF18fFwiT1wiPT09dFswXSkmJihcIm5cIj09PXRbMV18fFwiTlwiPT09dFsxXSkpKXx8KGZ1bmN0aW9uKGUsdCxuLHIpe2lmKG51bGw9PXR8fGZ1bmN0aW9uKGUsdCxuLHIpe2lmKG51bGwhPT1uJiYwPT09bi50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZVwiZnVuY3Rpb25cIjpjYXNlXCJzeW1ib2xcIjpyZXR1cm4hMDtjYXNlXCJib29sZWFuXCI6cmV0dXJuIXImJihudWxsIT09bj8hbi5hY2NlcHRzQm9vbGVhbnM6XCJkYXRhLVwiIT09KGU9ZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSkpJiZcImFyaWEtXCIhPT1lKTtkZWZhdWx0OnJldHVybiExfX0oZSx0LG4scikpcmV0dXJuITA7aWYocilyZXR1cm4hMTtpZihudWxsIT09bilzd2l0Y2gobi50eXBlKXtjYXNlIDM6cmV0dXJuIXQ7Y2FzZSA0OnJldHVybiExPT09dDtjYXNlIDU6cmV0dXJuIGlzTmFOKHQpO2Nhc2UgNjpyZXR1cm4gaXNOYU4odCl8fDE+dH1yZXR1cm4hMX0odCxuLG8scikmJihuPW51bGwpLHJ8fG51bGw9PT1vP2Z1bmN0aW9uKGUpe3JldHVybiEhY3QuY2FsbChwdCxlKXx8IWN0LmNhbGwoZHQsZSkmJih1dC50ZXN0KGUpP3B0W2VdPSEwOihkdFtlXT0hMCwhMSkpfSh0KSYmKG51bGw9PT1uP2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQsXCJcIituKSk6by5tdXN0VXNlUHJvcGVydHk/ZVtvLnByb3BlcnR5TmFtZV09bnVsbD09PW4/MyE9PW8udHlwZSYmXCJcIjpuOih0PW8uYXR0cmlidXRlTmFtZSxyPW8uYXR0cmlidXRlTmFtZXNwYWNlLG51bGw9PT1uP2UucmVtb3ZlQXR0cmlidXRlKHQpOihuPTM9PT0obz1vLnR5cGUpfHw0PT09byYmITA9PT1uP1wiXCI6XCJcIituLHI/ZS5zZXRBdHRyaWJ1dGVOUyhyLHQsbik6ZS5zZXRBdHRyaWJ1dGUodCxuKSkpKX1mdW5jdGlvbiB5dChlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2VcImJvb2xlYW5cIjpjYXNlXCJudW1iZXJcIjpjYXNlXCJvYmplY3RcIjpjYXNlXCJzdHJpbmdcIjpjYXNlXCJ1bmRlZmluZWRcIjpyZXR1cm4gZTtkZWZhdWx0OnJldHVyblwiXCJ9fWZ1bmN0aW9uIHZ0KGUsdCl7dmFyIG49dC5jaGVja2VkO3JldHVybiBvKHt9LHQse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPW4/bjplLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1mdW5jdGlvbiBTdChlLHQpe3ZhciBuPW51bGw9PXQuZGVmYXVsdFZhbHVlP1wiXCI6dC5kZWZhdWx0VmFsdWUscj1udWxsIT10LmNoZWNrZWQ/dC5jaGVja2VkOnQuZGVmYXVsdENoZWNrZWQ7bj15dChudWxsIT10LnZhbHVlP3QudmFsdWU6biksZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpyLGluaXRpYWxWYWx1ZTpuLGNvbnRyb2xsZWQ6XCJjaGVja2JveFwiPT09dC50eXBlfHxcInJhZGlvXCI9PT10LnR5cGU/bnVsbCE9dC5jaGVja2VkOm51bGwhPXQudmFsdWV9fWZ1bmN0aW9uIEV0KGUsdCl7bnVsbCE9KHQ9dC5jaGVja2VkKSYmYnQoZSxcImNoZWNrZWRcIix0LCExKX1mdW5jdGlvbiB4dChlLHQpe0V0KGUsdCk7dmFyIG49eXQodC52YWx1ZSkscj10LnR5cGU7aWYobnVsbCE9bilcIm51bWJlclwiPT09cj8oMD09PW4mJlwiXCI9PT1lLnZhbHVlfHxlLnZhbHVlIT1uKSYmKGUudmFsdWU9XCJcIituKTplLnZhbHVlIT09XCJcIituJiYoZS52YWx1ZT1cIlwiK24pO2Vsc2UgaWYoXCJzdWJtaXRcIj09PXJ8fFwicmVzZXRcIj09PXIpcmV0dXJuIHZvaWQgZS5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTt0Lmhhc093blByb3BlcnR5KFwidmFsdWVcIik/a3QoZSx0LnR5cGUsbik6dC5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSYma3QoZSx0LnR5cGUseXQodC5kZWZhdWx0VmFsdWUpKSxudWxsPT10LmNoZWNrZWQmJm51bGwhPXQuZGVmYXVsdENoZWNrZWQmJihlLmRlZmF1bHRDaGVja2VkPSEhdC5kZWZhdWx0Q2hlY2tlZCl9ZnVuY3Rpb24gd3QoZSx0LG4pe2lmKHQuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKXx8dC5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSl7dmFyIHI9dC50eXBlO2lmKCEoXCJzdWJtaXRcIiE9PXImJlwicmVzZXRcIiE9PXJ8fHZvaWQgMCE9PXQudmFsdWUmJm51bGwhPT10LnZhbHVlKSlyZXR1cm47dD1cIlwiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsbnx8dD09PWUudmFsdWV8fChlLnZhbHVlPXQpLGUuZGVmYXVsdFZhbHVlPXR9XCJcIiE9PShuPWUubmFtZSkmJihlLm5hbWU9XCJcIiksZS5kZWZhdWx0Q2hlY2tlZD0hZS5kZWZhdWx0Q2hlY2tlZCxlLmRlZmF1bHRDaGVja2VkPSEhZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLFwiXCIhPT1uJiYoZS5uYW1lPW4pfWZ1bmN0aW9uIGt0KGUsdCxuKXtcIm51bWJlclwiPT09dCYmZS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1lfHwobnVsbD09bj9lLmRlZmF1bHRWYWx1ZT1cIlwiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU6ZS5kZWZhdWx0VmFsdWUhPT1cIlwiK24mJihlLmRlZmF1bHRWYWx1ZT1cIlwiK24pKX1cImFjY2VudC1oZWlnaHQgYWxpZ25tZW50LWJhc2VsaW5lIGFyYWJpYy1mb3JtIGJhc2VsaW5lLXNoaWZ0IGNhcC1oZWlnaHQgY2xpcC1wYXRoIGNsaXAtcnVsZSBjb2xvci1pbnRlcnBvbGF0aW9uIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyBjb2xvci1wcm9maWxlIGNvbG9yLXJlbmRlcmluZyBkb21pbmFudC1iYXNlbGluZSBlbmFibGUtYmFja2dyb3VuZCBmaWxsLW9wYWNpdHkgZmlsbC1ydWxlIGZsb29kLWNvbG9yIGZsb29kLW9wYWNpdHkgZm9udC1mYW1pbHkgZm9udC1zaXplIGZvbnQtc2l6ZS1hZGp1c3QgZm9udC1zdHJldGNoIGZvbnQtc3R5bGUgZm9udC12YXJpYW50IGZvbnQtd2VpZ2h0IGdseXBoLW5hbWUgZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCBnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCBob3Jpei1hZHYteCBob3Jpei1vcmlnaW4teCBpbWFnZS1yZW5kZXJpbmcgbGV0dGVyLXNwYWNpbmcgbGlnaHRpbmctY29sb3IgbWFya2VyLWVuZCBtYXJrZXItbWlkIG1hcmtlci1zdGFydCBvdmVybGluZS1wb3NpdGlvbiBvdmVybGluZS10aGlja25lc3MgcGFpbnQtb3JkZXIgcGFub3NlLTEgcG9pbnRlci1ldmVudHMgcmVuZGVyaW5nLWludGVudCBzaGFwZS1yZW5kZXJpbmcgc3RvcC1jb2xvciBzdG9wLW9wYWNpdHkgc3RyaWtldGhyb3VnaC1wb3NpdGlvbiBzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyBzdHJva2UtZGFzaGFycmF5IHN0cm9rZS1kYXNob2Zmc2V0IHN0cm9rZS1saW5lY2FwIHN0cm9rZS1saW5lam9pbiBzdHJva2UtbWl0ZXJsaW1pdCBzdHJva2Utb3BhY2l0eSBzdHJva2Utd2lkdGggdGV4dC1hbmNob3IgdGV4dC1kZWNvcmF0aW9uIHRleHQtcmVuZGVyaW5nIHVuZGVybGluZS1wb3NpdGlvbiB1bmRlcmxpbmUtdGhpY2tuZXNzIHVuaWNvZGUtYmlkaSB1bmljb2RlLXJhbmdlIHVuaXRzLXBlci1lbSB2LWFscGhhYmV0aWMgdi1oYW5naW5nIHYtaWRlb2dyYXBoaWMgdi1tYXRoZW1hdGljYWwgdmVjdG9yLWVmZmVjdCB2ZXJ0LWFkdi15IHZlcnQtb3JpZ2luLXggdmVydC1vcmlnaW4teSB3b3JkLXNwYWNpbmcgd3JpdGluZy1tb2RlIHhtbG5zOnhsaW5rIHgtaGVpZ2h0XCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKGd0LGh0KTttdFt0XT1uZXcgZnQodCwxLCExLGUsbnVsbCl9KSxcInhsaW5rOmFjdHVhdGUgeGxpbms6YXJjcm9sZSB4bGluazpocmVmIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKGd0LGh0KTttdFt0XT1uZXcgZnQodCwxLCExLGUsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIpfSksW1wieG1sOmJhc2VcIixcInhtbDpsYW5nXCIsXCJ4bWw6c3BhY2VcIl0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoZ3QsaHQpO210W3RdPW5ldyBmdCh0LDEsITEsZSxcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiKX0pLFtcInRhYkluZGV4XCIsXCJjcm9zc09yaWdpblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe210W2VdPW5ldyBmdChlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwpfSk7dmFyIF90PXtjaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25DaGFuZ2VcIixjYXB0dXJlZDpcIm9uQ2hhbmdlQ2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6XCJibHVyIGNoYW5nZSBjbGljayBmb2N1cyBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKX19O2Z1bmN0aW9uIFR0KGUsdCxuKXtyZXR1cm4oZT1zZS5nZXRQb29sZWQoX3QuY2hhbmdlLGUsdCxuKSkudHlwZT1cImNoYW5nZVwiLEllKG4pLEcoZSksZX12YXIgQXQ9bnVsbCxDdD1udWxsO2Z1bmN0aW9uIE90KGUpe04oZSl9ZnVuY3Rpb24gSXQoZSl7aWYoV2UoRihlKSkpcmV0dXJuIGV9ZnVuY3Rpb24gTnQoZSx0KXtpZihcImNoYW5nZVwiPT09ZSlyZXR1cm4gdH12YXIgUnQ9ITE7ZnVuY3Rpb24gUHQoKXtBdCYmKEF0LmRldGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLE10KSxDdD1BdD1udWxsKX1mdW5jdGlvbiBNdChlKXtcInZhbHVlXCI9PT1lLnByb3BlcnR5TmFtZSYmSXQoQ3QpJiZEZShPdCxlPVR0KEN0LGUsamUoZSkpKX1mdW5jdGlvbiBMdChlLHQsbil7XCJmb2N1c1wiPT09ZT8oUHQoKSxDdD1uLChBdD10KS5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixNdCkpOlwiYmx1clwiPT09ZSYmUHQoKX1mdW5jdGlvbiBEdChlKXtpZihcInNlbGVjdGlvbmNoYW5nZVwiPT09ZXx8XCJrZXl1cFwiPT09ZXx8XCJrZXlkb3duXCI9PT1lKXJldHVybiBJdChDdCl9ZnVuY3Rpb24gRnQoZSx0KXtpZihcImNsaWNrXCI9PT1lKXJldHVybiBJdCh0KX1mdW5jdGlvbiBCdChlLHQpe2lmKFwiaW5wdXRcIj09PWV8fFwiY2hhbmdlXCI9PT1lKXJldHVybiBJdCh0KX1WJiYoUnQ9VWUoXCJpbnB1dFwiKSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fDk8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSk7dmFyIGp0PXtldmVudFR5cGVzOl90LF9pc0lucHV0RXZlbnRTdXBwb3J0ZWQ6UnQsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10P0YodCk6d2luZG93LGE9dm9pZCAwLGk9dm9pZCAwLGw9by5ub2RlTmFtZSYmby5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKFwic2VsZWN0XCI9PT1sfHxcImlucHV0XCI9PT1sJiZcImZpbGVcIj09PW8udHlwZT9hPU50OkJlKG8pP1J0P2E9QnQ6KGE9RHQsaT1MdCk6KGw9by5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWwudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PW8udHlwZXx8XCJyYWRpb1wiPT09by50eXBlKSYmKGE9RnQpLGEmJihhPWEoZSx0KSkpcmV0dXJuIFR0KGEsbixyKTtpJiZpKGUsbyx0KSxcImJsdXJcIj09PWUmJihlPW8uX3dyYXBwZXJTdGF0ZSkmJmUuY29udHJvbGxlZCYmXCJudW1iZXJcIj09PW8udHlwZSYma3QobyxcIm51bWJlclwiLG8udmFsdWUpfX0sVXQ9c2UuZXh0ZW5kKHt2aWV3Om51bGwsZGV0YWlsOm51bGx9KSx6dD17QWx0OlwiYWx0S2V5XCIsQ29udHJvbDpcImN0cmxLZXlcIixNZXRhOlwibWV0YUtleVwiLFNoaWZ0Olwic2hpZnRLZXlcIn07ZnVuY3Rpb24gSHQoZSl7dmFyIHQ9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gdC5nZXRNb2RpZmllclN0YXRlP3QuZ2V0TW9kaWZpZXJTdGF0ZShlKTohIShlPXp0W2VdKSYmISF0W2VdfWZ1bmN0aW9uIFd0KCl7cmV0dXJuIEh0fXZhciBHdD0wLFZ0PTAsJHQ9ITEscXQ9ITEsS3Q9VXQuZXh0ZW5kKHtzY3JlZW5YOm51bGwsc2NyZWVuWTpudWxsLGNsaWVudFg6bnVsbCxjbGllbnRZOm51bGwscGFnZVg6bnVsbCxwYWdlWTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRlOld0LGJ1dHRvbjpudWxsLGJ1dHRvbnM6bnVsbCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbGF0ZWRUYXJnZXR8fChlLmZyb21FbGVtZW50PT09ZS5zcmNFbGVtZW50P2UudG9FbGVtZW50OmUuZnJvbUVsZW1lbnQpfSxtb3ZlbWVudFg6ZnVuY3Rpb24oZSl7aWYoXCJtb3ZlbWVudFhcImluIGUpcmV0dXJuIGUubW92ZW1lbnRYO3ZhciB0PUd0O3JldHVybiBHdD1lLnNjcmVlblgsJHQ/XCJtb3VzZW1vdmVcIj09PWUudHlwZT9lLnNjcmVlblgtdDowOigkdD0hMCwwKX0sbW92ZW1lbnRZOmZ1bmN0aW9uKGUpe2lmKFwibW92ZW1lbnRZXCJpbiBlKXJldHVybiBlLm1vdmVtZW50WTt2YXIgdD1WdDtyZXR1cm4gVnQ9ZS5zY3JlZW5ZLHF0P1wibW91c2Vtb3ZlXCI9PT1lLnR5cGU/ZS5zY3JlZW5ZLXQ6MDoocXQ9ITAsMCl9fSksWXQ9S3QuZXh0ZW5kKHtwb2ludGVySWQ6bnVsbCx3aWR0aDpudWxsLGhlaWdodDpudWxsLHByZXNzdXJlOm51bGwsdGFuZ2VudGlhbFByZXNzdXJlOm51bGwsdGlsdFg6bnVsbCx0aWx0WTpudWxsLHR3aXN0Om51bGwscG9pbnRlclR5cGU6bnVsbCxpc1ByaW1hcnk6bnVsbH0pLFh0PXttb3VzZUVudGVyOntyZWdpc3RyYXRpb25OYW1lOlwib25Nb3VzZUVudGVyXCIsZGVwZW5kZW5jaWVzOltcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl19LG1vdXNlTGVhdmU6e3JlZ2lzdHJhdGlvbk5hbWU6XCJvbk1vdXNlTGVhdmVcIixkZXBlbmRlbmNpZXM6W1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXX0scG9pbnRlckVudGVyOntyZWdpc3RyYXRpb25OYW1lOlwib25Qb2ludGVyRW50ZXJcIixkZXBlbmRlbmNpZXM6W1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl19LHBvaW50ZXJMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZTpcIm9uUG9pbnRlckxlYXZlXCIsZGVwZW5kZW5jaWVzOltcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdfX0sWnQ9e2V2ZW50VHlwZXM6WHQsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1cIm1vdXNlb3ZlclwiPT09ZXx8XCJwb2ludGVyb3ZlclwiPT09ZSxhPVwibW91c2VvdXRcIj09PWV8fFwicG9pbnRlcm91dFwiPT09ZTtpZihvJiYobi5yZWxhdGVkVGFyZ2V0fHxuLmZyb21FbGVtZW50KXx8IWEmJiFvKXJldHVybiBudWxsO2lmKG89ci53aW5kb3c9PT1yP3I6KG89ci5vd25lckRvY3VtZW50KT9vLmRlZmF1bHRWaWV3fHxvLnBhcmVudFdpbmRvdzp3aW5kb3csYT8oYT10LHQ9KHQ9bi5yZWxhdGVkVGFyZ2V0fHxuLnRvRWxlbWVudCk/TCh0KTpudWxsKTphPW51bGwsYT09PXQpcmV0dXJuIG51bGw7dmFyIGk9dm9pZCAwLGw9dm9pZCAwLHM9dm9pZCAwLHU9dm9pZCAwO1wibW91c2VvdXRcIj09PWV8fFwibW91c2VvdmVyXCI9PT1lPyhpPUt0LGw9WHQubW91c2VMZWF2ZSxzPVh0Lm1vdXNlRW50ZXIsdT1cIm1vdXNlXCIpOlwicG9pbnRlcm91dFwiIT09ZSYmXCJwb2ludGVyb3ZlclwiIT09ZXx8KGk9WXQsbD1YdC5wb2ludGVyTGVhdmUscz1YdC5wb2ludGVyRW50ZXIsdT1cInBvaW50ZXJcIik7dmFyIGM9bnVsbD09YT9vOkYoYSk7aWYobz1udWxsPT10P286Rih0KSwoZT1pLmdldFBvb2xlZChsLGEsbixyKSkudHlwZT11K1wibGVhdmVcIixlLnRhcmdldD1jLGUucmVsYXRlZFRhcmdldD1vLChuPWkuZ2V0UG9vbGVkKHMsdCxuLHIpKS50eXBlPXUrXCJlbnRlclwiLG4udGFyZ2V0PW8sbi5yZWxhdGVkVGFyZ2V0PWMscj10LGEmJnIpZTp7Zm9yKG89cix1PTAsaT10PWE7aTtpPWooaSkpdSsrO2ZvcihpPTAscz1vO3M7cz1qKHMpKWkrKztmb3IoOzA8dS1pOyl0PWoodCksdS0tO2Zvcig7MDxpLXU7KW89aihvKSxpLS07Zm9yKDt1LS07KXtpZih0PT09b3x8dD09PW8uYWx0ZXJuYXRlKWJyZWFrIGU7dD1qKHQpLG89aihvKX10PW51bGx9ZWxzZSB0PW51bGw7Zm9yKG89dCx0PVtdO2EmJmEhPT1vJiYobnVsbD09PSh1PWEuYWx0ZXJuYXRlKXx8dSE9PW8pOyl0LnB1c2goYSksYT1qKGEpO2ZvcihhPVtdO3ImJnIhPT1vJiYobnVsbD09PSh1PXIuYWx0ZXJuYXRlKXx8dSE9PW8pOylhLnB1c2gocikscj1qKHIpO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspSCh0W3JdLFwiYnViYmxlZFwiLGUpO2ZvcihyPWEubGVuZ3RoOzA8ci0tOylIKGFbcl0sXCJjYXB0dXJlZFwiLG4pO3JldHVybltlLG5dfX07ZnVuY3Rpb24gUXQoZSx0KXtyZXR1cm4gZT09PXQmJigwIT09ZXx8MS9lPT0xL3QpfHxlIT1lJiZ0IT10fXZhciBKdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGVuKGUsdCl7aWYoUXQoZSx0KSlyZXR1cm4hMDtpZihcIm9iamVjdFwiIT10eXBlb2YgZXx8bnVsbD09PWV8fFwib2JqZWN0XCIhPXR5cGVvZiB0fHxudWxsPT09dClyZXR1cm4hMTt2YXIgbj1PYmplY3Qua2V5cyhlKSxyPU9iamVjdC5rZXlzKHQpO2lmKG4ubGVuZ3RoIT09ci5sZW5ndGgpcmV0dXJuITE7Zm9yKHI9MDtyPG4ubGVuZ3RoO3IrKylpZighSnQuY2FsbCh0LG5bcl0pfHwhUXQoZVtuW3JdXSx0W25bcl1dKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiB0bihlKXt2YXIgdD1lO2lmKGUuYWx0ZXJuYXRlKWZvcig7dC5yZXR1cm47KXQ9dC5yZXR1cm47ZWxzZXtpZigwIT0oMiZ0LmVmZmVjdFRhZykpcmV0dXJuIDE7Zm9yKDt0LnJldHVybjspaWYoMCE9KDImKHQ9dC5yZXR1cm4pLmVmZmVjdFRhZykpcmV0dXJuIDF9cmV0dXJuIDM9PT10LnRhZz8yOjN9ZnVuY3Rpb24gbm4oZSl7MiE9PXRuKGUpJiZpKFwiMTg4XCIpfWZ1bmN0aW9uIHJuKGUpe2lmKCEoZT1mdW5jdGlvbihlKXt2YXIgdD1lLmFsdGVybmF0ZTtpZighdClyZXR1cm4gMz09PSh0PXRuKGUpKSYmaShcIjE4OFwiKSwxPT09dD9udWxsOmU7Zm9yKHZhciBuPWUscj10Ozspe3ZhciBvPW4ucmV0dXJuLGE9bz9vLmFsdGVybmF0ZTpudWxsO2lmKCFvfHwhYSlicmVhaztpZihvLmNoaWxkPT09YS5jaGlsZCl7Zm9yKHZhciBsPW8uY2hpbGQ7bDspe2lmKGw9PT1uKXJldHVybiBubihvKSxlO2lmKGw9PT1yKXJldHVybiBubihvKSx0O2w9bC5zaWJsaW5nfWkoXCIxODhcIil9aWYobi5yZXR1cm4hPT1yLnJldHVybiluPW8scj1hO2Vsc2V7bD0hMTtmb3IodmFyIHM9by5jaGlsZDtzOyl7aWYocz09PW4pe2w9ITAsbj1vLHI9YTticmVha31pZihzPT09cil7bD0hMCxyPW8sbj1hO2JyZWFrfXM9cy5zaWJsaW5nfWlmKCFsKXtmb3Iocz1hLmNoaWxkO3M7KXtpZihzPT09bil7bD0hMCxuPWEscj1vO2JyZWFrfWlmKHM9PT1yKXtsPSEwLHI9YSxuPW87YnJlYWt9cz1zLnNpYmxpbmd9bHx8aShcIjE4OVwiKX19bi5hbHRlcm5hdGUhPT1yJiZpKFwiMTkwXCIpfXJldHVybiAzIT09bi50YWcmJmkoXCIxODhcIiksbi5zdGF0ZU5vZGUuY3VycmVudD09PW4/ZTp0fShlKSkpcmV0dXJuIG51bGw7Zm9yKHZhciB0PWU7Oyl7aWYoNT09PXQudGFnfHw2PT09dC50YWcpcmV0dXJuIHQ7aWYodC5jaGlsZCl0LmNoaWxkLnJldHVybj10LHQ9dC5jaGlsZDtlbHNle2lmKHQ9PT1lKWJyZWFrO2Zvcig7IXQuc2libGluZzspe2lmKCF0LnJldHVybnx8dC5yZXR1cm49PT1lKXJldHVybiBudWxsO3Q9dC5yZXR1cm59dC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZ319cmV0dXJuIG51bGx9dmFyIG9uPXNlLmV4dGVuZCh7YW5pbWF0aW9uTmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfSksYW49c2UuZXh0ZW5kKHtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVyblwiY2xpcGJvYXJkRGF0YVwiaW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fSksbG49VXQuZXh0ZW5kKHtyZWxhdGVkVGFyZ2V0Om51bGx9KTtmdW5jdGlvbiBzbihlKXt2YXIgdD1lLmtleUNvZGU7cmV0dXJuXCJjaGFyQ29kZVwiaW4gZT8wPT09KGU9ZS5jaGFyQ29kZSkmJjEzPT09dCYmKGU9MTMpOmU9dCwxMD09PWUmJihlPTEzKSwzMjw9ZXx8MTM9PT1lP2U6MH12YXIgdW49e0VzYzpcIkVzY2FwZVwiLFNwYWNlYmFyOlwiIFwiLExlZnQ6XCJBcnJvd0xlZnRcIixVcDpcIkFycm93VXBcIixSaWdodDpcIkFycm93UmlnaHRcIixEb3duOlwiQXJyb3dEb3duXCIsRGVsOlwiRGVsZXRlXCIsV2luOlwiT1NcIixNZW51OlwiQ29udGV4dE1lbnVcIixBcHBzOlwiQ29udGV4dE1lbnVcIixTY3JvbGw6XCJTY3JvbGxMb2NrXCIsTW96UHJpbnRhYmxlS2V5OlwiVW5pZGVudGlmaWVkXCJ9LGNuPXs4OlwiQmFja3NwYWNlXCIsOTpcIlRhYlwiLDEyOlwiQ2xlYXJcIiwxMzpcIkVudGVyXCIsMTY6XCJTaGlmdFwiLDE3OlwiQ29udHJvbFwiLDE4OlwiQWx0XCIsMTk6XCJQYXVzZVwiLDIwOlwiQ2Fwc0xvY2tcIiwyNzpcIkVzY2FwZVwiLDMyOlwiIFwiLDMzOlwiUGFnZVVwXCIsMzQ6XCJQYWdlRG93blwiLDM1OlwiRW5kXCIsMzY6XCJIb21lXCIsMzc6XCJBcnJvd0xlZnRcIiwzODpcIkFycm93VXBcIiwzOTpcIkFycm93UmlnaHRcIiw0MDpcIkFycm93RG93blwiLDQ1OlwiSW5zZXJ0XCIsNDY6XCJEZWxldGVcIiwxMTI6XCJGMVwiLDExMzpcIkYyXCIsMTE0OlwiRjNcIiwxMTU6XCJGNFwiLDExNjpcIkY1XCIsMTE3OlwiRjZcIiwxMTg6XCJGN1wiLDExOTpcIkY4XCIsMTIwOlwiRjlcIiwxMjE6XCJGMTBcIiwxMjI6XCJGMTFcIiwxMjM6XCJGMTJcIiwxNDQ6XCJOdW1Mb2NrXCIsMTQ1OlwiU2Nyb2xsTG9ja1wiLDIyNDpcIk1ldGFcIn0sZG49VXQuZXh0ZW5kKHtrZXk6ZnVuY3Rpb24oZSl7aWYoZS5rZXkpe3ZhciB0PXVuW2Uua2V5XXx8ZS5rZXk7aWYoXCJVbmlkZW50aWZpZWRcIiE9PXQpcmV0dXJuIHR9cmV0dXJuXCJrZXlwcmVzc1wiPT09ZS50eXBlPzEzPT09KGU9c24oZSkpP1wiRW50ZXJcIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGUpOlwia2V5ZG93blwiPT09ZS50eXBlfHxcImtleXVwXCI9PT1lLnR5cGU/Y25bZS5rZXlDb2RlXXx8XCJVbmlkZW50aWZpZWRcIjpcIlwifSxsb2NhdGlvbjpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxyZXBlYXQ6bnVsbCxsb2NhbGU6bnVsbCxnZXRNb2RpZmllclN0YXRlOld0LGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVyblwia2V5cHJlc3NcIj09PWUudHlwZT9zbihlKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVyblwia2V5ZG93blwiPT09ZS50eXBlfHxcImtleXVwXCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGUpe3JldHVyblwia2V5cHJlc3NcIj09PWUudHlwZT9zbihlKTpcImtleWRvd25cIj09PWUudHlwZXx8XCJrZXl1cFwiPT09ZS50eXBlP2Uua2V5Q29kZTowfX0pLHBuPUt0LmV4dGVuZCh7ZGF0YVRyYW5zZmVyOm51bGx9KSxmbj1VdC5leHRlbmQoe3RvdWNoZXM6bnVsbCx0YXJnZXRUb3VjaGVzOm51bGwsY2hhbmdlZFRvdWNoZXM6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpXdH0pLG1uPXNlLmV4dGVuZCh7cHJvcGVydHlOYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9FbGVtZW50Om51bGx9KSxnbj1LdC5leHRlbmQoe2RlbHRhWDpmdW5jdGlvbihlKXtyZXR1cm5cImRlbHRhWFwiaW4gZT9lLmRlbHRhWDpcIndoZWVsRGVsdGFYXCJpbiBlPy1lLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihlKXtyZXR1cm5cImRlbHRhWVwiaW4gZT9lLmRlbHRhWTpcIndoZWVsRGVsdGFZXCJpbiBlPy1lLndoZWVsRGVsdGFZOlwid2hlZWxEZWx0YVwiaW4gZT8tZS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRlbHRhTW9kZTpudWxsfSksaG49W1tcImFib3J0XCIsXCJhYm9ydFwiXSxbWixcImFuaW1hdGlvbkVuZFwiXSxbUSxcImFuaW1hdGlvbkl0ZXJhdGlvblwiXSxbSixcImFuaW1hdGlvblN0YXJ0XCJdLFtcImNhbnBsYXlcIixcImNhblBsYXlcIl0sW1wiY2FucGxheXRocm91Z2hcIixcImNhblBsYXlUaHJvdWdoXCJdLFtcImRyYWdcIixcImRyYWdcIl0sW1wiZHJhZ2VudGVyXCIsXCJkcmFnRW50ZXJcIl0sW1wiZHJhZ2V4aXRcIixcImRyYWdFeGl0XCJdLFtcImRyYWdsZWF2ZVwiLFwiZHJhZ0xlYXZlXCJdLFtcImRyYWdvdmVyXCIsXCJkcmFnT3ZlclwiXSxbXCJkdXJhdGlvbmNoYW5nZVwiLFwiZHVyYXRpb25DaGFuZ2VcIl0sW1wiZW1wdGllZFwiLFwiZW1wdGllZFwiXSxbXCJlbmNyeXB0ZWRcIixcImVuY3J5cHRlZFwiXSxbXCJlbmRlZFwiLFwiZW5kZWRcIl0sW1wiZXJyb3JcIixcImVycm9yXCJdLFtcImdvdHBvaW50ZXJjYXB0dXJlXCIsXCJnb3RQb2ludGVyQ2FwdHVyZVwiXSxbXCJsb2FkXCIsXCJsb2FkXCJdLFtcImxvYWRlZGRhdGFcIixcImxvYWRlZERhdGFcIl0sW1wibG9hZGVkbWV0YWRhdGFcIixcImxvYWRlZE1ldGFkYXRhXCJdLFtcImxvYWRzdGFydFwiLFwibG9hZFN0YXJ0XCJdLFtcImxvc3Rwb2ludGVyY2FwdHVyZVwiLFwibG9zdFBvaW50ZXJDYXB0dXJlXCJdLFtcIm1vdXNlbW92ZVwiLFwibW91c2VNb3ZlXCJdLFtcIm1vdXNlb3V0XCIsXCJtb3VzZU91dFwiXSxbXCJtb3VzZW92ZXJcIixcIm1vdXNlT3ZlclwiXSxbXCJwbGF5aW5nXCIsXCJwbGF5aW5nXCJdLFtcInBvaW50ZXJtb3ZlXCIsXCJwb2ludGVyTW92ZVwiXSxbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyT3V0XCJdLFtcInBvaW50ZXJvdmVyXCIsXCJwb2ludGVyT3ZlclwiXSxbXCJwcm9ncmVzc1wiLFwicHJvZ3Jlc3NcIl0sW1wic2Nyb2xsXCIsXCJzY3JvbGxcIl0sW1wic2Vla2luZ1wiLFwic2Vla2luZ1wiXSxbXCJzdGFsbGVkXCIsXCJzdGFsbGVkXCJdLFtcInN1c3BlbmRcIixcInN1c3BlbmRcIl0sW1widGltZXVwZGF0ZVwiLFwidGltZVVwZGF0ZVwiXSxbXCJ0b2dnbGVcIixcInRvZ2dsZVwiXSxbXCJ0b3VjaG1vdmVcIixcInRvdWNoTW92ZVwiXSxbZWUsXCJ0cmFuc2l0aW9uRW5kXCJdLFtcIndhaXRpbmdcIixcIndhaXRpbmdcIl0sW1wid2hlZWxcIixcIndoZWVsXCJdXSxibj17fSx5bj17fTtmdW5jdGlvbiB2bihlLHQpe3ZhciBuPWVbMF0scj1cIm9uXCIrKChlPWVbMV0pWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSk7dD17cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6cixjYXB0dXJlZDpyK1wiQ2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6W25dLGlzSW50ZXJhY3RpdmU6dH0sYm5bZV09dCx5bltuXT10fVtbXCJibHVyXCIsXCJibHVyXCJdLFtcImNhbmNlbFwiLFwiY2FuY2VsXCJdLFtcImNsaWNrXCIsXCJjbGlja1wiXSxbXCJjbG9zZVwiLFwiY2xvc2VcIl0sW1wiY29udGV4dG1lbnVcIixcImNvbnRleHRNZW51XCJdLFtcImNvcHlcIixcImNvcHlcIl0sW1wiY3V0XCIsXCJjdXRcIl0sW1wiYXV4Y2xpY2tcIixcImF1eENsaWNrXCJdLFtcImRibGNsaWNrXCIsXCJkb3VibGVDbGlja1wiXSxbXCJkcmFnZW5kXCIsXCJkcmFnRW5kXCJdLFtcImRyYWdzdGFydFwiLFwiZHJhZ1N0YXJ0XCJdLFtcImRyb3BcIixcImRyb3BcIl0sW1wiZm9jdXNcIixcImZvY3VzXCJdLFtcImlucHV0XCIsXCJpbnB1dFwiXSxbXCJpbnZhbGlkXCIsXCJpbnZhbGlkXCJdLFtcImtleWRvd25cIixcImtleURvd25cIl0sW1wia2V5cHJlc3NcIixcImtleVByZXNzXCJdLFtcImtleXVwXCIsXCJrZXlVcFwiXSxbXCJtb3VzZWRvd25cIixcIm1vdXNlRG93blwiXSxbXCJtb3VzZXVwXCIsXCJtb3VzZVVwXCJdLFtcInBhc3RlXCIsXCJwYXN0ZVwiXSxbXCJwYXVzZVwiLFwicGF1c2VcIl0sW1wicGxheVwiLFwicGxheVwiXSxbXCJwb2ludGVyY2FuY2VsXCIsXCJwb2ludGVyQ2FuY2VsXCJdLFtcInBvaW50ZXJkb3duXCIsXCJwb2ludGVyRG93blwiXSxbXCJwb2ludGVydXBcIixcInBvaW50ZXJVcFwiXSxbXCJyYXRlY2hhbmdlXCIsXCJyYXRlQ2hhbmdlXCJdLFtcInJlc2V0XCIsXCJyZXNldFwiXSxbXCJzZWVrZWRcIixcInNlZWtlZFwiXSxbXCJzdWJtaXRcIixcInN1Ym1pdFwiXSxbXCJ0b3VjaGNhbmNlbFwiLFwidG91Y2hDYW5jZWxcIl0sW1widG91Y2hlbmRcIixcInRvdWNoRW5kXCJdLFtcInRvdWNoc3RhcnRcIixcInRvdWNoU3RhcnRcIl0sW1widm9sdW1lY2hhbmdlXCIsXCJ2b2x1bWVDaGFuZ2VcIl1dLmZvckVhY2goZnVuY3Rpb24oZSl7dm4oZSwhMCl9KSxobi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZuKGUsITEpfSk7dmFyIFNuPXtldmVudFR5cGVzOmJuLGlzSW50ZXJhY3RpdmVUb3BMZXZlbEV2ZW50VHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09KGU9eW5bZV0pJiYhMD09PWUuaXNJbnRlcmFjdGl2ZX0sZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz15bltlXTtpZighbylyZXR1cm4gbnVsbDtzd2l0Y2goZSl7Y2FzZVwia2V5cHJlc3NcIjppZigwPT09c24obikpcmV0dXJuIG51bGw7Y2FzZVwia2V5ZG93blwiOmNhc2VcImtleXVwXCI6ZT1kbjticmVhaztjYXNlXCJibHVyXCI6Y2FzZVwiZm9jdXNcIjplPWxuO2JyZWFrO2Nhc2VcImNsaWNrXCI6aWYoMj09PW4uYnV0dG9uKXJldHVybiBudWxsO2Nhc2VcImF1eGNsaWNrXCI6Y2FzZVwiZGJsY2xpY2tcIjpjYXNlXCJtb3VzZWRvd25cIjpjYXNlXCJtb3VzZW1vdmVcIjpjYXNlXCJtb3VzZXVwXCI6Y2FzZVwibW91c2VvdXRcIjpjYXNlXCJtb3VzZW92ZXJcIjpjYXNlXCJjb250ZXh0bWVudVwiOmU9S3Q7YnJlYWs7Y2FzZVwiZHJhZ1wiOmNhc2VcImRyYWdlbmRcIjpjYXNlXCJkcmFnZW50ZXJcIjpjYXNlXCJkcmFnZXhpdFwiOmNhc2VcImRyYWdsZWF2ZVwiOmNhc2VcImRyYWdvdmVyXCI6Y2FzZVwiZHJhZ3N0YXJ0XCI6Y2FzZVwiZHJvcFwiOmU9cG47YnJlYWs7Y2FzZVwidG91Y2hjYW5jZWxcIjpjYXNlXCJ0b3VjaGVuZFwiOmNhc2VcInRvdWNobW92ZVwiOmNhc2VcInRvdWNoc3RhcnRcIjplPWZuO2JyZWFrO2Nhc2UgWjpjYXNlIFE6Y2FzZSBKOmU9b247YnJlYWs7Y2FzZSBlZTplPW1uO2JyZWFrO2Nhc2VcInNjcm9sbFwiOmU9VXQ7YnJlYWs7Y2FzZVwid2hlZWxcIjplPWduO2JyZWFrO2Nhc2VcImNvcHlcIjpjYXNlXCJjdXRcIjpjYXNlXCJwYXN0ZVwiOmU9YW47YnJlYWs7Y2FzZVwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpjYXNlXCJwb2ludGVyY2FuY2VsXCI6Y2FzZVwicG9pbnRlcmRvd25cIjpjYXNlXCJwb2ludGVybW92ZVwiOmNhc2VcInBvaW50ZXJvdXRcIjpjYXNlXCJwb2ludGVyb3ZlclwiOmNhc2VcInBvaW50ZXJ1cFwiOmU9WXQ7YnJlYWs7ZGVmYXVsdDplPXNlfXJldHVybiBHKHQ9ZS5nZXRQb29sZWQobyx0LG4scikpLHR9fSxFbj1Tbi5pc0ludGVyYWN0aXZlVG9wTGV2ZWxFdmVudFR5cGUseG49W107ZnVuY3Rpb24gd24oZSl7dmFyIHQ9ZS50YXJnZXRJbnN0LG49dDtkb3tpZighbil7ZS5hbmNlc3RvcnMucHVzaChuKTticmVha312YXIgcjtmb3Iocj1uO3IucmV0dXJuOylyPXIucmV0dXJuO2lmKCEocj0zIT09ci50YWc/bnVsbDpyLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSlicmVhaztlLmFuY2VzdG9ycy5wdXNoKG4pLG49TChyKX13aGlsZShuKTtmb3Iobj0wO248ZS5hbmNlc3RvcnMubGVuZ3RoO24rKyl7dD1lLmFuY2VzdG9yc1tuXTt2YXIgbz1qZShlLm5hdGl2ZUV2ZW50KTtyPWUudG9wTGV2ZWxUeXBlO2Zvcih2YXIgYT1lLm5hdGl2ZUV2ZW50LGk9bnVsbCxsPTA7bDxiLmxlbmd0aDtsKyspe3ZhciBzPWJbbF07cyYmKHM9cy5leHRyYWN0RXZlbnRzKHIsdCxhLG8pKSYmKGk9XyhpLHMpKX1OKGkpfX12YXIga249ITA7ZnVuY3Rpb24gX24oZSx0KXtpZighdClyZXR1cm4gbnVsbDt2YXIgbj0oRW4oZSk/QW46Q24pLmJpbmQobnVsbCxlKTt0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCExKX1mdW5jdGlvbiBUbihlLHQpe2lmKCF0KXJldHVybiBudWxsO3ZhciBuPShFbihlKT9BbjpDbikuYmluZChudWxsLGUpO3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4sITApfWZ1bmN0aW9uIEFuKGUsdCl7UGUoQ24sZSx0KX1mdW5jdGlvbiBDbihlLHQpe2lmKGtuKXt2YXIgbj1qZSh0KTtpZihudWxsPT09KG49TChuKSl8fFwibnVtYmVyXCIhPXR5cGVvZiBuLnRhZ3x8Mj09PXRuKG4pfHwobj1udWxsKSx4bi5sZW5ndGgpe3ZhciByPXhuLnBvcCgpO3IudG9wTGV2ZWxUeXBlPWUsci5uYXRpdmVFdmVudD10LHIudGFyZ2V0SW5zdD1uLGU9cn1lbHNlIGU9e3RvcExldmVsVHlwZTplLG5hdGl2ZUV2ZW50OnQsdGFyZ2V0SW5zdDpuLGFuY2VzdG9yczpbXX07dHJ5e0RlKHduLGUpfWZpbmFsbHl7ZS50b3BMZXZlbFR5cGU9bnVsbCxlLm5hdGl2ZUV2ZW50PW51bGwsZS50YXJnZXRJbnN0PW51bGwsZS5hbmNlc3RvcnMubGVuZ3RoPTAsMTA+eG4ubGVuZ3RoJiZ4bi5wdXNoKGUpfX19dmFyIE9uPXt9LEluPTAsTm49XCJfcmVhY3RMaXN0ZW5lcnNJRFwiKyhcIlwiK01hdGgucmFuZG9tKCkpLnNsaWNlKDIpO2Z1bmN0aW9uIFJuKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxObil8fChlW05uXT1JbisrLE9uW2VbTm5dXT17fSksT25bZVtObl1dfWZ1bmN0aW9uIFBuKGUpe2lmKHZvaWQgMD09PShlPWV8fChcInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKSkpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBlLmFjdGl2ZUVsZW1lbnR8fGUuYm9keX1jYXRjaCh0KXtyZXR1cm4gZS5ib2R5fX1mdW5jdGlvbiBNbihlKXtmb3IoO2UmJmUuZmlyc3RDaGlsZDspZT1lLmZpcnN0Q2hpbGQ7cmV0dXJuIGV9ZnVuY3Rpb24gTG4oZSx0KXt2YXIgbixyPU1uKGUpO2ZvcihlPTA7cjspe2lmKDM9PT1yLm5vZGVUeXBlKXtpZihuPWUrci50ZXh0Q29udGVudC5sZW5ndGgsZTw9dCYmbj49dClyZXR1cm57bm9kZTpyLG9mZnNldDp0LWV9O2U9bn1lOntmb3IoO3I7KXtpZihyLm5leHRTaWJsaW5nKXtyPXIubmV4dFNpYmxpbmc7YnJlYWsgZX1yPXIucGFyZW50Tm9kZX1yPXZvaWQgMH1yPU1uKHIpfX1mdW5jdGlvbiBEbigpe2Zvcih2YXIgZT13aW5kb3csdD1QbigpO3QgaW5zdGFuY2VvZiBlLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e2U9dC5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXd9Y2F0Y2goZSl7YnJlYWt9dD1QbihlLmRvY3VtZW50KX1yZXR1cm4gdH1mdW5jdGlvbiBGbihlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQmJihcImlucHV0XCI9PT10JiYoXCJ0ZXh0XCI9PT1lLnR5cGV8fFwic2VhcmNoXCI9PT1lLnR5cGV8fFwidGVsXCI9PT1lLnR5cGV8fFwidXJsXCI9PT1lLnR5cGV8fFwicGFzc3dvcmRcIj09PWUudHlwZSl8fFwidGV4dGFyZWFcIj09PXR8fFwidHJ1ZVwiPT09ZS5jb250ZW50RWRpdGFibGUpfWZ1bmN0aW9uIEJuKGUpe3ZhciB0PURuKCksbj1lLmZvY3VzZWRFbGVtLHI9ZS5zZWxlY3Rpb25SYW5nZTtpZih0IT09biYmbiYmbi5vd25lckRvY3VtZW50JiZmdW5jdGlvbiBlKHQsbil7cmV0dXJuISghdHx8IW4pJiYodD09PW58fCghdHx8MyE9PXQubm9kZVR5cGUpJiYobiYmMz09PW4ubm9kZVR5cGU/ZSh0LG4ucGFyZW50Tm9kZSk6XCJjb250YWluc1wiaW4gdD90LmNvbnRhaW5zKG4pOiEhdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuKSkpKX0obi5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxuKSl7aWYobnVsbCE9PXImJkZuKG4pKWlmKHQ9ci5zdGFydCx2b2lkIDA9PT0oZT1yLmVuZCkmJihlPXQpLFwic2VsZWN0aW9uU3RhcnRcImluIG4pbi5zZWxlY3Rpb25TdGFydD10LG4uc2VsZWN0aW9uRW5kPU1hdGgubWluKGUsbi52YWx1ZS5sZW5ndGgpO2Vsc2UgaWYoKGU9KHQ9bi5vd25lckRvY3VtZW50fHxkb2N1bWVudCkmJnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uKXtlPWUuZ2V0U2VsZWN0aW9uKCk7dmFyIG89bi50ZXh0Q29udGVudC5sZW5ndGgsYT1NYXRoLm1pbihyLnN0YXJ0LG8pO3I9dm9pZCAwPT09ci5lbmQ/YTpNYXRoLm1pbihyLmVuZCxvKSwhZS5leHRlbmQmJmE+ciYmKG89cixyPWEsYT1vKSxvPUxuKG4sYSk7dmFyIGk9TG4obixyKTtvJiZpJiYoMSE9PWUucmFuZ2VDb3VudHx8ZS5hbmNob3JOb2RlIT09by5ub2RlfHxlLmFuY2hvck9mZnNldCE9PW8ub2Zmc2V0fHxlLmZvY3VzTm9kZSE9PWkubm9kZXx8ZS5mb2N1c09mZnNldCE9PWkub2Zmc2V0KSYmKCh0PXQuY3JlYXRlUmFuZ2UoKSkuc2V0U3RhcnQoby5ub2RlLG8ub2Zmc2V0KSxlLnJlbW92ZUFsbFJhbmdlcygpLGE+cj8oZS5hZGRSYW5nZSh0KSxlLmV4dGVuZChpLm5vZGUsaS5vZmZzZXQpKToodC5zZXRFbmQoaS5ub2RlLGkub2Zmc2V0KSxlLmFkZFJhbmdlKHQpKSl9Zm9yKHQ9W10sZT1uO2U9ZS5wYXJlbnROb2RlOykxPT09ZS5ub2RlVHlwZSYmdC5wdXNoKHtlbGVtZW50OmUsbGVmdDplLnNjcm9sbExlZnQsdG9wOmUuc2Nyb2xsVG9wfSk7Zm9yKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4uZm9jdXMmJm4uZm9jdXMoKSxuPTA7bjx0Lmxlbmd0aDtuKyspKGU9dFtuXSkuZWxlbWVudC5zY3JvbGxMZWZ0PWUubGVmdCxlLmVsZW1lbnQuc2Nyb2xsVG9wPWUudG9wfX12YXIgam49ViYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLFVuPXtzZWxlY3Q6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25TZWxlY3RcIixjYXB0dXJlZDpcIm9uU2VsZWN0Q2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6XCJibHVyIGNvbnRleHRtZW51IGRyYWdlbmQgZm9jdXMga2V5ZG93biBrZXl1cCBtb3VzZWRvd24gbW91c2V1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIil9fSx6bj1udWxsLEhuPW51bGwsV249bnVsbCxHbj0hMTtmdW5jdGlvbiBWbihlLHQpe3ZhciBuPXQud2luZG93PT09dD90LmRvY3VtZW50Ojk9PT10Lm5vZGVUeXBlP3Q6dC5vd25lckRvY3VtZW50O3JldHVybiBHbnx8bnVsbD09em58fHpuIT09UG4obik/bnVsbDooXCJzZWxlY3Rpb25TdGFydFwiaW4obj16bikmJkZuKG4pP249e3N0YXJ0Om4uc2VsZWN0aW9uU3RhcnQsZW5kOm4uc2VsZWN0aW9uRW5kfTpuPXthbmNob3JOb2RlOihuPShuLm93bmVyRG9jdW1lbnQmJm4ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24oKSkuYW5jaG9yTm9kZSxhbmNob3JPZmZzZXQ6bi5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOm4uZm9jdXNOb2RlLGZvY3VzT2Zmc2V0Om4uZm9jdXNPZmZzZXR9LFduJiZlbihXbixuKT9udWxsOihXbj1uLChlPXNlLmdldFBvb2xlZChVbi5zZWxlY3QsSG4sZSx0KSkudHlwZT1cInNlbGVjdFwiLGUudGFyZ2V0PXpuLEcoZSksZSkpfXZhciAkbj17ZXZlbnRUeXBlczpVbixleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGE9ci53aW5kb3c9PT1yP3IuZG9jdW1lbnQ6OT09PXIubm9kZVR5cGU/cjpyLm93bmVyRG9jdW1lbnQ7aWYoIShvPSFhKSl7ZTp7YT1SbihhKSxvPVMub25TZWxlY3Q7Zm9yKHZhciBpPTA7aTxvLmxlbmd0aDtpKyspe3ZhciBsPW9baV07aWYoIWEuaGFzT3duUHJvcGVydHkobCl8fCFhW2xdKXthPSExO2JyZWFrIGV9fWE9ITB9bz0hYX1pZihvKXJldHVybiBudWxsO3N3aXRjaChhPXQ/Rih0KTp3aW5kb3csZSl7Y2FzZVwiZm9jdXNcIjooQmUoYSl8fFwidHJ1ZVwiPT09YS5jb250ZW50RWRpdGFibGUpJiYoem49YSxIbj10LFduPW51bGwpO2JyZWFrO2Nhc2VcImJsdXJcIjpXbj1Ibj16bj1udWxsO2JyZWFrO2Nhc2VcIm1vdXNlZG93blwiOkduPSEwO2JyZWFrO2Nhc2VcImNvbnRleHRtZW51XCI6Y2FzZVwibW91c2V1cFwiOmNhc2VcImRyYWdlbmRcIjpyZXR1cm4gR249ITEsVm4obixyKTtjYXNlXCJzZWxlY3Rpb25jaGFuZ2VcIjppZihqbilicmVhaztjYXNlXCJrZXlkb3duXCI6Y2FzZVwia2V5dXBcIjpyZXR1cm4gVm4obixyKX1yZXR1cm4gbnVsbH19O2Z1bmN0aW9uIHFuKGUsdCl7cmV0dXJuIGU9byh7Y2hpbGRyZW46dm9pZCAwfSx0KSwodD1mdW5jdGlvbihlKXt2YXIgdD1cIlwiO3JldHVybiByLkNoaWxkcmVuLmZvckVhY2goZSxmdW5jdGlvbihlKXtudWxsIT1lJiYodCs9ZSl9KSx0fSh0LmNoaWxkcmVuKSkmJihlLmNoaWxkcmVuPXQpLGV9ZnVuY3Rpb24gS24oZSx0LG4scil7aWYoZT1lLm9wdGlvbnMsdCl7dD17fTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl0W1wiJFwiK25bb11dPSEwO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspbz10Lmhhc093blByb3BlcnR5KFwiJFwiK2Vbbl0udmFsdWUpLGVbbl0uc2VsZWN0ZWQhPT1vJiYoZVtuXS5zZWxlY3RlZD1vKSxvJiZyJiYoZVtuXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Zm9yKG49XCJcIit5dChuKSx0PW51bGwsbz0wO288ZS5sZW5ndGg7bysrKXtpZihlW29dLnZhbHVlPT09bilyZXR1cm4gZVtvXS5zZWxlY3RlZD0hMCx2b2lkKHImJihlW29dLmRlZmF1bHRTZWxlY3RlZD0hMCkpO251bGwhPT10fHxlW29dLmRpc2FibGVkfHwodD1lW29dKX1udWxsIT09dCYmKHQuc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBZbihlLHQpe3JldHVybiBudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZpKFwiOTFcIiksbyh7fSx0LHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjpcIlwiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiBYbihlLHQpe3ZhciBuPXQudmFsdWU7bnVsbD09biYmKG49dC5kZWZhdWx0VmFsdWUsbnVsbCE9KHQ9dC5jaGlsZHJlbikmJihudWxsIT1uJiZpKFwiOTJcIiksQXJyYXkuaXNBcnJheSh0KSYmKDE+PXQubGVuZ3RofHxpKFwiOTNcIiksdD10WzBdKSxuPXQpLG51bGw9PW4mJihuPVwiXCIpKSxlLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZTp5dChuKX19ZnVuY3Rpb24gWm4oZSx0KXt2YXIgbj15dCh0LnZhbHVlKSxyPXl0KHQuZGVmYXVsdFZhbHVlKTtudWxsIT1uJiYoKG49XCJcIituKSE9PWUudmFsdWUmJihlLnZhbHVlPW4pLG51bGw9PXQuZGVmYXVsdFZhbHVlJiZlLmRlZmF1bHRWYWx1ZSE9PW4mJihlLmRlZmF1bHRWYWx1ZT1uKSksbnVsbCE9ciYmKGUuZGVmYXVsdFZhbHVlPVwiXCIrcil9ZnVuY3Rpb24gUW4oZSl7dmFyIHQ9ZS50ZXh0Q29udGVudDt0PT09ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSYmKGUudmFsdWU9dCl9Ty5pbmplY3RFdmVudFBsdWdpbk9yZGVyKFwiUmVzcG9uZGVyRXZlbnRQbHVnaW4gU2ltcGxlRXZlbnRQbHVnaW4gRW50ZXJMZWF2ZUV2ZW50UGx1Z2luIENoYW5nZUV2ZW50UGx1Z2luIFNlbGVjdEV2ZW50UGx1Z2luIEJlZm9yZUlucHV0RXZlbnRQbHVnaW5cIi5zcGxpdChcIiBcIikpLEU9Qix4PUQsdz1GLE8uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtTaW1wbGVFdmVudFBsdWdpbjpTbixFbnRlckxlYXZlRXZlbnRQbHVnaW46WnQsQ2hhbmdlRXZlbnRQbHVnaW46anQsU2VsZWN0RXZlbnRQbHVnaW46JG4sQmVmb3JlSW5wdXRFdmVudFBsdWdpbjpfZX0pO3ZhciBKbj17aHRtbDpcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIixtYXRobWw6XCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsc3ZnOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn07ZnVuY3Rpb24gZXIoZSl7c3dpdGNoKGUpe2Nhc2VcInN2Z1wiOnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtjYXNlXCJtYXRoXCI6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCI7ZGVmYXVsdDpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIn19ZnVuY3Rpb24gdHIoZSx0KXtyZXR1cm4gbnVsbD09ZXx8XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1lP2VyKHQpOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj09PWUmJlwiZm9yZWlnbk9iamVjdFwiPT09dD9cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIjplfXZhciBucixycj12b2lkIDAsb3I9KG5yPWZ1bmN0aW9uKGUsdCl7aWYoZS5uYW1lc3BhY2VVUkkhPT1Kbi5zdmd8fFwiaW5uZXJIVE1MXCJpbiBlKWUuaW5uZXJIVE1MPXQ7ZWxzZXtmb3IoKHJyPXJyfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5pbm5lckhUTUw9XCI8c3ZnPlwiK3QrXCI8L3N2Zz5cIix0PXJyLmZpcnN0Q2hpbGQ7ZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7Zm9yKDt0LmZpcnN0Q2hpbGQ7KWUuYXBwZW5kQ2hpbGQodC5maXJzdENoaWxkKX19LFwidW5kZWZpbmVkXCIhPXR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24oZSx0LG4scil7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gbnIoZSx0KX0pfTpucik7ZnVuY3Rpb24gYXIoZSx0KXtpZih0KXt2YXIgbj1lLmZpcnN0Q2hpbGQ7aWYobiYmbj09PWUubGFzdENoaWxkJiYzPT09bi5ub2RlVHlwZSlyZXR1cm4gdm9pZChuLm5vZGVWYWx1ZT10KX1lLnRleHRDb250ZW50PXR9dmFyIGlyPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGNvbHVtbnM6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRBcmVhOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxscj1bXCJXZWJraXRcIixcIm1zXCIsXCJNb3pcIixcIk9cIl07ZnVuY3Rpb24gc3IoZSx0LG4pe3JldHVybiBudWxsPT10fHxcImJvb2xlYW5cIj09dHlwZW9mIHR8fFwiXCI9PT10P1wiXCI6bnx8XCJudW1iZXJcIiE9dHlwZW9mIHR8fDA9PT10fHxpci5oYXNPd25Qcm9wZXJ0eShlKSYmaXJbZV0/KFwiXCIrdCkudHJpbSgpOnQrXCJweFwifWZ1bmN0aW9uIHVyKGUsdCl7Zm9yKHZhciBuIGluIGU9ZS5zdHlsZSx0KWlmKHQuaGFzT3duUHJvcGVydHkobikpe3ZhciByPTA9PT1uLmluZGV4T2YoXCItLVwiKSxvPXNyKG4sdFtuXSxyKTtcImZsb2F0XCI9PT1uJiYobj1cImNzc0Zsb2F0XCIpLHI/ZS5zZXRQcm9wZXJ0eShuLG8pOmVbbl09b319T2JqZWN0LmtleXMoaXIpLmZvckVhY2goZnVuY3Rpb24oZSl7bHIuZm9yRWFjaChmdW5jdGlvbih0KXt0PXQrZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnN1YnN0cmluZygxKSxpclt0XT1pcltlXX0pfSk7dmFyIGNyPW8oe21lbnVpdGVtOiEwfSx7YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSk7ZnVuY3Rpb24gZHIoZSx0KXt0JiYoY3JbZV0mJihudWxsIT10LmNoaWxkcmVufHxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSYmaShcIjEzN1wiLGUsXCJcIiksbnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmKG51bGwhPXQuY2hpbGRyZW4mJmkoXCI2MFwiKSxcIm9iamVjdFwiPT10eXBlb2YgdC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmXCJfX2h0bWxcImluIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUx8fGkoXCI2MVwiKSksbnVsbCE9dC5zdHlsZSYmXCJvYmplY3RcIiE9dHlwZW9mIHQuc3R5bGUmJmkoXCI2MlwiLFwiXCIpKX1mdW5jdGlvbiBwcihlLHQpe2lmKC0xPT09ZS5pbmRleE9mKFwiLVwiKSlyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdC5pcztzd2l0Y2goZSl7Y2FzZVwiYW5ub3RhdGlvbi14bWxcIjpjYXNlXCJjb2xvci1wcm9maWxlXCI6Y2FzZVwiZm9udC1mYWNlXCI6Y2FzZVwiZm9udC1mYWNlLXNyY1wiOmNhc2VcImZvbnQtZmFjZS11cmlcIjpjYXNlXCJmb250LWZhY2UtZm9ybWF0XCI6Y2FzZVwiZm9udC1mYWNlLW5hbWVcIjpjYXNlXCJtaXNzaW5nLWdseXBoXCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19ZnVuY3Rpb24gZnIoZSx0KXt2YXIgbj1SbihlPTk9PT1lLm5vZGVUeXBlfHwxMT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnQpO3Q9U1t0XTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG89dFtyXTtpZighbi5oYXNPd25Qcm9wZXJ0eShvKXx8IW5bb10pe3N3aXRjaChvKXtjYXNlXCJzY3JvbGxcIjpUbihcInNjcm9sbFwiLGUpO2JyZWFrO2Nhc2VcImZvY3VzXCI6Y2FzZVwiYmx1clwiOlRuKFwiZm9jdXNcIixlKSxUbihcImJsdXJcIixlKSxuLmJsdXI9ITAsbi5mb2N1cz0hMDticmVhaztjYXNlXCJjYW5jZWxcIjpjYXNlXCJjbG9zZVwiOlVlKG8pJiZUbihvLGUpO2JyZWFrO2Nhc2VcImludmFsaWRcIjpjYXNlXCJzdWJtaXRcIjpjYXNlXCJyZXNldFwiOmJyZWFrO2RlZmF1bHQ6LTE9PT10ZS5pbmRleE9mKG8pJiZfbihvLGUpfW5bb109ITB9fX1mdW5jdGlvbiBtcigpe312YXIgZ3I9bnVsbCxocj1udWxsO2Z1bmN0aW9uIGJyKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImJ1dHRvblwiOmNhc2VcImlucHV0XCI6Y2FzZVwic2VsZWN0XCI6Y2FzZVwidGV4dGFyZWFcIjpyZXR1cm4hIXQuYXV0b0ZvY3VzfXJldHVybiExfWZ1bmN0aW9uIHlyKGUsdCl7cmV0dXJuXCJ0ZXh0YXJlYVwiPT09ZXx8XCJvcHRpb25cIj09PWV8fFwibm9zY3JpcHRcIj09PWV8fFwic3RyaW5nXCI9PXR5cGVvZiB0LmNoaWxkcmVufHxcIm51bWJlclwiPT10eXBlb2YgdC5jaGlsZHJlbnx8XCJvYmplY3RcIj09dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbH12YXIgdnI9XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OnZvaWQgMCxTcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMCxFcj1hLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2sseHI9YS51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaztmdW5jdGlvbiB3cihlKXtmb3IoZT1lLm5leHRTaWJsaW5nO2UmJjEhPT1lLm5vZGVUeXBlJiYzIT09ZS5ub2RlVHlwZTspZT1lLm5leHRTaWJsaW5nO3JldHVybiBlfWZ1bmN0aW9uIGtyKGUpe2ZvcihlPWUuZmlyc3RDaGlsZDtlJiYxIT09ZS5ub2RlVHlwZSYmMyE9PWUubm9kZVR5cGU7KWU9ZS5uZXh0U2libGluZztyZXR1cm4gZX1uZXcgU2V0O3ZhciBfcj1bXSxUcj0tMTtmdW5jdGlvbiBBcihlKXswPlRyfHwoZS5jdXJyZW50PV9yW1RyXSxfcltUcl09bnVsbCxUci0tKX1mdW5jdGlvbiBDcihlLHQpe19yWysrVHJdPWUuY3VycmVudCxlLmN1cnJlbnQ9dH12YXIgT3I9e30sSXI9e2N1cnJlbnQ6T3J9LE5yPXtjdXJyZW50OiExfSxScj1PcjtmdW5jdGlvbiBQcihlLHQpe3ZhciBuPWUudHlwZS5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIE9yO3ZhciByPWUuc3RhdGVOb2RlO2lmKHImJnIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PXQpcmV0dXJuIHIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIG8sYT17fTtmb3IobyBpbiBuKWFbb109dFtvXTtyZXR1cm4gciYmKChlPWUuc3RhdGVOb2RlKS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PXQsZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1hKSxhfWZ1bmN0aW9uIE1yKGUpe3JldHVybiBudWxsIT0oZT1lLmNoaWxkQ29udGV4dFR5cGVzKX1mdW5jdGlvbiBMcihlKXtBcihOciksQXIoSXIpfWZ1bmN0aW9uIERyKGUpe0FyKE5yKSxBcihJcil9ZnVuY3Rpb24gRnIoZSx0LG4pe0lyLmN1cnJlbnQhPT1PciYmaShcIjE2OFwiKSxDcihJcix0KSxDcihOcixuKX1mdW5jdGlvbiBCcihlLHQsbil7dmFyIHI9ZS5zdGF0ZU5vZGU7aWYoZT10LmNoaWxkQ29udGV4dFR5cGVzLFwiZnVuY3Rpb25cIiE9dHlwZW9mIHIuZ2V0Q2hpbGRDb250ZXh0KXJldHVybiBuO2Zvcih2YXIgYSBpbiByPXIuZ2V0Q2hpbGRDb250ZXh0KCkpYSBpbiBlfHxpKFwiMTA4XCIsbHQodCl8fFwiVW5rbm93blwiLGEpO3JldHVybiBvKHt9LG4scil9ZnVuY3Rpb24ganIoZSl7dmFyIHQ9ZS5zdGF0ZU5vZGU7cmV0dXJuIHQ9dCYmdC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dHx8T3IsUnI9SXIuY3VycmVudCxDcihJcix0KSxDcihOcixOci5jdXJyZW50KSwhMH1mdW5jdGlvbiBVcihlLHQsbil7dmFyIHI9ZS5zdGF0ZU5vZGU7cnx8aShcIjE2OVwiKSxuPyh0PUJyKGUsdCxSciksci5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dD10LEFyKE5yKSxBcihJciksQ3IoSXIsdCkpOkFyKE5yKSxDcihOcixuKX12YXIgenI9bnVsbCxIcj1udWxsO2Z1bmN0aW9uIFdyKGUpe3JldHVybiBmdW5jdGlvbih0KXt0cnl7cmV0dXJuIGUodCl9Y2F0Y2goZSl7fX19ZnVuY3Rpb24gR3IoZSx0LG4scil7dGhpcy50YWc9ZSx0aGlzLmtleT1uLHRoaXMuc2libGluZz10aGlzLmNoaWxkPXRoaXMucmV0dXJuPXRoaXMuc3RhdGVOb2RlPXRoaXMudHlwZT10aGlzLmVsZW1lbnRUeXBlPW51bGwsdGhpcy5pbmRleD0wLHRoaXMucmVmPW51bGwsdGhpcy5wZW5kaW5nUHJvcHM9dCx0aGlzLmNvbnRleHREZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGwsdGhpcy5tb2RlPXIsdGhpcy5lZmZlY3RUYWc9MCx0aGlzLmxhc3RFZmZlY3Q9dGhpcy5maXJzdEVmZmVjdD10aGlzLm5leHRFZmZlY3Q9bnVsbCx0aGlzLmNoaWxkRXhwaXJhdGlvblRpbWU9dGhpcy5leHBpcmF0aW9uVGltZT0wLHRoaXMuYWx0ZXJuYXRlPW51bGx9ZnVuY3Rpb24gVnIoZSx0LG4scil7cmV0dXJuIG5ldyBHcihlLHQsbixyKX1mdW5jdGlvbiAkcihlKXtyZXR1cm4hKCEoZT1lLnByb3RvdHlwZSl8fCFlLmlzUmVhY3RDb21wb25lbnQpfWZ1bmN0aW9uIHFyKGUsdCl7dmFyIG49ZS5hbHRlcm5hdGU7cmV0dXJuIG51bGw9PT1uPygobj1WcihlLnRhZyx0LGUua2V5LGUubW9kZSkpLmVsZW1lbnRUeXBlPWUuZWxlbWVudFR5cGUsbi50eXBlPWUudHlwZSxuLnN0YXRlTm9kZT1lLnN0YXRlTm9kZSxuLmFsdGVybmF0ZT1lLGUuYWx0ZXJuYXRlPW4pOihuLnBlbmRpbmdQcm9wcz10LG4uZWZmZWN0VGFnPTAsbi5uZXh0RWZmZWN0PW51bGwsbi5maXJzdEVmZmVjdD1udWxsLG4ubGFzdEVmZmVjdD1udWxsKSxuLmNoaWxkRXhwaXJhdGlvblRpbWU9ZS5jaGlsZEV4cGlyYXRpb25UaW1lLG4uZXhwaXJhdGlvblRpbWU9ZS5leHBpcmF0aW9uVGltZSxuLmNoaWxkPWUuY2hpbGQsbi5tZW1vaXplZFByb3BzPWUubWVtb2l6ZWRQcm9wcyxuLm1lbW9pemVkU3RhdGU9ZS5tZW1vaXplZFN0YXRlLG4udXBkYXRlUXVldWU9ZS51cGRhdGVRdWV1ZSxuLmNvbnRleHREZXBlbmRlbmNpZXM9ZS5jb250ZXh0RGVwZW5kZW5jaWVzLG4uc2libGluZz1lLnNpYmxpbmcsbi5pbmRleD1lLmluZGV4LG4ucmVmPWUucmVmLG59ZnVuY3Rpb24gS3IoZSx0LG4scixvLGEpe3ZhciBsPTI7aWYocj1lLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpJHIoZSkmJihsPTEpO2Vsc2UgaWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpbD01O2Vsc2UgZTpzd2l0Y2goZSl7Y2FzZSBZZTpyZXR1cm4gWXIobi5jaGlsZHJlbixvLGEsdCk7Y2FzZSBldDpyZXR1cm4gWHIobiwzfG8sYSx0KTtjYXNlIFhlOnJldHVybiBYcihuLDJ8byxhLHQpO2Nhc2UgWmU6cmV0dXJuKGU9VnIoMTIsbix0LDR8bykpLmVsZW1lbnRUeXBlPVplLGUudHlwZT1aZSxlLmV4cGlyYXRpb25UaW1lPWEsZTtjYXNlIG50OnJldHVybihlPVZyKDEzLG4sdCxvKSkuZWxlbWVudFR5cGU9bnQsZS50eXBlPW50LGUuZXhwaXJhdGlvblRpbWU9YSxlO2RlZmF1bHQ6aWYoXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lKXN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIFFlOmw9MTA7YnJlYWsgZTtjYXNlIEplOmw9OTticmVhayBlO2Nhc2UgdHQ6bD0xMTticmVhayBlO2Nhc2UgcnQ6bD0xNDticmVhayBlO2Nhc2Ugb3Q6bD0xNixyPW51bGw7YnJlYWsgZX1pKFwiMTMwXCIsbnVsbD09ZT9lOnR5cGVvZiBlLFwiXCIpfXJldHVybih0PVZyKGwsbix0LG8pKS5lbGVtZW50VHlwZT1lLHQudHlwZT1yLHQuZXhwaXJhdGlvblRpbWU9YSx0fWZ1bmN0aW9uIFlyKGUsdCxuLHIpe3JldHVybihlPVZyKDcsZSxyLHQpKS5leHBpcmF0aW9uVGltZT1uLGV9ZnVuY3Rpb24gWHIoZSx0LG4scil7cmV0dXJuIGU9VnIoOCxlLHIsdCksdD0wPT0oMSZ0KT9YZTpldCxlLmVsZW1lbnRUeXBlPXQsZS50eXBlPXQsZS5leHBpcmF0aW9uVGltZT1uLGV9ZnVuY3Rpb24gWnIoZSx0LG4pe3JldHVybihlPVZyKDYsZSxudWxsLHQpKS5leHBpcmF0aW9uVGltZT1uLGV9ZnVuY3Rpb24gUXIoZSx0LG4pe3JldHVybih0PVZyKDQsbnVsbCE9PWUuY2hpbGRyZW4/ZS5jaGlsZHJlbjpbXSxlLmtleSx0KSkuZXhwaXJhdGlvblRpbWU9bix0LnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzplLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246ZS5pbXBsZW1lbnRhdGlvbn0sdH1mdW5jdGlvbiBKcihlLHQpe2UuZGlkRXJyb3I9ITE7dmFyIG49ZS5lYXJsaWVzdFBlbmRpbmdUaW1lOzA9PT1uP2UuZWFybGllc3RQZW5kaW5nVGltZT1lLmxhdGVzdFBlbmRpbmdUaW1lPXQ6bjx0P2UuZWFybGllc3RQZW5kaW5nVGltZT10OmUubGF0ZXN0UGVuZGluZ1RpbWU+dCYmKGUubGF0ZXN0UGVuZGluZ1RpbWU9dCksbm8odCxlKX1mdW5jdGlvbiBlbyhlLHQpe2UuZGlkRXJyb3I9ITEsZS5sYXRlc3RQaW5nZWRUaW1lPj10JiYoZS5sYXRlc3RQaW5nZWRUaW1lPTApO3ZhciBuPWUuZWFybGllc3RQZW5kaW5nVGltZSxyPWUubGF0ZXN0UGVuZGluZ1RpbWU7bj09PXQ/ZS5lYXJsaWVzdFBlbmRpbmdUaW1lPXI9PT10P2UubGF0ZXN0UGVuZGluZ1RpbWU9MDpyOnI9PT10JiYoZS5sYXRlc3RQZW5kaW5nVGltZT1uKSxuPWUuZWFybGllc3RTdXNwZW5kZWRUaW1lLHI9ZS5sYXRlc3RTdXNwZW5kZWRUaW1lLDA9PT1uP2UuZWFybGllc3RTdXNwZW5kZWRUaW1lPWUubGF0ZXN0U3VzcGVuZGVkVGltZT10Om48dD9lLmVhcmxpZXN0U3VzcGVuZGVkVGltZT10OnI+dCYmKGUubGF0ZXN0U3VzcGVuZGVkVGltZT10KSxubyh0LGUpfWZ1bmN0aW9uIHRvKGUsdCl7dmFyIG49ZS5lYXJsaWVzdFBlbmRpbmdUaW1lO3JldHVybiBuPnQmJih0PW4pLChlPWUuZWFybGllc3RTdXNwZW5kZWRUaW1lKT50JiYodD1lKSx0fWZ1bmN0aW9uIG5vKGUsdCl7dmFyIG49dC5lYXJsaWVzdFN1c3BlbmRlZFRpbWUscj10LmxhdGVzdFN1c3BlbmRlZFRpbWUsbz10LmVhcmxpZXN0UGVuZGluZ1RpbWUsYT10LmxhdGVzdFBpbmdlZFRpbWU7MD09PShvPTAhPT1vP286YSkmJigwPT09ZXx8cjxlKSYmKG89ciksMCE9PShlPW8pJiZuPmUmJihlPW4pLHQubmV4dEV4cGlyYXRpb25UaW1lVG9Xb3JrT249byx0LmV4cGlyYXRpb25UaW1lPWV9ZnVuY3Rpb24gcm8oZSx0KXtpZihlJiZlLmRlZmF1bHRQcm9wcylmb3IodmFyIG4gaW4gdD1vKHt9LHQpLGU9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09dFtuXSYmKHRbbl09ZVtuXSk7cmV0dXJuIHR9dmFyIG9vPShuZXcgci5Db21wb25lbnQpLnJlZnM7ZnVuY3Rpb24gYW8oZSx0LG4scil7bj1udWxsPT0obj1uKHIsdD1lLm1lbW9pemVkU3RhdGUpKT90Om8oe30sdCxuKSxlLm1lbW9pemVkU3RhdGU9bixudWxsIT09KHI9ZS51cGRhdGVRdWV1ZSkmJjA9PT1lLmV4cGlyYXRpb25UaW1lJiYoci5iYXNlU3RhdGU9bil9dmFyIGlvPXtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuISEoZT1lLl9yZWFjdEludGVybmFsRmliZXIpJiYyPT09dG4oZSl9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQsbil7ZT1lLl9yZWFjdEludGVybmFsRmliZXI7dmFyIHI9eGwoKSxvPVhhKHI9WWkocixlKSk7by5wYXlsb2FkPXQsbnVsbCE9biYmKG8uY2FsbGJhY2s9biksV2koKSxRYShlLG8pLFFpKGUscil9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0LG4pe2U9ZS5fcmVhY3RJbnRlcm5hbEZpYmVyO3ZhciByPXhsKCksbz1YYShyPVlpKHIsZSkpO28udGFnPUdhLG8ucGF5bG9hZD10LG51bGwhPW4mJihvLmNhbGxiYWNrPW4pLFdpKCksUWEoZSxvKSxRaShlLHIpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSx0KXtlPWUuX3JlYWN0SW50ZXJuYWxGaWJlcjt2YXIgbj14bCgpLHI9WGEobj1ZaShuLGUpKTtyLnRhZz1WYSxudWxsIT10JiYoci5jYWxsYmFjaz10KSxXaSgpLFFhKGUsciksUWkoZSxuKX19O2Z1bmN0aW9uIGxvKGUsdCxuLHIsbyxhLGkpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mKGU9ZS5zdGF0ZU5vZGUpLnNob3VsZENvbXBvbmVudFVwZGF0ZT9lLnNob3VsZENvbXBvbmVudFVwZGF0ZShyLGEsaSk6IXQucHJvdG90eXBlfHwhdC5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnR8fCghZW4obixyKXx8IWVuKG8sYSkpfWZ1bmN0aW9uIHNvKGUsdCxuKXt2YXIgcj0hMSxvPU9yLGE9dC5jb250ZXh0VHlwZTtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgYSYmbnVsbCE9PWE/YT1IYShhKToobz1Ncih0KT9ScjpJci5jdXJyZW50LGE9KHI9bnVsbCE9KHI9dC5jb250ZXh0VHlwZXMpKT9QcihlLG8pOk9yKSx0PW5ldyB0KG4sYSksZS5tZW1vaXplZFN0YXRlPW51bGwhPT10LnN0YXRlJiZ2b2lkIDAhPT10LnN0YXRlP3Quc3RhdGU6bnVsbCx0LnVwZGF0ZXI9aW8sZS5zdGF0ZU5vZGU9dCx0Ll9yZWFjdEludGVybmFsRmliZXI9ZSxyJiYoKGU9ZS5zdGF0ZU5vZGUpLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9byxlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWEpLHR9ZnVuY3Rpb24gdW8oZSx0LG4scil7ZT10LnN0YXRlLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG4sciksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmdC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuLHIpLHQuc3RhdGUhPT1lJiZpby5lbnF1ZXVlUmVwbGFjZVN0YXRlKHQsdC5zdGF0ZSxudWxsKX1mdW5jdGlvbiBjbyhlLHQsbixyKXt2YXIgbz1lLnN0YXRlTm9kZTtvLnByb3BzPW4sby5zdGF0ZT1lLm1lbW9pemVkU3RhdGUsby5yZWZzPW9vO3ZhciBhPXQuY29udGV4dFR5cGU7XCJvYmplY3RcIj09dHlwZW9mIGEmJm51bGwhPT1hP28uY29udGV4dD1IYShhKTooYT1Ncih0KT9ScjpJci5jdXJyZW50LG8uY29udGV4dD1QcihlLGEpKSxudWxsIT09KGE9ZS51cGRhdGVRdWV1ZSkmJihuaShlLGEsbixvLHIpLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlKSxcImZ1bmN0aW9uXCI9PXR5cGVvZihhPXQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKSYmKGFvKGUsdCxhLG4pLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc3x8XCJmdW5jdGlvblwiPT10eXBlb2Ygby5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8XCJmdW5jdGlvblwiIT10eXBlb2Ygby5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBvLmNvbXBvbmVudFdpbGxNb3VudHx8KHQ9by5zdGF0ZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBvLmNvbXBvbmVudFdpbGxNb3VudCYmby5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBvLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJm8uVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLHQhPT1vLnN0YXRlJiZpby5lbnF1ZXVlUmVwbGFjZVN0YXRlKG8sby5zdGF0ZSxudWxsKSxudWxsIT09KGE9ZS51cGRhdGVRdWV1ZSkmJihuaShlLGEsbixvLHIpLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlKSksXCJmdW5jdGlvblwiPT10eXBlb2Ygby5jb21wb25lbnREaWRNb3VudCYmKGUuZWZmZWN0VGFnfD00KX12YXIgcG89QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBmbyhlLHQsbil7aWYobnVsbCE9PShlPW4ucmVmKSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmXCJvYmplY3RcIiE9dHlwZW9mIGUpe2lmKG4uX293bmVyKXtuPW4uX293bmVyO3ZhciByPXZvaWQgMDtuJiYoMSE9PW4udGFnJiZpKFwiMzA5XCIpLHI9bi5zdGF0ZU5vZGUpLHJ8fGkoXCIxNDdcIixlKTt2YXIgbz1cIlwiK2U7cmV0dXJuIG51bGwhPT10JiZudWxsIT09dC5yZWYmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQucmVmJiZ0LnJlZi5fc3RyaW5nUmVmPT09bz90LnJlZjooKHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5yZWZzO3Q9PT1vbyYmKHQ9ci5yZWZzPXt9KSxudWxsPT09ZT9kZWxldGUgdFtvXTp0W29dPWV9KS5fc3RyaW5nUmVmPW8sdCl9XCJzdHJpbmdcIiE9dHlwZW9mIGUmJmkoXCIyODRcIiksbi5fb3duZXJ8fGkoXCIyOTBcIixlKX1yZXR1cm4gZX1mdW5jdGlvbiBtbyhlLHQpe1widGV4dGFyZWFcIiE9PWUudHlwZSYmaShcIjMxXCIsXCJbb2JqZWN0IE9iamVjdF1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKHQpLmpvaW4oXCIsIFwiKStcIn1cIjp0LFwiXCIpfWZ1bmN0aW9uIGdvKGUpe2Z1bmN0aW9uIHQodCxuKXtpZihlKXt2YXIgcj10Lmxhc3RFZmZlY3Q7bnVsbCE9PXI/KHIubmV4dEVmZmVjdD1uLHQubGFzdEVmZmVjdD1uKTp0LmZpcnN0RWZmZWN0PXQubGFzdEVmZmVjdD1uLG4ubmV4dEVmZmVjdD1udWxsLG4uZWZmZWN0VGFnPTh9fWZ1bmN0aW9uIG4obixyKXtpZighZSlyZXR1cm4gbnVsbDtmb3IoO251bGwhPT1yOyl0KG4scikscj1yLnNpYmxpbmc7cmV0dXJuIG51bGx9ZnVuY3Rpb24gcihlLHQpe2ZvcihlPW5ldyBNYXA7bnVsbCE9PXQ7KW51bGwhPT10LmtleT9lLnNldCh0LmtleSx0KTplLnNldCh0LmluZGV4LHQpLHQ9dC5zaWJsaW5nO3JldHVybiBlfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybihlPXFyKGUsdCkpLmluZGV4PTAsZS5zaWJsaW5nPW51bGwsZX1mdW5jdGlvbiBhKHQsbixyKXtyZXR1cm4gdC5pbmRleD1yLGU/bnVsbCE9PShyPXQuYWx0ZXJuYXRlKT8ocj1yLmluZGV4KTxuPyh0LmVmZmVjdFRhZz0yLG4pOnI6KHQuZWZmZWN0VGFnPTIsbik6bn1mdW5jdGlvbiBsKHQpe3JldHVybiBlJiZudWxsPT09dC5hbHRlcm5hdGUmJih0LmVmZmVjdFRhZz0yKSx0fWZ1bmN0aW9uIHMoZSx0LG4scil7cmV0dXJuIG51bGw9PT10fHw2IT09dC50YWc/KCh0PVpyKG4sZS5tb2RlLHIpKS5yZXR1cm49ZSx0KTooKHQ9byh0LG4pKS5yZXR1cm49ZSx0KX1mdW5jdGlvbiB1KGUsdCxuLHIpe3JldHVybiBudWxsIT09dCYmdC5lbGVtZW50VHlwZT09PW4udHlwZT8oKHI9byh0LG4ucHJvcHMpKS5yZWY9Zm8oZSx0LG4pLHIucmV0dXJuPWUscik6KChyPUtyKG4udHlwZSxuLmtleSxuLnByb3BzLG51bGwsZS5tb2RlLHIpKS5yZWY9Zm8oZSx0LG4pLHIucmV0dXJuPWUscil9ZnVuY3Rpb24gYyhlLHQsbixyKXtyZXR1cm4gbnVsbD09PXR8fDQhPT10LnRhZ3x8dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyE9PW4uY29udGFpbmVySW5mb3x8dC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24hPT1uLmltcGxlbWVudGF0aW9uPygodD1RcihuLGUubW9kZSxyKSkucmV0dXJuPWUsdCk6KCh0PW8odCxuLmNoaWxkcmVufHxbXSkpLnJldHVybj1lLHQpfWZ1bmN0aW9uIGQoZSx0LG4scixhKXtyZXR1cm4gbnVsbD09PXR8fDchPT10LnRhZz8oKHQ9WXIobixlLm1vZGUscixhKSkucmV0dXJuPWUsdCk6KCh0PW8odCxuKSkucmV0dXJuPWUsdCl9ZnVuY3Rpb24gcChlLHQsbil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHR8fFwibnVtYmVyXCI9PXR5cGVvZiB0KXJldHVybih0PVpyKFwiXCIrdCxlLm1vZGUsbikpLnJldHVybj1lLHQ7aWYoXCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPT10KXtzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBxZTpyZXR1cm4obj1Lcih0LnR5cGUsdC5rZXksdC5wcm9wcyxudWxsLGUubW9kZSxuKSkucmVmPWZvKGUsbnVsbCx0KSxuLnJldHVybj1lLG47Y2FzZSBLZTpyZXR1cm4odD1Rcih0LGUubW9kZSxuKSkucmV0dXJuPWUsdH1pZihwbyh0KXx8aXQodCkpcmV0dXJuKHQ9WXIodCxlLm1vZGUsbixudWxsKSkucmV0dXJuPWUsdDttbyhlLHQpfXJldHVybiBudWxsfWZ1bmN0aW9uIGYoZSx0LG4scil7dmFyIG89bnVsbCE9PXQ/dC5rZXk6bnVsbDtpZihcInN0cmluZ1wiPT10eXBlb2Ygbnx8XCJudW1iZXJcIj09dHlwZW9mIG4pcmV0dXJuIG51bGwhPT1vP251bGw6cyhlLHQsXCJcIituLHIpO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBuJiZudWxsIT09bil7c3dpdGNoKG4uJCR0eXBlb2Ype2Nhc2UgcWU6cmV0dXJuIG4ua2V5PT09bz9uLnR5cGU9PT1ZZT9kKGUsdCxuLnByb3BzLmNoaWxkcmVuLHIsbyk6dShlLHQsbixyKTpudWxsO2Nhc2UgS2U6cmV0dXJuIG4ua2V5PT09bz9jKGUsdCxuLHIpOm51bGx9aWYocG8obil8fGl0KG4pKXJldHVybiBudWxsIT09bz9udWxsOmQoZSx0LG4scixudWxsKTttbyhlLG4pfXJldHVybiBudWxsfWZ1bmN0aW9uIG0oZSx0LG4scixvKXtpZihcInN0cmluZ1wiPT10eXBlb2Ygcnx8XCJudW1iZXJcIj09dHlwZW9mIHIpcmV0dXJuIHModCxlPWUuZ2V0KG4pfHxudWxsLFwiXCIrcixvKTtpZihcIm9iamVjdFwiPT10eXBlb2YgciYmbnVsbCE9PXIpe3N3aXRjaChyLiQkdHlwZW9mKXtjYXNlIHFlOnJldHVybiBlPWUuZ2V0KG51bGw9PT1yLmtleT9uOnIua2V5KXx8bnVsbCxyLnR5cGU9PT1ZZT9kKHQsZSxyLnByb3BzLmNoaWxkcmVuLG8sci5rZXkpOnUodCxlLHIsbyk7Y2FzZSBLZTpyZXR1cm4gYyh0LGU9ZS5nZXQobnVsbD09PXIua2V5P246ci5rZXkpfHxudWxsLHIsbyl9aWYocG8ocil8fGl0KHIpKXJldHVybiBkKHQsZT1lLmdldChuKXx8bnVsbCxyLG8sbnVsbCk7bW8odCxyKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBnKG8saSxsLHMpe2Zvcih2YXIgdT1udWxsLGM9bnVsbCxkPWksZz1pPTAsaD1udWxsO251bGwhPT1kJiZnPGwubGVuZ3RoO2crKyl7ZC5pbmRleD5nPyhoPWQsZD1udWxsKTpoPWQuc2libGluZzt2YXIgYj1mKG8sZCxsW2ddLHMpO2lmKG51bGw9PT1iKXtudWxsPT09ZCYmKGQ9aCk7YnJlYWt9ZSYmZCYmbnVsbD09PWIuYWx0ZXJuYXRlJiZ0KG8sZCksaT1hKGIsaSxnKSxudWxsPT09Yz91PWI6Yy5zaWJsaW5nPWIsYz1iLGQ9aH1pZihnPT09bC5sZW5ndGgpcmV0dXJuIG4obyxkKSx1O2lmKG51bGw9PT1kKXtmb3IoO2c8bC5sZW5ndGg7ZysrKShkPXAobyxsW2ddLHMpKSYmKGk9YShkLGksZyksbnVsbD09PWM/dT1kOmMuc2libGluZz1kLGM9ZCk7cmV0dXJuIHV9Zm9yKGQ9cihvLGQpO2c8bC5sZW5ndGg7ZysrKShoPW0oZCxvLGcsbFtnXSxzKSkmJihlJiZudWxsIT09aC5hbHRlcm5hdGUmJmQuZGVsZXRlKG51bGw9PT1oLmtleT9nOmgua2V5KSxpPWEoaCxpLGcpLG51bGw9PT1jP3U9aDpjLnNpYmxpbmc9aCxjPWgpO3JldHVybiBlJiZkLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHQobyxlKX0pLHV9ZnVuY3Rpb24gaChvLGwscyx1KXt2YXIgYz1pdChzKTtcImZ1bmN0aW9uXCIhPXR5cGVvZiBjJiZpKFwiMTUwXCIpLG51bGw9PShzPWMuY2FsbChzKSkmJmkoXCIxNTFcIik7Zm9yKHZhciBkPWM9bnVsbCxnPWwsaD1sPTAsYj1udWxsLHk9cy5uZXh0KCk7bnVsbCE9PWcmJiF5LmRvbmU7aCsrLHk9cy5uZXh0KCkpe2cuaW5kZXg+aD8oYj1nLGc9bnVsbCk6Yj1nLnNpYmxpbmc7dmFyIHY9ZihvLGcseS52YWx1ZSx1KTtpZihudWxsPT09dil7Z3x8KGc9Yik7YnJlYWt9ZSYmZyYmbnVsbD09PXYuYWx0ZXJuYXRlJiZ0KG8sZyksbD1hKHYsbCxoKSxudWxsPT09ZD9jPXY6ZC5zaWJsaW5nPXYsZD12LGc9Yn1pZih5LmRvbmUpcmV0dXJuIG4obyxnKSxjO2lmKG51bGw9PT1nKXtmb3IoOyF5LmRvbmU7aCsrLHk9cy5uZXh0KCkpbnVsbCE9PSh5PXAobyx5LnZhbHVlLHUpKSYmKGw9YSh5LGwsaCksbnVsbD09PWQ/Yz15OmQuc2libGluZz15LGQ9eSk7cmV0dXJuIGN9Zm9yKGc9cihvLGcpOyF5LmRvbmU7aCsrLHk9cy5uZXh0KCkpbnVsbCE9PSh5PW0oZyxvLGgseS52YWx1ZSx1KSkmJihlJiZudWxsIT09eS5hbHRlcm5hdGUmJmcuZGVsZXRlKG51bGw9PT15LmtleT9oOnkua2V5KSxsPWEoeSxsLGgpLG51bGw9PT1kP2M9eTpkLnNpYmxpbmc9eSxkPXkpO3JldHVybiBlJiZnLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHQobyxlKX0pLGN9cmV0dXJuIGZ1bmN0aW9uKGUscixhLHMpe3ZhciB1PVwib2JqZWN0XCI9PXR5cGVvZiBhJiZudWxsIT09YSYmYS50eXBlPT09WWUmJm51bGw9PT1hLmtleTt1JiYoYT1hLnByb3BzLmNoaWxkcmVuKTt2YXIgYz1cIm9iamVjdFwiPT10eXBlb2YgYSYmbnVsbCE9PWE7aWYoYylzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBxZTplOntmb3IoYz1hLmtleSx1PXI7bnVsbCE9PXU7KXtpZih1LmtleT09PWMpe2lmKDc9PT11LnRhZz9hLnR5cGU9PT1ZZTp1LmVsZW1lbnRUeXBlPT09YS50eXBlKXtuKGUsdS5zaWJsaW5nKSwocj1vKHUsYS50eXBlPT09WWU/YS5wcm9wcy5jaGlsZHJlbjphLnByb3BzKSkucmVmPWZvKGUsdSxhKSxyLnJldHVybj1lLGU9cjticmVhayBlfW4oZSx1KTticmVha310KGUsdSksdT11LnNpYmxpbmd9YS50eXBlPT09WWU/KChyPVlyKGEucHJvcHMuY2hpbGRyZW4sZS5tb2RlLHMsYS5rZXkpKS5yZXR1cm49ZSxlPXIpOigocz1LcihhLnR5cGUsYS5rZXksYS5wcm9wcyxudWxsLGUubW9kZSxzKSkucmVmPWZvKGUscixhKSxzLnJldHVybj1lLGU9cyl9cmV0dXJuIGwoZSk7Y2FzZSBLZTplOntmb3IodT1hLmtleTtudWxsIT09cjspe2lmKHIua2V5PT09dSl7aWYoND09PXIudGFnJiZyLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09YS5jb250YWluZXJJbmZvJiZyLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PWEuaW1wbGVtZW50YXRpb24pe24oZSxyLnNpYmxpbmcpLChyPW8ocixhLmNoaWxkcmVufHxbXSkpLnJldHVybj1lLGU9cjticmVhayBlfW4oZSxyKTticmVha310KGUscikscj1yLnNpYmxpbmd9KHI9UXIoYSxlLm1vZGUscykpLnJldHVybj1lLGU9cn1yZXR1cm4gbChlKX1pZihcInN0cmluZ1wiPT10eXBlb2YgYXx8XCJudW1iZXJcIj09dHlwZW9mIGEpcmV0dXJuIGE9XCJcIithLG51bGwhPT1yJiY2PT09ci50YWc/KG4oZSxyLnNpYmxpbmcpLChyPW8ocixhKSkucmV0dXJuPWUsZT1yKToobihlLHIpLChyPVpyKGEsZS5tb2RlLHMpKS5yZXR1cm49ZSxlPXIpLGwoZSk7aWYocG8oYSkpcmV0dXJuIGcoZSxyLGEscyk7aWYoaXQoYSkpcmV0dXJuIGgoZSxyLGEscyk7aWYoYyYmbW8oZSxhKSx2b2lkIDA9PT1hJiYhdSlzd2l0Y2goZS50YWcpe2Nhc2UgMTpjYXNlIDA6aShcIjE1MlwiLChzPWUudHlwZSkuZGlzcGxheU5hbWV8fHMubmFtZXx8XCJDb21wb25lbnRcIil9cmV0dXJuIG4oZSxyKX19dmFyIGhvPWdvKCEwKSxibz1nbyghMSkseW89e30sdm89e2N1cnJlbnQ6eW99LFNvPXtjdXJyZW50OnlvfSxFbz17Y3VycmVudDp5b307ZnVuY3Rpb24geG8oZSl7cmV0dXJuIGU9PT15byYmaShcIjE3NFwiKSxlfWZ1bmN0aW9uIHdvKGUsdCl7Q3IoRW8sdCksQ3IoU28sZSksQ3Iodm8seW8pO3ZhciBuPXQubm9kZVR5cGU7c3dpdGNoKG4pe2Nhc2UgOTpjYXNlIDExOnQ9KHQ9dC5kb2N1bWVudEVsZW1lbnQpP3QubmFtZXNwYWNlVVJJOnRyKG51bGwsXCJcIik7YnJlYWs7ZGVmYXVsdDp0PXRyKHQ9KG49OD09PW4/dC5wYXJlbnROb2RlOnQpLm5hbWVzcGFjZVVSSXx8bnVsbCxuPW4udGFnTmFtZSl9QXIodm8pLENyKHZvLHQpfWZ1bmN0aW9uIGtvKGUpe0FyKHZvKSxBcihTbyksQXIoRW8pfWZ1bmN0aW9uIF9vKGUpe3hvKEVvLmN1cnJlbnQpO3ZhciB0PXhvKHZvLmN1cnJlbnQpLG49dHIodCxlLnR5cGUpO3QhPT1uJiYoQ3IoU28sZSksQ3Iodm8sbikpfWZ1bmN0aW9uIFRvKGUpe1NvLmN1cnJlbnQ9PT1lJiYoQXIodm8pLEFyKFNvKSl9dmFyIEFvPTAsQ289MixPbz00LElvPTgsTm89MTYsUm89MzIsUG89NjQsTW89MTI4LExvPUdlLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsRG89MCxGbz1udWxsLEJvPW51bGwsam89bnVsbCxVbz1udWxsLHpvPW51bGwsSG89bnVsbCxXbz0wLEdvPW51bGwsVm89MCwkbz0hMSxxbz1udWxsLEtvPTA7ZnVuY3Rpb24gWW8oKXtpKFwiMzA3XCIpfWZ1bmN0aW9uIFhvKGUsdCl7aWYobnVsbD09PXQpcmV0dXJuITE7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aCYmbjxlLmxlbmd0aDtuKyspaWYoIVF0KGVbbl0sdFtuXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gWm8oZSx0LG4scixvLGEpe2lmKERvPWEsRm89dCxqbz1udWxsIT09ZT9lLm1lbW9pemVkU3RhdGU6bnVsbCxMby5jdXJyZW50PW51bGw9PT1qbz9jYTpkYSx0PW4ocixvKSwkbyl7ZG97JG89ITEsS28rPTEsam89bnVsbCE9PWU/ZS5tZW1vaXplZFN0YXRlOm51bGwsSG89VW8sR289em89Qm89bnVsbCxMby5jdXJyZW50PWRhLHQ9bihyLG8pfXdoaWxlKCRvKTtxbz1udWxsLEtvPTB9cmV0dXJuIExvLmN1cnJlbnQ9dWEsKGU9Rm8pLm1lbW9pemVkU3RhdGU9VW8sZS5leHBpcmF0aW9uVGltZT1XbyxlLnVwZGF0ZVF1ZXVlPUdvLGUuZWZmZWN0VGFnfD1WbyxlPW51bGwhPT1CbyYmbnVsbCE9PUJvLm5leHQsRG89MCxIbz16bz1Vbz1qbz1Cbz1Gbz1udWxsLFdvPTAsR289bnVsbCxWbz0wLGUmJmkoXCIzMDBcIiksdH1mdW5jdGlvbiBRbygpe0xvLmN1cnJlbnQ9dWEsRG89MCxIbz16bz1Vbz1qbz1Cbz1Gbz1udWxsLFdvPTAsR289bnVsbCxWbz0wLCRvPSExLHFvPW51bGwsS289MH1mdW5jdGlvbiBKbygpe3ZhciBlPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwscXVldWU6bnVsbCxiYXNlVXBkYXRlOm51bGwsbmV4dDpudWxsfTtyZXR1cm4gbnVsbD09PXpvP1VvPXpvPWU6em89em8ubmV4dD1lLHpvfWZ1bmN0aW9uIGVhKCl7aWYobnVsbCE9PUhvKUhvPSh6bz1IbykubmV4dCxqbz1udWxsIT09KEJvPWpvKT9Cby5uZXh0Om51bGw7ZWxzZXtudWxsPT09am8mJmkoXCIzMTBcIik7dmFyIGU9e21lbW9pemVkU3RhdGU6KEJvPWpvKS5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpCby5iYXNlU3RhdGUscXVldWU6Qm8ucXVldWUsYmFzZVVwZGF0ZTpCby5iYXNlVXBkYXRlLG5leHQ6bnVsbH07em89bnVsbD09PXpvP1VvPWU6em8ubmV4dD1lLGpvPUJvLm5leHR9cmV0dXJuIHpvfWZ1bmN0aW9uIHRhKGUsdCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdD90KGUpOnR9ZnVuY3Rpb24gbmEoZSl7dmFyIHQ9ZWEoKSxuPXQucXVldWU7aWYobnVsbD09PW4mJmkoXCIzMTFcIiksMDxLbyl7dmFyIHI9bi5kaXNwYXRjaDtpZihudWxsIT09cW8pe3ZhciBvPXFvLmdldChuKTtpZih2b2lkIDAhPT1vKXtxby5kZWxldGUobik7dmFyIGE9dC5tZW1vaXplZFN0YXRlO2Rve2E9ZShhLG8uYWN0aW9uKSxvPW8ubmV4dH13aGlsZShudWxsIT09byk7cmV0dXJuIFF0KGEsdC5tZW1vaXplZFN0YXRlKXx8KHhhPSEwKSx0Lm1lbW9pemVkU3RhdGU9YSx0LmJhc2VVcGRhdGU9PT1uLmxhc3QmJih0LmJhc2VTdGF0ZT1hKSxuLmVhZ2VyUmVkdWNlcj1lLG4uZWFnZXJTdGF0ZT1hLFthLHJdfX1yZXR1cm5bdC5tZW1vaXplZFN0YXRlLHJdfXI9bi5sYXN0O3ZhciBsPXQuYmFzZVVwZGF0ZTtpZihhPXQuYmFzZVN0YXRlLG51bGwhPT1sPyhudWxsIT09ciYmKHIubmV4dD1udWxsKSxyPWwubmV4dCk6cj1udWxsIT09cj9yLm5leHQ6bnVsbCxudWxsIT09cil7dmFyIHM9bz1udWxsLHU9cixjPSExO2Rve3ZhciBkPXUuZXhwaXJhdGlvblRpbWU7ZDxEbz8oY3x8KGM9ITAscz1sLG89YSksZD5XbyYmKFdvPWQpKTphPXUuZWFnZXJSZWR1Y2VyPT09ZT91LmVhZ2VyU3RhdGU6ZShhLHUuYWN0aW9uKSxsPXUsdT11Lm5leHR9d2hpbGUobnVsbCE9PXUmJnUhPT1yKTtjfHwocz1sLG89YSksUXQoYSx0Lm1lbW9pemVkU3RhdGUpfHwoeGE9ITApLHQubWVtb2l6ZWRTdGF0ZT1hLHQuYmFzZVVwZGF0ZT1zLHQuYmFzZVN0YXRlPW8sbi5lYWdlclJlZHVjZXI9ZSxuLmVhZ2VyU3RhdGU9YX1yZXR1cm5bdC5tZW1vaXplZFN0YXRlLG4uZGlzcGF0Y2hdfWZ1bmN0aW9uIHJhKGUsdCxuLHIpe3JldHVybiBlPXt0YWc6ZSxjcmVhdGU6dCxkZXN0cm95Om4sZGVwczpyLG5leHQ6bnVsbH0sbnVsbD09PUdvPyhHbz17bGFzdEVmZmVjdDpudWxsfSkubGFzdEVmZmVjdD1lLm5leHQ9ZTpudWxsPT09KHQ9R28ubGFzdEVmZmVjdCk/R28ubGFzdEVmZmVjdD1lLm5leHQ9ZToobj10Lm5leHQsdC5uZXh0PWUsZS5uZXh0PW4sR28ubGFzdEVmZmVjdD1lKSxlfWZ1bmN0aW9uIG9hKGUsdCxuLHIpe3ZhciBvPUpvKCk7Vm98PWUsby5tZW1vaXplZFN0YXRlPXJhKHQsbix2b2lkIDAsdm9pZCAwPT09cj9udWxsOnIpfWZ1bmN0aW9uIGFhKGUsdCxuLHIpe3ZhciBvPWVhKCk7cj12b2lkIDA9PT1yP251bGw6cjt2YXIgYT12b2lkIDA7aWYobnVsbCE9PUJvKXt2YXIgaT1Cby5tZW1vaXplZFN0YXRlO2lmKGE9aS5kZXN0cm95LG51bGwhPT1yJiZYbyhyLGkuZGVwcykpcmV0dXJuIHZvaWQgcmEoQW8sbixhLHIpfVZvfD1lLG8ubWVtb2l6ZWRTdGF0ZT1yYSh0LG4sYSxyKX1mdW5jdGlvbiBpYShlLHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/KGU9ZSgpLHQoZSksZnVuY3Rpb24oKXt0KG51bGwpfSk6bnVsbCE9dD8oZT1lKCksdC5jdXJyZW50PWUsZnVuY3Rpb24oKXt0LmN1cnJlbnQ9bnVsbH0pOnZvaWQgMH1mdW5jdGlvbiBsYSgpe31mdW5jdGlvbiBzYShlLHQsbil7MjU+S298fGkoXCIzMDFcIik7dmFyIHI9ZS5hbHRlcm5hdGU7aWYoZT09PUZvfHxudWxsIT09ciYmcj09PUZvKWlmKCRvPSEwLGU9e2V4cGlyYXRpb25UaW1lOkRvLGFjdGlvbjpuLGVhZ2VyUmVkdWNlcjpudWxsLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9LG51bGw9PT1xbyYmKHFvPW5ldyBNYXApLHZvaWQgMD09PShuPXFvLmdldCh0KSkpcW8uc2V0KHQsZSk7ZWxzZXtmb3IodD1uO251bGwhPT10Lm5leHQ7KXQ9dC5uZXh0O3QubmV4dD1lfWVsc2V7V2koKTt2YXIgbz14bCgpLGE9e2V4cGlyYXRpb25UaW1lOm89WWkobyxlKSxhY3Rpb246bixlYWdlclJlZHVjZXI6bnVsbCxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfSxsPXQubGFzdDtpZihudWxsPT09bClhLm5leHQ9YTtlbHNle3ZhciBzPWwubmV4dDtudWxsIT09cyYmKGEubmV4dD1zKSxsLm5leHQ9YX1pZih0Lmxhc3Q9YSwwPT09ZS5leHBpcmF0aW9uVGltZSYmKG51bGw9PT1yfHwwPT09ci5leHBpcmF0aW9uVGltZSkmJm51bGwhPT0ocj10LmVhZ2VyUmVkdWNlcikpdHJ5e3ZhciB1PXQuZWFnZXJTdGF0ZSxjPXIodSxuKTtpZihhLmVhZ2VyUmVkdWNlcj1yLGEuZWFnZXJTdGF0ZT1jLFF0KGMsdSkpcmV0dXJufWNhdGNoKGUpe31RaShlLG8pfX12YXIgdWE9e3JlYWRDb250ZXh0OkhhLHVzZUNhbGxiYWNrOllvLHVzZUNvbnRleHQ6WW8sdXNlRWZmZWN0OllvLHVzZUltcGVyYXRpdmVIYW5kbGU6WW8sdXNlTGF5b3V0RWZmZWN0OllvLHVzZU1lbW86WW8sdXNlUmVkdWNlcjpZbyx1c2VSZWY6WW8sdXNlU3RhdGU6WW8sdXNlRGVidWdWYWx1ZTpZb30sY2E9e3JlYWRDb250ZXh0OkhhLHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEpvKCkubWVtb2l6ZWRTdGF0ZT1bZSx2b2lkIDA9PT10P251bGw6dF0sZX0sdXNlQ29udGV4dDpIYSx1c2VFZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gb2EoNTE2LE1vfFBvLGUsdCl9LHVzZUltcGVyYXRpdmVIYW5kbGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuPW51bGwhPW4/bi5jb25jYXQoW2VdKTpudWxsLG9hKDQsT298Um8saWEuYmluZChudWxsLHQsZSksbil9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBvYSg0LE9vfFJvLGUsdCl9LHVzZU1lbW86ZnVuY3Rpb24oZSx0KXt2YXIgbj1KbygpO3JldHVybiB0PXZvaWQgMD09PXQ/bnVsbDp0LGU9ZSgpLG4ubWVtb2l6ZWRTdGF0ZT1bZSx0XSxlfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1KbygpO3JldHVybiB0PXZvaWQgMCE9PW4/bih0KTp0LHIubWVtb2l6ZWRTdGF0ZT1yLmJhc2VTdGF0ZT10LGU9KGU9ci5xdWV1ZT17bGFzdDpudWxsLGRpc3BhdGNoOm51bGwsZWFnZXJSZWR1Y2VyOmUsZWFnZXJTdGF0ZTp0fSkuZGlzcGF0Y2g9c2EuYmluZChudWxsLEZvLGUpLFtyLm1lbW9pemVkU3RhdGUsZV19LHVzZVJlZjpmdW5jdGlvbihlKXtyZXR1cm4gZT17Y3VycmVudDplfSxKbygpLm1lbW9pemVkU3RhdGU9ZX0sdXNlU3RhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9Sm8oKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiYoZT1lKCkpLHQubWVtb2l6ZWRTdGF0ZT10LmJhc2VTdGF0ZT1lLGU9KGU9dC5xdWV1ZT17bGFzdDpudWxsLGRpc3BhdGNoOm51bGwsZWFnZXJSZWR1Y2VyOnRhLGVhZ2VyU3RhdGU6ZX0pLmRpc3BhdGNoPXNhLmJpbmQobnVsbCxGbyxlKSxbdC5tZW1vaXplZFN0YXRlLGVdfSx1c2VEZWJ1Z1ZhbHVlOmxhfSxkYT17cmVhZENvbnRleHQ6SGEsdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lYSgpO3Q9dm9pZCAwPT09dD9udWxsOnQ7dmFyIHI9bi5tZW1vaXplZFN0YXRlO3JldHVybiBudWxsIT09ciYmbnVsbCE9PXQmJlhvKHQsclsxXSk/clswXToobi5tZW1vaXplZFN0YXRlPVtlLHRdLGUpfSx1c2VDb250ZXh0OkhhLHVzZUVmZmVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBhYSg1MTYsTW98UG8sZSx0KX0sdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG49bnVsbCE9bj9uLmNvbmNhdChbZV0pOm51bGwsYWEoNCxPb3xSbyxpYS5iaW5kKG51bGwsdCxlKSxuKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFhKDQsT298Um8sZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3ZhciBuPWVhKCk7dD12b2lkIDA9PT10P251bGw6dDt2YXIgcj1uLm1lbW9pemVkU3RhdGU7cmV0dXJuIG51bGwhPT1yJiZudWxsIT09dCYmWG8odCxyWzFdKT9yWzBdOihlPWUoKSxuLm1lbW9pemVkU3RhdGU9W2UsdF0sZSl9LHVzZVJlZHVjZXI6bmEsdXNlUmVmOmZ1bmN0aW9uKCl7cmV0dXJuIGVhKCkubWVtb2l6ZWRTdGF0ZX0sdXNlU3RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5hKHRhKX0sdXNlRGVidWdWYWx1ZTpsYX0scGE9bnVsbCxmYT1udWxsLG1hPSExO2Z1bmN0aW9uIGdhKGUsdCl7dmFyIG49VnIoNSxudWxsLG51bGwsMCk7bi5lbGVtZW50VHlwZT1cIkRFTEVURURcIixuLnR5cGU9XCJERUxFVEVEXCIsbi5zdGF0ZU5vZGU9dCxuLnJldHVybj1lLG4uZWZmZWN0VGFnPTgsbnVsbCE9PWUubGFzdEVmZmVjdD8oZS5sYXN0RWZmZWN0Lm5leHRFZmZlY3Q9bixlLmxhc3RFZmZlY3Q9bik6ZS5maXJzdEVmZmVjdD1lLmxhc3RFZmZlY3Q9bn1mdW5jdGlvbiBoYShlLHQpe3N3aXRjaChlLnRhZyl7Y2FzZSA1OnZhciBuPWUudHlwZTtyZXR1cm4gbnVsbCE9PSh0PTEhPT10Lm5vZGVUeXBlfHxuLnRvTG93ZXJDYXNlKCkhPT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/bnVsbDp0KSYmKGUuc3RhdGVOb2RlPXQsITApO2Nhc2UgNjpyZXR1cm4gbnVsbCE9PSh0PVwiXCI9PT1lLnBlbmRpbmdQcm9wc3x8MyE9PXQubm9kZVR5cGU/bnVsbDp0KSYmKGUuc3RhdGVOb2RlPXQsITApO2Nhc2UgMTM6ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gYmEoZSl7aWYobWEpe3ZhciB0PWZhO2lmKHQpe3ZhciBuPXQ7aWYoIWhhKGUsdCkpe2lmKCEodD13cihuKSl8fCFoYShlLHQpKXJldHVybiBlLmVmZmVjdFRhZ3w9MixtYT0hMSx2b2lkKHBhPWUpO2dhKHBhLG4pfXBhPWUsZmE9a3IodCl9ZWxzZSBlLmVmZmVjdFRhZ3w9MixtYT0hMSxwYT1lfX1mdW5jdGlvbiB5YShlKXtmb3IoZT1lLnJldHVybjtudWxsIT09ZSYmNSE9PWUudGFnJiYzIT09ZS50YWcmJjE4IT09ZS50YWc7KWU9ZS5yZXR1cm47cGE9ZX1mdW5jdGlvbiB2YShlKXtpZihlIT09cGEpcmV0dXJuITE7aWYoIW1hKXJldHVybiB5YShlKSxtYT0hMCwhMTt2YXIgdD1lLnR5cGU7aWYoNSE9PWUudGFnfHxcImhlYWRcIiE9PXQmJlwiYm9keVwiIT09dCYmIXlyKHQsZS5tZW1vaXplZFByb3BzKSlmb3IodD1mYTt0OylnYShlLHQpLHQ9d3IodCk7cmV0dXJuIHlhKGUpLGZhPXBhP3dyKGUuc3RhdGVOb2RlKTpudWxsLCEwfWZ1bmN0aW9uIFNhKCl7ZmE9cGE9bnVsbCxtYT0hMX12YXIgRWE9R2UuUmVhY3RDdXJyZW50T3duZXIseGE9ITE7ZnVuY3Rpb24gd2EoZSx0LG4scil7dC5jaGlsZD1udWxsPT09ZT9ibyh0LG51bGwsbixyKTpobyh0LGUuY2hpbGQsbixyKX1mdW5jdGlvbiBrYShlLHQsbixyLG8pe249bi5yZW5kZXI7dmFyIGE9dC5yZWY7cmV0dXJuIHphKHQsbykscj1abyhlLHQsbixyLGEsbyksbnVsbD09PWV8fHhhPyh0LmVmZmVjdFRhZ3w9MSx3YShlLHQscixvKSx0LmNoaWxkKToodC51cGRhdGVRdWV1ZT1lLnVwZGF0ZVF1ZXVlLHQuZWZmZWN0VGFnJj0tNTE3LGUuZXhwaXJhdGlvblRpbWU8PW8mJihlLmV4cGlyYXRpb25UaW1lPTApLFBhKGUsdCxvKSl9ZnVuY3Rpb24gX2EoZSx0LG4scixvLGEpe2lmKG51bGw9PT1lKXt2YXIgaT1uLnR5cGU7cmV0dXJuXCJmdW5jdGlvblwiIT10eXBlb2YgaXx8JHIoaSl8fHZvaWQgMCE9PWkuZGVmYXVsdFByb3BzfHxudWxsIT09bi5jb21wYXJlfHx2b2lkIDAhPT1uLmRlZmF1bHRQcm9wcz8oKGU9S3Iobi50eXBlLG51bGwscixudWxsLHQubW9kZSxhKSkucmVmPXQucmVmLGUucmV0dXJuPXQsdC5jaGlsZD1lKToodC50YWc9MTUsdC50eXBlPWksVGEoZSx0LGkscixvLGEpKX1yZXR1cm4gaT1lLmNoaWxkLG88YSYmKG89aS5tZW1vaXplZFByb3BzLChuPW51bGwhPT0obj1uLmNvbXBhcmUpP246ZW4pKG8scikmJmUucmVmPT09dC5yZWYpP1BhKGUsdCxhKToodC5lZmZlY3RUYWd8PTEsKGU9cXIoaSxyKSkucmVmPXQucmVmLGUucmV0dXJuPXQsdC5jaGlsZD1lKX1mdW5jdGlvbiBUYShlLHQsbixyLG8sYSl7cmV0dXJuIG51bGwhPT1lJiZlbihlLm1lbW9pemVkUHJvcHMscikmJmUucmVmPT09dC5yZWYmJih4YT0hMSxvPGEpP1BhKGUsdCxhKTpDYShlLHQsbixyLGEpfWZ1bmN0aW9uIEFhKGUsdCl7dmFyIG49dC5yZWY7KG51bGw9PT1lJiZudWxsIT09bnx8bnVsbCE9PWUmJmUucmVmIT09bikmJih0LmVmZmVjdFRhZ3w9MTI4KX1mdW5jdGlvbiBDYShlLHQsbixyLG8pe3ZhciBhPU1yKG4pP1JyOklyLmN1cnJlbnQ7cmV0dXJuIGE9UHIodCxhKSx6YSh0LG8pLG49Wm8oZSx0LG4scixhLG8pLG51bGw9PT1lfHx4YT8odC5lZmZlY3RUYWd8PTEsd2EoZSx0LG4sbyksdC5jaGlsZCk6KHQudXBkYXRlUXVldWU9ZS51cGRhdGVRdWV1ZSx0LmVmZmVjdFRhZyY9LTUxNyxlLmV4cGlyYXRpb25UaW1lPD1vJiYoZS5leHBpcmF0aW9uVGltZT0wKSxQYShlLHQsbykpfWZ1bmN0aW9uIE9hKGUsdCxuLHIsbyl7aWYoTXIobikpe3ZhciBhPSEwO2pyKHQpfWVsc2UgYT0hMTtpZih6YSh0LG8pLG51bGw9PT10LnN0YXRlTm9kZSludWxsIT09ZSYmKGUuYWx0ZXJuYXRlPW51bGwsdC5hbHRlcm5hdGU9bnVsbCx0LmVmZmVjdFRhZ3w9Miksc28odCxuLHIpLGNvKHQsbixyLG8pLHI9ITA7ZWxzZSBpZihudWxsPT09ZSl7dmFyIGk9dC5zdGF0ZU5vZGUsbD10Lm1lbW9pemVkUHJvcHM7aS5wcm9wcz1sO3ZhciBzPWkuY29udGV4dCx1PW4uY29udGV4dFR5cGU7XCJvYmplY3RcIj09dHlwZW9mIHUmJm51bGwhPT11P3U9SGEodSk6dT1Qcih0LHU9TXIobik/UnI6SXIuY3VycmVudCk7dmFyIGM9bi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsZD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlO2R8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGwhPT1yfHxzIT09dSkmJnVvKHQsaSxyLHUpLHFhPSExO3ZhciBwPXQubWVtb2l6ZWRTdGF0ZTtzPWkuc3RhdGU9cDt2YXIgZj10LnVwZGF0ZVF1ZXVlO251bGwhPT1mJiYobmkodCxmLHIsaSxvKSxzPXQubWVtb2l6ZWRTdGF0ZSksbCE9PXJ8fHAhPT1zfHxOci5jdXJyZW50fHxxYT8oXCJmdW5jdGlvblwiPT10eXBlb2YgYyYmKGFvKHQsbixjLHIpLHM9dC5tZW1vaXplZFN0YXRlKSwobD1xYXx8bG8odCxuLGwscixwLHMsdSkpPyhkfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuY29tcG9uZW50V2lsbE1vdW50fHwoXCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb21wb25lbnRXaWxsTW91bnQmJmkuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT10eXBlb2YgaS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZpLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSksXCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb21wb25lbnREaWRNb3VudCYmKHQuZWZmZWN0VGFnfD00KSk6KFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29tcG9uZW50RGlkTW91bnQmJih0LmVmZmVjdFRhZ3w9NCksdC5tZW1vaXplZFByb3BzPXIsdC5tZW1vaXplZFN0YXRlPXMpLGkucHJvcHM9cixpLnN0YXRlPXMsaS5jb250ZXh0PXUscj1sKTooXCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb21wb25lbnREaWRNb3VudCYmKHQuZWZmZWN0VGFnfD00KSxyPSExKX1lbHNlIGk9dC5zdGF0ZU5vZGUsbD10Lm1lbW9pemVkUHJvcHMsaS5wcm9wcz10LnR5cGU9PT10LmVsZW1lbnRUeXBlP2w6cm8odC50eXBlLGwpLHM9aS5jb250ZXh0LFwib2JqZWN0XCI9PXR5cGVvZih1PW4uY29udGV4dFR5cGUpJiZudWxsIT09dT91PUhhKHUpOnU9UHIodCx1PU1yKG4pP1JyOklyLmN1cnJlbnQpLChkPVwiZnVuY3Rpb25cIj09dHlwZW9mKGM9bi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXx8XCJmdW5jdGlvblwiIT10eXBlb2YgaS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT10eXBlb2YgaS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwobCE9PXJ8fHMhPT11KSYmdW8odCxpLHIsdSkscWE9ITEscz10Lm1lbW9pemVkU3RhdGUscD1pLnN0YXRlPXMsbnVsbCE9PShmPXQudXBkYXRlUXVldWUpJiYobmkodCxmLHIsaSxvKSxwPXQubWVtb2l6ZWRTdGF0ZSksbCE9PXJ8fHMhPT1wfHxOci5jdXJyZW50fHxxYT8oXCJmdW5jdGlvblwiPT10eXBlb2YgYyYmKGFvKHQsbixjLHIpLHA9dC5tZW1vaXplZFN0YXRlKSwoYz1xYXx8bG8odCxuLGwscixzLHAsdSkpPyhkfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLmNvbXBvbmVudFdpbGxVcGRhdGV8fChcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmNvbXBvbmVudFdpbGxVcGRhdGUmJmkuY29tcG9uZW50V2lsbFVwZGF0ZShyLHAsdSksXCJmdW5jdGlvblwiPT10eXBlb2YgaS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmaS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShyLHAsdSkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29tcG9uZW50RGlkVXBkYXRlJiYodC5lZmZlY3RUYWd8PTQpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJih0LmVmZmVjdFRhZ3w9MjU2KSk6KFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuY29tcG9uZW50RGlkVXBkYXRlfHxsPT09ZS5tZW1vaXplZFByb3BzJiZzPT09ZS5tZW1vaXplZFN0YXRlfHwodC5lZmZlY3RUYWd8PTQpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGw9PT1lLm1lbW9pemVkUHJvcHMmJnM9PT1lLm1lbW9pemVkU3RhdGV8fCh0LmVmZmVjdFRhZ3w9MjU2KSx0Lm1lbW9pemVkUHJvcHM9cix0Lm1lbW9pemVkU3RhdGU9cCksaS5wcm9wcz1yLGkuc3RhdGU9cCxpLmNvbnRleHQ9dSxyPWMpOihcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLmNvbXBvbmVudERpZFVwZGF0ZXx8bD09PWUubWVtb2l6ZWRQcm9wcyYmcz09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZWZmZWN0VGFnfD00KSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxsPT09ZS5tZW1vaXplZFByb3BzJiZzPT09ZS5tZW1vaXplZFN0YXRlfHwodC5lZmZlY3RUYWd8PTI1Nikscj0hMSk7cmV0dXJuIElhKGUsdCxuLHIsYSxvKX1mdW5jdGlvbiBJYShlLHQsbixyLG8sYSl7QWEoZSx0KTt2YXIgaT0wIT0oNjQmdC5lZmZlY3RUYWcpO2lmKCFyJiYhaSlyZXR1cm4gbyYmVXIodCxuLCExKSxQYShlLHQsYSk7cj10LnN0YXRlTm9kZSxFYS5jdXJyZW50PXQ7dmFyIGw9aSYmXCJmdW5jdGlvblwiIT10eXBlb2Ygbi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I/bnVsbDpyLnJlbmRlcigpO3JldHVybiB0LmVmZmVjdFRhZ3w9MSxudWxsIT09ZSYmaT8odC5jaGlsZD1obyh0LGUuY2hpbGQsbnVsbCxhKSx0LmNoaWxkPWhvKHQsbnVsbCxsLGEpKTp3YShlLHQsbCxhKSx0Lm1lbW9pemVkU3RhdGU9ci5zdGF0ZSxvJiZVcih0LG4sITApLHQuY2hpbGR9ZnVuY3Rpb24gTmEoZSl7dmFyIHQ9ZS5zdGF0ZU5vZGU7dC5wZW5kaW5nQ29udGV4dD9GcigwLHQucGVuZGluZ0NvbnRleHQsdC5wZW5kaW5nQ29udGV4dCE9PXQuY29udGV4dCk6dC5jb250ZXh0JiZGcigwLHQuY29udGV4dCwhMSksd28oZSx0LmNvbnRhaW5lckluZm8pfWZ1bmN0aW9uIFJhKGUsdCxuKXt2YXIgcj10Lm1vZGUsbz10LnBlbmRpbmdQcm9wcyxhPXQubWVtb2l6ZWRTdGF0ZTtpZigwPT0oNjQmdC5lZmZlY3RUYWcpKXthPW51bGw7dmFyIGk9ITF9ZWxzZSBhPXt0aW1lZE91dEF0Om51bGwhPT1hP2EudGltZWRPdXRBdDowfSxpPSEwLHQuZWZmZWN0VGFnJj0tNjU7aWYobnVsbD09PWUpaWYoaSl7dmFyIGw9by5mYWxsYmFjaztlPVlyKG51bGwsciwwLG51bGwpLDA9PSgxJnQubW9kZSkmJihlLmNoaWxkPW51bGwhPT10Lm1lbW9pemVkU3RhdGU/dC5jaGlsZC5jaGlsZDp0LmNoaWxkKSxyPVlyKGwscixuLG51bGwpLGUuc2libGluZz1yLChuPWUpLnJldHVybj1yLnJldHVybj10fWVsc2Ugbj1yPWJvKHQsbnVsbCxvLmNoaWxkcmVuLG4pO2Vsc2UgbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZT8obD0ocj1lLmNoaWxkKS5zaWJsaW5nLGk/KG49by5mYWxsYmFjayxvPXFyKHIsci5wZW5kaW5nUHJvcHMpLDA9PSgxJnQubW9kZSkmJigoaT1udWxsIT09dC5tZW1vaXplZFN0YXRlP3QuY2hpbGQuY2hpbGQ6dC5jaGlsZCkhPT1yLmNoaWxkJiYoby5jaGlsZD1pKSkscj1vLnNpYmxpbmc9cXIobCxuLGwuZXhwaXJhdGlvblRpbWUpLG49byxvLmNoaWxkRXhwaXJhdGlvblRpbWU9MCxuLnJldHVybj1yLnJldHVybj10KTpuPXI9aG8odCxyLmNoaWxkLG8uY2hpbGRyZW4sbikpOihsPWUuY2hpbGQsaT8oaT1vLmZhbGxiYWNrLChvPVlyKG51bGwsciwwLG51bGwpKS5jaGlsZD1sLDA9PSgxJnQubW9kZSkmJihvLmNoaWxkPW51bGwhPT10Lm1lbW9pemVkU3RhdGU/dC5jaGlsZC5jaGlsZDp0LmNoaWxkKSwocj1vLnNpYmxpbmc9WXIoaSxyLG4sbnVsbCkpLmVmZmVjdFRhZ3w9MixuPW8sby5jaGlsZEV4cGlyYXRpb25UaW1lPTAsbi5yZXR1cm49ci5yZXR1cm49dCk6cj1uPWhvKHQsbCxvLmNoaWxkcmVuLG4pKSx0LnN0YXRlTm9kZT1lLnN0YXRlTm9kZTtyZXR1cm4gdC5tZW1vaXplZFN0YXRlPWEsdC5jaGlsZD1uLHJ9ZnVuY3Rpb24gUGEoZSx0LG4pe2lmKG51bGwhPT1lJiYodC5jb250ZXh0RGVwZW5kZW5jaWVzPWUuY29udGV4dERlcGVuZGVuY2llcyksdC5jaGlsZEV4cGlyYXRpb25UaW1lPG4pcmV0dXJuIG51bGw7aWYobnVsbCE9PWUmJnQuY2hpbGQhPT1lLmNoaWxkJiZpKFwiMTUzXCIpLG51bGwhPT10LmNoaWxkKXtmb3Iobj1xcihlPXQuY2hpbGQsZS5wZW5kaW5nUHJvcHMsZS5leHBpcmF0aW9uVGltZSksdC5jaGlsZD1uLG4ucmV0dXJuPXQ7bnVsbCE9PWUuc2libGluZzspZT1lLnNpYmxpbmcsKG49bi5zaWJsaW5nPXFyKGUsZS5wZW5kaW5nUHJvcHMsZS5leHBpcmF0aW9uVGltZSkpLnJldHVybj10O24uc2libGluZz1udWxsfXJldHVybiB0LmNoaWxkfWZ1bmN0aW9uIE1hKGUsdCxuKXt2YXIgcj10LmV4cGlyYXRpb25UaW1lO2lmKG51bGwhPT1lKXtpZihlLm1lbW9pemVkUHJvcHMhPT10LnBlbmRpbmdQcm9wc3x8TnIuY3VycmVudCl4YT0hMDtlbHNlIGlmKHI8bil7c3dpdGNoKHhhPSExLHQudGFnKXtjYXNlIDM6TmEodCksU2EoKTticmVhaztjYXNlIDU6X28odCk7YnJlYWs7Y2FzZSAxOk1yKHQudHlwZSkmJmpyKHQpO2JyZWFrO2Nhc2UgNDp3byh0LHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6amEodCx0Lm1lbW9pemVkUHJvcHMudmFsdWUpO2JyZWFrO2Nhc2UgMTM6aWYobnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSlyZXR1cm4gMCE9PShyPXQuY2hpbGQuY2hpbGRFeHBpcmF0aW9uVGltZSkmJnI+PW4/UmEoZSx0LG4pOm51bGwhPT0odD1QYShlLHQsbikpP3Quc2libGluZzpudWxsfXJldHVybiBQYShlLHQsbil9fWVsc2UgeGE9ITE7c3dpdGNoKHQuZXhwaXJhdGlvblRpbWU9MCx0LnRhZyl7Y2FzZSAyOnI9dC5lbGVtZW50VHlwZSxudWxsIT09ZSYmKGUuYWx0ZXJuYXRlPW51bGwsdC5hbHRlcm5hdGU9bnVsbCx0LmVmZmVjdFRhZ3w9MiksZT10LnBlbmRpbmdQcm9wczt2YXIgbz1Qcih0LElyLmN1cnJlbnQpO2lmKHphKHQsbiksbz1abyhudWxsLHQscixlLG8sbiksdC5lZmZlY3RUYWd8PTEsXCJvYmplY3RcIj09dHlwZW9mIG8mJm51bGwhPT1vJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBvLnJlbmRlciYmdm9pZCAwPT09by4kJHR5cGVvZil7aWYodC50YWc9MSxRbygpLE1yKHIpKXt2YXIgYT0hMDtqcih0KX1lbHNlIGE9ITE7dC5tZW1vaXplZFN0YXRlPW51bGwhPT1vLnN0YXRlJiZ2b2lkIDAhPT1vLnN0YXRlP28uc3RhdGU6bnVsbDt2YXIgbD1yLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcImZ1bmN0aW9uXCI9PXR5cGVvZiBsJiZhbyh0LHIsbCxlKSxvLnVwZGF0ZXI9aW8sdC5zdGF0ZU5vZGU9byxvLl9yZWFjdEludGVybmFsRmliZXI9dCxjbyh0LHIsZSxuKSx0PUlhKG51bGwsdCxyLCEwLGEsbil9ZWxzZSB0LnRhZz0wLHdhKG51bGwsdCxvLG4pLHQ9dC5jaGlsZDtyZXR1cm4gdDtjYXNlIDE2OnN3aXRjaChvPXQuZWxlbWVudFR5cGUsbnVsbCE9PWUmJihlLmFsdGVybmF0ZT1udWxsLHQuYWx0ZXJuYXRlPW51bGwsdC5lZmZlY3RUYWd8PTIpLGE9dC5wZW5kaW5nUHJvcHMsZT1mdW5jdGlvbihlKXt2YXIgdD1lLl9yZXN1bHQ7c3dpdGNoKGUuX3N0YXR1cyl7Y2FzZSAxOnJldHVybiB0O2Nhc2UgMjpjYXNlIDA6dGhyb3cgdDtkZWZhdWx0OnN3aXRjaChlLl9zdGF0dXM9MCwodD0odD1lLl9jdG9yKSgpKS50aGVuKGZ1bmN0aW9uKHQpezA9PT1lLl9zdGF0dXMmJih0PXQuZGVmYXVsdCxlLl9zdGF0dXM9MSxlLl9yZXN1bHQ9dCl9LGZ1bmN0aW9uKHQpezA9PT1lLl9zdGF0dXMmJihlLl9zdGF0dXM9MixlLl9yZXN1bHQ9dCl9KSxlLl9zdGF0dXMpe2Nhc2UgMTpyZXR1cm4gZS5fcmVzdWx0O2Nhc2UgMjp0aHJvdyBlLl9yZXN1bHR9dGhyb3cgZS5fcmVzdWx0PXQsdH19KG8pLHQudHlwZT1lLG89dC50YWc9ZnVuY3Rpb24oZSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSlyZXR1cm4gJHIoZSk/MTowO2lmKG51bGwhPWUpe2lmKChlPWUuJCR0eXBlb2YpPT09dHQpcmV0dXJuIDExO2lmKGU9PT1ydClyZXR1cm4gMTR9cmV0dXJuIDJ9KGUpLGE9cm8oZSxhKSxsPXZvaWQgMCxvKXtjYXNlIDA6bD1DYShudWxsLHQsZSxhLG4pO2JyZWFrO2Nhc2UgMTpsPU9hKG51bGwsdCxlLGEsbik7YnJlYWs7Y2FzZSAxMTpsPWthKG51bGwsdCxlLGEsbik7YnJlYWs7Y2FzZSAxNDpsPV9hKG51bGwsdCxlLHJvKGUudHlwZSxhKSxyLG4pO2JyZWFrO2RlZmF1bHQ6aShcIjMwNlwiLGUsXCJcIil9cmV0dXJuIGw7Y2FzZSAwOnJldHVybiByPXQudHlwZSxvPXQucGVuZGluZ1Byb3BzLENhKGUsdCxyLG89dC5lbGVtZW50VHlwZT09PXI/bzpybyhyLG8pLG4pO2Nhc2UgMTpyZXR1cm4gcj10LnR5cGUsbz10LnBlbmRpbmdQcm9wcyxPYShlLHQscixvPXQuZWxlbWVudFR5cGU9PT1yP286cm8ocixvKSxuKTtjYXNlIDM6cmV0dXJuIE5hKHQpLG51bGw9PT0ocj10LnVwZGF0ZVF1ZXVlKSYmaShcIjI4MlwiKSxvPW51bGwhPT0obz10Lm1lbW9pemVkU3RhdGUpP28uZWxlbWVudDpudWxsLG5pKHQscix0LnBlbmRpbmdQcm9wcyxudWxsLG4pLChyPXQubWVtb2l6ZWRTdGF0ZS5lbGVtZW50KT09PW8/KFNhKCksdD1QYShlLHQsbikpOihvPXQuc3RhdGVOb2RlLChvPShudWxsPT09ZXx8bnVsbD09PWUuY2hpbGQpJiZvLmh5ZHJhdGUpJiYoZmE9a3IodC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbykscGE9dCxvPW1hPSEwKSxvPyh0LmVmZmVjdFRhZ3w9Mix0LmNoaWxkPWJvKHQsbnVsbCxyLG4pKTood2EoZSx0LHIsbiksU2EoKSksdD10LmNoaWxkKSx0O2Nhc2UgNTpyZXR1cm4gX28odCksbnVsbD09PWUmJmJhKHQpLHI9dC50eXBlLG89dC5wZW5kaW5nUHJvcHMsYT1udWxsIT09ZT9lLm1lbW9pemVkUHJvcHM6bnVsbCxsPW8uY2hpbGRyZW4seXIocixvKT9sPW51bGw6bnVsbCE9PWEmJnlyKHIsYSkmJih0LmVmZmVjdFRhZ3w9MTYpLEFhKGUsdCksMSE9PW4mJjEmdC5tb2RlJiZvLmhpZGRlbj8odC5leHBpcmF0aW9uVGltZT10LmNoaWxkRXhwaXJhdGlvblRpbWU9MSx0PW51bGwpOih3YShlLHQsbCxuKSx0PXQuY2hpbGQpLHQ7Y2FzZSA2OnJldHVybiBudWxsPT09ZSYmYmEodCksbnVsbDtjYXNlIDEzOnJldHVybiBSYShlLHQsbik7Y2FzZSA0OnJldHVybiB3byh0LHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLHI9dC5wZW5kaW5nUHJvcHMsbnVsbD09PWU/dC5jaGlsZD1obyh0LG51bGwscixuKTp3YShlLHQscixuKSx0LmNoaWxkO2Nhc2UgMTE6cmV0dXJuIHI9dC50eXBlLG89dC5wZW5kaW5nUHJvcHMsa2EoZSx0LHIsbz10LmVsZW1lbnRUeXBlPT09cj9vOnJvKHIsbyksbik7Y2FzZSA3OnJldHVybiB3YShlLHQsdC5wZW5kaW5nUHJvcHMsbiksdC5jaGlsZDtjYXNlIDg6Y2FzZSAxMjpyZXR1cm4gd2EoZSx0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuLG4pLHQuY2hpbGQ7Y2FzZSAxMDplOntpZihyPXQudHlwZS5fY29udGV4dCxvPXQucGVuZGluZ1Byb3BzLGw9dC5tZW1vaXplZFByb3BzLGphKHQsYT1vLnZhbHVlKSxudWxsIT09bCl7dmFyIHM9bC52YWx1ZTtpZigwPT09KGE9UXQocyxhKT8wOjB8KFwiZnVuY3Rpb25cIj09dHlwZW9mIHIuX2NhbGN1bGF0ZUNoYW5nZWRCaXRzP3IuX2NhbGN1bGF0ZUNoYW5nZWRCaXRzKHMsYSk6MTA3Mzc0MTgyMykpKXtpZihsLmNoaWxkcmVuPT09by5jaGlsZHJlbiYmIU5yLmN1cnJlbnQpe3Q9UGEoZSx0LG4pO2JyZWFrIGV9fWVsc2UgZm9yKG51bGwhPT0ocz10LmNoaWxkKSYmKHMucmV0dXJuPXQpO251bGwhPT1zOyl7dmFyIHU9cy5jb250ZXh0RGVwZW5kZW5jaWVzO2lmKG51bGwhPT11KXtsPXMuY2hpbGQ7Zm9yKHZhciBjPXUuZmlyc3Q7bnVsbCE9PWM7KXtpZihjLmNvbnRleHQ9PT1yJiYwIT0oYy5vYnNlcnZlZEJpdHMmYSkpezE9PT1zLnRhZyYmKChjPVhhKG4pKS50YWc9VmEsUWEocyxjKSkscy5leHBpcmF0aW9uVGltZTxuJiYocy5leHBpcmF0aW9uVGltZT1uKSxudWxsIT09KGM9cy5hbHRlcm5hdGUpJiZjLmV4cGlyYXRpb25UaW1lPG4mJihjLmV4cGlyYXRpb25UaW1lPW4pLGM9bjtmb3IodmFyIGQ9cy5yZXR1cm47bnVsbCE9PWQ7KXt2YXIgcD1kLmFsdGVybmF0ZTtpZihkLmNoaWxkRXhwaXJhdGlvblRpbWU8YylkLmNoaWxkRXhwaXJhdGlvblRpbWU9YyxudWxsIT09cCYmcC5jaGlsZEV4cGlyYXRpb25UaW1lPGMmJihwLmNoaWxkRXhwaXJhdGlvblRpbWU9Yyk7ZWxzZXtpZighKG51bGwhPT1wJiZwLmNoaWxkRXhwaXJhdGlvblRpbWU8YykpYnJlYWs7cC5jaGlsZEV4cGlyYXRpb25UaW1lPWN9ZD1kLnJldHVybn11LmV4cGlyYXRpb25UaW1lPG4mJih1LmV4cGlyYXRpb25UaW1lPW4pO2JyZWFrfWM9Yy5uZXh0fX1lbHNlIGw9MTA9PT1zLnRhZyYmcy50eXBlPT09dC50eXBlP251bGw6cy5jaGlsZDtpZihudWxsIT09bClsLnJldHVybj1zO2Vsc2UgZm9yKGw9cztudWxsIT09bDspe2lmKGw9PT10KXtsPW51bGw7YnJlYWt9aWYobnVsbCE9PShzPWwuc2libGluZykpe3MucmV0dXJuPWwucmV0dXJuLGw9czticmVha31sPWwucmV0dXJufXM9bH19d2EoZSx0LG8uY2hpbGRyZW4sbiksdD10LmNoaWxkfXJldHVybiB0O2Nhc2UgOTpyZXR1cm4gbz10LnR5cGUscj0oYT10LnBlbmRpbmdQcm9wcykuY2hpbGRyZW4semEodCxuKSxyPXIobz1IYShvLGEudW5zdGFibGVfb2JzZXJ2ZWRCaXRzKSksdC5lZmZlY3RUYWd8PTEsd2EoZSx0LHIsbiksdC5jaGlsZDtjYXNlIDE0OnJldHVybiBhPXJvKG89dC50eXBlLHQucGVuZGluZ1Byb3BzKSxfYShlLHQsbyxhPXJvKG8udHlwZSxhKSxyLG4pO2Nhc2UgMTU6cmV0dXJuIFRhKGUsdCx0LnR5cGUsdC5wZW5kaW5nUHJvcHMscixuKTtjYXNlIDE3OnJldHVybiByPXQudHlwZSxvPXQucGVuZGluZ1Byb3BzLG89dC5lbGVtZW50VHlwZT09PXI/bzpybyhyLG8pLG51bGwhPT1lJiYoZS5hbHRlcm5hdGU9bnVsbCx0LmFsdGVybmF0ZT1udWxsLHQuZWZmZWN0VGFnfD0yKSx0LnRhZz0xLE1yKHIpPyhlPSEwLGpyKHQpKTplPSExLHphKHQsbiksc28odCxyLG8pLGNvKHQscixvLG4pLElhKG51bGwsdCxyLCEwLGUsbil9aShcIjE1NlwiKX12YXIgTGE9e2N1cnJlbnQ6bnVsbH0sRGE9bnVsbCxGYT1udWxsLEJhPW51bGw7ZnVuY3Rpb24gamEoZSx0KXt2YXIgbj1lLnR5cGUuX2NvbnRleHQ7Q3IoTGEsbi5fY3VycmVudFZhbHVlKSxuLl9jdXJyZW50VmFsdWU9dH1mdW5jdGlvbiBVYShlKXt2YXIgdD1MYS5jdXJyZW50O0FyKExhKSxlLnR5cGUuX2NvbnRleHQuX2N1cnJlbnRWYWx1ZT10fWZ1bmN0aW9uIHphKGUsdCl7RGE9ZSxCYT1GYT1udWxsO3ZhciBuPWUuY29udGV4dERlcGVuZGVuY2llcztudWxsIT09biYmbi5leHBpcmF0aW9uVGltZT49dCYmKHhhPSEwKSxlLmNvbnRleHREZXBlbmRlbmNpZXM9bnVsbH1mdW5jdGlvbiBIYShlLHQpe3JldHVybiBCYSE9PWUmJiExIT09dCYmMCE9PXQmJihcIm51bWJlclwiPT10eXBlb2YgdCYmMTA3Mzc0MTgyMyE9PXR8fChCYT1lLHQ9MTA3Mzc0MTgyMyksdD17Y29udGV4dDplLG9ic2VydmVkQml0czp0LG5leHQ6bnVsbH0sbnVsbD09PUZhPyhudWxsPT09RGEmJmkoXCIzMDhcIiksRmE9dCxEYS5jb250ZXh0RGVwZW5kZW5jaWVzPXtmaXJzdDp0LGV4cGlyYXRpb25UaW1lOjB9KTpGYT1GYS5uZXh0PXQpLGUuX2N1cnJlbnRWYWx1ZX12YXIgV2E9MCxHYT0xLFZhPTIsJGE9MyxxYT0hMTtmdW5jdGlvbiBLYShlKXtyZXR1cm57YmFzZVN0YXRlOmUsZmlyc3RVcGRhdGU6bnVsbCxsYXN0VXBkYXRlOm51bGwsZmlyc3RDYXB0dXJlZFVwZGF0ZTpudWxsLGxhc3RDYXB0dXJlZFVwZGF0ZTpudWxsLGZpcnN0RWZmZWN0Om51bGwsbGFzdEVmZmVjdDpudWxsLGZpcnN0Q2FwdHVyZWRFZmZlY3Q6bnVsbCxsYXN0Q2FwdHVyZWRFZmZlY3Q6bnVsbH19ZnVuY3Rpb24gWWEoZSl7cmV0dXJue2Jhc2VTdGF0ZTplLmJhc2VTdGF0ZSxmaXJzdFVwZGF0ZTplLmZpcnN0VXBkYXRlLGxhc3RVcGRhdGU6ZS5sYXN0VXBkYXRlLGZpcnN0Q2FwdHVyZWRVcGRhdGU6bnVsbCxsYXN0Q2FwdHVyZWRVcGRhdGU6bnVsbCxmaXJzdEVmZmVjdDpudWxsLGxhc3RFZmZlY3Q6bnVsbCxmaXJzdENhcHR1cmVkRWZmZWN0Om51bGwsbGFzdENhcHR1cmVkRWZmZWN0Om51bGx9fWZ1bmN0aW9uIFhhKGUpe3JldHVybntleHBpcmF0aW9uVGltZTplLHRhZzpXYSxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGwsbmV4dEVmZmVjdDpudWxsfX1mdW5jdGlvbiBaYShlLHQpe251bGw9PT1lLmxhc3RVcGRhdGU/ZS5maXJzdFVwZGF0ZT1lLmxhc3RVcGRhdGU9dDooZS5sYXN0VXBkYXRlLm5leHQ9dCxlLmxhc3RVcGRhdGU9dCl9ZnVuY3Rpb24gUWEoZSx0KXt2YXIgbj1lLmFsdGVybmF0ZTtpZihudWxsPT09bil7dmFyIHI9ZS51cGRhdGVRdWV1ZSxvPW51bGw7bnVsbD09PXImJihyPWUudXBkYXRlUXVldWU9S2EoZS5tZW1vaXplZFN0YXRlKSl9ZWxzZSByPWUudXBkYXRlUXVldWUsbz1uLnVwZGF0ZVF1ZXVlLG51bGw9PT1yP251bGw9PT1vPyhyPWUudXBkYXRlUXVldWU9S2EoZS5tZW1vaXplZFN0YXRlKSxvPW4udXBkYXRlUXVldWU9S2Eobi5tZW1vaXplZFN0YXRlKSk6cj1lLnVwZGF0ZVF1ZXVlPVlhKG8pOm51bGw9PT1vJiYobz1uLnVwZGF0ZVF1ZXVlPVlhKHIpKTtudWxsPT09b3x8cj09PW8/WmEocix0KTpudWxsPT09ci5sYXN0VXBkYXRlfHxudWxsPT09by5sYXN0VXBkYXRlPyhaYShyLHQpLFphKG8sdCkpOihaYShyLHQpLG8ubGFzdFVwZGF0ZT10KX1mdW5jdGlvbiBKYShlLHQpe3ZhciBuPWUudXBkYXRlUXVldWU7bnVsbD09PShuPW51bGw9PT1uP2UudXBkYXRlUXVldWU9S2EoZS5tZW1vaXplZFN0YXRlKTplaShlLG4pKS5sYXN0Q2FwdHVyZWRVcGRhdGU/bi5maXJzdENhcHR1cmVkVXBkYXRlPW4ubGFzdENhcHR1cmVkVXBkYXRlPXQ6KG4ubGFzdENhcHR1cmVkVXBkYXRlLm5leHQ9dCxuLmxhc3RDYXB0dXJlZFVwZGF0ZT10KX1mdW5jdGlvbiBlaShlLHQpe3ZhciBuPWUuYWx0ZXJuYXRlO3JldHVybiBudWxsIT09biYmdD09PW4udXBkYXRlUXVldWUmJih0PWUudXBkYXRlUXVldWU9WWEodCkpLHR9ZnVuY3Rpb24gdGkoZSx0LG4scixhLGkpe3N3aXRjaChuLnRhZyl7Y2FzZSBHYTpyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZihlPW4ucGF5bG9hZCk/ZS5jYWxsKGkscixhKTplO2Nhc2UgJGE6ZS5lZmZlY3RUYWc9LTIwNDkmZS5lZmZlY3RUYWd8NjQ7Y2FzZSBXYTppZihudWxsPT0oYT1cImZ1bmN0aW9uXCI9PXR5cGVvZihlPW4ucGF5bG9hZCk/ZS5jYWxsKGkscixhKTplKSlicmVhaztyZXR1cm4gbyh7fSxyLGEpO2Nhc2UgVmE6cWE9ITB9cmV0dXJuIHJ9ZnVuY3Rpb24gbmkoZSx0LG4scixvKXtxYT0hMTtmb3IodmFyIGE9KHQ9ZWkoZSx0KSkuYmFzZVN0YXRlLGk9bnVsbCxsPTAscz10LmZpcnN0VXBkYXRlLHU9YTtudWxsIT09czspe3ZhciBjPXMuZXhwaXJhdGlvblRpbWU7YzxvPyhudWxsPT09aSYmKGk9cyxhPXUpLGw8YyYmKGw9YykpOih1PXRpKGUsMCxzLHUsbixyKSxudWxsIT09cy5jYWxsYmFjayYmKGUuZWZmZWN0VGFnfD0zMixzLm5leHRFZmZlY3Q9bnVsbCxudWxsPT09dC5sYXN0RWZmZWN0P3QuZmlyc3RFZmZlY3Q9dC5sYXN0RWZmZWN0PXM6KHQubGFzdEVmZmVjdC5uZXh0RWZmZWN0PXMsdC5sYXN0RWZmZWN0PXMpKSkscz1zLm5leHR9Zm9yKGM9bnVsbCxzPXQuZmlyc3RDYXB0dXJlZFVwZGF0ZTtudWxsIT09czspe3ZhciBkPXMuZXhwaXJhdGlvblRpbWU7ZDxvPyhudWxsPT09YyYmKGM9cyxudWxsPT09aSYmKGE9dSkpLGw8ZCYmKGw9ZCkpOih1PXRpKGUsMCxzLHUsbixyKSxudWxsIT09cy5jYWxsYmFjayYmKGUuZWZmZWN0VGFnfD0zMixzLm5leHRFZmZlY3Q9bnVsbCxudWxsPT09dC5sYXN0Q2FwdHVyZWRFZmZlY3Q/dC5maXJzdENhcHR1cmVkRWZmZWN0PXQubGFzdENhcHR1cmVkRWZmZWN0PXM6KHQubGFzdENhcHR1cmVkRWZmZWN0Lm5leHRFZmZlY3Q9cyx0Lmxhc3RDYXB0dXJlZEVmZmVjdD1zKSkpLHM9cy5uZXh0fW51bGw9PT1pJiYodC5sYXN0VXBkYXRlPW51bGwpLG51bGw9PT1jP3QubGFzdENhcHR1cmVkVXBkYXRlPW51bGw6ZS5lZmZlY3RUYWd8PTMyLG51bGw9PT1pJiZudWxsPT09YyYmKGE9dSksdC5iYXNlU3RhdGU9YSx0LmZpcnN0VXBkYXRlPWksdC5maXJzdENhcHR1cmVkVXBkYXRlPWMsZS5leHBpcmF0aW9uVGltZT1sLGUubWVtb2l6ZWRTdGF0ZT11fWZ1bmN0aW9uIHJpKGUsdCxuKXtudWxsIT09dC5maXJzdENhcHR1cmVkVXBkYXRlJiYobnVsbCE9PXQubGFzdFVwZGF0ZSYmKHQubGFzdFVwZGF0ZS5uZXh0PXQuZmlyc3RDYXB0dXJlZFVwZGF0ZSx0Lmxhc3RVcGRhdGU9dC5sYXN0Q2FwdHVyZWRVcGRhdGUpLHQuZmlyc3RDYXB0dXJlZFVwZGF0ZT10Lmxhc3RDYXB0dXJlZFVwZGF0ZT1udWxsKSxvaSh0LmZpcnN0RWZmZWN0LG4pLHQuZmlyc3RFZmZlY3Q9dC5sYXN0RWZmZWN0PW51bGwsb2kodC5maXJzdENhcHR1cmVkRWZmZWN0LG4pLHQuZmlyc3RDYXB0dXJlZEVmZmVjdD10Lmxhc3RDYXB0dXJlZEVmZmVjdD1udWxsfWZ1bmN0aW9uIG9pKGUsdCl7Zm9yKDtudWxsIT09ZTspe3ZhciBuPWUuY2FsbGJhY2s7aWYobnVsbCE9PW4pe2UuY2FsbGJhY2s9bnVsbDt2YXIgcj10O1wiZnVuY3Rpb25cIiE9dHlwZW9mIG4mJmkoXCIxOTFcIixuKSxuLmNhbGwocil9ZT1lLm5leHRFZmZlY3R9fWZ1bmN0aW9uIGFpKGUsdCl7cmV0dXJue3ZhbHVlOmUsc291cmNlOnQsc3RhY2s6c3QodCl9fWZ1bmN0aW9uIGlpKGUpe2UuZWZmZWN0VGFnfD00fXZhciBsaT12b2lkIDAsc2k9dm9pZCAwLHVpPXZvaWQgMCxjaT12b2lkIDA7bGk9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dC5jaGlsZDtudWxsIT09bjspe2lmKDU9PT1uLnRhZ3x8Nj09PW4udGFnKWUuYXBwZW5kQ2hpbGQobi5zdGF0ZU5vZGUpO2Vsc2UgaWYoNCE9PW4udGFnJiZudWxsIT09bi5jaGlsZCl7bi5jaGlsZC5yZXR1cm49bixuPW4uY2hpbGQ7Y29udGludWV9aWYobj09PXQpYnJlYWs7Zm9yKDtudWxsPT09bi5zaWJsaW5nOyl7aWYobnVsbD09PW4ucmV0dXJufHxuLnJldHVybj09PXQpcmV0dXJuO249bi5yZXR1cm59bi5zaWJsaW5nLnJldHVybj1uLnJldHVybixuPW4uc2libGluZ319LHNpPWZ1bmN0aW9uKCl7fSx1aT1mdW5jdGlvbihlLHQsbixyLGEpe3ZhciBpPWUubWVtb2l6ZWRQcm9wcztpZihpIT09cil7dmFyIGw9dC5zdGF0ZU5vZGU7c3dpdGNoKHhvKHZvLmN1cnJlbnQpLGU9bnVsbCxuKXtjYXNlXCJpbnB1dFwiOmk9dnQobCxpKSxyPXZ0KGwsciksZT1bXTticmVhaztjYXNlXCJvcHRpb25cIjppPXFuKGwsaSkscj1xbihsLHIpLGU9W107YnJlYWs7Y2FzZVwic2VsZWN0XCI6aT1vKHt9LGkse3ZhbHVlOnZvaWQgMH0pLHI9byh7fSxyLHt2YWx1ZTp2b2lkIDB9KSxlPVtdO2JyZWFrO2Nhc2VcInRleHRhcmVhXCI6aT1ZbihsLGkpLHI9WW4obCxyKSxlPVtdO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiIT10eXBlb2YgaS5vbkNsaWNrJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLm9uQ2xpY2smJihsLm9uY2xpY2s9bXIpfWRyKG4sciksbD1uPXZvaWQgMDt2YXIgcz1udWxsO2ZvcihuIGluIGkpaWYoIXIuaGFzT3duUHJvcGVydHkobikmJmkuaGFzT3duUHJvcGVydHkobikmJm51bGwhPWlbbl0paWYoXCJzdHlsZVwiPT09bil7dmFyIHU9aVtuXTtmb3IobCBpbiB1KXUuaGFzT3duUHJvcGVydHkobCkmJihzfHwocz17fSksc1tsXT1cIlwiKX1lbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiIT09biYmXCJjaGlsZHJlblwiIT09biYmXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PW4mJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1uJiZcImF1dG9Gb2N1c1wiIT09biYmKHYuaGFzT3duUHJvcGVydHkobik/ZXx8KGU9W10pOihlPWV8fFtdKS5wdXNoKG4sbnVsbCkpO2ZvcihuIGluIHIpe3ZhciBjPXJbbl07aWYodT1udWxsIT1pP2lbbl06dm9pZCAwLHIuaGFzT3duUHJvcGVydHkobikmJmMhPT11JiYobnVsbCE9Y3x8bnVsbCE9dSkpaWYoXCJzdHlsZVwiPT09bilpZih1KXtmb3IobCBpbiB1KSF1Lmhhc093blByb3BlcnR5KGwpfHxjJiZjLmhhc093blByb3BlcnR5KGwpfHwoc3x8KHM9e30pLHNbbF09XCJcIik7Zm9yKGwgaW4gYyljLmhhc093blByb3BlcnR5KGwpJiZ1W2xdIT09Y1tsXSYmKHN8fChzPXt9KSxzW2xdPWNbbF0pfWVsc2Ugc3x8KGV8fChlPVtdKSxlLnB1c2gobixzKSkscz1jO2Vsc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1uPyhjPWM/Yy5fX2h0bWw6dm9pZCAwLHU9dT91Ll9faHRtbDp2b2lkIDAsbnVsbCE9YyYmdSE9PWMmJihlPWV8fFtdKS5wdXNoKG4sXCJcIitjKSk6XCJjaGlsZHJlblwiPT09bj91PT09Y3x8XCJzdHJpbmdcIiE9dHlwZW9mIGMmJlwibnVtYmVyXCIhPXR5cGVvZiBjfHwoZT1lfHxbXSkucHVzaChuLFwiXCIrYyk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PW4mJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1uJiYodi5oYXNPd25Qcm9wZXJ0eShuKT8obnVsbCE9YyYmZnIoYSxuKSxlfHx1PT09Y3x8KGU9W10pKTooZT1lfHxbXSkucHVzaChuLGMpKX1zJiYoZT1lfHxbXSkucHVzaChcInN0eWxlXCIscyksYT1lLCh0LnVwZGF0ZVF1ZXVlPWEpJiZpaSh0KX19LGNpPWZ1bmN0aW9uKGUsdCxuLHIpe24hPT1yJiZpaSh0KX07dmFyIGRpPVwiZnVuY3Rpb25cIj09dHlwZW9mIFdlYWtTZXQ/V2Vha1NldDpTZXQ7ZnVuY3Rpb24gcGkoZSx0KXt2YXIgbj10LnNvdXJjZSxyPXQuc3RhY2s7bnVsbD09PXImJm51bGwhPT1uJiYocj1zdChuKSksbnVsbCE9PW4mJmx0KG4udHlwZSksdD10LnZhbHVlLG51bGwhPT1lJiYxPT09ZS50YWcmJmx0KGUudHlwZSk7dHJ5e2NvbnNvbGUuZXJyb3IodCl9Y2F0Y2goZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGV9KX19ZnVuY3Rpb24gZmkoZSl7dmFyIHQ9ZS5yZWY7aWYobnVsbCE9PXQpaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdCl0cnl7dChudWxsKX1jYXRjaCh0KXtLaShlLHQpfWVsc2UgdC5jdXJyZW50PW51bGx9ZnVuY3Rpb24gbWkoZSx0LG4pe2lmKG51bGwhPT0obj1udWxsIT09KG49bi51cGRhdGVRdWV1ZSk/bi5sYXN0RWZmZWN0Om51bGwpKXt2YXIgcj1uPW4ubmV4dDtkb3tpZigoci50YWcmZSkhPT1Bbyl7dmFyIG89ci5kZXN0cm95O3IuZGVzdHJveT12b2lkIDAsdm9pZCAwIT09byYmbygpfShyLnRhZyZ0KSE9PUFvJiYobz1yLmNyZWF0ZSxyLmRlc3Ryb3k9bygpKSxyPXIubmV4dH13aGlsZShyIT09bil9fWZ1bmN0aW9uIGdpKGUpe3N3aXRjaChcImZ1bmN0aW9uXCI9PXR5cGVvZiBIciYmSHIoZSksZS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTp2YXIgdD1lLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT10JiZudWxsIT09KHQ9dC5sYXN0RWZmZWN0KSl7dmFyIG49dD10Lm5leHQ7ZG97dmFyIHI9bi5kZXN0cm95O2lmKHZvaWQgMCE9PXIpe3ZhciBvPWU7dHJ5e3IoKX1jYXRjaChlKXtLaShvLGUpfX1uPW4ubmV4dH13aGlsZShuIT09dCl9YnJlYWs7Y2FzZSAxOmlmKGZpKGUpLFwiZnVuY3Rpb25cIj09dHlwZW9mKHQ9ZS5zdGF0ZU5vZGUpLmNvbXBvbmVudFdpbGxVbm1vdW50KXRyeXt0LnByb3BzPWUubWVtb2l6ZWRQcm9wcyx0LnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSx0LmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2godCl7S2koZSx0KX1icmVhaztjYXNlIDU6ZmkoZSk7YnJlYWs7Y2FzZSA0OnlpKGUpfX1mdW5jdGlvbiBoaShlKXtyZXR1cm4gNT09PWUudGFnfHwzPT09ZS50YWd8fDQ9PT1lLnRhZ31mdW5jdGlvbiBiaShlKXtlOntmb3IodmFyIHQ9ZS5yZXR1cm47bnVsbCE9PXQ7KXtpZihoaSh0KSl7dmFyIG49dDticmVhayBlfXQ9dC5yZXR1cm59aShcIjE2MFwiKSxuPXZvaWQgMH12YXIgcj10PXZvaWQgMDtzd2l0Y2gobi50YWcpe2Nhc2UgNTp0PW4uc3RhdGVOb2RlLHI9ITE7YnJlYWs7Y2FzZSAzOmNhc2UgNDp0PW4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8scj0hMDticmVhaztkZWZhdWx0OmkoXCIxNjFcIil9MTYmbi5lZmZlY3RUYWcmJihhcih0LFwiXCIpLG4uZWZmZWN0VGFnJj0tMTcpO2U6dDpmb3Iobj1lOzspe2Zvcig7bnVsbD09PW4uc2libGluZzspe2lmKG51bGw9PT1uLnJldHVybnx8aGkobi5yZXR1cm4pKXtuPW51bGw7YnJlYWsgZX1uPW4ucmV0dXJufWZvcihuLnNpYmxpbmcucmV0dXJuPW4ucmV0dXJuLG49bi5zaWJsaW5nOzUhPT1uLnRhZyYmNiE9PW4udGFnJiYxOCE9PW4udGFnOyl7aWYoMiZuLmVmZmVjdFRhZyljb250aW51ZSB0O2lmKG51bGw9PT1uLmNoaWxkfHw0PT09bi50YWcpY29udGludWUgdDtuLmNoaWxkLnJldHVybj1uLG49bi5jaGlsZH1pZighKDImbi5lZmZlY3RUYWcpKXtuPW4uc3RhdGVOb2RlO2JyZWFrIGV9fWZvcih2YXIgbz1lOzspe2lmKDU9PT1vLnRhZ3x8Nj09PW8udGFnKWlmKG4paWYocil7dmFyIGE9dCxsPW8uc3RhdGVOb2RlLHM9bjs4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGwscyk6YS5pbnNlcnRCZWZvcmUobCxzKX1lbHNlIHQuaW5zZXJ0QmVmb3JlKG8uc3RhdGVOb2RlLG4pO2Vsc2Ugcj8obD10LHM9by5zdGF0ZU5vZGUsOD09PWwubm9kZVR5cGU/KGE9bC5wYXJlbnROb2RlKS5pbnNlcnRCZWZvcmUocyxsKTooYT1sKS5hcHBlbmRDaGlsZChzKSxudWxsIT0obD1sLl9yZWFjdFJvb3RDb250YWluZXIpfHxudWxsIT09YS5vbmNsaWNrfHwoYS5vbmNsaWNrPW1yKSk6dC5hcHBlbmRDaGlsZChvLnN0YXRlTm9kZSk7ZWxzZSBpZig0IT09by50YWcmJm51bGwhPT1vLmNoaWxkKXtvLmNoaWxkLnJldHVybj1vLG89by5jaGlsZDtjb250aW51ZX1pZihvPT09ZSlicmVhaztmb3IoO251bGw9PT1vLnNpYmxpbmc7KXtpZihudWxsPT09by5yZXR1cm58fG8ucmV0dXJuPT09ZSlyZXR1cm47bz1vLnJldHVybn1vLnNpYmxpbmcucmV0dXJuPW8ucmV0dXJuLG89by5zaWJsaW5nfX1mdW5jdGlvbiB5aShlKXtmb3IodmFyIHQ9ZSxuPSExLHI9dm9pZCAwLG89dm9pZCAwOzspe2lmKCFuKXtuPXQucmV0dXJuO2U6Zm9yKDs7KXtzd2l0Y2gobnVsbD09PW4mJmkoXCIxNjBcIiksbi50YWcpe2Nhc2UgNTpyPW4uc3RhdGVOb2RlLG89ITE7YnJlYWsgZTtjYXNlIDM6Y2FzZSA0OnI9bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxvPSEwO2JyZWFrIGV9bj1uLnJldHVybn1uPSEwfWlmKDU9PT10LnRhZ3x8Nj09PXQudGFnKXtlOmZvcih2YXIgYT10LGw9YTs7KWlmKGdpKGwpLG51bGwhPT1sLmNoaWxkJiY0IT09bC50YWcpbC5jaGlsZC5yZXR1cm49bCxsPWwuY2hpbGQ7ZWxzZXtpZihsPT09YSlicmVhaztmb3IoO251bGw9PT1sLnNpYmxpbmc7KXtpZihudWxsPT09bC5yZXR1cm58fGwucmV0dXJuPT09YSlicmVhayBlO2w9bC5yZXR1cm59bC5zaWJsaW5nLnJldHVybj1sLnJldHVybixsPWwuc2libGluZ31vPyhhPXIsbD10LnN0YXRlTm9kZSw4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobCk6YS5yZW1vdmVDaGlsZChsKSk6ci5yZW1vdmVDaGlsZCh0LnN0YXRlTm9kZSl9ZWxzZSBpZig0PT09dC50YWcpe2lmKG51bGwhPT10LmNoaWxkKXtyPXQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sbz0hMCx0LmNoaWxkLnJldHVybj10LHQ9dC5jaGlsZDtjb250aW51ZX19ZWxzZSBpZihnaSh0KSxudWxsIT09dC5jaGlsZCl7dC5jaGlsZC5yZXR1cm49dCx0PXQuY2hpbGQ7Y29udGludWV9aWYodD09PWUpYnJlYWs7Zm9yKDtudWxsPT09dC5zaWJsaW5nOyl7aWYobnVsbD09PXQucmV0dXJufHx0LnJldHVybj09PWUpcmV0dXJuOzQ9PT0odD10LnJldHVybikudGFnJiYobj0hMSl9dC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZ319ZnVuY3Rpb24gdmkoZSx0KXtzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTptaShPbyxJbyx0KTticmVhaztjYXNlIDE6YnJlYWs7Y2FzZSA1OnZhciBuPXQuc3RhdGVOb2RlO2lmKG51bGwhPW4pe3ZhciByPXQubWVtb2l6ZWRQcm9wcztlPW51bGwhPT1lP2UubWVtb2l6ZWRQcm9wczpyO3ZhciBvPXQudHlwZSxhPXQudXBkYXRlUXVldWU7dC51cGRhdGVRdWV1ZT1udWxsLG51bGwhPT1hJiZmdW5jdGlvbihlLHQsbixyLG8pe2VbTV09byxcImlucHV0XCI9PT1uJiZcInJhZGlvXCI9PT1vLnR5cGUmJm51bGwhPW8ubmFtZSYmRXQoZSxvKSxwcihuLHIpLHI9cHIobixvKTtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErPTIpe3ZhciBpPXRbYV0sbD10W2ErMV07XCJzdHlsZVwiPT09aT91cihlLGwpOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWk/b3IoZSxsKTpcImNoaWxkcmVuXCI9PT1pP2FyKGUsbCk6YnQoZSxpLGwscil9c3dpdGNoKG4pe2Nhc2VcImlucHV0XCI6eHQoZSxvKTticmVhaztjYXNlXCJ0ZXh0YXJlYVwiOlpuKGUsbyk7YnJlYWs7Y2FzZVwic2VsZWN0XCI6dD1lLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGUsZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPSEhby5tdWx0aXBsZSxudWxsIT0obj1vLnZhbHVlKT9LbihlLCEhby5tdWx0aXBsZSxuLCExKTp0IT09ISFvLm11bHRpcGxlJiYobnVsbCE9by5kZWZhdWx0VmFsdWU/S24oZSwhIW8ubXVsdGlwbGUsby5kZWZhdWx0VmFsdWUsITApOktuKGUsISFvLm11bHRpcGxlLG8ubXVsdGlwbGU/W106XCJcIiwhMSkpfX0obixhLG8sZSxyKX1icmVhaztjYXNlIDY6bnVsbD09PXQuc3RhdGVOb2RlJiZpKFwiMTYyXCIpLHQuc3RhdGVOb2RlLm5vZGVWYWx1ZT10Lm1lbW9pemVkUHJvcHM7YnJlYWs7Y2FzZSAzOmNhc2UgMTI6YnJlYWs7Y2FzZSAxMzppZihuPXQubWVtb2l6ZWRTdGF0ZSxyPXZvaWQgMCxlPXQsbnVsbD09PW4/cj0hMToocj0hMCxlPXQuY2hpbGQsMD09PW4udGltZWRPdXRBdCYmKG4udGltZWRPdXRBdD14bCgpKSksbnVsbCE9PWUmJmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWU7Oyl7aWYoNT09PW4udGFnKXt2YXIgcj1uLnN0YXRlTm9kZTtpZih0KXIuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtlbHNle3I9bi5zdGF0ZU5vZGU7dmFyIG89bi5tZW1vaXplZFByb3BzLnN0eWxlO289bnVsbCE9byYmby5oYXNPd25Qcm9wZXJ0eShcImRpc3BsYXlcIik/by5kaXNwbGF5Om51bGwsci5zdHlsZS5kaXNwbGF5PXNyKFwiZGlzcGxheVwiLG8pfX1lbHNlIGlmKDY9PT1uLnRhZyluLnN0YXRlTm9kZS5ub2RlVmFsdWU9dD9cIlwiOm4ubWVtb2l6ZWRQcm9wcztlbHNle2lmKDEzPT09bi50YWcmJm51bGwhPT1uLm1lbW9pemVkU3RhdGUpeyhyPW4uY2hpbGQuc2libGluZykucmV0dXJuPW4sbj1yO2NvbnRpbnVlfWlmKG51bGwhPT1uLmNoaWxkKXtuLmNoaWxkLnJldHVybj1uLG49bi5jaGlsZDtjb250aW51ZX19aWYobj09PWUpYnJlYWs7Zm9yKDtudWxsPT09bi5zaWJsaW5nOyl7aWYobnVsbD09PW4ucmV0dXJufHxuLnJldHVybj09PWUpcmV0dXJuO249bi5yZXR1cm59bi5zaWJsaW5nLnJldHVybj1uLnJldHVybixuPW4uc2libGluZ319KGUsciksbnVsbCE9PShuPXQudXBkYXRlUXVldWUpKXt0LnVwZGF0ZVF1ZXVlPW51bGw7dmFyIGw9dC5zdGF0ZU5vZGU7bnVsbD09PWwmJihsPXQuc3RhdGVOb2RlPW5ldyBkaSksbi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zdGF0ZU5vZGU7bnVsbCE9PW4mJm4uZGVsZXRlKHQpLHQ9WWkodD14bCgpLGUpLG51bGwhPT0oZT1aaShlLHQpKSYmKEpyKGUsdCksMCE9PSh0PWUuZXhwaXJhdGlvblRpbWUpJiZ3bChlLHQpKX0uYmluZChudWxsLHQsZSk7bC5oYXMoZSl8fChsLmFkZChlKSxlLnRoZW4obixuKSl9KX1icmVhaztjYXNlIDE3OmJyZWFrO2RlZmF1bHQ6aShcIjE2M1wiKX19dmFyIFNpPVwiZnVuY3Rpb25cIj09dHlwZW9mIFdlYWtNYXA/V2Vha01hcDpNYXA7ZnVuY3Rpb24gRWkoZSx0LG4peyhuPVhhKG4pKS50YWc9JGEsbi5wYXlsb2FkPXtlbGVtZW50Om51bGx9O3ZhciByPXQudmFsdWU7cmV0dXJuIG4uY2FsbGJhY2s9ZnVuY3Rpb24oKXtSbChyKSxwaShlLHQpfSxufWZ1bmN0aW9uIHhpKGUsdCxuKXsobj1YYShuKSkudGFnPSRhO3ZhciByPWUudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcil7dmFyIG89dC52YWx1ZTtuLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gcihvKX19dmFyIGE9ZS5zdGF0ZU5vZGU7cmV0dXJuIG51bGwhPT1hJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbXBvbmVudERpZENhdGNoJiYobi5jYWxsYmFjaz1mdW5jdGlvbigpe1wiZnVuY3Rpb25cIiE9dHlwZW9mIHImJihudWxsPT09Qmk/Qmk9bmV3IFNldChbdGhpc10pOkJpLmFkZCh0aGlzKSk7dmFyIG49dC52YWx1ZSxvPXQuc3RhY2s7cGkoZSx0KSx0aGlzLmNvbXBvbmVudERpZENhdGNoKG4se2NvbXBvbmVudFN0YWNrOm51bGwhPT1vP286XCJcIn0pfSksbn1mdW5jdGlvbiB3aShlKXtzd2l0Y2goZS50YWcpe2Nhc2UgMTpNcihlLnR5cGUpJiZMcigpO3ZhciB0PWUuZWZmZWN0VGFnO3JldHVybiAyMDQ4JnQ/KGUuZWZmZWN0VGFnPS0yMDQ5JnR8NjQsZSk6bnVsbDtjYXNlIDM6cmV0dXJuIGtvKCksRHIoKSwwIT0oNjQmKHQ9ZS5lZmZlY3RUYWcpKSYmaShcIjI4NVwiKSxlLmVmZmVjdFRhZz0tMjA0OSZ0fDY0LGU7Y2FzZSA1OnJldHVybiBUbyhlKSxudWxsO2Nhc2UgMTM6cmV0dXJuIDIwNDgmKHQ9ZS5lZmZlY3RUYWcpPyhlLmVmZmVjdFRhZz0tMjA0OSZ0fDY0LGUpOm51bGw7Y2FzZSAxODpyZXR1cm4gbnVsbDtjYXNlIDQ6cmV0dXJuIGtvKCksbnVsbDtjYXNlIDEwOnJldHVybiBVYShlKSxudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXZhciBraT1HZS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLF9pPUdlLlJlYWN0Q3VycmVudE93bmVyLFRpPTEwNzM3NDE4MjIsQWk9ITEsQ2k9bnVsbCxPaT1udWxsLElpPTAsTmk9LTEsUmk9ITEsUGk9bnVsbCxNaT0hMSxMaT1udWxsLERpPW51bGwsRmk9bnVsbCxCaT1udWxsO2Z1bmN0aW9uIGppKCl7aWYobnVsbCE9PUNpKWZvcih2YXIgZT1DaS5yZXR1cm47bnVsbCE9PWU7KXt2YXIgdD1lO3N3aXRjaCh0LnRhZyl7Y2FzZSAxOnZhciBuPXQudHlwZS5jaGlsZENvbnRleHRUeXBlcztudWxsIT1uJiZMcigpO2JyZWFrO2Nhc2UgMzprbygpLERyKCk7YnJlYWs7Y2FzZSA1OlRvKHQpO2JyZWFrO2Nhc2UgNDprbygpO2JyZWFrO2Nhc2UgMTA6VWEodCl9ZT1lLnJldHVybn1PaT1udWxsLElpPTAsTmk9LTEsUmk9ITEsQ2k9bnVsbH1mdW5jdGlvbiBVaSgpe2Zvcig7bnVsbCE9PVBpOyl7dmFyIGU9UGkuZWZmZWN0VGFnO2lmKDE2JmUmJmFyKFBpLnN0YXRlTm9kZSxcIlwiKSwxMjgmZSl7dmFyIHQ9UGkuYWx0ZXJuYXRlO251bGwhPT10JiYobnVsbCE9PSh0PXQucmVmKSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChudWxsKTp0LmN1cnJlbnQ9bnVsbCkpfXN3aXRjaCgxNCZlKXtjYXNlIDI6YmkoUGkpLFBpLmVmZmVjdFRhZyY9LTM7YnJlYWs7Y2FzZSA2OmJpKFBpKSxQaS5lZmZlY3RUYWcmPS0zLHZpKFBpLmFsdGVybmF0ZSxQaSk7YnJlYWs7Y2FzZSA0OnZpKFBpLmFsdGVybmF0ZSxQaSk7YnJlYWs7Y2FzZSA4OnlpKGU9UGkpLGUucmV0dXJuPW51bGwsZS5jaGlsZD1udWxsLGUubWVtb2l6ZWRTdGF0ZT1udWxsLGUudXBkYXRlUXVldWU9bnVsbCxudWxsIT09KGU9ZS5hbHRlcm5hdGUpJiYoZS5yZXR1cm49bnVsbCxlLmNoaWxkPW51bGwsZS5tZW1vaXplZFN0YXRlPW51bGwsZS51cGRhdGVRdWV1ZT1udWxsKX1QaT1QaS5uZXh0RWZmZWN0fX1mdW5jdGlvbiB6aSgpe2Zvcig7bnVsbCE9PVBpOyl7aWYoMjU2JlBpLmVmZmVjdFRhZyllOnt2YXIgZT1QaS5hbHRlcm5hdGUsdD1QaTtzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6bWkoQ28sQW8sdCk7YnJlYWsgZTtjYXNlIDE6aWYoMjU2JnQuZWZmZWN0VGFnJiZudWxsIT09ZSl7dmFyIG49ZS5tZW1vaXplZFByb3BzLHI9ZS5tZW1vaXplZFN0YXRlO3Q9KGU9dC5zdGF0ZU5vZGUpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHQuZWxlbWVudFR5cGU9PT10LnR5cGU/bjpybyh0LnR5cGUsbiksciksZS5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZT10fWJyZWFrIGU7Y2FzZSAzOmNhc2UgNTpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6YnJlYWsgZTtkZWZhdWx0OmkoXCIxNjNcIil9fVBpPVBpLm5leHRFZmZlY3R9fWZ1bmN0aW9uIEhpKGUsdCl7Zm9yKDtudWxsIT09UGk7KXt2YXIgbj1QaS5lZmZlY3RUYWc7aWYoMzYmbil7dmFyIHI9UGkuYWx0ZXJuYXRlLG89UGksYT10O3N3aXRjaChvLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTptaShObyxSbyxvKTticmVhaztjYXNlIDE6dmFyIGw9by5zdGF0ZU5vZGU7aWYoNCZvLmVmZmVjdFRhZylpZihudWxsPT09cilsLmNvbXBvbmVudERpZE1vdW50KCk7ZWxzZXt2YXIgcz1vLmVsZW1lbnRUeXBlPT09by50eXBlP3IubWVtb2l6ZWRQcm9wczpybyhvLnR5cGUsci5tZW1vaXplZFByb3BzKTtsLmNvbXBvbmVudERpZFVwZGF0ZShzLHIubWVtb2l6ZWRTdGF0ZSxsLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlKX1udWxsIT09KHI9by51cGRhdGVRdWV1ZSkmJnJpKDAscixsKTticmVhaztjYXNlIDM6aWYobnVsbCE9PShyPW8udXBkYXRlUXVldWUpKXtpZihsPW51bGwsbnVsbCE9PW8uY2hpbGQpc3dpdGNoKG8uY2hpbGQudGFnKXtjYXNlIDU6bD1vLmNoaWxkLnN0YXRlTm9kZTticmVhaztjYXNlIDE6bD1vLmNoaWxkLnN0YXRlTm9kZX1yaSgwLHIsbCl9YnJlYWs7Y2FzZSA1OmE9by5zdGF0ZU5vZGUsbnVsbD09PXImJjQmby5lZmZlY3RUYWcmJmJyKG8udHlwZSxvLm1lbW9pemVkUHJvcHMpJiZhLmZvY3VzKCk7YnJlYWs7Y2FzZSA2OmNhc2UgNDpjYXNlIDEyOmNhc2UgMTM6Y2FzZSAxNzpicmVhaztkZWZhdWx0OmkoXCIxNjNcIil9fTEyOCZuJiYobnVsbCE9PShvPVBpLnJlZikmJihhPVBpLnN0YXRlTm9kZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBvP28oYSk6by5jdXJyZW50PWEpKSw1MTImbiYmKExpPWUpLFBpPVBpLm5leHRFZmZlY3R9fWZ1bmN0aW9uIFdpKCl7bnVsbCE9PURpJiZ4cihEaSksbnVsbCE9PUZpJiZGaSgpfWZ1bmN0aW9uIEdpKGUsdCl7TWk9QWk9ITAsZS5jdXJyZW50PT09dCYmaShcIjE3N1wiKTt2YXIgbj1lLnBlbmRpbmdDb21taXRFeHBpcmF0aW9uVGltZTswPT09biYmaShcIjI2MVwiKSxlLnBlbmRpbmdDb21taXRFeHBpcmF0aW9uVGltZT0wO3ZhciByPXQuZXhwaXJhdGlvblRpbWUsbz10LmNoaWxkRXhwaXJhdGlvblRpbWU7Zm9yKGZ1bmN0aW9uKGUsdCl7aWYoZS5kaWRFcnJvcj0hMSwwPT09dCllLmVhcmxpZXN0UGVuZGluZ1RpbWU9MCxlLmxhdGVzdFBlbmRpbmdUaW1lPTAsZS5lYXJsaWVzdFN1c3BlbmRlZFRpbWU9MCxlLmxhdGVzdFN1c3BlbmRlZFRpbWU9MCxlLmxhdGVzdFBpbmdlZFRpbWU9MDtlbHNle3Q8ZS5sYXRlc3RQaW5nZWRUaW1lJiYoZS5sYXRlc3RQaW5nZWRUaW1lPTApO3ZhciBuPWUubGF0ZXN0UGVuZGluZ1RpbWU7MCE9PW4mJihuPnQ/ZS5lYXJsaWVzdFBlbmRpbmdUaW1lPWUubGF0ZXN0UGVuZGluZ1RpbWU9MDplLmVhcmxpZXN0UGVuZGluZ1RpbWU+dCYmKGUuZWFybGllc3RQZW5kaW5nVGltZT1lLmxhdGVzdFBlbmRpbmdUaW1lKSksMD09PShuPWUuZWFybGllc3RTdXNwZW5kZWRUaW1lKT9KcihlLHQpOnQ8ZS5sYXRlc3RTdXNwZW5kZWRUaW1lPyhlLmVhcmxpZXN0U3VzcGVuZGVkVGltZT0wLGUubGF0ZXN0U3VzcGVuZGVkVGltZT0wLGUubGF0ZXN0UGluZ2VkVGltZT0wLEpyKGUsdCkpOnQ+biYmSnIoZSx0KX1ubygwLGUpfShlLG8+cj9vOnIpLF9pLmN1cnJlbnQ9bnVsbCxyPXZvaWQgMCwxPHQuZWZmZWN0VGFnP251bGwhPT10Lmxhc3RFZmZlY3Q/KHQubGFzdEVmZmVjdC5uZXh0RWZmZWN0PXQscj10LmZpcnN0RWZmZWN0KTpyPXQ6cj10LmZpcnN0RWZmZWN0LGdyPWtuLGhyPWZ1bmN0aW9uKCl7dmFyIGU9RG4oKTtpZihGbihlKSl7aWYoXCJzZWxlY3Rpb25TdGFydFwiaW4gZSl2YXIgdD17c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2Vsc2UgZTp7dmFyIG49KHQ9KHQ9ZS5vd25lckRvY3VtZW50KSYmdC5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24mJnQuZ2V0U2VsZWN0aW9uKCk7aWYobiYmMCE9PW4ucmFuZ2VDb3VudCl7dD1uLmFuY2hvck5vZGU7dmFyIHI9bi5hbmNob3JPZmZzZXQsbz1uLmZvY3VzTm9kZTtuPW4uZm9jdXNPZmZzZXQ7dHJ5e3Qubm9kZVR5cGUsby5ub2RlVHlwZX1jYXRjaChlKXt0PW51bGw7YnJlYWsgZX12YXIgYT0wLGk9LTEsbD0tMSxzPTAsdT0wLGM9ZSxkPW51bGw7dDpmb3IoOzspe2Zvcih2YXIgcDtjIT09dHx8MCE9PXImJjMhPT1jLm5vZGVUeXBlfHwoaT1hK3IpLGMhPT1vfHwwIT09biYmMyE9PWMubm9kZVR5cGV8fChsPWErbiksMz09PWMubm9kZVR5cGUmJihhKz1jLm5vZGVWYWx1ZS5sZW5ndGgpLG51bGwhPT0ocD1jLmZpcnN0Q2hpbGQpOylkPWMsYz1wO2Zvcig7Oyl7aWYoYz09PWUpYnJlYWsgdDtpZihkPT09dCYmKytzPT09ciYmKGk9YSksZD09PW8mJisrdT09PW4mJihsPWEpLG51bGwhPT0ocD1jLm5leHRTaWJsaW5nKSlicmVhaztkPShjPWQpLnBhcmVudE5vZGV9Yz1wfXQ9LTE9PT1pfHwtMT09PWw/bnVsbDp7c3RhcnQ6aSxlbmQ6bH19ZWxzZSB0PW51bGx9dD10fHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSB0PW51bGw7cmV0dXJue2ZvY3VzZWRFbGVtOmUsc2VsZWN0aW9uUmFuZ2U6dH19KCksa249ITEsUGk9cjtudWxsIT09UGk7KXtvPSExO3ZhciBsPXZvaWQgMDt0cnl7emkoKX1jYXRjaChlKXtvPSEwLGw9ZX1vJiYobnVsbD09PVBpJiZpKFwiMTc4XCIpLEtpKFBpLGwpLG51bGwhPT1QaSYmKFBpPVBpLm5leHRFZmZlY3QpKX1mb3IoUGk9cjtudWxsIT09UGk7KXtvPSExLGw9dm9pZCAwO3RyeXtVaSgpfWNhdGNoKGUpe289ITAsbD1lfW8mJihudWxsPT09UGkmJmkoXCIxNzhcIiksS2koUGksbCksbnVsbCE9PVBpJiYoUGk9UGkubmV4dEVmZmVjdCkpfWZvcihCbihociksaHI9bnVsbCxrbj0hIWdyLGdyPW51bGwsZS5jdXJyZW50PXQsUGk9cjtudWxsIT09UGk7KXtvPSExLGw9dm9pZCAwO3RyeXtIaShlLG4pfWNhdGNoKGUpe289ITAsbD1lfW8mJihudWxsPT09UGkmJmkoXCIxNzhcIiksS2koUGksbCksbnVsbCE9PVBpJiYoUGk9UGkubmV4dEVmZmVjdCkpfWlmKG51bGwhPT1yJiZudWxsIT09TGkpe3ZhciBzPWZ1bmN0aW9uKGUsdCl7Rmk9RGk9TGk9bnVsbDt2YXIgbj1vbDtvbD0hMDtkb3tpZig1MTImdC5lZmZlY3RUYWcpe3ZhciByPSExLG89dm9pZCAwO3RyeXt2YXIgYT10O21pKE1vLEFvLGEpLG1pKEFvLFBvLGEpfWNhdGNoKGUpe3I9ITAsbz1lfXImJktpKHQsbyl9dD10Lm5leHRFZmZlY3R9d2hpbGUobnVsbCE9PXQpO29sPW4sMCE9PShuPWUuZXhwaXJhdGlvblRpbWUpJiZ3bChlLG4pLGNsfHxvbHx8Q2woMTA3Mzc0MTgyMywhMSl9LmJpbmQobnVsbCxlLHIpO0RpPWEudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5KGEudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksZnVuY3Rpb24oKXtyZXR1cm4gRXIocyl9KSxGaT1zfUFpPU1pPSExLFwiZnVuY3Rpb25cIj09dHlwZW9mIHpyJiZ6cih0LnN0YXRlTm9kZSksbj10LmV4cGlyYXRpb25UaW1lLDA9PT0odD0odD10LmNoaWxkRXhwaXJhdGlvblRpbWUpPm4/dDpuKSYmKEJpPW51bGwpLGZ1bmN0aW9uKGUsdCl7ZS5leHBpcmF0aW9uVGltZT10LGUuZmluaXNoZWRXb3JrPW51bGx9KGUsdCl9ZnVuY3Rpb24gVmkoZSl7Zm9yKDs7KXt2YXIgdD1lLmFsdGVybmF0ZSxuPWUucmV0dXJuLHI9ZS5zaWJsaW5nO2lmKDA9PSgxMDI0JmUuZWZmZWN0VGFnKSl7Q2k9ZTtlOnt2YXIgYT10LGw9SWkscz0odD1lKS5wZW5kaW5nUHJvcHM7c3dpdGNoKHQudGFnKXtjYXNlIDI6Y2FzZSAxNjpicmVhaztjYXNlIDE1OmNhc2UgMDpicmVhaztjYXNlIDE6TXIodC50eXBlKSYmTHIoKTticmVhaztjYXNlIDM6a28oKSxEcigpLChzPXQuc3RhdGVOb2RlKS5wZW5kaW5nQ29udGV4dCYmKHMuY29udGV4dD1zLnBlbmRpbmdDb250ZXh0LHMucGVuZGluZ0NvbnRleHQ9bnVsbCksbnVsbCE9PWEmJm51bGwhPT1hLmNoaWxkfHwodmEodCksdC5lZmZlY3RUYWcmPS0zKSxzaSh0KTticmVhaztjYXNlIDU6VG8odCk7dmFyIHU9eG8oRW8uY3VycmVudCk7aWYobD10LnR5cGUsbnVsbCE9PWEmJm51bGwhPXQuc3RhdGVOb2RlKXVpKGEsdCxsLHMsdSksYS5yZWYhPT10LnJlZiYmKHQuZWZmZWN0VGFnfD0xMjgpO2Vsc2UgaWYocyl7dmFyIGM9eG8odm8uY3VycmVudCk7aWYodmEodCkpe2E9KHM9dCkuc3RhdGVOb2RlO3ZhciBkPXMudHlwZSxwPXMubWVtb2l6ZWRQcm9wcyxmPXU7c3dpdGNoKGFbUF09cyxhW01dPXAsbD12b2lkIDAsdT1kKXtjYXNlXCJpZnJhbWVcIjpjYXNlXCJvYmplY3RcIjpfbihcImxvYWRcIixhKTticmVhaztjYXNlXCJ2aWRlb1wiOmNhc2VcImF1ZGlvXCI6Zm9yKGQ9MDtkPHRlLmxlbmd0aDtkKyspX24odGVbZF0sYSk7YnJlYWs7Y2FzZVwic291cmNlXCI6X24oXCJlcnJvclwiLGEpO2JyZWFrO2Nhc2VcImltZ1wiOmNhc2VcImltYWdlXCI6Y2FzZVwibGlua1wiOl9uKFwiZXJyb3JcIixhKSxfbihcImxvYWRcIixhKTticmVhaztjYXNlXCJmb3JtXCI6X24oXCJyZXNldFwiLGEpLF9uKFwic3VibWl0XCIsYSk7YnJlYWs7Y2FzZVwiZGV0YWlsc1wiOl9uKFwidG9nZ2xlXCIsYSk7YnJlYWs7Y2FzZVwiaW5wdXRcIjpTdChhLHApLF9uKFwiaW52YWxpZFwiLGEpLGZyKGYsXCJvbkNoYW5nZVwiKTticmVhaztjYXNlXCJzZWxlY3RcIjphLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhcC5tdWx0aXBsZX0sX24oXCJpbnZhbGlkXCIsYSksZnIoZixcIm9uQ2hhbmdlXCIpO2JyZWFrO2Nhc2VcInRleHRhcmVhXCI6WG4oYSxwKSxfbihcImludmFsaWRcIixhKSxmcihmLFwib25DaGFuZ2VcIil9Zm9yKGwgaW4gZHIodSxwKSxkPW51bGwscClwLmhhc093blByb3BlcnR5KGwpJiYoYz1wW2xdLFwiY2hpbGRyZW5cIj09PWw/XCJzdHJpbmdcIj09dHlwZW9mIGM/YS50ZXh0Q29udGVudCE9PWMmJihkPVtcImNoaWxkcmVuXCIsY10pOlwibnVtYmVyXCI9PXR5cGVvZiBjJiZhLnRleHRDb250ZW50IT09XCJcIitjJiYoZD1bXCJjaGlsZHJlblwiLFwiXCIrY10pOnYuaGFzT3duUHJvcGVydHkobCkmJm51bGwhPWMmJmZyKGYsbCkpO3N3aXRjaCh1KXtjYXNlXCJpbnB1dFwiOkhlKGEpLHd0KGEscCwhMCk7YnJlYWs7Y2FzZVwidGV4dGFyZWFcIjpIZShhKSxRbihhKTticmVhaztjYXNlXCJzZWxlY3RcIjpjYXNlXCJvcHRpb25cIjpicmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09dHlwZW9mIHAub25DbGljayYmKGEub25jbGljaz1tcil9bD1kLHMudXBkYXRlUXVldWU9bCwocz1udWxsIT09bCkmJmlpKHQpfWVsc2V7cD10LGE9bCxmPXMsZD05PT09dS5ub2RlVHlwZT91OnUub3duZXJEb2N1bWVudCxjPT09Sm4uaHRtbCYmKGM9ZXIoYSkpLGM9PT1Kbi5odG1sP1wic2NyaXB0XCI9PT1hPygoYT1kLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLmlubmVySFRNTD1cIjxzY3JpcHQ+PFxcL3NjcmlwdD5cIixkPWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKSk6XCJzdHJpbmdcIj09dHlwZW9mIGYuaXM/ZD1kLmNyZWF0ZUVsZW1lbnQoYSx7aXM6Zi5pc30pOihkPWQuY3JlYXRlRWxlbWVudChhKSxcInNlbGVjdFwiPT09YSYmZi5tdWx0aXBsZSYmKGQubXVsdGlwbGU9ITApKTpkPWQuY3JlYXRlRWxlbWVudE5TKGMsYSksKGE9ZClbUF09cCxhW01dPXMsbGkoYSx0LCExLCExKSxmPWE7dmFyIG09dSxnPXByKGQ9bCxwPXMpO3N3aXRjaChkKXtjYXNlXCJpZnJhbWVcIjpjYXNlXCJvYmplY3RcIjpfbihcImxvYWRcIixmKSx1PXA7YnJlYWs7Y2FzZVwidmlkZW9cIjpjYXNlXCJhdWRpb1wiOmZvcih1PTA7dTx0ZS5sZW5ndGg7dSsrKV9uKHRlW3VdLGYpO3U9cDticmVhaztjYXNlXCJzb3VyY2VcIjpfbihcImVycm9yXCIsZiksdT1wO2JyZWFrO2Nhc2VcImltZ1wiOmNhc2VcImltYWdlXCI6Y2FzZVwibGlua1wiOl9uKFwiZXJyb3JcIixmKSxfbihcImxvYWRcIixmKSx1PXA7YnJlYWs7Y2FzZVwiZm9ybVwiOl9uKFwicmVzZXRcIixmKSxfbihcInN1Ym1pdFwiLGYpLHU9cDticmVhaztjYXNlXCJkZXRhaWxzXCI6X24oXCJ0b2dnbGVcIixmKSx1PXA7YnJlYWs7Y2FzZVwiaW5wdXRcIjpTdChmLHApLHU9dnQoZixwKSxfbihcImludmFsaWRcIixmKSxmcihtLFwib25DaGFuZ2VcIik7YnJlYWs7Y2FzZVwib3B0aW9uXCI6dT1xbihmLHApO2JyZWFrO2Nhc2VcInNlbGVjdFwiOmYuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFwLm11bHRpcGxlfSx1PW8oe30scCx7dmFsdWU6dm9pZCAwfSksX24oXCJpbnZhbGlkXCIsZiksZnIobSxcIm9uQ2hhbmdlXCIpO2JyZWFrO2Nhc2VcInRleHRhcmVhXCI6WG4oZixwKSx1PVluKGYscCksX24oXCJpbnZhbGlkXCIsZiksZnIobSxcIm9uQ2hhbmdlXCIpO2JyZWFrO2RlZmF1bHQ6dT1wfWRyKGQsdSksYz12b2lkIDA7dmFyIGg9ZCxiPWYseT11O2ZvcihjIGluIHkpaWYoeS5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIFM9eVtjXTtcInN0eWxlXCI9PT1jP3VyKGIsUyk6XCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09Yz9udWxsIT0oUz1TP1MuX19odG1sOnZvaWQgMCkmJm9yKGIsUyk6XCJjaGlsZHJlblwiPT09Yz9cInN0cmluZ1wiPT10eXBlb2YgUz8oXCJ0ZXh0YXJlYVwiIT09aHx8XCJcIiE9PVMpJiZhcihiLFMpOlwibnVtYmVyXCI9PXR5cGVvZiBTJiZhcihiLFwiXCIrUyk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWMmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1jJiZcImF1dG9Gb2N1c1wiIT09YyYmKHYuaGFzT3duUHJvcGVydHkoYyk/bnVsbCE9UyYmZnIobSxjKTpudWxsIT1TJiZidChiLGMsUyxnKSl9c3dpdGNoKGQpe2Nhc2VcImlucHV0XCI6SGUoZiksd3QoZixwLCExKTticmVhaztjYXNlXCJ0ZXh0YXJlYVwiOkhlKGYpLFFuKGYpO2JyZWFrO2Nhc2VcIm9wdGlvblwiOm51bGwhPXAudmFsdWUmJmYuc2V0QXR0cmlidXRlKFwidmFsdWVcIixcIlwiK3l0KHAudmFsdWUpKTticmVhaztjYXNlXCJzZWxlY3RcIjoodT1mKS5tdWx0aXBsZT0hIXAubXVsdGlwbGUsbnVsbCE9KGY9cC52YWx1ZSk/S24odSwhIXAubXVsdGlwbGUsZiwhMSk6bnVsbCE9cC5kZWZhdWx0VmFsdWUmJktuKHUsISFwLm11bHRpcGxlLHAuZGVmYXVsdFZhbHVlLCEwKTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09dHlwZW9mIHUub25DbGljayYmKGYub25jbGljaz1tcil9KHM9YnIobCxzKSkmJmlpKHQpLHQuc3RhdGVOb2RlPWF9bnVsbCE9PXQucmVmJiYodC5lZmZlY3RUYWd8PTEyOCl9ZWxzZSBudWxsPT09dC5zdGF0ZU5vZGUmJmkoXCIxNjZcIik7YnJlYWs7Y2FzZSA2OmEmJm51bGwhPXQuc3RhdGVOb2RlP2NpKGEsdCxhLm1lbW9pemVkUHJvcHMscyk6KFwic3RyaW5nXCIhPXR5cGVvZiBzJiYobnVsbD09PXQuc3RhdGVOb2RlJiZpKFwiMTY2XCIpKSxhPXhvKEVvLmN1cnJlbnQpLHhvKHZvLmN1cnJlbnQpLHZhKHQpPyhsPShzPXQpLnN0YXRlTm9kZSxhPXMubWVtb2l6ZWRQcm9wcyxsW1BdPXMsKHM9bC5ub2RlVmFsdWUhPT1hKSYmaWkodCkpOihsPXQsKHM9KDk9PT1hLm5vZGVUeXBlP2E6YS5vd25lckRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShzKSlbUF09dCxsLnN0YXRlTm9kZT1zKSk7YnJlYWs7Y2FzZSAxMTpicmVhaztjYXNlIDEzOmlmKHM9dC5tZW1vaXplZFN0YXRlLDAhPSg2NCZ0LmVmZmVjdFRhZykpe3QuZXhwaXJhdGlvblRpbWU9bCxDaT10O2JyZWFrIGV9cz1udWxsIT09cyxsPW51bGwhPT1hJiZudWxsIT09YS5tZW1vaXplZFN0YXRlLG51bGwhPT1hJiYhcyYmbCYmKG51bGwhPT0oYT1hLmNoaWxkLnNpYmxpbmcpJiYobnVsbCE9PSh1PXQuZmlyc3RFZmZlY3QpPyh0LmZpcnN0RWZmZWN0PWEsYS5uZXh0RWZmZWN0PXUpOih0LmZpcnN0RWZmZWN0PXQubGFzdEVmZmVjdD1hLGEubmV4dEVmZmVjdD1udWxsKSxhLmVmZmVjdFRhZz04KSksKHN8fGwpJiYodC5lZmZlY3RUYWd8PTQpO2JyZWFrO2Nhc2UgNzpjYXNlIDg6Y2FzZSAxMjpicmVhaztjYXNlIDQ6a28oKSxzaSh0KTticmVhaztjYXNlIDEwOlVhKHQpO2JyZWFrO2Nhc2UgOTpjYXNlIDE0OmJyZWFrO2Nhc2UgMTc6TXIodC50eXBlKSYmTHIoKTticmVhaztjYXNlIDE4OmJyZWFrO2RlZmF1bHQ6aShcIjE1NlwiKX1DaT1udWxsfWlmKHQ9ZSwxPT09SWl8fDEhPT10LmNoaWxkRXhwaXJhdGlvblRpbWUpe2ZvcihzPTAsbD10LmNoaWxkO251bGwhPT1sOykoYT1sLmV4cGlyYXRpb25UaW1lKT5zJiYocz1hKSwodT1sLmNoaWxkRXhwaXJhdGlvblRpbWUpPnMmJihzPXUpLGw9bC5zaWJsaW5nO3QuY2hpbGRFeHBpcmF0aW9uVGltZT1zfWlmKG51bGwhPT1DaSlyZXR1cm4gQ2k7bnVsbCE9PW4mJjA9PSgxMDI0Jm4uZWZmZWN0VGFnKSYmKG51bGw9PT1uLmZpcnN0RWZmZWN0JiYobi5maXJzdEVmZmVjdD1lLmZpcnN0RWZmZWN0KSxudWxsIT09ZS5sYXN0RWZmZWN0JiYobnVsbCE9PW4ubGFzdEVmZmVjdCYmKG4ubGFzdEVmZmVjdC5uZXh0RWZmZWN0PWUuZmlyc3RFZmZlY3QpLG4ubGFzdEVmZmVjdD1lLmxhc3RFZmZlY3QpLDE8ZS5lZmZlY3RUYWcmJihudWxsIT09bi5sYXN0RWZmZWN0P24ubGFzdEVmZmVjdC5uZXh0RWZmZWN0PWU6bi5maXJzdEVmZmVjdD1lLG4ubGFzdEVmZmVjdD1lKSl9ZWxzZXtpZihudWxsIT09KGU9d2koZSkpKXJldHVybiBlLmVmZmVjdFRhZyY9MTAyMyxlO251bGwhPT1uJiYobi5maXJzdEVmZmVjdD1uLmxhc3RFZmZlY3Q9bnVsbCxuLmVmZmVjdFRhZ3w9MTAyNCl9aWYobnVsbCE9PXIpcmV0dXJuIHI7aWYobnVsbD09PW4pYnJlYWs7ZT1ufXJldHVybiBudWxsfWZ1bmN0aW9uICRpKGUpe3ZhciB0PU1hKGUuYWx0ZXJuYXRlLGUsSWkpO3JldHVybiBlLm1lbW9pemVkUHJvcHM9ZS5wZW5kaW5nUHJvcHMsbnVsbD09PXQmJih0PVZpKGUpKSxfaS5jdXJyZW50PW51bGwsdH1mdW5jdGlvbiBxaShlLHQpe0FpJiZpKFwiMjQzXCIpLFdpKCksQWk9ITA7dmFyIG49a2kuY3VycmVudDtraS5jdXJyZW50PXVhO3ZhciByPWUubmV4dEV4cGlyYXRpb25UaW1lVG9Xb3JrT247cj09PUlpJiZlPT09T2kmJm51bGwhPT1DaXx8KGppKCksSWk9cixDaT1xcigoT2k9ZSkuY3VycmVudCxudWxsKSxlLnBlbmRpbmdDb21taXRFeHBpcmF0aW9uVGltZT0wKTtmb3IodmFyIG89ITE7Oyl7dHJ5e2lmKHQpZm9yKDtudWxsIT09Q2kmJiFUbCgpOylDaT0kaShDaSk7ZWxzZSBmb3IoO251bGwhPT1DaTspQ2k9JGkoQ2kpfWNhdGNoKHQpe2lmKEJhPUZhPURhPW51bGwsUW8oKSxudWxsPT09Q2kpbz0hMCxSbCh0KTtlbHNle251bGw9PT1DaSYmaShcIjI3MVwiKTt2YXIgYT1DaSxsPWEucmV0dXJuO2lmKG51bGwhPT1sKXtlOnt2YXIgcz1lLHU9bCxjPWEsZD10O2lmKGw9SWksYy5lZmZlY3RUYWd8PTEwMjQsYy5maXJzdEVmZmVjdD1jLmxhc3RFZmZlY3Q9bnVsbCxudWxsIT09ZCYmXCJvYmplY3RcIj09dHlwZW9mIGQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGQudGhlbil7dmFyIHA9ZDtkPXU7dmFyIGY9LTEsbT0tMTtkb3tpZigxMz09PWQudGFnKXt2YXIgZz1kLmFsdGVybmF0ZTtpZihudWxsIT09ZyYmbnVsbCE9PShnPWcubWVtb2l6ZWRTdGF0ZSkpe209MTAqKDEwNzM3NDE4MjItZy50aW1lZE91dEF0KTticmVha31cIm51bWJlclwiPT10eXBlb2YoZz1kLnBlbmRpbmdQcm9wcy5tYXhEdXJhdGlvbikmJigwPj1nP2Y9MDooLTE9PT1mfHxnPGYpJiYoZj1nKSl9ZD1kLnJldHVybn13aGlsZShudWxsIT09ZCk7ZD11O2Rve2lmKChnPTEzPT09ZC50YWcpJiYoZz12b2lkIDAhPT1kLm1lbW9pemVkUHJvcHMuZmFsbGJhY2smJm51bGw9PT1kLm1lbW9pemVkU3RhdGUpLGcpe2lmKG51bGw9PT0odT1kLnVwZGF0ZVF1ZXVlKT8oKHU9bmV3IFNldCkuYWRkKHApLGQudXBkYXRlUXVldWU9dSk6dS5hZGQocCksMD09KDEmZC5tb2RlKSl7ZC5lZmZlY3RUYWd8PTY0LGMuZWZmZWN0VGFnJj0tMTk1NywxPT09Yy50YWcmJihudWxsPT09Yy5hbHRlcm5hdGU/Yy50YWc9MTc6KChsPVhhKDEwNzM3NDE4MjMpKS50YWc9VmEsUWEoYyxsKSkpLGMuZXhwaXJhdGlvblRpbWU9MTA3Mzc0MTgyMzticmVhayBlfXU9bDt2YXIgaD0oYz1zKS5waW5nQ2FjaGU7bnVsbD09PWg/KGg9Yy5waW5nQ2FjaGU9bmV3IFNpLGc9bmV3IFNldCxoLnNldChwLGcpKTp2b2lkIDA9PT0oZz1oLmdldChwKSkmJihnPW5ldyBTZXQsaC5zZXQocCxnKSksZy5oYXModSl8fChnLmFkZCh1KSxjPVhpLmJpbmQobnVsbCxjLHAsdSkscC50aGVuKGMsYykpLC0xPT09Zj9zPTEwNzM3NDE4MjM6KC0xPT09bSYmKG09MTAqKDEwNzM3NDE4MjItdG8ocyxsKSktNWUzKSxzPW0rZiksMDw9cyYmTmk8cyYmKE5pPXMpLGQuZWZmZWN0VGFnfD0yMDQ4LGQuZXhwaXJhdGlvblRpbWU9bDticmVhayBlfWQ9ZC5yZXR1cm59d2hpbGUobnVsbCE9PWQpO2Q9RXJyb3IoKGx0KGMudHlwZSl8fFwiQSBSZWFjdCBjb21wb25lbnRcIikrXCIgc3VzcGVuZGVkIHdoaWxlIHJlbmRlcmluZywgYnV0IG5vIGZhbGxiYWNrIFVJIHdhcyBzcGVjaWZpZWQuXFxuXFxuQWRkIGEgPFN1c3BlbnNlIGZhbGxiYWNrPS4uLj4gY29tcG9uZW50IGhpZ2hlciBpbiB0aGUgdHJlZSB0byBwcm92aWRlIGEgbG9hZGluZyBpbmRpY2F0b3Igb3IgcGxhY2Vob2xkZXIgdG8gZGlzcGxheS5cIitzdChjKSl9Umk9ITAsZD1haShkLGMpLHM9dTtkb3tzd2l0Y2gocy50YWcpe2Nhc2UgMzpzLmVmZmVjdFRhZ3w9MjA0OCxzLmV4cGlyYXRpb25UaW1lPWwsSmEocyxsPUVpKHMsZCxsKSk7YnJlYWsgZTtjYXNlIDE6aWYoZj1kLG09cy50eXBlLGM9cy5zdGF0ZU5vZGUsMD09KDY0JnMuZWZmZWN0VGFnKSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG0uZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxudWxsIT09YyYmXCJmdW5jdGlvblwiPT10eXBlb2YgYy5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1CaXx8IUJpLmhhcyhjKSkpKXtzLmVmZmVjdFRhZ3w9MjA0OCxzLmV4cGlyYXRpb25UaW1lPWwsSmEocyxsPXhpKHMsZixsKSk7YnJlYWsgZX19cz1zLnJldHVybn13aGlsZShudWxsIT09cyl9Q2k9VmkoYSk7Y29udGludWV9bz0hMCxSbCh0KX19YnJlYWt9aWYoQWk9ITEsa2kuY3VycmVudD1uLEJhPUZhPURhPW51bGwsUW8oKSxvKU9pPW51bGwsZS5maW5pc2hlZFdvcms9bnVsbDtlbHNlIGlmKG51bGwhPT1DaSllLmZpbmlzaGVkV29yaz1udWxsO2Vsc2V7aWYobnVsbD09PShuPWUuY3VycmVudC5hbHRlcm5hdGUpJiZpKFwiMjgxXCIpLE9pPW51bGwsUmkpe2lmKG89ZS5sYXRlc3RQZW5kaW5nVGltZSxhPWUubGF0ZXN0U3VzcGVuZGVkVGltZSxsPWUubGF0ZXN0UGluZ2VkVGltZSwwIT09byYmbzxyfHwwIT09YSYmYTxyfHwwIT09bCYmbDxyKXJldHVybiBlbyhlLHIpLHZvaWQgRWwoZSxuLHIsZS5leHBpcmF0aW9uVGltZSwtMSk7aWYoIWUuZGlkRXJyb3ImJnQpcmV0dXJuIGUuZGlkRXJyb3I9ITAscj1lLm5leHRFeHBpcmF0aW9uVGltZVRvV29ya09uPXIsdD1lLmV4cGlyYXRpb25UaW1lPTEwNzM3NDE4MjMsdm9pZCBFbChlLG4scix0LC0xKX10JiYtMSE9PU5pPyhlbyhlLHIpLCh0PTEwKigxMDczNzQxODIyLXRvKGUscikpKTxOaSYmKE5pPXQpLHQ9MTAqKDEwNzM3NDE4MjIteGwoKSksdD1OaS10LEVsKGUsbixyLGUuZXhwaXJhdGlvblRpbWUsMD50PzA6dCkpOihlLnBlbmRpbmdDb21taXRFeHBpcmF0aW9uVGltZT1yLGUuZmluaXNoZWRXb3JrPW4pfX1mdW5jdGlvbiBLaShlLHQpe2Zvcih2YXIgbj1lLnJldHVybjtudWxsIT09bjspe3N3aXRjaChuLnRhZyl7Y2FzZSAxOnZhciByPW4uc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4udHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHIuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09Qml8fCFCaS5oYXMocikpKXJldHVybiBRYShuLGU9eGkobixlPWFpKHQsZSksMTA3Mzc0MTgyMykpLHZvaWQgUWkobiwxMDczNzQxODIzKTticmVhaztjYXNlIDM6cmV0dXJuIFFhKG4sZT1FaShuLGU9YWkodCxlKSwxMDczNzQxODIzKSksdm9pZCBRaShuLDEwNzM3NDE4MjMpfW49bi5yZXR1cm59Mz09PWUudGFnJiYoUWEoZSxuPUVpKGUsbj1haSh0LGUpLDEwNzM3NDE4MjMpKSxRaShlLDEwNzM3NDE4MjMpKX1mdW5jdGlvbiBZaShlLHQpe3ZhciBuPWEudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwoKSxyPXZvaWQgMDtpZigwPT0oMSZ0Lm1vZGUpKXI9MTA3Mzc0MTgyMztlbHNlIGlmKEFpJiYhTWkpcj1JaTtlbHNle3N3aXRjaChuKXtjYXNlIGEudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHk6cj0xMDczNzQxODIzO2JyZWFrO2Nhc2UgYS51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eTpyPTEwNzM3NDE4MjItMTAqKDErKCgxMDczNzQxODIyLWUrMTUpLzEwfDApKTticmVhaztjYXNlIGEudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk6cj0xMDczNzQxODIyLTI1KigxKygoMTA3Mzc0MTgyMi1lKzUwMCkvMjV8MCkpO2JyZWFrO2Nhc2UgYS51bnN0YWJsZV9Mb3dQcmlvcml0eTpjYXNlIGEudW5zdGFibGVfSWRsZVByaW9yaXR5OnI9MTticmVhaztkZWZhdWx0OmkoXCIzMTNcIil9bnVsbCE9PU9pJiZyPT09SWkmJi0tcn1yZXR1cm4gbj09PWEudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHkmJigwPT09bGx8fHI8bGwpJiYobGw9cikscn1mdW5jdGlvbiBYaShlLHQsbil7dmFyIHI9ZS5waW5nQ2FjaGU7bnVsbCE9PXImJnIuZGVsZXRlKHQpLG51bGwhPT1PaSYmSWk9PT1uP09pPW51bGw6KHQ9ZS5lYXJsaWVzdFN1c3BlbmRlZFRpbWUscj1lLmxhdGVzdFN1c3BlbmRlZFRpbWUsMCE9PXQmJm48PXQmJm4+PXImJihlLmRpZEVycm9yPSExLCgwPT09KHQ9ZS5sYXRlc3RQaW5nZWRUaW1lKXx8dD5uKSYmKGUubGF0ZXN0UGluZ2VkVGltZT1uKSxubyhuLGUpLDAhPT0obj1lLmV4cGlyYXRpb25UaW1lKSYmd2woZSxuKSkpfWZ1bmN0aW9uIFppKGUsdCl7ZS5leHBpcmF0aW9uVGltZTx0JiYoZS5leHBpcmF0aW9uVGltZT10KTt2YXIgbj1lLmFsdGVybmF0ZTtudWxsIT09biYmbi5leHBpcmF0aW9uVGltZTx0JiYobi5leHBpcmF0aW9uVGltZT10KTt2YXIgcj1lLnJldHVybixvPW51bGw7aWYobnVsbD09PXImJjM9PT1lLnRhZylvPWUuc3RhdGVOb2RlO2Vsc2UgZm9yKDtudWxsIT09cjspe2lmKG49ci5hbHRlcm5hdGUsci5jaGlsZEV4cGlyYXRpb25UaW1lPHQmJihyLmNoaWxkRXhwaXJhdGlvblRpbWU9dCksbnVsbCE9PW4mJm4uY2hpbGRFeHBpcmF0aW9uVGltZTx0JiYobi5jaGlsZEV4cGlyYXRpb25UaW1lPXQpLG51bGw9PT1yLnJldHVybiYmMz09PXIudGFnKXtvPXIuc3RhdGVOb2RlO2JyZWFrfXI9ci5yZXR1cm59cmV0dXJuIG99ZnVuY3Rpb24gUWkoZSx0KXtudWxsIT09KGU9WmkoZSx0KSkmJighQWkmJjAhPT1JaSYmdD5JaSYmamkoKSxKcihlLHQpLEFpJiYhTWkmJk9pPT09ZXx8d2woZSxlLmV4cGlyYXRpb25UaW1lKSxibD5obCYmKGJsPTAsaShcIjE4NVwiKSkpfWZ1bmN0aW9uIEppKGUsdCxuLHIsbyl7cmV0dXJuIGEudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5KGEudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksZnVuY3Rpb24oKXtyZXR1cm4gZSh0LG4scixvKX0pfXZhciBlbD1udWxsLHRsPW51bGwsbmw9MCxybD12b2lkIDAsb2w9ITEsYWw9bnVsbCxpbD0wLGxsPTAsc2w9ITEsdWw9bnVsbCxjbD0hMSxkbD0hMSxwbD1udWxsLGZsPWEudW5zdGFibGVfbm93KCksbWw9MTA3Mzc0MTgyMi0oZmwvMTB8MCksZ2w9bWwsaGw9NTAsYmw9MCx5bD1udWxsO2Z1bmN0aW9uIHZsKCl7bWw9MTA3Mzc0MTgyMi0oKGEudW5zdGFibGVfbm93KCktZmwpLzEwfDApfWZ1bmN0aW9uIFNsKGUsdCl7aWYoMCE9PW5sKXtpZih0PG5sKXJldHVybjtudWxsIT09cmwmJmEudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2socmwpfW5sPXQsZT1hLnVuc3RhYmxlX25vdygpLWZsLHJsPWEudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhBbCx7dGltZW91dDoxMCooMTA3Mzc0MTgyMi10KS1lfSl9ZnVuY3Rpb24gRWwoZSx0LG4scixvKXtlLmV4cGlyYXRpb25UaW1lPXIsMCE9PW98fFRsKCk/MDxvJiYoZS50aW1lb3V0SGFuZGxlPXZyKGZ1bmN0aW9uKGUsdCxuKXtlLnBlbmRpbmdDb21taXRFeHBpcmF0aW9uVGltZT1uLGUuZmluaXNoZWRXb3JrPXQsdmwoKSxnbD1tbCxPbChlLG4pfS5iaW5kKG51bGwsZSx0LG4pLG8pKTooZS5wZW5kaW5nQ29tbWl0RXhwaXJhdGlvblRpbWU9bixlLmZpbmlzaGVkV29yaz10KX1mdW5jdGlvbiB4bCgpe3JldHVybiBvbD9nbDooa2woKSwwIT09aWwmJjEhPT1pbHx8KHZsKCksZ2w9bWwpLGdsKX1mdW5jdGlvbiB3bChlLHQpe251bGw9PT1lLm5leHRTY2hlZHVsZWRSb290PyhlLmV4cGlyYXRpb25UaW1lPXQsbnVsbD09PXRsPyhlbD10bD1lLGUubmV4dFNjaGVkdWxlZFJvb3Q9ZSk6KHRsPXRsLm5leHRTY2hlZHVsZWRSb290PWUpLm5leHRTY2hlZHVsZWRSb290PWVsKTp0PmUuZXhwaXJhdGlvblRpbWUmJihlLmV4cGlyYXRpb25UaW1lPXQpLG9sfHwoY2w/ZGwmJihhbD1lLGlsPTEwNzM3NDE4MjMsSWwoZSwxMDczNzQxODIzLCExKSk6MTA3Mzc0MTgyMz09PXQ/Q2woMTA3Mzc0MTgyMywhMSk6U2woZSx0KSl9ZnVuY3Rpb24ga2woKXt2YXIgZT0wLHQ9bnVsbDtpZihudWxsIT09dGwpZm9yKHZhciBuPXRsLHI9ZWw7bnVsbCE9PXI7KXt2YXIgbz1yLmV4cGlyYXRpb25UaW1lO2lmKDA9PT1vKXtpZigobnVsbD09PW58fG51bGw9PT10bCkmJmkoXCIyNDRcIikscj09PXIubmV4dFNjaGVkdWxlZFJvb3Qpe2VsPXRsPXIubmV4dFNjaGVkdWxlZFJvb3Q9bnVsbDticmVha31pZihyPT09ZWwpZWw9bz1yLm5leHRTY2hlZHVsZWRSb290LHRsLm5leHRTY2hlZHVsZWRSb290PW8sci5uZXh0U2NoZWR1bGVkUm9vdD1udWxsO2Vsc2V7aWYocj09PXRsKXsodGw9bikubmV4dFNjaGVkdWxlZFJvb3Q9ZWwsci5uZXh0U2NoZWR1bGVkUm9vdD1udWxsO2JyZWFrfW4ubmV4dFNjaGVkdWxlZFJvb3Q9ci5uZXh0U2NoZWR1bGVkUm9vdCxyLm5leHRTY2hlZHVsZWRSb290PW51bGx9cj1uLm5leHRTY2hlZHVsZWRSb290fWVsc2V7aWYobz5lJiYoZT1vLHQ9cikscj09PXRsKWJyZWFrO2lmKDEwNzM3NDE4MjM9PT1lKWJyZWFrO249cixyPXIubmV4dFNjaGVkdWxlZFJvb3R9fWFsPXQsaWw9ZX12YXIgX2w9ITE7ZnVuY3Rpb24gVGwoKXtyZXR1cm4hIV9sfHwhIWEudW5zdGFibGVfc2hvdWxkWWllbGQoKSYmKF9sPSEwKX1mdW5jdGlvbiBBbCgpe3RyeXtpZighVGwoKSYmbnVsbCE9PWVsKXt2bCgpO3ZhciBlPWVsO2Rve3ZhciB0PWUuZXhwaXJhdGlvblRpbWU7MCE9PXQmJm1sPD10JiYoZS5uZXh0RXhwaXJhdGlvblRpbWVUb1dvcmtPbj1tbCksZT1lLm5leHRTY2hlZHVsZWRSb290fXdoaWxlKGUhPT1lbCl9Q2woMCwhMCl9ZmluYWxseXtfbD0hMX19ZnVuY3Rpb24gQ2woZSx0KXtpZihrbCgpLHQpZm9yKHZsKCksZ2w9bWw7bnVsbCE9PWFsJiYwIT09aWwmJmU8PWlsJiYhKF9sJiZtbD5pbCk7KUlsKGFsLGlsLG1sPmlsKSxrbCgpLHZsKCksZ2w9bWw7ZWxzZSBmb3IoO251bGwhPT1hbCYmMCE9PWlsJiZlPD1pbDspSWwoYWwsaWwsITEpLGtsKCk7aWYodCYmKG5sPTAscmw9bnVsbCksMCE9PWlsJiZTbChhbCxpbCksYmw9MCx5bD1udWxsLG51bGwhPT1wbClmb3IoZT1wbCxwbD1udWxsLHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG49ZVt0XTt0cnl7bi5fb25Db21wbGV0ZSgpfWNhdGNoKGUpe3NsfHwoc2w9ITAsdWw9ZSl9fWlmKHNsKXRocm93IGU9dWwsdWw9bnVsbCxzbD0hMSxlfWZ1bmN0aW9uIE9sKGUsdCl7b2wmJmkoXCIyNTNcIiksYWw9ZSxpbD10LElsKGUsdCwhMSksQ2woMTA3Mzc0MTgyMywhMSl9ZnVuY3Rpb24gSWwoZSx0LG4pe2lmKG9sJiZpKFwiMjQ1XCIpLG9sPSEwLG4pe3ZhciByPWUuZmluaXNoZWRXb3JrO251bGwhPT1yP05sKGUscix0KTooZS5maW5pc2hlZFdvcms9bnVsbCwtMSE9PShyPWUudGltZW91dEhhbmRsZSkmJihlLnRpbWVvdXRIYW5kbGU9LTEsU3IocikpLHFpKGUsbiksbnVsbCE9PShyPWUuZmluaXNoZWRXb3JrKSYmKFRsKCk/ZS5maW5pc2hlZFdvcms9cjpObChlLHIsdCkpKX1lbHNlIG51bGwhPT0ocj1lLmZpbmlzaGVkV29yayk/TmwoZSxyLHQpOihlLmZpbmlzaGVkV29yaz1udWxsLC0xIT09KHI9ZS50aW1lb3V0SGFuZGxlKSYmKGUudGltZW91dEhhbmRsZT0tMSxTcihyKSkscWkoZSxuKSxudWxsIT09KHI9ZS5maW5pc2hlZFdvcmspJiZObChlLHIsdCkpO29sPSExfWZ1bmN0aW9uIE5sKGUsdCxuKXt2YXIgcj1lLmZpcnN0QmF0Y2g7aWYobnVsbCE9PXImJnIuX2V4cGlyYXRpb25UaW1lPj1uJiYobnVsbD09PXBsP3BsPVtyXTpwbC5wdXNoKHIpLHIuX2RlZmVyKSlyZXR1cm4gZS5maW5pc2hlZFdvcms9dCx2b2lkKGUuZXhwaXJhdGlvblRpbWU9MCk7ZS5maW5pc2hlZFdvcms9bnVsbCxlPT09eWw/YmwrKzooeWw9ZSxibD0wKSxhLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eShhLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5LGZ1bmN0aW9uKCl7R2koZSx0KX0pfWZ1bmN0aW9uIFJsKGUpe251bGw9PT1hbCYmaShcIjI0NlwiKSxhbC5leHBpcmF0aW9uVGltZT0wLHNsfHwoc2w9ITAsdWw9ZSl9ZnVuY3Rpb24gUGwoZSx0KXt2YXIgbj1jbDtjbD0hMDt0cnl7cmV0dXJuIGUodCl9ZmluYWxseXsoY2w9bil8fG9sfHxDbCgxMDczNzQxODIzLCExKX19ZnVuY3Rpb24gTWwoZSx0KXtpZihjbCYmIWRsKXtkbD0hMDt0cnl7cmV0dXJuIGUodCl9ZmluYWxseXtkbD0hMX19cmV0dXJuIGUodCl9ZnVuY3Rpb24gTGwoZSx0LG4pe2NsfHxvbHx8MD09PWxsfHwoQ2wobGwsITEpLGxsPTApO3ZhciByPWNsO2NsPSEwO3RyeXtyZXR1cm4gYS51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHkoYS51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxmdW5jdGlvbigpe3JldHVybiBlKHQsbil9KX1maW5hbGx5eyhjbD1yKXx8b2x8fENsKDEwNzM3NDE4MjMsITEpfX1mdW5jdGlvbiBEbChlLHQsbixyLG8pe3ZhciBhPXQuY3VycmVudDtlOmlmKG4pe3Q6ezI9PT10bihuPW4uX3JlYWN0SW50ZXJuYWxGaWJlcikmJjE9PT1uLnRhZ3x8aShcIjE3MFwiKTt2YXIgbD1uO2Rve3N3aXRjaChsLnRhZyl7Y2FzZSAzOmw9bC5zdGF0ZU5vZGUuY29udGV4dDticmVhayB0O2Nhc2UgMTppZihNcihsLnR5cGUpKXtsPWwuc3RhdGVOb2RlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0O2JyZWFrIHR9fWw9bC5yZXR1cm59d2hpbGUobnVsbCE9PWwpO2koXCIxNzFcIiksbD12b2lkIDB9aWYoMT09PW4udGFnKXt2YXIgcz1uLnR5cGU7aWYoTXIocykpe249QnIobixzLGwpO2JyZWFrIGV9fW49bH1lbHNlIG49T3I7cmV0dXJuIG51bGw9PT10LmNvbnRleHQ/dC5jb250ZXh0PW46dC5wZW5kaW5nQ29udGV4dD1uLHQ9bywobz1YYShyKSkucGF5bG9hZD17ZWxlbWVudDplfSxudWxsIT09KHQ9dm9pZCAwPT09dD9udWxsOnQpJiYoby5jYWxsYmFjaz10KSxXaSgpLFFhKGEsbyksUWkoYSxyKSxyfWZ1bmN0aW9uIEZsKGUsdCxuLHIpe3ZhciBvPXQuY3VycmVudDtyZXR1cm4gRGwoZSx0LG4sbz1ZaSh4bCgpLG8pLHIpfWZ1bmN0aW9uIEJsKGUpe2lmKCEoZT1lLmN1cnJlbnQpLmNoaWxkKXJldHVybiBudWxsO3N3aXRjaChlLmNoaWxkLnRhZyl7Y2FzZSA1OmRlZmF1bHQ6cmV0dXJuIGUuY2hpbGQuc3RhdGVOb2RlfX1mdW5jdGlvbiBqbChlKXt2YXIgdD0xMDczNzQxODIyLTI1KigxKygoMTA3Mzc0MTgyMi14bCgpKzUwMCkvMjV8MCkpO3Q+PVRpJiYodD1UaS0xKSx0aGlzLl9leHBpcmF0aW9uVGltZT1UaT10LHRoaXMuX3Jvb3Q9ZSx0aGlzLl9jYWxsYmFja3M9dGhpcy5fbmV4dD1udWxsLHRoaXMuX2hhc0NoaWxkcmVuPXRoaXMuX2RpZENvbXBsZXRlPSExLHRoaXMuX2NoaWxkcmVuPW51bGwsdGhpcy5fZGVmZXI9ITB9ZnVuY3Rpb24gVWwoKXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9kaWRDb21taXQ9ITEsdGhpcy5fb25Db21taXQ9dGhpcy5fb25Db21taXQuYmluZCh0aGlzKX1mdW5jdGlvbiB6bChlLHQsbil7ZT17Y3VycmVudDp0PVZyKDMsbnVsbCxudWxsLHQ/MzowKSxjb250YWluZXJJbmZvOmUscGVuZGluZ0NoaWxkcmVuOm51bGwscGluZ0NhY2hlOm51bGwsZWFybGllc3RQZW5kaW5nVGltZTowLGxhdGVzdFBlbmRpbmdUaW1lOjAsZWFybGllc3RTdXNwZW5kZWRUaW1lOjAsbGF0ZXN0U3VzcGVuZGVkVGltZTowLGxhdGVzdFBpbmdlZFRpbWU6MCxkaWRFcnJvcjohMSxwZW5kaW5nQ29tbWl0RXhwaXJhdGlvblRpbWU6MCxmaW5pc2hlZFdvcms6bnVsbCx0aW1lb3V0SGFuZGxlOi0xLGNvbnRleHQ6bnVsbCxwZW5kaW5nQ29udGV4dDpudWxsLGh5ZHJhdGU6bixuZXh0RXhwaXJhdGlvblRpbWVUb1dvcmtPbjowLGV4cGlyYXRpb25UaW1lOjAsZmlyc3RCYXRjaDpudWxsLG5leHRTY2hlZHVsZWRSb290Om51bGx9LHRoaXMuX2ludGVybmFsUm9vdD10LnN0YXRlTm9kZT1lfWZ1bmN0aW9uIEhsKGUpe3JldHVybiEoIWV8fDEhPT1lLm5vZGVUeXBlJiY5IT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBlJiYoOCE9PWUubm9kZVR5cGV8fFwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlIFwiIT09ZS5ub2RlVmFsdWUpKX1mdW5jdGlvbiBXbChlLHQsbixyLG8pe3ZhciBhPW4uX3JlYWN0Um9vdENvbnRhaW5lcjtpZihhKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBvKXt2YXIgaT1vO289ZnVuY3Rpb24oKXt2YXIgZT1CbChhLl9pbnRlcm5hbFJvb3QpO2kuY2FsbChlKX19bnVsbCE9ZT9hLmxlZ2FjeV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihlLHQsbyk6YS5yZW5kZXIodCxvKX1lbHNle2lmKGE9bi5fcmVhY3RSb290Q29udGFpbmVyPWZ1bmN0aW9uKGUsdCl7aWYodHx8KHQ9ISghKHQ9ZT85PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLmZpcnN0Q2hpbGQ6bnVsbCl8fDEhPT10Lm5vZGVUeXBlfHwhdC5oYXNBdHRyaWJ1dGUoXCJkYXRhLXJlYWN0cm9vdFwiKSkpLCF0KWZvcih2YXIgbjtuPWUubGFzdENoaWxkOyllLnJlbW92ZUNoaWxkKG4pO3JldHVybiBuZXcgemwoZSwhMSx0KX0obixyKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBvKXt2YXIgbD1vO289ZnVuY3Rpb24oKXt2YXIgZT1CbChhLl9pbnRlcm5hbFJvb3QpO2wuY2FsbChlKX19TWwoZnVuY3Rpb24oKXtudWxsIT1lP2EubGVnYWN5X3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKGUsdCxvKTphLnJlbmRlcih0LG8pfSl9cmV0dXJuIEJsKGEuX2ludGVybmFsUm9vdCl9ZnVuY3Rpb24gR2woZSx0KXt2YXIgbj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtyZXR1cm4gSGwodCl8fGkoXCIyMDBcIiksZnVuY3Rpb24oZSx0LG4pe3ZhciByPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjpLZSxrZXk6bnVsbD09cj9udWxsOlwiXCIrcixjaGlsZHJlbjplLGNvbnRhaW5lckluZm86dCxpbXBsZW1lbnRhdGlvbjpufX0oZSx0LG51bGwsbil9VGU9ZnVuY3Rpb24oZSx0LG4pe3N3aXRjaCh0KXtjYXNlXCJpbnB1dFwiOmlmKHh0KGUsbiksdD1uLm5hbWUsXCJyYWRpb1wiPT09bi50eXBlJiZudWxsIT10KXtmb3Iobj1lO24ucGFyZW50Tm9kZTspbj1uLnBhcmVudE5vZGU7Zm9yKG49bi5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbbmFtZT1cIitKU09OLnN0cmluZ2lmeShcIlwiK3QpKyddW3R5cGU9XCJyYWRpb1wiXScpLHQ9MDt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI9blt0XTtpZihyIT09ZSYmci5mb3JtPT09ZS5mb3JtKXt2YXIgbz1CKHIpO298fGkoXCI5MFwiKSxXZShyKSx4dChyLG8pfX19YnJlYWs7Y2FzZVwidGV4dGFyZWFcIjpabihlLG4pO2JyZWFrO2Nhc2VcInNlbGVjdFwiOm51bGwhPSh0PW4udmFsdWUpJiZLbihlLCEhbi5tdWx0aXBsZSx0LCExKX19LGpsLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSl7dGhpcy5fZGVmZXJ8fGkoXCIyNTBcIiksdGhpcy5faGFzQ2hpbGRyZW49ITAsdGhpcy5fY2hpbGRyZW49ZTt2YXIgdD10aGlzLl9yb290Ll9pbnRlcm5hbFJvb3Qsbj10aGlzLl9leHBpcmF0aW9uVGltZSxyPW5ldyBVbDtyZXR1cm4gRGwoZSx0LG51bGwsbixyLl9vbkNvbW1pdCkscn0samwucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oZSl7aWYodGhpcy5fZGlkQ29tcGxldGUpZSgpO2Vsc2V7dmFyIHQ9dGhpcy5fY2FsbGJhY2tzO251bGw9PT10JiYodD10aGlzLl9jYWxsYmFja3M9W10pLHQucHVzaChlKX19LGpsLnByb3RvdHlwZS5jb21taXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9yb290Ll9pbnRlcm5hbFJvb3QsdD1lLmZpcnN0QmF0Y2g7aWYodGhpcy5fZGVmZXImJm51bGwhPT10fHxpKFwiMjUxXCIpLHRoaXMuX2hhc0NoaWxkcmVuKXt2YXIgbj10aGlzLl9leHBpcmF0aW9uVGltZTtpZih0IT09dGhpcyl7dGhpcy5faGFzQ2hpbGRyZW4mJihuPXRoaXMuX2V4cGlyYXRpb25UaW1lPXQuX2V4cGlyYXRpb25UaW1lLHRoaXMucmVuZGVyKHRoaXMuX2NoaWxkcmVuKSk7Zm9yKHZhciByPW51bGwsbz10O28hPT10aGlzOylyPW8sbz1vLl9uZXh0O251bGw9PT1yJiZpKFwiMjUxXCIpLHIuX25leHQ9by5fbmV4dCx0aGlzLl9uZXh0PXQsZS5maXJzdEJhdGNoPXRoaXN9dGhpcy5fZGVmZXI9ITEsT2woZSxuKSx0PXRoaXMuX25leHQsdGhpcy5fbmV4dD1udWxsLG51bGwhPT0odD1lLmZpcnN0QmF0Y2g9dCkmJnQuX2hhc0NoaWxkcmVuJiZ0LnJlbmRlcih0Ll9jaGlsZHJlbil9ZWxzZSB0aGlzLl9uZXh0PW51bGwsdGhpcy5fZGVmZXI9ITF9LGpsLnByb3RvdHlwZS5fb25Db21wbGV0ZT1mdW5jdGlvbigpe2lmKCF0aGlzLl9kaWRDb21wbGV0ZSl7dGhpcy5fZGlkQ29tcGxldGU9ITA7dmFyIGU9dGhpcy5fY2FsbGJhY2tzO2lmKG51bGwhPT1lKWZvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKSgwLGVbdF0pKCl9fSxVbC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihlKXtpZih0aGlzLl9kaWRDb21taXQpZSgpO2Vsc2V7dmFyIHQ9dGhpcy5fY2FsbGJhY2tzO251bGw9PT10JiYodD10aGlzLl9jYWxsYmFja3M9W10pLHQucHVzaChlKX19LFVsLnByb3RvdHlwZS5fb25Db21taXQ9ZnVuY3Rpb24oKXtpZighdGhpcy5fZGlkQ29tbWl0KXt0aGlzLl9kaWRDb21taXQ9ITA7dmFyIGU9dGhpcy5fY2FsbGJhY2tzO2lmKG51bGwhPT1lKWZvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgbj1lW3RdO1wiZnVuY3Rpb25cIiE9dHlwZW9mIG4mJmkoXCIxOTFcIixuKSxuKCl9fX0semwucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2ludGVybmFsUm9vdCxyPW5ldyBVbDtyZXR1cm4gbnVsbCE9PSh0PXZvaWQgMD09PXQ/bnVsbDp0KSYmci50aGVuKHQpLEZsKGUsbixudWxsLHIuX29uQ29tbWl0KSxyfSx6bC5wcm90b3R5cGUudW5tb3VudD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9pbnRlcm5hbFJvb3Qsbj1uZXcgVWw7cmV0dXJuIG51bGwhPT0oZT12b2lkIDA9PT1lP251bGw6ZSkmJm4udGhlbihlKSxGbChudWxsLHQsbnVsbCxuLl9vbkNvbW1pdCksbn0semwucHJvdG90eXBlLmxlZ2FjeV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5faW50ZXJuYWxSb290LG89bmV3IFVsO3JldHVybiBudWxsIT09KG49dm9pZCAwPT09bj9udWxsOm4pJiZvLnRoZW4obiksRmwodCxyLGUsby5fb25Db21taXQpLG99LHpsLnByb3RvdHlwZS5jcmVhdGVCYXRjaD1mdW5jdGlvbigpe3ZhciBlPW5ldyBqbCh0aGlzKSx0PWUuX2V4cGlyYXRpb25UaW1lLG49dGhpcy5faW50ZXJuYWxSb290LHI9bi5maXJzdEJhdGNoO2lmKG51bGw9PT1yKW4uZmlyc3RCYXRjaD1lLGUuX25leHQ9bnVsbDtlbHNle2ZvcihuPW51bGw7bnVsbCE9PXImJnIuX2V4cGlyYXRpb25UaW1lPj10OyluPXIscj1yLl9uZXh0O2UuX25leHQ9cixudWxsIT09biYmKG4uX25leHQ9ZSl9cmV0dXJuIGV9LFJlPVBsLFBlPUxsLE1lPWZ1bmN0aW9uKCl7b2x8fDA9PT1sbHx8KENsKGxsLCExKSxsbD0wKX07dmFyIFZsPXtjcmVhdGVQb3J0YWw6R2wsZmluZERPTU5vZGU6ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtpZigxPT09ZS5ub2RlVHlwZSlyZXR1cm4gZTt2YXIgdD1lLl9yZWFjdEludGVybmFsRmliZXI7cmV0dXJuIHZvaWQgMD09PXQmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnJlbmRlcj9pKFwiMTg4XCIpOmkoXCIyNjhcIixPYmplY3Qua2V5cyhlKSkpLGU9bnVsbD09PShlPXJuKHQpKT9udWxsOmUuc3RhdGVOb2RlfSxoeWRyYXRlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gSGwodCl8fGkoXCIyMDBcIiksV2wobnVsbCxlLHQsITAsbil9LHJlbmRlcjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEhsKHQpfHxpKFwiMjAwXCIpLFdsKG51bGwsZSx0LCExLG4pfSx1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gSGwobil8fGkoXCIyMDBcIiksKG51bGw9PWV8fHZvaWQgMD09PWUuX3JlYWN0SW50ZXJuYWxGaWJlcikmJmkoXCIzOFwiKSxXbChlLHQsbiwhMSxyKX0sdW5tb3VudENvbXBvbmVudEF0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gSGwoZSl8fGkoXCI0MFwiKSwhIWUuX3JlYWN0Um9vdENvbnRhaW5lciYmKE1sKGZ1bmN0aW9uKCl7V2wobnVsbCxudWxsLGUsITEsZnVuY3Rpb24oKXtlLl9yZWFjdFJvb3RDb250YWluZXI9bnVsbH0pfSksITApfSx1bnN0YWJsZV9jcmVhdGVQb3J0YWw6ZnVuY3Rpb24oKXtyZXR1cm4gR2wuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9LHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzOlBsLHVuc3RhYmxlX2ludGVyYWN0aXZlVXBkYXRlczpMbCxmbHVzaFN5bmM6ZnVuY3Rpb24oZSx0KXtvbCYmaShcIjE4N1wiKTt2YXIgbj1jbDtjbD0hMDt0cnl7cmV0dXJuIEppKGUsdCl9ZmluYWxseXtjbD1uLENsKDEwNzM3NDE4MjMsITEpfX0sdW5zdGFibGVfY3JlYXRlUm9vdDpmdW5jdGlvbihlLHQpe3JldHVybiBIbChlKXx8aShcIjI5OVwiLFwidW5zdGFibGVfY3JlYXRlUm9vdFwiKSxuZXcgemwoZSwhMCxudWxsIT10JiYhMD09PXQuaHlkcmF0ZSl9LHVuc3RhYmxlX2ZsdXNoQ29udHJvbGxlZDpmdW5jdGlvbihlKXt2YXIgdD1jbDtjbD0hMDt0cnl7SmkoZSl9ZmluYWxseXsoY2w9dCl8fG9sfHxDbCgxMDczNzQxODIzLCExKX19LF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOntFdmVudHM6W0QsRixCLE8uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lLHksRyxmdW5jdGlvbihlKXtUKGUsVyl9LEllLE5lLENuLE5dfX07IWZ1bmN0aW9uKGUpe3ZhciB0PWUuZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U7KGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pcmV0dXJuITE7dmFyIHQ9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKHQuaXNEaXNhYmxlZHx8IXQuc3VwcG9ydHNGaWJlcilyZXR1cm4hMDt0cnl7dmFyIG49dC5pbmplY3QoZSk7enI9V3IoZnVuY3Rpb24oZSl7cmV0dXJuIHQub25Db21taXRGaWJlclJvb3QobixlKX0pLEhyPVdyKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm9uQ29tbWl0RmliZXJVbm1vdW50KG4sZSl9KX1jYXRjaChlKXt9fSkobyh7fSxlLHtvdmVycmlkZVByb3BzOm51bGwsY3VycmVudERpc3BhdGNoZXJSZWY6R2UuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixmaW5kSG9zdEluc3RhbmNlQnlGaWJlcjpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PShlPXJuKGUpKT9udWxsOmUuc3RhdGVOb2RlfSxmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gdD90KGUpOm51bGx9fSkpfSh7ZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6TCxidW5kbGVUeXBlOjAsdmVyc2lvbjpcIjE2LjguM1wiLHJlbmRlcmVyUGFja2FnZU5hbWU6XCJyZWFjdC1kb21cIn0pO3ZhciAkbD17ZGVmYXVsdDpWbH0scWw9JGwmJlZsfHwkbDtlLmV4cG9ydHM9cWwuZGVmYXVsdHx8cWx9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bigyNzQpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe1xuLyoqIEBsaWNlbnNlIFJlYWN0IHYwLjEzLjNcbiAqIHNjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgbj1udWxsLHI9ITEsbz0zLGE9LTEsaT0tMSxsPSExLHM9ITE7ZnVuY3Rpb24gdSgpe2lmKCFsKXt2YXIgZT1uLmV4cGlyYXRpb25UaW1lO3M/dygpOnM9ITAseChwLGUpfX1mdW5jdGlvbiBjKCl7dmFyIGU9bix0PW4ubmV4dDtpZihuPT09dCluPW51bGw7ZWxzZXt2YXIgcj1uLnByZXZpb3VzO249ci5uZXh0PXQsdC5wcmV2aW91cz1yfWUubmV4dD1lLnByZXZpb3VzPW51bGwscj1lLmNhbGxiYWNrLHQ9ZS5leHBpcmF0aW9uVGltZSxlPWUucHJpb3JpdHlMZXZlbDt2YXIgYT1vLGw9aTtvPWUsaT10O3RyeXt2YXIgcz1yKCl9ZmluYWxseXtvPWEsaT1sfWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHMpaWYocz17Y2FsbGJhY2s6cyxwcmlvcml0eUxldmVsOmUsZXhwaXJhdGlvblRpbWU6dCxuZXh0Om51bGwscHJldmlvdXM6bnVsbH0sbnVsbD09PW4pbj1zLm5leHQ9cy5wcmV2aW91cz1zO2Vsc2V7cj1udWxsLGU9bjtkb3tpZihlLmV4cGlyYXRpb25UaW1lPj10KXtyPWU7YnJlYWt9ZT1lLm5leHR9d2hpbGUoZSE9PW4pO251bGw9PT1yP3I9bjpyPT09biYmKG49cyx1KCkpLCh0PXIucHJldmlvdXMpLm5leHQ9ci5wcmV2aW91cz1zLHMubmV4dD1yLHMucHJldmlvdXM9dH19ZnVuY3Rpb24gZCgpe2lmKC0xPT09YSYmbnVsbCE9PW4mJjE9PT1uLnByaW9yaXR5TGV2ZWwpe2w9ITA7dHJ5e2Rve2MoKX13aGlsZShudWxsIT09biYmMT09PW4ucHJpb3JpdHlMZXZlbCl9ZmluYWxseXtsPSExLG51bGwhPT1uP3UoKTpzPSExfX19ZnVuY3Rpb24gcChlKXtsPSEwO3ZhciBvPXI7cj1lO3RyeXtpZihlKWZvcig7bnVsbCE9PW47KXt2YXIgYT10LnVuc3RhYmxlX25vdygpO2lmKCEobi5leHBpcmF0aW9uVGltZTw9YSkpYnJlYWs7ZG97YygpfXdoaWxlKG51bGwhPT1uJiZuLmV4cGlyYXRpb25UaW1lPD1hKX1lbHNlIGlmKG51bGwhPT1uKWRve2MoKX13aGlsZShudWxsIT09biYmIWsoKSl9ZmluYWxseXtsPSExLHI9byxudWxsIT09bj91KCk6cz0hMSxkKCl9fXZhciBmLG0sZz1EYXRlLGg9XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OnZvaWQgMCxiPVwiZnVuY3Rpb25cIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6dm9pZCAwLHk9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP3JlcXVlc3RBbmltYXRpb25GcmFtZTp2b2lkIDAsdj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjYW5jZWxBbmltYXRpb25GcmFtZT9jYW5jZWxBbmltYXRpb25GcmFtZTp2b2lkIDA7ZnVuY3Rpb24gUyhlKXtmPXkoZnVuY3Rpb24odCl7YihtKSxlKHQpfSksbT1oKGZ1bmN0aW9uKCl7dihmKSxlKHQudW5zdGFibGVfbm93KCkpfSwxMDApfWlmKFwib2JqZWN0XCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgcGVyZm9ybWFuY2Uubm93KXt2YXIgRT1wZXJmb3JtYW5jZTt0LnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBFLm5vdygpfX1lbHNlIHQudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGcubm93KCl9O3ZhciB4LHcsayxfPW51bGw7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz9fPXdpbmRvdzp2b2lkIDAhPT1lJiYoXz1lKSxfJiZfLl9zY2hlZE1vY2spe3ZhciBUPV8uX3NjaGVkTW9jazt4PVRbMF0sdz1UWzFdLGs9VFsyXSx0LnVuc3RhYmxlX25vdz1UWzNdfWVsc2UgaWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvd3x8XCJmdW5jdGlvblwiIT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBBPW51bGwsQz1mdW5jdGlvbihlKXtpZihudWxsIT09QSl0cnl7QShlKX1maW5hbGx5e0E9bnVsbH19O3g9ZnVuY3Rpb24oZSl7bnVsbCE9PUE/c2V0VGltZW91dCh4LDAsZSk6KEE9ZSxzZXRUaW1lb3V0KEMsMCwhMSkpfSx3PWZ1bmN0aW9uKCl7QT1udWxsfSxrPWZ1bmN0aW9uKCl7cmV0dXJuITF9fWVsc2V7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGNvbnNvbGUmJihcImZ1bmN0aW9uXCIhPXR5cGVvZiB5JiZjb25zb2xlLmVycm9yKFwiVGhpcyBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUuIE1ha2Ugc3VyZSB0aGF0IHlvdSBsb2FkIGEgcG9seWZpbGwgaW4gb2xkZXIgYnJvd3NlcnMuIGh0dHBzOi8vZmIubWUvcmVhY3QtcG9seWZpbGxzXCIpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIHYmJmNvbnNvbGUuZXJyb3IoXCJUaGlzIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IGNhbmNlbEFuaW1hdGlvbkZyYW1lLiBNYWtlIHN1cmUgdGhhdCB5b3UgbG9hZCBhIHBvbHlmaWxsIGluIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL2ZiLm1lL3JlYWN0LXBvbHlmaWxsc1wiKSk7dmFyIE89bnVsbCxJPSExLE49LTEsUj0hMSxQPSExLE09MCxMPTMzLEQ9MzM7az1mdW5jdGlvbigpe3JldHVybiBNPD10LnVuc3RhYmxlX25vdygpfTt2YXIgRj1uZXcgTWVzc2FnZUNoYW5uZWwsQj1GLnBvcnQyO0YucG9ydDEub25tZXNzYWdlPWZ1bmN0aW9uKCl7ST0hMTt2YXIgZT1PLG49TjtPPW51bGwsTj0tMTt2YXIgcj10LnVuc3RhYmxlX25vdygpLG89ITE7aWYoMD49TS1yKXtpZighKC0xIT09biYmbjw9cikpcmV0dXJuIFJ8fChSPSEwLFMoaikpLE89ZSx2b2lkKE49bik7bz0hMH1pZihudWxsIT09ZSl7UD0hMDt0cnl7ZShvKX1maW5hbGx5e1A9ITF9fX07dmFyIGo9ZnVuY3Rpb24oZSl7aWYobnVsbCE9PU8pe1Moaik7dmFyIHQ9ZS1NK0Q7dDxEJiZMPEQ/KDg+dCYmKHQ9OCksRD10PEw/TDp0KTpMPXQsTT1lK0QsSXx8KEk9ITAsQi5wb3N0TWVzc2FnZSh2b2lkIDApKX1lbHNlIFI9ITF9O3g9ZnVuY3Rpb24oZSx0KXtPPWUsTj10LFB8fDA+dD9CLnBvc3RNZXNzYWdlKHZvaWQgMCk6Unx8KFI9ITAsUyhqKSl9LHc9ZnVuY3Rpb24oKXtPPW51bGwsST0hMSxOPS0xfX10LnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTEsdC51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eT0yLHQudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9Myx0LnVuc3RhYmxlX0lkbGVQcmlvcml0eT01LHQudW5zdGFibGVfTG93UHJpb3JpdHk9NCx0LnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eT1mdW5jdGlvbihlLG4pe3N3aXRjaChlKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6ZT0zfXZhciByPW8saT1hO289ZSxhPXQudW5zdGFibGVfbm93KCk7dHJ5e3JldHVybiBuKCl9ZmluYWxseXtvPXIsYT1pLGQoKX19LHQudW5zdGFibGVfbmV4dD1mdW5jdGlvbihlKXtzd2l0Y2gobyl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6dmFyIG49MzticmVhaztkZWZhdWx0Om49b312YXIgcj1vLGk9YTtvPW4sYT10LnVuc3RhYmxlX25vdygpO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7bz1yLGE9aSxkKCl9fSx0LnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oZSxyKXt2YXIgaT0tMSE9PWE/YTp0LnVuc3RhYmxlX25vdygpO2lmKFwib2JqZWN0XCI9PXR5cGVvZiByJiZudWxsIT09ciYmXCJudW1iZXJcIj09dHlwZW9mIHIudGltZW91dClyPWkrci50aW1lb3V0O2Vsc2Ugc3dpdGNoKG8pe2Nhc2UgMTpyPWkrLTE7YnJlYWs7Y2FzZSAyOnI9aSsyNTA7YnJlYWs7Y2FzZSA1OnI9aSsxMDczNzQxODIzO2JyZWFrO2Nhc2UgNDpyPWkrMWU0O2JyZWFrO2RlZmF1bHQ6cj1pKzVlM31pZihlPXtjYWxsYmFjazplLHByaW9yaXR5TGV2ZWw6byxleHBpcmF0aW9uVGltZTpyLG5leHQ6bnVsbCxwcmV2aW91czpudWxsfSxudWxsPT09biluPWUubmV4dD1lLnByZXZpb3VzPWUsdSgpO2Vsc2V7aT1udWxsO3ZhciBsPW47ZG97aWYobC5leHBpcmF0aW9uVGltZT5yKXtpPWw7YnJlYWt9bD1sLm5leHR9d2hpbGUobCE9PW4pO251bGw9PT1pP2k9bjppPT09biYmKG49ZSx1KCkpLChyPWkucHJldmlvdXMpLm5leHQ9aS5wcmV2aW91cz1lLGUubmV4dD1pLGUucHJldmlvdXM9cn1yZXR1cm4gZX0sdC51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihlKXt2YXIgdD1lLm5leHQ7aWYobnVsbCE9PXQpe2lmKHQ9PT1lKW49bnVsbDtlbHNle2U9PT1uJiYobj10KTt2YXIgcj1lLnByZXZpb3VzO3IubmV4dD10LHQucHJldmlvdXM9cn1lLm5leHQ9ZS5wcmV2aW91cz1udWxsfX0sdC51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oZSl7dmFyIG49bztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1vLGk9YTtvPW4sYT10LnVuc3RhYmxlX25vdygpO3RyeXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtvPXIsYT1pLGQoKX19fSx0LnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIG99LHQudW5zdGFibGVfc2hvdWxkWWllbGQ9ZnVuY3Rpb24oKXtyZXR1cm4hciYmKG51bGwhPT1uJiZuLmV4cGlyYXRpb25UaW1lPGl8fGsoKSl9LHQudW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtudWxsIT09biYmdSgpfSx0LnVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7fSx0LnVuc3RhYmxlX2dldEZpcnN0Q2FsbGJhY2tOb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIG59fSkuY2FsbCh0aGlzLG4oMjcpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjc2KSxvPW4oMjc3KSxhPW4oMjc4KSxpPW4oMjg0KSxsPW4oMjg2KSxzPW4oMjg3KTtlLmV4cG9ydHM9ZnVuY3Rpb24gZSgpe3ZhciB0PVtdO3ZhciBuPWkoKTt2YXIgeT17fTt2YXIgdj0hMTt2YXIgUz0tMTtFLmRhdGE9ZnVuY3Rpb24oZSx0KXtpZihsKGUpKXJldHVybiAyPT09YXJndW1lbnRzLmxlbmd0aD8oZyhcImRhdGFcIix2KSx5W2VdPXQsRSk6Yy5jYWxsKHksZSkmJnlbZV18fG51bGw7aWYoZSlyZXR1cm4gZyhcImRhdGFcIix2KSx5PWUsRTtyZXR1cm4geX07RS5mcmVlemU9eDtFLmF0dGFjaGVycz10O0UudXNlPWZ1bmN0aW9uKGUpe3ZhciBuO2lmKGcoXCJ1c2VcIix2KSxudWxsPT1lKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpbC5hcHBseShudWxsLGFyZ3VtZW50cyk7ZWxzZXtpZihcIm9iamVjdFwiIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgXCIrZStcImBcIik7XCJsZW5ndGhcImluIGU/aShlKTpvKGUpfW4mJih5LnNldHRpbmdzPXIoeS5zZXR0aW5nc3x8e30sbikpO3JldHVybiBFO2Z1bmN0aW9uIG8oZSl7aShlLnBsdWdpbnMpLGUuc2V0dGluZ3MmJihuPXIobnx8e30sZS5zZXR0aW5ncykpfWZ1bmN0aW9uIGEoZSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSlsKGUpO2Vsc2V7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgdXNhYmxlIHZhbHVlLCBub3QgYFwiK2UrXCJgXCIpO1wibGVuZ3RoXCJpbiBlP2wuYXBwbHkobnVsbCxlKTpvKGUpfX1mdW5jdGlvbiBpKGUpe3ZhciB0LG47aWYobnVsbD09ZSk7ZWxzZXtpZighKFwib2JqZWN0XCI9PXR5cGVvZiBlJiZcImxlbmd0aFwiaW4gZSkpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYSBsaXN0IG9mIHBsdWdpbnMsIG5vdCBgXCIrZStcImBcIik7Zm9yKHQ9ZS5sZW5ndGgsbj0tMTsrK248dDspYShlW25dKX19ZnVuY3Rpb24gbChlLG4pe3ZhciBvPWZ1bmN0aW9uKGUpe3ZhciBuLHI9dC5sZW5ndGgsbz0tMTtmb3IoOysrbzxyOylpZigobj10W29dKVswXT09PWUpcmV0dXJuIG59KGUpO28/KHMob1sxXSkmJnMobikmJihuPXIob1sxXSxuKSksb1sxXT1uKTp0LnB1c2godS5jYWxsKGFyZ3VtZW50cykpfX07RS5wYXJzZT1mdW5jdGlvbihlKXt2YXIgdCxuPWEoZSk7aWYoeCgpLGYoXCJwYXJzZVwiLHQ9RS5QYXJzZXIpLHAodCkpcmV0dXJuIG5ldyB0KFN0cmluZyhuKSxuKS5wYXJzZSgpO3JldHVybiB0KFN0cmluZyhuKSxuKX07RS5zdHJpbmdpZnk9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWEodCk7aWYoeCgpLG0oXCJzdHJpbmdpZnlcIixuPUUuQ29tcGlsZXIpLGgoZSkscChuKSlyZXR1cm4gbmV3IG4oZSxyKS5jb21waWxlKCk7cmV0dXJuIG4oZSxyKX07RS5ydW49dztFLnJ1blN5bmM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPSExO3JldHVybiB3KGUsdCxmdW5jdGlvbihlLHQpe3I9ITAsbyhlKSxuPXR9KSxiKFwicnVuU3luY1wiLFwicnVuXCIsciksbn07RS5wcm9jZXNzPWs7RS5wcm9jZXNzU3luYz1mdW5jdGlvbihlKXt2YXIgdCxuPSExO3JldHVybiB4KCksZihcInByb2Nlc3NTeW5jXCIsRS5QYXJzZXIpLG0oXCJwcm9jZXNzU3luY1wiLEUuQ29tcGlsZXIpLGsodD1hKGUpLGZ1bmN0aW9uKGUpe249ITAsbyhlKX0pLGIoXCJwcm9jZXNzU3luY1wiLFwicHJvY2Vzc1wiLG4pLHR9O3JldHVybiBFO2Z1bmN0aW9uIEUoKXtmb3IodmFyIG49ZSgpLG89dC5sZW5ndGgsYT0tMTsrK2E8bzspbi51c2UuYXBwbHkobnVsbCx0W2FdKTtyZXR1cm4gbi5kYXRhKHIoITAse30seSkpLG59ZnVuY3Rpb24geCgpe3ZhciBlLHIsbyxhO2lmKHYpcmV0dXJuIEU7Zm9yKDsrK1M8dC5sZW5ndGg7KWU9dFtTXSxyPWVbMF0sbz1lWzFdLGE9bnVsbCwhMSE9PW8mJighMD09PW8mJihlWzFdPXZvaWQgMCksXCJmdW5jdGlvblwiPT10eXBlb2YoYT1yLmFwcGx5KEUsZS5zbGljZSgxKSkpJiZuLnVzZShhKSk7cmV0dXJuIHY9ITAsUz0xLzAsRX1mdW5jdGlvbiB3KGUsdCxyKXtpZihoKGUpLHgoKSxyfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiB0fHwocj10LHQ9bnVsbCksIXIpcmV0dXJuIG5ldyBQcm9taXNlKG8pO2Z1bmN0aW9uIG8obyxpKXtuLnJ1bihlLGEodCksZnVuY3Rpb24odCxuLGEpe249bnx8ZSx0P2kodCk6bz9vKG4pOnIobnVsbCxuLGEpfSl9byhudWxsLHIpfWZ1bmN0aW9uIGsoZSx0KXtpZih4KCksZihcInByb2Nlc3NcIixFLlBhcnNlciksbShcInByb2Nlc3NcIixFLkNvbXBpbGVyKSwhdClyZXR1cm4gbmV3IFByb21pc2Uobik7ZnVuY3Rpb24gbihuLHIpe3ZhciBvPWEoZSk7ZC5ydW4oRSx7ZmlsZTpvfSxmdW5jdGlvbihlKXtlP3IoZSk6bj9uKG8pOnQobnVsbCxvKX0pfW4obnVsbCx0KX19KCkuZnJlZXplKCk7dmFyIHU9W10uc2xpY2UsYz17fS5oYXNPd25Qcm9wZXJ0eSxkPWkoKS51c2UoZnVuY3Rpb24oZSx0KXt0LnRyZWU9ZS5wYXJzZSh0LmZpbGUpfSkudXNlKGZ1bmN0aW9uKGUsdCxuKXtlLnJ1bih0LnRyZWUsdC5maWxlLGZ1bmN0aW9uKGUscixvKXtlP24oZSk6KHQudHJlZT1yLHQuZmlsZT1vLG4oKSl9KX0pLnVzZShmdW5jdGlvbihlLHQpe3QuZmlsZS5jb250ZW50cz1lLnN0cmluZ2lmeSh0LnRyZWUsdC5maWxlKX0pO2Z1bmN0aW9uIHAoZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSlyZXR1cm4hMDtyZXR1cm4hMX0oZS5wcm90b3R5cGUpfWZ1bmN0aW9uIGYoZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBgXCIrZStcImAgd2l0aG91dCBgUGFyc2VyYFwiKX1mdW5jdGlvbiBtKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYFwiK2UrXCJgIHdpdGhvdXQgYENvbXBpbGVyYFwiKX1mdW5jdGlvbiBnKGUsdCl7aWYodCl0aHJvdyBuZXcgRXJyb3IoW1wiQ2Fubm90IGludm9rZSBgXCIrZStcImAgb24gYSBmcm96ZW4gcHJvY2Vzc29yLlxcbkNyZWF0ZSBhIG5ldyBcIixcInByb2Nlc3NvciBmaXJzdCwgYnkgaW52b2tpbmcgaXQ6IHVzZSBgcHJvY2Vzc29yKClgIGluc3RlYWQgb2YgXCIsXCJgcHJvY2Vzc29yYC5cIl0uam9pbihcIlwiKSl9ZnVuY3Rpb24gaChlKXtpZighZXx8IWwoZS50eXBlKSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub2RlLCBnb3QgYFwiK2UrXCJgXCIpfWZ1bmN0aW9uIGIoZSx0LG4pe2lmKCFuKXRocm93IG5ldyBFcnJvcihcImBcIitlK1wiYCBmaW5pc2hlZCBhc3luYy4gVXNlIGBcIit0K1wiYCBpbnN0ZWFkXCIpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGE9T2JqZWN0LmRlZmluZVByb3BlcnR5LGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixsPWZ1bmN0aW9uKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIEFycmF5LmlzQXJyYXk/QXJyYXkuaXNBcnJheShlKTpcIltvYmplY3QgQXJyYXldXCI9PT1vLmNhbGwoZSl9LHM9ZnVuY3Rpb24oZSl7aWYoIWV8fFwiW29iamVjdCBPYmplY3RdXCIhPT1vLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQsbj1yLmNhbGwoZSxcImNvbnN0cnVjdG9yXCIpLGE9ZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUmJnIuY2FsbChlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxcImlzUHJvdG90eXBlT2ZcIik7aWYoZS5jb25zdHJ1Y3RvciYmIW4mJiFhKXJldHVybiExO2Zvcih0IGluIGUpO3JldHVybiB2b2lkIDA9PT10fHxyLmNhbGwoZSx0KX0sdT1mdW5jdGlvbihlLHQpe2EmJlwiX19wcm90b19fXCI9PT10Lm5hbWU/YShlLHQubmFtZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsdmFsdWU6dC5uZXdWYWx1ZSx3cml0YWJsZTohMH0pOmVbdC5uYW1lXT10Lm5ld1ZhbHVlfSxjPWZ1bmN0aW9uKGUsdCl7aWYoXCJfX3Byb3RvX19cIj09PXQpe2lmKCFyLmNhbGwoZSx0KSlyZXR1cm47aWYoaSlyZXR1cm4gaShlLHQpLnZhbHVlfXJldHVybiBlW3RdfTtlLmV4cG9ydHM9ZnVuY3Rpb24gZSgpe3ZhciB0LG4scixvLGEsaSxkPWFyZ3VtZW50c1swXSxwPTEsZj1hcmd1bWVudHMubGVuZ3RoLG09ITE7Zm9yKFwiYm9vbGVhblwiPT10eXBlb2YgZCYmKG09ZCxkPWFyZ3VtZW50c1sxXXx8e30scD0yKSwobnVsbD09ZHx8XCJvYmplY3RcIiE9dHlwZW9mIGQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGQpJiYoZD17fSk7cDxmOysrcClpZihudWxsIT0odD1hcmd1bWVudHNbcF0pKWZvcihuIGluIHQpcj1jKGQsbiksZCE9PShvPWModCxuKSkmJihtJiZvJiYocyhvKXx8KGE9bChvKSkpPyhhPyhhPSExLGk9ciYmbChyKT9yOltdKTppPXImJnMocik/cjp7fSx1KGQse25hbWU6bixuZXdWYWx1ZTplKG0saSxvKX0pKTp2b2lkIDAhPT1vJiZ1KGQse25hbWU6bixuZXdWYWx1ZTpvfSkpO3JldHVybiBkfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlKXRocm93IGV9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyNzkpLG89bigyODEpO2UuZXhwb3J0cz1vO3ZhciBhPW8ucHJvdG90eXBlO2Z1bmN0aW9uIGkoZSx0LG4pe3ZhciBvPXRoaXMucGF0aCxhPW5ldyByKGUsdCxuKTtyZXR1cm4gbyYmKGEubmFtZT1vK1wiOlwiK2EubmFtZSxhLmZpbGU9byksYS5mYXRhbD0hMSx0aGlzLm1lc3NhZ2VzLnB1c2goYSksYX1hLm1lc3NhZ2U9aSxhLmluZm89ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1lc3NhZ2UuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBlLmZhdGFsPW51bGwsZX0sYS5mYWlsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tZXNzYWdlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aHJvdyBlLmZhdGFsPSEwLGV9LGEud2Fybj1pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyODApO2Z1bmN0aW9uIG8oKXt9ZS5leHBvcnRzPWksby5wcm90b3R5cGU9RXJyb3IucHJvdG90eXBlLGkucHJvdG90eXBlPW5ldyBvO3ZhciBhPWkucHJvdG90eXBlO2Z1bmN0aW9uIGkoZSx0LG4pe3ZhciBvLGEsaTtcInN0cmluZ1wiPT10eXBlb2YgdCYmKG49dCx0PW51bGwpLG89ZnVuY3Rpb24oZSl7dmFyIHQsbj1bbnVsbCxudWxsXTtcInN0cmluZ1wiPT10eXBlb2YgZSYmKC0xPT09KHQ9ZS5pbmRleE9mKFwiOlwiKSk/blsxXT1lOihuWzBdPWUuc2xpY2UoMCx0KSxuWzFdPWUuc2xpY2UodCsxKSkpO3JldHVybiBufShuKSxhPXIodCl8fFwiMToxXCIsaT17c3RhcnQ6e2xpbmU6bnVsbCxjb2x1bW46bnVsbH0sZW5kOntsaW5lOm51bGwsY29sdW1uOm51bGx9fSx0JiZ0LnBvc2l0aW9uJiYodD10LnBvc2l0aW9uKSx0JiYodC5zdGFydD8oaT10LHQ9dC5zdGFydCk6aS5zdGFydD10KSxlLnN0YWNrJiYodGhpcy5zdGFjaz1lLnN0YWNrLGU9ZS5tZXNzYWdlKSx0aGlzLm1lc3NhZ2U9ZSx0aGlzLm5hbWU9YSx0aGlzLnJlYXNvbj1lLHRoaXMubGluZT10P3QubGluZTpudWxsLHRoaXMuY29sdW1uPXQ/dC5jb2x1bW46bnVsbCx0aGlzLmxvY2F0aW9uPWksdGhpcy5zb3VyY2U9b1swXSx0aGlzLnJ1bGVJZD1vWzFdfWEuZmlsZT1cIlwiLGEubmFtZT1cIlwiLGEucmVhc29uPVwiXCIsYS5tZXNzYWdlPVwiXCIsYS5zdGFjaz1cIlwiLGEuZmF0YWw9bnVsbCxhLmNvbHVtbj1udWxsLGEubGluZT1udWxsfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9e30uaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSYmXCJvYmplY3RcIj09dHlwZW9mIGV8fChlPXt9KSxpKGUubGluZSkrXCI6XCIraShlLmNvbHVtbil9ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmXCJvYmplY3RcIj09dHlwZW9mIGV8fChlPXt9KSxvKGUuc3RhcnQpK1wiLVwiK28oZS5lbmQpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJlwibnVtYmVyXCI9PXR5cGVvZiBlP2U6MX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlKXJldHVybiBudWxsO2lmKHIuY2FsbChlLFwicG9zaXRpb25cIil8fHIuY2FsbChlLFwidHlwZVwiKSlyZXR1cm4gYShlLnBvc2l0aW9uKTtpZihyLmNhbGwoZSxcInN0YXJ0XCIpfHxyLmNhbGwoZSxcImVuZFwiKSlyZXR1cm4gYShlKTtpZihyLmNhbGwoZSxcImxpbmVcIil8fHIuY2FsbChlLFwiY29sdW1uXCIpKXJldHVybiBvKGUpO3JldHVybiBudWxsfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbih0KXt2YXIgcj1uKDEwMCksbz1uKDI4MiksYT1uKDI4Myk7ZS5leHBvcnRzPXU7dmFyIGk9e30uaGFzT3duUHJvcGVydHksbD11LnByb3RvdHlwZTtsLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY29udGVudHN8fFwiXCI7cmV0dXJuIGEodCk/dC50b1N0cmluZyhlKTpTdHJpbmcodCl9O3ZhciBzPVtcImhpc3RvcnlcIixcInBhdGhcIixcImJhc2VuYW1lXCIsXCJzdGVtXCIsXCJleHRuYW1lXCIsXCJkaXJuYW1lXCJdO2Z1bmN0aW9uIHUoZSl7dmFyIG4scixvO2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxhKGUpKWU9e2NvbnRlbnRzOmV9O2Vsc2UgaWYoXCJtZXNzYWdlXCJpbiBlJiZcIm1lc3NhZ2VzXCJpbiBlKXJldHVybiBlfWVsc2UgZT17fTtpZighKHRoaXMgaW5zdGFuY2VvZiB1KSlyZXR1cm4gbmV3IHUoZSk7Zm9yKHRoaXMuZGF0YT17fSx0aGlzLm1lc3NhZ2VzPVtdLHRoaXMuaGlzdG9yeT1bXSx0aGlzLmN3ZD10LmN3ZCgpLHI9LTEsbz1zLmxlbmd0aDsrK3I8bzspbj1zW3JdLGkuY2FsbChlLG4pJiYodGhpc1tuXT1lW25dKTtmb3IobiBpbiBlKS0xPT09cy5pbmRleE9mKG4pJiYodGhpc1tuXT1lW25dKX1mdW5jdGlvbiBjKGUsdCl7aWYoLTEhPT1lLmluZGV4T2Yoci5zZXApKXRocm93IG5ldyBFcnJvcihcImBcIit0K1wiYCBjYW5ub3QgYmUgYSBwYXRoOiBkaWQgbm90IGV4cGVjdCBgXCIrci5zZXArXCJgXCIpfWZ1bmN0aW9uIGQoZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJgXCIrdCtcImAgY2Fubm90IGJlIGVtcHR5XCIpfWZ1bmN0aW9uIHAoZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJTZXR0aW5nIGBcIit0K1wiYCByZXF1aXJlcyBgcGF0aGAgdG8gYmUgc2V0IHRvb1wiKX1PYmplY3QuZGVmaW5lUHJvcGVydHkobCxcInBhdGhcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnkubGVuZ3RoLTFdfSxzZXQ6ZnVuY3Rpb24oZSl7ZChlLFwicGF0aFwiKSxlIT09dGhpcy5wYXRoJiZ0aGlzLmhpc3RvcnkucHVzaChlKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxcImRpcm5hbWVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHRoaXMucGF0aD9yLmRpcm5hbWUodGhpcy5wYXRoKTp2b2lkIDB9LHNldDpmdW5jdGlvbihlKXtwKHRoaXMucGF0aCxcImRpcm5hbWVcIiksdGhpcy5wYXRoPXIuam9pbihlfHxcIlwiLHRoaXMuYmFzZW5hbWUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFwiYmFzZW5hbWVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHRoaXMucGF0aD9yLmJhc2VuYW1lKHRoaXMucGF0aCk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oZSl7ZChlLFwiYmFzZW5hbWVcIiksYyhlLFwiYmFzZW5hbWVcIiksdGhpcy5wYXRoPXIuam9pbih0aGlzLmRpcm5hbWV8fFwiXCIsZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsXCJleHRuYW1lXCIse2dldDpmdW5jdGlvbigpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnBhdGg/ci5leHRuYW1lKHRoaXMucGF0aCk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8XCJcIjtpZihjKHQsXCJleHRuYW1lXCIpLHAodGhpcy5wYXRoLFwiZXh0bmFtZVwiKSx0KXtpZihcIi5cIiE9PXQuY2hhckF0KDApKXRocm93IG5ldyBFcnJvcihcImBleHRuYW1lYCBtdXN0IHN0YXJ0IHdpdGggYC5gXCIpO2lmKC0xIT09dC5pbmRleE9mKFwiLlwiLDEpKXRocm93IG5ldyBFcnJvcihcImBleHRuYW1lYCBjYW5ub3QgY29udGFpbiBtdWx0aXBsZSBkb3RzXCIpfXRoaXMucGF0aD1vKHRoaXMucGF0aCx0KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxcInN0ZW1cIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHRoaXMucGF0aD9yLmJhc2VuYW1lKHRoaXMucGF0aCx0aGlzLmV4dG5hbWUpOnZvaWQgMH0sc2V0OmZ1bmN0aW9uKGUpe2QoZSxcInN0ZW1cIiksYyhlLFwic3RlbVwiKSx0aGlzLnBhdGg9ci5qb2luKHRoaXMuZGlybmFtZXx8XCJcIixlKyh0aGlzLmV4dG5hbWV8fFwiXCIpKX19KX0pLmNhbGwodGhpcyxuKDk5KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDEwMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpcmV0dXJuIGU7aWYoMD09PWUubGVuZ3RoKXJldHVybiBlO3ZhciBuPXIuYmFzZW5hbWUoZSxyLmV4dG5hbWUoZSkpK3Q7cmV0dXJuIHIuam9pbihyLmRpcm5hbWUoZSksbil9fSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuISFlLmNvbnN0cnVjdG9yJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfVxuLyohXG4gKiBEZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIGEgQnVmZmVyXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYobihlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZS5yZWFkRmxvYXRMRSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5zbGljZSYmbihlLnNsaWNlKDAsMCkpfShlKXx8ISFlLl9pc0J1ZmZlcil9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyODUpO2UuZXhwb3J0cz1hLGEud3JhcD1yO3ZhciBvPVtdLnNsaWNlO2Z1bmN0aW9uIGEoKXt2YXIgZT1bXSx0PXtydW46ZnVuY3Rpb24oKXt2YXIgdD0tMSxuPW8uY2FsbChhcmd1bWVudHMsMCwtMSksYT1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBhKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGZ1bmN0aW9uIGFzIGxhc3QgYXJndW1lbnQsIG5vdCBcIithKTsoZnVuY3Rpb24gaShsKXt2YXIgcz1lWysrdF07dmFyIHU9by5jYWxsKGFyZ3VtZW50cywwKTt2YXIgYz11LnNsaWNlKDEpO3ZhciBkPW4ubGVuZ3RoO3ZhciBwPS0xO2lmKGwpcmV0dXJuIHZvaWQgYShsKTtmb3IoOysrcDxkOyludWxsIT09Y1twXSYmdm9pZCAwIT09Y1twXXx8KGNbcF09bltwXSk7bj1jO3M/cihzLGkpLmFwcGx5KG51bGwsbik6YS5hcHBseShudWxsLFtudWxsXS5jb25jYXQobikpfSkuYXBwbHkobnVsbCxbbnVsbF0uY29uY2F0KG4pKX0sdXNlOmZ1bmN0aW9uKG4pe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYGZuYCB0byBiZSBhIGZ1bmN0aW9uLCBub3QgXCIrbik7cmV0dXJuIGUucHVzaChuKSx0fX07cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9W10uc2xpY2U7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsaT1yLmNhbGwoYXJndW1lbnRzLDApLGw9ZS5sZW5ndGg+aS5sZW5ndGg7bCYmaS5wdXNoKG8pO3RyeXt0PWUuYXBwbHkobnVsbCxpKX1jYXRjaChlKXtpZihsJiZuKXRocm93IGU7cmV0dXJuIG8oZSl9bHx8KHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQudGhlbj90LnRoZW4oYSxvKTp0IGluc3RhbmNlb2YgRXJyb3I/byh0KTphKHQpKX07ZnVuY3Rpb24gbygpe258fChuPSEwLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpKX1mdW5jdGlvbiBhKGUpe28obnVsbCxlKX19fSxmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVyblwiW29iamVjdCBTdHJpbmddXCI9PT1uLmNhbGwoZSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuXCJbb2JqZWN0IE9iamVjdF1cIj09PXIuY2FsbChlKSYmKG51bGw9PT0odD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpfHx0PT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHt9KSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyODkpLG89bigyMyksYT1uKDI5MSk7ZnVuY3Rpb24gaShlKXt2YXIgdD1yKGEpO3QucHJvdG90eXBlLm9wdGlvbnM9byh0LnByb3RvdHlwZS5vcHRpb25zLHRoaXMuZGF0YShcInNldHRpbmdzXCIpLGUpLHRoaXMuUGFyc2VyPXR9ZS5leHBvcnRzPWksaS5QYXJzZXI9YX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjMpLG89bigyOTApO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxuLGE7Zm9yKG4gaW4gbyhsLGUpLG8oaSxsKSx0PWwucHJvdG90eXBlKShhPXRbbl0pJiZcIm9iamVjdFwiPT10eXBlb2YgYSYmKHRbbl09XCJjb25jYXRcImluIGE/YS5jb25jYXQoKTpyKGEpKTtyZXR1cm4gbDtmdW5jdGlvbiBpKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsdCl9ZnVuY3Rpb24gbCgpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbD9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuZXcgaShhcmd1bWVudHMpfX19LGZ1bmN0aW9uKGUsdCl7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtlLnN1cGVyXz10LGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pfTplLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtlLnN1cGVyXz10O3ZhciBuPWZ1bmN0aW9uKCl7fTtuLnByb3RvdHlwZT10LnByb3RvdHlwZSxlLnByb3RvdHlwZT1uZXcgbixlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjMpLG89bigyOTIpLGE9bigyOTMpLGk9bigyOTQpLGw9bigyOTUpLHM9bigzMDEpO2Z1bmN0aW9uIHUoZSx0KXt0aGlzLmZpbGU9dCx0aGlzLm9mZnNldD17fSx0aGlzLm9wdGlvbnM9cih0aGlzLm9wdGlvbnMpLHRoaXMuc2V0T3B0aW9ucyh7fSksdGhpcy5pbkxpc3Q9ITEsdGhpcy5pbkJsb2NrPSExLHRoaXMuaW5MaW5rPSExLHRoaXMuYXRTdGFydD0hMCx0aGlzLnRvT2Zmc2V0PWEodCkudG9PZmZzZXQsdGhpcy51bmVzY2FwZT1pKHRoaXMsXCJlc2NhcGVcIiksdGhpcy5kZWNvZGU9bCh0aGlzKX1lLmV4cG9ydHM9dTt2YXIgYz11LnByb3RvdHlwZTtmdW5jdGlvbiBkKGUpe3ZhciB0LG49W107Zm9yKHQgaW4gZSluLnB1c2godCk7cmV0dXJuIG59Yy5zZXRPcHRpb25zPW4oMzAyKSxjLnBhcnNlPW4oMzA1KSxjLm9wdGlvbnM9bigxMDIpLGMuZXhpdFN0YXJ0PW8oXCJhdFN0YXJ0XCIsITApLGMuZW50ZXJMaXN0PW8oXCJpbkxpc3RcIiwhMSksYy5lbnRlckxpbms9byhcImluTGlua1wiLCExKSxjLmVudGVyQmxvY2s9byhcImluQmxvY2tcIiwhMSksYy5pbnRlcnJ1cHRQYXJhZ3JhcGg9W1tcInRoZW1hdGljQnJlYWtcIl0sW1wiYXR4SGVhZGluZ1wiXSxbXCJmZW5jZWRDb2RlXCJdLFtcImJsb2NrcXVvdGVcIl0sW1wiaHRtbFwiXSxbXCJzZXRleHRIZWFkaW5nXCIse2NvbW1vbm1hcms6ITF9XSxbXCJkZWZpbml0aW9uXCIse2NvbW1vbm1hcms6ITF9XSxbXCJmb290bm90ZVwiLHtjb21tb25tYXJrOiExfV1dLGMuaW50ZXJydXB0TGlzdD1bW1wiYXR4SGVhZGluZ1wiLHtwZWRhbnRpYzohMX1dLFtcImZlbmNlZENvZGVcIix7cGVkYW50aWM6ITF9XSxbXCJ0aGVtYXRpY0JyZWFrXCIse3BlZGFudGljOiExfV0sW1wiZGVmaW5pdGlvblwiLHtjb21tb25tYXJrOiExfV0sW1wiZm9vdG5vdGVcIix7Y29tbW9ubWFyazohMX1dXSxjLmludGVycnVwdEJsb2NrcXVvdGU9W1tcImluZGVudGVkQ29kZVwiLHtjb21tb25tYXJrOiEwfV0sW1wiZmVuY2VkQ29kZVwiLHtjb21tb25tYXJrOiEwfV0sW1wiYXR4SGVhZGluZ1wiLHtjb21tb25tYXJrOiEwfV0sW1wic2V0ZXh0SGVhZGluZ1wiLHtjb21tb25tYXJrOiEwfV0sW1widGhlbWF0aWNCcmVha1wiLHtjb21tb25tYXJrOiEwfV0sW1wiaHRtbFwiLHtjb21tb25tYXJrOiEwfV0sW1wibGlzdFwiLHtjb21tb25tYXJrOiEwfV0sW1wiZGVmaW5pdGlvblwiLHtjb21tb25tYXJrOiExfV0sW1wiZm9vdG5vdGVcIix7Y29tbW9ubWFyazohMX1dXSxjLmJsb2NrVG9rZW5pemVycz17bmV3bGluZTpuKDMwOSksaW5kZW50ZWRDb2RlOm4oMzEwKSxmZW5jZWRDb2RlOm4oMzExKSxibG9ja3F1b3RlOm4oMzEyKSxhdHhIZWFkaW5nOm4oMzEzKSx0aGVtYXRpY0JyZWFrOm4oMzE0KSxsaXN0Om4oMzE1KSxzZXRleHRIZWFkaW5nOm4oMzE3KSxodG1sOm4oMzE4KSxmb290bm90ZTpuKDMxOSksZGVmaW5pdGlvbjpuKDMyMSksdGFibGU6bigzMjIpLHBhcmFncmFwaDpuKDMyMyl9LGMuaW5saW5lVG9rZW5pemVycz17ZXNjYXBlOm4oMzI0KSxhdXRvTGluazpuKDMyNiksdXJsOm4oMzI3KSxodG1sOm4oMzI5KSxsaW5rOm4oMzMwKSxyZWZlcmVuY2U6bigzMzEpLHN0cm9uZzpuKDMzMiksZW1waGFzaXM6bigzMzQpLGRlbGV0aW9uOm4oMzM3KSxjb2RlOm4oMzM5KSxicmVhazpuKDM0MSksdGV4dDpuKDM0Myl9LGMuYmxvY2tNZXRob2RzPWQoYy5ibG9ja1Rva2VuaXplcnMpLGMuaW5saW5lTWV0aG9kcz1kKGMuaW5saW5lVG9rZW5pemVycyksYy50b2tlbml6ZUJsb2NrPXMoXCJibG9ja1wiKSxjLnRva2VuaXplSW5saW5lPXMoXCJpbmxpbmVcIiksYy50b2tlbml6ZUZhY3Rvcnk9c30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9bnx8dGhpcyxvPXJbZV07cmV0dXJuIHJbZV09IXQsZnVuY3Rpb24oKXtyW2VdPW99fX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj0tMSxyPWUubGVuZ3RoO2lmKHQ8MClyZXR1cm57fTtmb3IoOysrbjxyOylpZihlW25dPnQpcmV0dXJue2xpbmU6bisxLGNvbHVtbjp0LShlW24tMV18fDApKzEsb2Zmc2V0OnR9O3JldHVybnt9fX1mdW5jdGlvbiBvKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj10JiZ0LmxpbmUscj10JiZ0LmNvbHVtbjtpZighaXNOYU4obikmJiFpc05hTihyKSYmbi0xIGluIGUpcmV0dXJuKGVbbi0yXXx8MCkrci0xfHwwO3JldHVybi0xfX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1lLmluZGV4T2YoXCJcXG5cIik7Zm9yKDstMSE9PW47KXQucHVzaChuKzEpLG49ZS5pbmRleE9mKFwiXFxuXCIsbisxKTtyZXR1cm4gdC5wdXNoKGUubGVuZ3RoKzEpLHR9KFN0cmluZyhlKSk7cmV0dXJue3RvUG9zaXRpb246cih0KSx0b09mZnNldDpvKHQpfX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHIsbz0wLGE9bi5pbmRleE9mKFwiXFxcXFwiKSxpPWVbdF0sbD1bXTtmb3IoOy0xIT09YTspbC5wdXNoKG4uc2xpY2UobyxhKSksbz1hKzEsKHI9bi5jaGFyQXQobykpJiYtMSE9PWkuaW5kZXhPZihyKXx8bC5wdXNoKFwiXFxcXFwiKSxhPW4uaW5kZXhPZihcIlxcXFxcIixvKTtyZXR1cm4gbC5wdXNoKG4uc2xpY2UobykpLGwuam9pbihcIlwiKX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyMyksbz1uKDQyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGEucmF3PWZ1bmN0aW9uKGUsYSxpKXtyZXR1cm4gbyhlLHIoaSx7cG9zaXRpb246dChhKSx3YXJuaW5nOm59KSl9LGE7ZnVuY3Rpb24gdCh0KXtmb3IodmFyIG49ZS5vZmZzZXQscj10LmxpbmUsbz1bXTsrK3ImJnIgaW4gbjspby5wdXNoKChuW3JdfHwwKSsxKTtyZXR1cm57c3RhcnQ6dCxpbmRlbnQ6b319ZnVuY3Rpb24gbih0LG4scil7MyE9PXImJmUuZmlsZS5tZXNzYWdlKHQsbil9ZnVuY3Rpb24gYShyLGEsaSl7byhyLHtwb3NpdGlvbjp0KGEpLHdhcm5pbmc6bix0ZXh0OmkscmVmZXJlbmNlOmksdGV4dENvbnRleHQ6ZSxyZWZlcmVuY2VDb250ZXh0OmV9KX19fSxmdW5jdGlvbihlKXtlLmV4cG9ydHM9e0FFbGlnOlwiw4ZcIixBTVA6XCImXCIsQWFjdXRlOlwiw4FcIixBY2lyYzpcIsOCXCIsQWdyYXZlOlwiw4BcIixBcmluZzpcIsOFXCIsQXRpbGRlOlwiw4NcIixBdW1sOlwiw4RcIixDT1BZOlwiwqlcIixDY2VkaWw6XCLDh1wiLEVUSDpcIsOQXCIsRWFjdXRlOlwiw4lcIixFY2lyYzpcIsOKXCIsRWdyYXZlOlwiw4hcIixFdW1sOlwiw4tcIixHVDpcIj5cIixJYWN1dGU6XCLDjVwiLEljaXJjOlwiw45cIixJZ3JhdmU6XCLDjFwiLEl1bWw6XCLDj1wiLExUOlwiPFwiLE50aWxkZTpcIsORXCIsT2FjdXRlOlwiw5NcIixPY2lyYzpcIsOUXCIsT2dyYXZlOlwiw5JcIixPc2xhc2g6XCLDmFwiLE90aWxkZTpcIsOVXCIsT3VtbDpcIsOWXCIsUVVPVDonXCInLFJFRzpcIsKuXCIsVEhPUk46XCLDnlwiLFVhY3V0ZTpcIsOaXCIsVWNpcmM6XCLDm1wiLFVncmF2ZTpcIsOZXCIsVXVtbDpcIsOcXCIsWWFjdXRlOlwiw51cIixhYWN1dGU6XCLDoVwiLGFjaXJjOlwiw6JcIixhY3V0ZTpcIsK0XCIsYWVsaWc6XCLDplwiLGFncmF2ZTpcIsOgXCIsYW1wOlwiJlwiLGFyaW5nOlwiw6VcIixhdGlsZGU6XCLDo1wiLGF1bWw6XCLDpFwiLGJydmJhcjpcIsKmXCIsY2NlZGlsOlwiw6dcIixjZWRpbDpcIsK4XCIsY2VudDpcIsKiXCIsY29weTpcIsKpXCIsY3VycmVuOlwiwqRcIixkZWc6XCLCsFwiLGRpdmlkZTpcIsO3XCIsZWFjdXRlOlwiw6lcIixlY2lyYzpcIsOqXCIsZWdyYXZlOlwiw6hcIixldGg6XCLDsFwiLGV1bWw6XCLDq1wiLGZyYWMxMjpcIsK9XCIsZnJhYzE0OlwiwrxcIixmcmFjMzQ6XCLCvlwiLGd0OlwiPlwiLGlhY3V0ZTpcIsOtXCIsaWNpcmM6XCLDrlwiLGlleGNsOlwiwqFcIixpZ3JhdmU6XCLDrFwiLGlxdWVzdDpcIsK/XCIsaXVtbDpcIsOvXCIsbGFxdW86XCLCq1wiLGx0OlwiPFwiLG1hY3I6XCLCr1wiLG1pY3JvOlwiwrVcIixtaWRkb3Q6XCLCt1wiLG5ic3A6XCLCoFwiLG5vdDpcIsKsXCIsbnRpbGRlOlwiw7FcIixvYWN1dGU6XCLDs1wiLG9jaXJjOlwiw7RcIixvZ3JhdmU6XCLDslwiLG9yZGY6XCLCqlwiLG9yZG06XCLCulwiLG9zbGFzaDpcIsO4XCIsb3RpbGRlOlwiw7VcIixvdW1sOlwiw7ZcIixwYXJhOlwiwrZcIixwbHVzbW46XCLCsVwiLHBvdW5kOlwiwqNcIixxdW90OidcIicscmFxdW86XCLCu1wiLHJlZzpcIsKuXCIsc2VjdDpcIsKnXCIsc2h5Olwiwq1cIixzdXAxOlwiwrlcIixzdXAyOlwiwrJcIixzdXAzOlwiwrNcIixzemxpZzpcIsOfXCIsdGhvcm46XCLDvlwiLHRpbWVzOlwiw5dcIix1YWN1dGU6XCLDulwiLHVjaXJjOlwiw7tcIix1Z3JhdmU6XCLDuVwiLHVtbDpcIsKoXCIsdXVtbDpcIsO8XCIseWFjdXRlOlwiw71cIix5ZW46XCLCpVwiLHl1bWw6XCLDv1wifX0sZnVuY3Rpb24oZSl7ZS5leHBvcnRzPXswOlwi77+9XCIsMTI4Olwi4oKsXCIsMTMwOlwi4oCaXCIsMTMxOlwixpJcIiwxMzI6XCLigJ5cIiwxMzM6XCLigKZcIiwxMzQ6XCLigKBcIiwxMzU6XCLigKFcIiwxMzY6XCLLhlwiLDEzNzpcIuKAsFwiLDEzODpcIsWgXCIsMTM5Olwi4oC5XCIsMTQwOlwixZJcIiwxNDI6XCLFvVwiLDE0NTpcIuKAmFwiLDE0NjpcIuKAmVwiLDE0NzpcIuKAnFwiLDE0ODpcIuKAnVwiLDE0OTpcIuKAolwiLDE1MDpcIuKAk1wiLDE1MTpcIuKAlFwiLDE1MjpcIsucXCIsMTUzOlwi4oSiXCIsMTU0OlwixaFcIiwxNTU6XCLigLpcIiwxNTY6XCLFk1wiLDE1ODpcIsW+XCIsMTU5OlwixbhcIn19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJzdHJpbmdcIj09dHlwZW9mIGU/ZS5jaGFyQ29kZUF0KDApOmU7cmV0dXJuIHQ+PTk3JiZ0PD0xMDJ8fHQ+PTY1JiZ0PD03MHx8dD49NDgmJnQ8PTU3fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMTAxKSxvPW4oNDMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihlKXx8byhlKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQsbj1cIiZcIitlK1wiO1wiO2lmKChyPXJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpXCIpKS5pbm5lckhUTUw9bixcIjtcIj09PSh0PXIudGV4dENvbnRlbnQpLnNsaWNlKC0xKSYmXCJzZW1pXCIhPT1lKXJldHVybiExO3JldHVybiB0IT09biYmdH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIGEsaSxsLHMsdSxjLGQ9dGhpcyxwPWQub2Zmc2V0LGY9W10sbT1kW2UrXCJNZXRob2RzXCJdLGc9ZFtlK1wiVG9rZW5pemVyc1wiXSxoPW4ubGluZSxiPW4uY29sdW1uO2lmKCF0KXJldHVybiBmO0Uubm93PXYsRS5maWxlPWQuZmlsZSx5KFwiXCIpO2Zvcig7dDspe2ZvcihhPS0xLGk9bS5sZW5ndGgsdT0hMTsrK2E8aSYmKHM9bVthXSwhKGw9Z1tzXSl8fGwub25seUF0U3RhcnQmJiFkLmF0U3RhcnR8fGwubm90SW5MaXN0JiZkLmluTGlzdHx8bC5ub3RJbkJsb2NrJiZkLmluQmxvY2t8fGwubm90SW5MaW5rJiZkLmluTGlua3x8KGM9dC5sZW5ndGgsbC5hcHBseShkLFtFLHRdKSwhKHU9YyE9PXQubGVuZ3RoKSkpOyk7dXx8ZC5maWxlLmZhaWwobmV3IEVycm9yKFwiSW5maW5pdGUgbG9vcFwiKSxFLm5vdygpKX1yZXR1cm4gZC5lb2Y9digpLGY7ZnVuY3Rpb24geShlKXtmb3IodmFyIHQ9LTEsbj1lLmluZGV4T2YoXCJcXG5cIik7LTEhPT1uOyloKyssdD1uLG49ZS5pbmRleE9mKFwiXFxuXCIsbisxKTstMT09PXQ/Yis9ZS5sZW5ndGg6Yj1lLmxlbmd0aC10LGggaW4gcCYmKC0xIT09dD9iKz1wW2hdOmI8PXBbaF0mJihiPXBbaF0rMSkpfWZ1bmN0aW9uIHYoKXt2YXIgZT17bGluZTpoLGNvbHVtbjpifTtyZXR1cm4gZS5vZmZzZXQ9ZC50b09mZnNldChlKSxlfWZ1bmN0aW9uIFMoZSl7dGhpcy5zdGFydD1lLHRoaXMuZW5kPXYoKX1mdW5jdGlvbiBFKGUpe3ZhciBuPWZ1bmN0aW9uKCl7dmFyIGU9W10sdD1oKzE7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWgrMTt0PG47KWUucHVzaCgocFt0XXx8MCkrMSksdCsrO3JldHVybiBlfX0oKSxhPWZ1bmN0aW9uKCl7dmFyIGU9digpO3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciByPXQucG9zaXRpb24sbz1yP3Iuc3RhcnQ6ZSxhPVtdLGk9ciYmci5lbmQubGluZSxsPWUubGluZTtpZih0LnBvc2l0aW9uPW5ldyBTKG8pLHImJm4mJnIuaW5kZW50KXtpZihhPXIuaW5kZW50LGk8bCl7Zm9yKDsrK2k8bDspYS5wdXNoKChwW2ldfHwwKSsxKTthLnB1c2goZS5jb2x1bW4pfW49YS5jb25jYXQobil9cmV0dXJuIHQucG9zaXRpb24uaW5kZW50PW58fFtdLHR9fSgpLGk9digpO3JldHVybiBmdW5jdGlvbihlKXt0LnN1YnN0cmluZygwLGUubGVuZ3RoKSE9PWUmJmQuZmlsZS5mYWlsKG5ldyBFcnJvcihcIkluY29ycmVjdGx5IGVhdGVuIHZhbHVlOiBwbGVhc2UgcmVwb3J0IHRoaXMgd2FybmluZyBvbiBodHRwOi8vZ2l0LmlvL3ZnNUZ0XCIpLHYoKSl9KGUpLGwucmVzZXQ9cyxzLnRlc3Q9dSxsLnRlc3Q9dSx0PXQuc3Vic3RyaW5nKGUubGVuZ3RoKSx5KGUpLG49bigpLGw7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBhKGZ1bmN0aW9uKGUsdCl7dmFyIG49dD90LmNoaWxkcmVuOmYsYT1uW24ubGVuZ3RoLTFdO2EmJmUudHlwZT09PWEudHlwZSYmZS50eXBlIGluIHImJm8oYSkmJm8oZSkmJihlPXJbZS50eXBlXS5jYWxsKGQsYSxlKSk7ZSE9PWEmJm4ucHVzaChlKTtkLmF0U3RhcnQmJjAhPT1mLmxlbmd0aCYmZC5leGl0U3RhcnQoKTtyZXR1cm4gZX0oYShlKSx0KSxuKX1mdW5jdGlvbiBzKCl7dmFyIG49bC5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIGg9aS5saW5lLGI9aS5jb2x1bW4sdD1lK3Qsbn1mdW5jdGlvbiB1KCl7dmFyIG49YSh7fSk7cmV0dXJuIGg9aS5saW5lLGI9aS5jb2x1bW4sdD1lK3Qsbi5wb3NpdGlvbn19fX07dmFyIHI9e3RleHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS52YWx1ZSs9dC52YWx1ZSxlfSxibG9ja3F1b3RlOmZ1bmN0aW9uKGUsdCl7aWYodGhpcy5vcHRpb25zLmNvbW1vbm1hcmspcmV0dXJuIHQ7cmV0dXJuIGUuY2hpbGRyZW49ZS5jaGlsZHJlbi5jb25jYXQodC5jaGlsZHJlbiksZX19O2Z1bmN0aW9uIG8oZSl7dmFyIHQsbjtyZXR1cm5cInRleHRcIiE9PWUudHlwZXx8IWUucG9zaXRpb258fCh0PWUucG9zaXRpb24uc3RhcnQsbj1lLnBvc2l0aW9uLmVuZCx0LmxpbmUhPT1uLmxpbmV8fG4uY29sdW1uLXQuY29sdW1uPT09ZS52YWx1ZS5sZW5ndGgpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjMpLG89bigzMDMpLGE9bigxMDIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxuLGk9dGhpcy5vcHRpb25zO2lmKG51bGw9PWUpZT17fTtlbHNle2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdmFsdWUgYFwiK2UrXCJgIGZvciBzZXR0aW5nIGBvcHRpb25zYFwiKTtlPXIoZSl9Zm9yKHQgaW4gYSl7aWYobnVsbD09KG49ZVt0XSkmJihuPWlbdF0pLFwiYmxvY2tzXCIhPT10JiZcImJvb2xlYW5cIiE9dHlwZW9mIG58fFwiYmxvY2tzXCI9PT10JiZcIm9iamVjdFwiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZhbHVlIGBcIituK1wiYCBmb3Igc2V0dGluZyBgb3B0aW9ucy5cIit0K1wiYFwiKTtlW3RdPW59cmV0dXJuIHRoaXMub3B0aW9ucz1lLHRoaXMuZXNjYXBlPW8oZSksdGhpc319LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9aTt2YXIgcj1bXCJcXFxcXCIsXCJgXCIsXCIqXCIsXCJ7XCIsXCJ9XCIsXCJbXCIsXCJdXCIsXCIoXCIsXCIpXCIsXCIjXCIsXCIrXCIsXCItXCIsXCIuXCIsXCIhXCIsXCJfXCIsXCI+XCJdLG89ci5jb25jYXQoW1wiflwiLFwifFwiXSksYT1vLmNvbmNhdChbXCJcXG5cIiwnXCInLFwiJFwiLFwiJVwiLFwiJlwiLFwiJ1wiLFwiLFwiLFwiL1wiLFwiOlwiLFwiO1wiLFwiPFwiLFwiPVwiLFwiP1wiLFwiQFwiLFwiXlwiXSk7ZnVuY3Rpb24gaShlKXt2YXIgdD1lfHx7fTtyZXR1cm4gdC5jb21tb25tYXJrP2E6dC5nZm0/bzpyfWkuZGVmYXVsdD1yLGkuZ2ZtPW8saS5jb21tb25tYXJrPWF9LGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1bXCJhZGRyZXNzXCIsXCJhcnRpY2xlXCIsXCJhc2lkZVwiLFwiYmFzZVwiLFwiYmFzZWZvbnRcIixcImJsb2NrcXVvdGVcIixcImJvZHlcIixcImNhcHRpb25cIixcImNlbnRlclwiLFwiY29sXCIsXCJjb2xncm91cFwiLFwiZGRcIixcImRldGFpbHNcIixcImRpYWxvZ1wiLFwiZGlyXCIsXCJkaXZcIixcImRsXCIsXCJkdFwiLFwiZmllbGRzZXRcIixcImZpZ2NhcHRpb25cIixcImZpZ3VyZVwiLFwiZm9vdGVyXCIsXCJmb3JtXCIsXCJmcmFtZVwiLFwiZnJhbWVzZXRcIixcImgxXCIsXCJoMlwiLFwiaDNcIixcImg0XCIsXCJoNVwiLFwiaDZcIixcImhlYWRcIixcImhlYWRlclwiLFwiaGdyb3VwXCIsXCJoclwiLFwiaHRtbFwiLFwiaWZyYW1lXCIsXCJsZWdlbmRcIixcImxpXCIsXCJsaW5rXCIsXCJtYWluXCIsXCJtZW51XCIsXCJtZW51aXRlbVwiLFwibWV0YVwiLFwibmF2XCIsXCJub2ZyYW1lc1wiLFwib2xcIixcIm9wdGdyb3VwXCIsXCJvcHRpb25cIixcInBcIixcInBhcmFtXCIsXCJwcmVcIixcInNlY3Rpb25cIixcInNvdXJjZVwiLFwidGl0bGVcIixcInN1bW1hcnlcIixcInRhYmxlXCIsXCJ0Ym9keVwiLFwidGRcIixcInRmb290XCIsXCJ0aFwiLFwidGhlYWRcIixcInRpdGxlXCIsXCJ0clwiLFwidHJhY2tcIixcInVsXCJdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyMyksbz1uKDMwNik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGUsdD1TdHJpbmcodGhpcy5maWxlKSxuPXtsaW5lOjEsY29sdW1uOjEsb2Zmc2V0OjB9LGw9cihuKTs2NTI3OT09PSh0PXQucmVwbGFjZShpLGEpKS5jaGFyQ29kZUF0KDApJiYodD10LnNsaWNlKDEpLGwuY29sdW1uKyssbC5vZmZzZXQrKyk7ZT17dHlwZTpcInJvb3RcIixjaGlsZHJlbjp0aGlzLnRva2VuaXplQmxvY2sodCxsKSxwb3NpdGlvbjp7c3RhcnQ6bixlbmQ6dGhpcy5lb2Z8fHIobil9fSx0aGlzLm9wdGlvbnMucG9zaXRpb258fG8oZSwhMCk7cmV0dXJuIGV9O3ZhciBhPVwiXFxuXCIsaT0vXFxyXFxufFxcci9nfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big0NCk7ZnVuY3Rpb24gbyhlKXtkZWxldGUgZS5wb3NpdGlvbn1mdW5jdGlvbiBhKGUpe2UucG9zaXRpb249dm9pZCAwfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiByKGUsdD9vOmEpLGV9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWk7dmFyIHI9bigzMDgpLG89XCJza2lwXCIsYT0hMTtmdW5jdGlvbiBpKGUsdCxuLGkpe2Z1bmN0aW9uIGwoZSxzLHUpe3ZhciBjO3JldHVybih0JiYhcih0LGUscyx1W3UubGVuZ3RoLTFdfHxudWxsKXx8KGM9bihlLHUpKSE9PWEpJiZlLmNoaWxkcmVuJiZjIT09byYmZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89aT8tMToxLHM9KGk/ZS5sZW5ndGg6LTEpK287Zm9yKDtzPi0xJiZzPGUubGVuZ3RoOyl7aWYobj1lW3NdLChyPW4mJmwobixzLHQpKT09PWEpcmV0dXJuIHI7cz1cIm51bWJlclwiPT10eXBlb2Ygcj9yOnMrb319KGUuY2hpbGRyZW4sdS5jb25jYXQoZSkpPT09YT9hOmN9XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmXCJmdW5jdGlvblwiIT10eXBlb2YgbiYmKGk9bixuPXQsdD1udWxsKSxsKGUsbnVsbCxbXSl9aS5DT05USU5VRT0hMCxpLlNLSVA9byxpLkVYSVQ9YX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gQm9vbGVhbih0JiZ0LnR5cGU9PT1lKX19KGUpO2lmKG51bGw9PWUpcmV0dXJuIG87aWYoXCJvYmplY3RcIj09dHlwZW9mIGUpcmV0dXJuKFwibGVuZ3RoXCJpbiBlP2Z1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49ZS5sZW5ndGgsbz0tMTtmb3IoOysrbzxuOyl0W29dPXIoZVtvXSk7cmV0dXJuIHR9KGUpLG49dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9LTE7Zm9yKDsrK2U8bjspaWYodFtlXS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITA7cmV0dXJuITF9fTpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG47Zm9yKG4gaW4gZSlpZih0W25dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH19KShlKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGZ1bmN0aW9uLCBzdHJpbmcsIG9yIG9iamVjdCBhcyB0ZXN0XCIpfWZ1bmN0aW9uIG8oKXtyZXR1cm4hMH1lLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LG4sbyxhLGkpe3ZhciBsPW51bGwhPWE7dmFyIHM9bnVsbCE9bzt2YXIgdT1yKHQpO2lmKHMmJihcIm51bWJlclwiIT10eXBlb2Ygb3x8bzwwfHxvPT09MS8wKSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBwb3NpdGl2ZSBmaW5pdGUgaW5kZXggb3IgY2hpbGQgbm9kZVwiKTtpZihsJiYoIWUobnVsbCxhKXx8IWEuY2hpbGRyZW4pKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHBhcmVudCBub2RlXCIpO2lmKCFufHwhbi50eXBlfHxcInN0cmluZ1wiIT10eXBlb2Ygbi50eXBlKXJldHVybiExO2lmKGwhPT1zKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGJvdGggcGFyZW50IGFuZCBpbmRleFwiKTtyZXR1cm4gQm9vbGVhbih1LmNhbGwoaSxuLG8sYSkpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIG8sYSxpLGwscz10LmNoYXJBdCgwKTtpZihcIlxcblwiIT09cylyZXR1cm47aWYobilyZXR1cm4hMDtsPTEsbz10Lmxlbmd0aCxhPXMsaT1cIlwiO2Zvcig7bDxvJiYocz10LmNoYXJBdChsKSxyKHMpKTspaSs9cyxcIlxcblwiPT09cyYmKGErPWksaT1cIlwiKSxsKys7ZShhKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDU5KSxvPW4oNjApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHIsdSxjLGQ9LTEscD10Lmxlbmd0aCxmPVwiXCIsbT1cIlwiLGc9XCJcIixoPVwiXCI7Zm9yKDsrK2Q8cDspaWYocj10LmNoYXJBdChkKSxjKWlmKGM9ITEsZis9ZyxtKz1oLGc9XCJcIixoPVwiXCIscj09PWEpZz1yLGg9cjtlbHNlIGZvcihmKz1yLG0rPXI7KytkPHA7KXtpZighKHI9dC5jaGFyQXQoZCkpfHxyPT09YSl7aD1yLGc9cjticmVha31mKz1yLG0rPXJ9ZWxzZSBpZihyPT09bCYmdC5jaGFyQXQoZCsxKT09PXImJnQuY2hhckF0KGQrMik9PT1yJiZ0LmNoYXJBdChkKzMpPT09cilnKz1zLGQrPTMsYz0hMDtlbHNlIGlmKHI9PT1pKWcrPXIsYz0hMDtlbHNle2Zvcih1PVwiXCI7cj09PWl8fHI9PT1sOyl1Kz1yLHI9dC5jaGFyQXQoKytkKTtpZihyIT09YSlicmVhaztnKz11K3IsaCs9cn1pZihtKXJldHVybiEhbnx8ZShmKSh7dHlwZTpcImNvZGVcIixsYW5nOm51bGwsdmFsdWU6byhtKX0pfTt2YXIgYT1cIlxcblwiLGk9XCJcXHRcIixsPVwiIFwiLHM9cihsLDQpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big2MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgZCxwLGYsbSxnLGgsYix5LHYsUyxFLHg9dGhpcy5vcHRpb25zLHc9dC5sZW5ndGgrMSxrPTAsXz1cIlwiO2lmKCF4LmdmbSlyZXR1cm47Zm9yKDtrPHcmJigoZj10LmNoYXJBdChrKSk9PT1pfHxmPT09YSk7KV8rPWYsaysrO2lmKFM9aywoZj10LmNoYXJBdChrKSkhPT1sJiZmIT09cylyZXR1cm47aysrLHA9ZixkPTEsXys9Zjtmb3IoO2s8dyYmKGY9dC5jaGFyQXQoaykpPT09cDspXys9ZixkKyssaysrO2lmKGQ8dSlyZXR1cm47Zm9yKDtrPHcmJigoZj10LmNoYXJBdChrKSk9PT1pfHxmPT09YSk7KV8rPWYsaysrO209XCJcIixnPVwiXCI7Zm9yKDtrPHcmJihmPXQuY2hhckF0KGspKSE9PW8mJmYhPT1sJiZmIT09czspZj09PWl8fGY9PT1hP2crPWY6KG0rPWcrZixnPVwiXCIpLGsrKztpZigoZj10LmNoYXJBdChrKSkmJmYhPT1vKXJldHVybjtpZihuKXJldHVybiEwOyhFPWUubm93KCkpLmNvbHVtbis9Xy5sZW5ndGgsRS5vZmZzZXQrPV8ubGVuZ3RoLF8rPW0sbT10aGlzLmRlY29kZS5yYXcodGhpcy51bmVzY2FwZShtKSxFKSxnJiYoXys9Zyk7Zz1cIlwiLHk9XCJcIix2PVwiXCIsaD1cIlwiLGI9XCJcIjtmb3IoO2s8dzspaWYoZj10LmNoYXJBdChrKSxoKz15LGIrPXYseT1cIlwiLHY9XCJcIixmPT09byl7Zm9yKGg/KHkrPWYsdis9Zik6Xys9ZixnPVwiXCIsaysrO2s8dyYmKGY9dC5jaGFyQXQoaykpPT09aTspZys9ZixrKys7aWYoeSs9Zyx2Kz1nLnNsaWNlKFMpLCEoZy5sZW5ndGg+PWMpKXtmb3IoZz1cIlwiO2s8dyYmKGY9dC5jaGFyQXQoaykpPT09cDspZys9ZixrKys7aWYoeSs9Zyx2Kz1nLCEoZy5sZW5ndGg8ZCkpe2ZvcihnPVwiXCI7azx3JiYoKGY9dC5jaGFyQXQoaykpPT09aXx8Zj09PWEpOyl5Kz1mLHYrPWYsaysrO2lmKCFmfHxmPT09bylicmVha319fWVsc2UgaCs9Zix2Kz1mLGsrKztyZXR1cm4gZShfKz1oK3kpKHt0eXBlOlwiY29kZVwiLGxhbmc6bXx8bnVsbCx2YWx1ZTpyKGIpfSl9O3ZhciBvPVwiXFxuXCIsYT1cIlxcdFwiLGk9XCIgXCIsbD1cIn5cIixzPVwiYFwiLHU9MyxjPTR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDI0KSxvPW4oNjEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHUsYyxkLHAsZixtLGcsaCxiLHk9dGhpcy5vZmZzZXQsdj10aGlzLmJsb2NrVG9rZW5pemVycyxTPXRoaXMuaW50ZXJydXB0QmxvY2txdW90ZSxFPWUubm93KCkseD1FLmxpbmUsdz10Lmxlbmd0aCxrPVtdLF89W10sVD1bXSxBPTA7Zm9yKDtBPHcmJigoYz10LmNoYXJBdChBKSk9PT1sfHxjPT09aSk7KUErKztpZih0LmNoYXJBdChBKSE9PXMpcmV0dXJuO2lmKG4pcmV0dXJuITA7QT0wO2Zvcig7QTx3Oyl7Zm9yKHA9dC5pbmRleE9mKGEsQSksZz1BLGg9ITEsLTE9PT1wJiYocD13KTtBPHcmJigoYz10LmNoYXJBdChBKSk9PT1sfHxjPT09aSk7KUErKztpZih0LmNoYXJBdChBKT09PXM/KEErKyxoPSEwLHQuY2hhckF0KEEpPT09bCYmQSsrKTpBPWcsZj10LnNsaWNlKEEscCksIWgmJiFyKGYpKXtBPWc7YnJlYWt9aWYoIWgmJihkPXQuc2xpY2UoQSksbyhTLHYsdGhpcyxbZSxkLCEwXSkpKWJyZWFrO209Zz09PUE/Zjp0LnNsaWNlKGcscCksVC5wdXNoKEEtZyksay5wdXNoKG0pLF8ucHVzaChmKSxBPXArMX1BPS0xLHc9VC5sZW5ndGgsdT1lKGsuam9pbihhKSk7Zm9yKDsrK0E8dzspeVt4XT0oeVt4XXx8MCkrVFtBXSx4Kys7cmV0dXJuIGI9dGhpcy5lbnRlckJsb2NrKCksXz10aGlzLnRva2VuaXplQmxvY2soXy5qb2luKGEpLEUpLGIoKSx1KHt0eXBlOlwiYmxvY2txdW90ZVwiLGNoaWxkcmVuOl99KX07dmFyIGE9XCJcXG5cIixpPVwiXFx0XCIsbD1cIiBcIixzPVwiPlwifSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcyx1LGMsZD10aGlzLm9wdGlvbnMscD10Lmxlbmd0aCsxLGY9LTEsbT1lLm5vdygpLGc9XCJcIixoPVwiXCI7Zm9yKDsrK2Y8cDspe2lmKChzPXQuY2hhckF0KGYpKSE9PWEmJnMhPT1vKXtmLS07YnJlYWt9Zys9c31jPTA7Zm9yKDsrK2Y8PXA7KXtpZigocz10LmNoYXJBdChmKSkhPT1pKXtmLS07YnJlYWt9Zys9cyxjKyt9aWYoYz5sKXJldHVybjtpZighY3x8IWQucGVkYW50aWMmJnQuY2hhckF0KGYrMSk9PT1pKXJldHVybjtwPXQubGVuZ3RoKzEsdT1cIlwiO2Zvcig7KytmPHA7KXtpZigocz10LmNoYXJBdChmKSkhPT1hJiZzIT09byl7Zi0tO2JyZWFrfXUrPXN9aWYoIWQucGVkYW50aWMmJjA9PT11Lmxlbmd0aCYmcyYmcyE9PXIpcmV0dXJuO2lmKG4pcmV0dXJuITA7Zys9dSx1PVwiXCIsaD1cIlwiO2Zvcig7KytmPHAmJihzPXQuY2hhckF0KGYpKSYmcyE9PXI7KWlmKHM9PT1hfHxzPT09b3x8cz09PWkpe2Zvcig7cz09PWF8fHM9PT1vOyl1Kz1zLHM9dC5jaGFyQXQoKytmKTtmb3IoO3M9PT1pOyl1Kz1zLHM9dC5jaGFyQXQoKytmKTtmb3IoO3M9PT1hfHxzPT09bzspdSs9cyxzPXQuY2hhckF0KCsrZik7Zi0tfWVsc2UgaCs9dStzLHU9XCJcIjtyZXR1cm4gbS5jb2x1bW4rPWcubGVuZ3RoLG0ub2Zmc2V0Kz1nLmxlbmd0aCxlKGcrPWgrdSkoe3R5cGU6XCJoZWFkaW5nXCIsZGVwdGg6YyxjaGlsZHJlbjp0aGlzLnRva2VuaXplSW5saW5lKGgsbSl9KX07dmFyIHI9XCJcXG5cIixvPVwiXFx0XCIsYT1cIiBcIixpPVwiI1wiLGw9Nn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIGMsZCxwLGYsbT0tMSxnPXQubGVuZ3RoKzEsaD1cIlwiO2Zvcig7KyttPGcmJigoYz10LmNoYXJBdChtKSk9PT1vfHxjPT09YSk7KWgrPWM7aWYoYyE9PWkmJmMhPT1zJiZjIT09bClyZXR1cm47ZD1jLGgrPWMscD0xLGY9XCJcIjtmb3IoOysrbTxnOylpZigoYz10LmNoYXJBdChtKSk9PT1kKXArKyxoKz1mK2QsZj1cIlwiO2Vsc2V7aWYoYyE9PWEpcmV0dXJuIHA+PXUmJighY3x8Yz09PXIpPyhoKz1mLCEhbnx8ZShoKSh7dHlwZTpcInRoZW1hdGljQnJlYWtcIn0pKTp2b2lkIDA7Zis9Y319O3ZhciByPVwiXFxuXCIsbz1cIlxcdFwiLGE9XCIgXCIsaT1cIipcIixsPVwiX1wiLHM9XCItXCIsdT0zfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyNCksbz1uKDU5KSxhPW4oNDMpLGk9bigxMDMpLGw9bigzMTYpLHM9big2MSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbyxpLGwsZyxiLHksdixTLEUsVCxBLEMsTyxJLE4sUixQLE0sTCxELEYsQixqLFUsej10aGlzLm9wdGlvbnMuY29tbW9ubWFyayxIPXRoaXMub3B0aW9ucy5wZWRhbnRpYyxXPXRoaXMuYmxvY2tUb2tlbml6ZXJzLEc9dGhpcy5pbnRlcnJ1cHRMaXN0LFY9MCwkPXQubGVuZ3RoLHE9bnVsbCxLPTA7Zm9yKDtWPCQ7KXtpZigoZz10LmNoYXJBdChWKSk9PT1tKUsrPWgtSyVoO2Vsc2V7aWYoZyE9PXApYnJlYWs7SysrfVYrK31pZihLPj1oKXJldHVybjtpZihnPXQuY2hhckF0KFYpLG89ej9rOncsITA9PT14W2ddKWI9ZyxsPSExO2Vsc2V7Zm9yKGw9ITAsaT1cIlwiO1Y8JCYmKGc9dC5jaGFyQXQoViksYShnKSk7KWkrPWcsVisrO2lmKGc9dC5jaGFyQXQoViksIWl8fCEwIT09b1tnXSlyZXR1cm47cT1wYXJzZUludChpLDEwKSxiPWd9aWYoKGc9dC5jaGFyQXQoKytWKSkhPT1wJiZnIT09bSlyZXR1cm47aWYobilyZXR1cm4hMDtWPTAsST1bXSxOPVtdLFI9W107Zm9yKDtWPCQ7KXtmb3IoeT10LmluZGV4T2YoZixWKSx2PVYsUz0hMSxVPSExLC0xPT09eSYmKHk9JCksaj1WK2gsSz0wO1Y8JDspe2lmKChnPXQuY2hhckF0KFYpKT09PW0pSys9aC1LJWg7ZWxzZXtpZihnIT09cClicmVhaztLKyt9VisrfWlmKEs+PWgmJihVPSEwKSxQJiZLPj1QLmluZGVudCYmKFU9ITApLGc9dC5jaGFyQXQoViksRT1udWxsLCFVKXtpZighMD09PXhbZ10pRT1nLFYrKyxLKys7ZWxzZXtmb3IoaT1cIlwiO1Y8JCYmKGc9dC5jaGFyQXQoViksYShnKSk7KWkrPWcsVisrO2c9dC5jaGFyQXQoViksVisrLGkmJiEwPT09b1tnXSYmKEU9ZyxLKz1pLmxlbmd0aCsxKX1pZihFKWlmKChnPXQuY2hhckF0KFYpKT09PW0pSys9aC1LJWgsVisrO2Vsc2UgaWYoZz09PXApe2ZvcihqPVYraDtWPGomJnQuY2hhckF0KFYpPT09cDspVisrLEsrKztWPT09aiYmdC5jaGFyQXQoVik9PT1wJiYoVi09aC0xLEstPWgtMSl9ZWxzZSBnIT09ZiYmXCJcIiE9PWcmJihFPW51bGwpfWlmKEUpe2lmKCFIJiZiIT09RSlicmVhaztTPSEwfWVsc2Ugenx8VXx8dC5jaGFyQXQodikhPT1wP3omJlAmJihVPUs+PVAuaW5kZW50fHxLPmgpOlU9ITAsUz0hMSxWPXY7aWYoQT10LnNsaWNlKHYseSksVD12PT09Vj9BOnQuc2xpY2UoVix5KSwoRT09PXV8fEU9PT1jfHxFPT09ZCkmJlcudGhlbWF0aWNCcmVhay5jYWxsKHRoaXMsZSxBLCEwKSlicmVhaztpZihDPU8sTz0hcihUKS5sZW5ndGgsVSYmUClQLnZhbHVlPVAudmFsdWUuY29uY2F0KFIsQSksTj1OLmNvbmNhdChSLEEpLFI9W107ZWxzZSBpZihTKTAhPT1SLmxlbmd0aCYmKFAudmFsdWUucHVzaChcIlwiKSxQLnRyYWlsPVIuY29uY2F0KCkpLFA9e3ZhbHVlOltBXSxpbmRlbnQ6Syx0cmFpbDpbXX0sSS5wdXNoKFApLE49Ti5jb25jYXQoUixBKSxSPVtdO2Vsc2UgaWYoTyl7aWYoQylicmVhaztSLnB1c2goQSl9ZWxzZXtpZihDKWJyZWFrO2lmKHMoRyxXLHRoaXMsW2UsQSwhMF0pKWJyZWFrO1AudmFsdWU9UC52YWx1ZS5jb25jYXQoUixBKSxOPU4uY29uY2F0KFIsQSksUj1bXX1WPXkrMX1GPWUoTi5qb2luKGYpKS5yZXNldCh7dHlwZTpcImxpc3RcIixvcmRlcmVkOmwsc3RhcnQ6cSxsb29zZTpudWxsLGNoaWxkcmVuOltdfSksTT10aGlzLmVudGVyTGlzdCgpLEw9dGhpcy5lbnRlckJsb2NrKCksRD0hMSxWPS0xLCQ9SS5sZW5ndGg7Zm9yKDsrK1Y8JDspUD1JW1ZdLnZhbHVlLmpvaW4oZiksQj1lLm5vdygpLChQPWUoUCkoXyh0aGlzLFAsQiksRikpLmxvb3NlJiYoRD0hMCksUD1JW1ZdLnRyYWlsLmpvaW4oZiksViE9PSQtMSYmKFArPWYpLGUoUCk7cmV0dXJuIE0oKSxMKCksRi5sb29zZT1ELEZ9O3ZhciB1PVwiKlwiLGM9XCJfXCIsZD1cIi1cIixwPVwiIFwiLGY9XCJcXG5cIixtPVwiXFx0XCIsZz1cInhcIixoPTQsYj0vXFxuXFxuKD8hXFxzKiQpLyx5PS9eXFxbKFsgXFx0XXx4fFgpXVsgXFx0XS8sdj0vXihbIFxcdF0qKShbKistXXxcXGQrWy4pXSkoIHsxLDR9KD8hICl8IHxcXHR8JHwoPz1cXG4pKShbXlxcbl0qKS8sUz0vXihbIFxcdF0qKShbKistXXxcXGQrWy4pXSkoWyBcXHRdKykvLEU9L14oIHsxLDR9fFxcdCk/L2dtLHg9e307eFt1XT0hMCx4W1wiK1wiXT0hMCx4W2RdPSEwO3ZhciB3PXtcIi5cIjohMH0saz17fTtmdW5jdGlvbiBfKGUsdCxuKXt2YXIgcixvLGE9ZS5vZmZzZXQsaT1udWxsO3JldHVybiB0PShlLm9wdGlvbnMucGVkYW50aWM/VDpBKS5hcHBseShudWxsLGFyZ3VtZW50cyksZS5vcHRpb25zLmdmbSYmKHI9dC5tYXRjaCh5KSkmJihvPXJbMF0ubGVuZ3RoLGk9clsxXS50b0xvd2VyQ2FzZSgpPT09ZyxhW24ubGluZV0rPW8sdD10LnNsaWNlKG8pKSx7dHlwZTpcImxpc3RJdGVtXCIsbG9vc2U6Yi50ZXN0KHQpfHx0LmNoYXJBdCh0Lmxlbmd0aC0xKT09PWYsY2hlY2tlZDppLGNoaWxkcmVuOmUudG9rZW5pemVCbG9jayh0LG4pfX1mdW5jdGlvbiBUKGUsdCxuKXt2YXIgcj1lLm9mZnNldCxvPW4ubGluZTtyZXR1cm4gdD10LnJlcGxhY2UoUyxhKSxvPW4ubGluZSx0LnJlcGxhY2UoRSxhKTtmdW5jdGlvbiBhKGUpe3JldHVybiByW29dPShyW29dfHwwKStlLmxlbmd0aCxvKyssXCJcIn19ZnVuY3Rpb24gQShlLHQsbil7dmFyIHIsYSxzLHUsYyxkLG0sZz1lLm9mZnNldCxoPW4ubGluZTtmb3IodT0odD10LnJlcGxhY2UodixmdW5jdGlvbihlLHQsbixpLGwpe2E9dCtuK2kscz1sLE51bWJlcihuKTwxMCYmYS5sZW5ndGglMj09MSYmKG49cCtuKTtyZXR1cm4ocj10K28ocCxuLmxlbmd0aCkraSkrc30pKS5zcGxpdChmKSwoYz1sKHQsaShyKS5pbmRlbnQpLnNwbGl0KGYpKVswXT1zLGdbaF09KGdbaF18fDApK2EubGVuZ3RoLGgrKyxkPTAsbT11Lmxlbmd0aDsrK2Q8bTspZ1toXT0oZ1toXXx8MCkrdVtkXS5sZW5ndGgtY1tkXS5sZW5ndGgsaCsrO3JldHVybiBjLmpvaW4oZil9a1tcIi5cIl09ITAsa1tcIilcIl09ITB9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDI0KSxvPW4oNTkpLGE9bigxMDMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuLHUsYyxkLHA9ZS5zcGxpdChsKSxmPXAubGVuZ3RoKzEsbT0xLzAsZz1bXTtwLnVuc2hpZnQobyhpLHQpK1wiIVwiKTtmb3IoO2YtLTspaWYodT1hKHBbZl0pLGdbZl09dS5zdG9wcywwIT09cihwW2ZdKS5sZW5ndGgpe2lmKCF1LmluZGVudCl7bT0xLzA7YnJlYWt9dS5pbmRlbnQ+MCYmdS5pbmRlbnQ8bSYmKG09dS5pbmRlbnQpfWlmKG0hPT0xLzApZm9yKGY9cC5sZW5ndGg7Zi0tOyl7Zm9yKGM9Z1tmXSxuPW07biYmIShuIGluIGMpOyluLS07ZD0wIT09cihwW2ZdKS5sZW5ndGgmJm0mJm4hPT1tP3M6XCJcIixwW2ZdPWQrcFtmXS5zbGljZShuIGluIGM/Y1tuXSsxOjApfXJldHVybiBwLnNoaWZ0KCkscC5qb2luKGwpfTt2YXIgaT1cIiBcIixsPVwiXFxuXCIscz1cIlxcdFwifSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcyx1LGMsZCxwLGY9ZS5ub3coKSxtPXQubGVuZ3RoLGc9LTEsaD1cIlwiO2Zvcig7KytnPG07KXtpZigoYz10LmNoYXJBdChnKSkhPT1hfHxnPj1pKXtnLS07YnJlYWt9aCs9Y31zPVwiXCIsdT1cIlwiO2Zvcig7KytnPG07KXtpZigoYz10LmNoYXJBdChnKSk9PT1yKXtnLS07YnJlYWt9Yz09PWF8fGM9PT1vP3UrPWM6KHMrPXUrYyx1PVwiXCIpfWlmKGYuY29sdW1uKz1oLmxlbmd0aCxmLm9mZnNldCs9aC5sZW5ndGgsaCs9cyt1LGM9dC5jaGFyQXQoKytnKSxkPXQuY2hhckF0KCsrZyksYyE9PXJ8fCFsW2RdKXJldHVybjtoKz1jLHU9ZCxwPWxbZF07Zm9yKDsrK2c8bTspe2lmKChjPXQuY2hhckF0KGcpKSE9PWQpe2lmKGMhPT1yKXJldHVybjtnLS07YnJlYWt9dSs9Y31pZihuKXJldHVybiEwO3JldHVybiBlKGgrdSkoe3R5cGU6XCJoZWFkaW5nXCIsZGVwdGg6cCxjaGlsZHJlbjp0aGlzLnRva2VuaXplSW5saW5lKHMsZil9KX07dmFyIHI9XCJcXG5cIixvPVwiXFx0XCIsYT1cIiBcIixpPTMsbD17fTtsW1wiPVwiXT0xLGxbXCItXCJdPTJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDEwNCkub3BlbkNsb3NlVGFnO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHMsdSxjLGQscCxmLG0sZz10aGlzLm9wdGlvbnMuYmxvY2tzLGg9dC5sZW5ndGgsYj0wLHk9W1svXjwoc2NyaXB0fHByZXxzdHlsZSkoPz0oXFxzfD58JCkpL2ksLzxcXC8oc2NyaXB0fHByZXxzdHlsZSk+L2ksITBdLFsvXjwhLS0vLC8tLT4vLCEwXSxbL148XFw/LywvXFw/Pi8sITBdLFsvXjwhW0EtWmEtel0vLC8+LywhMF0sWy9ePCFcXFtDREFUQVxcWy8sL1xcXVxcXT4vLCEwXSxbbmV3IFJlZ0V4cChcIl48Lz8oXCIrZy5qb2luKFwifFwiKStcIikoPz0oXFxcXHN8Lz8+fCQpKVwiLFwiaVwiKSwvXiQvLCEwXSxbbmV3IFJlZ0V4cChyLnNvdXJjZStcIlxcXFxzKiRcIiksL14kLywhMV1dO2Zvcig7YjxoJiYoKGQ9dC5jaGFyQXQoYikpPT09b3x8ZD09PWEpOyliKys7aWYodC5jaGFyQXQoYikhPT1sKXJldHVybjtzPS0xPT09KHM9dC5pbmRleE9mKGksYisxKSk/aDpzLHU9dC5zbGljZShiLHMpLGM9LTEscD15Lmxlbmd0aDtmb3IoOysrYzxwOylpZih5W2NdWzBdLnRlc3QodSkpe2Y9eVtjXTticmVha31pZighZilyZXR1cm47aWYobilyZXR1cm4gZlsyXTtpZihiPXMsIWZbMV0udGVzdCh1KSlmb3IoO2I8aDspe2lmKHM9LTE9PT0ocz10LmluZGV4T2YoaSxiKzEpKT9oOnMsdT10LnNsaWNlKGIrMSxzKSxmWzFdLnRlc3QodSkpe3UmJihiPXMpO2JyZWFrfWI9c31yZXR1cm4gbT10LnNsaWNlKDAsYiksZShtKSh7dHlwZTpcImh0bWxcIix2YWx1ZTptfSl9O3ZhciBvPVwiXFx0XCIsYT1cIiBcIixpPVwiXFxuXCIsbD1cIjxcIn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjApLG89big2Mik7ZS5leHBvcnRzPW0sbS5ub3RJbkxpc3Q9ITAsbS5ub3RJbkJsb2NrPSEwO3ZhciBhPVwiXFxcXFwiLGk9XCJcXG5cIixsPVwiXFx0XCIscz1cIiBcIix1PVwiW1wiLGM9XCJdXCIsZD1cIl5cIixwPVwiOlwiLGY9L14oIHs0fXxcXHQpPy9nbTtmdW5jdGlvbiBtKGUsdCxuKXt2YXIgbSxnLGgsYix5LHYsUyxFLHgsdyxrLF8sVD10aGlzLm9mZnNldDtpZih0aGlzLm9wdGlvbnMuZm9vdG5vdGVzKXtmb3IobT0wLGc9dC5sZW5ndGgsaD1cIlwiLGI9ZS5ub3coKSx5PWIubGluZTttPGcmJih4PXQuY2hhckF0KG0pLHIoeCkpOyloKz14LG0rKztpZih0LmNoYXJBdChtKT09PXUmJnQuY2hhckF0KG0rMSk9PT1kKXtmb3IobT0oaCs9dStkKS5sZW5ndGgsUz1cIlwiO208ZyYmKHg9dC5jaGFyQXQobSkpIT09YzspeD09PWEmJihTKz14LG0rKyx4PXQuY2hhckF0KG0pKSxTKz14LG0rKztpZihTJiZ0LmNoYXJBdChtKT09PWMmJnQuY2hhckF0KG0rMSk9PT1wKXtpZihuKXJldHVybiEwO2Zvcih3PW8oUyksbT0oaCs9UytjK3ApLmxlbmd0aDttPGcmJigoeD10LmNoYXJBdChtKSk9PT1sfHx4PT09cyk7KWgrPXgsbSsrO2ZvcihiLmNvbHVtbis9aC5sZW5ndGgsYi5vZmZzZXQrPWgubGVuZ3RoLFM9XCJcIix2PVwiXCIsRT1cIlwiO208Zzspe2lmKCh4PXQuY2hhckF0KG0pKT09PWkpe2ZvcihFPXgsbSsrO208ZyYmKHg9dC5jaGFyQXQobSkpPT09aTspRSs9eCxtKys7Zm9yKFMrPUUsRT1cIlwiO208ZyYmKHg9dC5jaGFyQXQobSkpPT09czspRSs9eCxtKys7aWYoMD09PUUubGVuZ3RoKWJyZWFrO1MrPUV9UyYmKHYrPVMsUz1cIlwiKSx2Kz14LG0rK31yZXR1cm4gaCs9dix2PXYucmVwbGFjZShmLGZ1bmN0aW9uKGUpe3JldHVybiBUW3ldPShUW3ldfHwwKStlLmxlbmd0aCx5KyssXCJcIn0pLGs9ZShoKSxfPXRoaXMuZW50ZXJCbG9jaygpLHY9dGhpcy50b2tlbml6ZUJsb2NrKHYsYiksXygpLGsoe3R5cGU6XCJmb290bm90ZURlZmluaXRpb25cIixpZGVudGlmaWVyOncsY2hpbGRyZW46dn0pfX19fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoL1xccysvZyxcIiBcIil9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyMCksbz1uKDYyKTtlLmV4cG9ydHM9eSx5Lm5vdEluTGlzdD0hMCx5Lm5vdEluQmxvY2s9ITA7dmFyIGE9J1wiJyxpPVwiJ1wiLGw9XCJcXFxcXCIscz1cIlxcblwiLHU9XCJcXHRcIixjPVwiIFwiLGQ9XCJbXCIscD1cIl1cIixmPVwiKFwiLG09XCIpXCIsZz1cIjpcIixoPVwiPFwiLGI9XCI+XCI7ZnVuY3Rpb24geShlLHQsbil7Zm9yKHZhciByLGIseSxFLHgsdyxrLF8sVD10aGlzLm9wdGlvbnMuY29tbW9ubWFyayxBPTAsQz10Lmxlbmd0aCxPPVwiXCI7QTxDJiYoKEU9dC5jaGFyQXQoQSkpPT09Y3x8RT09PXUpOylPKz1FLEErKztpZigoRT10LmNoYXJBdChBKSk9PT1kKXtmb3IoQSsrLE8rPUUseT1cIlwiO0E8QyYmKEU9dC5jaGFyQXQoQSkpIT09cDspRT09PWwmJih5Kz1FLEErKyxFPXQuY2hhckF0KEEpKSx5Kz1FLEErKztpZih5JiZ0LmNoYXJBdChBKT09PXAmJnQuY2hhckF0KEErMSk9PT1nKXtmb3Iodz15LEE9KE8rPXkrcCtnKS5sZW5ndGgseT1cIlwiO0E8QyYmKChFPXQuY2hhckF0KEEpKT09PXV8fEU9PT1jfHxFPT09cyk7KU8rPUUsQSsrO2lmKHk9XCJcIixyPU8sKEU9dC5jaGFyQXQoQSkpPT09aCl7Zm9yKEErKztBPEMmJnYoRT10LmNoYXJBdChBKSk7KXkrPUUsQSsrO2lmKChFPXQuY2hhckF0KEEpKT09PXYuZGVsaW1pdGVyKU8rPWgreStFLEErKztlbHNle2lmKFQpcmV0dXJuO0EtPXkubGVuZ3RoKzEseT1cIlwifX1pZigheSl7Zm9yKDtBPEMmJlMoRT10LmNoYXJBdChBKSk7KXkrPUUsQSsrO08rPXl9aWYoeSl7Zm9yKGs9eSx5PVwiXCI7QTxDJiYoKEU9dC5jaGFyQXQoQSkpPT09dXx8RT09PWN8fEU9PT1zKTspeSs9RSxBKys7aWYoeD1udWxsLChFPXQuY2hhckF0KEEpKT09PWE/eD1hOkU9PT1pP3g9aTpFPT09ZiYmKHg9bSkseCl7aWYoIXkpcmV0dXJuO2ZvcihBPShPKz15K0UpLmxlbmd0aCx5PVwiXCI7QTxDJiYoRT10LmNoYXJBdChBKSkhPT14Oyl7aWYoRT09PXMpe2lmKEErKywoRT10LmNoYXJBdChBKSk9PT1zfHxFPT09eClyZXR1cm47eSs9c315Kz1FLEErK31pZigoRT10LmNoYXJBdChBKSkhPT14KXJldHVybjtiPU8sTys9eStFLEErKyxfPXkseT1cIlwifWVsc2UgeT1cIlwiLEE9Ty5sZW5ndGg7Zm9yKDtBPEMmJigoRT10LmNoYXJBdChBKSk9PT11fHxFPT09Yyk7KU8rPUUsQSsrO3JldHVybihFPXQuY2hhckF0KEEpKSYmRSE9PXM/dm9pZCAwOiEhbnx8KHI9ZShyKS50ZXN0KCkuZW5kLGs9dGhpcy5kZWNvZGUucmF3KHRoaXMudW5lc2NhcGUoaykscix7bm9uVGVybWluYXRlZDohMX0pLF8mJihiPWUoYikudGVzdCgpLmVuZCxfPXRoaXMuZGVjb2RlLnJhdyh0aGlzLnVuZXNjYXBlKF8pLGIpKSxlKE8pKHt0eXBlOlwiZGVmaW5pdGlvblwiLGlkZW50aWZpZXI6byh3KSx0aXRsZTpffHxudWxsLHVybDprfSkpfX19fWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGUhPT1iJiZlIT09ZCYmZSE9PXB9ZnVuY3Rpb24gUyhlKXtyZXR1cm4gZSE9PWQmJmUhPT1wJiYhcihlKX12LmRlbGltaXRlcj1ifSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgeSx2LFMsRSx4LHcsayxfLFQsQSxDLE8sSSxOLFIsUCxNLEwsRCxGLEIsaixVLHo7aWYoIXRoaXMub3B0aW9ucy5nZm0pcmV0dXJuO3k9MCxMPTAsdz10Lmxlbmd0aCsxLGs9W107Zm9yKDt5PHc7KXtpZihqPXQuaW5kZXhPZihjLHkpLFU9dC5pbmRleE9mKGwseSsxKSwtMT09PWomJihqPXQubGVuZ3RoKSwtMT09PVV8fFU+ail7aWYoTDxmKXJldHVybjticmVha31rLnB1c2godC5zbGljZSh5LGopKSxMKysseT1qKzF9RT1rLmpvaW4oYyksdj1rLnNwbGljZSgxLDEpWzBdfHxbXSx5PTAsdz12Lmxlbmd0aCxMLS0sUz0hMSxDPVtdO2Zvcig7eTx3Oyl7aWYoKFQ9di5jaGFyQXQoeSkpPT09bCl7aWYoQT1udWxsLCExPT09Uyl7aWYoITE9PT16KXJldHVybn1lbHNlIEMucHVzaChTKSxTPSExO3o9ITF9ZWxzZSBpZihUPT09aSlBPSEwLFM9U3x8YjtlbHNlIGlmKFQ9PT1zKVM9Uz09PW0/ZzpBJiZTPT09Yj9oOm07ZWxzZSBpZighcihUKSlyZXR1cm47eSsrfSExIT09UyYmQy5wdXNoKFMpO2lmKEMubGVuZ3RoPHApcmV0dXJuO2lmKG4pcmV0dXJuITA7TT0tMSxGPVtdLEI9ZShFKS5yZXNldCh7dHlwZTpcInRhYmxlXCIsYWxpZ246QyxjaGlsZHJlbjpGfSk7Zm9yKDsrK008TDspe2ZvcihEPWtbTV0seD17dHlwZTpcInRhYmxlUm93XCIsY2hpbGRyZW46W119LE0mJmUoYyksZShEKS5yZXNldCh4LEIpLHc9RC5sZW5ndGgrMSx5PTAsXz1cIlwiLE89XCJcIixJPSEwLE49bnVsbCxSPW51bGw7eTx3OylpZigoVD1ELmNoYXJBdCh5KSkhPT1kJiZUIT09dSl7aWYoXCJcIj09PVR8fFQ9PT1sKWlmKEkpZShUKTtlbHNle2lmKFQmJlIpe18rPVQseSsrO2NvbnRpbnVlfSFPJiYhVHx8SXx8KEU9TyxfLmxlbmd0aD4xJiYoVD8oRSs9Xy5zbGljZSgwLF8ubGVuZ3RoLTEpLF89Xy5jaGFyQXQoXy5sZW5ndGgtMSkpOihFKz1fLF89XCJcIikpLFA9ZS5ub3coKSxlKEUpKHt0eXBlOlwidGFibGVDZWxsXCIsY2hpbGRyZW46dGhpcy50b2tlbml6ZUlubGluZShPLFApfSx4KSksZShfK1QpLF89XCJcIixPPVwiXCJ9ZWxzZSBpZihfJiYoTys9XyxfPVwiXCIpLE8rPVQsVD09PW8mJnkhPT13LTImJihPKz1ELmNoYXJBdCh5KzEpLHkrKyksVD09PWEpe2ZvcihOPTE7RC5jaGFyQXQoeSsxKT09PVQ7KU8rPVQseSsrLE4rKztSP04+PVImJihSPTApOlI9Tn1JPSExLHkrK31lbHNlIE8/Xys9VDplKFQpLHkrKztNfHxlKGMrdil9cmV0dXJuIEJ9O3ZhciBvPVwiXFxcXFwiLGE9XCJgXCIsaT1cIi1cIixsPVwifFwiLHM9XCI6XCIsdT1cIiBcIixjPVwiXFxuXCIsZD1cIlxcdFwiLHA9MSxmPTIsbT1cImxlZnRcIixnPVwiY2VudGVyXCIsaD1cInJpZ2h0XCIsYj1udWxsfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyNCksbz1uKDQzKSxhPW4oNjApLGk9big2MSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgZCxwLGYsbSxnLGg9dGhpcy5vcHRpb25zLGI9aC5jb21tb25tYXJrLHk9aC5nZm0sdj10aGlzLmJsb2NrVG9rZW5pemVycyxTPXRoaXMuaW50ZXJydXB0UGFyYWdyYXBoLEU9dC5pbmRleE9mKGwpLHg9dC5sZW5ndGg7Zm9yKDtFPHg7KXtpZigtMT09PUUpe0U9eDticmVha31pZih0LmNoYXJBdChFKzEpPT09bClicmVhaztpZihiKXtmb3IobT0wLGQ9RSsxO2Q8eDspe2lmKChmPXQuY2hhckF0KGQpKT09PXMpe209YzticmVha31pZihmIT09dSlicmVhazttKyssZCsrfWlmKG0+PWMpe0U9dC5pbmRleE9mKGwsRSsxKTtjb250aW51ZX19aWYocD10LnNsaWNlKEUrMSksaShTLHYsdGhpcyxbZSxwLCEwXSkpYnJlYWs7aWYodi5saXN0LmNhbGwodGhpcyxlLHAsITApJiYodGhpcy5pbkxpc3R8fGJ8fHkmJiFvKHIubGVmdChwKS5jaGFyQXQoMCkpKSlicmVhaztpZihkPUUsLTEhPT0oRT10LmluZGV4T2YobCxFKzEpKSYmXCJcIj09PXIodC5zbGljZShkLEUpKSl7RT1kO2JyZWFrfX1pZihwPXQuc2xpY2UoMCxFKSxcIlwiPT09cihwKSlyZXR1cm4gZShwKSxudWxsO2lmKG4pcmV0dXJuITA7cmV0dXJuIGc9ZS5ub3coKSxwPWEocCksZShwKSh7dHlwZTpcInBhcmFncmFwaFwiLGNoaWxkcmVuOnRoaXMudG9rZW5pemVJbmxpbmUocCxnKX0pfTt2YXIgbD1cIlxcblwiLHM9XCJcXHRcIix1PVwiIFwiLGM9NH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMzI1KTtmdW5jdGlvbiBvKGUsdCxuKXt2YXIgcixvO2lmKFwiXFxcXFwiPT09dC5jaGFyQXQoMCkmJihyPXQuY2hhckF0KDEpLC0xIT09dGhpcy5lc2NhcGUuaW5kZXhPZihyKSkpcmV0dXJuISFufHwobz1cIlxcblwiPT09cj97dHlwZTpcImJyZWFrXCJ9Ont0eXBlOlwidGV4dFwiLHZhbHVlOnJ9LGUoXCJcXFxcXCIrcikobykpfWUuZXhwb3J0cz1vLG8ubG9jYXRvcj1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaW5kZXhPZihcIlxcXFxcIix0KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIwKSxvPW4oNDIpLGE9bigxMDUpO2UuZXhwb3J0cz1wLHAubG9jYXRvcj1hLHAubm90SW5MaW5rPSEwO3ZhciBpPVwiPFwiLGw9XCI+XCIscz1cIkBcIix1PVwiL1wiLGM9XCJtYWlsdG86XCIsZD1jLmxlbmd0aDtmdW5jdGlvbiBwKGUsdCxuKXt2YXIgYSxwLGYsbSxnLGgsYix5LHYsUyxFO2lmKHQuY2hhckF0KDApPT09aSl7Zm9yKHRoaXMsYT1cIlwiLHA9dC5sZW5ndGgsZj0wLG09XCJcIixoPSExLGI9XCJcIixmKyssYT1pO2Y8cCYmKGc9dC5jaGFyQXQoZiksIShyKGcpfHxnPT09bHx8Zz09PXN8fFwiOlwiPT09ZyYmdC5jaGFyQXQoZisxKT09PXUpKTspbSs9ZyxmKys7aWYobSl7aWYoYis9bSxtPVwiXCIsYis9Zz10LmNoYXJBdChmKSxmKyssZz09PXMpaD0hMDtlbHNle2lmKFwiOlwiIT09Z3x8dC5jaGFyQXQoZisxKSE9PXUpcmV0dXJuO2IrPXUsZisrfWZvcig7ZjxwJiYoZz10LmNoYXJBdChmKSwhcihnKSYmZyE9PWwpOyltKz1nLGYrKztpZihnPXQuY2hhckF0KGYpLG0mJmc9PT1sKXJldHVybiEhbnx8KHY9Yis9bSxhKz1iK2csKHk9ZS5ub3coKSkuY29sdW1uKysseS5vZmZzZXQrKyxoJiYoYi5zbGljZSgwLGQpLnRvTG93ZXJDYXNlKCk9PT1jPyh2PXYuc3Vic3RyKGQpLHkuY29sdW1uKz1kLHkub2Zmc2V0Kz1kKTpiPWMrYiksUz10aGlzLmlubGluZVRva2VuaXplcnMsdGhpcy5pbmxpbmVUb2tlbml6ZXJzPXt0ZXh0OlMudGV4dH0sRT10aGlzLmVudGVyTGluaygpLHY9dGhpcy50b2tlbml6ZUlubGluZSh2LHkpLHRoaXMuaW5saW5lVG9rZW5pemVycz1TLEUoKSxlKGEpKHt0eXBlOlwibGlua1wiLHRpdGxlOm51bGwsdXJsOm8oYix7bm9uVGVybWluYXRlZDohMX0pLGNoaWxkcmVuOnZ9KSl9fX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDQyKSxvPW4oMjApLGE9bigzMjgpO2UuZXhwb3J0cz1nLGcubG9jYXRvcj1hLGcubm90SW5MaW5rPSEwO3ZhciBpPVwiW1wiLGw9XCJdXCIscz1cIihcIix1PVwiKVwiLGM9XCI8XCIsZD1cIkBcIixwPVwibWFpbHRvOlwiLGY9W1wiaHR0cDovL1wiLFwiaHR0cHM6Ly9cIixwXSxtPWYubGVuZ3RoO2Z1bmN0aW9uIGcoZSx0LG4pe3ZhciBhLGcsaCxiLHksdixTLEUseCx3LGssXztpZih0aGlzLm9wdGlvbnMuZ2ZtKXtmb3IoYT1cIlwiLGI9LTEsRT1tOysrYjxFOylpZih2PWZbYl0sKFM9dC5zbGljZSgwLHYubGVuZ3RoKSkudG9Mb3dlckNhc2UoKT09PXYpe2E9UzticmVha31pZihhKXtmb3IoYj1hLmxlbmd0aCxFPXQubGVuZ3RoLHg9XCJcIix3PTA7YjxFJiYoaD10LmNoYXJBdChiKSwhbyhoKSYmaCE9PWMpJiYoXCIuXCIhPT1oJiZcIixcIiE9PWgmJlwiOlwiIT09aCYmXCI7XCIhPT1oJiYnXCInIT09aCYmXCInXCIhPT1oJiZcIilcIiE9PWgmJlwiXVwiIT09aHx8KGs9dC5jaGFyQXQoYisxKSkmJiFvKGspKSYmKGghPT1zJiZoIT09aXx8dysrLGghPT11JiZoIT09bHx8ISgtLXc8MCkpOyl4Kz1oLGIrKztpZih4KXtpZihnPWErPXgsdj09PXApe2lmKC0xPT09KHk9eC5pbmRleE9mKGQpKXx8eT09PUUtMSlyZXR1cm47Zz1nLnN1YnN0cihwLmxlbmd0aCl9cmV0dXJuISFufHwoXz10aGlzLmVudGVyTGluaygpLGc9dGhpcy50b2tlbml6ZUlubGluZShnLGUubm93KCkpLF8oKSxlKGEpKHt0eXBlOlwibGlua1wiLHRpdGxlOm51bGwsdXJsOnIoYSx7bm9uVGVybWluYXRlZDohMX0pLGNoaWxkcmVuOmd9KSl9fX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG4sbz1yLmxlbmd0aCxhPS0xLGk9LTE7aWYoIXRoaXMub3B0aW9ucy5nZm0pcmV0dXJuLTE7Zm9yKDsrK2E8bzspLTEhPT0obj1lLmluZGV4T2YoclthXSx0KSkmJihuPGl8fC0xPT09aSkmJihpPW4pO3JldHVybiBpfTt2YXIgcj1bXCJodHRwczovL1wiLFwiaHR0cDovL1wiLFwibWFpbHRvOlwiXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMTAxKSxvPW4oMTA1KSxhPW4oMTA0KS50YWc7ZS5leHBvcnRzPXMscy5sb2NhdG9yPW87dmFyIGk9L148YSAvaSxsPS9ePFxcL2E+L2k7ZnVuY3Rpb24gcyhlLHQsbil7dmFyIG8scyx1PXQubGVuZ3RoO2lmKCEoXCI8XCIhPT10LmNoYXJBdCgwKXx8dTwzKSYmKG89dC5jaGFyQXQoMSksKHIobyl8fFwiP1wiPT09b3x8XCIhXCI9PT1vfHxcIi9cIj09PW8pJiYocz10Lm1hdGNoKGEpKSkpcmV0dXJuISFufHwocz1zWzBdLCF0aGlzLmluTGluayYmaS50ZXN0KHMpP3RoaXMuaW5MaW5rPSEwOnRoaXMuaW5MaW5rJiZsLnRlc3QocykmJih0aGlzLmluTGluaz0hMSksZShzKSh7dHlwZTpcImh0bWxcIix2YWx1ZTpzfSkpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjApLG89bigxMDYpO2UuZXhwb3J0cz1oLGgubG9jYXRvcj1vO3ZhciBhPXt9Lmhhc093blByb3BlcnR5LGk9XCJcXFxcXCIsbD1cIltcIixzPVwiXVwiLHU9XCIoXCIsYz1cIilcIixkPVwiPFwiLHA9XCI+XCIsZj1cImBcIixtPXsnXCInOidcIicsXCInXCI6XCInXCJ9LGc9e307ZnVuY3Rpb24gaChlLHQsbil7dmFyIG8saCxiLHksdixTLEUseCx3LGssXyxULEEsQyxPLEksTixSLFAsTT1cIlwiLEw9MCxEPXQuY2hhckF0KDApLEY9dGhpcy5vcHRpb25zLnBlZGFudGljLEI9dGhpcy5vcHRpb25zLmNvbW1vbm1hcmssaj10aGlzLm9wdGlvbnMuZ2ZtO2lmKFwiIVwiPT09RCYmKHc9ITAsTT1ELEQ9dC5jaGFyQXQoKytMKSksRD09PWwmJih3fHwhdGhpcy5pbkxpbmspKXtmb3IoTSs9RCxPPVwiXCIsTCsrLFQ9dC5sZW5ndGgsQz0wLChOPWUubm93KCkpLmNvbHVtbis9TCxOLm9mZnNldCs9TDtMPFQ7KXtpZihTPUQ9dC5jaGFyQXQoTCksRD09PWYpe2ZvcihoPTE7dC5jaGFyQXQoTCsxKT09PWY7KVMrPUQsTCsrLGgrKztiP2g+PWImJihiPTApOmI9aH1lbHNlIGlmKEQ9PT1pKUwrKyxTKz10LmNoYXJBdChMKTtlbHNlIGlmKGImJiFqfHxEIT09bCl7aWYoKCFifHxqKSYmRD09PXMpe2lmKCFDKXtpZighRilmb3IoO0w8VCYmKEQ9dC5jaGFyQXQoTCsxKSxyKEQpKTspUys9RCxMKys7aWYodC5jaGFyQXQoTCsxKSE9PXUpcmV0dXJuO1MrPXUsbz0hMCxMKys7YnJlYWt9Qy0tfX1lbHNlIEMrKztPKz1TLFM9XCJcIixMKyt9aWYobyl7Zm9yKGs9TyxNKz1PK1MsTCsrO0w8VCYmKEQ9dC5jaGFyQXQoTCkscihEKSk7KU0rPUQsTCsrO2lmKEQ9dC5jaGFyQXQoTCkseD1CP2c6bSxPPVwiXCIseT1NLEQ9PT1kKXtmb3IoTCsrLHkrPWQ7TDxUJiYoRD10LmNoYXJBdChMKSkhPT1wOyl7aWYoQiYmXCJcXG5cIj09PUQpcmV0dXJuO08rPUQsTCsrfWlmKHQuY2hhckF0KEwpIT09cClyZXR1cm47TSs9ZCtPK3AsST1PLEwrK31lbHNle2ZvcihEPW51bGwsUz1cIlwiO0w8VCYmKEQ9dC5jaGFyQXQoTCksIVN8fCFhLmNhbGwoeCxEKSk7KXtpZihyKEQpKXtpZighRilicmVhaztTKz1EfWVsc2V7aWYoRD09PXUpQysrO2Vsc2UgaWYoRD09PWMpe2lmKDA9PT1DKWJyZWFrO0MtLX1PKz1TLFM9XCJcIixEPT09aSYmKE8rPWksRD10LmNoYXJBdCgrK0wpKSxPKz1EfUwrK31JPU8sTD0oTSs9TykubGVuZ3RofWZvcihPPVwiXCI7TDxUJiYoRD10LmNoYXJBdChMKSxyKEQpKTspTys9RCxMKys7aWYoRD10LmNoYXJBdChMKSxNKz1PLE8mJmEuY2FsbCh4LEQpKWlmKEwrKyxNKz1ELE89XCJcIixfPXhbRF0sdj1NLEIpe2Zvcig7TDxUJiYoRD10LmNoYXJBdChMKSkhPT1fOylEPT09aSYmKE8rPWksRD10LmNoYXJBdCgrK0wpKSxMKyssTys9RDtpZigoRD10LmNoYXJBdChMKSkhPT1fKXJldHVybjtmb3IoQT1PLE0rPU8rRCxMKys7TDxUJiYoRD10LmNoYXJBdChMKSxyKEQpKTspTSs9RCxMKyt9ZWxzZSBmb3IoUz1cIlwiO0w8VDspe2lmKChEPXQuY2hhckF0KEwpKT09PV8pRSYmKE8rPV8rUyxTPVwiXCIpLEU9ITA7ZWxzZSBpZihFKXtpZihEPT09Yyl7TSs9TytfK1MsQT1PO2JyZWFrfXIoRCk/Uys9RDooTys9XytTK0QsUz1cIlwiLEU9ITEpfWVsc2UgTys9RDtMKyt9aWYodC5jaGFyQXQoTCk9PT1jKXJldHVybiEhbnx8KE0rPWMsST10aGlzLmRlY29kZS5yYXcodGhpcy51bmVzY2FwZShJKSxlKHkpLnRlc3QoKS5lbmQse25vblRlcm1pbmF0ZWQ6ITF9KSxBJiYodj1lKHYpLnRlc3QoKS5lbmQsQT10aGlzLmRlY29kZS5yYXcodGhpcy51bmVzY2FwZShBKSx2KSksUD17dHlwZTp3P1wiaW1hZ2VcIjpcImxpbmtcIix0aXRsZTpBfHxudWxsLHVybDpJfSx3P1AuYWx0PXRoaXMuZGVjb2RlLnJhdyh0aGlzLnVuZXNjYXBlKGspLE4pfHxudWxsOihSPXRoaXMuZW50ZXJMaW5rKCksUC5jaGlsZHJlbj10aGlzLnRva2VuaXplSW5saW5lKGssTiksUigpKSxlKE0pKFApKX19fWdbJ1wiJ109J1wiJyxnW1wiJ1wiXT1cIidcIixnW3VdPWN9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIwKSxvPW4oMTA2KSxhPW4oNjIpO2UuZXhwb3J0cz1oLGgubG9jYXRvcj1vO3ZhciBpPVwibGlua1wiLGw9XCJpbWFnZVwiLHM9XCJmb290bm90ZVwiLHU9XCJzaG9ydGN1dFwiLGM9XCJjb2xsYXBzZWRcIixkPVwiZnVsbFwiLHA9XCJeXCIsZj1cIlxcXFxcIixtPVwiW1wiLGc9XCJdXCI7ZnVuY3Rpb24gaChlLHQsbil7dmFyIG8saCxiLHksdixTLEUseCx3PXQuY2hhckF0KDApLGs9MCxfPXQubGVuZ3RoLFQ9XCJcIixBPVwiXCIsQz1pLE89dTtpZihcIiFcIj09PXcmJihDPWwsQT13LHc9dC5jaGFyQXQoKytrKSksdz09PW0pe2lmKGsrKyxBKz13LFM9XCJcIix0aGlzLm9wdGlvbnMuZm9vdG5vdGVzJiZ0LmNoYXJBdChrKT09PXApe2lmKEM9PT1sKXJldHVybjtBKz1wLGsrKyxDPXN9Zm9yKHg9MDtrPF87KXtpZigodz10LmNoYXJBdChrKSk9PT1tKUU9ITAseCsrO2Vsc2UgaWYodz09PWcpe2lmKCF4KWJyZWFrO3gtLX13PT09ZiYmKFMrPWYsdz10LmNoYXJBdCgrK2spKSxTKz13LGsrK31pZihUPVMsbz1TLCh3PXQuY2hhckF0KGspKT09PWcpe2ZvcihrKyssVCs9dyxTPVwiXCI7azxfJiYodz10LmNoYXJBdChrKSxyKHcpKTspUys9dyxrKys7aWYodz10LmNoYXJBdChrKSxDIT09cyYmdz09PW0pe2ZvcihoPVwiXCIsUys9dyxrKys7azxfJiYodz10LmNoYXJBdChrKSkhPT1tJiZ3IT09Zzspdz09PWYmJihoKz1mLHc9dC5jaGFyQXQoKytrKSksaCs9dyxrKys7KHc9dC5jaGFyQXQoaykpPT09Zz8oTz1oP2Q6YyxTKz1oK3csaysrKTpoPVwiXCIsVCs9UyxTPVwiXCJ9ZWxzZXtpZighbylyZXR1cm47aD1vfWlmKE89PT1kfHwhRSlyZXR1cm4gVD1BK1QsQz09PWkmJnRoaXMuaW5MaW5rP251bGw6ISFufHwoQz09PXMmJi0xIT09by5pbmRleE9mKFwiIFwiKT9lKFQpKHt0eXBlOlwiZm9vdG5vdGVcIixjaGlsZHJlbjp0aGlzLnRva2VuaXplSW5saW5lKG8sZS5ub3coKSl9KTooKGI9ZS5ub3coKSkuY29sdW1uKz1BLmxlbmd0aCxiLm9mZnNldCs9QS5sZW5ndGgseT17dHlwZTpDK1wiUmVmZXJlbmNlXCIsaWRlbnRpZmllcjphKGg9Tz09PWQ/aDpvKX0sQyE9PWkmJkMhPT1sfHwoeS5yZWZlcmVuY2VUeXBlPU8pLEM9PT1pPyh2PXRoaXMuZW50ZXJMaW5rKCkseS5jaGlsZHJlbj10aGlzLnRva2VuaXplSW5saW5lKG8sYiksdigpKTpDPT09bCYmKHkuYWx0PXRoaXMuZGVjb2RlLnJhdyh0aGlzLnVuZXNjYXBlKG8pLGIpfHxudWxsKSxlKFQpKHkpKSl9fX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDI0KSxvPW4oMjApLGE9bigzMzMpO2UuZXhwb3J0cz1zLHMubG9jYXRvcj1hO3ZhciBpPVwiKlwiLGw9XCJfXCI7ZnVuY3Rpb24gcyhlLHQsbil7dmFyIGEscyx1LGMsZCxwLGYsbT0wLGc9dC5jaGFyQXQobSk7aWYoIShnIT09aSYmZyE9PWx8fHQuY2hhckF0KCsrbSkhPT1nfHwocz10aGlzLm9wdGlvbnMucGVkYW50aWMsZD0odT1nKSt1LHA9dC5sZW5ndGgsbSsrLGM9XCJcIixnPVwiXCIscyYmbyh0LmNoYXJBdChtKSkpKSlmb3IoO208cDspe2lmKGY9ZywhKChnPXQuY2hhckF0KG0pKSE9PXV8fHQuY2hhckF0KG0rMSkhPT11fHxzJiZvKGYpKSYmKGc9dC5jaGFyQXQobSsyKSkhPT11KXtpZighcihjKSlyZXR1cm47cmV0dXJuISFufHwoKGE9ZS5ub3coKSkuY29sdW1uKz0yLGEub2Zmc2V0Kz0yLGUoZCtjK2QpKHt0eXBlOlwic3Ryb25nXCIsY2hpbGRyZW46dGhpcy50b2tlbml6ZUlubGluZShjLGEpfSkpfXN8fFwiXFxcXFwiIT09Z3x8KGMrPWcsZz10LmNoYXJBdCgrK20pKSxjKz1nLG0rK319fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pbmRleE9mKFwiKipcIix0KSxyPWUuaW5kZXhPZihcIl9fXCIsdCk7aWYoLTE9PT1yKXJldHVybiBuO2lmKC0xPT09bilyZXR1cm4gcjtyZXR1cm4gcjxuP3I6bn19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDI0KSxvPW4oMzM1KSxhPW4oMjApLGk9bigzMzYpO2UuZXhwb3J0cz11LHUubG9jYXRvcj1pO3ZhciBsPVwiKlwiLHM9XCJfXCI7ZnVuY3Rpb24gdShlLHQsbil7dmFyIGksdSxjLGQscCxmLG0sZz0wLGg9dC5jaGFyQXQoZyk7aWYoIShoIT09bCYmaCE9PXN8fCh1PXRoaXMub3B0aW9ucy5wZWRhbnRpYyxwPWgsYz1oLGY9dC5sZW5ndGgsZysrLGQ9XCJcIixoPVwiXCIsdSYmYSh0LmNoYXJBdChnKSkpKSlmb3IoO2c8Zjspe2lmKG09aCwhKChoPXQuY2hhckF0KGcpKSE9PWN8fHUmJmEobSkpKXtpZigoaD10LmNoYXJBdCgrK2cpKSE9PWMpe2lmKCFyKGQpfHxtPT09YylyZXR1cm47aWYoIXUmJmM9PT1zJiZvKGgpKXtkKz1jO2NvbnRpbnVlfXJldHVybiEhbnx8KChpPWUubm93KCkpLmNvbHVtbisrLGkub2Zmc2V0KyssZShwK2QrYykoe3R5cGU6XCJlbXBoYXNpc1wiLGNoaWxkcmVuOnRoaXMudG9rZW5pemVJbmxpbmUoZCxpKX0pKX1kKz1jfXV8fFwiXFxcXFwiIT09aHx8KGQrPWgsaD10LmNoYXJBdCgrK2cpKSxkKz1oLGcrK319fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBvLnRlc3QoXCJudW1iZXJcIj09dHlwZW9mIGU/cihlKTplLmNoYXJBdCgwKSl9O3ZhciByPVN0cmluZy5mcm9tQ2hhckNvZGUsbz0vXFx3L30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWUuaW5kZXhPZihcIipcIix0KSxyPWUuaW5kZXhPZihcIl9cIix0KTtpZigtMT09PXIpcmV0dXJuIG47aWYoLTE9PT1uKXJldHVybiByO3JldHVybiByPG4/cjpufX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjApLG89bigzMzgpO2UuZXhwb3J0cz1sLGwubG9jYXRvcj1vO3ZhciBhPVwiflwiLGk9XCJ+flwiO2Z1bmN0aW9uIGwoZSx0LG4pe3ZhciBvLGwscyx1PVwiXCIsYz1cIlwiLGQ9XCJcIixwPVwiXCI7aWYodGhpcy5vcHRpb25zLmdmbSYmdC5jaGFyQXQoMCk9PT1hJiZ0LmNoYXJBdCgxKT09PWEmJiFyKHQuY2hhckF0KDIpKSlmb3Iobz0xLGw9dC5sZW5ndGgsKHM9ZS5ub3coKSkuY29sdW1uKz0yLHMub2Zmc2V0Kz0yOysrbzxsOyl7aWYoISgodT10LmNoYXJBdChvKSkhPT1hfHxjIT09YXx8ZCYmcihkKSkpcmV0dXJuISFufHxlKGkrcCtpKSh7dHlwZTpcImRlbGV0ZVwiLGNoaWxkcmVuOnRoaXMudG9rZW5pemVJbmxpbmUocCxzKX0pO3ArPWMsZD1jLGM9dX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaW5kZXhPZihcIn5+XCIsdCl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyMCksbz1uKDM0MCk7ZS5leHBvcnRzPWksaS5sb2NhdG9yPW87dmFyIGE9XCJgXCI7ZnVuY3Rpb24gaShlLHQsbil7Zm9yKHZhciBvLGksbCxzLHUsYyxkLHAsZj10Lmxlbmd0aCxtPTAsZz1cIlwiLGg9XCJcIjttPGYmJnQuY2hhckF0KG0pPT09YTspZys9YSxtKys7aWYoZyl7Zm9yKHU9ZyxzPW0sZz1cIlwiLHA9dC5jaGFyQXQobSksbD0wO208Zjspe2lmKGM9cCxwPXQuY2hhckF0KG0rMSksYz09PWE/KGwrKyxoKz1jKToobD0wLGcrPWMpLGwmJnAhPT1hKXtpZihsPT09cyl7dSs9ZytoLGQ9ITA7YnJlYWt9Zys9aCxoPVwiXCJ9bSsrfWlmKCFkKXtpZihzJTIhPTApcmV0dXJuO2c9XCJcIn1pZihuKXJldHVybiEwO2ZvcihvPVwiXCIsaT1cIlwiLGY9Zy5sZW5ndGgsbT0tMTsrK208ZjspYz1nLmNoYXJBdChtKSxyKGMpP2krPWM6KGkmJihvJiYobys9aSksaT1cIlwiKSxvKz1jKTtyZXR1cm4gZSh1KSh7dHlwZTpcImlubGluZUNvZGVcIix2YWx1ZTpvfSl9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBlLmluZGV4T2YoXCJgXCIsdCl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigzNDIpO2UuZXhwb3J0cz1hLGEubG9jYXRvcj1yO3ZhciBvPTI7ZnVuY3Rpb24gYShlLHQsbil7Zm9yKHZhciByLGE9dC5sZW5ndGgsaT0tMSxsPVwiXCI7KytpPGE7KXtpZihcIlxcblwiPT09KHI9dC5jaGFyQXQoaSkpKXtpZihpPG8pcmV0dXJuO3JldHVybiEhbnx8ZShsKz1yKSh7dHlwZTpcImJyZWFrXCJ9KX1pZihcIiBcIiE9PXIpcmV0dXJuO2wrPXJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWUuaW5kZXhPZihcIlxcblwiLHQpO2Zvcig7bj50JiZcIiBcIj09PWUuY2hhckF0KG4tMSk7KW4tLTtyZXR1cm4gbn19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8sYSxpLGwscyx1LGMsZCxwO2lmKG4pcmV0dXJuITA7cj10aGlzLmlubGluZU1ldGhvZHMsaT1yLmxlbmd0aCxvPXRoaXMuaW5saW5lVG9rZW5pemVycyxhPS0xLGQ9dC5sZW5ndGg7Zm9yKDsrK2E8aTspXCJ0ZXh0XCIhPT0oYz1yW2FdKSYmb1tjXSYmKCh1PW9bY10ubG9jYXRvcil8fGUuZmlsZS5mYWlsKFwiTWlzc2luZyBsb2NhdG9yOiBgXCIrYytcImBcIiksLTEhPT0ocz11LmNhbGwodGhpcyx0LDEpKSYmczxkJiYoZD1zKSk7bD10LnNsaWNlKDAsZCkscD1lLm5vdygpLHRoaXMuZGVjb2RlKGwscCxmdW5jdGlvbih0LG4scil7ZShyfHx0KSh7dHlwZTpcInRleHRcIix2YWx1ZTp0fSl9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDM0NSk7ZnVuY3Rpb24gbygpe31mdW5jdGlvbiBhKCl7fWEucmVzZXRXYXJuaW5nQ2FjaGU9byxlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLG8sYSxpKXtpZihpIT09cil7dmFyIGw9bmV3IEVycm9yKFwiQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlc1wiKTt0aHJvdyBsLm5hbWU9XCJJbnZhcmlhbnQgVmlvbGF0aW9uXCIsbH19ZnVuY3Rpb24gdCgpe3JldHVybiBlfWUuaXNSZXF1aXJlZD1lO3ZhciBuPXthcnJheTplLGJvb2w6ZSxmdW5jOmUsbnVtYmVyOmUsb2JqZWN0OmUsc3RyaW5nOmUsc3ltYm9sOmUsYW55OmUsYXJyYXlPZjp0LGVsZW1lbnQ6ZSxlbGVtZW50VHlwZTplLGluc3RhbmNlT2Y6dCxub2RlOmUsb2JqZWN0T2Y6dCxvbmVPZjp0LG9uZU9mVHlwZTp0LHNoYXBlOnQsZXhhY3Q6dCxjaGVja1Byb3BUeXBlczphLHJlc2V0V2FybmluZ0NhY2hlOm99O3JldHVybiBuLlByb3BUeXBlcz1uLG59fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPVwiU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRURcIn0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMzQ3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSxcImxpc3RcIixmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz0wO2ZvcihuPTAscj10Lmxlbmd0aDtuPHI7bisrKVwibGlzdFwiPT09dFtuXS50eXBlJiYobys9MSk7Zm9yKG49MCxyPWUuY2hpbGRyZW4ubGVuZ3RoO248cjtuKyspe3ZhciBhPWUuY2hpbGRyZW5bbl07YS5pbmRleD1uLGEub3JkZXJlZD1lLm9yZGVyZWR9ZS5kZXB0aD1vfSksZX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1bXTtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYobj10LHQ9bnVsbCk7ZnVuY3Rpb24gbyhlKXt2YXIgYTtyZXR1cm4gdCYmZS50eXBlIT09dHx8KGE9bihlLHIuY29uY2F0KCkpKSxlLmNoaWxkcmVuJiYhMSE9PWE/ZnVuY3Rpb24oZSx0KXt2YXIgbixhPWUubGVuZ3RoLGk9LTE7ci5wdXNoKHQpO2Zvcig7KytpPGE7KWlmKChuPWVbaV0pJiYhMT09PW8obikpcmV0dXJuITE7cmV0dXJuIHIucG9wKCksITB9KGUuY2hpbGRyZW4sZSk6YX1vKGUpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oNDQpLG89XCJ2aXJ0dWFsSHRtbFwiLGE9L148KGFyZWF8YmFzZXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGtleWdlbnxsaW5rfG1ldGF8cGFyYW18c291cmNlfHRyYWNrfHdicilcXHMqXFwvPz4kL2ksaT0vXjwoXFwvPykoW2Etel0rKVxccyo+JC87ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuIHIoZSxcImh0bWxcIixmdW5jdGlvbihlLHIsbCl7biE9PWwmJih0PVtdLG49bCk7dmFyIHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YWx1ZS5tYXRjaChhKTtyZXR1cm4hIXQmJnRbMV19KGUpO2lmKHMpcmV0dXJuIGwuY2hpbGRyZW4uc3BsaWNlKHIsMSx7dHlwZTpvLHRhZzpzLHBvc2l0aW9uOmUucG9zaXRpb259KSwhMDt2YXIgdT1mdW5jdGlvbihlLHQpe3ZhciBuPWUudmFsdWUubWF0Y2goaSk7cmV0dXJuISFuJiZ7dGFnOm5bMl0sb3BlbmluZzohblsxXSxub2RlOmV9fShlKTtpZighdSlyZXR1cm4hMDt2YXIgYz1mdW5jdGlvbihlLHQpe3ZhciBuPWUubGVuZ3RoO2Zvcig7bi0tOylpZihlW25dLnRhZz09PXQpcmV0dXJuIGUuc3BsaWNlKG4sMSlbMF07cmV0dXJuITF9KHQsdS50YWcpO3JldHVybiBjP2wuY2hpbGRyZW4uc3BsaWNlKHIsMCxmdW5jdGlvbihlLHQsbil7dmFyIHI9bi5jaGlsZHJlbi5pbmRleE9mKGUubm9kZSksYT1uLmNoaWxkcmVuLmluZGV4T2YodC5ub2RlKSxpPW4uY2hpbGRyZW4uc3BsaWNlKHIsYS1yKzEpLnNsaWNlKDEsLTEpO3JldHVybnt0eXBlOm8sY2hpbGRyZW46aSx0YWc6ZS50YWcscG9zaXRpb246e3N0YXJ0OmUubm9kZS5wb3NpdGlvbi5zdGFydCxlbmQ6dC5ub2RlLnBvc2l0aW9uLmVuZCxpbmRlbnQ6W119fX0odSxjLGwpKTp1Lm9wZW5pbmd8fHQucHVzaCh1KSwhMH0sITApLGV9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big0NCk7ZnVuY3Rpb24gbyhlLHQsbixyKXtpZihcInJlbW92ZVwiPT09ciluLmNoaWxkcmVuLnNwbGljZSh0LDEpO2Vsc2UgaWYoXCJ1bndyYXBcIj09PXIpe3ZhciBvPVt0LDFdO2UuY2hpbGRyZW4mJihvPW8uY29uY2F0KGUuY2hpbGRyZW4pKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KG4uY2hpbGRyZW4sbyl9fXQub2ZUeXBlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHIodCxlLG4sITApfSksdH07ZnVuY3Rpb24gbihlLG4scil7ciYmbyhlLG4scix0KX19LHQuaWZOb3RNYXRjaD1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gcihlLG4sITApLGV9O2Z1bmN0aW9uIG4obixyLGEpe2EmJiFlKG4scixhKSYmbyhuLHIsYSx0KX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigwKSxvPW4oMjMpO2Z1bmN0aW9uIGEoZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30sbD1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MCxzPXQucmVuZGVyZXJzW2UudHlwZV0sdT1lLnBvc2l0aW9uLnN0YXJ0LGM9W2UudHlwZSx1LmxpbmUsdS5jb2x1bW5dLmpvaW4oXCItXCIpO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHMmJlwic3RyaW5nXCIhPXR5cGVvZiBzJiYhZnVuY3Rpb24oZSl7cmV0dXJuIHIuRnJhZ21lbnQmJnIuRnJhZ21lbnQ9PT1lfShzKSl0aHJvdyBuZXcgRXJyb3IoXCJSZW5kZXJlciBmb3IgdHlwZSBgXCIuY29uY2F0KGUudHlwZSxcImAgbm90IGRlZmluZWQgb3IgaXMgbm90IHJlbmRlcmFibGVcIikpO3ZhciBkPWZ1bmN0aW9uKGUsdCxuLGwscyx1KXt2YXIgYz17a2V5OnR9LGQ9XCJzdHJpbmdcIj09dHlwZW9mIGw7bi5zb3VyY2VQb3MmJmUucG9zaXRpb24mJihjW1wiZGF0YS1zb3VyY2Vwb3NcIl09WyhwPWUucG9zaXRpb24pLnN0YXJ0LmxpbmUsXCI6XCIscC5zdGFydC5jb2x1bW4sXCItXCIscC5lbmQubGluZSxcIjpcIixwLmVuZC5jb2x1bW5dLm1hcChTdHJpbmcpLmpvaW4oXCJcIikpO3ZhciBwO24ucmF3U291cmNlUG9zJiYhZCYmKGMuc291cmNlUG9zaXRpb249ZS5wb3NpdGlvbik7bi5pbmNsdWRlTm9kZUluZGV4JiZzLm5vZGUmJnMubm9kZS5jaGlsZHJlbiYmIWQmJihjLmluZGV4PXMubm9kZS5jaGlsZHJlbi5pbmRleE9mKGUpLGMucGFyZW50Q2hpbGRDb3VudD1zLm5vZGUuY2hpbGRyZW4ubGVuZ3RoKTt2YXIgZj1udWxsIT09ZS5pZGVudGlmaWVyJiZ2b2lkIDAhPT1lLmlkZW50aWZpZXI/bi5kZWZpbml0aW9uc1tlLmlkZW50aWZpZXJdfHx7fTpudWxsO3N3aXRjaChlLnR5cGUpe2Nhc2VcInJvb3RcIjppKGMse2NsYXNzTmFtZTpuLmNsYXNzTmFtZX0pO2JyZWFrO2Nhc2VcInRleHRcIjpjLm5vZGVLZXk9dCxjLmNoaWxkcmVuPWUudmFsdWU7YnJlYWs7Y2FzZVwiaGVhZGluZ1wiOmMubGV2ZWw9ZS5kZXB0aDticmVhaztjYXNlXCJsaXN0XCI6Yy5zdGFydD1lLnN0YXJ0LGMub3JkZXJlZD1lLm9yZGVyZWQsYy50aWdodD0hZS5sb29zZSxjLmRlcHRoPWUuZGVwdGg7YnJlYWs7Y2FzZVwibGlzdEl0ZW1cIjpjLmNoZWNrZWQ9ZS5jaGVja2VkLGMudGlnaHQ9IWUubG9vc2UsYy5vcmRlcmVkPWUub3JkZXJlZCxjLmluZGV4PWUuaW5kZXgsYy5jaGlsZHJlbj1mdW5jdGlvbihlLHQpe2lmKGUubG9vc2UpcmV0dXJuIGUuY2hpbGRyZW47aWYodC5ub2RlJiZlLmluZGV4PjAmJnQubm9kZS5jaGlsZHJlbltlLmluZGV4LTFdLmxvb3NlKXJldHVybiBlLmNoaWxkcmVuO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGlsZHJlbi5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb25jYXQoXCJwYXJhZ3JhcGhcIj09PXQudHlwZT90LmNoaWxkcmVufHxbXTpbdF0pfSxbXSl9KGUpfShlLHMpLm1hcChmdW5jdGlvbih0LHIpe3JldHVybiBhKHQsbix7bm9kZTplLHByb3BzOmN9LHIpfSk7YnJlYWs7Y2FzZVwiZGVmaW5pdGlvblwiOmkoYyx7aWRlbnRpZmllcjplLmlkZW50aWZpZXIsdGl0bGU6ZS50aXRsZSx1cmw6ZS51cmx9KTticmVhaztjYXNlXCJjb2RlXCI6aShjLHtsYW5ndWFnZTplLmxhbmcmJmUubGFuZy5zcGxpdCgvXFxzLywxKVswXX0pO2JyZWFrO2Nhc2VcImlubGluZUNvZGVcIjpjLmNoaWxkcmVuPWUudmFsdWUsYy5pbmxpbmU9ITA7YnJlYWs7Y2FzZVwibGlua1wiOmkoYyx7dGl0bGU6ZS50aXRsZXx8dm9pZCAwLHRhcmdldDpcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLmxpbmtUYXJnZXQ/bi5saW5rVGFyZ2V0KGUudXJsLGUuY2hpbGRyZW4sZS50aXRsZSk6bi5saW5rVGFyZ2V0LGhyZWY6bi50cmFuc2Zvcm1MaW5rVXJpP24udHJhbnNmb3JtTGlua1VyaShlLnVybCxlLmNoaWxkcmVuLGUudGl0bGUpOmUudXJsfSk7YnJlYWs7Y2FzZVwiaW1hZ2VcIjppKGMse2FsdDplLmFsdHx8dm9pZCAwLHRpdGxlOmUudGl0bGV8fHZvaWQgMCxzcmM6bi50cmFuc2Zvcm1JbWFnZVVyaT9uLnRyYW5zZm9ybUltYWdlVXJpKGUudXJsLGUuY2hpbGRyZW4sZS50aXRsZSxlLmFsdCk6ZS51cmx9KTticmVhaztjYXNlXCJsaW5rUmVmZXJlbmNlXCI6aShjLG8oZix7aHJlZjpuLnRyYW5zZm9ybUxpbmtVcmk/bi50cmFuc2Zvcm1MaW5rVXJpKGYuaHJlZik6Zi5ocmVmfSkpO2JyZWFrO2Nhc2VcImltYWdlUmVmZXJlbmNlXCI6aShjLHtzcmM6bi50cmFuc2Zvcm1JbWFnZVVyaSYmZi5ocmVmP24udHJhbnNmb3JtSW1hZ2VVcmkoZi5ocmVmLGUuY2hpbGRyZW4sZi50aXRsZSxlLmFsdCk6Zi5ocmVmLHRpdGxlOmYudGl0bGV8fHZvaWQgMCxhbHQ6ZS5hbHR8fHZvaWQgMH0pO2JyZWFrO2Nhc2VcInRhYmxlXCI6Y2FzZVwidGFibGVIZWFkXCI6Y2FzZVwidGFibGVCb2R5XCI6Yy5jb2x1bW5BbGlnbm1lbnQ9ZS5hbGlnbjticmVhaztjYXNlXCJ0YWJsZVJvd1wiOmMuaXNIZWFkZXI9XCJ0YWJsZUhlYWRcIj09PXMubm9kZS50eXBlLGMuY29sdW1uQWxpZ25tZW50PXMucHJvcHMuY29sdW1uQWxpZ25tZW50O2JyZWFrO2Nhc2VcInRhYmxlQ2VsbFwiOmkoYyx7aXNIZWFkZXI6cy5wcm9wcy5pc0hlYWRlcixhbGlnbjpzLnByb3BzLmNvbHVtbkFsaWdubWVudFt1XX0pO2JyZWFrO2Nhc2VcInZpcnR1YWxIdG1sXCI6Yy50YWc9ZS50YWc7YnJlYWs7Y2FzZVwiaHRtbFwiOmMuaXNCbG9jaz1lLnBvc2l0aW9uLnN0YXJ0LmxpbmUhPT1lLnBvc2l0aW9uLmVuZC5saW5lLGMuZXNjYXBlSHRtbD1uLmVzY2FwZUh0bWwsYy5za2lwSHRtbD1uLnNraXBIdG1sO2JyZWFrO2Nhc2VcInBhcnNlZEh0bWxcIjpjLmVzY2FwZUh0bWw9bi5lc2NhcGVIdG1sLGMuc2tpcEh0bWw9bi5za2lwSHRtbCxjLmVsZW1lbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmVsZW1lbnQ7aWYoQXJyYXkuaXNBcnJheShuKSl7dmFyIG89ci5GcmFnbWVudHx8XCJkaXZcIjtyZXR1cm4gci5jcmVhdGVFbGVtZW50KG8sbnVsbCxuKX12YXIgYT0obi5wcm9wcy5jaGlsZHJlbnx8W10pLmNvbmNhdCh0KTtyZXR1cm4gci5jbG9uZUVsZW1lbnQobixudWxsLGEpfShlLChlLmNoaWxkcmVufHxbXSkubWFwKGZ1bmN0aW9uKHQscil7cmV0dXJuIGEodCxuLHtub2RlOmUscHJvcHM6Y30scil9KSk7YnJlYWs7ZGVmYXVsdDppKGMsbyhlLHt0eXBlOnZvaWQgMCxwb3NpdGlvbjp2b2lkIDAsY2hpbGRyZW46dm9pZCAwfSkpfSFkJiZlLnZhbHVlJiYoYy52YWx1ZT1lLnZhbHVlKTtyZXR1cm4gY30oZSxjLHQscyxuLGwpO3JldHVybiByLmNyZWF0ZUVsZW1lbnQocyxkLGQuY2hpbGRyZW58fGUuY2hpbGRyZW4mJmUuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKG4scil7cmV0dXJuIGEobix0LHtub2RlOmUscHJvcHM6ZH0scil9KXx8dm9pZCAwKX1mdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciBuIGluIHQpdm9pZCAwIT09dFtuXSYmKGVbbl09dFtuXSl9ZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDQ0KTtmdW5jdGlvbiBvKGUpe3ZhciB0PWUuY2hpbGRyZW47ZS5jaGlsZHJlbj1be3R5cGU6XCJ0YWJsZUhlYWRcIixhbGlnbjplLmFsaWduLGNoaWxkcmVuOlt0WzBdXSxwb3NpdGlvbjp0WzBdLnBvc2l0aW9ufV0sdC5sZW5ndGg+MSYmZS5jaGlsZHJlbi5wdXNoKHt0eXBlOlwidGFibGVCb2R5XCIsYWxpZ246ZS5hbGlnbixjaGlsZHJlbjp0LnNsaWNlKDEpLHBvc2l0aW9uOntzdGFydDp0WzFdLnBvc2l0aW9uLnN0YXJ0LGVuZDp0W3QubGVuZ3RoLTFdLnBvc2l0aW9uLmVuZH19KX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSxcInRhYmxlXCIsbyksZX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuKHQuY2hpbGRyZW58fFtdKS5yZWR1Y2UoZnVuY3Rpb24odCxuKXtyZXR1cm5cImRlZmluaXRpb25cIj09PW4udHlwZSYmKHRbbi5pZGVudGlmaWVyXT17aHJlZjpuLnVybCx0aXRsZTpuLnRpdGxlfSksZShuLHQpfSxuKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1bXCJodHRwXCIsXCJodHRwc1wiLFwibWFpbHRvXCIsXCJ0ZWxcIl07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PShlfHxcIlwiKS50cmltKCksbj10LmNoYXJBdCgwKTtpZihcIiNcIj09PW58fFwiL1wiPT09bilyZXR1cm4gdDt2YXIgbz10LmluZGV4T2YoXCI6XCIpO2lmKC0xPT09bylyZXR1cm4gdDtmb3IodmFyIGE9ci5sZW5ndGgsaT0tMTsrK2k8YTspe3ZhciBsPXJbaV07aWYobz09PWwubGVuZ3RoJiZ0LnNsaWNlKDAsbC5sZW5ndGgpLnRvTG93ZXJDYXNlKCk9PT1sKXJldHVybiB0fXJldHVybi0xIT09KGk9dC5pbmRleE9mKFwiP1wiKSkmJm8+aT90Oi0xIT09KGk9dC5pbmRleE9mKFwiI1wiKSkmJm8+aT90OlwiamF2YXNjcmlwdDp2b2lkKDApXCJ9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyMyksbz1uKDApLGE9cGFyc2VJbnQoKG8udmVyc2lvbnx8XCIxNlwiKS5zbGljZSgwLDIpLDEwKT49MTYsaT1vLmNyZWF0ZUVsZW1lbnQ7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBpKGUscyh0KSx0LmNoaWxkcmVuKX1mdW5jdGlvbiBzKGUpe3JldHVybiBlW1wiZGF0YS1zb3VyY2Vwb3NcIl0/e1wiZGF0YS1zb3VyY2Vwb3NcIjplW1wiZGF0YS1zb3VyY2Vwb3NcIl19Ont9fWUuZXhwb3J0cz17YnJlYWs6XCJiclwiLHBhcmFncmFwaDpcInBcIixlbXBoYXNpczpcImVtXCIsc3Ryb25nOlwic3Ryb25nXCIsdGhlbWF0aWNCcmVhazpcImhyXCIsYmxvY2txdW90ZTpcImJsb2NrcXVvdGVcIixkZWxldGU6XCJkZWxcIixsaW5rOlwiYVwiLGltYWdlOlwiaW1nXCIsbGlua1JlZmVyZW5jZTpcImFcIixpbWFnZVJlZmVyZW5jZTpcImltZ1wiLHRhYmxlOmwuYmluZChudWxsLFwidGFibGVcIiksdGFibGVIZWFkOmwuYmluZChudWxsLFwidGhlYWRcIiksdGFibGVCb2R5OmwuYmluZChudWxsLFwidGJvZHlcIiksdGFibGVSb3c6bC5iaW5kKG51bGwsXCJ0clwiKSx0YWJsZUNlbGw6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbGlnbj97dGV4dEFsaWduOmUuYWxpZ259OnZvaWQgMCxuPXMoZSk7cmV0dXJuIGkoZS5pc0hlYWRlcj9cInRoXCI6XCJ0ZFwiLHQ/cih7c3R5bGU6dH0sbik6bixlLmNoaWxkcmVuKX0scm9vdDpmdW5jdGlvbihlKXt2YXIgdD0hZS5jbGFzc05hbWUsbj10JiZvLkZyYWdtZW50fHxcImRpdlwiO3JldHVybiBpKG4sdD9udWxsOmUsZS5jaGlsZHJlbil9LHRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGE/ZS5jaGlsZHJlbjppKFwic3BhblwiLG51bGwsZS5jaGlsZHJlbil9LGxpc3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9cyhlKTtudWxsIT09ZS5zdGFydCYmMSE9PWUuc3RhcnQmJih0LnN0YXJ0PWUuc3RhcnQudG9TdHJpbmcoKSk7cmV0dXJuIGkoZS5vcmRlcmVkP1wib2xcIjpcInVsXCIsdCxlLmNoaWxkcmVuKX0sbGlzdEl0ZW06ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZihudWxsIT09ZS5jaGVja2VkKXt2YXIgbj1lLmNoZWNrZWQ7dD1pKFwiaW5wdXRcIix7dHlwZTpcImNoZWNrYm94XCIsY2hlY2tlZDpuLHJlYWRPbmx5OiEwfSl9cmV0dXJuIGkoXCJsaVwiLHMoZSksdCxlLmNoaWxkcmVuKX0sZGVmaW5pdGlvbjpmdW5jdGlvbigpe3JldHVybiBudWxsfSxoZWFkaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBpKFwiaFwiLmNvbmNhdChlLmxldmVsKSxzKGUpLGUuY2hpbGRyZW4pfSxpbmxpbmVDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBpKFwiY29kZVwiLHMoZSksZS5jaGlsZHJlbil9LGNvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sYW5ndWFnZSYmXCJsYW5ndWFnZS1cIi5jb25jYXQoZS5sYW5ndWFnZSksbj1pKFwiY29kZVwiLHQ/e2NsYXNzTmFtZTp0fTpudWxsLGUudmFsdWUpO3JldHVybiBpKFwicHJlXCIscyhlKSxuKX0saHRtbDpmdW5jdGlvbihlKXtpZihlLnNraXBIdG1sKXJldHVybiBudWxsO3ZhciB0PWUuaXNCbG9jaz9cImRpdlwiOlwic3BhblwiO2lmKGUuZXNjYXBlSHRtbCl7dmFyIG49by5GcmFnbWVudHx8dDtyZXR1cm4gaShuLG51bGwsZS52YWx1ZSl9dmFyIHI9e2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6ZS52YWx1ZX19O3JldHVybiBpKHQscil9LHZpcnR1YWxIdG1sOmZ1bmN0aW9uKGUpe3JldHVybiBpKGUudGFnLHMoZSksZS5jaGlsZHJlbil9LHBhcnNlZEh0bWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbXCJkYXRhLXNvdXJjZXBvc1wiXT9vLmNsb25lRWxlbWVudChlLmVsZW1lbnQse1wiZGF0YS1zb3VyY2Vwb3NcIjplW1wiZGF0YS1zb3VyY2Vwb3NcIl19KTplLmVsZW1lbnR9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3QuSHRtbFBhcnNlcj1cInVuZGVmaW5lZFwiPT10eXBlb2YgU3ltYm9sP1wiX19STURfSFRNTF9QQVJTRVJfX1wiOlN5bWJvbChcIl9fUk1EX0hUTUxfUEFSU0VSX19cIil9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFtZXx8KFwic3RyaW5nXCI9PXR5cGVvZiBlJiZlLmxlbmd0aD4wP2U6XCJVbmtub3duXCIpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLG49bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07cmV0dXJuIG59fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8XCJbb2JqZWN0IEFyZ3VtZW50c11cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfSgpfWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe2EoZSx0LG5bdF0pfSl9cmV0dXJuIGV9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5hbGxvd092ZXJ3cml0ZT1mdW5jdGlvbihlLHQpe3JldHVybiBvKHt9LGUsdCl9LHQuZm9yY2VDdXJyeT1mdW5jdGlvbihlLHQpe3JldHVybiBvKHt9LHQsZSl9LHQubWVyZ2VDb21wbGV4UHJvcHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPXt9O3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiBpKFtdLmNvbmNhdChyKE9iamVjdC5rZXlzKGUpKSxyKE9iamVjdC5rZXlzKHQpKSkpfShlLHQpLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIGE9ZVtyXSxpPXRbcl0sZD1mdW5jdGlvbihlKXtyZXR1cm5cImNsYXNzTmFtZVwiPT09ZT91OmUubWF0Y2goL15vbltBLVpdLyk/YzpcInN0eWxlXCI9PT1lP2w6c30ocik7b1tyXT1kKGEsaSxuKX0pLG99O3ZhciBpPWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoZSkpfTtmdW5jdGlvbiBsKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybihhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCk/byh7fSx0LGUpOm8oe30sZSx0KX1mdW5jdGlvbiBzKGUsdCxuKXtyZXR1cm4gbj9lfHx0OnR8fGV9ZnVuY3Rpb24gdSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpcIlwiLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOlwiXCI7cmV0dXJuXCJcIi5jb25jYXQoZSxcIiBcIikuY29uY2F0KHQpLnRyaW0oKX1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGUmJnQ/ZnVuY3Rpb24oKXt2YXIgbj12b2lkIDAscj12b2lkIDA7dHJ5e3QuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9Y2F0Y2goZSl7cj1lfXRyeXtlLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfWNhdGNoKGUpe249ZX0hZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTt2YXIgcj10LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yfSk7aWYoMCE9PXIubGVuZ3RoKXtpZigxPT09ci5sZW5ndGgpdGhyb3cgclswXTt0aHJvdyBuZXcgRXJyb3Ioci5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVzc2FnZX0pLmpvaW4oXCIgXCIpKX19KG4scil9OmV8fHR9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb319LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtcbi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuNy4wXG4gKiByZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLG89cj9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxhPXI/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixpPXI/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGw9cj9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgscz1yP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCx1PXI/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LGM9cj9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCxkPXI/U3ltYm9sLmZvcihcInJlYWN0LmFzeW5jX21vZGVcIik6NjAxMTEscD1yP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsZj1yP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixtPXI/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLGc9cj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSxoPXI/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6NjAxMTY7ZnVuY3Rpb24gYihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUpe3ZhciB0PWUuJCR0eXBlb2Y7c3dpdGNoKHQpe2Nhc2Ugbzpzd2l0Y2goZT1lLnR5cGUpe2Nhc2UgZDpjYXNlIHA6Y2FzZSBpOmNhc2UgczpjYXNlIGw6Y2FzZSBtOnJldHVybiBlO2RlZmF1bHQ6c3dpdGNoKGU9ZSYmZS4kJHR5cGVvZil7Y2FzZSBjOmNhc2UgZjpjYXNlIHU6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm4gdH19Y2FzZSBoOmNhc2UgZzpjYXNlIGE6cmV0dXJuIHR9fX1mdW5jdGlvbiB5KGUpe3JldHVybiBiKGUpPT09cH10LnR5cGVPZj1iLHQuQXN5bmNNb2RlPWQsdC5Db25jdXJyZW50TW9kZT1wLHQuQ29udGV4dENvbnN1bWVyPWMsdC5Db250ZXh0UHJvdmlkZXI9dSx0LkVsZW1lbnQ9byx0LkZvcndhcmRSZWY9Zix0LkZyYWdtZW50PWksdC5MYXp5PWgsdC5NZW1vPWcsdC5Qb3J0YWw9YSx0LlByb2ZpbGVyPXMsdC5TdHJpY3RNb2RlPWwsdC5TdXNwZW5zZT1tLHQuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlfHxlPT09aXx8ZT09PXB8fGU9PT1zfHxlPT09bHx8ZT09PW18fFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmKGUuJCR0eXBlb2Y9PT1ofHxlLiQkdHlwZW9mPT09Z3x8ZS4kJHR5cGVvZj09PXV8fGUuJCR0eXBlb2Y9PT1jfHxlLiQkdHlwZW9mPT09Zil9LHQuaXNBc3luY01vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHkoZSl8fGIoZSk9PT1kfSx0LmlzQ29uY3VycmVudE1vZGU9eSx0LmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGUpe3JldHVybiBiKGUpPT09Y30sdC5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihlKXtyZXR1cm4gYihlKT09PXV9LHQuaXNFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PW99LHQuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGUpe3JldHVybiBiKGUpPT09Zn0sdC5pc0ZyYWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBiKGUpPT09aX0sdC5pc0xhenk9ZnVuY3Rpb24oZSl7cmV0dXJuIGIoZSk9PT1ofSx0LmlzTWVtbz1mdW5jdGlvbihlKXtyZXR1cm4gYihlKT09PWd9LHQuaXNQb3J0YWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGIoZSk9PT1hfSx0LmlzUHJvZmlsZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGIoZSk9PT1zfSx0LmlzU3RyaWN0TW9kZT1mdW5jdGlvbihlKXtyZXR1cm4gYihlKT09PWx9LHQuaXNTdXNwZW5zZT1mdW5jdGlvbihlKXtyZXR1cm4gYihlKT09PW19fSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4odCxyKXtyZXR1cm4gZS5leHBvcnRzPW49T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LG4odCxyKX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9O3QuZGVmYXVsdD1mdW5jdGlvbiBlKHQpe3ZhciBuPW51bGw7Zm9yKHZhciBvIGluIHQpe3ZhciBhPXRbb10saT12b2lkIDA9PT1hP1widW5kZWZpbmVkXCI6cihhKTtpZihcImZ1bmN0aW9uXCI9PT1pKW58fChuPXt9KSxuW29dPWE7ZWxzZSBpZihcIm9iamVjdFwiPT09aSYmbnVsbCE9PWEmJiFBcnJheS5pc0FycmF5KGEpKXt2YXIgbD1lKGEpO2wmJihufHwobj17fSksbltvXT1sKX19cmV0dXJuIG59fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHIsbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9bigyOCksaT0ocj1hKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx0aGlzLnNoZWV0cz1bXSx0aGlzLnJlZnM9W10sdGhpcy5rZXlzPVtdfXJldHVybiBvKGUsW3trZXk6XCJnZXRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmtleXMuaW5kZXhPZihlKTtyZXR1cm4gdGhpcy5zaGVldHNbdF19fSx7a2V5OlwiYWRkXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnNoZWV0cyxyPXRoaXMucmVmcyxvPXRoaXMua2V5cyxhPW4uaW5kZXhPZih0KTtyZXR1cm4tMSE9PWE/YToobi5wdXNoKHQpLHIucHVzaCgwKSxvLnB1c2goZSksbi5sZW5ndGgtMSl9fSx7a2V5OlwibWFuYWdlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5rZXlzLmluZGV4T2YoZSksbj10aGlzLnNoZWV0c1t0XTtyZXR1cm4gMD09PXRoaXMucmVmc1t0XSYmbi5hdHRhY2goKSx0aGlzLnJlZnNbdF0rKyx0aGlzLmtleXNbdF18fHRoaXMua2V5cy5zcGxpY2UodCwwLGUpLG59fSx7a2V5OlwidW5tYW5hZ2VcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmtleXMuaW5kZXhPZihlKTstMSE9PXQ/dGhpcy5yZWZzW3RdPjAmJih0aGlzLnJlZnNbdF0tLSwwPT09dGhpcy5yZWZzW3RdJiZ0aGlzLnNoZWV0c1t0XS5kZXRhY2goKSk6KDAsaS5kZWZhdWx0KSghMSxcIlNoZWV0c01hbmFnZXI6IGNhbid0IGZpbmQgc2hlZXQgdG8gdW5tYW5hZ2VcIil9fSx7a2V5Olwic2l6ZVwiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmtleXMubGVuZ3RofX1dKSxlfSgpO3QuZGVmYXVsdD1sfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX07dC5kZWZhdWx0PWZ1bmN0aW9uIGUodCl7aWYobnVsbD09dClyZXR1cm4gdDt2YXIgbj12b2lkIDA9PT10P1widW5kZWZpbmVkXCI6cih0KTtpZihcInN0cmluZ1wiPT09bnx8XCJudW1iZXJcIj09PW58fFwiZnVuY3Rpb25cIj09PW4pcmV0dXJuIHQ7aWYobCh0KSlyZXR1cm4gdC5tYXAoZSk7aWYoKDAsaS5kZWZhdWx0KSh0KSlyZXR1cm4gdDt2YXIgbz17fTtmb3IodmFyIGEgaW4gdCl7dmFyIHM9dFthXTtcIm9iamVjdFwiIT09KHZvaWQgMD09PXM/XCJ1bmRlZmluZWRcIjpyKHMpKT9vW2FdPXM6b1thXT1lKHMpfXJldHVybiBvfTt2YXIgbyxhPW4oMTE2KSxpPShvPWEpJiZvLl9fZXNNb2R1bGU/bzp7ZGVmYXVsdDpvfTt2YXIgbD1BcnJheS5pc0FycmF5fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLGZ1bmN0aW9uKGUscil7dmFyIG8sYT1uKDE4NCk7bz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOlwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCE9PWU/ZTpyO3ZhciBpPU9iamVjdChhLmEpKG8pO3QuZGVmYXVsdD1pfS5jYWxsKHRoaXMsbigyNyksbigzNjUpKGUpKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIWUud2VicGFja1BvbHlmaWxsKXt2YXIgdD1PYmplY3QuY3JlYXRlKGUpO3QuY2hpbGRyZW58fCh0LmNoaWxkcmVuPVtdKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImxvYWRlZFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0Lmx9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJpZFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0Lml9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJleHBvcnRzXCIse2VudW1lcmFibGU6ITB9KSx0LndlYnBhY2tQb2x5ZmlsbD0xfXJldHVybiB0fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtlLkNTUzt0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fSkuY2FsbCh0aGlzLG4oMjcpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgbj1cIjJmMWFjYzZjM2E2MDZiMDgyZTVlZWY1ZTU0NDE0ZmZiXCI7bnVsbD09ZVtuXSYmKGVbbl09MCksdC5kZWZhdWx0PWVbbl0rK30pLmNhbGwodGhpcyxuKDI3KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxpPXkobig0OCkpLGw9eShuKDExOSkpLHM9eShuKDM2OSkpLHU9eShuKDM3MCkpLGM9eShuKDM3NikpLGQ9eShuKDM3NykpLHA9eShuKDY1KSksZj15KG4oMzApKSxtPXkobigxMTgpKSxnPXkobig0NykpLGg9eShuKDM3OCkpLGI9eShuKDM3OSkpO2Z1bmN0aW9uIHkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciB2PXUuZGVmYXVsdC5jb25jYXQoW2MuZGVmYXVsdCxkLmRlZmF1bHRdKSxTPTAsRT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx0aGlzLmlkPVMrKyx0aGlzLnZlcnNpb249XCI5LjguN1wiLHRoaXMucGx1Z2lucz1uZXcgcy5kZWZhdWx0LHRoaXMub3B0aW9ucz17Y3JlYXRlR2VuZXJhdGVDbGFzc05hbWU6bS5kZWZhdWx0LFJlbmRlcmVyOmkuZGVmYXVsdD9oLmRlZmF1bHQ6Yi5kZWZhdWx0LHBsdWdpbnM6W119LHRoaXMuZ2VuZXJhdGVDbGFzc05hbWU9KDAsbS5kZWZhdWx0KSgpLHRoaXMudXNlLmFwcGx5KHRoaXMsdiksdGhpcy5zZXR1cCh0KX1yZXR1cm4gYShlLFt7a2V5Olwic2V0dXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtyZXR1cm4gZS5jcmVhdGVHZW5lcmF0ZUNsYXNzTmFtZSYmKHRoaXMub3B0aW9ucy5jcmVhdGVHZW5lcmF0ZUNsYXNzTmFtZT1lLmNyZWF0ZUdlbmVyYXRlQ2xhc3NOYW1lLHRoaXMuZ2VuZXJhdGVDbGFzc05hbWU9ZS5jcmVhdGVHZW5lcmF0ZUNsYXNzTmFtZSgpKSxudWxsIT1lLmluc2VydGlvblBvaW50JiYodGhpcy5vcHRpb25zLmluc2VydGlvblBvaW50PWUuaW5zZXJ0aW9uUG9pbnQpLChlLnZpcnR1YWx8fGUuUmVuZGVyZXIpJiYodGhpcy5vcHRpb25zLlJlbmRlcmVyPWUuUmVuZGVyZXJ8fChlLnZpcnR1YWw/Yi5kZWZhdWx0OmguZGVmYXVsdCkpLGUucGx1Z2lucyYmdGhpcy51c2UuYXBwbHkodGhpcyxlLnBsdWdpbnMpLHRoaXN9fSx7a2V5OlwiY3JlYXRlU3R5bGVTaGVldFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPXQuaW5kZXg7XCJudW1iZXJcIiE9dHlwZW9mIG4mJihuPTA9PT1wLmRlZmF1bHQuaW5kZXg/MDpwLmRlZmF1bHQuaW5kZXgrMSk7dmFyIHI9bmV3IGwuZGVmYXVsdChlLG8oe30sdCx7anNzOnRoaXMsZ2VuZXJhdGVDbGFzc05hbWU6dC5nZW5lcmF0ZUNsYXNzTmFtZXx8dGhpcy5nZW5lcmF0ZUNsYXNzTmFtZSxpbnNlcnRpb25Qb2ludDp0aGlzLm9wdGlvbnMuaW5zZXJ0aW9uUG9pbnQsUmVuZGVyZXI6dGhpcy5vcHRpb25zLlJlbmRlcmVyLGluZGV4Om59KSk7cmV0dXJuIHRoaXMucGx1Z2lucy5vblByb2Nlc3NTaGVldChyKSxyfX0se2tleTpcInJlbW92ZVN0eWxlU2hlZXRcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXRhY2goKSxwLmRlZmF1bHQucmVtb3ZlKGUpLHRoaXN9fSx7a2V5OlwiY3JlYXRlUnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtcIm9iamVjdFwiPT09KHZvaWQgMD09PWU/XCJ1bmRlZmluZWRcIjpyKGUpKSYmKG49dCx0PWUsZT12b2lkIDApO3ZhciBvPW47by5qc3M9dGhpcyxvLlJlbmRlcmVyPXRoaXMub3B0aW9ucy5SZW5kZXJlcixvLmdlbmVyYXRlQ2xhc3NOYW1lfHwoby5nZW5lcmF0ZUNsYXNzTmFtZT10aGlzLmdlbmVyYXRlQ2xhc3NOYW1lKSxvLmNsYXNzZXN8fChvLmNsYXNzZXM9e30pO3ZhciBhPSgwLGcuZGVmYXVsdCkoZSx0LG8pO3JldHVybiFvLnNlbGVjdG9yJiZhIGluc3RhbmNlb2YgZi5kZWZhdWx0JiYoYS5zZWxlY3Rvcj1cIi5cIitvLmdlbmVyYXRlQ2xhc3NOYW1lKGEpKSx0aGlzLnBsdWdpbnMub25Qcm9jZXNzUnVsZShhKSxhfX0se2tleTpcInVzZVwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbih0KXstMT09PWUub3B0aW9ucy5wbHVnaW5zLmluZGV4T2YodCkmJihlLm9wdGlvbnMucGx1Z2lucy5wdXNoKHQpLGUucGx1Z2lucy51c2UodCkpfSksdGhpc319XSksZX0oKTt0LmRlZmF1bHQ9RX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByLG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPW4oMjgpLGk9KHI9YSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O3ZhciBsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy5ob29rcz17b25DcmVhdGVSdWxlOltdLG9uUHJvY2Vzc1J1bGU6W10sb25Qcm9jZXNzU3R5bGU6W10sb25Qcm9jZXNzU2hlZXQ6W10sb25DaGFuZ2VWYWx1ZTpbXSxvblVwZGF0ZTpbXX19cmV0dXJuIG8oZSxbe2tleTpcIm9uQ3JlYXRlUnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MDtyPHRoaXMuaG9va3Mub25DcmVhdGVSdWxlLmxlbmd0aDtyKyspe3ZhciBvPXRoaXMuaG9va3Mub25DcmVhdGVSdWxlW3JdKGUsdCxuKTtpZihvKXJldHVybiBvfXJldHVybiBudWxsfX0se2tleTpcIm9uUHJvY2Vzc1J1bGVcIix2YWx1ZTpmdW5jdGlvbihlKXtpZighZS5pc1Byb2Nlc3NlZCl7Zm9yKHZhciB0PWUub3B0aW9ucy5zaGVldCxuPTA7bjx0aGlzLmhvb2tzLm9uUHJvY2Vzc1J1bGUubGVuZ3RoO24rKyl0aGlzLmhvb2tzLm9uUHJvY2Vzc1J1bGVbbl0oZSx0KTtlLnN0eWxlJiZ0aGlzLm9uUHJvY2Vzc1N0eWxlKGUuc3R5bGUsZSx0KSxlLmlzUHJvY2Vzc2VkPSEwfX19LHtrZXk6XCJvblByb2Nlc3NTdHlsZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9ZSxvPTA7bzx0aGlzLmhvb2tzLm9uUHJvY2Vzc1N0eWxlLmxlbmd0aDtvKyspcj10aGlzLmhvb2tzLm9uUHJvY2Vzc1N0eWxlW29dKHIsdCxuKSx0LnN0eWxlPXJ9fSx7a2V5Olwib25Qcm9jZXNzU2hlZXRcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMuaG9va3Mub25Qcm9jZXNzU2hlZXQubGVuZ3RoO3QrKyl0aGlzLmhvb2tzLm9uUHJvY2Vzc1NoZWV0W3RdKGUpfX0se2tleTpcIm9uVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wO3I8dGhpcy5ob29rcy5vblVwZGF0ZS5sZW5ndGg7cisrKXRoaXMuaG9va3Mub25VcGRhdGVbcl0oZSx0LG4pfX0se2tleTpcIm9uQ2hhbmdlVmFsdWVcIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPWUsbz0wO288dGhpcy5ob29rcy5vbkNoYW5nZVZhbHVlLmxlbmd0aDtvKyspcj10aGlzLmhvb2tzLm9uQ2hhbmdlVmFsdWVbb10ocix0LG4pO3JldHVybiByfX0se2tleTpcInVzZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKXRoaXMuaG9va3NbdF0/dGhpcy5ob29rc1t0XS5wdXNoKGVbdF0pOigwLGkuZGVmYXVsdCkoITEsJ1tKU1NdIFVua25vd24gaG9vayBcIiVzXCIuJyx0KX19XSksZX0oKTt0LmRlZmF1bHQ9bH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPXMobigzNzEpKSxvPXMobigzNzIpKSxhPXMobigzNzMpKSxpPXMobigzNzQpKSxsPXMobigzNzUpKTtmdW5jdGlvbiBzKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgdT17XCJAY2hhcnNldFwiOnIuZGVmYXVsdCxcIkBpbXBvcnRcIjpyLmRlZmF1bHQsXCJAbmFtZXNwYWNlXCI6ci5kZWZhdWx0LFwiQGtleWZyYW1lc1wiOm8uZGVmYXVsdCxcIkBtZWRpYVwiOmEuZGVmYXVsdCxcIkBzdXBwb3J0c1wiOmEuZGVmYXVsdCxcIkBmb250LWZhY2VcIjppLmRlZmF1bHQsXCJAdmlld3BvcnRcIjpsLmRlZmF1bHQsXCJALW1zLXZpZXdwb3J0XCI6bC5kZWZhdWx0fSxjPU9iamVjdC5rZXlzKHUpLm1hcChmdW5jdGlvbihlKXt2YXIgdD1uZXcgUmVnRXhwKFwiXlwiK2UpLG49dVtlXTtyZXR1cm57b25DcmVhdGVSdWxlOmZ1bmN0aW9uKGUscixvKXtyZXR1cm4gdC50ZXN0KGUpP25ldyBuKGUscixvKTpudWxsfX19KTt0LmRlZmF1bHQ9Y30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCk7dmFyIG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbixyKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpLHRoaXMudHlwZT1cInNpbXBsZVwiLHRoaXMuaXNQcm9jZXNzZWQ9ITEsdGhpcy5rZXk9dCx0aGlzLnZhbHVlPW4sdGhpcy5vcHRpb25zPXJ9cmV0dXJuIHIoZSxbe2tleTpcInRvU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSl7Zm9yKHZhciB0PVwiXCIsbj0wO248dGhpcy52YWx1ZS5sZW5ndGg7bisrKXQrPXRoaXMua2V5K1wiIFwiK3RoaXMudmFsdWVbbl0rXCI7XCIsdGhpcy52YWx1ZVtuKzFdJiYodCs9XCJcXG5cIik7cmV0dXJuIHR9cmV0dXJuIHRoaXMua2V5K1wiIFwiK3RoaXMudmFsdWUrXCI7XCJ9fV0pLGV9KCk7dC5kZWZhdWx0PW99LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcixvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxpPW4oMzUpLGw9KHI9aSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O3ZhciBzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4scil7Zm9yKHZhciBhIGluIGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx0aGlzLnR5cGU9XCJrZXlmcmFtZXNcIix0aGlzLmlzUHJvY2Vzc2VkPSExLHRoaXMua2V5PXQsdGhpcy5vcHRpb25zPXIsdGhpcy5ydWxlcz1uZXcgbC5kZWZhdWx0KG8oe30scix7cGFyZW50OnRoaXN9KSksbil0aGlzLnJ1bGVzLmFkZChhLG5bYV0sbyh7fSx0aGlzLm9wdGlvbnMse3BhcmVudDp0aGlzLHNlbGVjdG9yOmF9KSk7dGhpcy5ydWxlcy5wcm9jZXNzKCl9cmV0dXJuIGEoZSxbe2tleTpcInRvU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e2luZGVudDoxfSx0PXRoaXMucnVsZXMudG9TdHJpbmcoZSk7cmV0dXJuIHQmJih0Kz1cIlxcblwiKSx0aGlzLmtleStcIiB7XFxuXCIrdCtcIn1cIn19XSksZX0oKTt0LmRlZmF1bHQ9c30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByLG89T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGk9bigzNSksbD0ocj1pKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07dmFyIHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbixyKXtmb3IodmFyIGEgaW4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpLHRoaXMudHlwZT1cImNvbmRpdGlvbmFsXCIsdGhpcy5pc1Byb2Nlc3NlZD0hMSx0aGlzLmtleT10LHRoaXMub3B0aW9ucz1yLHRoaXMucnVsZXM9bmV3IGwuZGVmYXVsdChvKHt9LHIse3BhcmVudDp0aGlzfSkpLG4pdGhpcy5ydWxlcy5hZGQoYSxuW2FdKTt0aGlzLnJ1bGVzLnByb2Nlc3MoKX1yZXR1cm4gYShlLFt7a2V5OlwiZ2V0UnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJ1bGVzLmdldChlKX19LHtrZXk6XCJpbmRleE9mXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucnVsZXMuaW5kZXhPZihlKX19LHtrZXk6XCJhZGRSdWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMucnVsZXMuYWRkKGUsdCxuKTtyZXR1cm4gdGhpcy5vcHRpb25zLmpzcy5wbHVnaW5zLm9uUHJvY2Vzc1J1bGUocikscn19LHtrZXk6XCJ0b1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOntpbmRlbnQ6MX0sdD10aGlzLnJ1bGVzLnRvU3RyaW5nKGUpO3JldHVybiB0P3RoaXMua2V5K1wiIHtcXG5cIit0K1wiXFxufVwiOlwiXCJ9fV0pLGV9KCk7dC5kZWZhdWx0PXN9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcixvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksYT1uKDY0KSxpPShyPWEpJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTt2YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuLHIpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy50eXBlPVwiZm9udC1mYWNlXCIsdGhpcy5pc1Byb2Nlc3NlZD0hMSx0aGlzLmtleT10LHRoaXMuc3R5bGU9bix0aGlzLm9wdGlvbnM9cn1yZXR1cm4gbyhlLFt7a2V5OlwidG9TdHJpbmdcIix2YWx1ZTpmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KHRoaXMuc3R5bGUpKXtmb3IodmFyIHQ9XCJcIixuPTA7bjx0aGlzLnN0eWxlLmxlbmd0aDtuKyspdCs9KDAsaS5kZWZhdWx0KSh0aGlzLmtleSx0aGlzLnN0eWxlW25dKSx0aGlzLnN0eWxlW24rMV0mJih0Kz1cIlxcblwiKTtyZXR1cm4gdH1yZXR1cm4oMCxpLmRlZmF1bHQpKHRoaXMua2V5LHRoaXMuc3R5bGUsZSl9fV0pLGV9KCk7dC5kZWZhdWx0PWx9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcixvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksYT1uKDY0KSxpPShyPWEpJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTt2YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuLHIpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy50eXBlPVwidmlld3BvcnRcIix0aGlzLmlzUHJvY2Vzc2VkPSExLHRoaXMua2V5PXQsdGhpcy5zdHlsZT1uLHRoaXMub3B0aW9ucz1yfXJldHVybiBvKGUsW3trZXk6XCJ0b1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybigwLGkuZGVmYXVsdCkodGhpcy5rZXksdGhpcy5zdHlsZSxlKX19XSksZX0oKTt0LmRlZmF1bHQ9bH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPWkobigzMCkpLG89aShuKDQ3KSksYT1pKG4oMTE2KSk7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5kZWZhdWx0PXtvbkNyZWF0ZVJ1bGU6ZnVuY3Rpb24oZSx0LG4pe2lmKCEoMCxhLmRlZmF1bHQpKHQpKXJldHVybiBudWxsO3ZhciByPXQsaT0oMCxvLmRlZmF1bHQpKGUse30sbik7cmV0dXJuIHIuc3Vic2NyaWJlKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWkucHJvcCh0LGVbdF0pfSksaX0sb25Qcm9jZXNzUnVsZTpmdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2Ygci5kZWZhdWx0KXt2YXIgdD1lLG49dC5zdHlsZSxvPWZ1bmN0aW9uKGUpe3ZhciByPW5bZV07aWYoISgwLGEuZGVmYXVsdCkocikpcmV0dXJuXCJjb250aW51ZVwiO2RlbGV0ZSBuW2VdLHIuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKG4pe3QucHJvcChlLG4pfX0pfTtmb3IodmFyIGkgaW4gbilvKGkpfX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9aShuKDM1KSksbz1pKG4oMzApKSxhPWkobig0NykpO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBsPURhdGUubm93KCkscz1cImZuVmFsdWVzXCIrbCx1PVwiZm5TdHlsZVwiKyArK2w7dC5kZWZhdWx0PXtvbkNyZWF0ZVJ1bGU6ZnVuY3Rpb24oZSx0LG4pe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7dmFyIHI9KDAsYS5kZWZhdWx0KShlLHt9LG4pO3JldHVybiByW3VdPXQscn0sb25Qcm9jZXNzU3R5bGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSl7dmFyIG89ZVtyXTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBvJiYoZGVsZXRlIGVbcl0sbltyXT1vKX1yZXR1cm4odD10KVtzXT1uLGV9LG9uVXBkYXRlOmZ1bmN0aW9uKGUsdCl7aWYodC5ydWxlcyBpbnN0YW5jZW9mIHIuZGVmYXVsdCl0LnJ1bGVzLnVwZGF0ZShlKTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBvLmRlZmF1bHQpe2lmKCh0PXQpW3NdKWZvcih2YXIgbiBpbiB0W3NdKXQucHJvcChuLHRbc11bbl0oZSkpO3ZhciBhPSh0PXQpW3VdO2lmKGEpe3ZhciBpPWEoZSk7Zm9yKHZhciBsIGluIGkpdC5wcm9wKGwsaVtsXSl9fX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxvPXMobigyOCkpLGE9cyhuKDY1KSksaT1zKG4oMzApKSxsPXMobig0NikpO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciB1PWZ1bmN0aW9uKGUpe3ZhciB0PXZvaWQgMDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdHx8KHQ9ZSgpKSx0fX07ZnVuY3Rpb24gYyhlLHQpe3RyeXtyZXR1cm4gZS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHQpfWNhdGNoKGUpe3JldHVyblwiXCJ9fWZ1bmN0aW9uIGQoZSx0LG4pe3RyeXt2YXIgcj1uO2lmKEFycmF5LmlzQXJyYXkobikmJihyPSgwLGwuZGVmYXVsdCkobiwhMCksXCIhaW1wb3J0YW50XCI9PT1uW24ubGVuZ3RoLTFdKSlyZXR1cm4gZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LHIsXCJpbXBvcnRhbnRcIiksITA7ZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LHIpfWNhdGNoKGUpe3JldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIHAoZSx0KXt0cnl7ZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX1jYXRjaChlKXsoMCxvLmRlZmF1bHQpKCExLCdbSlNTXSBET01FeGNlcHRpb24gXCIlc1wiIHdhcyB0aHJvd24uIFRyaWVkIHRvIHJlbW92ZSBwcm9wZXJ0eSBcIiVzXCIuJyxlLm1lc3NhZ2UsdCl9fXZhciBmLG09MSxnPTcsaD0oZj1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4gZS5zdWJzdHIodCxlLmluZGV4T2YoXCJ7XCIpLTEpfSxmdW5jdGlvbihlKXtpZihlLnR5cGU9PT1tKXJldHVybiBlLnNlbGVjdG9yVGV4dDtpZihlLnR5cGU9PT1nKXt2YXIgdD1lLm5hbWU7aWYodClyZXR1cm5cIkBrZXlmcmFtZXMgXCIrdDt2YXIgbj1lLmNzc1RleHQ7cmV0dXJuXCJAXCIrZihuLG4uaW5kZXhPZihcImtleWZyYW1lc1wiKSl9cmV0dXJuIGYoZS5jc3NUZXh0KX0pO2Z1bmN0aW9uIGIoZSx0KXtyZXR1cm4gZS5zZWxlY3RvclRleHQ9dCxlLnNlbGVjdG9yVGV4dD09PXR9dmFyIHksdixTPXUoZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuaGVhZHx8ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdfSksRT0oeT12b2lkIDAsdj0hMSxmdW5jdGlvbihlKXt2YXIgdD17fTt5fHwoeT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIikpO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO2lmKHIgaW5zdGFuY2VvZiBpLmRlZmF1bHQpe3ZhciBvPXIuc2VsZWN0b3I7aWYobyYmLTEhPT1vLmluZGV4T2YoXCJcXFxcXCIpKXt2fHwoUygpLmFwcGVuZENoaWxkKHkpLHY9ITApLHkudGV4dENvbnRlbnQ9bytcIiB7fVwiO3ZhciBhPXkuc2hlZXQ7aWYoYSl7dmFyIGw9YS5jc3NSdWxlcztsJiYodFtsWzBdLnNlbGVjdG9yVGV4dF09ci5rZXkpfX19fXJldHVybiB2JiYoUygpLnJlbW92ZUNoaWxkKHkpLHY9ITEpLHR9KTtmdW5jdGlvbiB4KGUpe3ZhciB0PWEuZGVmYXVsdC5yZWdpc3RyeTtpZih0Lmxlbmd0aD4wKXt2YXIgbj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO2lmKHIuYXR0YWNoZWQmJnIub3B0aW9ucy5pbmRleD50LmluZGV4JiZyLm9wdGlvbnMuaW5zZXJ0aW9uUG9pbnQ9PT10Lmluc2VydGlvblBvaW50KXJldHVybiByfXJldHVybiBudWxsfSh0LGUpO2lmKG4pcmV0dXJuIG4ucmVuZGVyZXIuZWxlbWVudDtpZihuPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWUubGVuZ3RoLTE7bj49MDtuLS0pe3ZhciByPWVbbl07aWYoci5hdHRhY2hlZCYmci5vcHRpb25zLmluc2VydGlvblBvaW50PT09dC5pbnNlcnRpb25Qb2ludClyZXR1cm4gcn1yZXR1cm4gbnVsbH0odCxlKSlyZXR1cm4gbi5yZW5kZXJlci5lbGVtZW50Lm5leHRFbGVtZW50U2libGluZ312YXIgcj1lLmluc2VydGlvblBvaW50O2lmKHImJlwic3RyaW5nXCI9PXR5cGVvZiByKXt2YXIgaT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9UygpLG49MDtuPHQuY2hpbGROb2Rlcy5sZW5ndGg7bisrKXt2YXIgcj10LmNoaWxkTm9kZXNbbl07aWYoOD09PXIubm9kZVR5cGUmJnIubm9kZVZhbHVlLnRyaW0oKT09PWUpcmV0dXJuIHJ9cmV0dXJuIG51bGx9KHIpO2lmKGkpcmV0dXJuIGkubmV4dFNpYmxpbmc7KDAsby5kZWZhdWx0KShcImpzc1wiPT09ciwnW0pTU10gSW5zZXJ0aW9uIHBvaW50IFwiJXNcIiBub3QgZm91bmQuJyxyKX1yZXR1cm4gbnVsbH12YXIgdz11KGZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtwcm9wZXJ0eT1cImNzcC1ub25jZVwiXScpO3JldHVybiBlP2UuZ2V0QXR0cmlidXRlKFwiY29udGVudFwiKTpudWxsfSksaz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx0aGlzLmdldFByb3BlcnR5VmFsdWU9Yyx0aGlzLnNldFByb3BlcnR5PWQsdGhpcy5yZW1vdmVQcm9wZXJ0eT1wLHRoaXMuc2V0U2VsZWN0b3I9Yix0aGlzLmdldEtleT1oLHRoaXMuZ2V0VW5lc2NhcGVkS2V5c01hcD1FLHRoaXMuaGFzSW5zZXJ0ZWRSdWxlcz0hMSx0JiZhLmRlZmF1bHQuYWRkKHQpLHRoaXMuc2hlZXQ9dDt2YXIgbj10aGlzLnNoZWV0P3RoaXMuc2hlZXQub3B0aW9uczp7fSxyPW4ubWVkaWEsbz1uLm1ldGEsaT1uLmVsZW1lbnQ7dGhpcy5lbGVtZW50PWl8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKSx0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1qc3NcIixcIlwiKSxyJiZ0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKFwibWVkaWFcIixyKSxvJiZ0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1tZXRhXCIsbyk7dmFyIGw9dygpO2wmJnRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGwpfXJldHVybiByKGUsW3trZXk6XCJhdHRhY2hcIix2YWx1ZTpmdW5jdGlvbigpeyF0aGlzLmVsZW1lbnQucGFyZW50Tm9kZSYmdGhpcy5zaGVldCYmKHRoaXMuaGFzSW5zZXJ0ZWRSdWxlcyYmKHRoaXMuZGVwbG95KCksdGhpcy5oYXNJbnNlcnRlZFJ1bGVzPSExKSxmdW5jdGlvbihlLHQpe3ZhciBuPXQuaW5zZXJ0aW9uUG9pbnQscj14KHQpO2lmKHIpe3ZhciBhPXIucGFyZW50Tm9kZTthJiZhLmluc2VydEJlZm9yZShlLHIpfWVsc2UgaWYobiYmXCJudW1iZXJcIj09dHlwZW9mIG4ubm9kZVR5cGUpe3ZhciBpPW4sbD1pLnBhcmVudE5vZGU7bD9sLmluc2VydEJlZm9yZShlLGkubmV4dFNpYmxpbmcpOigwLG8uZGVmYXVsdCkoITEsXCJbSlNTXSBJbnNlcnRpb24gcG9pbnQgaXMgbm90IGluIHRoZSBET00uXCIpfWVsc2UgUygpLmluc2VydEJlZm9yZShlLHIpfSh0aGlzLmVsZW1lbnQsdGhpcy5zaGVldC5vcHRpb25zKSl9fSx7a2V5OlwiZGV0YWNoXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpfX0se2tleTpcImRlcGxveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zaGVldCYmKHRoaXMuZWxlbWVudC50ZXh0Q29udGVudD1cIlxcblwiK3RoaXMuc2hlZXQudG9TdHJpbmcoKStcIlxcblwiKX19LHtrZXk6XCJpbnNlcnRSdWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmVsZW1lbnQuc2hlZXQscj1uLmNzc1J1bGVzLGE9ZS50b1N0cmluZygpO2lmKHR8fCh0PXIubGVuZ3RoKSwhYSlyZXR1cm4hMTt0cnl7bi5pbnNlcnRSdWxlKGEsdCl9Y2F0Y2godCl7cmV0dXJuKDAsby5kZWZhdWx0KSghMSxcIltKU1NdIENhbiBub3QgaW5zZXJ0IGFuIHVuc3VwcG9ydGVkIHJ1bGUgXFxuXFxyJXNcIixlKSwhMX1yZXR1cm4gdGhpcy5oYXNJbnNlcnRlZFJ1bGVzPSEwLHJbdF19fSx7a2V5OlwiZGVsZXRlUnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZWxlbWVudC5zaGVldCxuPXRoaXMuaW5kZXhPZihlKTtyZXR1cm4tMSE9PW4mJih0LmRlbGV0ZVJ1bGUobiksITApfX0se2tleTpcImluZGV4T2ZcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5lbGVtZW50LnNoZWV0LmNzc1J1bGVzLG49MDtuPHQubGVuZ3RoO24rKylpZihlPT09dFtuXSlyZXR1cm4gbjtyZXR1cm4tMX19LHtrZXk6XCJyZXBsYWNlUnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5pbmRleE9mKGUpLHI9dGhpcy5pbnNlcnRSdWxlKHQsbik7cmV0dXJuIHRoaXMuZWxlbWVudC5zaGVldC5kZWxldGVSdWxlKG4pLHJ9fSx7a2V5OlwiZ2V0UnVsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnQuc2hlZXQuY3NzUnVsZXN9fV0pLGV9KCk7dC5kZWZhdWx0PWt9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpO3ZhciBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSl9cmV0dXJuIHIoZSxbe2tleTpcInNldFByb3BlcnR5XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6XCJnZXRQcm9wZXJ0eVZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5cIlwifX0se2tleTpcInJlbW92ZVByb3BlcnR5XCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5Olwic2V0U2VsZWN0b3JcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEwfX0se2tleTpcImdldEtleVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuXCJcIn19LHtrZXk6XCJhdHRhY2hcIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6XCJkZXRhY2hcIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6XCJkZXBsb3lcIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6XCJpbnNlcnRSdWxlXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hMX19LHtrZXk6XCJkZWxldGVSdWxlXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6XCJyZXBsYWNlUnVsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITF9fSx7a2V5OlwiZ2V0UnVsZXNcIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6XCJpbmRleE9mXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4tMX19XSksZX0oKTt0LmRlZmF1bHQ9b30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9e2pzczpcIjY0YTU1ZDU3OGY4NTZkMjU4ZGMzNDViMDk0YTJhMmIzXCIsc2hlZXRzUmVnaXN0cnk6XCJkNGJkMGJhYWNiYzUyYmJkNDhiYmI5ZWIyNDM0NGVjZFwiLHNoZWV0T3B0aW9uczpcIjZmYzU3MGQ2YmQ2MTM4MzgxOWQwZjllNzQwN2M0NTJkXCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpO3QuZGVmYXVsdD1mdW5jdGlvbigpe3JldHVybntvbkNyZWF0ZVJ1bGU6ZnVuY3Rpb24oZSx0LG4pe2lmKGU9PT1sKXJldHVybiBuZXcgdShlLHQsbik7aWYoXCJAXCI9PT1lWzBdJiZlLnN1YnN0cigwLHMubGVuZ3RoKT09PXMpcmV0dXJuIG5ldyBjKGUsdCxuKTt2YXIgcj1uLnBhcmVudDtyJiYoXCJnbG9iYWxcIiE9PXIudHlwZSYmXCJnbG9iYWxcIiE9PXIub3B0aW9ucy5wYXJlbnQudHlwZXx8KG4uZ2xvYmFsPSEwKSk7bi5nbG9iYWwmJihuLnNlbGVjdG9yPWUpO3JldHVybiBudWxsfSxvblByb2Nlc3NSdWxlOmZ1bmN0aW9uKGUpe2lmKFwic3R5bGVcIiE9PWUudHlwZSlyZXR1cm47KGZ1bmN0aW9uKGUpe3ZhciB0PWUub3B0aW9ucyxuPWUuc3R5bGUsbz1uW2xdO2lmKCFvKXJldHVybjtmb3IodmFyIGEgaW4gbyl0LnNoZWV0LmFkZFJ1bGUoYSxvW2FdLHIoe30sdCx7c2VsZWN0b3I6cChhLGUuc2VsZWN0b3IpfSkpO2RlbGV0ZSBuW2xdfSkoZSksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLG49ZS5zdHlsZTtmb3IodmFyIG8gaW4gbilpZihvLnN1YnN0cigwLGwubGVuZ3RoKT09PWwpe3ZhciBhPXAoby5zdWJzdHIobC5sZW5ndGgpLGUuc2VsZWN0b3IpO3Quc2hlZXQuYWRkUnVsZShhLG5bb10scih7fSx0LHtzZWxlY3RvcjphfSkpLGRlbGV0ZSBuW29dfX0oZSl9fX07dmFyIGE9bigxMTQpO2Z1bmN0aW9uIGkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfXZhciBsPVwiQGdsb2JhbFwiLHM9XCJAZ2xvYmFsIFwiLHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbixvKXtmb3IodmFyIGwgaW4gaSh0aGlzLGUpLHRoaXMudHlwZT1cImdsb2JhbFwiLHRoaXMua2V5PXQsdGhpcy5vcHRpb25zPW8sdGhpcy5ydWxlcz1uZXcgYS5SdWxlTGlzdChyKHt9LG8se3BhcmVudDp0aGlzfSkpLG4pdGhpcy5ydWxlcy5hZGQobCxuW2xdLHtzZWxlY3RvcjpsfSk7dGhpcy5ydWxlcy5wcm9jZXNzKCl9cmV0dXJuIG8oZSxbe2tleTpcImdldFJ1bGVcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5ydWxlcy5nZXQoZSl9fSx7a2V5OlwiYWRkUnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLnJ1bGVzLmFkZChlLHQsbik7cmV0dXJuIHRoaXMub3B0aW9ucy5qc3MucGx1Z2lucy5vblByb2Nlc3NSdWxlKHIpLHJ9fSx7a2V5OlwiaW5kZXhPZlwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJ1bGVzLmluZGV4T2YoZSl9fSx7a2V5OlwidG9TdHJpbmdcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJ1bGVzLnRvU3RyaW5nKCl9fV0pLGV9KCksYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuLG8pe2kodGhpcyxlKSx0aGlzLm5hbWU9dCx0aGlzLm9wdGlvbnM9bzt2YXIgYT10LnN1YnN0cihzLmxlbmd0aCk7dGhpcy5ydWxlPW8uanNzLmNyZWF0ZVJ1bGUoYSxuLHIoe30sbyx7cGFyZW50OnRoaXMsc2VsZWN0b3I6YX0pKX1yZXR1cm4gbyhlLFt7a2V5OlwidG9TdHJpbmdcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5ydWxlLnRvU3RyaW5nKGUpfX1dKSxlfSgpLGQ9L1xccyosXFxzKi9nO2Z1bmN0aW9uIHAoZSx0KXtmb3IodmFyIG49ZS5zcGxpdChkKSxyPVwiXCIsbz0wO288bi5sZW5ndGg7bysrKXIrPXQrXCIgXCIrbltvXS50cmltKCksbltvKzFdJiYocis9XCIsIFwiKTtyZXR1cm4gcn19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTt0LmRlZmF1bHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciByPWUuZ2V0UnVsZShuKTtyZXR1cm4gcj9yLnNlbGVjdG9yOigoMCxpLmRlZmF1bHQpKCExLFwiW0pTU10gQ291bGQgbm90IGZpbmQgdGhlIHJlZmVyZW5jZWQgcnVsZSAlcyBpbiAlcy5cIixuLGUub3B0aW9ucy5tZXRhfHxlKSxuKX19dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJuLTEhPT1lLmluZGV4T2YoXCImXCIpfTtmdW5jdGlvbiBuKGUsbil7Zm9yKHZhciByPW4uc3BsaXQobCksbz1lLnNwbGl0KGwpLGE9XCJcIixpPTA7aTxyLmxlbmd0aDtpKyspZm9yKHZhciB1PXJbaV0sYz0wO2M8by5sZW5ndGg7YysrKXt2YXIgZD1vW2NdO2EmJihhKz1cIiwgXCIpLGErPXQoZCk/ZC5yZXBsYWNlKHMsdSk6dStcIiBcIitkfXJldHVybiBhfWZ1bmN0aW9uIG8oZSx0LG4pe2lmKG4pcmV0dXJuIHIoe30sbix7aW5kZXg6bi5pbmRleCsxfSk7dmFyIG89ZS5vcHRpb25zLm5lc3RpbmdMZXZlbDtyZXR1cm4gbz12b2lkIDA9PT1vPzE6bysxLHIoe30sZS5vcHRpb25zLHtuZXN0aW5nTGV2ZWw6byxpbmRleDp0LmluZGV4T2YoZSkrMX0pfXJldHVybntvblByb2Nlc3NTdHlsZTpmdW5jdGlvbihhLGkpe2lmKFwic3R5bGVcIiE9PWkudHlwZSlyZXR1cm4gYTt2YXIgbD1pLm9wdGlvbnMucGFyZW50LHM9dm9pZCAwLGM9dm9pZCAwO2Zvcih2YXIgZCBpbiBhKXt2YXIgcD10KGQpLGY9XCJAXCI9PT1kWzBdO2lmKHB8fGYpe2lmKHM9byhpLGwscykscCl7dmFyIG09bihkLGkuc2VsZWN0b3IpO2N8fChjPWUobCkpLG09bS5yZXBsYWNlKHUsYyksbC5hZGRSdWxlKG0sYVtkXSxyKHt9LHMse3NlbGVjdG9yOm19KSl9ZWxzZSBmJiZsLmFkZFJ1bGUoZCxudWxsLHMpLmFkZFJ1bGUoaS5rZXksYVtkXSx7c2VsZWN0b3I6aS5zZWxlY3Rvcn0pO2RlbGV0ZSBhW2RdfX1yZXR1cm4gYX19fTt2YXIgbyxhPW4oMjgpLGk9KG89YSkmJm8uX19lc01vZHVsZT9vOntkZWZhdWx0Om99O3ZhciBsPS9cXHMqLFxccyovZyxzPS8mL2csdT0vXFwkKFtcXHctXSspL2d9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm57b25Qcm9jZXNzU3R5bGU6ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XT1pKGVbdF0pO3JldHVybiBlfXJldHVybiBpKGUpfSxvbkNoYW5nZVZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0oMCxhLmRlZmF1bHQpKHQpO3JldHVybiB0PT09cj9lOihuLnByb3AocixlKSxudWxsKX19fTt2YXIgcixvPW4oMzg0KSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTtmdW5jdGlvbiBpKGUpe3ZhciB0PXt9O2Zvcih2YXIgbiBpbiBlKXRbKDAsYS5kZWZhdWx0KShuKV09ZVtuXTtyZXR1cm4gZS5mYWxsYmFja3MmJihBcnJheS5pc0FycmF5KGUuZmFsbGJhY2tzKT90LmZhbGxiYWNrcz1lLmZhbGxiYWNrcy5tYXAoaSk6dC5mYWxsYmFja3M9aShlLmZhbGxiYWNrcykpLHR9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9L1tBLVpdL2csbz0vXm1zLS8sYT17fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW4gYT9hW2VdOmFbZV09ZS5yZXBsYWNlKHIsXCItJCZcIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKG8sXCItbXMtXCIpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9O3QuZGVmYXVsdD1mdW5jdGlvbigpe3ZhciBlPWkoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9KTtyZXR1cm57b25Qcm9jZXNzU3R5bGU6ZnVuY3Rpb24odCxuKXtpZihcInN0eWxlXCIhPT1uLnR5cGUpcmV0dXJuIHQ7Zm9yKHZhciByIGluIHQpdFtyXT1zKHIsdFtyXSxlKTtyZXR1cm4gdH0sb25DaGFuZ2VWYWx1ZTpmdW5jdGlvbih0LG4pe3JldHVybiBzKG4sdCxlKX19fTt2YXIgbyxhPW4oMzg2KTtmdW5jdGlvbiBpKGUpe3ZhciB0PS8oLVthLXpdKS9nLG49ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV0udG9VcHBlckNhc2UoKX0scj17fTtmb3IodmFyIG8gaW4gZSlyW29dPWVbb10scltvLnJlcGxhY2UodCxuKV09ZVtvXTtyZXR1cm4gcn12YXIgbD1pKCgobz1hKSYmby5fX2VzTW9kdWxlP286e2RlZmF1bHQ6b30pLmRlZmF1bHQpO2Z1bmN0aW9uIHMoZSx0LG4pe2lmKCF0KXJldHVybiB0O3ZhciBvPXQsYT12b2lkIDA9PT10P1widW5kZWZpbmVkXCI6cih0KTtzd2l0Y2goXCJvYmplY3RcIj09PWEmJkFycmF5LmlzQXJyYXkodCkmJihhPVwiYXJyYXlcIiksYSl7Y2FzZVwib2JqZWN0XCI6aWYoXCJmYWxsYmFja3NcIj09PWUpe2Zvcih2YXIgaSBpbiB0KXRbaV09cyhpLHRbaV0sbik7YnJlYWt9Zm9yKHZhciB1IGluIHQpdFt1XT1zKGUrXCItXCIrdSx0W3VdLG4pO2JyZWFrO2Nhc2VcImFycmF5XCI6Zm9yKHZhciBjPTA7Yzx0Lmxlbmd0aDtjKyspdFtjXT1zKGUsdFtjXSxuKTticmVhaztjYXNlXCJudW1iZXJcIjowIT09dCYmKG89dCsobltlXXx8bFtlXXx8XCJcIikpfXJldHVybiBvfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17XCJhbmltYXRpb24tZGVsYXlcIjpcIm1zXCIsXCJhbmltYXRpb24tZHVyYXRpb25cIjpcIm1zXCIsXCJiYWNrZ3JvdW5kLXBvc2l0aW9uXCI6XCJweFwiLFwiYmFja2dyb3VuZC1wb3NpdGlvbi14XCI6XCJweFwiLFwiYmFja2dyb3VuZC1wb3NpdGlvbi15XCI6XCJweFwiLFwiYmFja2dyb3VuZC1zaXplXCI6XCJweFwiLGJvcmRlcjpcInB4XCIsXCJib3JkZXItYm90dG9tXCI6XCJweFwiLFwiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c1wiOlwicHhcIixcImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzXCI6XCJweFwiLFwiYm9yZGVyLWJvdHRvbS13aWR0aFwiOlwicHhcIixcImJvcmRlci1sZWZ0XCI6XCJweFwiLFwiYm9yZGVyLWxlZnQtd2lkdGhcIjpcInB4XCIsXCJib3JkZXItcmFkaXVzXCI6XCJweFwiLFwiYm9yZGVyLXJpZ2h0XCI6XCJweFwiLFwiYm9yZGVyLXJpZ2h0LXdpZHRoXCI6XCJweFwiLFwiYm9yZGVyLXNwYWNpbmdcIjpcInB4XCIsXCJib3JkZXItdG9wXCI6XCJweFwiLFwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1c1wiOlwicHhcIixcImJvcmRlci10b3AtcmlnaHQtcmFkaXVzXCI6XCJweFwiLFwiYm9yZGVyLXRvcC13aWR0aFwiOlwicHhcIixcImJvcmRlci13aWR0aFwiOlwicHhcIixcImJvcmRlci1hZnRlci13aWR0aFwiOlwicHhcIixcImJvcmRlci1iZWZvcmUtd2lkdGhcIjpcInB4XCIsXCJib3JkZXItZW5kLXdpZHRoXCI6XCJweFwiLFwiYm9yZGVyLWhvcml6b250YWwtc3BhY2luZ1wiOlwicHhcIixcImJvcmRlci1zdGFydC13aWR0aFwiOlwicHhcIixcImJvcmRlci12ZXJ0aWNhbC1zcGFjaW5nXCI6XCJweFwiLGJvdHRvbTpcInB4XCIsXCJib3gtc2hhZG93XCI6XCJweFwiLFwiY29sdW1uLWdhcFwiOlwicHhcIixcImNvbHVtbi1ydWxlXCI6XCJweFwiLFwiY29sdW1uLXJ1bGUtd2lkdGhcIjpcInB4XCIsXCJjb2x1bW4td2lkdGhcIjpcInB4XCIsXCJmbGV4LWJhc2lzXCI6XCJweFwiLFwiZm9udC1zaXplXCI6XCJweFwiLFwiZm9udC1zaXplLWRlbHRhXCI6XCJweFwiLGhlaWdodDpcInB4XCIsbGVmdDpcInB4XCIsXCJsZXR0ZXItc3BhY2luZ1wiOlwicHhcIixcImxvZ2ljYWwtaGVpZ2h0XCI6XCJweFwiLFwibG9naWNhbC13aWR0aFwiOlwicHhcIixtYXJnaW46XCJweFwiLFwibWFyZ2luLWFmdGVyXCI6XCJweFwiLFwibWFyZ2luLWJlZm9yZVwiOlwicHhcIixcIm1hcmdpbi1ib3R0b21cIjpcInB4XCIsXCJtYXJnaW4tbGVmdFwiOlwicHhcIixcIm1hcmdpbi1yaWdodFwiOlwicHhcIixcIm1hcmdpbi10b3BcIjpcInB4XCIsXCJtYXgtaGVpZ2h0XCI6XCJweFwiLFwibWF4LXdpZHRoXCI6XCJweFwiLFwibWFyZ2luLWVuZFwiOlwicHhcIixcIm1hcmdpbi1zdGFydFwiOlwicHhcIixcIm1hc2stcG9zaXRpb24teFwiOlwicHhcIixcIm1hc2stcG9zaXRpb24teVwiOlwicHhcIixcIm1hc2stc2l6ZVwiOlwicHhcIixcIm1heC1sb2dpY2FsLWhlaWdodFwiOlwicHhcIixcIm1heC1sb2dpY2FsLXdpZHRoXCI6XCJweFwiLFwibWluLWhlaWdodFwiOlwicHhcIixcIm1pbi13aWR0aFwiOlwicHhcIixcIm1pbi1sb2dpY2FsLWhlaWdodFwiOlwicHhcIixcIm1pbi1sb2dpY2FsLXdpZHRoXCI6XCJweFwiLG1vdGlvbjpcInB4XCIsXCJtb3Rpb24tb2Zmc2V0XCI6XCJweFwiLG91dGxpbmU6XCJweFwiLFwib3V0bGluZS1vZmZzZXRcIjpcInB4XCIsXCJvdXRsaW5lLXdpZHRoXCI6XCJweFwiLHBhZGRpbmc6XCJweFwiLFwicGFkZGluZy1ib3R0b21cIjpcInB4XCIsXCJwYWRkaW5nLWxlZnRcIjpcInB4XCIsXCJwYWRkaW5nLXJpZ2h0XCI6XCJweFwiLFwicGFkZGluZy10b3BcIjpcInB4XCIsXCJwYWRkaW5nLWFmdGVyXCI6XCJweFwiLFwicGFkZGluZy1iZWZvcmVcIjpcInB4XCIsXCJwYWRkaW5nLWVuZFwiOlwicHhcIixcInBhZGRpbmctc3RhcnRcIjpcInB4XCIsXCJwZXJzcGVjdGl2ZS1vcmlnaW4teFwiOlwiJVwiLFwicGVyc3BlY3RpdmUtb3JpZ2luLXlcIjpcIiVcIixwZXJzcGVjdGl2ZTpcInB4XCIscmlnaHQ6XCJweFwiLFwic2hhcGUtbWFyZ2luXCI6XCJweFwiLHNpemU6XCJweFwiLFwidGV4dC1pbmRlbnRcIjpcInB4XCIsXCJ0ZXh0LXN0cm9rZVwiOlwicHhcIixcInRleHQtc3Ryb2tlLXdpZHRoXCI6XCJweFwiLHRvcDpcInB4XCIsXCJ0cmFuc2Zvcm0tb3JpZ2luXCI6XCIlXCIsXCJ0cmFuc2Zvcm0tb3JpZ2luLXhcIjpcIiVcIixcInRyYW5zZm9ybS1vcmlnaW4teVwiOlwiJVwiLFwidHJhbnNmb3JtLW9yaWdpbi16XCI6XCIlXCIsXCJ0cmFuc2l0aW9uLWRlbGF5XCI6XCJtc1wiLFwidHJhbnNpdGlvbi1kdXJhdGlvblwiOlwibXNcIixcInZlcnRpY2FsLWFsaWduXCI6XCJweFwiLHdpZHRoOlwicHhcIixcIndvcmQtc3BhY2luZ1wiOlwicHhcIixcImJveC1zaGFkb3cteFwiOlwicHhcIixcImJveC1zaGFkb3cteVwiOlwicHhcIixcImJveC1zaGFkb3ctYmx1clwiOlwicHhcIixcImJveC1zaGFkb3ctc3ByZWFkXCI6XCJweFwiLFwiZm9udC1saW5lLWhlaWdodFwiOlwicHhcIixcInRleHQtc2hhZG93LXhcIjpcInB4XCIsXCJ0ZXh0LXNoYWRvdy15XCI6XCJweFwiLFwidGV4dC1zaGFkb3ctYmx1clwiOlwicHhcIn19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm57b25Qcm9jZXNzUnVsZTpmdW5jdGlvbihlKXtcImtleWZyYW1lc1wiPT09ZS50eXBlJiYoZS5rZXk9XCJAXCIrci5wcmVmaXguY3NzK2Uua2V5LnN1YnN0cigxKSl9LG9uUHJvY2Vzc1N0eWxlOmZ1bmN0aW9uKGUsdCl7aWYoXCJzdHlsZVwiIT09dC50eXBlKXJldHVybiBlO2Zvcih2YXIgbiBpbiBlKXt2YXIgbz1lW25dLGE9ITEsaT1yLnN1cHBvcnRlZFByb3BlcnR5KG4pO2kmJmkhPT1uJiYoYT0hMCk7dmFyIGw9ITEscz1yLnN1cHBvcnRlZFZhbHVlKGksbyk7cyYmcyE9PW8mJihsPSEwKSwoYXx8bCkmJihhJiZkZWxldGUgZVtuXSxlW2l8fG5dPXN8fG8pfXJldHVybiBlfSxvbkNoYW5nZVZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuc3VwcG9ydGVkVmFsdWUodCxlKX19fTt2YXIgcj1mdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9KG4oMzg4KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnN1cHBvcnRlZFZhbHVlPXQuc3VwcG9ydGVkUHJvcGVydHk9dC5wcmVmaXg9dm9pZCAwO3ZhciByPWkobig2NikpLG89aShuKDM4OSkpLGE9aShuKDM5MSkpO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXQuZGVmYXVsdD17cHJlZml4OnIuZGVmYXVsdCxzdXBwb3J0ZWRQcm9wZXJ0eTpvLmRlZmF1bHQsc3VwcG9ydGVkVmFsdWU6YS5kZWZhdWx0fSxcbi8qKlxuICAgICogQ1NTIFZlbmRvciBwcmVmaXggZGV0ZWN0aW9uIGFuZCBwcm9wZXJ0eSBmZWF0dXJlIHRlc3RpbmcuXG4gICAgKlxuICAgICogQGNvcHlyaWdodCBPbGVnIFNsb2JvZHNrb2kgMjAxNVxuICAgICogQHdlYnNpdGUgaHR0cHM6Ly9naXRodWIuY29tL2pzc3R5bGVzL2Nzcy12ZW5kb3JcbiAgICAqIEBsaWNlbnNlIE1JVFxuICAgICovXG50LnByZWZpeD1yLmRlZmF1bHQsdC5zdXBwb3J0ZWRQcm9wZXJ0eT1vLmRlZmF1bHQsdC5zdXBwb3J0ZWRWYWx1ZT1hLmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7aWYoIWwpcmV0dXJuIGU7aWYobnVsbCE9c1tlXSlyZXR1cm4gc1tlXTsoMCxhLmRlZmF1bHQpKGUpaW4gbC5zdHlsZT9zW2VdPWU6by5kZWZhdWx0LmpzKygwLGEuZGVmYXVsdCkoXCItXCIrZSlpbiBsLnN0eWxlP3NbZV09by5kZWZhdWx0LmNzcytlOnNbZV09ITE7cmV0dXJuIHNbZV19O3ZhciByPWkobig0OCkpLG89aShuKDY2KSksYT1pKG4oMzkwKSk7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIGw9dm9pZCAwLHM9e307aWYoci5kZWZhdWx0KXtsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJwXCIpO3ZhciB1PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcIlwiKTtmb3IodmFyIGMgaW4gdSlpc05hTihjKXx8KHNbdVtjXV09dVtjXSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UocixvKX07dmFyIHI9L1stXFxzXSsoLik/L2c7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiB0P3QudG9VcHBlckNhc2UoKTpcIlwifX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe2lmKCFsKXJldHVybiB0O2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0fHwhaXNOYU4ocGFyc2VJbnQodCwxMCkpKXJldHVybiB0O3ZhciBuPWUrdDtpZihudWxsIT1pW25dKXJldHVybiBpW25dO3RyeXtsLnN0eWxlW2VdPXR9Y2F0Y2goZSl7cmV0dXJuIGlbbl09ITEsITF9XCJcIiE9PWwuc3R5bGVbZV0/aVtuXT10OihcIi1tcy1mbGV4XCI9PT0odD1vLmRlZmF1bHQuY3NzK3QpJiYodD1cIi1tcy1mbGV4Ym94XCIpLGwuc3R5bGVbZV09dCxcIlwiIT09bC5zdHlsZVtlXSYmKGlbbl09dCkpO2lbbl18fChpW25dPSExKTtyZXR1cm4gbC5zdHlsZVtlXT1cIlwiLGlbbl19O3ZhciByPWEobig0OCkpLG89YShuKDY2KSk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIGk9e30sbD12b2lkIDA7ci5kZWZhdWx0JiYobD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicFwiKSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7cmV0dXJuIGUubGVuZ3RoLXQubGVuZ3RofXJldHVybntvblByb2Nlc3NTdHlsZTpmdW5jdGlvbih0LG4pe2lmKFwic3R5bGVcIiE9PW4udHlwZSlyZXR1cm4gdDt2YXIgcj17fSxvPU9iamVjdC5rZXlzKHQpLnNvcnQoZSk7Zm9yKHZhciBhIGluIG8pcltvW2FdXT10W29bYV1dO3JldHVybiByfX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17c2V0OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPWUuZ2V0KHQpO298fChvPW5ldyBNYXAsZS5zZXQodCxvKSksby5zZXQobixyKX0sZ2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldCh0KTtyZXR1cm4gcj9yLmdldChuKTp2b2lkIDB9LGRlbGV0ZTpmdW5jdGlvbihlLHQsbil7ZS5nZXQodCkuZGVsZXRlKG4pfX07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtcbi8qIVxuICogaXMtcGxhaW4tb2JqZWN0IDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pcy1wbGFpbi1vYmplY3Q+XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LTIwMTcsIEpvbiBTY2hsaW5rZXJ0LlxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovdmFyIHI9bigzOTUpO2Z1bmN0aW9uIG8oZSl7cmV0dXJuITA9PT1yKGUpJiZcIltvYmplY3QgT2JqZWN0XVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfWUuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiExIT09byhlKSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mKHQ9ZS5jb25zdHJ1Y3RvcikmJighMSE9PW8obj10LnByb3RvdHlwZSkmJiExIT09bi5oYXNPd25Qcm9wZXJ0eShcImlzUHJvdG90eXBlT2ZcIikpKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtcbi8qIVxuICogaXNvYmplY3QgPGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hsaW5rZXJ0L2lzb2JqZWN0PlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJiExPT09QXJyYXkuaXNBcnJheShlKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlcyxuPXZvaWQgMD09PXQ/e3hzOjAsc206NjAwLG1kOjk2MCxsZzoxMjgwLHhsOjE5MjB9OnQscj1lLnVuaXQsbD12b2lkIDA9PT1yP1wicHhcIjpyLHM9ZS5zdGVwLHU9dm9pZCAwPT09cz81OnMsYz0oMCxhLmRlZmF1bHQpKGUsW1widmFsdWVzXCIsXCJ1bml0XCIsXCJzdGVwXCJdKTtmdW5jdGlvbiBkKGUpe3ZhciB0PVwibnVtYmVyXCI9PXR5cGVvZiBuW2VdP25bZV06ZTtyZXR1cm5cIkBtZWRpYSAobWluLXdpZHRoOlwiLmNvbmNhdCh0KS5jb25jYXQobCxcIilcIil9ZnVuY3Rpb24gcChlLHQpe3ZhciByPWkuaW5kZXhPZih0KSsxO3JldHVybiByPT09aS5sZW5ndGg/ZChlKTpcIkBtZWRpYSAobWluLXdpZHRoOlwiLmNvbmNhdChuW2VdKS5jb25jYXQobCxcIikgYW5kIFwiKStcIihtYXgtd2lkdGg6XCIuY29uY2F0KG5baVtyXV0tdS8xMDApLmNvbmNhdChsLFwiKVwiKX1yZXR1cm4oMCxvLmRlZmF1bHQpKHtrZXlzOmksdmFsdWVzOm4sdXA6ZCxkb3duOmZ1bmN0aW9uKGUpe3ZhciB0PWkuaW5kZXhPZihlKSsxLHI9bltpW3RdXTtpZih0PT09aS5sZW5ndGgpcmV0dXJuIGQoXCJ4c1wiKTtyZXR1cm5cIkBtZWRpYSAobWF4LXdpZHRoOlwiLmNvbmNhdCgoXCJudW1iZXJcIj09dHlwZW9mIHImJnQ+MD9yOmUpLXUvMTAwKS5jb25jYXQobCxcIilcIil9LGJldHdlZW46cCxvbmx5OmZ1bmN0aW9uKGUpe3JldHVybiBwKGUsZSl9LHdpZHRoOmZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfX0sYyl9LHQua2V5cz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig1KSksaT1bXCJ4c1wiLFwic21cIixcIm1kXCIsXCJsZ1wiLFwieGxcIl07dC5rZXlzPWl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuKDAsYS5kZWZhdWx0KSh7Z3V0dGVyczpmdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtyZXR1cm4oMCxhLmRlZmF1bHQpKHtwYWRkaW5nTGVmdDoyKnQudW5pdCxwYWRkaW5nUmlnaHQ6Mip0LnVuaXR9LG4sKDAsby5kZWZhdWx0KSh7fSxlLnVwKFwic21cIiksKDAsYS5kZWZhdWx0KSh7cGFkZGluZ0xlZnQ6Myp0LnVuaXQscGFkZGluZ1JpZ2h0OjMqdC51bml0fSxuW2UudXAoXCJzbVwiKV0pKSl9LHRvb2xiYXI6KHI9e21pbkhlaWdodDo1Nn0sKDAsby5kZWZhdWx0KShyLFwiXCIuY29uY2F0KGUudXAoXCJ4c1wiKSxcIiBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpXCIpLHttaW5IZWlnaHQ6NDh9KSwoMCxvLmRlZmF1bHQpKHIsZS51cChcInNtXCIpLHttaW5IZWlnaHQ6NjR9KSxyKX0sbil9O3ZhciBvPXIobig5KSksYT1yKG4oNCkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wcmltYXJ5LG49dm9pZCAwPT09dD97bGlnaHQ6bC5kZWZhdWx0WzMwMF0sbWFpbjpsLmRlZmF1bHRbNTAwXSxkYXJrOmwuZGVmYXVsdFs3MDBdfTp0LHI9ZS5zZWNvbmRhcnksaD12b2lkIDA9PT1yP3tsaWdodDpzLmRlZmF1bHQuQTIwMCxtYWluOnMuZGVmYXVsdC5BNDAwLGRhcms6cy5kZWZhdWx0LkE3MDB9OnIsYj1lLmVycm9yLHk9dm9pZCAwPT09Yj97bGlnaHQ6Yy5kZWZhdWx0WzMwMF0sbWFpbjpjLmRlZmF1bHRbNTAwXSxkYXJrOmMuZGVmYXVsdFs3MDBdfTpiLHY9ZS50eXBlLFM9dm9pZCAwPT09dj9cImxpZ2h0XCI6dixFPWUuY29udHJhc3RUaHJlc2hvbGQseD12b2lkIDA9PT1FPzM6RSx3PWUudG9uYWxPZmZzZXQsaz12b2lkIDA9PT13Py4yOncsXz0oMCxhLmRlZmF1bHQpKGUsW1wicHJpbWFyeVwiLFwic2Vjb25kYXJ5XCIsXCJlcnJvclwiLFwidHlwZVwiLFwiY29udHJhc3RUaHJlc2hvbGRcIixcInRvbmFsT2Zmc2V0XCJdKTtmdW5jdGlvbiBUKGUpe3ZhciB0PSgwLHAuZ2V0Q29udHJhc3RSYXRpbykoZSxtLnRleHQucHJpbWFyeSk+PXg/bS50ZXh0LnByaW1hcnk6Zi50ZXh0LnByaW1hcnk7cmV0dXJuIHR9ZnVuY3Rpb24gQShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NTAwLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjMwMCxyPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTo3MDA7cmV0dXJuIWUubWFpbiYmZVt0XSYmKGUubWFpbj1lW3RdKSxnKGUsXCJsaWdodFwiLG4sayksZyhlLFwiZGFya1wiLHIsayksZS5jb250cmFzdFRleHR8fChlLmNvbnRyYXN0VGV4dD1UKGUubWFpbikpLGV9QShuKSxBKGgsXCJBNDAwXCIsXCJBMjAwXCIsXCJBNzAwXCIpLEEoeSk7dmFyIEM9e2Rhcms6bSxsaWdodDpmfTtyZXR1cm4oMCxpLmRlZmF1bHQpKCgwLG8uZGVmYXVsdCkoe2NvbW1vbjpkLmRlZmF1bHQsdHlwZTpTLHByaW1hcnk6bixzZWNvbmRhcnk6aCxlcnJvcjp5LGdyZXk6dS5kZWZhdWx0LGNvbnRyYXN0VGhyZXNob2xkOngsZ2V0Q29udHJhc3RUZXh0OlQsYXVnbWVudENvbG9yOkEsdG9uYWxPZmZzZXQ6a30sQ1tTXSksXyx7Y2xvbmU6ITF9KX0sdC5kYXJrPXQubGlnaHQ9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9KHIobigxNykpLHIobig0OSkpKSxsPXIobigxMjIpKSxzPXIobigxMjMpKSx1PXIobigxMjQpKSxjPXIobigxMjUpKSxkPXIobigxMjYpKSxwPW4oMzEpLGY9e3RleHQ6e3ByaW1hcnk6XCJyZ2JhKDAsIDAsIDAsIDAuODcpXCIsc2Vjb25kYXJ5OlwicmdiYSgwLCAwLCAwLCAwLjU0KVwiLGRpc2FibGVkOlwicmdiYSgwLCAwLCAwLCAwLjM4KVwiLGhpbnQ6XCJyZ2JhKDAsIDAsIDAsIDAuMzgpXCJ9LGRpdmlkZXI6XCJyZ2JhKDAsIDAsIDAsIDAuMTIpXCIsYmFja2dyb3VuZDp7cGFwZXI6ZC5kZWZhdWx0LndoaXRlLGRlZmF1bHQ6dS5kZWZhdWx0WzUwXX0sYWN0aW9uOnthY3RpdmU6XCJyZ2JhKDAsIDAsIDAsIDAuNTQpXCIsaG92ZXI6XCJyZ2JhKDAsIDAsIDAsIDAuMDgpXCIsaG92ZXJPcGFjaXR5Oi4wOCxzZWxlY3RlZDpcInJnYmEoMCwgMCwgMCwgMC4xNClcIixkaXNhYmxlZDpcInJnYmEoMCwgMCwgMCwgMC4yNilcIixkaXNhYmxlZEJhY2tncm91bmQ6XCJyZ2JhKDAsIDAsIDAsIDAuMTIpXCJ9fTt0LmxpZ2h0PWY7dmFyIG09e3RleHQ6e3ByaW1hcnk6ZC5kZWZhdWx0LndoaXRlLHNlY29uZGFyeTpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KVwiLGRpc2FibGVkOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpXCIsaGludDpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KVwiLGljb246XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSlcIn0sZGl2aWRlcjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMilcIixiYWNrZ3JvdW5kOntwYXBlcjp1LmRlZmF1bHRbODAwXSxkZWZhdWx0OlwiIzMwMzAzMFwifSxhY3Rpb246e2FjdGl2ZTpkLmRlZmF1bHQud2hpdGUsaG92ZXI6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSlcIixob3Zlck9wYWNpdHk6LjEsc2VsZWN0ZWQ6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMilcIixkaXNhYmxlZDpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKVwiLGRpc2FibGVkQmFja2dyb3VuZDpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMilcIn19O2Z1bmN0aW9uIGcoZSx0LG4scil7ZVt0XXx8KGUuaGFzT3duUHJvcGVydHkobik/ZVt0XT1lW25dOlwibGlnaHRcIj09PXQ/ZS5saWdodD0oMCxwLmxpZ2h0ZW4pKGUubWFpbixyKTpcImRhcmtcIj09PXQmJihlLmRhcms9KDAscC5kYXJrZW4pKGUubWFpbiwxLjUqcikpKX10LmRhcms9bX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7dmFyIG49XCJmdW5jdGlvblwiPT10eXBlb2YgdD90KGUpOnQscj1uLmZvbnRGYW1pbHksZD12b2lkIDA9PT1yP2M6cixwPW4uZm9udFNpemUsZj12b2lkIDA9PT1wPzE0OnAsbT1uLmZvbnRXZWlnaHRMaWdodCxnPXZvaWQgMD09PW0/MzAwOm0saD1uLmZvbnRXZWlnaHRSZWd1bGFyLGI9dm9pZCAwPT09aD80MDA6aCx5PW4uZm9udFdlaWdodE1lZGl1bSx2PXZvaWQgMD09PXk/NTAwOnksUz1uLmh0bWxGb250U2l6ZSxFPXZvaWQgMD09PVM/MTY6Uyx4PW4udXNlTmV4dFZhcmlhbnRzLHc9dm9pZCAwPT09eD9Cb29sZWFuKGwucG9ueWZpbGxHbG9iYWwuX19NVUlfVVNFX05FWFRfVFlQT0dSQVBIWV9WQVJJQU5UU19fKTp4LGs9KG4uc3VwcHJlc3NXYXJuaW5nLG4uYWxsVmFyaWFudHMpLF89KDAsYS5kZWZhdWx0KShuLFtcImZvbnRGYW1pbHlcIixcImZvbnRTaXplXCIsXCJmb250V2VpZ2h0TGlnaHRcIixcImZvbnRXZWlnaHRSZWd1bGFyXCIsXCJmb250V2VpZ2h0TWVkaXVtXCIsXCJodG1sRm9udFNpemVcIixcInVzZU5leHRWYXJpYW50c1wiLFwic3VwcHJlc3NXYXJuaW5nXCIsXCJhbGxWYXJpYW50c1wiXSk7dmFyIFQ9Zi8xNCxBPWZ1bmN0aW9uKGUpe3JldHVyblwiXCIuY29uY2F0KGUvRSpULFwicmVtXCIpfSxDPWZ1bmN0aW9uKHQsbixyLGEsaSl7cmV0dXJuKDAsby5kZWZhdWx0KSh7Y29sb3I6ZS50ZXh0LnByaW1hcnksZm9udEZhbWlseTpkLGZvbnRXZWlnaHQ6dCxmb250U2l6ZTpBKG4pLGxpbmVIZWlnaHQ6cn0sZD09PWM/e2xldHRlclNwYWNpbmc6XCJcIi5jb25jYXQocyhhL24pLFwiZW1cIil9Ont9LGksayl9LE89e2gxOkMoZyw5NiwxLC0xLjUpLGgyOkMoZyw2MCwxLC0uNSksaDM6QyhiLDQ4LDEuMDQsMCksaDQ6QyhiLDM0LDEuMTcsLjI1KSxoNTpDKGIsMjQsMS4zMywwKSxoNjpDKHYsMjAsMS42LC4xNSksc3VidGl0bGUxOkMoYiwxNiwxLjc1LC4xNSksc3VidGl0bGUyOkModiwxNCwxLjU3LC4xKSxib2R5MU5leHQ6QyhiLDE2LDEuNSwuMTUpLGJvZHkyTmV4dDpDKGIsMTQsMS41LC4xNSksYnV0dG9uTmV4dDpDKHYsMTQsMS43NSwuNCx1KSxjYXB0aW9uTmV4dDpDKGIsMTIsMS42NiwuNCksb3ZlcmxpbmU6QyhiLDEyLDIuNjYsMSx1KX0sST17ZGlzcGxheTQ6KDAsby5kZWZhdWx0KSh7Zm9udFNpemU6QSgxMTIpLGZvbnRXZWlnaHQ6Zyxmb250RmFtaWx5OmQsbGV0dGVyU3BhY2luZzpcIi0uMDRlbVwiLGxpbmVIZWlnaHQ6XCJcIi5jb25jYXQocygxMjgvMTEyKSxcImVtXCIpLG1hcmdpbkxlZnQ6XCItLjA0ZW1cIixjb2xvcjplLnRleHQuc2Vjb25kYXJ5fSxrKSxkaXNwbGF5MzooMCxvLmRlZmF1bHQpKHtmb250U2l6ZTpBKDU2KSxmb250V2VpZ2h0OmIsZm9udEZhbWlseTpkLGxldHRlclNwYWNpbmc6XCItLjAyZW1cIixsaW5lSGVpZ2h0OlwiXCIuY29uY2F0KHMoNzMvNTYpLFwiZW1cIiksbWFyZ2luTGVmdDpcIi0uMDJlbVwiLGNvbG9yOmUudGV4dC5zZWNvbmRhcnl9LGspLGRpc3BsYXkyOigwLG8uZGVmYXVsdCkoe2ZvbnRTaXplOkEoNDUpLGZvbnRXZWlnaHQ6Yixmb250RmFtaWx5OmQsbGluZUhlaWdodDpcIlwiLmNvbmNhdChzKDUxLzQ1KSxcImVtXCIpLG1hcmdpbkxlZnQ6XCItLjAyZW1cIixjb2xvcjplLnRleHQuc2Vjb25kYXJ5fSxrKSxkaXNwbGF5MTooMCxvLmRlZmF1bHQpKHtmb250U2l6ZTpBKDM0KSxmb250V2VpZ2h0OmIsZm9udEZhbWlseTpkLGxpbmVIZWlnaHQ6XCJcIi5jb25jYXQocyg0MS8zNCksXCJlbVwiKSxjb2xvcjplLnRleHQuc2Vjb25kYXJ5fSxrKSxoZWFkbGluZTooMCxvLmRlZmF1bHQpKHtmb250U2l6ZTpBKDI0KSxmb250V2VpZ2h0OmIsZm9udEZhbWlseTpkLGxpbmVIZWlnaHQ6XCJcIi5jb25jYXQocygzMi41LzI0KSxcImVtXCIpLGNvbG9yOmUudGV4dC5wcmltYXJ5fSxrKSx0aXRsZTooMCxvLmRlZmF1bHQpKHtmb250U2l6ZTpBKDIxKSxmb250V2VpZ2h0OnYsZm9udEZhbWlseTpkLGxpbmVIZWlnaHQ6XCJcIi5jb25jYXQocygyNC41LzIxKSxcImVtXCIpLGNvbG9yOmUudGV4dC5wcmltYXJ5fSxrKSxzdWJoZWFkaW5nOigwLG8uZGVmYXVsdCkoe2ZvbnRTaXplOkEoMTYpLGZvbnRXZWlnaHQ6Yixmb250RmFtaWx5OmQsbGluZUhlaWdodDpcIlwiLmNvbmNhdChzKDEuNSksXCJlbVwiKSxjb2xvcjplLnRleHQucHJpbWFyeX0sayksYm9keTI6KDAsby5kZWZhdWx0KSh7Zm9udFNpemU6QSgxNCksZm9udFdlaWdodDp2LGZvbnRGYW1pbHk6ZCxsaW5lSGVpZ2h0OlwiXCIuY29uY2F0KHMoMjQvMTQpLFwiZW1cIiksY29sb3I6ZS50ZXh0LnByaW1hcnl9LGspLGJvZHkxOigwLG8uZGVmYXVsdCkoe2ZvbnRTaXplOkEoMTQpLGZvbnRXZWlnaHQ6Yixmb250RmFtaWx5OmQsbGluZUhlaWdodDpcIlwiLmNvbmNhdChzKDIwLjUvMTQpLFwiZW1cIiksY29sb3I6ZS50ZXh0LnByaW1hcnl9LGspLGNhcHRpb246KDAsby5kZWZhdWx0KSh7Zm9udFNpemU6QSgxMiksZm9udFdlaWdodDpiLGZvbnRGYW1pbHk6ZCxsaW5lSGVpZ2h0OlwiXCIuY29uY2F0KHMoMS4zNzUpLFwiZW1cIiksY29sb3I6ZS50ZXh0LnNlY29uZGFyeX0sayksYnV0dG9uOigwLG8uZGVmYXVsdCkoe2ZvbnRTaXplOkEoMTQpLHRleHRUcmFuc2Zvcm06XCJ1cHBlcmNhc2VcIixmb250V2VpZ2h0OnYsZm9udEZhbWlseTpkLGNvbG9yOmUudGV4dC5wcmltYXJ5fSxrKX07cmV0dXJuKDAsaS5kZWZhdWx0KSgoMCxvLmRlZmF1bHQpKHtweFRvUmVtOkEscm91bmQ6cyxmb250RmFtaWx5OmQsZm9udFNpemU6Zixmb250V2VpZ2h0TGlnaHQ6Zyxmb250V2VpZ2h0UmVndWxhcjpiLGZvbnRXZWlnaHRNZWRpdW06dn0sSSxPLHc/e2JvZHkxOk8uYm9keTFOZXh0LGJvZHkyOk8uYm9keTJOZXh0LGJ1dHRvbjpPLmJ1dHRvbk5leHQsY2FwdGlvbjpPLmNhcHRpb25OZXh0fTp7fSx7dXNlTmV4dFZhcmlhbnRzOnd9KSxfLHtjbG9uZTohMX0pfTt2YXIgbz1yKG4oNCkpLGE9cihuKDUpKSxpPXIobig0OSkpLGw9KHIobigxNykpLG4oNykpO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIE1hdGgucm91bmQoMWU1KmUpLzFlNX12YXIgdT17dGV4dFRyYW5zZm9ybTpcInVwcGVyY2FzZVwifSxjPSdcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWYnfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj0uMixvPS4xNCxhPS4xMjtmdW5jdGlvbiBpKCl7cmV0dXJuW1wiXCIuY29uY2F0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxcInB4IFwiKS5jb25jYXQoYXJndW1lbnRzLmxlbmd0aDw9MT92b2lkIDA6YXJndW1lbnRzWzFdLFwicHggXCIpLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoPD0yP3ZvaWQgMDphcmd1bWVudHNbMl0sXCJweCBcIikuY29uY2F0KGFyZ3VtZW50cy5sZW5ndGg8PTM/dm9pZCAwOmFyZ3VtZW50c1szXSxcInB4IHJnYmEoMCwwLDAsXCIpLmNvbmNhdChyLFwiKVwiKSxcIlwiLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoPD00P3ZvaWQgMDphcmd1bWVudHNbNF0sXCJweCBcIikuY29uY2F0KGFyZ3VtZW50cy5sZW5ndGg8PTU/dm9pZCAwOmFyZ3VtZW50c1s1XSxcInB4IFwiKS5jb25jYXQoYXJndW1lbnRzLmxlbmd0aDw9Nj92b2lkIDA6YXJndW1lbnRzWzZdLFwicHggXCIpLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoPD03P3ZvaWQgMDphcmd1bWVudHNbN10sXCJweCByZ2JhKDAsMCwwLFwiKS5jb25jYXQobyxcIilcIiksXCJcIi5jb25jYXQoYXJndW1lbnRzLmxlbmd0aDw9OD92b2lkIDA6YXJndW1lbnRzWzhdLFwicHggXCIpLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoPD05P3ZvaWQgMDphcmd1bWVudHNbOV0sXCJweCBcIikuY29uY2F0KGFyZ3VtZW50cy5sZW5ndGg8PTEwP3ZvaWQgMDphcmd1bWVudHNbMTBdLFwicHggXCIpLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoPD0xMT92b2lkIDA6YXJndW1lbnRzWzExXSxcInB4IHJnYmEoMCwwLDAsXCIpLmNvbmNhdChhLFwiKVwiKV0uam9pbihcIixcIil9dmFyIGw9W1wibm9uZVwiLGkoMCwxLDMsMCwwLDEsMSwwLDAsMiwxLC0xKSxpKDAsMSw1LDAsMCwyLDIsMCwwLDMsMSwtMiksaSgwLDEsOCwwLDAsMyw0LDAsMCwzLDMsLTIpLGkoMCwyLDQsLTEsMCw0LDUsMCwwLDEsMTAsMCksaSgwLDMsNSwtMSwwLDUsOCwwLDAsMSwxNCwwKSxpKDAsMyw1LC0xLDAsNiwxMCwwLDAsMSwxOCwwKSxpKDAsNCw1LC0yLDAsNywxMCwxLDAsMiwxNiwxKSxpKDAsNSw1LC0zLDAsOCwxMCwxLDAsMywxNCwyKSxpKDAsNSw2LC0zLDAsOSwxMiwxLDAsMywxNiwyKSxpKDAsNiw2LC0zLDAsMTAsMTQsMSwwLDQsMTgsMyksaSgwLDYsNywtNCwwLDExLDE1LDEsMCw0LDIwLDMpLGkoMCw3LDgsLTQsMCwxMiwxNywyLDAsNSwyMiw0KSxpKDAsNyw4LC00LDAsMTMsMTksMiwwLDUsMjQsNCksaSgwLDcsOSwtNCwwLDE0LDIxLDIsMCw1LDI2LDQpLGkoMCw4LDksLTUsMCwxNSwyMiwyLDAsNiwyOCw1KSxpKDAsOCwxMCwtNSwwLDE2LDI0LDIsMCw2LDMwLDUpLGkoMCw4LDExLC01LDAsMTcsMjYsMiwwLDYsMzIsNSksaSgwLDksMTEsLTUsMCwxOCwyOCwyLDAsNywzNCw2KSxpKDAsOSwxMiwtNiwwLDE5LDI5LDIsMCw3LDM2LDYpLGkoMCwxMCwxMywtNiwwLDIwLDMxLDMsMCw4LDM4LDcpLGkoMCwxMCwxMywtNiwwLDIxLDMzLDMsMCw4LDQwLDcpLGkoMCwxMCwxNCwtNiwwLDIyLDM1LDMsMCw4LDQyLDcpLGkoMCwxMSwxNCwtNywwLDIzLDM2LDMsMCw5LDQ0LDgpLGkoMCwxMSwxNSwtNywwLDI0LDM4LDMsMCw5LDQ2LDgpXTt0LmRlZmF1bHQ9bH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9e2JvcmRlclJhZGl1czo0fTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9e3VuaXQ6OH07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXttb2JpbGVTdGVwcGVyOjFlMyxhcHBCYXI6MTEwMCxkcmF3ZXI6MTIwMCxtb2RhbDoxMzAwLHNuYWNrYmFyOjE0MDAsdG9vbHRpcDoxNTAwfTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9KHIobigyOSkpLHIobigxNykpLHIobig0OSkpKTtmdW5jdGlvbiBpKGUsdCl7cmV0dXJuIHR9dmFyIGw9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgZTtyZXR1cm57Y3JlYXRlOmZ1bmN0aW9uKG4scil7dmFyIGw9dD9lKG4pOmU7aWYoIXJ8fCFuLm92ZXJyaWRlc3x8IW4ub3ZlcnJpZGVzW3JdKXJldHVybiBsO3ZhciBzPW4ub3ZlcnJpZGVzW3JdLHU9KDAsby5kZWZhdWx0KSh7fSxsKTtyZXR1cm4gT2JqZWN0LmtleXMocykuZm9yRWFjaChmdW5jdGlvbihlKXt1W2VdPSgwLGEuZGVmYXVsdCkodVtlXSxzW2VdLHthcnJheU1lcmdlOml9KX0pLHV9LG9wdGlvbnM6e30sdGhlbWluZ0VuYWJsZWQ6dH19O3QuZGVmYXVsdD1sfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj1mdW5jdGlvbihlKXt2YXIgdD1lLnRoZW1lLG49ZS5uYW1lLHI9ZS5wcm9wcztpZighdC5wcm9wc3x8IW58fCF0LnByb3BzW25dKXJldHVybiByO3ZhciBvLGE9dC5wcm9wc1tuXTtmb3IobyBpbiBhKXZvaWQgMD09PXJbb10mJihyW29dPWFbb10pO3JldHVybiByfTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMTIpKSxzPXIobigxMykpLHU9cihuKDE0KSksYz1yKG4oMTUpKSxkPXIobigxNikpLHA9cihuKDApKSxmPShyKG4oMSkpLHIobig2KSkpLG09KHIobigxNykpLG4oNykscihuKDQwNykpKSxnPXIobig4KSksaD1uKDMxKSxiPShyKG4oNDE1KSksbigyMSkpO24oMTA4KTt2YXIgeT1mdW5jdGlvbihlKXt2YXIgdD1cImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT9lLnBhbGV0dGUuZ3JleVszMDBdOmUucGFsZXR0ZS5ncmV5WzcwMF0sbj0oMCxoLmZhZGUpKGUucGFsZXR0ZS50ZXh0LnByaW1hcnksLjI2KTtyZXR1cm57cm9vdDp7Zm9udEZhbWlseTplLnR5cG9ncmFwaHkuZm9udEZhbWlseSxmb250U2l6ZTplLnR5cG9ncmFwaHkucHhUb1JlbSgxMyksZGlzcGxheTpcImlubGluZS1mbGV4XCIsYWxpZ25JdGVtczpcImNlbnRlclwiLGp1c3RpZnlDb250ZW50OlwiY2VudGVyXCIsaGVpZ2h0OjMyLGNvbG9yOmUucGFsZXR0ZS5nZXRDb250cmFzdFRleHQodCksYmFja2dyb3VuZENvbG9yOnQsYm9yZGVyUmFkaXVzOjE2LHdoaXRlU3BhY2U6XCJub3dyYXBcIix0cmFuc2l0aW9uOmUudHJhbnNpdGlvbnMuY3JlYXRlKFtcImJhY2tncm91bmQtY29sb3JcIixcImJveC1zaGFkb3dcIl0pLGN1cnNvcjpcImRlZmF1bHRcIixvdXRsaW5lOlwibm9uZVwiLHRleHREZWNvcmF0aW9uOlwibm9uZVwiLGJvcmRlcjpcIm5vbmVcIixwYWRkaW5nOjAsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwiLGJveFNpemluZzpcImJvcmRlci1ib3hcIn0sY29sb3JQcmltYXJ5OntiYWNrZ3JvdW5kQ29sb3I6ZS5wYWxldHRlLnByaW1hcnkubWFpbixjb2xvcjplLnBhbGV0dGUucHJpbWFyeS5jb250cmFzdFRleHR9LGNvbG9yU2Vjb25kYXJ5OntiYWNrZ3JvdW5kQ29sb3I6ZS5wYWxldHRlLnNlY29uZGFyeS5tYWluLGNvbG9yOmUucGFsZXR0ZS5zZWNvbmRhcnkuY29udHJhc3RUZXh0fSxjbGlja2FibGU6e1dlYmtpdFRhcEhpZ2hsaWdodENvbG9yOlwidHJhbnNwYXJlbnRcIixjdXJzb3I6XCJwb2ludGVyXCIsXCImOmhvdmVyLCAmOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjooMCxoLmVtcGhhc2l6ZSkodCwuMDgpfSxcIiY6YWN0aXZlXCI6e2JveFNoYWRvdzplLnNoYWRvd3NbMV0sYmFja2dyb3VuZENvbG9yOigwLGguZW1waGFzaXplKSh0LC4xMil9fSxjbGlja2FibGVDb2xvclByaW1hcnk6e1wiJjpob3ZlciwgJjpmb2N1c1wiOntiYWNrZ3JvdW5kQ29sb3I6KDAsaC5lbXBoYXNpemUpKGUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sLjA4KX0sXCImOmFjdGl2ZVwiOntiYWNrZ3JvdW5kQ29sb3I6KDAsaC5lbXBoYXNpemUpKGUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sLjEyKX19LGNsaWNrYWJsZUNvbG9yU2Vjb25kYXJ5OntcIiY6aG92ZXIsICY6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOigwLGguZW1waGFzaXplKShlLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW4sLjA4KX0sXCImOmFjdGl2ZVwiOntiYWNrZ3JvdW5kQ29sb3I6KDAsaC5lbXBoYXNpemUpKGUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbiwuMTIpfX0sZGVsZXRhYmxlOntcIiY6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOigwLGguZW1waGFzaXplKSh0LC4wOCl9fSxkZWxldGFibGVDb2xvclByaW1hcnk6e1wiJjpmb2N1c1wiOntiYWNrZ3JvdW5kQ29sb3I6KDAsaC5lbXBoYXNpemUpKGUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sLjIpfX0sZGVsZXRhYmxlQ29sb3JTZWNvbmRhcnk6e1wiJjpmb2N1c1wiOntiYWNrZ3JvdW5kQ29sb3I6KDAsaC5lbXBoYXNpemUpKGUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbiwuMil9fSxvdXRsaW5lZDp7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIixib3JkZXI6XCIxcHggc29saWQgXCIuY29uY2F0KFwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlP1wicmdiYSgwLCAwLCAwLCAwLjIzKVwiOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIzKVwiKSxcIiRjbGlja2FibGUmOmhvdmVyLCAkY2xpY2thYmxlJjpmb2N1cywgJGRlbGV0YWJsZSY6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOigwLGguZmFkZSkoZS5wYWxldHRlLnRleHQucHJpbWFyeSxlLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSl9LFwiJiAkYXZhdGFyXCI6e21hcmdpbkxlZnQ6LTF9fSxvdXRsaW5lZFByaW1hcnk6e2NvbG9yOmUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sYm9yZGVyOlwiMXB4IHNvbGlkIFwiLmNvbmNhdChlLnBhbGV0dGUucHJpbWFyeS5tYWluKSxcIiRjbGlja2FibGUmOmhvdmVyLCAkY2xpY2thYmxlJjpmb2N1cywgJGRlbGV0YWJsZSY6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOigwLGguZmFkZSkoZS5wYWxldHRlLnByaW1hcnkubWFpbixlLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSl9fSxvdXRsaW5lZFNlY29uZGFyeTp7Y29sb3I6ZS5wYWxldHRlLnNlY29uZGFyeS5tYWluLGJvcmRlcjpcIjFweCBzb2xpZCBcIi5jb25jYXQoZS5wYWxldHRlLnNlY29uZGFyeS5tYWluKSxcIiRjbGlja2FibGUmOmhvdmVyLCAkY2xpY2thYmxlJjpmb2N1cywgJGRlbGV0YWJsZSY6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOigwLGguZmFkZSkoZS5wYWxldHRlLnNlY29uZGFyeS5tYWluLGUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KX19LGF2YXRhcjp7bWFyZ2luUmlnaHQ6LTQsd2lkdGg6MzIsaGVpZ2h0OjMyLGNvbG9yOlwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlP2UucGFsZXR0ZS5ncmV5WzcwMF06ZS5wYWxldHRlLmdyZXlbMzAwXSxmb250U2l6ZTplLnR5cG9ncmFwaHkucHhUb1JlbSgxNil9LGF2YXRhckNvbG9yUHJpbWFyeTp7Y29sb3I6ZS5wYWxldHRlLnByaW1hcnkuY29udHJhc3RUZXh0LGJhY2tncm91bmRDb2xvcjplLnBhbGV0dGUucHJpbWFyeS5kYXJrfSxhdmF0YXJDb2xvclNlY29uZGFyeTp7Y29sb3I6ZS5wYWxldHRlLnNlY29uZGFyeS5jb250cmFzdFRleHQsYmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5zZWNvbmRhcnkuZGFya30sYXZhdGFyQ2hpbGRyZW46e3dpZHRoOjE5LGhlaWdodDoxOX0saWNvbjp7Y29sb3I6XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/ZS5wYWxldHRlLmdyZXlbNzAwXTplLnBhbGV0dGUuZ3JleVszMDBdLG1hcmdpbkxlZnQ6NCxtYXJnaW5SaWdodDotOH0saWNvbkNvbG9yUHJpbWFyeTp7Y29sb3I6XCJpbmhlcml0XCJ9LGljb25Db2xvclNlY29uZGFyeTp7Y29sb3I6XCJpbmhlcml0XCJ9LGxhYmVsOntkaXNwbGF5OlwiZmxleFwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIixwYWRkaW5nTGVmdDoxMixwYWRkaW5nUmlnaHQ6MTIsdXNlclNlbGVjdDpcIm5vbmVcIix3aGl0ZVNwYWNlOlwibm93cmFwXCIsY3Vyc29yOlwiaW5oZXJpdFwifSxkZWxldGVJY29uOntXZWJraXRUYXBIaWdobGlnaHRDb2xvcjpcInRyYW5zcGFyZW50XCIsY29sb3I6bixjdXJzb3I6XCJwb2ludGVyXCIsaGVpZ2h0OlwiYXV0b1wiLG1hcmdpbjpcIjAgNHB4IDAgLThweFwiLFwiJjpob3ZlclwiOntjb2xvcjooMCxoLmZhZGUpKG4sLjQpfX0sZGVsZXRlSWNvbkNvbG9yUHJpbWFyeTp7Y29sb3I6KDAsaC5mYWRlKShlLnBhbGV0dGUucHJpbWFyeS5jb250cmFzdFRleHQsLjcpLFwiJjpob3ZlciwgJjphY3RpdmVcIjp7Y29sb3I6ZS5wYWxldHRlLnByaW1hcnkuY29udHJhc3RUZXh0fX0sZGVsZXRlSWNvbkNvbG9yU2Vjb25kYXJ5Ontjb2xvcjooMCxoLmZhZGUpKGUucGFsZXR0ZS5zZWNvbmRhcnkuY29udHJhc3RUZXh0LC43KSxcIiY6aG92ZXIsICY6YWN0aXZlXCI6e2NvbG9yOmUucGFsZXR0ZS5zZWNvbmRhcnkuY29udHJhc3RUZXh0fX0sZGVsZXRlSWNvbk91dGxpbmVkQ29sb3JQcmltYXJ5Ontjb2xvcjooMCxoLmZhZGUpKGUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sLjcpLFwiJjpob3ZlciwgJjphY3RpdmVcIjp7Y29sb3I6ZS5wYWxldHRlLnByaW1hcnkubWFpbn19LGRlbGV0ZUljb25PdXRsaW5lZENvbG9yU2Vjb25kYXJ5Ontjb2xvcjooMCxoLmZhZGUpKGUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbiwuNyksXCImOmhvdmVyLCAmOmFjdGl2ZVwiOntjb2xvcjplLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW59fX19O3Quc3R5bGVzPXk7dmFyIHY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47KDAsbC5kZWZhdWx0KSh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7YSsrKW9bYV09YXJndW1lbnRzW2FdO3JldHVybihuPSgwLHUuZGVmYXVsdCkodGhpcywoZT0oMCxjLmRlZmF1bHQpKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKS5oYW5kbGVEZWxldGVJY29uQ2xpY2s9ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgdD1uLnByb3BzLm9uRGVsZXRlO3QmJnQoZSl9LG4uaGFuZGxlS2V5RG93bj1mdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLm9uS2V5RG93bjtpZih0JiZ0KGUpLGUuY3VycmVudFRhcmdldD09PWUudGFyZ2V0KXt2YXIgcj1lLmtleTtcIiBcIiE9PXImJlwiRW50ZXJcIiE9PXImJlwiQmFja3NwYWNlXCIhPT1yJiZcIkVzY2FwZVwiIT09cnx8ZS5wcmV2ZW50RGVmYXVsdCgpfX0sbi5oYW5kbGVLZXlVcD1mdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLHI9dC5vbkNsaWNrLG89dC5vbkRlbGV0ZSxhPXQub25LZXlVcDtpZihhJiZhKGUpLGUuY3VycmVudFRhcmdldD09PWUudGFyZ2V0KXt2YXIgaT1lLmtleTshcnx8XCIgXCIhPT1pJiZcIkVudGVyXCIhPT1pP28mJlwiQmFja3NwYWNlXCI9PT1pP28oZSk6XCJFc2NhcGVcIj09PWkmJm4uY2hpcFJlZiYmbi5jaGlwUmVmLmJsdXIoKTpyKGUpfX0sbn1yZXR1cm4oMCxkLmRlZmF1bHQpKHQsZSksKDAscy5kZWZhdWx0KSh0LFt7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMsbj10aGlzLnByb3BzLHI9bi5hdmF0YXIsbD1uLmNsYXNzZXMscz1uLmNsYXNzTmFtZSx1PW4uY2xpY2thYmxlLGM9bi5jb2xvcixkPW4uY29tcG9uZW50LGc9bi5kZWxldGVJY29uLGg9bi5pY29uLHk9bi5sYWJlbCx2PW4ub25DbGljayxTPW4ub25EZWxldGUsRT0obi5vbktleURvd24sbi5vbktleVVwLG4udGFiSW5kZXgpLHg9bi52YXJpYW50LHc9KDAsaS5kZWZhdWx0KShuLFtcImF2YXRhclwiLFwiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjbGlja2FibGVcIixcImNvbG9yXCIsXCJjb21wb25lbnRcIixcImRlbGV0ZUljb25cIixcImljb25cIixcImxhYmVsXCIsXCJvbkNsaWNrXCIsXCJvbkRlbGV0ZVwiLFwib25LZXlEb3duXCIsXCJvbktleVVwXCIsXCJ0YWJJbmRleFwiLFwidmFyaWFudFwiXSksaz0hKCExPT09dXx8IXYpfHx1LF89KDAsZi5kZWZhdWx0KShsLnJvb3QsKGU9e30sKDAsYS5kZWZhdWx0KShlLGxbXCJjb2xvclwiLmNvbmNhdCgoMCxiLmNhcGl0YWxpemUpKGMpKV0sXCJkZWZhdWx0XCIhPT1jKSwoMCxhLmRlZmF1bHQpKGUsbC5jbGlja2FibGUsayksKDAsYS5kZWZhdWx0KShlLGxbXCJjbGlja2FibGVDb2xvclwiLmNvbmNhdCgoMCxiLmNhcGl0YWxpemUpKGMpKV0sayYmXCJkZWZhdWx0XCIhPT1jKSwoMCxhLmRlZmF1bHQpKGUsbC5kZWxldGFibGUsUyksKDAsYS5kZWZhdWx0KShlLGxbXCJkZWxldGFibGVDb2xvclwiLmNvbmNhdCgoMCxiLmNhcGl0YWxpemUpKGMpKV0sUyYmXCJkZWZhdWx0XCIhPT1jKSwoMCxhLmRlZmF1bHQpKGUsbC5vdXRsaW5lZCxcIm91dGxpbmVkXCI9PT14KSwoMCxhLmRlZmF1bHQpKGUsbC5vdXRsaW5lZFByaW1hcnksXCJvdXRsaW5lZFwiPT09eCYmXCJwcmltYXJ5XCI9PT1jKSwoMCxhLmRlZmF1bHQpKGUsbC5vdXRsaW5lZFNlY29uZGFyeSxcIm91dGxpbmVkXCI9PT14JiZcInNlY29uZGFyeVwiPT09YyksZSkscyksVD1udWxsO2lmKFMpe3ZhciBBLEM9KEE9e30sKDAsYS5kZWZhdWx0KShBLGxbXCJkZWxldGVJY29uQ29sb3JcIi5jb25jYXQoKDAsYi5jYXBpdGFsaXplKShjKSldLFwiZGVmYXVsdFwiIT09YyYmXCJvdXRsaW5lZFwiIT09eCksKDAsYS5kZWZhdWx0KShBLGxbXCJkZWxldGVJY29uT3V0bGluZWRDb2xvclwiLmNvbmNhdCgoMCxiLmNhcGl0YWxpemUpKGMpKV0sXCJkZWZhdWx0XCIhPT1jJiZcIm91dGxpbmVkXCI9PT14KSxBKTtUPWcmJnAuZGVmYXVsdC5pc1ZhbGlkRWxlbWVudChnKT9wLmRlZmF1bHQuY2xvbmVFbGVtZW50KGcse2NsYXNzTmFtZTooMCxmLmRlZmF1bHQpKGcucHJvcHMuY2xhc3NOYW1lLGwuZGVsZXRlSWNvbixDKSxvbkNsaWNrOnRoaXMuaGFuZGxlRGVsZXRlSWNvbkNsaWNrfSk6cC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobS5kZWZhdWx0LHtjbGFzc05hbWU6KDAsZi5kZWZhdWx0KShsLmRlbGV0ZUljb24sQyksb25DbGljazp0aGlzLmhhbmRsZURlbGV0ZUljb25DbGlja30pfXZhciBPPW51bGw7ciYmcC5kZWZhdWx0LmlzVmFsaWRFbGVtZW50KHIpJiYoTz1wLmRlZmF1bHQuY2xvbmVFbGVtZW50KHIse2NsYXNzTmFtZTooMCxmLmRlZmF1bHQpKGwuYXZhdGFyLHIucHJvcHMuY2xhc3NOYW1lLCgwLGEuZGVmYXVsdCkoe30sbFtcImF2YXRhckNvbG9yXCIuY29uY2F0KCgwLGIuY2FwaXRhbGl6ZSkoYykpXSxcImRlZmF1bHRcIiE9PWMpKSxjaGlsZHJlbkNsYXNzTmFtZTooMCxmLmRlZmF1bHQpKGwuYXZhdGFyQ2hpbGRyZW4sci5wcm9wcy5jaGlsZHJlbkNsYXNzTmFtZSl9KSk7dmFyIEk9bnVsbDtoJiZwLmRlZmF1bHQuaXNWYWxpZEVsZW1lbnQoaCkmJihJPXAuZGVmYXVsdC5jbG9uZUVsZW1lbnQoaCx7Y2xhc3NOYW1lOigwLGYuZGVmYXVsdCkobC5pY29uLGgucHJvcHMuY2xhc3NOYW1lLCgwLGEuZGVmYXVsdCkoe30sbFtcImljb25Db2xvclwiLmNvbmNhdCgoMCxiLmNhcGl0YWxpemUpKGMpKV0sXCJkZWZhdWx0XCIhPT1jKSl9KSk7dmFyIE49RTtyZXR1cm4gTnx8KE49dnx8U3x8az8wOi0xKSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLCgwLG8uZGVmYXVsdCkoe3JvbGU6XCJidXR0b25cIixjbGFzc05hbWU6Xyx0YWJJbmRleDpOLG9uQ2xpY2s6dixvbktleURvd246dGhpcy5oYW5kbGVLZXlEb3duLG9uS2V5VXA6dGhpcy5oYW5kbGVLZXlVcCxyZWY6ZnVuY3Rpb24oZSl7dC5jaGlwUmVmPWV9fSx3KSxPfHxJLHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6bC5sYWJlbH0seSksVCl9fV0pLHR9KHAuZGVmYXVsdC5Db21wb25lbnQpO3YuZGVmYXVsdFByb3BzPXtjb21wb25lbnQ6XCJkaXZcIixjb2xvcjpcImRlZmF1bHRcIix2YXJpYW50OlwiZGVmYXVsdFwifTt2YXIgUz0oMCxnLmRlZmF1bHQpKHkse25hbWU6XCJNdWlDaGlwXCJ9KSh2KTt0LmRlZmF1bHQ9U30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oMCkpLGE9cihuKDEyOSkpLGk9cihuKDUwKSksbD1vLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIix7ZDpcIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem01IDEzLjU5TDE1LjU5IDE3IDEyIDEzLjQxIDguNDEgMTcgNyAxNS41OSAxMC41OSAxMiA3IDguNDEgOC40MSA3IDEyIDEwLjU5IDE1LjU5IDcgMTcgOC40MSAxMy40MSAxMiAxNyAxNS41OXpcIn0pLHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KGkuZGVmYXVsdCxlLGwpfTsocz0oMCxhLmRlZmF1bHQpKHMpKS5tdWlOYW1lPVwiU3ZnSWNvblwiO3ZhciB1PXM7dC5kZWZhdWx0PXV9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobig0MDkpKSxhPW4oMCksaT0ocihuKDEzMCkpLHIobigxMzEpKSxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49KDAsYS5jcmVhdGVGYWN0b3J5KSh0KTtyZXR1cm4gZnVuY3Rpb24odCl7ZnVuY3Rpb24gcigpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc30oMCxvLmRlZmF1bHQpKHIsdCk7dmFyIGE9ci5wcm90b3R5cGU7cmV0dXJuIGEuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBlKHRoaXMucHJvcHMsdCl9LGEucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5wcm9wcyl9LHJ9KGEuQ29tcG9uZW50KX19KTt0LmRlZmF1bHQ9aX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUuX19wcm90b19fPXR9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG5bZV09dCxufX07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOmU/ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxcIkNvbXBvbmVudFwiOnZvaWQgMH07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobig0MTMpKS5kZWZhdWx0O3QuZGVmYXVsdD1vfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBvKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwwIT09dHx8MS9lPT0xL3Q6ZSE9ZSYmdCE9dH1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihvKGUsdCkpcmV0dXJuITA7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGV8fG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSksYT1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PWEubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKWlmKCFyLmNhbGwodCxuW2ldKXx8IW8oZVtuW2ldXSx0W25baV1dKSlyZXR1cm4hMTtyZXR1cm4hMH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KG4oNykscihuKDgpKSksYz1uKDIxKSxkPWZ1bmN0aW9uKGUpe3JldHVybntyb290Ont1c2VyU2VsZWN0Olwibm9uZVwiLHdpZHRoOlwiMWVtXCIsaGVpZ2h0OlwiMWVtXCIsZGlzcGxheTpcImlubGluZS1ibG9ja1wiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixmbGV4U2hyaW5rOjAsZm9udFNpemU6MjQsdHJhbnNpdGlvbjplLnRyYW5zaXRpb25zLmNyZWF0ZShcImZpbGxcIix7ZHVyYXRpb246ZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVyfSl9LGNvbG9yUHJpbWFyeTp7Y29sb3I6ZS5wYWxldHRlLnByaW1hcnkubWFpbn0sY29sb3JTZWNvbmRhcnk6e2NvbG9yOmUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbn0sY29sb3JBY3Rpb246e2NvbG9yOmUucGFsZXR0ZS5hY3Rpb24uYWN0aXZlfSxjb2xvckVycm9yOntjb2xvcjplLnBhbGV0dGUuZXJyb3IubWFpbn0sY29sb3JEaXNhYmxlZDp7Y29sb3I6ZS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZH0sZm9udFNpemVJbmhlcml0Ontmb250U2l6ZTpcImluaGVyaXRcIn0sZm9udFNpemVTbWFsbDp7Zm9udFNpemU6MjB9LGZvbnRTaXplTGFyZ2U6e2ZvbnRTaXplOjM1fX19O2Z1bmN0aW9uIHAoZSl7dmFyIHQsbj1lLmNoaWxkcmVuLHI9ZS5jbGFzc2VzLHU9ZS5jbGFzc05hbWUsZD1lLmNvbG9yLHA9ZS5jb21wb25lbnQsZj1lLmZvbnRTaXplLG09ZS5uYXRpdmVDb2xvcixnPWUudGl0bGVBY2Nlc3MsaD1lLnZpZXdCb3gsYj0oMCxpLmRlZmF1bHQpKGUsW1wiY2hpbGRyZW5cIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29sb3JcIixcImNvbXBvbmVudFwiLFwiZm9udFNpemVcIixcIm5hdGl2ZUNvbG9yXCIsXCJ0aXRsZUFjY2Vzc1wiLFwidmlld0JveFwiXSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHAsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoci5yb290LCh0PXt9LCgwLGEuZGVmYXVsdCkodCxyW1wiY29sb3JcIi5jb25jYXQoKDAsYy5jYXBpdGFsaXplKShkKSldLFwiaW5oZXJpdFwiIT09ZCksKDAsYS5kZWZhdWx0KSh0LHJbXCJmb250U2l6ZVwiLmNvbmNhdCgoMCxjLmNhcGl0YWxpemUpKGYpKV0sXCJkZWZhdWx0XCIhPT1mKSx0KSx1KSxmb2N1c2FibGU6XCJmYWxzZVwiLHZpZXdCb3g6aCxjb2xvcjptLFwiYXJpYS1oaWRkZW5cIjpnP1wiZmFsc2VcIjpcInRydWVcIixyb2xlOmc/XCJpbWdcIjpcInByZXNlbnRhdGlvblwifSxiKSxuLGc/bC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJ0aXRsZVwiLG51bGwsZyk6bnVsbCl9dC5zdHlsZXM9ZCxwLmRlZmF1bHRQcm9wcz17Y29sb3I6XCJpbmhlcml0XCIsY29tcG9uZW50Olwic3ZnXCIsZm9udFNpemU6XCJkZWZhdWx0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwifSxwLm11aU5hbWU9XCJTdmdJY29uXCI7dmFyIGY9KDAsdS5kZWZhdWx0KShkLHtuYW1lOlwiTXVpU3ZnSWNvblwifSkocCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIG51bGx9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigxMikpLHM9cihuKDEzKSksdT1yKG4oMTQpKSxjPXIobigxNSkpLGQ9cihuKDE2KSkscD1yKG4oMCkpLGY9cihuKDYpKSxtPShyKG4oMSkpLHIobig1MSkpKSxnPShuKDcpLHIobig4KSkpLGg9big2OCksYj1uKDcwKSx5PWZ1bmN0aW9uKGUpe3JldHVybntjb250YWluZXI6e2hlaWdodDowLG92ZXJmbG93OlwiaGlkZGVuXCIsdHJhbnNpdGlvbjplLnRyYW5zaXRpb25zLmNyZWF0ZShcImhlaWdodFwiKX0sZW50ZXJlZDp7aGVpZ2h0OlwiYXV0b1wiLG92ZXJmbG93OlwidmlzaWJsZVwifSx3cmFwcGVyOntkaXNwbGF5OlwiZmxleFwifSx3cmFwcGVySW5uZXI6e3dpZHRoOlwiMTAwJVwifX19O3Quc3R5bGVzPXk7dmFyIHY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47KDAsbC5kZWZhdWx0KSh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7YSsrKW9bYV09YXJndW1lbnRzW2FdO3JldHVybihuPSgwLHUuZGVmYXVsdCkodGhpcywoZT0oMCxjLmRlZmF1bHQpKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKS5oYW5kbGVFbnRlcj1mdW5jdGlvbihlKXtlLnN0eWxlLmhlaWdodD1uLnByb3BzLmNvbGxhcHNlZEhlaWdodCxuLnByb3BzLm9uRW50ZXImJm4ucHJvcHMub25FbnRlcihlKX0sbi5oYW5kbGVFbnRlcmluZz1mdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLHI9dC50aW1lb3V0LG89dC50aGVtZSxhPW4ud3JhcHBlclJlZj9uLndyYXBwZXJSZWYuY2xpZW50SGVpZ2h0OjAsaT0oMCxiLmdldFRyYW5zaXRpb25Qcm9wcykobi5wcm9wcyx7bW9kZTpcImVudGVyXCJ9KS5kdXJhdGlvbjtpZihcImF1dG9cIj09PXIpe3ZhciBsPW8udHJhbnNpdGlvbnMuZ2V0QXV0b0hlaWdodER1cmF0aW9uKGEpO2Uuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPVwiXCIuY29uY2F0KGwsXCJtc1wiKSxuLmF1dG9UcmFuc2l0aW9uRHVyYXRpb249bH1lbHNlIGUuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPVwic3RyaW5nXCI9PXR5cGVvZiBpP2k6XCJcIi5jb25jYXQoaSxcIm1zXCIpO2Uuc3R5bGUuaGVpZ2h0PVwiXCIuY29uY2F0KGEsXCJweFwiKSxuLnByb3BzLm9uRW50ZXJpbmcmJm4ucHJvcHMub25FbnRlcmluZyhlKX0sbi5oYW5kbGVFbnRlcmVkPWZ1bmN0aW9uKGUpe2Uuc3R5bGUuaGVpZ2h0PVwiYXV0b1wiLG4ucHJvcHMub25FbnRlcmVkJiZuLnByb3BzLm9uRW50ZXJlZChlKX0sbi5oYW5kbGVFeGl0PWZ1bmN0aW9uKGUpe3ZhciB0PW4ud3JhcHBlclJlZj9uLndyYXBwZXJSZWYuY2xpZW50SGVpZ2h0OjA7ZS5zdHlsZS5oZWlnaHQ9XCJcIi5jb25jYXQodCxcInB4XCIpLG4ucHJvcHMub25FeGl0JiZuLnByb3BzLm9uRXhpdChlKX0sbi5oYW5kbGVFeGl0aW5nPWZ1bmN0aW9uKGUpe3ZhciB0PW4ucHJvcHMscj10LnRpbWVvdXQsbz10LnRoZW1lLGE9bi53cmFwcGVyUmVmP24ud3JhcHBlclJlZi5jbGllbnRIZWlnaHQ6MCxpPSgwLGIuZ2V0VHJhbnNpdGlvblByb3BzKShuLnByb3BzLHttb2RlOlwiZXhpdFwifSkuZHVyYXRpb247aWYoXCJhdXRvXCI9PT1yKXt2YXIgbD1vLnRyYW5zaXRpb25zLmdldEF1dG9IZWlnaHREdXJhdGlvbihhKTtlLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj1cIlwiLmNvbmNhdChsLFwibXNcIiksbi5hdXRvVHJhbnNpdGlvbkR1cmF0aW9uPWx9ZWxzZSBlLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj1cInN0cmluZ1wiPT10eXBlb2YgaT9pOlwiXCIuY29uY2F0KGksXCJtc1wiKTtlLnN0eWxlLmhlaWdodD1uLnByb3BzLmNvbGxhcHNlZEhlaWdodCxuLnByb3BzLm9uRXhpdGluZyYmbi5wcm9wcy5vbkV4aXRpbmcoZSl9LG4uYWRkRW5kTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtcImF1dG9cIj09PW4ucHJvcHMudGltZW91dCYmKG4udGltZXI9c2V0VGltZW91dCh0LG4uYXV0b1RyYW5zaXRpb25EdXJhdGlvbnx8MCkpfSxufXJldHVybigwLGQuZGVmYXVsdCkodCxlKSwoMCxzLmRlZmF1bHQpKHQsW3trZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmNoaWxkcmVuLHI9dC5jbGFzc2VzLGw9dC5jbGFzc05hbWUscz10LmNvbGxhcHNlZEhlaWdodCx1PXQuY29tcG9uZW50LGM9KHQub25FbnRlcix0Lm9uRW50ZXJlZCx0Lm9uRW50ZXJpbmcsdC5vbkV4aXQsdC5vbkV4aXRpbmcsdC5zdHlsZSksZD0odC50aGVtZSx0LnRpbWVvdXQpLGc9KDAsaS5kZWZhdWx0KSh0LFtcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbGxhcHNlZEhlaWdodFwiLFwiY29tcG9uZW50XCIsXCJvbkVudGVyXCIsXCJvbkVudGVyZWRcIixcIm9uRW50ZXJpbmdcIixcIm9uRXhpdFwiLFwib25FeGl0aW5nXCIsXCJzdHlsZVwiLFwidGhlbWVcIixcInRpbWVvdXRcIl0pO3JldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7b25FbnRlcjp0aGlzLmhhbmRsZUVudGVyLG9uRW50ZXJlZDp0aGlzLmhhbmRsZUVudGVyZWQsb25FbnRlcmluZzp0aGlzLmhhbmRsZUVudGVyaW5nLG9uRXhpdDp0aGlzLmhhbmRsZUV4aXQsb25FeGl0aW5nOnRoaXMuaGFuZGxlRXhpdGluZyxhZGRFbmRMaXN0ZW5lcjp0aGlzLmFkZEVuZExpc3RlbmVyLHRpbWVvdXQ6XCJhdXRvXCI9PT1kP251bGw6ZH0sZyksZnVuY3Rpb24odCxpKXtyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodSwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAsZi5kZWZhdWx0KShyLmNvbnRhaW5lciwoMCxhLmRlZmF1bHQpKHt9LHIuZW50ZXJlZCxcImVudGVyZWRcIj09PXQpLGwpLHN0eWxlOigwLG8uZGVmYXVsdCkoe30sYyx7bWluSGVpZ2h0OnN9KX0saSkscC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOnIud3JhcHBlcixyZWY6ZnVuY3Rpb24odCl7ZS53cmFwcGVyUmVmPXR9fSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6ci53cmFwcGVySW5uZXJ9LG4pKSl9KX19XSksdH0ocC5kZWZhdWx0LkNvbXBvbmVudCk7di5kZWZhdWx0UHJvcHM9e2NvbGxhcHNlZEhlaWdodDpcIjBweFwiLGNvbXBvbmVudDpcImRpdlwiLHRpbWVvdXQ6aC5kdXJhdGlvbi5zdGFuZGFyZH0sdi5tdWlTdXBwb3J0QXV0bz0hMDt2YXIgUz0oMCxnLmRlZmF1bHQpKHkse3dpdGhUaGVtZTohMCxuYW1lOlwiTXVpQ29sbGFwc2VcIn0pKHYpO3QuZGVmYXVsdD1TfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dC5fX2VzTW9kdWxlPSEwLHQuY2xhc3NOYW1lc1NoYXBlPXQudGltZW91dHNTaGFwZT12b2lkIDA7dmFyIHI7KHI9bigxKSkmJnIuX19lc01vZHVsZTt0LnRpbWVvdXRzU2hhcGU9bnVsbDt0LmNsYXNzTmFtZXNTaGFwZT1udWxsfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShuKDcpLHIobig4KSkpLGM9bigzMSksZD1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDp7aGVpZ2h0OjEsbWFyZ2luOjAsYm9yZGVyOlwibm9uZVwiLGZsZXhTaHJpbms6MCxiYWNrZ3JvdW5kQ29sb3I6ZS5wYWxldHRlLmRpdmlkZXJ9LGFic29sdXRlOntwb3NpdGlvbjpcImFic29sdXRlXCIsYm90dG9tOjAsbGVmdDowLHdpZHRoOlwiMTAwJVwifSxpbnNldDp7bWFyZ2luTGVmdDo3Mn0sbGlnaHQ6e2JhY2tncm91bmRDb2xvcjooMCxjLmZhZGUpKGUucGFsZXR0ZS5kaXZpZGVyLC4wOCl9LG1pZGRsZTp7bWFyZ2luTGVmdDoyKmUuc3BhY2luZy51bml0LG1hcmdpblJpZ2h0OjIqZS5zcGFjaW5nLnVuaXR9fX07ZnVuY3Rpb24gcChlKXt2YXIgdCxuPWUuYWJzb2x1dGUscj1lLmNsYXNzZXMsdT1lLmNsYXNzTmFtZSxjPWUuY29tcG9uZW50LGQ9ZS5pbnNldCxwPWUubGlnaHQsZj1lLnZhcmlhbnQsbT0oMCxpLmRlZmF1bHQpKGUsW1wiYWJzb2x1dGVcIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29tcG9uZW50XCIsXCJpbnNldFwiLFwibGlnaHRcIixcInZhcmlhbnRcIl0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChjLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHIucm9vdCwodD17fSwoMCxhLmRlZmF1bHQpKHQsci5pbnNldCxkfHxcImluc2V0XCI9PT1mKSwoMCxhLmRlZmF1bHQpKHQsci5taWRkbGUsXCJtaWRkbGVcIj09PWYpLCgwLGEuZGVmYXVsdCkodCxyLmFic29sdXRlLG4pLCgwLGEuZGVmYXVsdCkodCxyLmxpZ2h0LHApLHQpLHUpfSxtKSl9dC5zdHlsZXM9ZCxwLmRlZmF1bHRQcm9wcz17YWJzb2x1dGU6ITEsY29tcG9uZW50OlwiaHJcIixsaWdodDohMSx2YXJpYW50OlwiZnVsbFdpZHRoXCJ9O3ZhciBmPSgwLHUuZGVmYXVsdCkoZCx7bmFtZTpcIk11aURpdmlkZXJcIn0pKHApO3QuZGVmYXVsdD1mfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigxMikpLHM9cihuKDE0KSksdT1yKG4oMTUpKSxjPXIobigxMykpLGQ9cihuKDE2KSkscD1yKG4oMCkpLGY9KHIobigxKSkscihuKDYpKSksbT0obig3KSxuKDcyKSksZz1yKG4oOCkpLGg9bigyMSksYj1uKDMyKSx5PXIobig3MykpLHY9e3Jvb3Q6e2Rpc3BsYXk6XCJpbmxpbmUtZmxleFwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixwb3NpdGlvbjpcInJlbGF0aXZlXCIsbWluV2lkdGg6MCxwYWRkaW5nOjAsbWFyZ2luOjAsYm9yZGVyOjAsdmVydGljYWxBbGlnbjpcInRvcFwifSxtYXJnaW5Ob3JtYWw6e21hcmdpblRvcDoxNixtYXJnaW5Cb3R0b206OH0sbWFyZ2luRGVuc2U6e21hcmdpblRvcDo4LG1hcmdpbkJvdHRvbTo0fSxmdWxsV2lkdGg6e3dpZHRoOlwiMTAwJVwifX07dC5zdHlsZXM9djt2YXIgUz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBuOygwLGwuZGVmYXVsdCkodGhpcyx0KSwobj0oMCxzLmRlZmF1bHQpKHRoaXMsKDAsdS5kZWZhdWx0KSh0KS5jYWxsKHRoaXMpKSkuaGFuZGxlRm9jdXM9ZnVuY3Rpb24oKXtuLnNldFN0YXRlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZvY3VzZWQ/bnVsbDp7Zm9jdXNlZDohMH19KX0sbi5oYW5kbGVCbHVyPWZ1bmN0aW9uKCl7bi5zZXRTdGF0ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5mb2N1c2VkP3tmb2N1c2VkOiExfTpudWxsfSl9LG4uaGFuZGxlRGlydHk9ZnVuY3Rpb24oKXtuLnN0YXRlLmZpbGxlZHx8bi5zZXRTdGF0ZSh7ZmlsbGVkOiEwfSl9LG4uaGFuZGxlQ2xlYW49ZnVuY3Rpb24oKXtuLnN0YXRlLmZpbGxlZCYmbi5zZXRTdGF0ZSh7ZmlsbGVkOiExfSl9LG4uc3RhdGU9e2Fkb3JuZWRTdGFydDohMSxmaWxsZWQ6ITEsZm9jdXNlZDohMX07dmFyIHI9ZS5jaGlsZHJlbjtyZXR1cm4gciYmcC5kZWZhdWx0LkNoaWxkcmVuLmZvckVhY2gocixmdW5jdGlvbihlKXtpZigoMCxiLmlzTXVpRWxlbWVudCkoZSxbXCJJbnB1dFwiLFwiU2VsZWN0XCJdKSl7KDAsbS5pc0ZpbGxlZCkoZS5wcm9wcywhMCkmJihuLnN0YXRlLmZpbGxlZD0hMCk7dmFyIHQ9KDAsYi5pc011aUVsZW1lbnQpKGUsW1wiU2VsZWN0XCJdKT9lLnByb3BzLmlucHV0OmU7dCYmKDAsbS5pc0Fkb3JuZWRTdGFydCkodC5wcm9wcykmJihuLnN0YXRlLmFkb3JuZWRTdGFydD0hMCl9fSksbn1yZXR1cm4oMCxkLmRlZmF1bHQpKHQsZSksKDAsYy5kZWZhdWx0KSh0LG51bGwsW3trZXk6XCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLmRpc2FibGVkJiZ0LmZvY3VzZWQ/e2ZvY3VzZWQ6ITF9Om51bGx9fV0pLCgwLGMuZGVmYXVsdCkodCxbe2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLnByb3BzLG49dC5jbGFzc2VzLHI9dC5jbGFzc05hbWUsbD10LmNvbXBvbmVudCxzPXQuZGlzYWJsZWQsdT10LmVycm9yLGM9dC5mdWxsV2lkdGgsZD10Lm1hcmdpbixtPXQucmVxdWlyZWQsZz10LnZhcmlhbnQsYj0oMCxpLmRlZmF1bHQpKHQsW1wiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb21wb25lbnRcIixcImRpc2FibGVkXCIsXCJlcnJvclwiLFwiZnVsbFdpZHRoXCIsXCJtYXJnaW5cIixcInJlcXVpcmVkXCIsXCJ2YXJpYW50XCJdKSx2PXRoaXMuc3RhdGUsUz17YWRvcm5lZFN0YXJ0OnYuYWRvcm5lZFN0YXJ0LGRpc2FibGVkOnMsZXJyb3I6dSxmaWxsZWQ6di5maWxsZWQsZm9jdXNlZDp2LmZvY3VzZWQsbWFyZ2luOmQsb25CbHVyOnRoaXMuaGFuZGxlQmx1cixvbkVtcHR5OnRoaXMuaGFuZGxlQ2xlYW4sb25GaWxsZWQ6dGhpcy5oYW5kbGVEaXJ0eSxvbkZvY3VzOnRoaXMuaGFuZGxlRm9jdXMscmVxdWlyZWQ6bSx2YXJpYW50Omd9O3JldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh5LmRlZmF1bHQuUHJvdmlkZXIse3ZhbHVlOlN9LHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGwsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLGYuZGVmYXVsdCkobi5yb290LChlPXt9LCgwLGEuZGVmYXVsdCkoZSxuW1wibWFyZ2luXCIuY29uY2F0KCgwLGguY2FwaXRhbGl6ZSkoZCkpXSxcIm5vbmVcIiE9PWQpLCgwLGEuZGVmYXVsdCkoZSxuLmZ1bGxXaWR0aCxjKSxlKSxyKX0sYikpKX19XSksdH0ocC5kZWZhdWx0LkNvbXBvbmVudCk7Uy5kZWZhdWx0UHJvcHM9e2NvbXBvbmVudDpcImRpdlwiLGRpc2FibGVkOiExLGVycm9yOiExLGZ1bGxXaWR0aDohMSxtYXJnaW46XCJub25lXCIscmVxdWlyZWQ6ITEsdmFyaWFudDpcInN0YW5kYXJkXCJ9O3ZhciBFPSgwLGcuZGVmYXVsdCkodix7bmFtZTpcIk11aUZvcm1Db250cm9sXCJ9KShTKTt0LmRlZmF1bHQ9RX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMCkpLHM9KHIobigxKSkscihuKDYpKSksdT1yKG4oMjUpKSxjPXIobig4KSksZD1yKG4oNTIpKSxwPW4oMjEpLGY9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e2Rpc3BsYXk6XCJpbmxpbmUtZmxleFwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIixjdXJzb3I6XCJwb2ludGVyXCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwiLFdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOlwidHJhbnNwYXJlbnRcIixtYXJnaW5MZWZ0Oi0xNCxtYXJnaW5SaWdodDoxNixcIiYkZGlzYWJsZWRcIjp7Y3Vyc29yOlwiZGVmYXVsdFwifX0sbGFiZWxQbGFjZW1lbnRTdGFydDp7ZmxleERpcmVjdGlvbjpcInJvdy1yZXZlcnNlXCIsbWFyZ2luTGVmdDoxNixtYXJnaW5SaWdodDotMTR9LGxhYmVsUGxhY2VtZW50VG9wOntmbGV4RGlyZWN0aW9uOlwiY29sdW1uLXJldmVyc2VcIixtYXJnaW5MZWZ0OjE2fSxsYWJlbFBsYWNlbWVudEJvdHRvbTp7ZmxleERpcmVjdGlvbjpcImNvbHVtblwiLG1hcmdpbkxlZnQ6MTZ9LGRpc2FibGVkOnt9LGxhYmVsOntcIiYkZGlzYWJsZWRcIjp7Y29sb3I6ZS5wYWxldHRlLnRleHQuZGlzYWJsZWR9fX19O2Z1bmN0aW9uIG0oZSl7ZS5jaGVja2VkO3ZhciB0LG49ZS5jbGFzc2VzLHI9ZS5jbGFzc05hbWUsdT1lLmNvbnRyb2wsYz1lLmRpc2FibGVkLGY9KGUuaW5wdXRSZWYsZS5sYWJlbCksbT1lLmxhYmVsUGxhY2VtZW50LGc9ZS5tdWlGb3JtQ29udHJvbCxoPShlLm5hbWUsZS5vbkNoYW5nZSxlLnZhbHVlLCgwLGkuZGVmYXVsdCkoZSxbXCJjaGVja2VkXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbnRyb2xcIixcImRpc2FibGVkXCIsXCJpbnB1dFJlZlwiLFwibGFiZWxcIixcImxhYmVsUGxhY2VtZW50XCIsXCJtdWlGb3JtQ29udHJvbFwiLFwibmFtZVwiLFwib25DaGFuZ2VcIixcInZhbHVlXCJdKSksYj1jO3ZvaWQgMD09PWImJnZvaWQgMCE9PXUucHJvcHMuZGlzYWJsZWQmJihiPXUucHJvcHMuZGlzYWJsZWQpLHZvaWQgMD09PWImJmcmJihiPWcuZGlzYWJsZWQpO3ZhciB5PXtkaXNhYmxlZDpifTtyZXR1cm5bXCJjaGVja2VkXCIsXCJuYW1lXCIsXCJvbkNoYW5nZVwiLFwidmFsdWVcIixcImlucHV0UmVmXCJdLmZvckVhY2goZnVuY3Rpb24odCl7dm9pZCAwPT09dS5wcm9wc1t0XSYmdm9pZCAwIT09ZVt0XSYmKHlbdF09ZVt0XSl9KSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkobi5yb290LCh0PXt9LCgwLGEuZGVmYXVsdCkodCxuW1wibGFiZWxQbGFjZW1lbnRcIi5jb25jYXQoKDAscC5jYXBpdGFsaXplKShtKSldLFwiZW5kXCIhPT1tKSwoMCxhLmRlZmF1bHQpKHQsbi5kaXNhYmxlZCxiKSx0KSxyKX0saCksbC5kZWZhdWx0LmNsb25lRWxlbWVudCh1LHkpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGQuZGVmYXVsdCx7Y29tcG9uZW50Olwic3BhblwiLGNsYXNzTmFtZTooMCxzLmRlZmF1bHQpKG4ubGFiZWwsKDAsYS5kZWZhdWx0KSh7fSxuLmRpc2FibGVkLGIpKX0sZikpfXQuc3R5bGVzPWYsbS5kZWZhdWx0UHJvcHM9e2xhYmVsUGxhY2VtZW50OlwiZW5kXCJ9O3ZhciBnPSgwLGMuZGVmYXVsdCkoZix7bmFtZTpcIk11aUZvcm1Db250cm9sTGFiZWxcIn0pKCgwLHUuZGVmYXVsdCkobSkpO3QuZGVmYXVsdD1nfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShuKDcpLHIobig4KSkpLGM9bigyMSksZD1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDp7ZGlzcGxheTpcImJsb2NrXCIsbWFyZ2luOjB9LGRpc3BsYXk0OmUudHlwb2dyYXBoeS5kaXNwbGF5NCxkaXNwbGF5MzplLnR5cG9ncmFwaHkuZGlzcGxheTMsZGlzcGxheTI6ZS50eXBvZ3JhcGh5LmRpc3BsYXkyLGRpc3BsYXkxOmUudHlwb2dyYXBoeS5kaXNwbGF5MSxoZWFkbGluZTplLnR5cG9ncmFwaHkuaGVhZGxpbmUsdGl0bGU6ZS50eXBvZ3JhcGh5LnRpdGxlLHN1YmhlYWRpbmc6ZS50eXBvZ3JhcGh5LnN1YmhlYWRpbmcsYm9keTI6ZS50eXBvZ3JhcGh5LmJvZHkyLGJvZHkxOmUudHlwb2dyYXBoeS5ib2R5MSxjYXB0aW9uOmUudHlwb2dyYXBoeS5jYXB0aW9uLGJ1dHRvbjplLnR5cG9ncmFwaHkuYnV0dG9uLGgxOmUudHlwb2dyYXBoeS5oMSxoMjplLnR5cG9ncmFwaHkuaDIsaDM6ZS50eXBvZ3JhcGh5LmgzLGg0OmUudHlwb2dyYXBoeS5oNCxoNTplLnR5cG9ncmFwaHkuaDUsaDY6ZS50eXBvZ3JhcGh5Lmg2LHN1YnRpdGxlMTplLnR5cG9ncmFwaHkuc3VidGl0bGUxLHN1YnRpdGxlMjplLnR5cG9ncmFwaHkuc3VidGl0bGUyLG92ZXJsaW5lOmUudHlwb2dyYXBoeS5vdmVybGluZSxzck9ubHk6e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixoZWlnaHQ6MSx3aWR0aDoxLG92ZXJmbG93OlwiaGlkZGVuXCJ9LGFsaWduTGVmdDp7dGV4dEFsaWduOlwibGVmdFwifSxhbGlnbkNlbnRlcjp7dGV4dEFsaWduOlwiY2VudGVyXCJ9LGFsaWduUmlnaHQ6e3RleHRBbGlnbjpcInJpZ2h0XCJ9LGFsaWduSnVzdGlmeTp7dGV4dEFsaWduOlwianVzdGlmeVwifSxub1dyYXA6e292ZXJmbG93OlwiaGlkZGVuXCIsdGV4dE92ZXJmbG93OlwiZWxsaXBzaXNcIix3aGl0ZVNwYWNlOlwibm93cmFwXCJ9LGd1dHRlckJvdHRvbTp7bWFyZ2luQm90dG9tOlwiMC4zNWVtXCJ9LHBhcmFncmFwaDp7bWFyZ2luQm90dG9tOjE2fSxjb2xvckluaGVyaXQ6e2NvbG9yOlwiaW5oZXJpdFwifSxjb2xvclByaW1hcnk6e2NvbG9yOmUucGFsZXR0ZS5wcmltYXJ5Lm1haW59LGNvbG9yU2Vjb25kYXJ5Ontjb2xvcjplLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW59LGNvbG9yVGV4dFByaW1hcnk6e2NvbG9yOmUucGFsZXR0ZS50ZXh0LnByaW1hcnl9LGNvbG9yVGV4dFNlY29uZGFyeTp7Y29sb3I6ZS5wYWxldHRlLnRleHQuc2Vjb25kYXJ5fSxjb2xvckVycm9yOntjb2xvcjplLnBhbGV0dGUuZXJyb3IubWFpbn0saW5saW5lOntkaXNwbGF5OlwiaW5saW5lXCJ9fX07dC5zdHlsZXM9ZDt2YXIgcD17ZGlzcGxheTQ6XCJoMVwiLGRpc3BsYXkzOlwiaDJcIixkaXNwbGF5MjpcImgzXCIsZGlzcGxheTE6XCJoNFwiLGhlYWRsaW5lOlwiaDVcIix0aXRsZTpcImg2XCIsc3ViaGVhZGluZzpcInN1YnRpdGxlMVwifTt2YXIgZj17aDE6XCJoMVwiLGgyOlwiaDJcIixoMzpcImgzXCIsaDQ6XCJoNFwiLGg1OlwiaDVcIixoNjpcImg2XCIsc3VidGl0bGUxOlwiaDZcIixzdWJ0aXRsZTI6XCJoNlwiLGJvZHkxOlwicFwiLGJvZHkyOlwicFwiLGRpc3BsYXk0OlwiaDFcIixkaXNwbGF5MzpcImgxXCIsZGlzcGxheTI6XCJoMVwiLGRpc3BsYXkxOlwiaDFcIixoZWFkbGluZTpcImgxXCIsdGl0bGU6XCJoMlwiLHN1YmhlYWRpbmc6XCJoM1wifTtmdW5jdGlvbiBtKGUpe3ZhciB0LG49ZS5hbGlnbixyPWUuY2xhc3Nlcyx1PWUuY2xhc3NOYW1lLGQ9ZS5jb2xvcixtPWUuY29tcG9uZW50LGc9ZS5ndXR0ZXJCb3R0b20saD1lLmhlYWRsaW5lTWFwcGluZyxiPWUuaW5saW5lLHk9KGUuaW50ZXJuYWxEZXByZWNhdGVkVmFyaWFudCxlLm5vV3JhcCksdj1lLnBhcmFncmFwaCxTPWUudGhlbWUsRT1lLnZhcmlhbnQseD0oMCxpLmRlZmF1bHQpKGUsW1wiYWxpZ25cIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29sb3JcIixcImNvbXBvbmVudFwiLFwiZ3V0dGVyQm90dG9tXCIsXCJoZWFkbGluZU1hcHBpbmdcIixcImlubGluZVwiLFwiaW50ZXJuYWxEZXByZWNhdGVkVmFyaWFudFwiLFwibm9XcmFwXCIsXCJwYXJhZ3JhcGhcIixcInRoZW1lXCIsXCJ2YXJpYW50XCJdKSx3PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS50eXBvZ3JhcGh5LHI9dDtyZXR1cm4gcnx8KHI9bi51c2VOZXh0VmFyaWFudHM/XCJib2R5MlwiOlwiYm9keTFcIiksbi51c2VOZXh0VmFyaWFudHMmJihyPXBbcl18fHIpLHJ9KFMsRSksaz0oMCxzLmRlZmF1bHQpKHIucm9vdCwodD17fSwoMCxhLmRlZmF1bHQpKHQsclt3XSxcImluaGVyaXRcIiE9PXcpLCgwLGEuZGVmYXVsdCkodCxyW1wiY29sb3JcIi5jb25jYXQoKDAsYy5jYXBpdGFsaXplKShkKSldLFwiZGVmYXVsdFwiIT09ZCksKDAsYS5kZWZhdWx0KSh0LHIubm9XcmFwLHkpLCgwLGEuZGVmYXVsdCkodCxyLmd1dHRlckJvdHRvbSxnKSwoMCxhLmRlZmF1bHQpKHQsci5wYXJhZ3JhcGgsdiksKDAsYS5kZWZhdWx0KSh0LHJbXCJhbGlnblwiLmNvbmNhdCgoMCxjLmNhcGl0YWxpemUpKG4pKV0sXCJpbmhlcml0XCIhPT1uKSwoMCxhLmRlZmF1bHQpKHQsci5pbmxpbmUsYiksdCksdSksXz1tfHwodj9cInBcIjpoW3ddfHxmW3ddKXx8XCJzcGFuXCI7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF8sKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOmt9LHgpKX1tLmRlZmF1bHRQcm9wcz17YWxpZ246XCJpbmhlcml0XCIsY29sb3I6XCJkZWZhdWx0XCIsZ3V0dGVyQm90dG9tOiExLGhlYWRsaW5lTWFwcGluZzpmLGlubGluZTohMSxub1dyYXA6ITEscGFyYWdyYXBoOiExfTt2YXIgZz0oMCx1LmRlZmF1bHQpKGQse25hbWU6XCJNdWlUeXBvZ3JhcGh5XCIsd2l0aFRoZW1lOiEwfSkobSk7dC5kZWZhdWx0PWd9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9cihuKDgpKSxjPXtyb290OntkaXNwbGF5OlwiZmxleFwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixmbGV4V3JhcDpcIndyYXBcIn0scm93OntmbGV4RGlyZWN0aW9uOlwicm93XCJ9fTtmdW5jdGlvbiBkKGUpe3ZhciB0PWUuY2xhc3NlcyxuPWUuY2xhc3NOYW1lLHI9ZS5jaGlsZHJlbix1PWUucm93LGM9KDAsaS5kZWZhdWx0KShlLFtcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY2hpbGRyZW5cIixcInJvd1wiXSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkodC5yb290LCgwLGEuZGVmYXVsdCkoe30sdC5yb3csdSksbil9LGMpLHIpfXQuc3R5bGVzPWMsZC5kZWZhdWx0UHJvcHM9e3JvdzohMX07dmFyIHA9KDAsdS5kZWZhdWx0KShjLHtuYW1lOlwiTXVpRm9ybUdyb3VwXCJ9KShkKTt0LmRlZmF1bHQ9cH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMCkpLHM9KHIobigxKSkscihuKDYpKSksdT0obig3KSxyKG4oMzMpKSksYz1yKG4oMjUpKSxkPXIobig4KSkscD1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDp7Y29sb3I6ZS5wYWxldHRlLnRleHQuc2Vjb25kYXJ5LGZvbnRGYW1pbHk6ZS50eXBvZ3JhcGh5LmZvbnRGYW1pbHksZm9udFNpemU6ZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTIpLHRleHRBbGlnbjpcImxlZnRcIixtYXJnaW5Ub3A6OCxsaW5lSGVpZ2h0OlwiMWVtXCIsbWluSGVpZ2h0OlwiMWVtXCIsbWFyZ2luOjAsXCImJGRpc2FibGVkXCI6e2NvbG9yOmUucGFsZXR0ZS50ZXh0LmRpc2FibGVkfSxcIiYkZXJyb3JcIjp7Y29sb3I6ZS5wYWxldHRlLmVycm9yLm1haW59fSxlcnJvcjp7fSxkaXNhYmxlZDp7fSxtYXJnaW5EZW5zZTp7bWFyZ2luVG9wOjR9LGNvbnRhaW5lZDp7bWFyZ2luOlwiOHB4IDEycHggMFwifSxmb2N1c2VkOnt9LGZpbGxlZDp7fSxyZXF1aXJlZDp7fX19O2Z1bmN0aW9uIGYoZSl7dmFyIHQsbj1lLmNsYXNzZXMscj1lLmNsYXNzTmFtZSxjPWUuY29tcG9uZW50LGQ9KGUuZGlzYWJsZWQsZS5lcnJvcixlLmZpbGxlZCxlLmZvY3VzZWQsZS5tYXJnaW4sZS5tdWlGb3JtQ29udHJvbCkscD0oZS5yZXF1aXJlZCxlLnZhcmlhbnQsKDAsaS5kZWZhdWx0KShlLFtcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29tcG9uZW50XCIsXCJkaXNhYmxlZFwiLFwiZXJyb3JcIixcImZpbGxlZFwiLFwiZm9jdXNlZFwiLFwibWFyZ2luXCIsXCJtdWlGb3JtQ29udHJvbFwiLFwicmVxdWlyZWRcIixcInZhcmlhbnRcIl0pKSxmPSgwLHUuZGVmYXVsdCkoe3Byb3BzOmUsbXVpRm9ybUNvbnRyb2w6ZCxzdGF0ZXM6W1widmFyaWFudFwiLFwibWFyZ2luXCIsXCJkaXNhYmxlZFwiLFwiZXJyb3JcIixcImZpbGxlZFwiLFwiZm9jdXNlZFwiLFwicmVxdWlyZWRcIl19KTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYywoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KShuLnJvb3QsKHQ9e30sKDAsYS5kZWZhdWx0KSh0LG4uY29udGFpbmVkLFwiZmlsbGVkXCI9PT1mLnZhcmlhbnR8fFwib3V0bGluZWRcIj09PWYudmFyaWFudCksKDAsYS5kZWZhdWx0KSh0LG4ubWFyZ2luRGVuc2UsXCJkZW5zZVwiPT09Zi5tYXJnaW4pLCgwLGEuZGVmYXVsdCkodCxuLmRpc2FibGVkLGYuZGlzYWJsZWQpLCgwLGEuZGVmYXVsdCkodCxuLmVycm9yLGYuZXJyb3IpLCgwLGEuZGVmYXVsdCkodCxuLmZpbGxlZCxmLmZpbGxlZCksKDAsYS5kZWZhdWx0KSh0LG4uZm9jdXNlZCxmLmZvY3VzZWQpLCgwLGEuZGVmYXVsdCkodCxuLnJlcXVpcmVkLGYucmVxdWlyZWQpLHQpLHIpfSxwKSl9dC5zdHlsZXM9cCxmLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OlwicFwifTt2YXIgbT0oMCxkLmRlZmF1bHQpKHAse25hbWU6XCJNdWlGb3JtSGVscGVyVGV4dFwifSkoKDAsYy5kZWZhdWx0KShmKSk7dC5kZWZhdWx0PW19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9cihuKDMzKSksYz1yKG4oMjUpKSxkPXIobig4KSkscD1yKG4oNzYpKSxmPWZ1bmN0aW9uKGUpe3JldHVybntyb290Ont0cmFuc2Zvcm1PcmlnaW46XCJ0b3AgbGVmdFwifSxmb2N1c2VkOnt9LGRpc2FibGVkOnt9LGVycm9yOnt9LHJlcXVpcmVkOnt9LGZvcm1Db250cm9sOntwb3NpdGlvbjpcImFic29sdXRlXCIsbGVmdDowLHRvcDowLHRyYW5zZm9ybTpcInRyYW5zbGF0ZSgwLCAyNHB4KSBzY2FsZSgxKVwifSxtYXJnaW5EZW5zZTp7dHJhbnNmb3JtOlwidHJhbnNsYXRlKDAsIDIxcHgpIHNjYWxlKDEpXCJ9LHNocmluazp7dHJhbnNmb3JtOlwidHJhbnNsYXRlKDAsIDEuNXB4KSBzY2FsZSgwLjc1KVwiLHRyYW5zZm9ybU9yaWdpbjpcInRvcCBsZWZ0XCJ9LGFuaW1hdGVkOnt0cmFuc2l0aW9uOmUudHJhbnNpdGlvbnMuY3JlYXRlKFtcImNvbG9yXCIsXCJ0cmFuc2Zvcm1cIl0se2R1cmF0aW9uOmUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlcixlYXNpbmc6ZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZU91dH0pfSxmaWxsZWQ6e3pJbmRleDoxLHBvaW50ZXJFdmVudHM6XCJub25lXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKDEycHgsIDIwcHgpIHNjYWxlKDEpXCIsXCImJG1hcmdpbkRlbnNlXCI6e3RyYW5zZm9ybTpcInRyYW5zbGF0ZSgxMnB4LCAxN3B4KSBzY2FsZSgxKVwifSxcIiYkc2hyaW5rXCI6e3RyYW5zZm9ybTpcInRyYW5zbGF0ZSgxMnB4LCAxMHB4KSBzY2FsZSgwLjc1KVwiLFwiJiRtYXJnaW5EZW5zZVwiOnt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoMTJweCwgN3B4KSBzY2FsZSgwLjc1KVwifX19LG91dGxpbmVkOnt6SW5kZXg6MSxwb2ludGVyRXZlbnRzOlwibm9uZVwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZSgxNHB4LCAyMHB4KSBzY2FsZSgxKVwiLFwiJiRtYXJnaW5EZW5zZVwiOnt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoMTRweCwgMTdweCkgc2NhbGUoMSlcIn0sXCImJHNocmlua1wiOnt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoMTRweCwgLTZweCkgc2NhbGUoMC43NSlcIn19fX07ZnVuY3Rpb24gbShlKXt2YXIgdCxuPWUuY2hpbGRyZW4scj1lLmNsYXNzZXMsYz1lLmNsYXNzTmFtZSxkPWUuZGlzYWJsZUFuaW1hdGlvbixmPWUuRm9ybUxhYmVsQ2xhc3NlcyxtPShlLm1hcmdpbixlLm11aUZvcm1Db250cm9sKSxnPWUuc2hyaW5rLGg9KGUudmFyaWFudCwoMCxpLmRlZmF1bHQpKGUsW1wiY2hpbGRyZW5cIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiZGlzYWJsZUFuaW1hdGlvblwiLFwiRm9ybUxhYmVsQ2xhc3Nlc1wiLFwibWFyZ2luXCIsXCJtdWlGb3JtQ29udHJvbFwiLFwic2hyaW5rXCIsXCJ2YXJpYW50XCJdKSksYj1nO3ZvaWQgMD09PWImJm0mJihiPW0uZmlsbGVkfHxtLmZvY3VzZWR8fG0uYWRvcm5lZFN0YXJ0KTt2YXIgeT0oMCx1LmRlZmF1bHQpKHtwcm9wczplLG11aUZvcm1Db250cm9sOm0sc3RhdGVzOltcIm1hcmdpblwiLFwidmFyaWFudFwiXX0pLHY9KDAscy5kZWZhdWx0KShyLnJvb3QsKHQ9e30sKDAsYS5kZWZhdWx0KSh0LHIuZm9ybUNvbnRyb2wsbSksKDAsYS5kZWZhdWx0KSh0LHIuYW5pbWF0ZWQsIWQpLCgwLGEuZGVmYXVsdCkodCxyLnNocmluayxiKSwoMCxhLmRlZmF1bHQpKHQsci5tYXJnaW5EZW5zZSxcImRlbnNlXCI9PT15Lm1hcmdpbiksKDAsYS5kZWZhdWx0KSh0LHIuZmlsbGVkLFwiZmlsbGVkXCI9PT15LnZhcmlhbnQpLCgwLGEuZGVmYXVsdCkodCxyLm91dGxpbmVkLFwib3V0bGluZWRcIj09PXkudmFyaWFudCksdCksYyk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHAuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtcImRhdGEtc2hyaW5rXCI6YixjbGFzc05hbWU6dixjbGFzc2VzOigwLG8uZGVmYXVsdCkoe2ZvY3VzZWQ6ci5mb2N1c2VkLGRpc2FibGVkOnIuZGlzYWJsZWQsZXJyb3I6ci5lcnJvcixyZXF1aXJlZDpyLnJlcXVpcmVkfSxmKX0saCksbil9dC5zdHlsZXM9ZixtLmRlZmF1bHRQcm9wcz17ZGlzYWJsZUFuaW1hdGlvbjohMX07dmFyIGc9KDAsZC5kZWZhdWx0KShmLHtuYW1lOlwiTXVpSW5wdXRMYWJlbFwifSkoKDAsYy5kZWZhdWx0KShtKSk7dC5kZWZhdWx0PWd9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KG4oNykscihuKDMzKSkpLGM9cihuKDI1KSksZD1yKG4oOCkpLHA9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e2ZvbnRGYW1pbHk6ZS50eXBvZ3JhcGh5LmZvbnRGYW1pbHksY29sb3I6ZS5wYWxldHRlLnRleHQuc2Vjb25kYXJ5LGZvbnRTaXplOmUudHlwb2dyYXBoeS5weFRvUmVtKDE2KSxsaW5lSGVpZ2h0OjEscGFkZGluZzowLFwiJiRmb2N1c2VkXCI6e2NvbG9yOmUucGFsZXR0ZS5wcmltYXJ5W1wibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlP1wiZGFya1wiOlwibGlnaHRcIl19LFwiJiRkaXNhYmxlZFwiOntjb2xvcjplLnBhbGV0dGUudGV4dC5kaXNhYmxlZH0sXCImJGVycm9yXCI6e2NvbG9yOmUucGFsZXR0ZS5lcnJvci5tYWlufX0sZm9jdXNlZDp7fSxkaXNhYmxlZDp7fSxlcnJvcjp7fSxmaWxsZWQ6e30scmVxdWlyZWQ6e30sYXN0ZXJpc2s6e1wiJiRlcnJvclwiOntjb2xvcjplLnBhbGV0dGUuZXJyb3IubWFpbn19fX07ZnVuY3Rpb24gZihlKXt2YXIgdCxuPWUuY2hpbGRyZW4scj1lLmNsYXNzZXMsYz1lLmNsYXNzTmFtZSxkPWUuY29tcG9uZW50LHA9KGUuZGlzYWJsZWQsZS5lcnJvcixlLmZpbGxlZCxlLmZvY3VzZWQsZS5tdWlGb3JtQ29udHJvbCksZj0oZS5yZXF1aXJlZCwoMCxpLmRlZmF1bHQpKGUsW1wiY2hpbGRyZW5cIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29tcG9uZW50XCIsXCJkaXNhYmxlZFwiLFwiZXJyb3JcIixcImZpbGxlZFwiLFwiZm9jdXNlZFwiLFwibXVpRm9ybUNvbnRyb2xcIixcInJlcXVpcmVkXCJdKSksbT0oMCx1LmRlZmF1bHQpKHtwcm9wczplLG11aUZvcm1Db250cm9sOnAsc3RhdGVzOltcInJlcXVpcmVkXCIsXCJmb2N1c2VkXCIsXCJkaXNhYmxlZFwiLFwiZXJyb3JcIixcImZpbGxlZFwiXX0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHIucm9vdCwodD17fSwoMCxhLmRlZmF1bHQpKHQsci5kaXNhYmxlZCxtLmRpc2FibGVkKSwoMCxhLmRlZmF1bHQpKHQsci5lcnJvcixtLmVycm9yKSwoMCxhLmRlZmF1bHQpKHQsci5maWxsZWQsbS5maWxsZWQpLCgwLGEuZGVmYXVsdCkodCxyLmZvY3VzZWQsbS5mb2N1c2VkKSwoMCxhLmRlZmF1bHQpKHQsci5yZXF1aXJlZCxtLnJlcXVpcmVkKSx0KSxjKX0sZiksbixtLnJlcXVpcmVkJiZsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoci5hc3RlcmlzaywoMCxhLmRlZmF1bHQpKHt9LHIuZXJyb3IsbS5lcnJvcikpfSxcIuKAiSpcIikpfXQuc3R5bGVzPXAsZi5kZWZhdWx0UHJvcHM9e2NvbXBvbmVudDpcImxhYmVsXCJ9O3ZhciBtPSgwLGQuZGVmYXVsdCkocCx7bmFtZTpcIk11aUZvcm1MYWJlbFwifSkoKDAsYy5kZWZhdWx0KShmKSk7dC5kZWZhdWx0PW19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KHIobigxNykpLHIobig4KSkpLGM9bigzMSksZD1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLG92ZXJmbG93OlwiaGlkZGVuXCIsaGVpZ2h0OjR9LGNvbG9yUHJpbWFyeTp7YmFja2dyb3VuZENvbG9yOigwLGMubGlnaHRlbikoZS5wYWxldHRlLnByaW1hcnkubGlnaHQsLjYpfSxjb2xvclNlY29uZGFyeTp7YmFja2dyb3VuZENvbG9yOigwLGMubGlnaHRlbikoZS5wYWxldHRlLnNlY29uZGFyeS5saWdodCwuNCl9LGRldGVybWluYXRlOnt9LGluZGV0ZXJtaW5hdGU6e30sYnVmZmVyOntiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifSxxdWVyeTp7dHJhbnNmb3JtOlwicm90YXRlKDE4MGRlZylcIn0sZGFzaGVkOntwb3NpdGlvbjpcImFic29sdXRlXCIsbWFyZ2luVG9wOjAsaGVpZ2h0OlwiMTAwJVwiLHdpZHRoOlwiMTAwJVwiLGFuaW1hdGlvbjpcImJ1ZmZlciAzcyBpbmZpbml0ZSBsaW5lYXJcIixhbmltYXRpb25OYW1lOlwiJGJ1ZmZlclwifSxkYXNoZWRDb2xvclByaW1hcnk6e2JhY2tncm91bmRJbWFnZTpcInJhZGlhbC1ncmFkaWVudChcIi5jb25jYXQoKDAsYy5saWdodGVuKShlLnBhbGV0dGUucHJpbWFyeS5saWdodCwuNiksXCIgMCUsIFwiKS5jb25jYXQoKDAsYy5saWdodGVuKShlLnBhbGV0dGUucHJpbWFyeS5saWdodCwuNiksXCIgMTYlLCB0cmFuc3BhcmVudCA0MiUpXCIpLGJhY2tncm91bmRTaXplOlwiMTBweCAxMHB4XCIsYmFja2dyb3VuZFBvc2l0aW9uOlwiMHB4IC0yM3B4XCJ9LGRhc2hlZENvbG9yU2Vjb25kYXJ5OntiYWNrZ3JvdW5kSW1hZ2U6XCJyYWRpYWwtZ3JhZGllbnQoXCIuY29uY2F0KCgwLGMubGlnaHRlbikoZS5wYWxldHRlLnNlY29uZGFyeS5saWdodCwuNCksXCIgMCUsIFwiKS5jb25jYXQoKDAsYy5saWdodGVuKShlLnBhbGV0dGUuc2Vjb25kYXJ5LmxpZ2h0LC42KSxcIiAxNiUsIHRyYW5zcGFyZW50IDQyJSlcIiksYmFja2dyb3VuZFNpemU6XCIxMHB4IDEwcHhcIixiYWNrZ3JvdW5kUG9zaXRpb246XCIwcHggLTIzcHhcIn0sYmFyOnt3aWR0aDpcIjEwMCVcIixwb3NpdGlvbjpcImFic29sdXRlXCIsbGVmdDowLGJvdHRvbTowLHRvcDowLHRyYW5zaXRpb246XCJ0cmFuc2Zvcm0gMC4ycyBsaW5lYXJcIix0cmFuc2Zvcm1PcmlnaW46XCJsZWZ0XCJ9LGJhckNvbG9yUHJpbWFyeTp7YmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5wcmltYXJ5Lm1haW59LGJhckNvbG9yU2Vjb25kYXJ5OntiYWNrZ3JvdW5kQ29sb3I6ZS5wYWxldHRlLnNlY29uZGFyeS5tYWlufSxiYXIxSW5kZXRlcm1pbmF0ZTp7d2lkdGg6XCJhdXRvXCIsYW5pbWF0aW9uOlwibXVpLWluZGV0ZXJtaW5hdGUxIDIuMXMgY3ViaWMtYmV6aWVyKDAuNjUsIDAuODE1LCAwLjczNSwgMC4zOTUpIGluZmluaXRlXCIsYW5pbWF0aW9uTmFtZTpcIiRtdWktaW5kZXRlcm1pbmF0ZTFcIn0sYmFyMURldGVybWluYXRlOnt0cmFuc2l0aW9uOlwidHJhbnNmb3JtIC5cIi5jb25jYXQoNCxcInMgbGluZWFyXCIpfSxiYXIxQnVmZmVyOnt6SW5kZXg6MSx0cmFuc2l0aW9uOlwidHJhbnNmb3JtIC5cIi5jb25jYXQoNCxcInMgbGluZWFyXCIpfSxiYXIySW5kZXRlcm1pbmF0ZTp7d2lkdGg6XCJhdXRvXCIsYW5pbWF0aW9uOlwibXVpLWluZGV0ZXJtaW5hdGUyIDIuMXMgY3ViaWMtYmV6aWVyKDAuMTY1LCAwLjg0LCAwLjQ0LCAxKSBpbmZpbml0ZVwiLGFuaW1hdGlvbk5hbWU6XCIkbXVpLWluZGV0ZXJtaW5hdGUyXCIsYW5pbWF0aW9uRGVsYXk6XCIxLjE1c1wifSxiYXIyQnVmZmVyOnt0cmFuc2l0aW9uOlwidHJhbnNmb3JtIC5cIi5jb25jYXQoNCxcInMgbGluZWFyXCIpfSxcIkBrZXlmcmFtZXMgbXVpLWluZGV0ZXJtaW5hdGUxXCI6e1wiMCVcIjp7bGVmdDpcIi0zNSVcIixyaWdodDpcIjEwMCVcIn0sXCI2MCVcIjp7bGVmdDpcIjEwMCVcIixyaWdodDpcIi05MCVcIn0sXCIxMDAlXCI6e2xlZnQ6XCIxMDAlXCIscmlnaHQ6XCItOTAlXCJ9fSxcIkBrZXlmcmFtZXMgbXVpLWluZGV0ZXJtaW5hdGUyXCI6e1wiMCVcIjp7bGVmdDpcIi0yMDAlXCIscmlnaHQ6XCIxMDAlXCJ9LFwiNjAlXCI6e2xlZnQ6XCIxMDclXCIscmlnaHQ6XCItOCVcIn0sXCIxMDAlXCI6e2xlZnQ6XCIxMDclXCIscmlnaHQ6XCItOCVcIn19LFwiQGtleWZyYW1lcyBidWZmZXJcIjp7XCIwJVwiOntvcGFjaXR5OjEsYmFja2dyb3VuZFBvc2l0aW9uOlwiMHB4IC0yM3B4XCJ9LFwiNTAlXCI6e29wYWNpdHk6MCxiYWNrZ3JvdW5kUG9zaXRpb246XCIwcHggLTIzcHhcIn0sXCIxMDAlXCI6e29wYWNpdHk6MSxiYWNrZ3JvdW5kUG9zaXRpb246XCItMjAwcHggLTIzcHhcIn19fX07ZnVuY3Rpb24gcChlKXt2YXIgdCxuLHIsdSxjPWUuY2xhc3NlcyxkPWUuY2xhc3NOYW1lLHA9ZS5jb2xvcixmPWUudmFsdWUsbT1lLnZhbHVlQnVmZmVyLGc9ZS52YXJpYW50LGg9KDAsaS5kZWZhdWx0KShlLFtcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29sb3JcIixcInZhbHVlXCIsXCJ2YWx1ZUJ1ZmZlclwiLFwidmFyaWFudFwiXSksYj0oMCxzLmRlZmF1bHQpKGMucm9vdCwodD17fSwoMCxhLmRlZmF1bHQpKHQsYy5jb2xvclByaW1hcnksXCJwcmltYXJ5XCI9PT1wKSwoMCxhLmRlZmF1bHQpKHQsYy5jb2xvclNlY29uZGFyeSxcInNlY29uZGFyeVwiPT09cCksKDAsYS5kZWZhdWx0KSh0LGMuZGV0ZXJtaW5hdGUsXCJkZXRlcm1pbmF0ZVwiPT09ZyksKDAsYS5kZWZhdWx0KSh0LGMuaW5kZXRlcm1pbmF0ZSxcImluZGV0ZXJtaW5hdGVcIj09PWcpLCgwLGEuZGVmYXVsdCkodCxjLmJ1ZmZlcixcImJ1ZmZlclwiPT09ZyksKDAsYS5kZWZhdWx0KSh0LGMucXVlcnksXCJxdWVyeVwiPT09ZyksdCksZCkseT0oMCxzLmRlZmF1bHQpKGMuZGFzaGVkLChuPXt9LCgwLGEuZGVmYXVsdCkobixjLmRhc2hlZENvbG9yUHJpbWFyeSxcInByaW1hcnlcIj09PXApLCgwLGEuZGVmYXVsdCkobixjLmRhc2hlZENvbG9yU2Vjb25kYXJ5LFwic2Vjb25kYXJ5XCI9PT1wKSxuKSksdj0oMCxzLmRlZmF1bHQpKGMuYmFyLChyPXt9LCgwLGEuZGVmYXVsdCkocixjLmJhckNvbG9yUHJpbWFyeSxcInByaW1hcnlcIj09PXApLCgwLGEuZGVmYXVsdCkocixjLmJhckNvbG9yU2Vjb25kYXJ5LFwic2Vjb25kYXJ5XCI9PT1wKSwoMCxhLmRlZmF1bHQpKHIsYy5iYXIxSW5kZXRlcm1pbmF0ZSxcImluZGV0ZXJtaW5hdGVcIj09PWd8fFwicXVlcnlcIj09PWcpLCgwLGEuZGVmYXVsdCkocixjLmJhcjFEZXRlcm1pbmF0ZSxcImRldGVybWluYXRlXCI9PT1nKSwoMCxhLmRlZmF1bHQpKHIsYy5iYXIxQnVmZmVyLFwiYnVmZmVyXCI9PT1nKSxyKSksUz0oMCxzLmRlZmF1bHQpKGMuYmFyLCh1PXt9LCgwLGEuZGVmYXVsdCkodSxjLmJhckNvbG9yUHJpbWFyeSxcInByaW1hcnlcIj09PXAmJlwiYnVmZmVyXCIhPT1nKSwoMCxhLmRlZmF1bHQpKHUsYy5jb2xvclByaW1hcnksXCJwcmltYXJ5XCI9PT1wJiZcImJ1ZmZlclwiPT09ZyksKDAsYS5kZWZhdWx0KSh1LGMuYmFyQ29sb3JTZWNvbmRhcnksXCJzZWNvbmRhcnlcIj09PXAmJlwiYnVmZmVyXCIhPT1nKSwoMCxhLmRlZmF1bHQpKHUsYy5jb2xvclNlY29uZGFyeSxcInNlY29uZGFyeVwiPT09cCYmXCJidWZmZXJcIj09PWcpLCgwLGEuZGVmYXVsdCkodSxjLmJhcjJJbmRldGVybWluYXRlLFwiaW5kZXRlcm1pbmF0ZVwiPT09Z3x8XCJxdWVyeVwiPT09ZyksKDAsYS5kZWZhdWx0KSh1LGMuYmFyMkJ1ZmZlcixcImJ1ZmZlclwiPT09ZyksdSkpLEU9e30seD17YmFyMTp7fSxiYXIyOnt9fTtyZXR1cm5cImRldGVybWluYXRlXCIhPT1nJiZcImJ1ZmZlclwiIT09Z3x8dm9pZCAwIT09ZiYmKEVbXCJhcmlhLXZhbHVlbm93XCJdPU1hdGgucm91bmQoZikseC5iYXIxLnRyYW5zZm9ybT1cInNjYWxlWChcIi5jb25jYXQoZi8xMDAsXCIpXCIpKSxcImJ1ZmZlclwiPT09ZyYmdm9pZCAwIT09bSYmKHguYmFyMi50cmFuc2Zvcm09XCJzY2FsZVgoXCIuY29uY2F0KChtfHwwKS8xMDAsXCIpXCIpKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTpiLHJvbGU6XCJwcm9ncmVzc2JhclwifSxFLGgpLFwiYnVmZmVyXCI9PT1nP2wuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTp5fSk6bnVsbCxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6dixzdHlsZTp4LmJhcjF9KSxcImRldGVybWluYXRlXCI9PT1nP251bGw6bC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlMsc3R5bGU6eC5iYXIyfSkpfXQuc3R5bGVzPWQscC5kZWZhdWx0UHJvcHM9e2NvbG9yOlwicHJpbWFyeVwiLHZhcmlhbnQ6XCJpbmRldGVybWluYXRlXCJ9O3ZhciBmPSgwLHUuZGVmYXVsdCkoZCx7bmFtZTpcIk11aUxpbmVhclByb2dyZXNzXCJ9KShwKTt0LmRlZmF1bHQ9Zn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMCkpLHM9KHIobigxKSksbig3KSxyKG4oNikpKSx1PW4oMjEpLGM9cihuKDgpKSxkPXIobig1MikpLHA9e3Jvb3Q6e30sdW5kZXJsaW5lTm9uZTp7dGV4dERlY29yYXRpb246XCJub25lXCJ9LHVuZGVybGluZUhvdmVyOnt0ZXh0RGVjb3JhdGlvbjpcIm5vbmVcIixcIiY6aG92ZXJcIjp7dGV4dERlY29yYXRpb246XCJ1bmRlcmxpbmVcIn19LHVuZGVybGluZUFsd2F5czp7dGV4dERlY29yYXRpb246XCJ1bmRlcmxpbmVcIn0sYnV0dG9uOntwb3NpdGlvbjpcInJlbGF0aXZlXCIsV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6XCJ0cmFuc3BhcmVudFwiLGJhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCIsb3V0bGluZTpcIm5vbmVcIixib3JkZXI6MCxtYXJnaW46MCxib3JkZXJSYWRpdXM6MCxwYWRkaW5nOjAsY3Vyc29yOlwicG9pbnRlclwiLHVzZXJTZWxlY3Q6XCJub25lXCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwiLFwiLW1vei1hcHBlYXJhbmNlXCI6XCJub25lXCIsXCItd2Via2l0LWFwcGVhcmFuY2VcIjpcIm5vbmVcIixcIiY6Oi1tb3otZm9jdXMtaW5uZXJcIjp7Ym9yZGVyU3R5bGU6XCJub25lXCJ9fX07ZnVuY3Rpb24gZihlKXt2YXIgdD1lLmJsb2NrLG49ZS5jaGlsZHJlbixyPWUuY2xhc3NlcyxjPWUuY2xhc3NOYW1lLHA9ZS5jb21wb25lbnQsZj1lLlR5cG9ncmFwaHlDbGFzc2VzLG09ZS51bmRlcmxpbmUsZz0oMCxpLmRlZmF1bHQpKGUsW1wiYmxvY2tcIixcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbXBvbmVudFwiLFwiVHlwb2dyYXBoeUNsYXNzZXNcIixcInVuZGVybGluZVwiXSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGQuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KShyLnJvb3QsKDAsYS5kZWZhdWx0KSh7fSxyLmJ1dHRvbixcImJ1dHRvblwiPT09cCkscltcInVuZGVybGluZVwiLmNvbmNhdCgoMCx1LmNhcGl0YWxpemUpKG0pKV0sYyksY2xhc3NlczpmLGNvbXBvbmVudDpwLGlubGluZTohdH0sZyksbil9dC5zdHlsZXM9cCxmLmRlZmF1bHRQcm9wcz17YmxvY2s6ITEsY29sb3I6XCJwcmltYXJ5XCIsY29tcG9uZW50OlwiYVwiLHVuZGVybGluZTpcImhvdmVyXCIsdmFyaWFudDpcImluaGVyaXRcIn07dmFyIG09KDAsYy5kZWZhdWx0KShwLHtuYW1lOlwiTXVpTGlua1wifSkoZik7dC5kZWZhdWx0PW19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDkpKSxhPXIobig1KSksaT1yKG4oNCkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KG4oNykscihuKDgpKSksYz1yKG4oNzcpKSxkPWZ1bmN0aW9uKGUpe3JldHVybntyb290OigwLGkuZGVmYXVsdCkoe30sZS50eXBvZ3JhcGh5LnN1YmhlYWRpbmcse2hlaWdodDoyNCxib3hTaXppbmc6XCJjb250ZW50LWJveFwiLHdpZHRoOlwiYXV0b1wiLG92ZXJmbG93OlwiaGlkZGVuXCIsd2hpdGVTcGFjZTpcIm5vd3JhcFwiLFwiJiRzZWxlY3RlZFwiOnt9fSksZ3V0dGVyczp7cGFkZGluZ0xlZnQ6MTYscGFkZGluZ1JpZ2h0OjE2fSxzZWxlY3RlZDp7fX19O2Z1bmN0aW9uIHAoZSl7dmFyIHQsbj1lLmNsYXNzZXMscj1lLmNsYXNzTmFtZSx1PWUuY29tcG9uZW50LGQ9ZS5kaXNhYmxlR3V0dGVycyxwPWUucm9sZSxmPWUuc2VsZWN0ZWQsbT0oMCxhLmRlZmF1bHQpKGUsW1wiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb21wb25lbnRcIixcImRpc2FibGVHdXR0ZXJzXCIsXCJyb2xlXCIsXCJzZWxlY3RlZFwiXSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGMuZGVmYXVsdCwoMCxpLmRlZmF1bHQpKHtidXR0b246ITAscm9sZTpwLHRhYkluZGV4Oi0xLGNvbXBvbmVudDp1LHNlbGVjdGVkOmYsZGlzYWJsZUd1dHRlcnM6ZCxjbGFzc05hbWU6KDAscy5kZWZhdWx0KShuLnJvb3QsKHQ9e30sKDAsby5kZWZhdWx0KSh0LG4uc2VsZWN0ZWQsZiksKDAsby5kZWZhdWx0KSh0LG4uZ3V0dGVycywhZCksdCkscil9LG0pKX10LnN0eWxlcz1kLHAuZGVmYXVsdFByb3BzPXtjb21wb25lbnQ6XCJsaVwiLGRpc2FibGVHdXR0ZXJzOiExLHJvbGU6XCJtZW51aXRlbVwifTt2YXIgZj0oMCx1LmRlZmF1bHQpKGQse25hbWU6XCJNdWlNZW51SXRlbVwifSkocCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KG4oNykscihuKDgpKSksYz1yKG4oNTMpKSxkPW4oMzIpLHA9cihuKDQ0MSkpLGY9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e2Rpc3BsYXk6XCJmbGV4XCIsanVzdGlmeUNvbnRlbnQ6XCJmbGV4LXN0YXJ0XCIsYWxpZ25JdGVtczpcImNlbnRlclwiLHBvc2l0aW9uOlwicmVsYXRpdmVcIix0ZXh0RGVjb3JhdGlvbjpcIm5vbmVcIix3aWR0aDpcIjEwMCVcIixib3hTaXppbmc6XCJib3JkZXItYm94XCIsdGV4dEFsaWduOlwibGVmdFwiLHBhZGRpbmdUb3A6MTEscGFkZGluZ0JvdHRvbToxMSxcIiYkc2VsZWN0ZWQsICYkc2VsZWN0ZWQ6aG92ZXIsICYkc2VsZWN0ZWQ6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWR9fSxjb250YWluZXI6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIn0sZm9jdXNWaXNpYmxlOnt9LGRlZmF1bHQ6e30sZGVuc2U6e3BhZGRpbmdUb3A6OCxwYWRkaW5nQm90dG9tOjh9LGFsaWduSXRlbXNGbGV4U3RhcnQ6e2FsaWduSXRlbXM6XCJmbGV4LXN0YXJ0XCJ9LGRpc2FibGVkOntvcGFjaXR5Oi41fSxkaXZpZGVyOntib3JkZXJCb3R0b206XCIxcHggc29saWQgXCIuY29uY2F0KGUucGFsZXR0ZS5kaXZpZGVyKSxiYWNrZ3JvdW5kQ2xpcDpcInBhZGRpbmctYm94XCJ9LGd1dHRlcnM6e3BhZGRpbmdMZWZ0OjE2LHBhZGRpbmdSaWdodDoxNn0sYnV0dG9uOnt0cmFuc2l0aW9uOmUudHJhbnNpdGlvbnMuY3JlYXRlKFwiYmFja2dyb3VuZC1jb2xvclwiLHtkdXJhdGlvbjplLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXN0fSksXCImOmhvdmVyXCI6e3RleHREZWNvcmF0aW9uOlwibm9uZVwiLGJhY2tncm91bmRDb2xvcjplLnBhbGV0dGUuYWN0aW9uLmhvdmVyLFwiQG1lZGlhIChob3Zlcjogbm9uZSlcIjp7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn19LFwiJjpmb2N1c1wiOntiYWNrZ3JvdW5kQ29sb3I6ZS5wYWxldHRlLmFjdGlvbi5ob3Zlcn19LHNlY29uZGFyeUFjdGlvbjp7cGFkZGluZ1JpZ2h0OjMyfSxzZWxlY3RlZDp7fX19O2Z1bmN0aW9uIG0oZSl7dmFyIHQ9ZS5hbGlnbkl0ZW1zLG49ZS5idXR0b24scj1lLmNoaWxkcmVuLHU9ZS5jbGFzc2VzLGY9ZS5jbGFzc05hbWUsbT1lLmNvbXBvbmVudCxnPWUuQ29udGFpbmVyQ29tcG9uZW50LGg9ZS5Db250YWluZXJQcm9wcyxiPShoPXZvaWQgMD09PWg/e306aCkuY2xhc3NOYW1lLHk9KDAsaS5kZWZhdWx0KShoLFtcImNsYXNzTmFtZVwiXSksdj1lLmRlbnNlLFM9ZS5kaXNhYmxlZCxFPWUuZGlzYWJsZUd1dHRlcnMseD1lLmRpdmlkZXIsdz1lLmZvY3VzVmlzaWJsZUNsYXNzTmFtZSxrPWUuc2VsZWN0ZWQsXz0oMCxpLmRlZmF1bHQpKGUsW1wiYWxpZ25JdGVtc1wiLFwiYnV0dG9uXCIsXCJjaGlsZHJlblwiLFwiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb21wb25lbnRcIixcIkNvbnRhaW5lckNvbXBvbmVudFwiLFwiQ29udGFpbmVyUHJvcHNcIixcImRlbnNlXCIsXCJkaXNhYmxlZFwiLFwiZGlzYWJsZUd1dHRlcnNcIixcImRpdmlkZXJcIixcImZvY3VzVmlzaWJsZUNsYXNzTmFtZVwiLFwic2VsZWN0ZWRcIl0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChwLmRlZmF1bHQse2RlbnNlOnYsYWxpZ25JdGVtczp0fSxmdW5jdGlvbihlKXt2YXIgaSxwPWUuZGVuc2UsaD1sLmRlZmF1bHQuQ2hpbGRyZW4udG9BcnJheShyKSx2PWguc29tZShmdW5jdGlvbihlKXtyZXR1cm4oMCxkLmlzTXVpRWxlbWVudCkoZSxbXCJMaXN0SXRlbUF2YXRhclwiXSl9KSxUPWgubGVuZ3RoJiYoMCxkLmlzTXVpRWxlbWVudCkoaFtoLmxlbmd0aC0xXSxbXCJMaXN0SXRlbVNlY29uZGFyeUFjdGlvblwiXSksQT0oMCxzLmRlZmF1bHQpKHUucm9vdCx1LmRlZmF1bHQsKGk9e30sKDAsYS5kZWZhdWx0KShpLHUuZGVuc2UscHx8diksKDAsYS5kZWZhdWx0KShpLHUuZ3V0dGVycywhRSksKDAsYS5kZWZhdWx0KShpLHUuZGl2aWRlcix4KSwoMCxhLmRlZmF1bHQpKGksdS5kaXNhYmxlZCxTKSwoMCxhLmRlZmF1bHQpKGksdS5idXR0b24sbiksKDAsYS5kZWZhdWx0KShpLHUuYWxpZ25JdGVtc0ZsZXhTdGFydCxcImZsZXgtc3RhcnRcIj09PXQpLCgwLGEuZGVmYXVsdCkoaSx1LnNlY29uZGFyeUFjdGlvbixUKSwoMCxhLmRlZmF1bHQpKGksdS5zZWxlY3RlZCxrKSxpKSxmKSxDPSgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTpBLGRpc2FibGVkOlN9LF8pLE89bXx8XCJsaVwiO3JldHVybiBuJiYoQy5jb21wb25lbnQ9bXx8XCJkaXZcIixDLmZvY3VzVmlzaWJsZUNsYXNzTmFtZT0oMCxzLmRlZmF1bHQpKHUuZm9jdXNWaXNpYmxlLHcpLE89Yy5kZWZhdWx0KSxUPyhPPUMuY29tcG9uZW50fHxtP086XCJkaXZcIixcImxpXCI9PT1nJiYoXCJsaVwiPT09Tz9PPVwiZGl2XCI6XCJsaVwiPT09Qy5jb21wb25lbnQmJihDLmNvbXBvbmVudD1cImRpdlwiKSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZywoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KSh1LmNvbnRhaW5lcixiKX0seSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTyxDLGgpLGgucG9wKCkpKTpsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChPLEMsaCl9KX10LnN0eWxlcz1mLG0uZGVmYXVsdFByb3BzPXthbGlnbkl0ZW1zOlwiY2VudGVyXCIsYnV0dG9uOiExLENvbnRhaW5lckNvbXBvbmVudDpcImxpXCIsZGVuc2U6ITEsZGlzYWJsZWQ6ITEsZGlzYWJsZUd1dHRlcnM6ITEsZGl2aWRlcjohMSxzZWxlY3RlZDohMX07dmFyIGc9KDAsdS5kZWZhdWx0KShmLHtuYW1lOlwiTXVpTGlzdEl0ZW1cIn0pKG0pO3QuZGVmYXVsdD1nfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigxMikpLHM9cihuKDEzKSksdT1yKG4oMTQpKSxjPXIobigxNSkpLGQ9cihuKDE2KSkscD1yKG4oNDUpKSxmPXIobigwKSksbT0ocihuKDEpKSxyKG4oMjIpKSksZz1yKG4oNikpLGg9KG4oNykscihuKDc4KSkpLGI9cihuKDgpKSx5PXIobig3OSkpLHY9big0MzIpLFM9cihuKDQzMykpLEU9cihuKDQ0MCkpLHg9e3Jvb3Q6e2Rpc3BsYXk6XCJpbmxpbmUtZmxleFwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIixqdXN0aWZ5Q29udGVudDpcImNlbnRlclwiLHBvc2l0aW9uOlwicmVsYXRpdmVcIixXZWJraXRUYXBIaWdobGlnaHRDb2xvcjpcInRyYW5zcGFyZW50XCIsYmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIixvdXRsaW5lOlwibm9uZVwiLGJvcmRlcjowLG1hcmdpbjowLGJvcmRlclJhZGl1czowLHBhZGRpbmc6MCxjdXJzb3I6XCJwb2ludGVyXCIsdXNlclNlbGVjdDpcIm5vbmVcIix2ZXJ0aWNhbEFsaWduOlwibWlkZGxlXCIsXCItbW96LWFwcGVhcmFuY2VcIjpcIm5vbmVcIixcIi13ZWJraXQtYXBwZWFyYW5jZVwiOlwibm9uZVwiLHRleHREZWNvcmF0aW9uOlwibm9uZVwiLGNvbG9yOlwiaW5oZXJpdFwiLFwiJjo6LW1vei1mb2N1cy1pbm5lclwiOntib3JkZXJTdHlsZTpcIm5vbmVcIn0sXCImJGRpc2FibGVkXCI6e3BvaW50ZXJFdmVudHM6XCJub25lXCIsY3Vyc29yOlwiZGVmYXVsdFwifX0sZGlzYWJsZWQ6e30sZm9jdXNWaXNpYmxlOnt9fTt0LnN0eWxlcz14O3ZhciB3PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuOygwLGwuZGVmYXVsdCkodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4obj0oMCx1LmRlZmF1bHQpKHRoaXMsKGU9KDAsYy5kZWZhdWx0KSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSkuc3RhdGU9e30sbi5rZXlEb3duPSExLG4uZm9jdXNWaXNpYmxlQ2hlY2tUaW1lPTUwLG4uZm9jdXNWaXNpYmxlTWF4Q2hlY2tUaW1lcz01LG4uaGFuZGxlTW91c2VEb3duPSgwLEUuZGVmYXVsdCkoKDAscC5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKG4pKSxcIk1vdXNlRG93blwiLFwic3RhcnRcIixmdW5jdGlvbigpe2NsZWFyVGltZW91dChuLmZvY3VzVmlzaWJsZVRpbWVvdXQpLG4uc3RhdGUuZm9jdXNWaXNpYmxlJiZuLnNldFN0YXRlKHtmb2N1c1Zpc2libGU6ITF9KX0pLG4uaGFuZGxlTW91c2VVcD0oMCxFLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkoKDAscC5kZWZhdWx0KShuKSksXCJNb3VzZVVwXCIsXCJzdG9wXCIpLG4uaGFuZGxlTW91c2VMZWF2ZT0oMCxFLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkoKDAscC5kZWZhdWx0KShuKSksXCJNb3VzZUxlYXZlXCIsXCJzdG9wXCIsZnVuY3Rpb24oZSl7bi5zdGF0ZS5mb2N1c1Zpc2libGUmJmUucHJldmVudERlZmF1bHQoKX0pLG4uaGFuZGxlVG91Y2hTdGFydD0oMCxFLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkoKDAscC5kZWZhdWx0KShuKSksXCJUb3VjaFN0YXJ0XCIsXCJzdGFydFwiKSxuLmhhbmRsZVRvdWNoRW5kPSgwLEUuZGVmYXVsdCkoKDAscC5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKG4pKSxcIlRvdWNoRW5kXCIsXCJzdG9wXCIpLG4uaGFuZGxlVG91Y2hNb3ZlPSgwLEUuZGVmYXVsdCkoKDAscC5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKG4pKSxcIlRvdWNoTW92ZVwiLFwic3RvcFwiKSxuLmhhbmRsZUNvbnRleHRNZW51PSgwLEUuZGVmYXVsdCkoKDAscC5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKG4pKSxcIkNvbnRleHRNZW51XCIsXCJzdG9wXCIpLG4uaGFuZGxlQmx1cj0oMCxFLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkoKDAscC5kZWZhdWx0KShuKSksXCJCbHVyXCIsXCJzdG9wXCIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQobi5mb2N1c1Zpc2libGVUaW1lb3V0KSxuLnN0YXRlLmZvY3VzVmlzaWJsZSYmbi5zZXRTdGF0ZSh7Zm9jdXNWaXNpYmxlOiExfSl9KSxuLm9uUmlwcGxlUmVmPWZ1bmN0aW9uKGUpe24ucmlwcGxlPWV9LG4ub25Gb2N1c1Zpc2libGVIYW5kbGVyPWZ1bmN0aW9uKGUpe24ua2V5RG93bj0hMSxuLnNldFN0YXRlKHtmb2N1c1Zpc2libGU6ITB9KSxuLnByb3BzLm9uRm9jdXNWaXNpYmxlJiZuLnByb3BzLm9uRm9jdXNWaXNpYmxlKGUpfSxuLmhhbmRsZUtleURvd249ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcyxyPXQuY29tcG9uZW50LG89dC5mb2N1c1JpcHBsZSxhPXQub25LZXlEb3duLGk9dC5vbkNsaWNrO28mJiFuLmtleURvd24mJm4uc3RhdGUuZm9jdXNWaXNpYmxlJiZuLnJpcHBsZSYmXCIgXCI9PT1lLmtleSYmKG4ua2V5RG93bj0hMCxlLnBlcnNpc3QoKSxuLnJpcHBsZS5zdG9wKGUsZnVuY3Rpb24oKXtuLnJpcHBsZS5zdGFydChlKX0pKSxhJiZhKGUpLGUudGFyZ2V0IT09ZS5jdXJyZW50VGFyZ2V0fHwhcnx8XCJidXR0b25cIj09PXJ8fFwiIFwiIT09ZS5rZXkmJlwiRW50ZXJcIiE9PWUua2V5fHxcIkFcIj09PW4uYnV0dG9uLnRhZ05hbWUmJm4uYnV0dG9uLmhyZWZ8fChlLnByZXZlbnREZWZhdWx0KCksaSYmaShlKSl9LG4uaGFuZGxlS2V5VXA9ZnVuY3Rpb24oZSl7bi5wcm9wcy5mb2N1c1JpcHBsZSYmXCIgXCI9PT1lLmtleSYmbi5yaXBwbGUmJm4uc3RhdGUuZm9jdXNWaXNpYmxlJiYobi5rZXlEb3duPSExLGUucGVyc2lzdCgpLG4ucmlwcGxlLnN0b3AoZSxmdW5jdGlvbigpe24ucmlwcGxlLnB1bHNhdGUoZSl9KSksbi5wcm9wcy5vbktleVVwJiZuLnByb3BzLm9uS2V5VXAoZSl9LG4uaGFuZGxlRm9jdXM9ZnVuY3Rpb24oZSl7bi5wcm9wcy5kaXNhYmxlZHx8KG4uYnV0dG9ufHwobi5idXR0b249ZS5jdXJyZW50VGFyZ2V0KSxlLnBlcnNpc3QoKSwoMCx2LmRldGVjdEZvY3VzVmlzaWJsZSkoKDAscC5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKG4pKSxuLmJ1dHRvbixmdW5jdGlvbigpe24ub25Gb2N1c1Zpc2libGVIYW5kbGVyKGUpfSksbi5wcm9wcy5vbkZvY3VzJiZuLnByb3BzLm9uRm9jdXMoZSkpfSxufXJldHVybigwLGQuZGVmYXVsdCkodCxlKSwoMCxzLmRlZmF1bHQpKHQsW3trZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmJ1dHRvbj1tLmRlZmF1bHQuZmluZERPTU5vZGUodGhpcyksKDAsdi5saXN0ZW5Gb3JGb2N1c0tleXMpKCgwLGguZGVmYXVsdCkodGhpcy5idXR0b24pKSx0aGlzLnByb3BzLmFjdGlvbiYmdGhpcy5wcm9wcy5hY3Rpb24oe2ZvY3VzVmlzaWJsZTpmdW5jdGlvbigpe2Uuc2V0U3RhdGUoe2ZvY3VzVmlzaWJsZTohMH0pLGUuYnV0dG9uLmZvY3VzKCl9fSl9fSx7a2V5OlwiY29tcG9uZW50RGlkVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLnByb3BzLmZvY3VzUmlwcGxlJiYhdGhpcy5wcm9wcy5kaXNhYmxlUmlwcGxlJiYhdC5mb2N1c1Zpc2libGUmJnRoaXMuc3RhdGUuZm9jdXNWaXNpYmxlJiZ0aGlzLnJpcHBsZS5wdWxzYXRlKCl9fSx7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLmZvY3VzVmlzaWJsZVRpbWVvdXQpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLnByb3BzLG49KHQuYWN0aW9uLHQuYnV0dG9uUmVmKSxyPXQuY2VudGVyUmlwcGxlLGw9dC5jaGlsZHJlbixzPXQuY2xhc3Nlcyx1PXQuY2xhc3NOYW1lLGM9dC5jb21wb25lbnQsZD10LmRpc2FibGVkLHA9dC5kaXNhYmxlUmlwcGxlLG09KHQuZGlzYWJsZVRvdWNoUmlwcGxlLHQuZm9jdXNSaXBwbGUsdC5mb2N1c1Zpc2libGVDbGFzc05hbWUpLGg9KHQub25CbHVyLHQub25Gb2N1cyx0Lm9uRm9jdXNWaXNpYmxlLHQub25LZXlEb3duLHQub25LZXlVcCx0Lm9uTW91c2VEb3duLHQub25Nb3VzZUxlYXZlLHQub25Nb3VzZVVwLHQub25Ub3VjaEVuZCx0Lm9uVG91Y2hNb3ZlLHQub25Ub3VjaFN0YXJ0LHQudGFiSW5kZXgpLGI9dC5Ub3VjaFJpcHBsZVByb3BzLHY9dC50eXBlLEU9KDAsaS5kZWZhdWx0KSh0LFtcImFjdGlvblwiLFwiYnV0dG9uUmVmXCIsXCJjZW50ZXJSaXBwbGVcIixcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbXBvbmVudFwiLFwiZGlzYWJsZWRcIixcImRpc2FibGVSaXBwbGVcIixcImRpc2FibGVUb3VjaFJpcHBsZVwiLFwiZm9jdXNSaXBwbGVcIixcImZvY3VzVmlzaWJsZUNsYXNzTmFtZVwiLFwib25CbHVyXCIsXCJvbkZvY3VzXCIsXCJvbkZvY3VzVmlzaWJsZVwiLFwib25LZXlEb3duXCIsXCJvbktleVVwXCIsXCJvbk1vdXNlRG93blwiLFwib25Nb3VzZUxlYXZlXCIsXCJvbk1vdXNlVXBcIixcIm9uVG91Y2hFbmRcIixcIm9uVG91Y2hNb3ZlXCIsXCJvblRvdWNoU3RhcnRcIixcInRhYkluZGV4XCIsXCJUb3VjaFJpcHBsZVByb3BzXCIsXCJ0eXBlXCJdKSx4PSgwLGcuZGVmYXVsdCkocy5yb290LChlPXt9LCgwLGEuZGVmYXVsdCkoZSxzLmRpc2FibGVkLGQpLCgwLGEuZGVmYXVsdCkoZSxzLmZvY3VzVmlzaWJsZSx0aGlzLnN0YXRlLmZvY3VzVmlzaWJsZSksKDAsYS5kZWZhdWx0KShlLG0sdGhpcy5zdGF0ZS5mb2N1c1Zpc2libGUpLGUpLHUpLHc9YztcImJ1dHRvblwiPT09dyYmRS5ocmVmJiYodz1cImFcIik7dmFyIGs9e307cmV0dXJuXCJidXR0b25cIj09PXc/KGsudHlwZT12fHxcImJ1dHRvblwiLGsuZGlzYWJsZWQ9ZCk6ay5yb2xlPVwiYnV0dG9uXCIsZi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodywoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6eCxvbkJsdXI6dGhpcy5oYW5kbGVCbHVyLG9uRm9jdXM6dGhpcy5oYW5kbGVGb2N1cyxvbktleURvd246dGhpcy5oYW5kbGVLZXlEb3duLG9uS2V5VXA6dGhpcy5oYW5kbGVLZXlVcCxvbk1vdXNlRG93bjp0aGlzLmhhbmRsZU1vdXNlRG93bixvbk1vdXNlTGVhdmU6dGhpcy5oYW5kbGVNb3VzZUxlYXZlLG9uTW91c2VVcDp0aGlzLmhhbmRsZU1vdXNlVXAsb25Ub3VjaEVuZDp0aGlzLmhhbmRsZVRvdWNoRW5kLG9uVG91Y2hNb3ZlOnRoaXMuaGFuZGxlVG91Y2hNb3ZlLG9uVG91Y2hTdGFydDp0aGlzLmhhbmRsZVRvdWNoU3RhcnQsb25Db250ZXh0TWVudTp0aGlzLmhhbmRsZUNvbnRleHRNZW51LHJlZjpuLHRhYkluZGV4OmQ/XCItMVwiOmh9LGssRSksbCxwfHxkP251bGw6Zi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoeS5kZWZhdWx0LG51bGwsZi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoUy5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe2lubmVyUmVmOnRoaXMub25SaXBwbGVSZWYsY2VudGVyOnJ9LGIpKSkpfX1dLFt7a2V5OlwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dC5mb2N1c1Zpc2libGU/e2ZvY3VzVmlzaWJsZTohMSxsYXN0RGlzYWJsZWQ6ZS5kaXNhYmxlZH06IXQucHJldlN0YXRlJiZlLmRpc2FibGVkJiZ0LmZvY3VzVmlzaWJsZT97Zm9jdXNWaXNpYmxlOiExLGxhc3REaXNhYmxlZDplLmRpc2FibGVkfTp7bGFzdERpc2FibGVkOmUuZGlzYWJsZWR9fX1dKSx0fShmLmRlZmF1bHQuQ29tcG9uZW50KTt3LmRlZmF1bHRQcm9wcz17Y2VudGVyUmlwcGxlOiExLGNvbXBvbmVudDpcImJ1dHRvblwiLGRpc2FibGVSaXBwbGU6ITEsZGlzYWJsZVRvdWNoUmlwcGxlOiExLGZvY3VzUmlwcGxlOiExLHRhYkluZGV4OlwiMFwiLHR5cGU6XCJidXR0b25cIn07dmFyIGs9KDAsYi5kZWZhdWx0KSh4LHtuYW1lOlwiTXVpQnV0dG9uQmFzZVwifSkodyk7dC5kZWZhdWx0PWt9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDEyKSksYT1yKG4oMTMpKSxpPXIobigxNCkpLGw9cihuKDE1KSkscz1yKG4oMTYpKSx1PXIobigwKSksYz0ocihuKDEpKSxuKDcpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuOygwLG8uZGVmYXVsdCkodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShyKSxzPTA7czxyO3MrKylhW3NdPWFyZ3VtZW50c1tzXTtyZXR1cm4obj0oMCxpLmRlZmF1bHQpKHRoaXMsKGU9KDAsbC5kZWZhdWx0KSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQoYSkpKSkubW91bnRlZD0hMSxuLnN0YXRlPXttb3VudGVkOiExfSxufXJldHVybigwLHMuZGVmYXVsdCkodCxlKSwoMCxhLmRlZmF1bHQpKHQsW3trZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLm1vdW50ZWQ9ITAsdGhpcy5wcm9wcy5kZWZlcj9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtlLm1vdW50ZWQmJmUuc2V0U3RhdGUoe21vdW50ZWQ6ITB9KX0pfSk6dGhpcy5zZXRTdGF0ZSh7bW91bnRlZDohMH0pfX0se2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1vdW50ZWQ9ITF9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jaGlsZHJlbixuPWUuZmFsbGJhY2s7cmV0dXJuIHRoaXMuc3RhdGUubW91bnRlZD90Om59fV0pLHR9KHUuZGVmYXVsdC5Db21wb25lbnQpKTtjLmRlZmF1bHRQcm9wcz17ZGVmZXI6ITEsZmFsbGJhY2s6bnVsbH07dmFyIGQ9Yzt0LmRlZmF1bHQ9ZH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZXRlY3RGb2N1c1Zpc2libGU9ZnVuY3Rpb24gZSh0LG4scil7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjE7dC5mb2N1c1Zpc2libGVUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgbD0oMCxvLmRlZmF1bHQpKG4pLHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hY3RpdmVFbGVtZW50O2Zvcig7dCYmdC5zaGFkb3dSb290JiZ0LnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudDspdD10LnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudDtyZXR1cm4gdH0obCk7YS5mb2N1c0tleVByZXNzZWQmJihzPT09bnx8bi5jb250YWlucyhzKSk/cigpOmk8dC5mb2N1c1Zpc2libGVNYXhDaGVja1RpbWVzJiZlKHQsbixyLGkrMSl9LHQuZm9jdXNWaXNpYmxlQ2hlY2tUaW1lKX0sdC5saXN0ZW5Gb3JGb2N1c0tleXM9ZnVuY3Rpb24oZSl7ZS5hZGRFdmVudExpc3RlbmVyKFwia2V5dXBcIixsKX07cihuKDE3KSk7dmFyIG89cihuKDI2KSksYT17Zm9jdXNLZXlQcmVzc2VkOiExLGtleVVwRXZlbnRUaW1lb3V0Oi0xfTt2YXIgaT1bOSwxMywyNywzMiwzNywzOCwzOSw0MF07dmFyIGw9ZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKGUpe3JldHVybiBpLmluZGV4T2YoZS5rZXlDb2RlKT4tMX0pKGUpJiYoYS5mb2N1c0tleVByZXNzZWQ9ITAsY2xlYXJUaW1lb3V0KGEua2V5VXBFdmVudFRpbWVvdXQpLGEua2V5VXBFdmVudFRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2EuZm9jdXNLZXlQcmVzc2VkPSExfSw1MDApKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz10LkRFTEFZX1JJUFBMRT12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig1KSksaT1yKG4oMTQwKSksbD1yKG4oMTIpKSxzPXIobigxMykpLHU9cihuKDE0KSksYz1yKG4oMTUpKSxkPXIobigxNikpLHA9cihuKDQ1KSksZj1yKG4oMCkpLG09KHIobigxKSkscihuKDIyKSkpLGc9cihuKDQzNykpLGg9cihuKDYpKSxiPXIobig4KSkseT1yKG4oNDM5KSksdj01NTAsUz04MDt0LkRFTEFZX1JJUFBMRT1TO3ZhciBFPWZ1bmN0aW9uKGUpe3JldHVybntyb290OntkaXNwbGF5OlwiYmxvY2tcIixwb3NpdGlvbjpcImFic29sdXRlXCIsb3ZlcmZsb3c6XCJoaWRkZW5cIixib3JkZXJSYWRpdXM6XCJpbmhlcml0XCIsd2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLGxlZnQ6MCx0b3A6MCxwb2ludGVyRXZlbnRzOlwibm9uZVwiLHpJbmRleDowfSxyaXBwbGU6e3dpZHRoOjUwLGhlaWdodDo1MCxsZWZ0OjAsdG9wOjAsb3BhY2l0eTowLHBvc2l0aW9uOlwiYWJzb2x1dGVcIn0scmlwcGxlVmlzaWJsZTp7b3BhY2l0eTouMyx0cmFuc2Zvcm06XCJzY2FsZSgxKVwiLGFuaW1hdGlvbjpcIm11aS1yaXBwbGUtZW50ZXIgXCIuY29uY2F0KHYsXCJtcyBcIikuY29uY2F0KGUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VJbk91dCksYW5pbWF0aW9uTmFtZTpcIiRtdWktcmlwcGxlLWVudGVyXCJ9LHJpcHBsZVB1bHNhdGU6e2FuaW1hdGlvbkR1cmF0aW9uOlwiXCIuY29uY2F0KGUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlcixcIm1zXCIpfSxjaGlsZDp7b3BhY2l0eToxLGRpc3BsYXk6XCJibG9ja1wiLHdpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIixib3JkZXJSYWRpdXM6XCI1MCVcIixiYWNrZ3JvdW5kQ29sb3I6XCJjdXJyZW50Q29sb3JcIn0sY2hpbGRMZWF2aW5nOntvcGFjaXR5OjAsYW5pbWF0aW9uOlwibXVpLXJpcHBsZS1leGl0IFwiLmNvbmNhdCh2LFwibXMgXCIpLmNvbmNhdChlLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlSW5PdXQpLGFuaW1hdGlvbk5hbWU6XCIkbXVpLXJpcHBsZS1leGl0XCJ9LGNoaWxkUHVsc2F0ZTp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLGxlZnQ6MCx0b3A6MCxhbmltYXRpb246XCJtdWktcmlwcGxlLXB1bHNhdGUgMjUwMG1zIFwiLmNvbmNhdChlLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlSW5PdXQsXCIgMjAwbXMgaW5maW5pdGVcIiksYW5pbWF0aW9uTmFtZTpcIiRtdWktcmlwcGxlLXB1bHNhdGVcIn0sXCJAa2V5ZnJhbWVzIG11aS1yaXBwbGUtZW50ZXJcIjp7XCIwJVwiOnt0cmFuc2Zvcm06XCJzY2FsZSgwKVwiLG9wYWNpdHk6LjF9LFwiMTAwJVwiOnt0cmFuc2Zvcm06XCJzY2FsZSgxKVwiLG9wYWNpdHk6LjN9fSxcIkBrZXlmcmFtZXMgbXVpLXJpcHBsZS1leGl0XCI6e1wiMCVcIjp7b3BhY2l0eToxfSxcIjEwMCVcIjp7b3BhY2l0eTowfX0sXCJAa2V5ZnJhbWVzIG11aS1yaXBwbGUtcHVsc2F0ZVwiOntcIjAlXCI6e3RyYW5zZm9ybTpcInNjYWxlKDEpXCJ9LFwiNTAlXCI6e3RyYW5zZm9ybTpcInNjYWxlKDAuOTIpXCJ9LFwiMTAwJVwiOnt0cmFuc2Zvcm06XCJzY2FsZSgxKVwifX19fTt0LnN0eWxlcz1FO3ZhciB4PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuOygwLGwuZGVmYXVsdCkodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4obj0oMCx1LmRlZmF1bHQpKHRoaXMsKGU9KDAsYy5kZWZhdWx0KSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSkuc3RhdGU9e25leHRLZXk6MCxyaXBwbGVzOltdfSxuLnB1bHNhdGU9ZnVuY3Rpb24oKXtuLnN0YXJ0KHt9LHtwdWxzYXRlOiEwfSl9LG4uc3RhcnQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30scj1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxvPXQucHVsc2F0ZSxhPXZvaWQgMCE9PW8mJm8saT10LmNlbnRlcixsPXZvaWQgMD09PWk/bi5wcm9wcy5jZW50ZXJ8fHQucHVsc2F0ZTppLHM9dC5mYWtlRWxlbWVudCx1PXZvaWQgMCE9PXMmJnM7aWYoXCJtb3VzZWRvd25cIj09PWUudHlwZSYmbi5pZ25vcmluZ01vdXNlRG93biluLmlnbm9yaW5nTW91c2VEb3duPSExO2Vsc2V7XCJ0b3VjaHN0YXJ0XCI9PT1lLnR5cGUmJihuLmlnbm9yaW5nTW91c2VEb3duPSEwKTt2YXIgYyxkLGYsZz11P251bGw6bS5kZWZhdWx0LmZpbmRET01Ob2RlKCgwLHAuZGVmYXVsdCkoKDAscC5kZWZhdWx0KShuKSkpLGg9Zz9nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOnt3aWR0aDowLGhlaWdodDowLGxlZnQ6MCx0b3A6MH07aWYobHx8MD09PWUuY2xpZW50WCYmMD09PWUuY2xpZW50WXx8IWUuY2xpZW50WCYmIWUudG91Y2hlcyljPU1hdGgucm91bmQoaC53aWR0aC8yKSxkPU1hdGgucm91bmQoaC5oZWlnaHQvMik7ZWxzZXt2YXIgYj1lLmNsaWVudFg/ZS5jbGllbnRYOmUudG91Y2hlc1swXS5jbGllbnRYLHk9ZS5jbGllbnRZP2UuY2xpZW50WTplLnRvdWNoZXNbMF0uY2xpZW50WTtjPU1hdGgucm91bmQoYi1oLmxlZnQpLGQ9TWF0aC5yb3VuZCh5LWgudG9wKX1pZihsKShmPU1hdGguc3FydCgoMipNYXRoLnBvdyhoLndpZHRoLDIpK01hdGgucG93KGguaGVpZ2h0LDIpKS8zKSklMj09MCYmKGYrPTEpO2Vsc2V7dmFyIHY9MipNYXRoLm1heChNYXRoLmFicygoZz9nLmNsaWVudFdpZHRoOjApLWMpLGMpKzIsRT0yKk1hdGgubWF4KE1hdGguYWJzKChnP2cuY2xpZW50SGVpZ2h0OjApLWQpLGQpKzI7Zj1NYXRoLnNxcnQoTWF0aC5wb3codiwyKStNYXRoLnBvdyhFLDIpKX1lLnRvdWNoZXM/KG4uc3RhcnRUaW1lckNvbW1pdD1mdW5jdGlvbigpe24uc3RhcnRDb21taXQoe3B1bHNhdGU6YSxyaXBwbGVYOmMscmlwcGxlWTpkLHJpcHBsZVNpemU6ZixjYjpyfSl9LG4uc3RhcnRUaW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bi5zdGFydFRpbWVyQ29tbWl0JiYobi5zdGFydFRpbWVyQ29tbWl0KCksbi5zdGFydFRpbWVyQ29tbWl0PW51bGwpfSxTKSk6bi5zdGFydENvbW1pdCh7cHVsc2F0ZTphLHJpcHBsZVg6YyxyaXBwbGVZOmQscmlwcGxlU2l6ZTpmLGNiOnJ9KX19LG4uc3RhcnRDb21taXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wdWxzYXRlLHI9ZS5yaXBwbGVYLG89ZS5yaXBwbGVZLGE9ZS5yaXBwbGVTaXplLGw9ZS5jYjtuLnNldFN0YXRlKGZ1bmN0aW9uKGUpe3JldHVybntuZXh0S2V5OmUubmV4dEtleSsxLHJpcHBsZXM6W10uY29uY2F0KCgwLGkuZGVmYXVsdCkoZS5yaXBwbGVzKSxbZi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoeS5kZWZhdWx0LHtrZXk6ZS5uZXh0S2V5LGNsYXNzZXM6bi5wcm9wcy5jbGFzc2VzLHRpbWVvdXQ6e2V4aXQ6dixlbnRlcjp2fSxwdWxzYXRlOnQscmlwcGxlWDpyLHJpcHBsZVk6byxyaXBwbGVTaXplOmF9KV0pfX0sbCl9LG4uc3RvcD1mdW5jdGlvbihlLHQpe2NsZWFyVGltZW91dChuLnN0YXJ0VGltZXIpO3ZhciByPW4uc3RhdGUucmlwcGxlcztpZihcInRvdWNoZW5kXCI9PT1lLnR5cGUmJm4uc3RhcnRUaW1lckNvbW1pdClyZXR1cm4gZS5wZXJzaXN0KCksbi5zdGFydFRpbWVyQ29tbWl0KCksbi5zdGFydFRpbWVyQ29tbWl0PW51bGwsdm9pZChuLnN0YXJ0VGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe24uc3RvcChlLHQpfSkpO24uc3RhcnRUaW1lckNvbW1pdD1udWxsLHImJnIubGVuZ3RoJiZuLnNldFN0YXRlKHtyaXBwbGVzOnIuc2xpY2UoMSl9LHQpfSxufXJldHVybigwLGQuZGVmYXVsdCkodCxlKSwoMCxzLmRlZmF1bHQpKHQsW3trZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuc3RhcnRUaW1lcil9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9KGUuY2VudGVyLGUuY2xhc3Nlcyksbj1lLmNsYXNzTmFtZSxyPSgwLGEuZGVmYXVsdCkoZSxbXCJjZW50ZXJcIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiXSk7cmV0dXJuIGYuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGcuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtjb21wb25lbnQ6XCJzcGFuXCIsZW50ZXI6ITAsZXhpdDohMCxjbGFzc05hbWU6KDAsaC5kZWZhdWx0KSh0LnJvb3Qsbil9LHIpLHRoaXMuc3RhdGUucmlwcGxlcyl9fV0pLHR9KGYuZGVmYXVsdC5QdXJlQ29tcG9uZW50KTt4LmRlZmF1bHRQcm9wcz17Y2VudGVyOiExfTt2YXIgdz0oMCxiLmRlZmF1bHQpKEUse2ZsaXA6ITEsbmFtZTpcIk11aVRvdWNoUmlwcGxlXCJ9KSh4KTt0LmRlZmF1bHQ9d30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAsbj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XTtyZXR1cm4gbn19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHxcIltvYmplY3QgQXJndW1lbnRzXVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiBBcnJheS5mcm9tKGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIil9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9bChuKDEpKSxvPWwobigwKSksYT1uKDEzMyksaT1uKDQzOCk7ZnVuY3Rpb24gbChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gcygpe3JldHVybihzPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gdShlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gZX12YXIgYz1PYmplY3QudmFsdWVzfHxmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSl9LGQ9ZnVuY3Rpb24oZSl7dmFyIHQsbjtmdW5jdGlvbiByKHQsbil7dmFyIHIsbz0ocj1lLmNhbGwodGhpcyx0LG4pfHx0aGlzKS5oYW5kbGVFeGl0ZWQuYmluZCh1KHUocikpKTtyZXR1cm4gci5zdGF0ZT17aGFuZGxlRXhpdGVkOm8sZmlyc3RSZW5kZXI6ITB9LHJ9bj1lLCh0PXIpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPW47dmFyIGE9ci5wcm90b3R5cGU7cmV0dXJuIGEuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJue3RyYW5zaXRpb25Hcm91cDp7aXNNb3VudGluZzohdGhpcy5hcHBlYXJlZH19fSxhLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dGhpcy5hcHBlYXJlZD0hMCx0aGlzLm1vdW50ZWQ9ITB9LGEuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt0aGlzLm1vdW50ZWQ9ITF9LHIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5jaGlsZHJlbixyPXQuaGFuZGxlRXhpdGVkO3JldHVybntjaGlsZHJlbjp0LmZpcnN0UmVuZGVyPygwLGkuZ2V0SW5pdGlhbENoaWxkTWFwcGluZykoZSxyKTooMCxpLmdldE5leHRDaGlsZE1hcHBpbmcpKGUsbixyKSxmaXJzdFJlbmRlcjohMX19LGEuaGFuZGxlRXhpdGVkPWZ1bmN0aW9uKGUsdCl7dmFyIG49KDAsaS5nZXRDaGlsZE1hcHBpbmcpKHRoaXMucHJvcHMuY2hpbGRyZW4pO2Uua2V5IGluIG58fChlLnByb3BzLm9uRXhpdGVkJiZlLnByb3BzLm9uRXhpdGVkKHQpLHRoaXMubW91bnRlZCYmdGhpcy5zZXRTdGF0ZShmdW5jdGlvbih0KXt2YXIgbj1zKHt9LHQuY2hpbGRyZW4pO3JldHVybiBkZWxldGUgbltlLmtleV0se2NoaWxkcmVuOm59fSkpfSxhLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNvbXBvbmVudCxuPWUuY2hpbGRGYWN0b3J5LHI9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsW1wiY29tcG9uZW50XCIsXCJjaGlsZEZhY3RvcnlcIl0pLGE9Yyh0aGlzLnN0YXRlLmNoaWxkcmVuKS5tYXAobik7cmV0dXJuIGRlbGV0ZSByLmFwcGVhcixkZWxldGUgci5lbnRlcixkZWxldGUgci5leGl0LG51bGw9PT10P2E6by5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodCxyLGEpfSxyfShvLmRlZmF1bHQuQ29tcG9uZW50KTtkLmNoaWxkQ29udGV4dFR5cGVzPXt0cmFuc2l0aW9uR3JvdXA6ci5kZWZhdWx0Lm9iamVjdC5pc1JlcXVpcmVkfSxkLnByb3BUeXBlcz17fSxkLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OlwiZGl2XCIsY2hpbGRGYWN0b3J5OmZ1bmN0aW9uKGUpe3JldHVybiBlfX07dmFyIHA9KDAsYS5wb2x5ZmlsbCkoZCk7dC5kZWZhdWx0PXAsZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3QuX19lc01vZHVsZT0hMCx0LmdldENoaWxkTWFwcGluZz1vLHQubWVyZ2VDaGlsZE1hcHBpbmdzPWEsdC5nZXRJbml0aWFsQ2hpbGRNYXBwaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oZS5jaGlsZHJlbixmdW5jdGlvbihuKXtyZXR1cm4oMCxyLmNsb25lRWxlbWVudCkobix7b25FeGl0ZWQ6dC5iaW5kKG51bGwsbiksaW46ITAsYXBwZWFyOmkobixcImFwcGVhclwiLGUpLGVudGVyOmkobixcImVudGVyXCIsZSksZXhpdDppKG4sXCJleGl0XCIsZSl9KX0pfSx0LmdldE5leHRDaGlsZE1hcHBpbmc9ZnVuY3Rpb24oZSx0LG4pe3ZhciBsPW8oZS5jaGlsZHJlbikscz1hKHQsbCk7cmV0dXJuIE9iamVjdC5rZXlzKHMpLmZvckVhY2goZnVuY3Rpb24obyl7dmFyIGE9c1tvXTtpZigoMCxyLmlzVmFsaWRFbGVtZW50KShhKSl7dmFyIHU9byBpbiB0LGM9byBpbiBsLGQ9dFtvXSxwPSgwLHIuaXNWYWxpZEVsZW1lbnQpKGQpJiYhZC5wcm9wcy5pbjshY3x8dSYmIXA/Y3x8IXV8fHA/YyYmdSYmKDAsci5pc1ZhbGlkRWxlbWVudCkoZCkmJihzW29dPSgwLHIuY2xvbmVFbGVtZW50KShhLHtvbkV4aXRlZDpuLmJpbmQobnVsbCxhKSxpbjpkLnByb3BzLmluLGV4aXQ6aShhLFwiZXhpdFwiLGUpLGVudGVyOmkoYSxcImVudGVyXCIsZSl9KSk6c1tvXT0oMCxyLmNsb25lRWxlbWVudCkoYSx7aW46ITF9KTpzW29dPSgwLHIuY2xvbmVFbGVtZW50KShhLHtvbkV4aXRlZDpuLmJpbmQobnVsbCxhKSxpbjohMCxleGl0OmkoYSxcImV4aXRcIixlKSxlbnRlcjppKGEsXCJlbnRlclwiLGUpfSl9fSksc307dmFyIHI9bigwKTtmdW5jdGlvbiBvKGUsdCl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZSYmci5DaGlsZHJlbi5tYXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gZX0pLmZvckVhY2goZnVuY3Rpb24oZSl7bltlLmtleV09ZnVuY3Rpb24oZSl7cmV0dXJuIHQmJigwLHIuaXNWYWxpZEVsZW1lbnQpKGUpP3QoZSk6ZX0oZSl9KSxufWZ1bmN0aW9uIGEoZSx0KXtmdW5jdGlvbiBuKG4pe3JldHVybiBuIGluIHQ/dFtuXTplW25dfWU9ZXx8e30sdD10fHx7fTt2YXIgcixvPU9iamVjdC5jcmVhdGUobnVsbCksYT1bXTtmb3IodmFyIGkgaW4gZSlpIGluIHQ/YS5sZW5ndGgmJihvW2ldPWEsYT1bXSk6YS5wdXNoKGkpO3ZhciBsPXt9O2Zvcih2YXIgcyBpbiB0KXtpZihvW3NdKWZvcihyPTA7cjxvW3NdLmxlbmd0aDtyKyspe3ZhciB1PW9bc11bcl07bFtvW3NdW3JdXT1uKHUpfWxbc109bihzKX1mb3Iocj0wO3I8YS5sZW5ndGg7cisrKWxbYVtyXV09bihhW3JdKTtyZXR1cm4gbH1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gbnVsbCE9blt0XT9uW3RdOmUucHJvcHNbdF19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigxMikpLHM9cihuKDEzKSksdT1yKG4oMTQpKSxjPXIobigxNSkpLGQ9cihuKDE2KSkscD1yKG4oMCkpLGY9KHIobigxKSkscihuKDYpKSksbT1yKG4oNTEpKSxnPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuOygwLGwuZGVmYXVsdCkodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4obj0oMCx1LmRlZmF1bHQpKHRoaXMsKGU9KDAsYy5kZWZhdWx0KSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSkuc3RhdGU9e3Zpc2libGU6ITEsbGVhdmluZzohMX0sbi5oYW5kbGVFbnRlcj1mdW5jdGlvbigpe24uc2V0U3RhdGUoe3Zpc2libGU6ITB9KX0sbi5oYW5kbGVFeGl0PWZ1bmN0aW9uKCl7bi5zZXRTdGF0ZSh7bGVhdmluZzohMH0pfSxufXJldHVybigwLGQuZGVmYXVsdCkodCxlKSwoMCxzLmRlZmF1bHQpKHQsW3trZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQsbj10aGlzLnByb3BzLHI9bi5jbGFzc2VzLGw9bi5jbGFzc05hbWUscz1uLnB1bHNhdGUsdT1uLnJpcHBsZVgsYz1uLnJpcHBsZVksZD1uLnJpcHBsZVNpemUsZz0oMCxpLmRlZmF1bHQpKG4sW1wiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJwdWxzYXRlXCIsXCJyaXBwbGVYXCIsXCJyaXBwbGVZXCIsXCJyaXBwbGVTaXplXCJdKSxoPXRoaXMuc3RhdGUsYj1oLnZpc2libGUseT1oLmxlYXZpbmcsdj0oMCxmLmRlZmF1bHQpKHIucmlwcGxlLChlPXt9LCgwLGEuZGVmYXVsdCkoZSxyLnJpcHBsZVZpc2libGUsYiksKDAsYS5kZWZhdWx0KShlLHIucmlwcGxlUHVsc2F0ZSxzKSxlKSxsKSxTPXt3aWR0aDpkLGhlaWdodDpkLHRvcDotZC8yK2MsbGVmdDotZC8yK3V9LEU9KDAsZi5kZWZhdWx0KShyLmNoaWxkLCh0PXt9LCgwLGEuZGVmYXVsdCkodCxyLmNoaWxkTGVhdmluZyx5KSwoMCxhLmRlZmF1bHQpKHQsci5jaGlsZFB1bHNhdGUscyksdCkpO3JldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7b25FbnRlcjp0aGlzLmhhbmRsZUVudGVyLG9uRXhpdDp0aGlzLmhhbmRsZUV4aXR9LGcpLHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6dixzdHlsZTpTfSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOkV9KSkpfX1dKSx0fShwLmRlZmF1bHQuQ29tcG9uZW50KTtnLmRlZmF1bHRQcm9wcz17cHVsc2F0ZTohMX07dmFyIGg9Zzt0LmRlZmF1bHQ9aH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGZ1bmN0aW9uKG8pe3ImJnIuY2FsbChlLG8pO3ZhciBhPSExO3JldHVybiBvLmRlZmF1bHRQcmV2ZW50ZWQmJihhPSEwKSxlLnByb3BzLmRpc2FibGVUb3VjaFJpcHBsZSYmXCJCbHVyXCIhPT10JiYoYT0hMCksIWEmJmUucmlwcGxlJiZlLnJpcHBsZVtuXShvKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnByb3BzW1wib25cIi5jb25jYXQodCldJiZlLnByb3BzW1wib25cIi5jb25jYXQodCldKG8pLCEwfX07XCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdyYmKHI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSk7dmFyIG89cjt0LmRlZmF1bHQ9b30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oMCkpLGE9KHIobigxKSkscihuKDE0MSkpKTt2YXIgaT1mdW5jdGlvbihlKXt2YXIgdD1lLmFsaWduSXRlbXMsbj1lLmNoaWxkcmVuLHI9ZS5kZW5zZTtyZXR1cm4gby5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYS5kZWZhdWx0LkNvbnN1bWVyLG51bGwsZnVuY3Rpb24oZSl7dmFyIGk9e2RlbnNlOnJ8fGUuZGVuc2V8fCExLGFsaWduSXRlbXM6dH07cmV0dXJuIG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KGEuZGVmYXVsdC5Qcm92aWRlcix7dmFsdWU6aX0sbihpKSl9KX07dC5kZWZhdWx0PWl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDkpKSxhPXIobig1KSksaT1yKG4oNCkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KHIobigxNykpLG4oNykscihuKDgpKSksYz1mdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gZS5zaGFkb3dzLmZvckVhY2goZnVuY3Rpb24oZSxuKXt0W1wiZWxldmF0aW9uXCIuY29uY2F0KG4pXT17Ym94U2hhZG93OmV9fSksKDAsaS5kZWZhdWx0KSh7cm9vdDp7YmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5iYWNrZ3JvdW5kLnBhcGVyfSxyb3VuZGVkOntib3JkZXJSYWRpdXM6ZS5zaGFwZS5ib3JkZXJSYWRpdXN9fSx0KX07ZnVuY3Rpb24gZChlKXt2YXIgdD1lLmNsYXNzZXMsbj1lLmNsYXNzTmFtZSxyPWUuY29tcG9uZW50LHU9ZS5zcXVhcmUsYz1lLmVsZXZhdGlvbixkPSgwLGEuZGVmYXVsdCkoZSxbXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbXBvbmVudFwiLFwic3F1YXJlXCIsXCJlbGV2YXRpb25cIl0pLHA9KDAscy5kZWZhdWx0KSh0LnJvb3QsdFtcImVsZXZhdGlvblwiLmNvbmNhdChjKV0sKDAsby5kZWZhdWx0KSh7fSx0LnJvdW5kZWQsIXUpLG4pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChyLCgwLGkuZGVmYXVsdCkoe2NsYXNzTmFtZTpwfSxkKSl9dC5zdHlsZXM9YyxkLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OlwiZGl2XCIsZWxldmF0aW9uOjIsc3F1YXJlOiExfTt2YXIgcD0oMCx1LmRlZmF1bHQpKGMse25hbWU6XCJNdWlQYXBlclwifSkoZCk7dC5kZWZhdWx0PXB9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig1KSksaT1yKG4oMTIpKSxsPXIobigxMykpLHM9cihuKDE0KSksdT1yKG4oMTUpKSxjPXIobigxNikpLGQ9cihuKDApKSxwPShyKG4oMSkpLHIobigyMikpKSxmPShyKG4oMTcpKSxyKG4oMTQyKSkpLG09cihuKDE0MykpLGc9KG4oNykscihuKDI2KSkpLGg9cihuKDc4KSksYj1uKDIxKSx5PXIobig4KSksdj1yKG4oNTQpKSxTPXIobig4NykpLEU9cihuKDgwKSk7ZnVuY3Rpb24geChlLHQpe3ZhciBuPTA7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQ/bj10OlwiY2VudGVyXCI9PT10P249ZS5oZWlnaHQvMjpcImJvdHRvbVwiPT09dCYmKG49ZS5oZWlnaHQpLG59ZnVuY3Rpb24gdyhlLHQpe3ZhciBuPTA7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQ/bj10OlwiY2VudGVyXCI9PT10P249ZS53aWR0aC8yOlwicmlnaHRcIj09PXQmJihuPWUud2lkdGgpLG59ZnVuY3Rpb24gayhlKXtyZXR1cm5bZS5ob3Jpem9udGFsLGUudmVydGljYWxdLm1hcChmdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT9cIlwiLmNvbmNhdChlLFwicHhcIik6ZX0pLmpvaW4oXCIgXCIpfWZ1bmN0aW9uIF8oZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lKCk6ZX12YXIgVD17cGFwZXI6e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixvdmVyZmxvd1k6XCJhdXRvXCIsb3ZlcmZsb3dYOlwiaGlkZGVuXCIsbWluV2lkdGg6MTYsbWluSGVpZ2h0OjE2LG1heFdpZHRoOlwiY2FsYygxMDAlIC0gMzJweClcIixtYXhIZWlnaHQ6XCJjYWxjKDEwMCUgLSAzMnB4KVwiLG91dGxpbmU6XCJub25lXCJ9fTt0LnN0eWxlcz1UO3ZhciBBPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZTtyZXR1cm4oMCxpLmRlZmF1bHQpKHRoaXMsdCksKGU9KDAscy5kZWZhdWx0KSh0aGlzLCgwLHUuZGVmYXVsdCkodCkuY2FsbCh0aGlzKSkpLmhhbmRsZUdldE9mZnNldFRvcD14LGUuaGFuZGxlR2V0T2Zmc2V0TGVmdD13LGUuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXtlLmhhbmRsZVJlc2l6ZS5jbGVhcigpfSxlLnNldFBvc2l0aW9uaW5nU3R5bGVzPWZ1bmN0aW9uKHQpe3ZhciBuPWUuZ2V0UG9zaXRpb25pbmdTdHlsZSh0KTtudWxsIT09bi50b3AmJih0LnN0eWxlLnRvcD1uLnRvcCksbnVsbCE9PW4ubGVmdCYmKHQuc3R5bGUubGVmdD1uLmxlZnQpLHQuc3R5bGUudHJhbnNmb3JtT3JpZ2luPW4udHJhbnNmb3JtT3JpZ2lufSxlLmdldFBvc2l0aW9uaW5nU3R5bGU9ZnVuY3Rpb24odCl7dmFyIG49ZS5wcm9wcyxyPW4uYW5jaG9yRWwsbz1uLmFuY2hvclJlZmVyZW5jZSxhPW4ubWFyZ2luVGhyZXNob2xkLGk9ZS5nZXRDb250ZW50QW5jaG9yT2Zmc2V0KHQpLGw9e3dpZHRoOnQub2Zmc2V0V2lkdGgsaGVpZ2h0OnQub2Zmc2V0SGVpZ2h0fSxzPWUuZ2V0VHJhbnNmb3JtT3JpZ2luKGwsaSk7aWYoXCJub25lXCI9PT1vKXJldHVybnt0b3A6bnVsbCxsZWZ0Om51bGwsdHJhbnNmb3JtT3JpZ2luOmsocyl9O3ZhciB1PWUuZ2V0QW5jaG9yT2Zmc2V0KGkpLGM9dS50b3Atcy52ZXJ0aWNhbCxkPXUubGVmdC1zLmhvcml6b250YWwscD1jK2wuaGVpZ2h0LGY9ZCtsLndpZHRoLG09KDAsaC5kZWZhdWx0KShfKHIpKSxnPW0uaW5uZXJIZWlnaHQtYSxiPW0uaW5uZXJXaWR0aC1hO2lmKGM8YSl7dmFyIHk9Yy1hO2MtPXkscy52ZXJ0aWNhbCs9eX1lbHNlIGlmKHA+Zyl7dmFyIHY9cC1nO2MtPXYscy52ZXJ0aWNhbCs9dn1pZihkPGEpe3ZhciBTPWQtYTtkLT1TLHMuaG9yaXpvbnRhbCs9U31lbHNlIGlmKGY+Yil7dmFyIEU9Zi1iO2QtPUUscy5ob3Jpem9udGFsKz1FfXJldHVybnt0b3A6XCJcIi5jb25jYXQoYyxcInB4XCIpLGxlZnQ6XCJcIi5jb25jYXQoZCxcInB4XCIpLHRyYW5zZm9ybU9yaWdpbjprKHMpfX0sZS5oYW5kbGVFbnRlcmluZz1mdW5jdGlvbih0KXtlLnByb3BzLm9uRW50ZXJpbmcmJmUucHJvcHMub25FbnRlcmluZyh0KSxlLnNldFBvc2l0aW9uaW5nU3R5bGVzKHQpfSxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiYoZS5oYW5kbGVSZXNpemU9KDAsZi5kZWZhdWx0KShmdW5jdGlvbigpe2UucHJvcHMub3BlbiYmZS5zZXRQb3NpdGlvbmluZ1N0eWxlcyhlLnBhcGVyUmVmKX0sMTY2KSksZX1yZXR1cm4oMCxjLmRlZmF1bHQpKHQsZSksKDAsbC5kZWZhdWx0KSh0LFt7a2V5OlwiY29tcG9uZW50RGlkTW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJvcHMuYWN0aW9uJiZ0aGlzLnByb3BzLmFjdGlvbih7dXBkYXRlUG9zaXRpb246dGhpcy5oYW5kbGVSZXNpemV9KX19LHtrZXk6XCJnZXRBbmNob3JPZmZzZXRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC5hbmNob3JFbCxyPXQuYW5jaG9yT3JpZ2luLG89dC5hbmNob3JSZWZlcmVuY2UsYT10LmFuY2hvclBvc2l0aW9uO2lmKFwiYW5jaG9yUG9zaXRpb25cIj09PW8pcmV0dXJuIGE7dmFyIGk9KF8obil8fCgwLGcuZGVmYXVsdCkodGhpcy5wYXBlclJlZikuYm9keSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbD0wPT09ZT9yLnZlcnRpY2FsOlwiY2VudGVyXCI7cmV0dXJue3RvcDppLnRvcCt0aGlzLmhhbmRsZUdldE9mZnNldFRvcChpLGwpLGxlZnQ6aS5sZWZ0K3RoaXMuaGFuZGxlR2V0T2Zmc2V0TGVmdChpLHIuaG9yaXpvbnRhbCl9fX0se2tleTpcImdldENvbnRlbnRBbmNob3JPZmZzZXRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC5nZXRDb250ZW50QW5jaG9yRWwscj10LmFuY2hvclJlZmVyZW5jZSxvPTA7aWYobiYmXCJhbmNob3JFbFwiPT09cil7dmFyIGE9bihlKTtpZihhJiZlLmNvbnRhaW5zKGEpKXt2YXIgaT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10LHI9MDtuJiZuIT09ZTspcis9KG49bi5wYXJlbnROb2RlKS5zY3JvbGxUb3A7cmV0dXJuIHJ9KGUsYSk7bz1hLm9mZnNldFRvcCthLmNsaWVudEhlaWdodC8yLWl8fDB9fXJldHVybiBvfX0se2tleTpcImdldFRyYW5zZm9ybU9yaWdpblwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLG49dGhpcy5wcm9wcy50cmFuc2Zvcm1PcmlnaW47cmV0dXJue3ZlcnRpY2FsOnRoaXMuaGFuZGxlR2V0T2Zmc2V0VG9wKGUsbi52ZXJ0aWNhbCkrdCxob3Jpem9udGFsOnRoaXMuaGFuZGxlR2V0T2Zmc2V0TGVmdChlLG4uaG9yaXpvbnRhbCl9fX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj0odC5hY3Rpb24sdC5hbmNob3JFbCkscj0odC5hbmNob3JPcmlnaW4sdC5hbmNob3JQb3NpdGlvbix0LmFuY2hvclJlZmVyZW5jZSx0LmNoaWxkcmVuKSxpPXQuY2xhc3NlcyxsPXQuY29udGFpbmVyLHM9dC5lbGV2YXRpb24sdT0odC5nZXRDb250ZW50QW5jaG9yRWwsdC5tYXJnaW5UaHJlc2hvbGQsdC5Nb2RhbENsYXNzZXMpLGM9dC5vbkVudGVyLGY9dC5vbkVudGVyZWQsaD0odC5vbkVudGVyaW5nLHQub25FeGl0KSx5PXQub25FeGl0ZWQsUz10Lm9uRXhpdGluZyx4PXQub3Blbix3PXQuUGFwZXJQcm9wcyxrPXQucm9sZSxUPSh0LnRyYW5zZm9ybU9yaWdpbix0LlRyYW5zaXRpb25Db21wb25lbnQpLEE9dC50cmFuc2l0aW9uRHVyYXRpb24sQz10LlRyYW5zaXRpb25Qcm9wcyxPPXZvaWQgMD09PUM/e306QyxJPSgwLGEuZGVmYXVsdCkodCxbXCJhY3Rpb25cIixcImFuY2hvckVsXCIsXCJhbmNob3JPcmlnaW5cIixcImFuY2hvclBvc2l0aW9uXCIsXCJhbmNob3JSZWZlcmVuY2VcIixcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjb250YWluZXJcIixcImVsZXZhdGlvblwiLFwiZ2V0Q29udGVudEFuY2hvckVsXCIsXCJtYXJnaW5UaHJlc2hvbGRcIixcIk1vZGFsQ2xhc3Nlc1wiLFwib25FbnRlclwiLFwib25FbnRlcmVkXCIsXCJvbkVudGVyaW5nXCIsXCJvbkV4aXRcIixcIm9uRXhpdGVkXCIsXCJvbkV4aXRpbmdcIixcIm9wZW5cIixcIlBhcGVyUHJvcHNcIixcInJvbGVcIixcInRyYW5zZm9ybU9yaWdpblwiLFwiVHJhbnNpdGlvbkNvbXBvbmVudFwiLFwidHJhbnNpdGlvbkR1cmF0aW9uXCIsXCJUcmFuc2l0aW9uUHJvcHNcIl0pLE49QTtcImF1dG9cIiE9PUF8fFQubXVpU3VwcG9ydEF1dG98fChOPXZvaWQgMCk7dmFyIFI9bHx8KG4/KDAsZy5kZWZhdWx0KShfKG4pKS5ib2R5OnZvaWQgMCk7cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHYuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtjbGFzc2VzOnUsY29udGFpbmVyOlIsb3Blbjp4LEJhY2tkcm9wUHJvcHM6e2ludmlzaWJsZTohMH19LEkpLGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFQsKDAsby5kZWZhdWx0KSh7YXBwZWFyOiEwLGluOngsb25FbnRlcjpjLG9uRW50ZXJlZDpmLG9uRXhpdDpoLG9uRXhpdGVkOnksb25FeGl0aW5nOlMscm9sZTprLHRpbWVvdXQ6Tn0sTyx7b25FbnRlcmluZzooMCxiLmNyZWF0ZUNoYWluZWRGdW5jdGlvbikodGhpcy5oYW5kbGVFbnRlcmluZyxPLm9uRW50ZXJpbmcpfSksZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoRS5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTppLnBhcGVyLGVsZXZhdGlvbjpzLHJlZjpmdW5jdGlvbih0KXtlLnBhcGVyUmVmPXAuZGVmYXVsdC5maW5kRE9NTm9kZSh0KX19LHcpLGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KG0uZGVmYXVsdCx7dGFyZ2V0Olwid2luZG93XCIsb25SZXNpemU6dGhpcy5oYW5kbGVSZXNpemV9KSxyKSkpfX1dKSx0fShkLmRlZmF1bHQuQ29tcG9uZW50KTtBLmRlZmF1bHRQcm9wcz17YW5jaG9yUmVmZXJlbmNlOlwiYW5jaG9yRWxcIixhbmNob3JPcmlnaW46e3ZlcnRpY2FsOlwidG9wXCIsaG9yaXpvbnRhbDpcImxlZnRcIn0sZWxldmF0aW9uOjgsbWFyZ2luVGhyZXNob2xkOjE2LHRyYW5zZm9ybU9yaWdpbjp7dmVydGljYWw6XCJ0b3BcIixob3Jpem9udGFsOlwibGVmdFwifSxUcmFuc2l0aW9uQ29tcG9uZW50OlMuZGVmYXVsdCx0cmFuc2l0aW9uRHVyYXRpb246XCJhdXRvXCJ9O3ZhciBDPSgwLHkuZGVmYXVsdCkoVCx7bmFtZTpcIk11aVBvcG92ZXJcIn0pKEEpO3QuZGVmYXVsdD1DfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigxMikpLHM9cihuKDEzKSksdT1yKG4oMTQpKSxjPXIobigxNSkpLGQ9cihuKDE2KSkscD1yKG4oNDUpKSxmPXIobigwKSksbT1yKG4oMjIpKSxnPShyKG4oMSkpLHIobig2KSkpLGg9KHIobigxNykpLG4oNykscihuKDI2KSkpLGI9cihuKDgyKSkseT1yKG4oODMpKSx2PW4oMjEpLFM9cihuKDgpKSxFPXIobigxNDQpKSx4PXIobig4NCkpLHc9bigxNDgpO2Z1bmN0aW9uIGsoZSl7cmV0dXJuISFlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLnByb3BzLmhhc093blByb3BlcnR5KFwiaW5cIil9dmFyIF89ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e3Bvc2l0aW9uOlwiZml4ZWRcIix6SW5kZXg6ZS56SW5kZXgubW9kYWwscmlnaHQ6MCxib3R0b206MCx0b3A6MCxsZWZ0OjB9LGhpZGRlbjp7dmlzaWJpbGl0eTpcImhpZGRlblwifX19O3Quc3R5bGVzPV87dmFyIFQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbjtyZXR1cm4oMCxsLmRlZmF1bHQpKHRoaXMsdCksKG49KDAsdS5kZWZhdWx0KSh0aGlzLCgwLGMuZGVmYXVsdCkodCkuY2FsbCh0aGlzKSkpLm1vdW50ZWQ9ITEsbi5oYW5kbGVPcGVuPWZ1bmN0aW9uKCl7dmFyIGU9KDAsaC5kZWZhdWx0KShuLm1vdW50Tm9kZSksdD1mdW5jdGlvbihlLHQpe3JldHVybiBlPVwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZSgpOmUsbS5kZWZhdWx0LmZpbmRET01Ob2RlKGUpfHx0fShuLnByb3BzLmNvbnRhaW5lcixlLmJvZHkpO24ucHJvcHMubWFuYWdlci5hZGQoKDAscC5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKG4pKSx0KSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLG4uZW5mb3JjZUZvY3VzLCEwKSxuLmRpYWxvZ1JlZiYmbi5oYW5kbGVPcGVuZWQoKX0sbi5oYW5kbGVSZW5kZXJlZD1mdW5jdGlvbigpe24ucHJvcHMub25SZW5kZXJlZCYmbi5wcm9wcy5vblJlbmRlcmVkKCksbi5wcm9wcy5vcGVuP24uaGFuZGxlT3BlbmVkKCk6KDAsdy5hcmlhSGlkZGVuKShuLm1vZGFsUmVmLCEwKX0sbi5oYW5kbGVPcGVuZWQ9ZnVuY3Rpb24oKXtuLmF1dG9Gb2N1cygpLG4ucHJvcHMubWFuYWdlci5tb3VudCgoMCxwLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkobikpKSxuLm1vZGFsUmVmLnNjcm9sbFRvcD0wfSxuLmhhbmRsZUNsb3NlPWZ1bmN0aW9uKGUpe2sobi5wcm9wcykmJm4ucHJvcHMuY2xvc2VBZnRlclRyYW5zaXRpb24mJlwidW5tb3VudFwiIT09ZXx8bi5wcm9wcy5tYW5hZ2VyLnJlbW92ZSgoMCxwLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkobikpKSwoMCxoLmRlZmF1bHQpKG4ubW91bnROb2RlKS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIixuLmVuZm9yY2VGb2N1cywhMCksbi5yZXN0b3JlTGFzdEZvY3VzKCl9LG4uaGFuZGxlRXhpdGVkPWZ1bmN0aW9uKCl7bi5wcm9wcy5jbG9zZUFmdGVyVHJhbnNpdGlvbiYmbi5wcm9wcy5tYW5hZ2VyLnJlbW92ZSgoMCxwLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkobikpKSxuLnNldFN0YXRlKHtleGl0ZWQ6ITB9KX0sbi5oYW5kbGVCYWNrZHJvcENsaWNrPWZ1bmN0aW9uKGUpe2UudGFyZ2V0PT09ZS5jdXJyZW50VGFyZ2V0JiYobi5wcm9wcy5vbkJhY2tkcm9wQ2xpY2smJm4ucHJvcHMub25CYWNrZHJvcENsaWNrKGUpLCFuLnByb3BzLmRpc2FibGVCYWNrZHJvcENsaWNrJiZuLnByb3BzLm9uQ2xvc2UmJm4ucHJvcHMub25DbG9zZShlLFwiYmFja2Ryb3BDbGlja1wiKSl9LG4uaGFuZGxlS2V5RG93bj1mdW5jdGlvbihlKXtcIkVzY2FwZVwiPT09ZS5rZXkmJm4uaXNUb3BNb2RhbCgpJiYhZS5kZWZhdWx0UHJldmVudGVkJiYoZS5zdG9wUHJvcGFnYXRpb24oKSxuLnByb3BzLm9uRXNjYXBlS2V5RG93biYmbi5wcm9wcy5vbkVzY2FwZUtleURvd24oZSksIW4ucHJvcHMuZGlzYWJsZUVzY2FwZUtleURvd24mJm4ucHJvcHMub25DbG9zZSYmbi5wcm9wcy5vbkNsb3NlKGUsXCJlc2NhcGVLZXlEb3duXCIpKX0sbi5lbmZvcmNlRm9jdXM9ZnVuY3Rpb24oKXtpZihuLmlzVG9wTW9kYWwoKSYmIW4ucHJvcHMuZGlzYWJsZUVuZm9yY2VGb2N1cyYmbi5tb3VudGVkJiZuLmRpYWxvZ1JlZil7dmFyIGU9KDAsaC5kZWZhdWx0KShuLm1vdW50Tm9kZSkuYWN0aXZlRWxlbWVudDtuLmRpYWxvZ1JlZi5jb250YWlucyhlKXx8bi5kaWFsb2dSZWYuZm9jdXMoKX19LG4uaGFuZGxlUG9ydGFsUmVmPWZ1bmN0aW9uKGUpe24ubW91bnROb2RlPWU/ZS5nZXRNb3VudE5vZGUoKTplfSxuLmhhbmRsZU1vZGFsUmVmPWZ1bmN0aW9uKGUpe24ubW9kYWxSZWY9ZX0sbi5vblJvb3RSZWY9ZnVuY3Rpb24oZSl7bi5kaWFsb2dSZWY9ZX0sbi5zdGF0ZT17ZXhpdGVkOiFlLm9wZW59LG59cmV0dXJuKDAsZC5kZWZhdWx0KSh0LGUpLCgwLHMuZGVmYXVsdCkodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1vdW50ZWQ9ITAsdGhpcy5wcm9wcy5vcGVuJiZ0aGlzLmhhbmRsZU9wZW4oKX19LHtrZXk6XCJjb21wb25lbnREaWRVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXtlLm9wZW4mJiF0aGlzLnByb3BzLm9wZW4/dGhpcy5oYW5kbGVDbG9zZSgpOiFlLm9wZW4mJnRoaXMucHJvcHMub3BlbiYmKHRoaXMubGFzdEZvY3VzPSgwLGguZGVmYXVsdCkodGhpcy5tb3VudE5vZGUpLmFjdGl2ZUVsZW1lbnQsdGhpcy5oYW5kbGVPcGVuKCkpfX0se2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1vdW50ZWQ9ITEsKHRoaXMucHJvcHMub3Blbnx8ayh0aGlzLnByb3BzKSYmIXRoaXMuc3RhdGUuZXhpdGVkKSYmdGhpcy5oYW5kbGVDbG9zZShcInVubW91bnRcIil9fSx7a2V5OlwiYXV0b0ZvY3VzXCIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5wcm9wcy5kaXNhYmxlQXV0b0ZvY3VzJiZ0aGlzLmRpYWxvZ1JlZil7dmFyIGU9KDAsaC5kZWZhdWx0KSh0aGlzLm1vdW50Tm9kZSkuYWN0aXZlRWxlbWVudDt0aGlzLmRpYWxvZ1JlZi5jb250YWlucyhlKXx8KHRoaXMuZGlhbG9nUmVmLmhhc0F0dHJpYnV0ZShcInRhYkluZGV4XCIpfHx0aGlzLmRpYWxvZ1JlZi5zZXRBdHRyaWJ1dGUoXCJ0YWJJbmRleFwiLC0xKSx0aGlzLmxhc3RGb2N1cz1lLHRoaXMuZGlhbG9nUmVmLmZvY3VzKCkpfX19LHtrZXk6XCJyZXN0b3JlTGFzdEZvY3VzXCIsdmFsdWU6ZnVuY3Rpb24oKXshdGhpcy5wcm9wcy5kaXNhYmxlUmVzdG9yZUZvY3VzJiZ0aGlzLmxhc3RGb2N1cyYmKHRoaXMubGFzdEZvY3VzLmZvY3VzJiZ0aGlzLmxhc3RGb2N1cy5mb2N1cygpLHRoaXMubGFzdEZvY3VzPW51bGwpfX0se2tleTpcImlzVG9wTW9kYWxcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzLm1hbmFnZXIuaXNUb3BNb2RhbCh0aGlzKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLkJhY2tkcm9wQ29tcG9uZW50LG49ZS5CYWNrZHJvcFByb3BzLHI9ZS5jaGlsZHJlbixsPWUuY2xhc3NlcyxzPWUuY2xhc3NOYW1lLHU9KGUuY2xvc2VBZnRlclRyYW5zaXRpb24sZS5jb250YWluZXIpLGM9KGUuZGlzYWJsZUF1dG9Gb2N1cyxlLmRpc2FibGVCYWNrZHJvcENsaWNrLGUuZGlzYWJsZUVuZm9yY2VGb2N1cyxlLmRpc2FibGVFc2NhcGVLZXlEb3duLGUuZGlzYWJsZVBvcnRhbCksZD0oZS5kaXNhYmxlUmVzdG9yZUZvY3VzLGUuaGlkZUJhY2tkcm9wKSxwPWUua2VlcE1vdW50ZWQsbT0oZS5tYW5hZ2VyLGUub25CYWNrZHJvcENsaWNrLGUub25DbG9zZSxlLm9uRXNjYXBlS2V5RG93bixlLm9uUmVuZGVyZWQsZS5vcGVuKSxoPSgwLGkuZGVmYXVsdCkoZSxbXCJCYWNrZHJvcENvbXBvbmVudFwiLFwiQmFja2Ryb3BQcm9wc1wiLFwiY2hpbGRyZW5cIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY2xvc2VBZnRlclRyYW5zaXRpb25cIixcImNvbnRhaW5lclwiLFwiZGlzYWJsZUF1dG9Gb2N1c1wiLFwiZGlzYWJsZUJhY2tkcm9wQ2xpY2tcIixcImRpc2FibGVFbmZvcmNlRm9jdXNcIixcImRpc2FibGVFc2NhcGVLZXlEb3duXCIsXCJkaXNhYmxlUG9ydGFsXCIsXCJkaXNhYmxlUmVzdG9yZUZvY3VzXCIsXCJoaWRlQmFja2Ryb3BcIixcImtlZXBNb3VudGVkXCIsXCJtYW5hZ2VyXCIsXCJvbkJhY2tkcm9wQ2xpY2tcIixcIm9uQ2xvc2VcIixcIm9uRXNjYXBlS2V5RG93blwiLFwib25SZW5kZXJlZFwiLFwib3BlblwiXSksUz10aGlzLnN0YXRlLmV4aXRlZCxFPWsodGhpcy5wcm9wcyk7aWYoIXAmJiFtJiYoIUV8fFMpKXJldHVybiBudWxsO3ZhciB4PXt9O3JldHVybiBFJiYoeC5vbkV4aXRlZD0oMCx2LmNyZWF0ZUNoYWluZWRGdW5jdGlvbikodGhpcy5oYW5kbGVFeGl0ZWQsci5wcm9wcy5vbkV4aXRlZCkpLHZvaWQgMD09PXIucHJvcHMucm9sZSYmKHgucm9sZT1yLnByb3BzLnJvbGV8fFwiZG9jdW1lbnRcIiksdm9pZCAwPT09ci5wcm9wcy50YWJJbmRleCYmKHgudGFiSW5kZXg9ci5wcm9wcy50YWJJbmRleHx8XCItMVwiKSxmLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh5LmRlZmF1bHQse3JlZjp0aGlzLmhhbmRsZVBvcnRhbFJlZixjb250YWluZXI6dSxkaXNhYmxlUG9ydGFsOmMsb25SZW5kZXJlZDp0aGlzLmhhbmRsZVJlbmRlcmVkfSxmLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCgwLG8uZGVmYXVsdCkoe3JlZjp0aGlzLmhhbmRsZU1vZGFsUmVmLG9uS2V5RG93bjp0aGlzLmhhbmRsZUtleURvd24scm9sZTpcInByZXNlbnRhdGlvblwiLGNsYXNzTmFtZTooMCxnLmRlZmF1bHQpKGwucm9vdCxzLCgwLGEuZGVmYXVsdCkoe30sbC5oaWRkZW4sUykpfSxoKSxkP251bGw6Zi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodCwoMCxvLmRlZmF1bHQpKHtvcGVuOm0sb25DbGljazp0aGlzLmhhbmRsZUJhY2tkcm9wQ2xpY2t9LG4pKSxmLmRlZmF1bHQuY3JlYXRlRWxlbWVudChiLmRlZmF1bHQse3Jvb3RSZWY6dGhpcy5vblJvb3RSZWZ9LGYuZGVmYXVsdC5jbG9uZUVsZW1lbnQocix4KSkpKX19XSxbe2tleTpcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLm9wZW4/e2V4aXRlZDohMX06ayhlKT9udWxsOntleGl0ZWQ6ITB9fX1dKSx0fShmLmRlZmF1bHQuQ29tcG9uZW50KTtULmRlZmF1bHRQcm9wcz17QmFja2Ryb3BDb21wb25lbnQ6eC5kZWZhdWx0LGNsb3NlQWZ0ZXJUcmFuc2l0aW9uOiExLGRpc2FibGVBdXRvRm9jdXM6ITEsZGlzYWJsZUJhY2tkcm9wQ2xpY2s6ITEsZGlzYWJsZUVuZm9yY2VGb2N1czohMSxkaXNhYmxlRXNjYXBlS2V5RG93bjohMSxkaXNhYmxlUG9ydGFsOiExLGRpc2FibGVSZXN0b3JlRm9jdXM6ITEsaGlkZUJhY2tkcm9wOiExLGtlZXBNb3VudGVkOiExLG1hbmFnZXI6bmV3IEUuZGVmYXVsdH07dmFyIEE9KDAsUy5kZWZhdWx0KShfLHtmbGlwOiExLG5hbWU6XCJNdWlNb2RhbFwifSkoVCk7dC5kZWZhdWx0PUF9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDEyKSksYT1yKG4oMTMpKSxpPXIobigxNCkpLGw9cihuKDE1KSkscz1yKG4oMTYpKSx1PXIobigwKSksYz1yKG4oMjIpKSxkPShyKG4oMSkpLG4oNyksbigzMikpO3ZhciBwPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4oMCxvLmRlZmF1bHQpKHRoaXMsdCksKDAsaS5kZWZhdWx0KSh0aGlzLCgwLGwuZGVmYXVsdCkodCkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4oMCxzLmRlZmF1bHQpKHQsZSksKDAsYS5kZWZhdWx0KSh0LFt7a2V5OlwiY29tcG9uZW50RGlkTW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucmVmPWMuZGVmYXVsdC5maW5kRE9NTm9kZSh0aGlzKSwoMCxkLnNldFJlZikodGhpcy5wcm9wcy5yb290UmVmLHRoaXMucmVmKX19LHtrZXk6XCJjb21wb25lbnREaWRVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1jLmRlZmF1bHQuZmluZERPTU5vZGUodGhpcyk7ZS5yb290UmVmPT09dGhpcy5wcm9wcy5yb290UmVmJiZ0aGlzLnJlZj09PXR8fChlLnJvb3RSZWYhPT10aGlzLnByb3BzLnJvb3RSZWYmJigwLGQuc2V0UmVmKShlLnJvb3RSZWYsbnVsbCksdGhpcy5yZWY9dCwoMCxkLnNldFJlZikodGhpcy5wcm9wcy5yb290UmVmLHRoaXMucmVmKSl9fSx7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucmVmPW51bGwsKDAsZC5zZXRSZWYpKHRoaXMucHJvcHMucm9vdFJlZixudWxsKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzLmNoaWxkcmVufX1dKSx0fSh1LmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9cH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oMTIpKSxhPXIobigxMykpLGk9cihuKDE0KSksbD1yKG4oMTUpKSxzPXIobigxNikpLHU9cihuKDApKSxjPXIobigyMikpLGQ9KHIobigxKSkscihuKDI2KSkpO24oNyk7dmFyIHA9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47KDAsby5kZWZhdWx0KSh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KHIpLHM9MDtzPHI7cysrKWFbc109YXJndW1lbnRzW3NdO3JldHVybihuPSgwLGkuZGVmYXVsdCkodGhpcywoZT0oMCxsLmRlZmF1bHQpKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChhKSkpKS5nZXRNb3VudE5vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gbi5tb3VudE5vZGV9LG59cmV0dXJuKDAscy5kZWZhdWx0KSh0LGUpLCgwLGEuZGVmYXVsdCkodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldE1vdW50Tm9kZSh0aGlzLnByb3BzLmNvbnRhaW5lciksdGhpcy5wcm9wcy5kaXNhYmxlUG9ydGFsfHx0aGlzLmZvcmNlVXBkYXRlKHRoaXMucHJvcHMub25SZW5kZXJlZCl9fSx7a2V5OlwiY29tcG9uZW50RGlkVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztlLmNvbnRhaW5lcj09PXRoaXMucHJvcHMuY29udGFpbmVyJiZlLmRpc2FibGVQb3J0YWw9PT10aGlzLnByb3BzLmRpc2FibGVQb3J0YWx8fCh0aGlzLnNldE1vdW50Tm9kZSh0aGlzLnByb3BzLmNvbnRhaW5lciksdGhpcy5wcm9wcy5kaXNhYmxlUG9ydGFsfHx0aGlzLmZvcmNlVXBkYXRlKGZ1bmN0aW9uKCl7dC5wcm9wcy5vblJlbmRlcmVkJiYoY2xlYXJUaW1lb3V0KHQucmVuZGVyZWRUaW1lciksdC5yZW5kZXJlZFRpbWVyPXNldFRpbWVvdXQodC5wcm9wcy5vblJlbmRlcmVkKSl9KSl9fSx7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubW91bnROb2RlPW51bGwsY2xlYXJUaW1lb3V0KHRoaXMucmVuZGVyZWRUaW1lcil9fSx7a2V5Olwic2V0TW91bnROb2RlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7dGhpcy5wcm9wcy5kaXNhYmxlUG9ydGFsP3RoaXMubW91bnROb2RlPWMuZGVmYXVsdC5maW5kRE9NTm9kZSh0aGlzKS5wYXJlbnRFbGVtZW50OnRoaXMubW91bnROb2RlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9XCJmdW5jdGlvblwiPT10eXBlb2YgZT9lKCk6ZSxjLmRlZmF1bHQuZmluZERPTU5vZGUoZSl8fHR9KGUsKHQ9dGhpcywoMCxkLmRlZmF1bHQpKGMuZGVmYXVsdC5maW5kRE9NTm9kZSh0KSkpLmJvZHkpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY2hpbGRyZW47cmV0dXJuIGUuZGlzYWJsZVBvcnRhbD90OnRoaXMubW91bnROb2RlP2MuZGVmYXVsdC5jcmVhdGVQb3J0YWwodCx0aGlzLm1vdW50Tm9kZSk6bnVsbH19XSksdH0odS5kZWZhdWx0LkNvbXBvbmVudCk7cC5kZWZhdWx0UHJvcHM9e2Rpc2FibGVQb3J0YWw6ITF9O3ZhciBmPXA7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVwiXCIsYz1cIlwiLGQ9dDtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7aWYodm9pZCAwPT09bilyZXR1cm4gZS5zdHlsZVsoMCxvLmRlZmF1bHQpKHQpXXx8KDAsaS5kZWZhdWx0KShlKS5nZXRQcm9wZXJ0eVZhbHVlKCgwLGEuZGVmYXVsdCkodCkpOyhkPXt9KVt0XT1ufU9iamVjdC5rZXlzKGQpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49ZFt0XTtufHwwPT09bj8oMCx1LmRlZmF1bHQpKHQpP2MrPXQrXCIoXCIrbitcIikgXCI6cis9KDAsYS5kZWZhdWx0KSh0KStcIjogXCIrbitcIjtcIjooMCxsLmRlZmF1bHQpKGUsKDAsYS5kZWZhdWx0KSh0KSl9KSxjJiYocis9cy50cmFuc2Zvcm0rXCI6IFwiK2MrXCI7XCIpO2Uuc3R5bGUuY3NzVGV4dCs9XCI7XCIrcn07dmFyIG89cihuKDE0NSkpLGE9cihuKDQ0OSkpLGk9cihuKDQ1MSkpLGw9cihuKDQ1MikpLHM9big0NTMpLHU9cihuKDQ1NCkpO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UocixmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX07dmFyIHI9Ly0oLikvZztlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybigwLG8uZGVmYXVsdCkoZSkucmVwbGFjZShhLFwiLW1zLVwiKX07dmFyIG89cihuKDQ1MCkpLGE9L15tcy0vO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UocixcIi0kMVwiKS50b0xvd2VyQ2FzZSgpfTt2YXIgcj0vKFtBLVpdKS9nO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7aWYoIWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIk5vIEVsZW1lbnQgcGFzc2VkIHRvIGBnZXRDb21wdXRlZFN0eWxlKClgXCIpO3ZhciB0PWUub3duZXJEb2N1bWVudDtyZXR1cm5cImRlZmF1bHRWaWV3XCJpbiB0P3QuZGVmYXVsdFZpZXcub3BlbmVyP2Uub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCk6d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSxudWxsKTp7Z2V0UHJvcGVydHlWYWx1ZTpmdW5jdGlvbih0KXt2YXIgbj1lLnN0eWxlO1wiZmxvYXRcIj09KHQ9KDAsby5kZWZhdWx0KSh0KSkmJih0PVwic3R5bGVGbG9hdFwiKTt2YXIgcj1lLmN1cnJlbnRTdHlsZVt0XXx8bnVsbDtpZihudWxsPT1yJiZuJiZuW3RdJiYocj1uW3RdKSxpLnRlc3QocikmJiFhLnRlc3QodCkpe3ZhciBsPW4ubGVmdCxzPWUucnVudGltZVN0eWxlLHU9cyYmcy5sZWZ0O3UmJihzLmxlZnQ9ZS5jdXJyZW50U3R5bGUubGVmdCksbi5sZWZ0PVwiZm9udFNpemVcIj09PXQ/XCIxZW1cIjpyLHI9bi5waXhlbExlZnQrXCJweFwiLG4ubGVmdD1sLHUmJihzLmxlZnQ9dSl9cmV0dXJuIHJ9fX07dmFyIG89cihuKDE0NSkpLGE9L14odG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KSQvLGk9L14oWystXT8oPzpcXGQqXFwufClcXGQrKD86W2VFXVsrLV0/XFxkK3wpKSg/IXB4KVthLXolXSskL2k7ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cInJlbW92ZVByb3BlcnR5XCJpbiBlLnN0eWxlP2Uuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6ZS5zdHlsZS5yZW1vdmVBdHRyaWJ1dGUodCl9LGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dC5hbmltYXRpb25FbmQ9dC5hbmltYXRpb25EZWxheT10LmFuaW1hdGlvblRpbWluZz10LmFuaW1hdGlvbkR1cmF0aW9uPXQuYW5pbWF0aW9uTmFtZT10LnRyYW5zaXRpb25FbmQ9dC50cmFuc2l0aW9uRHVyYXRpb249dC50cmFuc2l0aW9uRGVsYXk9dC50cmFuc2l0aW9uVGltaW5nPXQudHJhbnNpdGlvblByb3BlcnR5PXQudHJhbnNmb3JtPXZvaWQgMDt2YXIgbyxhLGksbCxzLHUsYyxkLHAsZixtLGc9cihuKDE0NikpLGg9XCJ0cmFuc2Zvcm1cIjtpZih0LnRyYW5zZm9ybT1oLHQuYW5pbWF0aW9uRW5kPWksdC50cmFuc2l0aW9uRW5kPWEsdC50cmFuc2l0aW9uRGVsYXk9Yyx0LnRyYW5zaXRpb25UaW1pbmc9dSx0LnRyYW5zaXRpb25EdXJhdGlvbj1zLHQudHJhbnNpdGlvblByb3BlcnR5PWwsdC5hbmltYXRpb25EZWxheT1tLHQuYW5pbWF0aW9uVGltaW5nPWYsdC5hbmltYXRpb25EdXJhdGlvbj1wLHQuYW5pbWF0aW9uTmFtZT1kLGcuZGVmYXVsdCl7dmFyIGI9ZnVuY3Rpb24oKXtmb3IodmFyIGUsdCxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUscj17TzpmdW5jdGlvbihlKXtyZXR1cm5cIm9cIitlLnRvTG93ZXJDYXNlKCl9LE1vejpmdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfSxXZWJraXQ6ZnVuY3Rpb24oZSl7cmV0dXJuXCJ3ZWJraXRcIitlfSxtczpmdW5jdGlvbihlKXtyZXR1cm5cIk1TXCIrZX19LG89T2JqZWN0LmtleXMociksYT1cIlwiLGk9MDtpPG8ubGVuZ3RoO2krKyl7dmFyIGw9b1tpXTtpZihsK1wiVHJhbnNpdGlvblByb3BlcnR5XCJpbiBuKXthPVwiLVwiK2wudG9Mb3dlckNhc2UoKSxlPXJbbF0oXCJUcmFuc2l0aW9uRW5kXCIpLHQ9cltsXShcIkFuaW1hdGlvbkVuZFwiKTticmVha319IWUmJlwidHJhbnNpdGlvblByb3BlcnR5XCJpbiBuJiYoZT1cInRyYW5zaXRpb25lbmRcIik7IXQmJlwiYW5pbWF0aW9uTmFtZVwiaW4gbiYmKHQ9XCJhbmltYXRpb25lbmRcIik7cmV0dXJuIG49bnVsbCx7YW5pbWF0aW9uRW5kOnQsdHJhbnNpdGlvbkVuZDplLHByZWZpeDphfX0oKTtvPWIucHJlZml4LHQudHJhbnNpdGlvbkVuZD1hPWIudHJhbnNpdGlvbkVuZCx0LmFuaW1hdGlvbkVuZD1pPWIuYW5pbWF0aW9uRW5kLHQudHJhbnNmb3JtPWg9bytcIi1cIitoLHQudHJhbnNpdGlvblByb3BlcnR5PWw9bytcIi10cmFuc2l0aW9uLXByb3BlcnR5XCIsdC50cmFuc2l0aW9uRHVyYXRpb249cz1vK1wiLXRyYW5zaXRpb24tZHVyYXRpb25cIix0LnRyYW5zaXRpb25EZWxheT1jPW8rXCItdHJhbnNpdGlvbi1kZWxheVwiLHQudHJhbnNpdGlvblRpbWluZz11PW8rXCItdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cIix0LmFuaW1hdGlvbk5hbWU9ZD1vK1wiLWFuaW1hdGlvbi1uYW1lXCIsdC5hbmltYXRpb25EdXJhdGlvbj1wPW8rXCItYW5pbWF0aW9uLWR1cmF0aW9uXCIsdC5hbmltYXRpb25UaW1pbmc9Zj1vK1wiLWFuaW1hdGlvbi1kZWxheVwiLHQuYW5pbWF0aW9uRGVsYXk9bT1vK1wiLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIn12YXIgeT17dHJhbnNmb3JtOmgsZW5kOmEscHJvcGVydHk6bCx0aW1pbmc6dSxkZWxheTpjLGR1cmF0aW9uOnN9O3QuZGVmYXVsdD15fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhci50ZXN0KGUpKX07dmFyIHI9L14oKHRyYW5zbGF0ZXxyb3RhdGV8c2NhbGUpKFh8WXxafDNkKT98bWF0cml4KDNkKT98cGVyc3BlY3RpdmV8c2tldyhYfFkpPykkL2k7ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5pc0JvZHk9bCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9KDAsYS5kZWZhdWx0KShlKSxuPSgwLGkuZGVmYXVsdCkodCk7aWYoISgwLG8uZGVmYXVsdCkodCkmJiFsKGUpKXJldHVybiBlLnNjcm9sbEhlaWdodD5lLmNsaWVudEhlaWdodDt2YXIgcj1uLmdldENvbXB1dGVkU3R5bGUodC5ib2R5KSxzPXBhcnNlSW50KHIuZ2V0UHJvcGVydHlWYWx1ZShcIm1hcmdpbi1sZWZ0XCIpLDEwKSx1PXBhcnNlSW50KHIuZ2V0UHJvcGVydHlWYWx1ZShcIm1hcmdpbi1yaWdodFwiKSwxMCk7cmV0dXJuIHMrdC5ib2R5LmNsaWVudFdpZHRoK3U8bi5pbm5lcldpZHRofTt2YXIgbz1yKG4oNDU2KSksYT1yKG4oMjYpKSxpPXIobig3OCkpO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUmJlwiYm9keVwiPT09ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PWUud2luZG93P2U6OT09PWUubm9kZVR5cGUmJihlLmRlZmF1bHRWaWV3fHxlLnBhcmVudFdpbmRvdyl9LGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9cihuKDgpKSxjPXIobig4NSkpLGQ9e3Jvb3Q6e3pJbmRleDotMSxwb3NpdGlvbjpcImZpeGVkXCIscmlnaHQ6MCxib3R0b206MCx0b3A6MCxsZWZ0OjAsYmFja2dyb3VuZENvbG9yOlwicmdiYSgwLCAwLCAwLCAwLjUpXCIsV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6XCJ0cmFuc3BhcmVudFwiLHRvdWNoQWN0aW9uOlwibm9uZVwifSxpbnZpc2libGU6e2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCJ9fTtmdW5jdGlvbiBwKGUpe3ZhciB0PWUuY2xhc3NlcyxuPWUuY2xhc3NOYW1lLHI9ZS5pbnZpc2libGUsdT1lLm9wZW4sZD1lLnRyYW5zaXRpb25EdXJhdGlvbixwPSgwLGkuZGVmYXVsdCkoZSxbXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImludmlzaWJsZVwiLFwib3BlblwiLFwidHJhbnNpdGlvbkR1cmF0aW9uXCJdKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYy5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe2luOnUsdGltZW91dDpkfSxwKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KSh0LnJvb3QsKDAsYS5kZWZhdWx0KSh7fSx0LmludmlzaWJsZSxyKSxuKSxcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9KSl9dC5zdHlsZXM9ZCxwLmRlZmF1bHRQcm9wcz17aW52aXNpYmxlOiExfTt2YXIgZj0oMCx1LmRlZmF1bHQpKGQse25hbWU6XCJNdWlCYWNrZHJvcFwifSkocCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig1KSksaT1yKG4oMTIpKSxsPXIobigxMykpLHM9cihuKDE0KSksdT1yKG4oMTUpKSxjPXIobigxNikpLGQ9cihuKDApKSxwPShyKG4oMSkpLHIobig1MSkpKSxmPW4oNjgpLG09cihuKDg2KSksZz1uKDcwKSxoPXtlbnRlcmluZzp7b3BhY2l0eToxfSxlbnRlcmVkOntvcGFjaXR5OjF9fSxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuOygwLGkuZGVmYXVsdCkodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4obj0oMCxzLmRlZmF1bHQpKHRoaXMsKGU9KDAsdS5kZWZhdWx0KSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSkuaGFuZGxlRW50ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcy50aGVtZTsoMCxnLnJlZmxvdykoZSk7dmFyIHI9KDAsZy5nZXRUcmFuc2l0aW9uUHJvcHMpKG4ucHJvcHMse21vZGU6XCJlbnRlclwifSk7ZS5zdHlsZS53ZWJraXRUcmFuc2l0aW9uPXQudHJhbnNpdGlvbnMuY3JlYXRlKFwib3BhY2l0eVwiLHIpLGUuc3R5bGUudHJhbnNpdGlvbj10LnRyYW5zaXRpb25zLmNyZWF0ZShcIm9wYWNpdHlcIixyKSxuLnByb3BzLm9uRW50ZXImJm4ucHJvcHMub25FbnRlcihlKX0sbi5oYW5kbGVFeGl0PWZ1bmN0aW9uKGUpe3ZhciB0PW4ucHJvcHMudGhlbWUscj0oMCxnLmdldFRyYW5zaXRpb25Qcm9wcykobi5wcm9wcyx7bW9kZTpcImV4aXRcIn0pO2Uuc3R5bGUud2Via2l0VHJhbnNpdGlvbj10LnRyYW5zaXRpb25zLmNyZWF0ZShcIm9wYWNpdHlcIixyKSxlLnN0eWxlLnRyYW5zaXRpb249dC50cmFuc2l0aW9ucy5jcmVhdGUoXCJvcGFjaXR5XCIsciksbi5wcm9wcy5vbkV4aXQmJm4ucHJvcHMub25FeGl0KGUpfSxufXJldHVybigwLGMuZGVmYXVsdCkodCxlKSwoMCxsLmRlZmF1bHQpKHQsW3trZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNoaWxkcmVuLG49KGUub25FbnRlcixlLm9uRXhpdCxlLnN0eWxlKSxyPShlLnRoZW1lLCgwLGEuZGVmYXVsdCkoZSxbXCJjaGlsZHJlblwiLFwib25FbnRlclwiLFwib25FeGl0XCIsXCJzdHlsZVwiLFwidGhlbWVcIl0pKSxpPSgwLG8uZGVmYXVsdCkoe30sbixkLmRlZmF1bHQuaXNWYWxpZEVsZW1lbnQodCk/dC5wcm9wcy5zdHlsZTp7fSk7cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHAuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHthcHBlYXI6ITAsb25FbnRlcjp0aGlzLmhhbmRsZUVudGVyLG9uRXhpdDp0aGlzLmhhbmRsZUV4aXR9LHIpLGZ1bmN0aW9uKGUsbil7cmV0dXJuIGQuZGVmYXVsdC5jbG9uZUVsZW1lbnQodCwoMCxvLmRlZmF1bHQpKHtzdHlsZTooMCxvLmRlZmF1bHQpKHtvcGFjaXR5OjB9LGhbZV0saSl9LG4pKX0pfX1dKSx0fShkLmRlZmF1bHQuQ29tcG9uZW50KTtiLmRlZmF1bHRQcm9wcz17dGltZW91dDp7ZW50ZXI6Zi5kdXJhdGlvbi5lbnRlcmluZ1NjcmVlbixleGl0OmYuZHVyYXRpb24ubGVhdmluZ1NjcmVlbn19O3ZhciB5PSgwLG0uZGVmYXVsdCkoKShiKTt0LmRlZmF1bHQ9eX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDUpKSxpPXIobigxMikpLGw9cihuKDEzKSkscz1yKG4oMTQpKSx1PXIobigxNSkpLGM9cihuKDE2KSksZD1yKG4oMCkpLHA9KHIobigxKSkscihuKDUxKSkpLGY9cihuKDg2KSksbT1uKDcwKTtmdW5jdGlvbiBnKGUpe3JldHVyblwic2NhbGUoXCIuY29uY2F0KGUsXCIsIFwiKS5jb25jYXQoTWF0aC5wb3coZSwyKSxcIilcIil9dmFyIGg9e2VudGVyaW5nOntvcGFjaXR5OjEsdHJhbnNmb3JtOmcoMSl9LGVudGVyZWQ6e29wYWNpdHk6MSx0cmFuc2Zvcm06XCJcIi5jb25jYXQoZygxKSxcIiB0cmFuc2xhdGVaKDApXCIpfX0sYj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjsoMCxpLmRlZmF1bHQpKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuKG49KDAscy5kZWZhdWx0KSh0aGlzLChlPSgwLHUuZGVmYXVsdCkodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8pKSkpLmhhbmRsZUVudGVyPWZ1bmN0aW9uKGUpe3ZhciB0PW4ucHJvcHMscj10LnRoZW1lLG89dC50aW1lb3V0OygwLG0ucmVmbG93KShlKTt2YXIgYT0oMCxtLmdldFRyYW5zaXRpb25Qcm9wcykobi5wcm9wcyx7bW9kZTpcImVudGVyXCJ9KSxpPWEuZHVyYXRpb24sbD1hLmRlbGF5LHM9MDtcImF1dG9cIj09PW8/KHM9ci50cmFuc2l0aW9ucy5nZXRBdXRvSGVpZ2h0RHVyYXRpb24oZS5jbGllbnRIZWlnaHQpLG4uYXV0b1RpbWVvdXQ9cyk6cz1pLGUuc3R5bGUudHJhbnNpdGlvbj1bci50cmFuc2l0aW9ucy5jcmVhdGUoXCJvcGFjaXR5XCIse2R1cmF0aW9uOnMsZGVsYXk6bH0pLHIudHJhbnNpdGlvbnMuY3JlYXRlKFwidHJhbnNmb3JtXCIse2R1cmF0aW9uOi42NjYqcyxkZWxheTpsfSldLmpvaW4oXCIsXCIpLG4ucHJvcHMub25FbnRlciYmbi5wcm9wcy5vbkVudGVyKGUpfSxuLmhhbmRsZUV4aXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcyxyPXQudGhlbWUsbz10LnRpbWVvdXQsYT0wLGk9KDAsbS5nZXRUcmFuc2l0aW9uUHJvcHMpKG4ucHJvcHMse21vZGU6XCJleGl0XCJ9KSxsPWkuZHVyYXRpb24scz1pLmRlbGF5O1wiYXV0b1wiPT09bz8oYT1yLnRyYW5zaXRpb25zLmdldEF1dG9IZWlnaHREdXJhdGlvbihlLmNsaWVudEhlaWdodCksbi5hdXRvVGltZW91dD1hKTphPWwsZS5zdHlsZS50cmFuc2l0aW9uPVtyLnRyYW5zaXRpb25zLmNyZWF0ZShcIm9wYWNpdHlcIix7ZHVyYXRpb246YSxkZWxheTpzfSksci50cmFuc2l0aW9ucy5jcmVhdGUoXCJ0cmFuc2Zvcm1cIix7ZHVyYXRpb246LjY2NiphLGRlbGF5OnN8fC4zMzMqYX0pXS5qb2luKFwiLFwiKSxlLnN0eWxlLm9wYWNpdHk9XCIwXCIsZS5zdHlsZS50cmFuc2Zvcm09ZyguNzUpLG4ucHJvcHMub25FeGl0JiZuLnByb3BzLm9uRXhpdChlKX0sbi5hZGRFbmRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe1wiYXV0b1wiPT09bi5wcm9wcy50aW1lb3V0JiYobi50aW1lcj1zZXRUaW1lb3V0KHQsbi5hdXRvVGltZW91dHx8MCkpfSxufXJldHVybigwLGMuZGVmYXVsdCkodCxlKSwoMCxsLmRlZmF1bHQpKHQsW3trZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY2hpbGRyZW4sbj0oZS5vbkVudGVyLGUub25FeGl0LGUuc3R5bGUpLHI9KGUudGhlbWUsZS50aW1lb3V0KSxpPSgwLGEuZGVmYXVsdCkoZSxbXCJjaGlsZHJlblwiLFwib25FbnRlclwiLFwib25FeGl0XCIsXCJzdHlsZVwiLFwidGhlbWVcIixcInRpbWVvdXRcIl0pLGw9KDAsby5kZWZhdWx0KSh7fSxuLGQuZGVmYXVsdC5pc1ZhbGlkRWxlbWVudCh0KT90LnByb3BzLnN0eWxlOnt9KTtyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQocC5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe2FwcGVhcjohMCxvbkVudGVyOnRoaXMuaGFuZGxlRW50ZXIsb25FeGl0OnRoaXMuaGFuZGxlRXhpdCxhZGRFbmRMaXN0ZW5lcjp0aGlzLmFkZEVuZExpc3RlbmVyLHRpbWVvdXQ6XCJhdXRvXCI9PT1yP251bGw6cn0saSksZnVuY3Rpb24oZSxuKXtyZXR1cm4gZC5kZWZhdWx0LmNsb25lRWxlbWVudCh0LCgwLG8uZGVmYXVsdCkoe3N0eWxlOigwLG8uZGVmYXVsdCkoe29wYWNpdHk6MCx0cmFuc2Zvcm06ZyguNzUpfSxoW2VdLGwpfSxuKSl9KX19XSksdH0oZC5kZWZhdWx0LkNvbXBvbmVudCk7Yi5kZWZhdWx0UHJvcHM9e3RpbWVvdXQ6XCJhdXRvXCJ9LGIubXVpU3VwcG9ydEF1dG89ITA7dmFyIHk9KDAsZi5kZWZhdWx0KSgpKGIpO3QuZGVmYXVsdD15fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDApKSxsPShyKG4oMSkpLG4oNykscihuKDQ2MSkpKSxzPXIobigzMykpLHU9cihuKDI1KSksYz1yKG4oOCkpLGQ9cihuKDEyMSkpLHA9cihuKDE0OSkpLGY9cihuKDM2KSksbT1uKDQ2OCksZz1yKG4oMTUwKSksaD1tLnN0eWxlcztmdW5jdGlvbiBiKGUpe3ZhciB0PWUuYXV0b1dpZHRoLG49ZS5jaGlsZHJlbixyPWUuY2xhc3Nlcyx1PWUuZGlzcGxheUVtcHR5LGM9ZS5JY29uQ29tcG9uZW50LHA9ZS5pbnB1dCxmPWUuaW5wdXRQcm9wcyxtPWUuTWVudVByb3BzLGg9ZS5tdWlGb3JtQ29udHJvbCx5PWUubXVsdGlwbGUsdj1lLm5hdGl2ZSxTPWUub25DbG9zZSxFPWUub25PcGVuLHg9ZS5vcGVuLHc9ZS5yZW5kZXJWYWx1ZSxrPWUuU2VsZWN0RGlzcGxheVByb3BzLF89KGUudmFyaWFudCwoMCxhLmRlZmF1bHQpKGUsW1wiYXV0b1dpZHRoXCIsXCJjaGlsZHJlblwiLFwiY2xhc3Nlc1wiLFwiZGlzcGxheUVtcHR5XCIsXCJJY29uQ29tcG9uZW50XCIsXCJpbnB1dFwiLFwiaW5wdXRQcm9wc1wiLFwiTWVudVByb3BzXCIsXCJtdWlGb3JtQ29udHJvbFwiLFwibXVsdGlwbGVcIixcIm5hdGl2ZVwiLFwib25DbG9zZVwiLFwib25PcGVuXCIsXCJvcGVuXCIsXCJyZW5kZXJWYWx1ZVwiLFwiU2VsZWN0RGlzcGxheVByb3BzXCIsXCJ2YXJpYW50XCJdKSksVD12P2cuZGVmYXVsdDpsLmRlZmF1bHQsQT0oMCxzLmRlZmF1bHQpKHtwcm9wczplLG11aUZvcm1Db250cm9sOmgsc3RhdGVzOltcInZhcmlhbnRcIl19KTtyZXR1cm4gaS5kZWZhdWx0LmNsb25lRWxlbWVudChwLCgwLG8uZGVmYXVsdCkoe2lucHV0Q29tcG9uZW50OlQsaW5wdXRQcm9wczooMCxvLmRlZmF1bHQpKHtjaGlsZHJlbjpuLEljb25Db21wb25lbnQ6Yyx2YXJpYW50OkEudmFyaWFudCx0eXBlOnZvaWQgMCxtdWx0aXBsZTp5fSx2P3t9OnthdXRvV2lkdGg6dCxkaXNwbGF5RW1wdHk6dSxNZW51UHJvcHM6bSxvbkNsb3NlOlMsb25PcGVuOkUsb3Blbjp4LHJlbmRlclZhbHVlOncsU2VsZWN0RGlzcGxheVByb3BzOmt9LGYse2NsYXNzZXM6Zj8oMCxkLmRlZmF1bHQpKHtiYXNlQ2xhc3NlczpyLG5ld0NsYXNzZXM6Zi5jbGFzc2VzLENvbXBvbmVudDpifSk6cn0scD9wLnByb3BzLmlucHV0UHJvcHM6e30pfSxfKSl9dC5zdHlsZXM9aCxiLmRlZmF1bHRQcm9wcz17YXV0b1dpZHRoOiExLGRpc3BsYXlFbXB0eTohMSxJY29uQ29tcG9uZW50OnAuZGVmYXVsdCxpbnB1dDppLmRlZmF1bHQuY3JlYXRlRWxlbWVudChmLmRlZmF1bHQsbnVsbCksbXVsdGlwbGU6ITEsbmF0aXZlOiExfSxiLm11aU5hbWU9XCJTZWxlY3RcIjt2YXIgeT0oMCxjLmRlZmF1bHQpKGgse25hbWU6XCJNdWlTZWxlY3RcIn0pKCgwLHUuZGVmYXVsdCkoYikpO3QuZGVmYXVsdD15fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigxNDApKSxzPXIobigxMikpLHU9cihuKDEzKSksYz1yKG4oMTQpKSxkPXIobigxNSkpLHA9cihuKDE2KSksZj1yKG4oMjkpKSxtPXIobigwKSksZz0ocihuKDEpKSxyKG4oNikpKSxoPShyKG4oMTcpKSxuKDcpLHIobig0NjIpKSksYj1uKDcyKSx5PW4oMzIpO2Z1bmN0aW9uIHYoZSx0KXtyZXR1cm5cIm9iamVjdFwiPT09KDAsZi5kZWZhdWx0KSh0KSYmbnVsbCE9PXQ/ZT09PXQ6U3RyaW5nKGUpPT09U3RyaW5nKHQpfXZhciBTPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIG47cmV0dXJuKDAscy5kZWZhdWx0KSh0aGlzLHQpLChuPSgwLGMuZGVmYXVsdCkodGhpcywoMCxkLmRlZmF1bHQpKHQpLmNhbGwodGhpcykpKS5pZ25vcmVOZXh0Qmx1cj0hMSxuLnVwZGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmV2ZW50LHI9ZS5vcGVuO24uaXNPcGVuQ29udHJvbGxlZD9yP24ucHJvcHMub25PcGVuKHQpOm4ucHJvcHMub25DbG9zZSh0KTpuLnNldFN0YXRlKHttZW51TWluV2lkdGg6bi5wcm9wcy5hdXRvV2lkdGg/bnVsbDpuLmRpc3BsYXlSZWYuY2xpZW50V2lkdGgsb3BlbjpyfSl9LG4uaGFuZGxlQ2xpY2s9ZnVuY3Rpb24oZSl7bi5pZ25vcmVOZXh0Qmx1cj0hMCxuLnVwZGF0ZSh7b3BlbjohMCxldmVudDplfSl9LG4uaGFuZGxlQ2xvc2U9ZnVuY3Rpb24oZSl7bi51cGRhdGUoe29wZW46ITEsZXZlbnQ6ZX0pfSxuLmhhbmRsZUl0ZW1DbGljaz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7bi5wcm9wcy5tdWx0aXBsZXx8bi51cGRhdGUoe29wZW46ITEsZXZlbnQ6dH0pO3ZhciByPW4ucHJvcHMsbz1yLm9uQ2hhbmdlLGE9ci5uYW1lO2lmKG8pe3ZhciBpO2lmKG4ucHJvcHMubXVsdGlwbGUpe3ZhciBzPShpPUFycmF5LmlzQXJyYXkobi5wcm9wcy52YWx1ZSk/KDAsbC5kZWZhdWx0KShuLnByb3BzLnZhbHVlKTpbXSkuaW5kZXhPZihlLnByb3BzLnZhbHVlKTstMT09PXM/aS5wdXNoKGUucHJvcHMudmFsdWUpOmkuc3BsaWNlKHMsMSl9ZWxzZSBpPWUucHJvcHMudmFsdWU7dC5wZXJzaXN0KCksdC50YXJnZXQ9e3ZhbHVlOmksbmFtZTphfSxvKHQsZSl9fX0sbi5oYW5kbGVCbHVyPWZ1bmN0aW9uKGUpe2lmKCEwPT09bi5pZ25vcmVOZXh0Qmx1cilyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx2b2lkKG4uaWdub3JlTmV4dEJsdXI9ITEpO2lmKG4ucHJvcHMub25CbHVyKXt2YXIgdD1uLnByb3BzLHI9dC52YWx1ZSxvPXQubmFtZTtlLnBlcnNpc3QoKSxlLnRhcmdldD17dmFsdWU6cixuYW1lOm99LG4ucHJvcHMub25CbHVyKGUpfX0sbi5oYW5kbGVLZXlEb3duPWZ1bmN0aW9uKGUpe24ucHJvcHMucmVhZE9ubHl8fC0xIT09W1wiIFwiLFwiQXJyb3dVcFwiLFwiQXJyb3dEb3duXCJdLmluZGV4T2YoZS5rZXkpJiYoZS5wcmV2ZW50RGVmYXVsdCgpLG4uaWdub3JlTmV4dEJsdXI9ITAsbi51cGRhdGUoe29wZW46ITAsZXZlbnQ6ZX0pKX0sbi5oYW5kbGVEaXNwbGF5UmVmPWZ1bmN0aW9uKGUpe24uZGlzcGxheVJlZj1lfSxuLmhhbmRsZUlucHV0UmVmPWZ1bmN0aW9uKGUpe3ZhciB0PW4ucHJvcHMuaW5wdXRSZWY7aWYodCl7dmFyIHI9e25vZGU6ZSx2YWx1ZTpuLnByb3BzLnZhbHVlLGZvY3VzOmZ1bmN0aW9uKCl7bi5kaXNwbGF5UmVmLmZvY3VzKCl9fTsoMCx5LnNldFJlZikodCxyKX19LG4uaXNPcGVuQ29udHJvbGxlZD12b2lkIDAhPT1lLm9wZW4sbi5zdGF0ZT17bWVudU1pbldpZHRoOm51bGwsb3BlbjohMX0sbn1yZXR1cm4oMCxwLmRlZmF1bHQpKHQsZSksKDAsdS5kZWZhdWx0KSh0LFt7a2V5OlwiY29tcG9uZW50RGlkTW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXNPcGVuQ29udHJvbGxlZCYmdGhpcy5wcm9wcy5vcGVuJiYodGhpcy5kaXNwbGF5UmVmLmZvY3VzKCksdGhpcy5mb3JjZVVwZGF0ZSgpKSx0aGlzLnByb3BzLmF1dG9Gb2N1cyYmdGhpcy5kaXNwbGF5UmVmLmZvY3VzKCl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0LG49dGhpcyxyPXRoaXMucHJvcHMsbD1yLmF1dG9XaWR0aCxzPXIuY2hpbGRyZW4sdT1yLmNsYXNzZXMsYz1yLmNsYXNzTmFtZSxkPXIuZGlzYWJsZWQscD1yLmRpc3BsYXlFbXB0eSxmPXIuSWNvbkNvbXBvbmVudCx5PShyLmlucHV0UmVmLHIuTWVudVByb3BzKSxTPXZvaWQgMD09PXk/e306eSxFPXIubXVsdGlwbGUseD1yLm5hbWUsdz0oci5vbkJsdXIsci5vbkNoYW5nZSxyLm9uQ2xvc2Usci5vbkZvY3VzKSxrPShyLm9uT3BlbixyLm9wZW4pLF89ci5yZWFkT25seSxUPXIucmVuZGVyVmFsdWUsQT0oci5yZXF1aXJlZCxyLlNlbGVjdERpc3BsYXlQcm9wcyksQz1yLnRhYkluZGV4LE89ci50eXBlLEk9dm9pZCAwPT09Tz9cImhpZGRlblwiOk8sTj1yLnZhbHVlLFI9ci52YXJpYW50LFA9KDAsaS5kZWZhdWx0KShyLFtcImF1dG9XaWR0aFwiLFwiY2hpbGRyZW5cIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiZGlzYWJsZWRcIixcImRpc3BsYXlFbXB0eVwiLFwiSWNvbkNvbXBvbmVudFwiLFwiaW5wdXRSZWZcIixcIk1lbnVQcm9wc1wiLFwibXVsdGlwbGVcIixcIm5hbWVcIixcIm9uQmx1clwiLFwib25DaGFuZ2VcIixcIm9uQ2xvc2VcIixcIm9uRm9jdXNcIixcIm9uT3BlblwiLFwib3BlblwiLFwicmVhZE9ubHlcIixcInJlbmRlclZhbHVlXCIsXCJyZXF1aXJlZFwiLFwiU2VsZWN0RGlzcGxheVByb3BzXCIsXCJ0YWJJbmRleFwiLFwidHlwZVwiLFwidmFsdWVcIixcInZhcmlhbnRcIl0pLE09dGhpcy5pc09wZW5Db250cm9sbGVkJiZ0aGlzLmRpc3BsYXlSZWY/azp0aGlzLnN0YXRlLm9wZW47ZGVsZXRlIFBbXCJhcmlhLWludmFsaWRcIl07dmFyIEw9XCJcIixEPVtdLEY9ITE7KCgwLGIuaXNGaWxsZWQpKHRoaXMucHJvcHMpfHxwKSYmKFQ/dD1UKE4pOkY9ITApO3ZhciBCPW0uZGVmYXVsdC5DaGlsZHJlbi5tYXAocyxmdW5jdGlvbihlKXtpZighbS5kZWZhdWx0LmlzVmFsaWRFbGVtZW50KGUpKXJldHVybiBudWxsO3ZhciB0O2lmKEUpe2lmKCFBcnJheS5pc0FycmF5KE4pKXRocm93IG5ldyBFcnJvcihcIk1hdGVyaWFsLVVJOiB0aGUgYHZhbHVlYCBwcm9wZXJ0eSBtdXN0IGJlIGFuIGFycmF5IHdoZW4gdXNpbmcgdGhlIGBTZWxlY3RgIGNvbXBvbmVudCB3aXRoIGBtdWx0aXBsZWAuXCIpOyh0PU4uc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdih0LGUucHJvcHMudmFsdWUpfSkpJiZGJiZELnB1c2goZS5wcm9wcy5jaGlsZHJlbil9ZWxzZSh0PXYoTixlLnByb3BzLnZhbHVlKSkmJkYmJihMPWUucHJvcHMuY2hpbGRyZW4pO3JldHVybiBtLmRlZmF1bHQuY2xvbmVFbGVtZW50KGUse29uQ2xpY2s6bi5oYW5kbGVJdGVtQ2xpY2soZSkscm9sZTpcIm9wdGlvblwiLHNlbGVjdGVkOnQsdmFsdWU6dm9pZCAwLFwiZGF0YS12YWx1ZVwiOmUucHJvcHMudmFsdWV9KX0pO0YmJih0PUU/RC5qb2luKFwiLCBcIik6TCk7dmFyIGosVT10aGlzLnN0YXRlLm1lbnVNaW5XaWR0aDtyZXR1cm4hbCYmdGhpcy5pc09wZW5Db250cm9sbGVkJiZ0aGlzLmRpc3BsYXlSZWYmJihVPXRoaXMuZGlzcGxheVJlZi5jbGllbnRXaWR0aCksaj12b2lkIDAhPT1DP0M6ZD9udWxsOjAsbS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOnUucm9vdH0sbS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAsZy5kZWZhdWx0KSh1LnNlbGVjdCx1LnNlbGVjdE1lbnUsKGU9e30sKDAsYS5kZWZhdWx0KShlLHUuZGlzYWJsZWQsZCksKDAsYS5kZWZhdWx0KShlLHUuZmlsbGVkLFwiZmlsbGVkXCI9PT1SKSwoMCxhLmRlZmF1bHQpKGUsdS5vdXRsaW5lZCxcIm91dGxpbmVkXCI9PT1SKSxlKSxjKSxyZWY6dGhpcy5oYW5kbGVEaXNwbGF5UmVmLFwiYXJpYS1wcmVzc2VkXCI6TT9cInRydWVcIjpcImZhbHNlXCIsdGFiSW5kZXg6aixyb2xlOlwiYnV0dG9uXCIsXCJhcmlhLW93bnNcIjpNP1wibWVudS1cIi5jb25jYXQoeHx8XCJcIik6dm9pZCAwLFwiYXJpYS1oYXNwb3B1cFwiOlwidHJ1ZVwiLG9uS2V5RG93bjp0aGlzLmhhbmRsZUtleURvd24sb25CbHVyOnRoaXMuaGFuZGxlQmx1cixvbkNsaWNrOmR8fF8/bnVsbDp0aGlzLmhhbmRsZUNsaWNrLG9uRm9jdXM6dyxpZDp4P1wic2VsZWN0LVwiLmNvbmNhdCh4KTp2b2lkIDB9LEEpLHR8fG0uZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOlwiJiM4MjAzO1wifX0pKSxtLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImlucHV0XCIsKDAsby5kZWZhdWx0KSh7dmFsdWU6QXJyYXkuaXNBcnJheShOKT9OLmpvaW4oXCIsXCIpOk4sbmFtZTp4LHJlZjp0aGlzLmhhbmRsZUlucHV0UmVmLHR5cGU6SX0sUCkpLG0uZGVmYXVsdC5jcmVhdGVFbGVtZW50KGYse2NsYXNzTmFtZTp1Lmljb259KSxtLmRlZmF1bHQuY3JlYXRlRWxlbWVudChoLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7aWQ6XCJtZW51LVwiLmNvbmNhdCh4fHxcIlwiKSxhbmNob3JFbDp0aGlzLmRpc3BsYXlSZWYsb3BlbjpNLG9uQ2xvc2U6dGhpcy5oYW5kbGVDbG9zZX0sUyx7TWVudUxpc3RQcm9wczooMCxvLmRlZmF1bHQpKHtyb2xlOlwibGlzdGJveFwiLGRpc2FibGVMaXN0V3JhcDohMH0sUy5NZW51TGlzdFByb3BzKSxQYXBlclByb3BzOigwLG8uZGVmYXVsdCkoe30sUy5QYXBlclByb3BzLHtzdHlsZTooMCxvLmRlZmF1bHQpKHttaW5XaWR0aDpVfSxudWxsIT1TLlBhcGVyUHJvcHM/Uy5QYXBlclByb3BzLnN0eWxlOm51bGwpfSl9KSxCKSl9fV0pLHR9KG0uZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD1TfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDEyKSksbD1yKG4oMTMpKSxzPXIobigxNCkpLHU9cihuKDE1KSksYz1yKG4oMTYpKSxkPXIobigwKSkscD0ocihuKDEpKSxyKG4oMjIpKSksZj1yKG4oMTQ3KSksbT1yKG4oOCkpLGc9cihuKDgxKSksaD1yKG4oODkpKSxiPXt2ZXJ0aWNhbDpcInRvcFwiLGhvcml6b250YWw6XCJyaWdodFwifSx5PXt2ZXJ0aWNhbDpcInRvcFwiLGhvcml6b250YWw6XCJsZWZ0XCJ9LHY9e3BhcGVyOnttYXhIZWlnaHQ6XCJjYWxjKDEwMCUgLSA5NnB4KVwiLFdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOlwidG91Y2hcIn19O3Quc3R5bGVzPXY7dmFyIFM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47KDAsaS5kZWZhdWx0KSh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7YSsrKW9bYV09YXJndW1lbnRzW2FdO3JldHVybihuPSgwLHMuZGVmYXVsdCkodGhpcywoZT0oMCx1LmRlZmF1bHQpKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKS5nZXRDb250ZW50QW5jaG9yRWw9ZnVuY3Rpb24oKXtyZXR1cm4gbi5tZW51TGlzdFJlZi5zZWxlY3RlZEl0ZW1SZWY/cC5kZWZhdWx0LmZpbmRET01Ob2RlKG4ubWVudUxpc3RSZWYuc2VsZWN0ZWRJdGVtUmVmKTpwLmRlZmF1bHQuZmluZERPTU5vZGUobi5tZW51TGlzdFJlZikuZmlyc3RDaGlsZH0sbi5mb2N1cz1mdW5jdGlvbigpe2lmKG4ubWVudUxpc3RSZWYmJm4ubWVudUxpc3RSZWYuc2VsZWN0ZWRJdGVtUmVmKXAuZGVmYXVsdC5maW5kRE9NTm9kZShuLm1lbnVMaXN0UmVmLnNlbGVjdGVkSXRlbVJlZikuZm9jdXMoKTtlbHNle3ZhciBlPXAuZGVmYXVsdC5maW5kRE9NTm9kZShuLm1lbnVMaXN0UmVmKTtlJiZlLmZpcnN0Q2hpbGQmJmUuZmlyc3RDaGlsZC5mb2N1cygpfX0sbi5oYW5kbGVNZW51TGlzdFJlZj1mdW5jdGlvbihlKXtuLm1lbnVMaXN0UmVmPWV9LG4uaGFuZGxlRW50ZXJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcyxyPXQuZGlzYWJsZUF1dG9Gb2N1c0l0ZW0sbz10LnRoZW1lLGE9cC5kZWZhdWx0LmZpbmRET01Ob2RlKG4ubWVudUxpc3RSZWYpO2lmKCEwIT09ciYmbi5mb2N1cygpLGEmJmUuY2xpZW50SGVpZ2h0PGEuY2xpZW50SGVpZ2h0JiYhYS5zdHlsZS53aWR0aCl7dmFyIGk9XCJcIi5jb25jYXQoKDAsZi5kZWZhdWx0KSgpLFwicHhcIik7YS5zdHlsZVtcInJ0bFwiPT09by5kaXJlY3Rpb24/XCJwYWRkaW5nTGVmdFwiOlwicGFkZGluZ1JpZ2h0XCJdPWksYS5zdHlsZS53aWR0aD1cImNhbGMoMTAwJSArIFwiLmNvbmNhdChpLFwiKVwiKX1uLnByb3BzLm9uRW50ZXJpbmcmJm4ucHJvcHMub25FbnRlcmluZyhlKX0sbi5oYW5kbGVMaXN0S2V5RG93bj1mdW5jdGlvbihlKXtcIlRhYlwiPT09ZS5rZXkmJihlLnByZXZlbnREZWZhdWx0KCksbi5wcm9wcy5vbkNsb3NlJiZuLnByb3BzLm9uQ2xvc2UoZSxcInRhYktleURvd25cIikpfSxufXJldHVybigwLGMuZGVmYXVsdCkodCxlKSwoMCxsLmRlZmF1bHQpKHQsW3trZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcm9wcy5vcGVuJiYhMCE9PXRoaXMucHJvcHMuZGlzYWJsZUF1dG9Gb2N1c0l0ZW0mJnRoaXMuZm9jdXMoKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNoaWxkcmVuLG49ZS5jbGFzc2VzLHI9KGUuZGlzYWJsZUF1dG9Gb2N1c0l0ZW0sZS5NZW51TGlzdFByb3BzKSxpPShlLm9uRW50ZXJpbmcsZS5QYXBlclByb3BzKSxsPXZvaWQgMD09PWk/e306aSxzPWUuUG9wb3ZlckNsYXNzZXMsdT1lLnRoZW1lLGM9KDAsYS5kZWZhdWx0KShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJkaXNhYmxlQXV0b0ZvY3VzSXRlbVwiLFwiTWVudUxpc3RQcm9wc1wiLFwib25FbnRlcmluZ1wiLFwiUGFwZXJQcm9wc1wiLFwiUG9wb3ZlckNsYXNzZXNcIixcInRoZW1lXCJdKTtyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZy5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe2dldENvbnRlbnRBbmNob3JFbDp0aGlzLmdldENvbnRlbnRBbmNob3JFbCxjbGFzc2VzOnMsb25FbnRlcmluZzp0aGlzLmhhbmRsZUVudGVyaW5nLGFuY2hvck9yaWdpbjpcInJ0bFwiPT09dS5kaXJlY3Rpb24/Yjp5LHRyYW5zZm9ybU9yaWdpbjpcInJ0bFwiPT09dS5kaXJlY3Rpb24/Yjp5LFBhcGVyUHJvcHM6KDAsby5kZWZhdWx0KSh7fSxsLHtjbGFzc2VzOigwLG8uZGVmYXVsdCkoe30sbC5jbGFzc2VzLHtyb290Om4ucGFwZXJ9KX0pfSxjKSxkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChoLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7b25LZXlEb3duOnRoaXMuaGFuZGxlTGlzdEtleURvd259LHIse3JlZjp0aGlzLmhhbmRsZU1lbnVMaXN0UmVmfSksdCkpfX1dKSx0fShkLmRlZmF1bHQuQ29tcG9uZW50KTtTLmRlZmF1bHRQcm9wcz17ZGlzYWJsZUF1dG9Gb2N1c0l0ZW06ITEsdHJhbnNpdGlvbkR1cmF0aW9uOlwiYXV0b1wifTt2YXIgRT0oMCxtLmRlZmF1bHQpKHYse25hbWU6XCJNdWlNZW51XCIsd2l0aFRoZW1lOiEwfSkoUyk7dC5kZWZhdWx0PUV9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig1KSksaT1yKG4oMTIpKSxsPXIobigxMykpLHM9cihuKDE0KSksdT1yKG4oMTUpKSxjPXIobigxNikpLGQ9cihuKDApKSxwPShyKG4oMSkpLHIobigyMikpKSxmPShyKG4oMTcpKSxyKG4oMjYpKSksbT1yKG4oOTApKSxnPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuOygwLGkuZGVmYXVsdCkodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4obj0oMCxzLmRlZmF1bHQpKHRoaXMsKGU9KDAsdS5kZWZhdWx0KSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSkuc3RhdGU9e2N1cnJlbnRUYWJJbmRleDpudWxsfSxuLmhhbmRsZUJsdXI9ZnVuY3Rpb24oZSl7bi5ibHVyVGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe2lmKG4ubGlzdFJlZil7dmFyIGU9bi5saXN0UmVmLHQ9KDAsZi5kZWZhdWx0KShlKS5hY3RpdmVFbGVtZW50O2UuY29udGFpbnModCl8fG4ucmVzZXRUYWJJbmRleCgpfX0sMzApLG4ucHJvcHMub25CbHVyJiZuLnByb3BzLm9uQmx1cihlKX0sbi5oYW5kbGVLZXlEb3duPWZ1bmN0aW9uKGUpe3ZhciB0PW4ubGlzdFJlZixyPWUua2V5LG89KDAsZi5kZWZhdWx0KSh0KS5hY3RpdmVFbGVtZW50O1wiQXJyb3dVcFwiIT09ciYmXCJBcnJvd0Rvd25cIiE9PXJ8fG8mJighb3x8dC5jb250YWlucyhvKSk/XCJBcnJvd0Rvd25cIj09PXI/KGUucHJldmVudERlZmF1bHQoKSxvLm5leHRFbGVtZW50U2libGluZz9vLm5leHRFbGVtZW50U2libGluZy5mb2N1cygpOm4ucHJvcHMuZGlzYWJsZUxpc3RXcmFwfHx0LmZpcnN0Q2hpbGQuZm9jdXMoKSk6XCJBcnJvd1VwXCI9PT1yPyhlLnByZXZlbnREZWZhdWx0KCksby5wcmV2aW91c0VsZW1lbnRTaWJsaW5nP28ucHJldmlvdXNFbGVtZW50U2libGluZy5mb2N1cygpOm4ucHJvcHMuZGlzYWJsZUxpc3RXcmFwfHx0Lmxhc3RDaGlsZC5mb2N1cygpKTpcIkhvbWVcIj09PXI/KGUucHJldmVudERlZmF1bHQoKSx0LmZpcnN0Q2hpbGQuZm9jdXMoKSk6XCJFbmRcIj09PXImJihlLnByZXZlbnREZWZhdWx0KCksdC5sYXN0Q2hpbGQuZm9jdXMoKSk6bi5zZWxlY3RlZEl0ZW1SZWY/bi5zZWxlY3RlZEl0ZW1SZWYuZm9jdXMoKTp0LmZpcnN0Q2hpbGQuZm9jdXMoKSxuLnByb3BzLm9uS2V5RG93biYmbi5wcm9wcy5vbktleURvd24oZSl9LG4uaGFuZGxlSXRlbUZvY3VzPWZ1bmN0aW9uKGUpe3ZhciB0PW4ubGlzdFJlZjtpZih0KWZvcih2YXIgcj0wO3I8dC5jaGlsZHJlbi5sZW5ndGg7cis9MSlpZih0LmNoaWxkcmVuW3JdPT09ZS5jdXJyZW50VGFyZ2V0KXtuLnNldFRhYkluZGV4KHIpO2JyZWFrfX0sbn1yZXR1cm4oMCxjLmRlZmF1bHQpKHQsZSksKDAsbC5kZWZhdWx0KSh0LFt7a2V5OlwiY29tcG9uZW50RGlkTW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucmVzZXRUYWJJbmRleCgpfX0se2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5ibHVyVGltZXIpfX0se2tleTpcInNldFRhYkluZGV4XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5zZXRTdGF0ZSh7Y3VycmVudFRhYkluZGV4OmV9KX19LHtrZXk6XCJmb2N1c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZS5jdXJyZW50VGFiSW5kZXgsdD10aGlzLmxpc3RSZWY7dCYmdC5jaGlsZHJlbiYmdC5maXJzdENoaWxkJiYoZSYmZT49MD90LmNoaWxkcmVuW2VdLmZvY3VzKCk6dC5maXJzdENoaWxkLmZvY3VzKCkpfX0se2tleTpcInJlc2V0VGFiSW5kZXhcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmxpc3RSZWYsdD0oMCxmLmRlZmF1bHQpKGUpLmFjdGl2ZUVsZW1lbnQsbj1bXSxyPTA7cjxlLmNoaWxkcmVuLmxlbmd0aDtyKz0xKW4ucHVzaChlLmNoaWxkcmVuW3JdKTt2YXIgbz1uLmluZGV4T2YodCk7cmV0dXJuLTEhPT1vP3RoaXMuc2V0VGFiSW5kZXgobyk6dGhpcy5zZWxlY3RlZEl0ZW1SZWY/dGhpcy5zZXRUYWJJbmRleChuLmluZGV4T2YodGhpcy5zZWxlY3RlZEl0ZW1SZWYpKTp0aGlzLnNldFRhYkluZGV4KDApfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmNoaWxkcmVuLHI9dC5jbGFzc05hbWUsaT0odC5vbkJsdXIsdC5vbktleURvd24sdC5kaXNhYmxlTGlzdFdyYXAsKDAsYS5kZWZhdWx0KSh0LFtcImNoaWxkcmVuXCIsXCJjbGFzc05hbWVcIixcIm9uQmx1clwiLFwib25LZXlEb3duXCIsXCJkaXNhYmxlTGlzdFdyYXBcIl0pKTtyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobS5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe3JvbGU6XCJtZW51XCIscmVmOmZ1bmN0aW9uKHQpe2UubGlzdFJlZj1wLmRlZmF1bHQuZmluZERPTU5vZGUodCl9LGNsYXNzTmFtZTpyLG9uS2V5RG93bjp0aGlzLmhhbmRsZUtleURvd24sb25CbHVyOnRoaXMuaGFuZGxlQmx1cn0saSksZC5kZWZhdWx0LkNoaWxkcmVuLm1hcChuLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGQuZGVmYXVsdC5pc1ZhbGlkRWxlbWVudCh0KT9kLmRlZmF1bHQuY2xvbmVFbGVtZW50KHQse3RhYkluZGV4Om49PT1lLnN0YXRlLmN1cnJlbnRUYWJJbmRleD8wOi0xLHJlZjp0LnByb3BzLnNlbGVjdGVkP2Z1bmN0aW9uKHQpe2Uuc2VsZWN0ZWRJdGVtUmVmPXAuZGVmYXVsdC5maW5kRE9NTm9kZSh0KX06dm9pZCAwLG9uRm9jdXM6ZS5oYW5kbGVJdGVtRm9jdXN9KTpudWxsfSkpfX1dKSx0fShkLmRlZmF1bHQuQ29tcG9uZW50KTtnLmRlZmF1bHRQcm9wcz17ZGlzYWJsZUxpc3RXcmFwOiExfTt2YXIgaD1nO3QuZGVmYXVsdD1ofSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShuKDcpLHIobig4KSkpLGM9cihuKDE0MSkpLGQ9e3Jvb3Q6e2xpc3RTdHlsZTpcIm5vbmVcIixtYXJnaW46MCxwYWRkaW5nOjAscG9zaXRpb246XCJyZWxhdGl2ZVwifSxwYWRkaW5nOntwYWRkaW5nVG9wOjgscGFkZGluZ0JvdHRvbTo4fSxkZW5zZTp7cGFkZGluZ1RvcDo0LHBhZGRpbmdCb3R0b206NH0sc3ViaGVhZGVyOntwYWRkaW5nVG9wOjB9fTtmdW5jdGlvbiBwKGUpe3ZhciB0LG49ZS5jaGlsZHJlbixyPWUuY2xhc3Nlcyx1PWUuY2xhc3NOYW1lLGQ9ZS5jb21wb25lbnQscD1lLmRlbnNlLGY9ZS5kaXNhYmxlUGFkZGluZyxtPWUuc3ViaGVhZGVyLGc9KDAsaS5kZWZhdWx0KShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbXBvbmVudFwiLFwiZGVuc2VcIixcImRpc2FibGVQYWRkaW5nXCIsXCJzdWJoZWFkZXJcIl0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHIucm9vdCwodD17fSwoMCxhLmRlZmF1bHQpKHQsci5kZW5zZSxwJiYhZiksKDAsYS5kZWZhdWx0KSh0LHIucGFkZGluZywhZiksKDAsYS5kZWZhdWx0KSh0LHIuc3ViaGVhZGVyLG0pLHQpLHUpfSxnKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChjLmRlZmF1bHQuUHJvdmlkZXIse3ZhbHVlOntkZW5zZTpwfX0sbSxuKSl9dC5zdHlsZXM9ZCxwLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OlwidWxcIixkZW5zZTohMSxkaXNhYmxlUGFkZGluZzohMX07dmFyIGY9KDAsdS5kZWZhdWx0KShkLHtuYW1lOlwiTXVpTGlzdFwifSkocCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDkpKSxhPXIobig0KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KG4oNykscihuKDM3KSkpLGM9cihuKDgpKSxkPWZ1bmN0aW9uKGUpe3ZhciB0PVwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlLG49dD9cInJnYmEoMCwgMCwgMCwgMC40MilcIjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KVwiO3JldHVybntyb290Ontwb3NpdGlvbjpcInJlbGF0aXZlXCJ9LGZvcm1Db250cm9sOntcImxhYmVsICsgJlwiOnttYXJnaW5Ub3A6MTZ9fSxmb2N1c2VkOnt9LGRpc2FibGVkOnt9LHVuZGVybGluZTp7XCImOmFmdGVyXCI6e2JvcmRlckJvdHRvbTpcIjJweCBzb2xpZCBcIi5jb25jYXQoZS5wYWxldHRlLnByaW1hcnlbdD9cImRhcmtcIjpcImxpZ2h0XCJdKSxsZWZ0OjAsYm90dG9tOjAsY29udGVudDonXCJcIicscG9zaXRpb246XCJhYnNvbHV0ZVwiLHJpZ2h0OjAsdHJhbnNmb3JtOlwic2NhbGVYKDApXCIsdHJhbnNpdGlvbjplLnRyYW5zaXRpb25zLmNyZWF0ZShcInRyYW5zZm9ybVwiLHtkdXJhdGlvbjplLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXIsZWFzaW5nOmUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VPdXR9KSxwb2ludGVyRXZlbnRzOlwibm9uZVwifSxcIiYkZm9jdXNlZDphZnRlclwiOnt0cmFuc2Zvcm06XCJzY2FsZVgoMSlcIn0sXCImJGVycm9yOmFmdGVyXCI6e2JvcmRlckJvdHRvbUNvbG9yOmUucGFsZXR0ZS5lcnJvci5tYWluLHRyYW5zZm9ybTpcInNjYWxlWCgxKVwifSxcIiY6YmVmb3JlXCI6e2JvcmRlckJvdHRvbTpcIjFweCBzb2xpZCBcIi5jb25jYXQobiksbGVmdDowLGJvdHRvbTowLGNvbnRlbnQ6J1wiXFxcXDAwYTBcIicscG9zaXRpb246XCJhYnNvbHV0ZVwiLHJpZ2h0OjAsdHJhbnNpdGlvbjplLnRyYW5zaXRpb25zLmNyZWF0ZShcImJvcmRlci1ib3R0b20tY29sb3JcIix7ZHVyYXRpb246ZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVyfSkscG9pbnRlckV2ZW50czpcIm5vbmVcIn0sXCImOmhvdmVyOm5vdCgkZGlzYWJsZWQpOm5vdCgkZm9jdXNlZCk6bm90KCRlcnJvcik6YmVmb3JlXCI6e2JvcmRlckJvdHRvbTpcIjJweCBzb2xpZCBcIi5jb25jYXQoZS5wYWxldHRlLnRleHQucHJpbWFyeSksXCJAbWVkaWEgKGhvdmVyOiBub25lKVwiOntib3JkZXJCb3R0b206XCIxcHggc29saWQgXCIuY29uY2F0KG4pfX0sXCImJGRpc2FibGVkOmJlZm9yZVwiOntib3JkZXJCb3R0b21TdHlsZTpcImRvdHRlZFwifX0sZXJyb3I6e30sbXVsdGlsaW5lOnt9LGZ1bGxXaWR0aDp7fSxpbnB1dDp7fSxpbnB1dE1hcmdpbkRlbnNlOnt9LGlucHV0TXVsdGlsaW5lOnt9LGlucHV0VHlwZTp7fSxpbnB1dFR5cGVTZWFyY2g6e319fTtmdW5jdGlvbiBwKGUpe3ZhciB0PWUuZGlzYWJsZVVuZGVybGluZSxuPWUuY2xhc3NlcyxyPSgwLGkuZGVmYXVsdCkoZSxbXCJkaXNhYmxlVW5kZXJsaW5lXCIsXCJjbGFzc2VzXCJdKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodS5kZWZhdWx0LCgwLGEuZGVmYXVsdCkoe2NsYXNzZXM6KDAsYS5kZWZhdWx0KSh7fSxuLHtyb290OigwLHMuZGVmYXVsdCkobi5yb290LCgwLG8uZGVmYXVsdCkoe30sbi51bmRlcmxpbmUsIXQpKSx1bmRlcmxpbmU6bnVsbH0pfSxyKSl9dC5zdHlsZXM9ZCx1LmRlZmF1bHQuZGVmYXVsdFByb3BzPXtmdWxsV2lkdGg6ITEsaW5wdXRDb21wb25lbnQ6XCJpbnB1dFwiLG11bHRpbGluZTohMSx0eXBlOlwidGV4dFwifSxwLm11aU5hbWU9XCJJbnB1dFwiO3ZhciBmPSgwLGMuZGVmYXVsdCkoZCx7bmFtZTpcIk11aUlucHV0XCJ9KShwKTt0LmRlZmF1bHQ9Zn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMTIpKSxzPXIobigxNCkpLHU9cihuKDE1KSksYz1yKG4oMTMpKSxkPXIobigxNikpLHA9cihuKDApKSxmPShyKG4oMSkpLHIobigxNykpLHIobig2KSkpLG09KG4oNykscihuKDMzKSkpLGc9cihuKDczKSksaD1yKG4oMjUpKSxiPXIobig4KSkseT1uKDMyKSx2PXIobig0NjcpKSxTPW4oNzIpLEU9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGUsbj17Y29sb3I6XCJjdXJyZW50Q29sb3JcIixvcGFjaXR5OnQ/LjQyOi41LHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoXCJvcGFjaXR5XCIse2R1cmF0aW9uOmUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlcn0pfSxyPXtvcGFjaXR5OjB9LG89e29wYWNpdHk6dD8uNDI6LjV9O3JldHVybntyb290Ontmb250RmFtaWx5OmUudHlwb2dyYXBoeS5mb250RmFtaWx5LGNvbG9yOmUucGFsZXR0ZS50ZXh0LnByaW1hcnksZm9udFNpemU6ZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTYpLGxpbmVIZWlnaHQ6XCIxLjE4NzVlbVwiLGN1cnNvcjpcInRleHRcIixkaXNwbGF5OlwiaW5saW5lLWZsZXhcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCIsXCImJGRpc2FibGVkXCI6e2NvbG9yOmUucGFsZXR0ZS50ZXh0LmRpc2FibGVkLGN1cnNvcjpcImRlZmF1bHRcIn19LGZvcm1Db250cm9sOnt9LGZvY3VzZWQ6e30sZGlzYWJsZWQ6e30sYWRvcm5lZFN0YXJ0Ont9LGFkb3JuZWRFbmQ6e30sZXJyb3I6e30sbWFyZ2luRGVuc2U6e30sbXVsdGlsaW5lOntwYWRkaW5nOlwiXCIuY29uY2F0KDYsXCJweCAwIFwiKS5jb25jYXQoNyxcInB4XCIpfSxmdWxsV2lkdGg6e3dpZHRoOlwiMTAwJVwifSxpbnB1dDp7Zm9udDpcImluaGVyaXRcIixjb2xvcjpcImN1cnJlbnRDb2xvclwiLHBhZGRpbmc6XCJcIi5jb25jYXQoNixcInB4IDAgXCIpLmNvbmNhdCg3LFwicHhcIiksYm9yZGVyOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixiYWNrZ3JvdW5kOlwibm9uZVwiLG1hcmdpbjowLFdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOlwidHJhbnNwYXJlbnRcIixkaXNwbGF5OlwiYmxvY2tcIixtaW5XaWR0aDowLHdpZHRoOlwiMTAwJVwiLFwiJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlclwiOm4sXCImOjotbW96LXBsYWNlaG9sZGVyXCI6bixcIiY6LW1zLWlucHV0LXBsYWNlaG9sZGVyXCI6bixcIiY6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlclwiOm4sXCImOmZvY3VzXCI6e291dGxpbmU6MH0sXCImOmludmFsaWRcIjp7Ym94U2hhZG93Olwibm9uZVwifSxcIiY6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb25cIjp7XCItd2Via2l0LWFwcGVhcmFuY2VcIjpcIm5vbmVcIn0sXCJsYWJlbFtkYXRhLXNocmluaz1mYWxzZV0gKyAkZm9ybUNvbnRyb2wgJlwiOntcIiY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJcIjpyLFwiJjo6LW1vei1wbGFjZWhvbGRlclwiOnIsXCImOi1tcy1pbnB1dC1wbGFjZWhvbGRlclwiOnIsXCImOjotbXMtaW5wdXQtcGxhY2Vob2xkZXJcIjpyLFwiJjpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlclwiOm8sXCImOmZvY3VzOjotbW96LXBsYWNlaG9sZGVyXCI6byxcIiY6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyXCI6byxcIiY6Zm9jdXM6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlclwiOm99LFwiJiRkaXNhYmxlZFwiOntvcGFjaXR5OjF9fSxpbnB1dE1hcmdpbkRlbnNlOntwYWRkaW5nVG9wOjN9LGlucHV0TXVsdGlsaW5lOntyZXNpemU6XCJub25lXCIscGFkZGluZzowfSxpbnB1dFR5cGU6e2hlaWdodDpcIjEuMTg3NWVtXCJ9LGlucHV0VHlwZVNlYXJjaDp7XCItbW96LWFwcGVhcmFuY2VcIjpcInRleHRmaWVsZFwiLFwiLXdlYmtpdC1hcHBlYXJhbmNlXCI6XCJ0ZXh0ZmllbGRcIn0saW5wdXRBZG9ybmVkU3RhcnQ6e30saW5wdXRBZG9ybmVkRW5kOnt9fX07dC5zdHlsZXM9RTt2YXIgeD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBuO3JldHVybigwLGwuZGVmYXVsdCkodGhpcyx0KSwobj0oMCxzLmRlZmF1bHQpKHRoaXMsKDAsdS5kZWZhdWx0KSh0KS5jYWxsKHRoaXMsZSkpKS5zdGF0ZT17Zm9jdXNlZDohMX0sbi5oYW5kbGVGb2N1cz1mdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLm11aUZvcm1Db250cm9sOygwLG0uZGVmYXVsdCkoe3Byb3BzOm4ucHJvcHMsbXVpRm9ybUNvbnRyb2w6dCxzdGF0ZXM6W1wiZGlzYWJsZWRcIl19KS5kaXNhYmxlZD9lLnN0b3BQcm9wYWdhdGlvbigpOihuLnNldFN0YXRlKHtmb2N1c2VkOiEwfSksbi5wcm9wcy5vbkZvY3VzJiZuLnByb3BzLm9uRm9jdXMoZSksdCYmdC5vbkZvY3VzJiZ0Lm9uRm9jdXMoZSkpfSxuLmhhbmRsZUJsdXI9ZnVuY3Rpb24oZSl7bi5zZXRTdGF0ZSh7Zm9jdXNlZDohMX0pLG4ucHJvcHMub25CbHVyJiZuLnByb3BzLm9uQmx1cihlKTt2YXIgdD1uLnByb3BzLm11aUZvcm1Db250cm9sO3QmJnQub25CbHVyJiZ0Lm9uQmx1cihlKX0sbi5oYW5kbGVDaGFuZ2U9ZnVuY3Rpb24oKXt2YXIgZTsobi5pc0NvbnRyb2xsZWR8fG4uY2hlY2tEaXJ0eShuLmlucHV0UmVmKSxuLnByb3BzLm9uQ2hhbmdlKSYmKGU9bi5wcm9wcykub25DaGFuZ2UuYXBwbHkoZSxhcmd1bWVudHMpfSxuLmhhbmRsZVJlZklucHV0PWZ1bmN0aW9uKGUpe3ZhciB0O24uaW5wdXRSZWY9ZSxuLnByb3BzLmlucHV0UmVmP3Q9bi5wcm9wcy5pbnB1dFJlZjpuLnByb3BzLmlucHV0UHJvcHMmJm4ucHJvcHMuaW5wdXRQcm9wcy5yZWYmJih0PW4ucHJvcHMuaW5wdXRQcm9wcy5yZWYpLCgwLHkuc2V0UmVmKSh0LGUpfSxuLmhhbmRsZUNsaWNrPWZ1bmN0aW9uKGUpe24uaW5wdXRSZWYmJmUuY3VycmVudFRhcmdldD09PWUudGFyZ2V0JiZuLmlucHV0UmVmLmZvY3VzKCksbi5wcm9wcy5vbkNsaWNrJiZuLnByb3BzLm9uQ2xpY2soZSl9LG4uaXNDb250cm9sbGVkPW51bGwhPWUudmFsdWUsbi5pc0NvbnRyb2xsZWQmJm4uY2hlY2tEaXJ0eShlKSxufXJldHVybigwLGQuZGVmYXVsdCkodCxlKSwoMCxjLmRlZmF1bHQpKHQsbnVsbCxbe2tleTpcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZGlzYWJsZWQmJnQuZm9jdXNlZD97Zm9jdXNlZDohMX06bnVsbH19XSksKDAsYy5kZWZhdWx0KSh0LFt7a2V5OlwiY29tcG9uZW50RGlkTW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXNDb250cm9sbGVkfHx0aGlzLmNoZWNrRGlydHkodGhpcy5pbnB1dFJlZil9fSx7a2V5OlwiY29tcG9uZW50RGlkVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIWUuZGlzYWJsZWQmJnRoaXMucHJvcHMuZGlzYWJsZWQpe3ZhciB0PXRoaXMucHJvcHMubXVpRm9ybUNvbnRyb2w7dCYmdC5vbkJsdXImJnQub25CbHVyKCl9dGhpcy5pc0NvbnRyb2xsZWQmJnRoaXMuY2hlY2tEaXJ0eSh0aGlzLnByb3BzKX19LHtrZXk6XCJjaGVja0RpcnR5XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy5tdWlGb3JtQ29udHJvbDtpZigoMCxTLmlzRmlsbGVkKShlKSlyZXR1cm4gdCYmdC5vbkZpbGxlZCYmdC5vbkZpbGxlZCgpLHZvaWQodGhpcy5wcm9wcy5vbkZpbGxlZCYmdGhpcy5wcm9wcy5vbkZpbGxlZCgpKTt0JiZ0Lm9uRW1wdHkmJnQub25FbXB0eSgpLHRoaXMucHJvcHMub25FbXB0eSYmdGhpcy5wcm9wcy5vbkVtcHR5KCl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0LG49dGhpcy5wcm9wcyxyPW4uYXV0b0NvbXBsZXRlLGw9bi5hdXRvRm9jdXMscz1uLmNsYXNzZXMsdT1uLmNsYXNzTmFtZSxjPW4uZGVmYXVsdFZhbHVlLGQ9KG4uZGlzYWJsZWQsbi5lbmRBZG9ybm1lbnQpLGg9KG4uZXJyb3Isbi5mdWxsV2lkdGgpLGI9bi5pZCx5PW4uaW5wdXRDb21wb25lbnQsUz1uLmlucHV0UHJvcHMsRT0oUz12b2lkIDA9PT1TP3t9OlMpLmNsYXNzTmFtZSx4PSgwLGkuZGVmYXVsdCkoUyxbXCJjbGFzc05hbWVcIl0pLHc9KG4uaW5wdXRSZWYsbi5tYXJnaW4sbi5tdWlGb3JtQ29udHJvbCksaz1uLm11bHRpbGluZSxfPW4ubmFtZSxUPShuLm9uQmx1cixuLm9uQ2hhbmdlLG4ub25DbGljayxuLm9uRW1wdHksbi5vbkZpbGxlZCxuLm9uRm9jdXMsbi5vbktleURvd24pLEE9bi5vbktleVVwLEM9bi5wbGFjZWhvbGRlcixPPW4ucmVhZE9ubHksST1uLnJlbmRlclByZWZpeCxOPW4ucm93cyxSPW4ucm93c01heCxQPW4uc3RhcnRBZG9ybm1lbnQsTT1uLnR5cGUsTD1uLnZhbHVlLEQ9KDAsaS5kZWZhdWx0KShuLFtcImF1dG9Db21wbGV0ZVwiLFwiYXV0b0ZvY3VzXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImRlZmF1bHRWYWx1ZVwiLFwiZGlzYWJsZWRcIixcImVuZEFkb3JubWVudFwiLFwiZXJyb3JcIixcImZ1bGxXaWR0aFwiLFwiaWRcIixcImlucHV0Q29tcG9uZW50XCIsXCJpbnB1dFByb3BzXCIsXCJpbnB1dFJlZlwiLFwibWFyZ2luXCIsXCJtdWlGb3JtQ29udHJvbFwiLFwibXVsdGlsaW5lXCIsXCJuYW1lXCIsXCJvbkJsdXJcIixcIm9uQ2hhbmdlXCIsXCJvbkNsaWNrXCIsXCJvbkVtcHR5XCIsXCJvbkZpbGxlZFwiLFwib25Gb2N1c1wiLFwib25LZXlEb3duXCIsXCJvbktleVVwXCIsXCJwbGFjZWhvbGRlclwiLFwicmVhZE9ubHlcIixcInJlbmRlclByZWZpeFwiLFwicm93c1wiLFwicm93c01heFwiLFwic3RhcnRBZG9ybm1lbnRcIixcInR5cGVcIixcInZhbHVlXCJdKSxGPURbXCJhcmlhLWRlc2NyaWJlZGJ5XCJdO2RlbGV0ZSBEW1wiYXJpYS1kZXNjcmliZWRieVwiXTt2YXIgQj0oMCxtLmRlZmF1bHQpKHtwcm9wczp0aGlzLnByb3BzLG11aUZvcm1Db250cm9sOncsc3RhdGVzOltcImRpc2FibGVkXCIsXCJlcnJvclwiLFwibWFyZ2luXCIsXCJyZXF1aXJlZFwiLFwiZmlsbGVkXCJdfSksaj13P3cuZm9jdXNlZDp0aGlzLnN0YXRlLmZvY3VzZWQsVT0oMCxmLmRlZmF1bHQpKHMucm9vdCwoZT17fSwoMCxhLmRlZmF1bHQpKGUscy5kaXNhYmxlZCxCLmRpc2FibGVkKSwoMCxhLmRlZmF1bHQpKGUscy5lcnJvcixCLmVycm9yKSwoMCxhLmRlZmF1bHQpKGUscy5mdWxsV2lkdGgsaCksKDAsYS5kZWZhdWx0KShlLHMuZm9jdXNlZCxqKSwoMCxhLmRlZmF1bHQpKGUscy5mb3JtQ29udHJvbCx3KSwoMCxhLmRlZmF1bHQpKGUscy5tYXJnaW5EZW5zZSxcImRlbnNlXCI9PT1CLm1hcmdpbiksKDAsYS5kZWZhdWx0KShlLHMubXVsdGlsaW5lLGspLCgwLGEuZGVmYXVsdCkoZSxzLmFkb3JuZWRTdGFydCxQKSwoMCxhLmRlZmF1bHQpKGUscy5hZG9ybmVkRW5kLGQpLGUpLHUpLHo9KDAsZi5kZWZhdWx0KShzLmlucHV0LCh0PXt9LCgwLGEuZGVmYXVsdCkodCxzLmRpc2FibGVkLEIuZGlzYWJsZWQpLCgwLGEuZGVmYXVsdCkodCxzLmlucHV0VHlwZSxcInRleHRcIiE9PU0pLCgwLGEuZGVmYXVsdCkodCxzLmlucHV0VHlwZVNlYXJjaCxcInNlYXJjaFwiPT09TSksKDAsYS5kZWZhdWx0KSh0LHMuaW5wdXRNdWx0aWxpbmUsayksKDAsYS5kZWZhdWx0KSh0LHMuaW5wdXRNYXJnaW5EZW5zZSxcImRlbnNlXCI9PT1CLm1hcmdpbiksKDAsYS5kZWZhdWx0KSh0LHMuaW5wdXRBZG9ybmVkU3RhcnQsUCksKDAsYS5kZWZhdWx0KSh0LHMuaW5wdXRBZG9ybmVkRW5kLGQpLHQpLEUpLEg9eSxXPSgwLG8uZGVmYXVsdCkoe30seCx7cmVmOnRoaXMuaGFuZGxlUmVmSW5wdXR9KTtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgSD9XPSgwLG8uZGVmYXVsdCkoe2lucHV0UmVmOnRoaXMuaGFuZGxlUmVmSW5wdXQsdHlwZTpNfSxXLHtyZWY6bnVsbH0pOms/TiYmIVI/SD1cInRleHRhcmVhXCI6KFc9KDAsby5kZWZhdWx0KSh7cm93c01heDpSLHRleHRhcmVhUmVmOnRoaXMuaGFuZGxlUmVmSW5wdXR9LFcse3JlZjpudWxsfSksSD12LmRlZmF1bHQpOlc9KDAsby5kZWZhdWx0KSh7dHlwZTpNfSxXKSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTpVLG9uQ2xpY2s6dGhpcy5oYW5kbGVDbGlja30sRCksST9JKCgwLG8uZGVmYXVsdCkoe30sQix7c3RhcnRBZG9ybm1lbnQ6UCxmb2N1c2VkOmp9KSk6bnVsbCxQLHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGcuZGVmYXVsdC5Qcm92aWRlcix7dmFsdWU6bnVsbH0scC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoSCwoMCxvLmRlZmF1bHQpKHtcImFyaWEtaW52YWxpZFwiOkIuZXJyb3IsXCJhcmlhLWRlc2NyaWJlZGJ5XCI6RixhdXRvQ29tcGxldGU6cixhdXRvRm9jdXM6bCxjbGFzc05hbWU6eixkZWZhdWx0VmFsdWU6YyxkaXNhYmxlZDpCLmRpc2FibGVkLGlkOmIsbmFtZTpfLG9uQmx1cjp0aGlzLmhhbmRsZUJsdXIsb25DaGFuZ2U6dGhpcy5oYW5kbGVDaGFuZ2Usb25Gb2N1czp0aGlzLmhhbmRsZUZvY3VzLG9uS2V5RG93bjpULG9uS2V5VXA6QSxwbGFjZWhvbGRlcjpDLHJlYWRPbmx5Ok8scmVxdWlyZWQ6Qi5yZXF1aXJlZCxyb3dzOk4sdmFsdWU6TH0sVykpKSxkKX19XSksdH0ocC5kZWZhdWx0LkNvbXBvbmVudCk7eC5kZWZhdWx0UHJvcHM9e2Z1bGxXaWR0aDohMSxpbnB1dENvbXBvbmVudDpcImlucHV0XCIsbXVsdGlsaW5lOiExLHR5cGU6XCJ0ZXh0XCJ9O3ZhciB3PSgwLGIuZGVmYXVsdCkoRSx7bmFtZTpcIk11aUlucHV0QmFzZVwifSkoKDAsaC5kZWZhdWx0KSh4KSk7dC5kZWZhdWx0PXd9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig1KSksaT1yKG4oMTIpKSxsPXIobigxMykpLHM9cihuKDE0KSksdT1yKG4oMTUpKSxjPXIobigxNikpLGQ9cihuKDApKSxwPShyKG4oMSkpLHIobig2KSkpLGY9cihuKDE0MikpLG09cihuKDE0MykpLGc9cihuKDgpKSxoPW4oMzIpLGI9MTkseT17cm9vdDp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHdpZHRoOlwiMTAwJVwifSx0ZXh0YXJlYTp7d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLHJlc2l6ZTpcIm5vbmVcIixmb250OlwiaW5oZXJpdFwiLHBhZGRpbmc6MCxjdXJzb3I6XCJpbmhlcml0XCIsYm94U2l6aW5nOlwiYm9yZGVyLWJveFwiLGxpbmVIZWlnaHQ6XCJpbmhlcml0XCIsYm9yZGVyOlwibm9uZVwiLG91dGxpbmU6XCJub25lXCIsYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCJ9LHNoYWRvdzp7b3ZlcmZsb3c6XCJoaWRkZW5cIix2aXNpYmlsaXR5OlwiaGlkZGVuXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLGhlaWdodDpcImF1dG9cIix3aGl0ZVNwYWNlOlwicHJlLXdyYXBcIn19O3Quc3R5bGVzPXk7dmFyIHY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbjtyZXR1cm4oMCxpLmRlZmF1bHQpKHRoaXMsdCksKG49KDAscy5kZWZhdWx0KSh0aGlzLCgwLHUuZGVmYXVsdCkodCkuY2FsbCh0aGlzKSkpLmhhbmRsZVJlZklucHV0PWZ1bmN0aW9uKGUpe24uaW5wdXRSZWY9ZSwoMCxoLnNldFJlZikobi5wcm9wcy50ZXh0YXJlYVJlZixlKX0sbi5oYW5kbGVSZWZTaW5nbGVsaW5lU2hhZG93PWZ1bmN0aW9uKGUpe24uc2luZ2xlbGluZVNoYWRvd1JlZj1lfSxuLmhhbmRsZVJlZlNoYWRvdz1mdW5jdGlvbihlKXtuLnNoYWRvd1JlZj1lfSxuLmhhbmRsZUNoYW5nZT1mdW5jdGlvbihlKXtuLnZhbHVlPWUudGFyZ2V0LnZhbHVlLG4uaXNDb250cm9sbGVkfHwobi5zaGFkb3dSZWYudmFsdWU9bi52YWx1ZSxuLnN5bmNIZWlnaHRXaXRoU2hhZG93KCkpLG4ucHJvcHMub25DaGFuZ2UmJm4ucHJvcHMub25DaGFuZ2UoZSl9LG4uaXNDb250cm9sbGVkPW51bGwhPWUudmFsdWUsbi52YWx1ZT1lLnZhbHVlfHxlLmRlZmF1bHRWYWx1ZXx8XCJcIixuLnN0YXRlPXtoZWlnaHQ6TnVtYmVyKGUucm93cykqYn0sXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmKG4uaGFuZGxlUmVzaXplPSgwLGYuZGVmYXVsdCkoZnVuY3Rpb24oKXtuLnN5bmNIZWlnaHRXaXRoU2hhZG93KCl9LDE2NikpLG59cmV0dXJuKDAsYy5kZWZhdWx0KSh0LGUpLCgwLGwuZGVmYXVsdCkodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnN5bmNIZWlnaHRXaXRoU2hhZG93KCl9fSx7a2V5OlwiY29tcG9uZW50RGlkVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnN5bmNIZWlnaHRXaXRoU2hhZG93KCl9fSx7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlUmVzaXplLmNsZWFyKCl9fSx7a2V5Olwic3luY0hlaWdodFdpdGhTaGFkb3dcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHM7aWYodGhpcy5zaGFkb3dSZWYpe3RoaXMuaXNDb250cm9sbGVkJiYodGhpcy5zaGFkb3dSZWYudmFsdWU9bnVsbD09ZS52YWx1ZT9cIlwiOlN0cmluZyhlLnZhbHVlKSk7dmFyIHQ9dGhpcy5zaW5nbGVsaW5lU2hhZG93UmVmLnNjcm9sbEhlaWdodDt0PTA9PT10P2I6dDt2YXIgbj10aGlzLnNoYWRvd1JlZi5zY3JvbGxIZWlnaHQ7dm9pZCAwIT09biYmKE51bWJlcihlLnJvd3NNYXgpPj1OdW1iZXIoZS5yb3dzKSYmKG49TWF0aC5taW4oTnVtYmVyKGUucm93c01heCkqdCxuKSksbj1NYXRoLm1heChuLHQpLE1hdGguYWJzKHRoaXMuc3RhdGUuaGVpZ2h0LW4pPjEmJnRoaXMuc2V0U3RhdGUoe2hlaWdodDpufSkpfX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNsYXNzZXMsbj1lLmNsYXNzTmFtZSxyPWUuZGVmYXVsdFZhbHVlLGk9KGUub25DaGFuZ2UsZS5yb3dzKSxsPShlLnJvd3NNYXgsZS5zdHlsZSkscz0oZS50ZXh0YXJlYVJlZixlLnZhbHVlKSx1PSgwLGEuZGVmYXVsdCkoZSxbXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImRlZmF1bHRWYWx1ZVwiLFwib25DaGFuZ2VcIixcInJvd3NcIixcInJvd3NNYXhcIixcInN0eWxlXCIsXCJ0ZXh0YXJlYVJlZlwiLFwidmFsdWVcIl0pO3JldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6dC5yb290fSxkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtLmRlZmF1bHQse3RhcmdldDpcIndpbmRvd1wiLG9uUmVzaXplOnRoaXMuaGFuZGxlUmVzaXplfSksZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiLHtcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3NOYW1lOigwLHAuZGVmYXVsdCkodC50ZXh0YXJlYSx0LnNoYWRvdykscmVhZE9ubHk6ITAscmVmOnRoaXMuaGFuZGxlUmVmU2luZ2xlbGluZVNoYWRvdyxyb3dzOlwiMVwiLHRhYkluZGV4Oi0xLHZhbHVlOlwiXCJ9KSxkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInRleHRhcmVhXCIse1wiYXJpYS1oaWRkZW5cIjpcInRydWVcIixjbGFzc05hbWU6KDAscC5kZWZhdWx0KSh0LnRleHRhcmVhLHQuc2hhZG93KSxkZWZhdWx0VmFsdWU6cixyZWFkT25seTohMCxyZWY6dGhpcy5oYW5kbGVSZWZTaGFkb3cscm93czppLHRhYkluZGV4Oi0xLHZhbHVlOnN9KSxkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInRleHRhcmVhXCIsKDAsby5kZWZhdWx0KSh7cm93czppLGNsYXNzTmFtZTooMCxwLmRlZmF1bHQpKHQudGV4dGFyZWEsbiksZGVmYXVsdFZhbHVlOnIsdmFsdWU6cyxvbkNoYW5nZTp0aGlzLmhhbmRsZUNoYW5nZSxyZWY6dGhpcy5oYW5kbGVSZWZJbnB1dCxzdHlsZTooMCxvLmRlZmF1bHQpKHtoZWlnaHQ6dGhpcy5zdGF0ZS5oZWlnaHR9LGwpfSx1KSkpfX1dKSx0fShkLmRlZmF1bHQuQ29tcG9uZW50KTt2LmRlZmF1bHRQcm9wcz17cm93czoxfTt2YXIgUz0oMCxnLmRlZmF1bHQpKHkse25hbWU6XCJNdWlQcml2YXRlVGV4dGFyZWFcIn0pKHYpO3QuZGVmYXVsdD1TfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDApKSxsPShyKG4oMSkpLG4oNykscihuKDE1MCkpKSxzPXIobig4KSksdT1yKG4oMzMpKSxjPXIobigyNSkpLGQ9cihuKDE0OSkpLHA9cihuKDM2KSksZj1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHdpZHRoOlwiMTAwJVwifSxzZWxlY3Q6e1wiLW1vei1hcHBlYXJhbmNlXCI6XCJub25lXCIsXCItd2Via2l0LWFwcGVhcmFuY2VcIjpcIm5vbmVcIix1c2VyU2VsZWN0Olwibm9uZVwiLHBhZGRpbmdSaWdodDozMixib3JkZXJSYWRpdXM6MCxoZWlnaHQ6XCIxLjE4NzVlbVwiLHdpZHRoOlwiY2FsYygxMDAlIC0gMzJweClcIixtaW5XaWR0aDoxNixjdXJzb3I6XCJwb2ludGVyXCIsXCImOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjpcImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT9cInJnYmEoMCwgMCwgMCwgMC4wNSlcIjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSlcIixib3JkZXJSYWRpdXM6MH0sXCImOjotbXMtZXhwYW5kXCI6e2Rpc3BsYXk6XCJub25lXCJ9LFwiJiRkaXNhYmxlZFwiOntjdXJzb3I6XCJkZWZhdWx0XCJ9LFwiJlttdWx0aXBsZV1cIjp7aGVpZ2h0OlwiYXV0b1wifSxcIiY6bm90KFttdWx0aXBsZV0pIG9wdGlvbiwgJjpub3QoW211bHRpcGxlXSkgb3B0Z3JvdXBcIjp7YmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5iYWNrZ3JvdW5kLnBhcGVyfX0sZmlsbGVkOnt3aWR0aDpcImNhbGMoMTAwJSAtIDQ0cHgpXCJ9LG91dGxpbmVkOnt3aWR0aDpcImNhbGMoMTAwJSAtIDQ2cHgpXCIsYm9yZGVyUmFkaXVzOmUuc2hhcGUuYm9yZGVyUmFkaXVzfSxzZWxlY3RNZW51Ont3aWR0aDpcImF1dG9cIixoZWlnaHQ6XCJhdXRvXCIsdGV4dE92ZXJmbG93OlwiZWxsaXBzaXNcIix3aGl0ZVNwYWNlOlwibm93cmFwXCIsb3ZlcmZsb3c6XCJoaWRkZW5cIixtaW5IZWlnaHQ6XCIxLjE4NzVlbVwifSxkaXNhYmxlZDp7fSxpY29uOntwb3NpdGlvbjpcImFic29sdXRlXCIscmlnaHQ6MCx0b3A6XCJjYWxjKDUwJSAtIDEycHgpXCIsY29sb3I6ZS5wYWxldHRlLmFjdGlvbi5hY3RpdmUsXCJwb2ludGVyLWV2ZW50c1wiOlwibm9uZVwifX19O2Z1bmN0aW9uIG0oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuY2xhc3NlcyxyPWUuSWNvbkNvbXBvbmVudCxzPWUuaW5wdXQsYz1lLmlucHV0UHJvcHMsZD1lLm11aUZvcm1Db250cm9sLHA9KGUudmFyaWFudCwoMCxhLmRlZmF1bHQpKGUsW1wiY2hpbGRyZW5cIixcImNsYXNzZXNcIixcIkljb25Db21wb25lbnRcIixcImlucHV0XCIsXCJpbnB1dFByb3BzXCIsXCJtdWlGb3JtQ29udHJvbFwiLFwidmFyaWFudFwiXSkpLGY9KDAsdS5kZWZhdWx0KSh7cHJvcHM6ZSxtdWlGb3JtQ29udHJvbDpkLHN0YXRlczpbXCJ2YXJpYW50XCJdfSk7cmV0dXJuIGkuZGVmYXVsdC5jbG9uZUVsZW1lbnQocywoMCxvLmRlZmF1bHQpKHtpbnB1dENvbXBvbmVudDpsLmRlZmF1bHQsaW5wdXRQcm9wczooMCxvLmRlZmF1bHQpKHtjaGlsZHJlbjp0LGNsYXNzZXM6bixJY29uQ29tcG9uZW50OnIsdmFyaWFudDpmLnZhcmlhbnQsdHlwZTp2b2lkIDB9LGMscz9zLnByb3BzLmlucHV0UHJvcHM6e30pfSxwKSl9dC5zdHlsZXM9ZixtLmRlZmF1bHRQcm9wcz17SWNvbkNvbXBvbmVudDpkLmRlZmF1bHQsaW5wdXQ6aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQocC5kZWZhdWx0LG51bGwpfSxtLm11aU5hbWU9XCJTZWxlY3RcIjt2YXIgZz0oMCxzLmRlZmF1bHQpKGYse25hbWU6XCJNdWlOYXRpdmVTZWxlY3RcIn0pKCgwLGMuZGVmYXVsdCkobSkpO3QuZGVmYXVsdD1nfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDApKSxsPShyKG4oMSkpLHIobig2KSkpLHM9cihuKDgpKSx1PW4oMjEpLGM9cihuKDQ3MCkpLGQ9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e2Rpc3BsYXk6XCJpbmxpbmUtZmxleFwiLHdpZHRoOjYyLHBvc2l0aW9uOlwicmVsYXRpdmVcIixmbGV4U2hyaW5rOjAsekluZGV4OjAsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwifSxpY29uOntib3hTaGFkb3c6ZS5zaGFkb3dzWzFdLGJhY2tncm91bmRDb2xvcjpcImN1cnJlbnRDb2xvclwiLHdpZHRoOjIwLGhlaWdodDoyMCxib3JkZXJSYWRpdXM6XCI1MCVcIn0saWNvbkNoZWNrZWQ6e2JveFNoYWRvdzplLnNoYWRvd3NbMl19LHN3aXRjaEJhc2U6e3BhZGRpbmc6MCxoZWlnaHQ6NDgsd2lkdGg6NDgsY29sb3I6XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/ZS5wYWxldHRlLmdyZXlbNTBdOmUucGFsZXR0ZS5ncmV5WzQwMF0sdHJhbnNpdGlvbjplLnRyYW5zaXRpb25zLmNyZWF0ZShcInRyYW5zZm9ybVwiLHtkdXJhdGlvbjplLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXN0fSl9LGNoZWNrZWQ6e3RyYW5zZm9ybTpcInRyYW5zbGF0ZVgoMTRweClcIixcIiYgKyAkYmFyXCI6e29wYWNpdHk6LjV9fSxjb2xvclByaW1hcnk6e1wiJiRjaGVja2VkXCI6e2NvbG9yOmUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sXCImICsgJGJhclwiOntiYWNrZ3JvdW5kQ29sb3I6ZS5wYWxldHRlLnByaW1hcnkubWFpbn19fSxjb2xvclNlY29uZGFyeTp7XCImJGNoZWNrZWRcIjp7Y29sb3I6ZS5wYWxldHRlLnNlY29uZGFyeS5tYWluLFwiJiArICRiYXJcIjp7YmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbn19fSxkaXNhYmxlZDp7XCImICsgJGJhclwiOntvcGFjaXR5OlwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlPy4xMjouMX0sXCImICRpY29uXCI6e2JveFNoYWRvdzplLnNoYWRvd3NbMV19LFwiJiRzd2l0Y2hCYXNlXCI6e2NvbG9yOlwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlP2UucGFsZXR0ZS5ncmV5WzQwMF06ZS5wYWxldHRlLmdyZXlbODAwXSxcIiYgKyAkYmFyXCI6e2JhY2tncm91bmRDb2xvcjpcImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT9lLnBhbGV0dGUuY29tbW9uLmJsYWNrOmUucGFsZXR0ZS5jb21tb24ud2hpdGV9fX0sYmFyOntib3JkZXJSYWRpdXM6NyxkaXNwbGF5OlwiYmxvY2tcIixwb3NpdGlvbjpcImFic29sdXRlXCIsekluZGV4Oi0xLHdpZHRoOjM0LGhlaWdodDoxNCx0b3A6XCI1MCVcIixsZWZ0OlwiNTAlXCIsbWFyZ2luVG9wOi03LG1hcmdpbkxlZnQ6LTE3LHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoW1wib3BhY2l0eVwiLFwiYmFja2dyb3VuZC1jb2xvclwiXSx7ZHVyYXRpb246ZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVzdH0pLGJhY2tncm91bmRDb2xvcjpcImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT9lLnBhbGV0dGUuY29tbW9uLmJsYWNrOmUucGFsZXR0ZS5jb21tb24ud2hpdGUsb3BhY2l0eTpcImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT8uMzg6LjN9fX07ZnVuY3Rpb24gcChlKXt2YXIgdD1lLmNsYXNzZXMsbj1lLmNsYXNzTmFtZSxyPWUuY29sb3Iscz0oMCxhLmRlZmF1bHQpKGUsW1wiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb2xvclwiXSk7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6KDAsbC5kZWZhdWx0KSh0LnJvb3Qsbil9LGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGMuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHt0eXBlOlwiY2hlY2tib3hcIixpY29uOmkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6dC5pY29ufSksY2xhc3Nlczp7cm9vdDooMCxsLmRlZmF1bHQpKHQuc3dpdGNoQmFzZSx0W1wiY29sb3JcIi5jb25jYXQoKDAsdS5jYXBpdGFsaXplKShyKSldKSxjaGVja2VkOnQuY2hlY2tlZCxkaXNhYmxlZDp0LmRpc2FibGVkfSxjaGVja2VkSWNvbjppLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOigwLGwuZGVmYXVsdCkodC5pY29uLHQuaWNvbkNoZWNrZWQpfSl9LHMpKSxpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOnQuYmFyfSkpfXQuc3R5bGVzPWQscC5kZWZhdWx0UHJvcHM9e2NvbG9yOlwic2Vjb25kYXJ5XCJ9O3ZhciBmPSgwLHMuZGVmYXVsdCkoZCx7bmFtZTpcIk11aVN3aXRjaFwifSkocCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDEyKSkscz1yKG4oMTMpKSx1PXIobigxNCkpLGM9cihuKDE1KSksZD1yKG4oMTYpKSxwPXIobigwKSksZj0ocihuKDEpKSxyKG4oNikpKSxtPXIobigyNSkpLGc9cihuKDgpKSxoPXIobig5MSkpLGI9e3Jvb3Q6e2Rpc3BsYXk6XCJpbmxpbmUtZmxleFwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIix0cmFuc2l0aW9uOlwibm9uZVwiLFwiJjpob3ZlclwiOntiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifX0sY2hlY2tlZDp7fSxkaXNhYmxlZDp7fSxpbnB1dDp7Y3Vyc29yOlwiaW5oZXJpdFwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIixvcGFjaXR5OjAsd2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLHRvcDowLGxlZnQ6MCxtYXJnaW46MCxwYWRkaW5nOjB9fTt0LnN0eWxlcz1iO3ZhciB5PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIG47cmV0dXJuKDAsbC5kZWZhdWx0KSh0aGlzLHQpLChuPSgwLHUuZGVmYXVsdCkodGhpcywoMCxjLmRlZmF1bHQpKHQpLmNhbGwodGhpcykpKS5oYW5kbGVGb2N1cz1mdW5jdGlvbihlKXtuLnByb3BzLm9uRm9jdXMmJm4ucHJvcHMub25Gb2N1cyhlKTt2YXIgdD1uLnByb3BzLm11aUZvcm1Db250cm9sO3QmJnQub25Gb2N1cyYmdC5vbkZvY3VzKGUpfSxuLmhhbmRsZUJsdXI9ZnVuY3Rpb24oZSl7bi5wcm9wcy5vbkJsdXImJm4ucHJvcHMub25CbHVyKGUpO3ZhciB0PW4ucHJvcHMubXVpRm9ybUNvbnRyb2w7dCYmdC5vbkJsdXImJnQub25CbHVyKGUpfSxuLmhhbmRsZUlucHV0Q2hhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmNoZWNrZWQ7bi5pc0NvbnRyb2xsZWR8fG4uc2V0U3RhdGUoe2NoZWNrZWQ6dH0pLG4ucHJvcHMub25DaGFuZ2UmJm4ucHJvcHMub25DaGFuZ2UoZSx0KX0sbi5pc0NvbnRyb2xsZWQ9bnVsbCE9ZS5jaGVja2VkLG4uc3RhdGU9e30sbi5pc0NvbnRyb2xsZWR8fChuLnN0YXRlLmNoZWNrZWQ9dm9pZCAwIT09ZS5kZWZhdWx0Q2hlY2tlZCYmZS5kZWZhdWx0Q2hlY2tlZCksbn1yZXR1cm4oMCxkLmRlZmF1bHQpKHQsZSksKDAscy5kZWZhdWx0KSh0LFt7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMucHJvcHMsbj10LmF1dG9Gb2N1cyxyPXQuY2hlY2tlZCxsPXQuY2hlY2tlZEljb24scz10LmNsYXNzZXMsdT10LmNsYXNzTmFtZSxjPXQuZGVmYXVsdENoZWNrZWQsZD10LmRpc2FibGVkLG09dC5pY29uLGc9dC5pZCxiPXQuaW5wdXRQcm9wcyx5PXQuaW5wdXRSZWYsdj10Lm11aUZvcm1Db250cm9sLFM9dC5uYW1lLEU9KHQub25CbHVyLHQub25DaGFuZ2UsdC5vbkZvY3VzLHQucmVhZE9ubHkpLHg9dC5yZXF1aXJlZCx3PXQudGFiSW5kZXgsaz10LnR5cGUsXz10LnZhbHVlLFQ9KDAsaS5kZWZhdWx0KSh0LFtcImF1dG9Gb2N1c1wiLFwiY2hlY2tlZFwiLFwiY2hlY2tlZEljb25cIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiZGVmYXVsdENoZWNrZWRcIixcImRpc2FibGVkXCIsXCJpY29uXCIsXCJpZFwiLFwiaW5wdXRQcm9wc1wiLFwiaW5wdXRSZWZcIixcIm11aUZvcm1Db250cm9sXCIsXCJuYW1lXCIsXCJvbkJsdXJcIixcIm9uQ2hhbmdlXCIsXCJvbkZvY3VzXCIsXCJyZWFkT25seVwiLFwicmVxdWlyZWRcIixcInRhYkluZGV4XCIsXCJ0eXBlXCIsXCJ2YWx1ZVwiXSksQT1kO3YmJnZvaWQgMD09PUEmJihBPXYuZGlzYWJsZWQpO3ZhciBDPXRoaXMuaXNDb250cm9sbGVkP3I6dGhpcy5zdGF0ZS5jaGVja2VkLE89XCJjaGVja2JveFwiPT09a3x8XCJyYWRpb1wiPT09aztyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaC5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe2NvbXBvbmVudDpcInNwYW5cIixjbGFzc05hbWU6KDAsZi5kZWZhdWx0KShzLnJvb3QsKGU9e30sKDAsYS5kZWZhdWx0KShlLHMuY2hlY2tlZCxDKSwoMCxhLmRlZmF1bHQpKGUscy5kaXNhYmxlZCxBKSxlKSx1KSxkaXNhYmxlZDpBLHRhYkluZGV4Om51bGwscm9sZTp2b2lkIDAsb25Gb2N1czp0aGlzLmhhbmRsZUZvY3VzLG9uQmx1cjp0aGlzLmhhbmRsZUJsdXJ9LFQpLEM/bDptLHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwoMCxvLmRlZmF1bHQpKHthdXRvRm9jdXM6bixjaGVja2VkOnIsZGVmYXVsdENoZWNrZWQ6YyxjbGFzc05hbWU6cy5pbnB1dCxkaXNhYmxlZDpBLGlkOk8mJmcsbmFtZTpTLG9uQ2hhbmdlOnRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UscmVhZE9ubHk6RSxyZWY6eSxyZXF1aXJlZDp4LHRhYkluZGV4OncsdHlwZTprLHZhbHVlOl99LGIpKSl9fV0pLHR9KHAuZGVmYXVsdC5Db21wb25lbnQpLHY9KDAsZy5kZWZhdWx0KShiLHtuYW1lOlwiTXVpUHJpdmF0ZVN3aXRjaEJhc2VcIn0pKCgwLG0uZGVmYXVsdCkoeSkpO3QuZGVmYXVsdD12fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShuKDcpLHIobig4KSkpLGM9bigzMSksZD1yKG4oNTMpKSxwPW4oMjEpLGY9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e3RleHRBbGlnbjpcImNlbnRlclwiLGZsZXg6XCIwIDAgYXV0b1wiLGZvbnRTaXplOmUudHlwb2dyYXBoeS5weFRvUmVtKDI0KSxwYWRkaW5nOjEyLGJvcmRlclJhZGl1czpcIjUwJVwiLG92ZXJmbG93OlwidmlzaWJsZVwiLGNvbG9yOmUucGFsZXR0ZS5hY3Rpb24uYWN0aXZlLHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoXCJiYWNrZ3JvdW5kLWNvbG9yXCIse2R1cmF0aW9uOmUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlc3R9KSxcIiY6aG92ZXJcIjp7YmFja2dyb3VuZENvbG9yOigwLGMuZmFkZSkoZS5wYWxldHRlLmFjdGlvbi5hY3RpdmUsZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFwiQG1lZGlhIChob3Zlcjogbm9uZSlcIjp7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn0sXCImJGRpc2FibGVkXCI6e2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCJ9fSxcIiYkZGlzYWJsZWRcIjp7Y29sb3I6ZS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZH19LGNvbG9ySW5oZXJpdDp7Y29sb3I6XCJpbmhlcml0XCJ9LGNvbG9yUHJpbWFyeTp7Y29sb3I6ZS5wYWxldHRlLnByaW1hcnkubWFpbixcIiY6aG92ZXJcIjp7YmFja2dyb3VuZENvbG9yOigwLGMuZmFkZSkoZS5wYWxldHRlLnByaW1hcnkubWFpbixlLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXCJAbWVkaWEgKGhvdmVyOiBub25lKVwiOntiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifX19LGNvbG9yU2Vjb25kYXJ5Ontjb2xvcjplLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW4sXCImOmhvdmVyXCI6e2JhY2tncm91bmRDb2xvcjooMCxjLmZhZGUpKGUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbixlLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXCJAbWVkaWEgKGhvdmVyOiBub25lKVwiOntiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifX19LGRpc2FibGVkOnt9LGxhYmVsOnt3aWR0aDpcIjEwMCVcIixkaXNwbGF5OlwiZmxleFwiLGFsaWduSXRlbXM6XCJpbmhlcml0XCIsanVzdGlmeUNvbnRlbnQ6XCJpbmhlcml0XCJ9fX07ZnVuY3Rpb24gbShlKXt2YXIgdCxuPWUuY2hpbGRyZW4scj1lLmNsYXNzZXMsdT1lLmNsYXNzTmFtZSxjPWUuY29sb3IsZj1lLmRpc2FibGVkLG09KDAsaS5kZWZhdWx0KShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbG9yXCIsXCJkaXNhYmxlZFwiXSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGQuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KShyLnJvb3QsKHQ9e30sKDAsYS5kZWZhdWx0KSh0LHJbXCJjb2xvclwiLmNvbmNhdCgoMCxwLmNhcGl0YWxpemUpKGMpKV0sXCJkZWZhdWx0XCIhPT1jKSwoMCxhLmRlZmF1bHQpKHQsci5kaXNhYmxlZCxmKSx0KSx1KSxjZW50ZXJSaXBwbGU6ITAsZm9jdXNSaXBwbGU6ITAsZGlzYWJsZWQ6Zn0sbSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse2NsYXNzTmFtZTpyLmxhYmVsfSxuKSl9dC5zdHlsZXM9ZixtLmRlZmF1bHRQcm9wcz17Y29sb3I6XCJkZWZhdWx0XCIsZGlzYWJsZWQ6ITF9O3ZhciBnPSgwLHUuZGVmYXVsdCkoZix7bmFtZTpcIk11aUljb25CdXR0b25cIn0pKG0pO3QuZGVmYXVsdD1nfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDEyKSksbD1yKG4oMTMpKSxzPXIobigxNCkpLHU9cihuKDE1KSksYz1yKG4oMTYpKSxkPXIobigwKSkscD0ocihuKDEpKSxyKG4oNikpKSxmPShuKDcpLHIobig4KSkpLG09cihuKDE1MykpLGc9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e2Rpc3BsYXk6XCJ0YWJsZVwiLGZvbnRGYW1pbHk6ZS50eXBvZ3JhcGh5LmZvbnRGYW1pbHksd2lkdGg6XCIxMDAlXCIsYm9yZGVyQ29sbGFwc2U6XCJjb2xsYXBzZVwiLGJvcmRlclNwYWNpbmc6MH19fTt0LnN0eWxlcz1nO3ZhciBoPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuOygwLGkuZGVmYXVsdCkodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4obj0oMCxzLmRlZmF1bHQpKHRoaXMsKGU9KDAsdS5kZWZhdWx0KSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSkubWVtb2l6ZWRDb250ZXh0VmFsdWU9e30sbn1yZXR1cm4oMCxjLmRlZmF1bHQpKHQsZSksKDAsbC5kZWZhdWx0KSh0LFt7a2V5OlwidXNlTWVtb1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyhlKSxuPTA7bjx0Lmxlbmd0aDtuKz0xKXt2YXIgcj10W25dO2lmKGVbcl0hPT10aGlzLm1lbW9pemVkQ29udGV4dFZhbHVlW3JdKXt0aGlzLm1lbW9pemVkQ29udGV4dFZhbHVlPWU7YnJlYWt9fXJldHVybiB0aGlzLm1lbW9pemVkQ29udGV4dFZhbHVlfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY2xhc3NlcyxuPWUuY2xhc3NOYW1lLHI9ZS5jb21wb25lbnQsaT1lLnBhZGRpbmcsbD0oMCxhLmRlZmF1bHQpKGUsW1wiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb21wb25lbnRcIixcInBhZGRpbmdcIl0pO3JldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtLmRlZmF1bHQuUHJvdmlkZXIse3ZhbHVlOnRoaXMudXNlTWVtbyh7cGFkZGluZzppfSl9LGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHIsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLHAuZGVmYXVsdCkodC5yb290LG4pfSxsKSkpfX1dKSx0fShkLmRlZmF1bHQuQ29tcG9uZW50KTtoLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OlwidGFibGVcIixwYWRkaW5nOlwiZGVmYXVsdFwifTt2YXIgYj0oMCxmLmRlZmF1bHQpKGcse25hbWU6XCJNdWlUYWJsZVwifSkoaCk7dC5kZWZhdWx0PWJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig1KSksaT1yKG4oMCkpLGw9KHIobigxKSkscihuKDYpKSkscz0obig3KSxyKG4oOCkpKSx1PXIobig1NSkpLGM9e3Jvb3Q6e2Rpc3BsYXk6XCJ0YWJsZS1yb3ctZ3JvdXBcIn19O3Quc3R5bGVzPWM7dmFyIGQ9e3ZhcmlhbnQ6XCJib2R5XCJ9O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5jbGFzc05hbWUscj1lLmNvbXBvbmVudCxzPSgwLGEuZGVmYXVsdCkoZSxbXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbXBvbmVudFwiXSk7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHUuZGVmYXVsdC5Qcm92aWRlcix7dmFsdWU6ZH0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQociwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAsbC5kZWZhdWx0KSh0LnJvb3Qsbil9LHMpKSl9cC5kZWZhdWx0UHJvcHM9e2NvbXBvbmVudDpcInRib2R5XCJ9O3ZhciBmPSgwLHMuZGVmYXVsdCkoYyx7bmFtZTpcIk11aVRhYmxlQm9keVwifSkocCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KG4oNykscihuKDgpKSksYz1uKDIxKSxkPShyKG4oNDc1KSksbigzMSkpLHA9cihuKDE1MykpLGY9cihuKDU1KSksbT1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDp7ZGlzcGxheTpcInRhYmxlLWNlbGxcIix2ZXJ0aWNhbEFsaWduOlwiaW5oZXJpdFwiLGJvcmRlckJvdHRvbTpcIjFweCBzb2xpZFxcbiAgICBcIi5jb25jYXQoXCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/KDAsZC5saWdodGVuKSgoMCxkLmZhZGUpKGUucGFsZXR0ZS5kaXZpZGVyLDEpLC44OCk6KDAsZC5kYXJrZW4pKCgwLGQuZmFkZSkoZS5wYWxldHRlLmRpdmlkZXIsMSksLjY4KSksdGV4dEFsaWduOlwibGVmdFwiLHBhZGRpbmc6XCI0cHggNTZweCA0cHggMjRweFwiLFwiJjpsYXN0LWNoaWxkXCI6e3BhZGRpbmdSaWdodDoyNH19LGhlYWQ6e2NvbG9yOmUucGFsZXR0ZS50ZXh0LnNlY29uZGFyeSxmb250U2l6ZTplLnR5cG9ncmFwaHkucHhUb1JlbSgxMiksZm9udFdlaWdodDplLnR5cG9ncmFwaHkuZm9udFdlaWdodE1lZGl1bX0sYm9keTp7Y29sb3I6ZS5wYWxldHRlLnRleHQucHJpbWFyeSxmb250U2l6ZTplLnR5cG9ncmFwaHkucHhUb1JlbSgxMyksZm9udFdlaWdodDplLnR5cG9ncmFwaHkuZm9udFdlaWdodFJlZ3VsYXJ9LGZvb3Rlcjp7Ym9yZGVyQm90dG9tOjAsY29sb3I6ZS5wYWxldHRlLnRleHQuc2Vjb25kYXJ5LGZvbnRTaXplOmUudHlwb2dyYXBoeS5weFRvUmVtKDEyKX0sbnVtZXJpYzp7dGV4dEFsaWduOlwicmlnaHRcIixmbGV4RGlyZWN0aW9uOlwicm93LXJldmVyc2VcIn0scGFkZGluZ0RlbnNlOntwYWRkaW5nUmlnaHQ6MjR9LHBhZGRpbmdDaGVja2JveDp7cGFkZGluZzpcIjAgMTJweFwiLFwiJjpsYXN0LWNoaWxkXCI6e3BhZGRpbmdSaWdodDoxMn19LHBhZGRpbmdOb25lOntwYWRkaW5nOjAsXCImOmxhc3QtY2hpbGRcIjp7cGFkZGluZzowfX0sYWxpZ25MZWZ0Ont0ZXh0QWxpZ246XCJsZWZ0XCJ9LGFsaWduQ2VudGVyOnt0ZXh0QWxpZ246XCJjZW50ZXJcIn0sYWxpZ25SaWdodDp7dGV4dEFsaWduOlwicmlnaHRcIixmbGV4RGlyZWN0aW9uOlwicm93LXJldmVyc2VcIn0sYWxpZ25KdXN0aWZ5Ont0ZXh0QWxpZ246XCJqdXN0aWZ5XCJ9fX07ZnVuY3Rpb24gZyhlKXt2YXIgdD1lLmFsaWduLG49ZS5jaGlsZHJlbixyPWUuY2xhc3Nlcyx1PWUuY2xhc3NOYW1lLGQ9ZS5jb21wb25lbnQsbT1lLnNvcnREaXJlY3Rpb24sZz1lLm51bWVyaWMsaD12b2lkIDAhPT1nJiZnLGI9ZS5wYWRkaW5nLHk9ZS5zY29wZSx2PWUudmFyaWFudCxTPSgwLGkuZGVmYXVsdCkoZSxbXCJhbGlnblwiLFwiY2hpbGRyZW5cIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29tcG9uZW50XCIsXCJzb3J0RGlyZWN0aW9uXCIsXCJudW1lcmljXCIsXCJwYWRkaW5nXCIsXCJzY29wZVwiLFwidmFyaWFudFwiXSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHAuZGVmYXVsdC5Db25zdW1lcixudWxsLGZ1bmN0aW9uKGUpe3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChmLmRlZmF1bHQuQ29uc3VtZXIsbnVsbCxmdW5jdGlvbihpKXt2YXIgcCxmO2Y9ZHx8KGkmJlwiaGVhZFwiPT09aS52YXJpYW50P1widGhcIjpcInRkXCIpO3ZhciBnPXk7IWcmJmkmJlwiaGVhZFwiPT09aS52YXJpYW50JiYoZz1cImNvbFwiKTt2YXIgRT1ifHwoZSYmZS5wYWRkaW5nP2UucGFkZGluZzpcImRlZmF1bHRcIikseD0oMCxzLmRlZmF1bHQpKHIucm9vdCwocD17fSwoMCxhLmRlZmF1bHQpKHAsci5oZWFkLHY/XCJoZWFkXCI9PT12OmkmJlwiaGVhZFwiPT09aS52YXJpYW50KSwoMCxhLmRlZmF1bHQpKHAsci5ib2R5LHY/XCJib2R5XCI9PT12OmkmJlwiYm9keVwiPT09aS52YXJpYW50KSwoMCxhLmRlZmF1bHQpKHAsci5mb290ZXIsdj9cImZvb3RlclwiPT09djppJiZcImZvb3RlclwiPT09aS52YXJpYW50KSwoMCxhLmRlZmF1bHQpKHAscltcImFsaWduXCIuY29uY2F0KCgwLGMuY2FwaXRhbGl6ZSkodCkpXSxcImluaGVyaXRcIiE9PXQpLCgwLGEuZGVmYXVsdCkocCxyLm51bWVyaWMsaCksKDAsYS5kZWZhdWx0KShwLHJbXCJwYWRkaW5nXCIuY29uY2F0KCgwLGMuY2FwaXRhbGl6ZSkoRSkpXSxcImRlZmF1bHRcIiE9PUUpLHApLHUpLHc9bnVsbDtyZXR1cm4gbSYmKHc9XCJhc2NcIj09PW0/XCJhc2NlbmRpbmdcIjpcImRlc2NlbmRpbmdcIiksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZiwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6eCxcImFyaWEtc29ydFwiOncsc2NvcGU6Z30sUyksbil9KX0pfXQuc3R5bGVzPW0sZy5kZWZhdWx0UHJvcHM9e2FsaWduOlwiaW5oZXJpdFwifTt2YXIgaD0oMCx1LmRlZmF1bHQpKG0se25hbWU6XCJNdWlUYWJsZUNlbGxcIn0pKGcpO3QuZGVmYXVsdD1ofSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBudWxsfX07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig1KSksaT1yKG4oMCkpLGw9KHIobigxKSkscihuKDYpKSkscz0obig3KSxyKG4oOCkpKSx1PXIobig1NSkpLGM9e3Jvb3Q6e2Rpc3BsYXk6XCJ0YWJsZS1oZWFkZXItZ3JvdXBcIn19O3Quc3R5bGVzPWM7dmFyIGQ9e3ZhcmlhbnQ6XCJoZWFkXCJ9O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5jbGFzc05hbWUscj1lLmNvbXBvbmVudCxzPSgwLGEuZGVmYXVsdCkoZSxbXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbXBvbmVudFwiXSk7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHUuZGVmYXVsdC5Qcm92aWRlcix7dmFsdWU6ZH0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQociwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAsbC5kZWZhdWx0KSh0LnJvb3Qsbil9LHMpKSl9cC5kZWZhdWx0UHJvcHM9e2NvbXBvbmVudDpcInRoZWFkXCJ9O3ZhciBmPSgwLHMuZGVmYXVsdCkoYyx7bmFtZTpcIk11aVRhYmxlSGVhZFwifSkocCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KG4oNykscihuKDgpKSksYz1yKG4oNTUpKSxkPWZ1bmN0aW9uKGUpe3JldHVybntyb290Ontjb2xvcjpcImluaGVyaXRcIixkaXNwbGF5OlwidGFibGUtcm93XCIsaGVpZ2h0OjQ4LHZlcnRpY2FsQWxpZ246XCJtaWRkbGVcIixvdXRsaW5lOlwibm9uZVwiLFwiJiRzZWxlY3RlZFwiOntiYWNrZ3JvdW5kQ29sb3I6XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/XCJyZ2JhKDAsIDAsIDAsIDAuMDQpXCI6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpXCJ9LFwiJiRob3Zlcjpob3ZlclwiOntiYWNrZ3JvdW5kQ29sb3I6XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/XCJyZ2JhKDAsIDAsIDAsIDAuMDcpXCI6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpXCJ9fSxzZWxlY3RlZDp7fSxob3Zlcjp7fSxoZWFkOntoZWlnaHQ6NTZ9LGZvb3Rlcjp7aGVpZ2h0OjU2fX19O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5jbGFzc05hbWUscj1lLmNvbXBvbmVudCx1PWUuaG92ZXIsZD1lLnNlbGVjdGVkLHA9KDAsaS5kZWZhdWx0KShlLFtcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29tcG9uZW50XCIsXCJob3ZlclwiLFwic2VsZWN0ZWRcIl0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChjLmRlZmF1bHQuQ29uc3VtZXIsbnVsbCxmdW5jdGlvbihlKXt2YXIgaSxjPSgwLHMuZGVmYXVsdCkodC5yb290LChpPXt9LCgwLGEuZGVmYXVsdCkoaSx0LmhlYWQsZSYmXCJoZWFkXCI9PT1lLnZhcmlhbnQpLCgwLGEuZGVmYXVsdCkoaSx0LmZvb3RlcixlJiZcImZvb3RlclwiPT09ZS52YXJpYW50KSwoMCxhLmRlZmF1bHQpKGksdC5ob3Zlcix1KSwoMCxhLmRlZmF1bHQpKGksdC5zZWxlY3RlZCxkKSxpKSxuKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQociwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6Y30scCkpfSl9dC5zdHlsZXM9ZCxwLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OlwidHJcIixob3ZlcjohMSxzZWxlY3RlZDohMX07dmFyIGY9KDAsdS5kZWZhdWx0KShkLHtuYW1lOlwiTXVpVGFibGVSb3dcIn0pKHApO3QuZGVmYXVsdD1mfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDEyKSksbD1yKG4oMTMpKSxzPXIobigxNCkpLHU9cihuKDE1KSksYz1yKG4oMTYpKSxkPXIobigwKSkscD1yKG4oMjIpKSxmPShyKG4oMTcpKSxyKG4oMSkpLHIobigzNikpKSxtPXIobig5MikpLGc9cihuKDkzKSksaD1yKG4oNzUpKSxiPXIobig3MSkpLHk9cihuKDc0KSksdj1yKG4oODgpKSxTPXtzdGFuZGFyZDpmLmRlZmF1bHQsZmlsbGVkOm0uZGVmYXVsdCxvdXRsaW5lZDpnLmRlZmF1bHR9LEU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbjtyZXR1cm4oMCxpLmRlZmF1bHQpKHRoaXMsdCksKG49KDAscy5kZWZhdWx0KSh0aGlzLCgwLHUuZGVmYXVsdCkodCkuY2FsbCh0aGlzLGUpKSkubGFiZWxSZWY9ZC5kZWZhdWx0LmNyZWF0ZVJlZigpLG59cmV0dXJuKDAsYy5kZWZhdWx0KSh0LGUpLCgwLGwuZGVmYXVsdCkodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXtcIm91dGxpbmVkXCI9PT10aGlzLnByb3BzLnZhcmlhbnQmJih0aGlzLmxhYmVsTm9kZT1wLmRlZmF1bHQuZmluZERPTU5vZGUodGhpcy5sYWJlbFJlZi5jdXJyZW50KSx0aGlzLmZvcmNlVXBkYXRlKCkpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuYXV0b0NvbXBsZXRlLG49ZS5hdXRvRm9jdXMscj1lLmNoaWxkcmVuLGk9ZS5jbGFzc05hbWUsbD1lLmRlZmF1bHRWYWx1ZSxzPWUuZXJyb3IsdT1lLkZvcm1IZWxwZXJUZXh0UHJvcHMsYz1lLmZ1bGxXaWR0aCxwPWUuaGVscGVyVGV4dCxmPWUuaWQsbT1lLklucHV0TGFiZWxQcm9wcyxnPWUuaW5wdXRQcm9wcyxFPWUuSW5wdXRQcm9wcyx4PWUuaW5wdXRSZWYsdz1lLmxhYmVsLGs9ZS5tdWx0aWxpbmUsXz1lLm5hbWUsVD1lLm9uQmx1cixBPWUub25DaGFuZ2UsQz1lLm9uRm9jdXMsTz1lLnBsYWNlaG9sZGVyLEk9ZS5yZXF1aXJlZCxOPWUucm93cyxSPWUucm93c01heCxQPWUuc2VsZWN0LE09ZS5TZWxlY3RQcm9wcyxMPWUudHlwZSxEPWUudmFsdWUsRj1lLnZhcmlhbnQsQj0oMCxhLmRlZmF1bHQpKGUsW1wiYXV0b0NvbXBsZXRlXCIsXCJhdXRvRm9jdXNcIixcImNoaWxkcmVuXCIsXCJjbGFzc05hbWVcIixcImRlZmF1bHRWYWx1ZVwiLFwiZXJyb3JcIixcIkZvcm1IZWxwZXJUZXh0UHJvcHNcIixcImZ1bGxXaWR0aFwiLFwiaGVscGVyVGV4dFwiLFwiaWRcIixcIklucHV0TGFiZWxQcm9wc1wiLFwiaW5wdXRQcm9wc1wiLFwiSW5wdXRQcm9wc1wiLFwiaW5wdXRSZWZcIixcImxhYmVsXCIsXCJtdWx0aWxpbmVcIixcIm5hbWVcIixcIm9uQmx1clwiLFwib25DaGFuZ2VcIixcIm9uRm9jdXNcIixcInBsYWNlaG9sZGVyXCIsXCJyZXF1aXJlZFwiLFwicm93c1wiLFwicm93c01heFwiLFwic2VsZWN0XCIsXCJTZWxlY3RQcm9wc1wiLFwidHlwZVwiLFwidmFsdWVcIixcInZhcmlhbnRcIl0pLGo9e307XCJvdXRsaW5lZFwiPT09RiYmKG0mJnZvaWQgMCE9PW0uc2hyaW5rJiYoai5ub3RjaGVkPW0uc2hyaW5rKSxqLmxhYmVsV2lkdGg9dGhpcy5sYWJlbE5vZGUmJnRoaXMubGFiZWxOb2RlLm9mZnNldFdpZHRofHwwKTt2YXIgVT1wJiZmP1wiXCIuY29uY2F0KGYsXCItaGVscGVyLXRleHRcIik6dm9pZCAwLHo9U1tGXSxIPWQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHosKDAsby5kZWZhdWx0KSh7XCJhcmlhLWRlc2NyaWJlZGJ5XCI6VSxhdXRvQ29tcGxldGU6dCxhdXRvRm9jdXM6bixkZWZhdWx0VmFsdWU6bCxmdWxsV2lkdGg6YyxtdWx0aWxpbmU6ayxuYW1lOl8scm93czpOLHJvd3NNYXg6Uix0eXBlOkwsdmFsdWU6RCxpZDpmLGlucHV0UmVmOngsb25CbHVyOlQsb25DaGFuZ2U6QSxvbkZvY3VzOkMscGxhY2Vob2xkZXI6TyxpbnB1dFByb3BzOmd9LGosRSkpO3JldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChiLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOmksZXJyb3I6cyxmdWxsV2lkdGg6YyxyZXF1aXJlZDpJLHZhcmlhbnQ6Rn0sQiksdyYmZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaC5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe2h0bWxGb3I6ZixyZWY6dGhpcy5sYWJlbFJlZn0sbSksdyksUD9kLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh2LmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7XCJhcmlhLWRlc2NyaWJlZGJ5XCI6VSx2YWx1ZTpELGlucHV0Okh9LE0pLHIpOkgscCYmZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoeS5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe2lkOlV9LHUpLHApKX19XSksdH0oZC5kZWZhdWx0LkNvbXBvbmVudCk7RS5kZWZhdWx0UHJvcHM9e3JlcXVpcmVkOiExLHNlbGVjdDohMSx2YXJpYW50Olwic3RhbmRhcmRcIn07dmFyIHg9RTt0LmRlZmF1bHQ9eH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oOSkpLGE9cihuKDQpKSxpPXIobig1KSksbD1yKG4oMCkpLHM9KHIobigxKSkscihuKDYpKSksdT0obig3KSxyKG4oMzcpKSksYz1yKG4oOCkpLGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGUsbj10P1wicmdiYSgwLCAwLCAwLCAwLjQyKVwiOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpXCIscj10P1wicmdiYSgwLCAwLCAwLCAwLjA5KVwiOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA5KVwiO3JldHVybntyb290Ontwb3NpdGlvbjpcInJlbGF0aXZlXCIsYmFja2dyb3VuZENvbG9yOnIsYm9yZGVyVG9wTGVmdFJhZGl1czplLnNoYXBlLmJvcmRlclJhZGl1cyxib3JkZXJUb3BSaWdodFJhZGl1czplLnNoYXBlLmJvcmRlclJhZGl1cyx0cmFuc2l0aW9uOmUudHJhbnNpdGlvbnMuY3JlYXRlKFwiYmFja2dyb3VuZC1jb2xvclwiLHtkdXJhdGlvbjplLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXIsZWFzaW5nOmUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VPdXR9KSxcIiY6aG92ZXJcIjp7YmFja2dyb3VuZENvbG9yOnQ/XCJyZ2JhKDAsIDAsIDAsIDAuMTMpXCI6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpXCIsXCJAbWVkaWEgKGhvdmVyOiBub25lKVwiOntiYWNrZ3JvdW5kQ29sb3I6cn19LFwiJiRmb2N1c2VkXCI6e2JhY2tncm91bmRDb2xvcjp0P1wicmdiYSgwLCAwLCAwLCAwLjA5KVwiOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA5KVwifSxcIiYkZGlzYWJsZWRcIjp7YmFja2dyb3VuZENvbG9yOnQ/XCJyZ2JhKDAsIDAsIDAsIDAuMTIpXCI6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpXCJ9fSx1bmRlcmxpbmU6e1wiJjphZnRlclwiOntib3JkZXJCb3R0b206XCIycHggc29saWQgXCIuY29uY2F0KGUucGFsZXR0ZS5wcmltYXJ5W3Q/XCJkYXJrXCI6XCJsaWdodFwiXSksbGVmdDowLGJvdHRvbTowLGNvbnRlbnQ6J1wiXCInLHBvc2l0aW9uOlwiYWJzb2x1dGVcIixyaWdodDowLHRyYW5zZm9ybTpcInNjYWxlWCgwKVwiLHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoXCJ0cmFuc2Zvcm1cIix7ZHVyYXRpb246ZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVyLGVhc2luZzplLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlT3V0fSkscG9pbnRlckV2ZW50czpcIm5vbmVcIn0sXCImJGZvY3VzZWQ6YWZ0ZXJcIjp7dHJhbnNmb3JtOlwic2NhbGVYKDEpXCJ9LFwiJiRlcnJvcjphZnRlclwiOntib3JkZXJCb3R0b21Db2xvcjplLnBhbGV0dGUuZXJyb3IubWFpbix0cmFuc2Zvcm06XCJzY2FsZVgoMSlcIn0sXCImOmJlZm9yZVwiOntib3JkZXJCb3R0b206XCIxcHggc29saWQgXCIuY29uY2F0KG4pLGxlZnQ6MCxib3R0b206MCxjb250ZW50OidcIlxcXFwwMGEwXCInLHBvc2l0aW9uOlwiYWJzb2x1dGVcIixyaWdodDowLHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoXCJib3JkZXItYm90dG9tLWNvbG9yXCIse2R1cmF0aW9uOmUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlcn0pLHBvaW50ZXJFdmVudHM6XCJub25lXCJ9LFwiJjpob3Zlcjpub3QoJGRpc2FibGVkKTpub3QoJGZvY3VzZWQpOm5vdCgkZXJyb3IpOmJlZm9yZVwiOntib3JkZXJCb3R0b206XCIxcHggc29saWQgXCIuY29uY2F0KGUucGFsZXR0ZS50ZXh0LnByaW1hcnkpfSxcIiYkZGlzYWJsZWQ6YmVmb3JlXCI6e2JvcmRlckJvdHRvbTpcIjFweCBkb3R0ZWQgXCIuY29uY2F0KG4pfX0sZm9jdXNlZDp7fSxkaXNhYmxlZDp7fSxhZG9ybmVkU3RhcnQ6e3BhZGRpbmdMZWZ0OjEyfSxhZG9ybmVkRW5kOntwYWRkaW5nUmlnaHQ6MTJ9LGVycm9yOnt9LG11bHRpbGluZTp7cGFkZGluZzpcIjI3cHggMTJweCAxMHB4XCIsYm94U2l6aW5nOlwiYm9yZGVyLWJveFwifSxpbnB1dDp7cGFkZGluZzpcIjI3cHggMTJweCAxMHB4XCJ9LGlucHV0TWFyZ2luRGVuc2U6e3BhZGRpbmdUb3A6MjQscGFkZGluZ0JvdHRvbTo2fSxpbnB1dE11bHRpbGluZTp7cGFkZGluZzowfSxpbnB1dEFkb3JuZWRTdGFydDp7cGFkZGluZ0xlZnQ6MH0saW5wdXRBZG9ybmVkRW5kOntwYWRkaW5nUmlnaHQ6MH19fTtmdW5jdGlvbiBwKGUpe3ZhciB0PWUuZGlzYWJsZVVuZGVybGluZSxuPWUuY2xhc3NlcyxyPSgwLGkuZGVmYXVsdCkoZSxbXCJkaXNhYmxlVW5kZXJsaW5lXCIsXCJjbGFzc2VzXCJdKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodS5kZWZhdWx0LCgwLGEuZGVmYXVsdCkoe2NsYXNzZXM6KDAsYS5kZWZhdWx0KSh7fSxuLHtyb290OigwLHMuZGVmYXVsdCkobi5yb290LCgwLG8uZGVmYXVsdCkoe30sbi51bmRlcmxpbmUsIXQpKSx1bmRlcmxpbmU6bnVsbH0pfSxyKSl9dC5zdHlsZXM9ZCx1LmRlZmF1bHQuZGVmYXVsdFByb3BzPXtmdWxsV2lkdGg6ITEsaW5wdXRDb21wb25lbnQ6XCJpbnB1dFwiLG11bHRpbGluZTohMSx0eXBlOlwidGV4dFwifSxwLm11aU5hbWU9XCJJbnB1dFwiO3ZhciBmPSgwLGMuZGVmYXVsdCkoZCx7bmFtZTpcIk11aUZpbGxlZElucHV0XCJ9KShwKTt0LmRlZmF1bHQ9Zn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDUpKSxpPXIobigwKSksbD0ocihuKDEpKSxyKG4oNikpKSxzPShuKDcpLHIobigzNykpKSx1PXIobig0ODEpKSxjPXIobig4KSksZD1mdW5jdGlvbihlKXt2YXIgdD1cImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT9cInJnYmEoMCwgMCwgMCwgMC4yMylcIjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMylcIjtyZXR1cm57cm9vdDp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLFwiJiAkbm90Y2hlZE91dGxpbmVcIjp7Ym9yZGVyQ29sb3I6dH0sXCImOmhvdmVyOm5vdCgkZGlzYWJsZWQpOm5vdCgkZm9jdXNlZCk6bm90KCRlcnJvcikgJG5vdGNoZWRPdXRsaW5lXCI6e2JvcmRlckNvbG9yOmUucGFsZXR0ZS50ZXh0LnByaW1hcnksXCJAbWVkaWEgKGhvdmVyOiBub25lKVwiOntib3JkZXJDb2xvcjp0fX0sXCImJGZvY3VzZWQgJG5vdGNoZWRPdXRsaW5lXCI6e2JvcmRlckNvbG9yOmUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sYm9yZGVyV2lkdGg6Mn0sXCImJGVycm9yICRub3RjaGVkT3V0bGluZVwiOntib3JkZXJDb2xvcjplLnBhbGV0dGUuZXJyb3IubWFpbn0sXCImJGRpc2FibGVkICRub3RjaGVkT3V0bGluZVwiOntib3JkZXJDb2xvcjplLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkfX0sZm9jdXNlZDp7fSxkaXNhYmxlZDp7fSxhZG9ybmVkU3RhcnQ6e3BhZGRpbmdMZWZ0OjE0fSxhZG9ybmVkRW5kOntwYWRkaW5nUmlnaHQ6MTR9LGVycm9yOnt9LG11bHRpbGluZTp7cGFkZGluZzpcIjE4LjVweCAxNHB4XCIsYm94U2l6aW5nOlwiYm9yZGVyLWJveFwifSxub3RjaGVkT3V0bGluZTp7fSxpbnB1dDp7cGFkZGluZzpcIjE4LjVweCAxNHB4XCJ9LGlucHV0TWFyZ2luRGVuc2U6e3BhZGRpbmdUb3A6MTUscGFkZGluZ0JvdHRvbToxNX0saW5wdXRNdWx0aWxpbmU6e3BhZGRpbmc6MH0saW5wdXRBZG9ybmVkU3RhcnQ6e3BhZGRpbmdMZWZ0OjB9LGlucHV0QWRvcm5lZEVuZDp7cGFkZGluZ1JpZ2h0OjB9fX07ZnVuY3Rpb24gcChlKXt2YXIgdD1lLmNsYXNzZXMsbj1lLmxhYmVsV2lkdGgscj1lLm5vdGNoZWQsYz0oMCxhLmRlZmF1bHQpKGUsW1wiY2xhc3Nlc1wiLFwibGFiZWxXaWR0aFwiLFwibm90Y2hlZFwiXSk7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHMuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtyZW5kZXJQcmVmaXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHUuZGVmYXVsdCx7Y2xhc3NOYW1lOnQubm90Y2hlZE91dGxpbmUsbGFiZWxXaWR0aDpuLG5vdGNoZWQ6dm9pZCAwIT09cj9yOkJvb2xlYW4oZS5zdGFydEFkb3JubWVudHx8ZS5maWxsZWR8fGUuZm9jdXNlZCl9KX0sY2xhc3NlczooMCxvLmRlZmF1bHQpKHt9LHQse3Jvb3Q6KDAsbC5kZWZhdWx0KSh0LnJvb3QsdC51bmRlcmxpbmUpLG5vdGNoZWRPdXRsaW5lOm51bGx9KX0sYykpfXQuc3R5bGVzPWQscy5kZWZhdWx0LmRlZmF1bHRQcm9wcz17ZnVsbFdpZHRoOiExLGlucHV0Q29tcG9uZW50OlwiaW5wdXRcIixtdWx0aWxpbmU6ITEsdHlwZTpcInRleHRcIn0scC5tdWlOYW1lPVwiSW5wdXRcIjt2YXIgZj0oMCxjLmRlZmF1bHQpKGQse25hbWU6XCJNdWlPdXRsaW5lZElucHV0XCJ9KShwKTt0LmRlZmF1bHQ9Zn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oOSkpLGE9cihuKDQpKSxpPXIobig1KSksbD1yKG4oMCkpLHM9KHIobigxKSkscihuKDYpKSksdT1uKDE5KSxjPW4oMjEpLGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJydGxcIj09PWUuZGlyZWN0aW9uP1wicmlnaHRcIjpcImxlZnRcIjtyZXR1cm57cm9vdDp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLGJvdHRvbTowLHJpZ2h0OjAsdG9wOi01LGxlZnQ6MCxtYXJnaW46MCxwYWRkaW5nOjAscG9pbnRlckV2ZW50czpcIm5vbmVcIixib3JkZXJSYWRpdXM6ZS5zaGFwZS5ib3JkZXJSYWRpdXMsYm9yZGVyU3R5bGU6XCJzb2xpZFwiLGJvcmRlcldpZHRoOjEsdHJhbnNpdGlvbjplLnRyYW5zaXRpb25zLmNyZWF0ZShbXCJwYWRkaW5nLVwiLmNvbmNhdCh0KSxcImJvcmRlci1jb2xvclwiLFwiYm9yZGVyLXdpZHRoXCJdLHtkdXJhdGlvbjplLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXIsZWFzaW5nOmUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VPdXR9KX0sbGVnZW5kOnt0ZXh0QWxpZ246XCJsZWZ0XCIscGFkZGluZzowLGxpbmVIZWlnaHQ6XCIxMXB4XCIsdHJhbnNpdGlvbjplLnRyYW5zaXRpb25zLmNyZWF0ZShcIndpZHRoXCIse2R1cmF0aW9uOmUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlcixlYXNpbmc6ZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZU91dH0pfX19O3Quc3R5bGVzPWQ7dmFyIHA9KDAsdS53aXRoU3R5bGVzKShkLHtuYW1lOlwiTXVpUHJpdmF0ZU5vdGNoZWRPdXRsaW5lXCIsd2l0aFRoZW1lOiEwfSkoZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbjt2YXIgdD1lLmNsYXNzZXMsbj1lLmNsYXNzTmFtZSxyPWUubGFiZWxXaWR0aCx1PWUubm90Y2hlZCxkPWUuc3R5bGUscD1lLnRoZW1lLGY9KDAsaS5kZWZhdWx0KShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImxhYmVsV2lkdGhcIixcIm5vdGNoZWRcIixcInN0eWxlXCIsXCJ0aGVtZVwiXSksbT1cInJ0bFwiPT09cC5kaXJlY3Rpb24/XCJyaWdodFwiOlwibGVmdFwiLGc9cj4wPy43NSpyKzg6MDtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJmaWVsZHNldFwiLCgwLGEuZGVmYXVsdCkoe1wiYXJpYS1oaWRkZW5cIjohMCxzdHlsZTooMCxhLmRlZmF1bHQpKCgwLG8uZGVmYXVsdCkoe30sXCJwYWRkaW5nXCIuY29uY2F0KCgwLGMuY2FwaXRhbGl6ZSkobSkpLDgrKHU/MDpnLzIpKSxkKSxjbGFzc05hbWU6KDAscy5kZWZhdWx0KSh0LnJvb3Qsbil9LGYpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGVnZW5kXCIse2NsYXNzTmFtZTp0LmxlZ2VuZCxzdHlsZTp7d2lkdGg6dT9nOi4wMX19LGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOlwiJiM4MjAzO1wifX0pKSl9KTt0LmRlZmF1bHQ9cH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oNDgzKSxvPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuTXVpVGhlbWVQcm92aWRlck9sZD12b2lkIDA7dmFyIGE9byhuKDQpKSxpPW8obig5KSksbD1vKG4oMTIpKSxzPW8obigxMykpLHU9byhuKDE0KSksYz1vKG4oMTUpKSxkPW8obigxNikpLHA9byhuKDApKSxmPW8obigxKSksbT0obyhuKDE3KSksbyhuKDQ4NCkpKSxnPW4oNyksaD1yKG4oNjkpKSxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSxuKXt2YXIgcjtyZXR1cm4oMCxsLmRlZmF1bHQpKHRoaXMsdCksKHI9KDAsdS5kZWZhdWx0KSh0aGlzLCgwLGMuZGVmYXVsdCkodCkuY2FsbCh0aGlzKSkpLmJyb2FkY2FzdD0oMCxtLmRlZmF1bHQpKCksci5vdXRlclRoZW1lPWguZGVmYXVsdC5pbml0aWFsKG4pLHIuYnJvYWRjYXN0LnNldFN0YXRlKHIubWVyZ2VPdXRlckxvY2FsVGhlbWUoZS50aGVtZSkpLHJ9cmV0dXJuKDAsZC5kZWZhdWx0KSh0LGUpLCgwLHMuZGVmYXVsdCkodCxbe2tleTpcImdldENoaWxkQ29udGV4dFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLnByb3BzLG49dC5kaXNhYmxlU3R5bGVzR2VuZXJhdGlvbixyPXQuc2hlZXRzQ2FjaGUsbz10LnNoZWV0c01hbmFnZXIsYT10aGlzLmNvbnRleHQubXVpVGhlbWVQcm92aWRlck9wdGlvbnN8fHt9O3JldHVybiB2b2lkIDAhPT1uJiYoYS5kaXNhYmxlU3R5bGVzR2VuZXJhdGlvbj1uKSx2b2lkIDAhPT1yJiYoYS5zaGVldHNDYWNoZT1yKSx2b2lkIDAhPT1vJiYoYS5zaGVldHNNYW5hZ2VyPW8pLGU9e30sKDAsaS5kZWZhdWx0KShlLGguQ0hBTk5FTCx0aGlzLmJyb2FkY2FzdCksKDAsaS5kZWZhdWx0KShlLFwibXVpVGhlbWVQcm92aWRlck9wdGlvbnNcIixhKSxlfX0se2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMudW5zdWJzY3JpYmVJZD1oLmRlZmF1bHQuc3Vic2NyaWJlKHRoaXMuY29udGV4dCxmdW5jdGlvbih0KXtlLm91dGVyVGhlbWU9dCxlLmJyb2FkY2FzdC5zZXRTdGF0ZShlLm1lcmdlT3V0ZXJMb2NhbFRoZW1lKGUucHJvcHMudGhlbWUpKX0pfX0se2tleTpcImNvbXBvbmVudERpZFVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucHJvcHMudGhlbWUhPT1lLnRoZW1lJiZ0aGlzLmJyb2FkY2FzdC5zZXRTdGF0ZSh0aGlzLm1lcmdlT3V0ZXJMb2NhbFRoZW1lKHRoaXMucHJvcHMudGhlbWUpKX19LHtrZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMudW5zdWJzY3JpYmVJZCYmaC5kZWZhdWx0LnVuc3Vic2NyaWJlKHRoaXMuY29udGV4dCx0aGlzLnVuc3Vic2NyaWJlSWQpfX0se2tleTpcIm1lcmdlT3V0ZXJMb2NhbFRoZW1lXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lKHRoaXMub3V0ZXJUaGVtZSk6dGhpcy5vdXRlclRoZW1lPygwLGEuZGVmYXVsdCkoe30sdGhpcy5vdXRlclRoZW1lLGUpOmV9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbn19XSksdH0ocC5kZWZhdWx0LkNvbXBvbmVudCk7dC5NdWlUaGVtZVByb3ZpZGVyT2xkPWIsYi5jaGlsZENvbnRleHRUeXBlcz0oMCxhLmRlZmF1bHQpKHt9LGguZGVmYXVsdC5jb250ZXh0VHlwZXMse211aVRoZW1lUHJvdmlkZXJPcHRpb25zOmYuZGVmYXVsdC5vYmplY3R9KSxiLmNvbnRleHRUeXBlcz0oMCxhLmRlZmF1bHQpKHt9LGguZGVmYXVsdC5jb250ZXh0VHlwZXMse211aVRoZW1lUHJvdmlkZXJPcHRpb25zOmYuZGVmYXVsdC5vYmplY3R9KSxnLnBvbnlmaWxsR2xvYmFsLl9fTVVJX1NUWUxFU19ffHwoZy5wb255ZmlsbEdsb2JhbC5fX01VSV9TVFlMRVNfXz17fSksZy5wb255ZmlsbEdsb2JhbC5fX01VSV9TVFlMRVNfXy5NdWlUaGVtZVByb3ZpZGVyfHwoZy5wb255ZmlsbEdsb2JhbC5fX01VSV9TVFlMRVNfXy5NdWlUaGVtZVByb3ZpZGVyPWIpO3ZhciB5PWcucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX18uTXVpVGhlbWVQcm92aWRlcjt0LmRlZmF1bHQ9eX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikpe3ZhciByPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcj9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik6e307ci5nZXR8fHIuc2V0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4scik6dFtuXT1lW25dfXJldHVybiB0LmRlZmF1bHQ9ZSx0fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9e30sbj0xLHI9ZTtyZXR1cm57Z2V0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sc2V0U3RhdGU6ZnVuY3Rpb24oZSl7cj1lO2Zvcih2YXIgbj1PYmplY3Qua2V5cyh0KSxvPTAsYT1uLmxlbmd0aDtvPGE7bysrKXRbbltvXV0mJnRbbltvXV0oZSl9LHN1YnNjcmliZTpmdW5jdGlvbihlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihcImxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbi5cIik7dmFyIHI9bjtyZXR1cm4gdFtyXT1lLG4rPTEscn0sdW5zdWJzY3JpYmU6ZnVuY3Rpb24oZSl7dFtlXT12b2lkIDB9fX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKHQpe3ZhciByPWZ1bmN0aW9uKCl7dmFyIGU9XCJQcmlzbVwiaW4gdCxuPWU/dC5QcmlzbTp2b2lkIDA7cmV0dXJuIGZ1bmN0aW9uKCl7ZT90LlByaXNtPW46ZGVsZXRlIHQuUHJpc207ZT12b2lkIDAsbj12b2lkIDB9fSgpOyhcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93P1widW5kZWZpbmVkXCI9PXR5cGVvZiBzZWxmP3t9OnNlbGY6d2luZG93KS5QcmlzbT17bWFudWFsOiEwLGRpc2FibGVXb3JrZXJNZXNzYWdlSGFuZGxlcjohMH07dmFyIG89big0ODcpLGE9big0MiksaT1uKDUwMiksbD1uKDUwMykscz1uKDUwNCksdT1uKDUwNSksYz1uKDUwNik7cigpO3ZhciBkPXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHAoKXt9cC5wcm90b3R5cGU9aTt2YXIgZj1uZXcgcDtmdW5jdGlvbiBtKGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGV8fCFlLmRpc3BsYXlOYW1lKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGBmdW5jdGlvbmAgZm9yIGBncmFtbWFyYCwgZ290IGBcIitlK1wiYFwiKTt2b2lkIDA9PT1mLmxhbmd1YWdlc1tlLmRpc3BsYXlOYW1lXSYmZShmKX1lLmV4cG9ydHM9ZixmLmhpZ2hsaWdodD1mdW5jdGlvbihlLHQpe3ZhciBuLHI9aS5oaWdobGlnaHQ7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYHN0cmluZ2AgZm9yIGB2YWx1ZWAsIGdvdCBgXCIrZStcImBcIik7aWYoXCJPYmplY3RcIj09PWYudXRpbC50eXBlKHQpKW49dCx0PW51bGw7ZWxzZXtpZihcInN0cmluZ1wiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBgc3RyaW5nYCBmb3IgYG5hbWVgLCBnb3QgYFwiK3QrXCJgXCIpO2lmKCFkLmNhbGwoZi5sYW5ndWFnZXMsdCkpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBsYW5ndWFnZTogYFwiK3QrXCJgIGlzIG5vdCByZWdpc3RlcmVkXCIpO249Zi5sYW5ndWFnZXNbdF19cmV0dXJuIHIuY2FsbCh0aGlzLGUsbix0KX0sZi5yZWdpc3Rlcj1tLGYucmVnaXN0ZXJlZD1mdW5jdGlvbihlKXtpZihcInN0cmluZ1wiIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBgc3RyaW5nYCBmb3IgYGxhbmd1YWdlYCwgZ290IGBcIitlK1wiYFwiKTtyZXR1cm4gZC5jYWxsKGYubGFuZ3VhZ2VzLGUpfSxtKGwpLG0ocyksbSh1KSxtKGMpLGYudXRpbC5lbmNvZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGYuVG9rZW4uc3RyaW5naWZ5PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm57dHlwZTpcInRleHRcIix2YWx1ZTplfTtpZihcIkFycmF5XCI9PT1mLnV0aWwudHlwZShlKSlyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLG89ZS5sZW5ndGgsYT0tMTtmb3IoOysrYTxvOylcIlwiIT09KG49ZVthXSkmJm51bGwhPW4mJnIucHVzaChuKTthPS0xLG89ci5sZW5ndGg7Zm9yKDsrK2E8bzspbj1yW2FdLHJbYV09Zi5Ub2tlbi5zdHJpbmdpZnkobix0LHIpO3JldHVybiByfShlLHQpO3I9e3R5cGU6ZS50eXBlLGNvbnRlbnQ6Zi5Ub2tlbi5zdHJpbmdpZnkoZS5jb250ZW50LHQsbiksdGFnOlwic3BhblwiLGNsYXNzZXM6W1widG9rZW5cIixlLnR5cGVdLGF0dHJpYnV0ZXM6e30sbGFuZ3VhZ2U6dCxwYXJlbnQ6bn0sZS5hbGlhcyYmKHIuY2xhc3Nlcz1yLmNsYXNzZXMuY29uY2F0KGUuYWxpYXMpKTtyZXR1cm4gZi5ob29rcy5ydW4oXCJ3cmFwXCIsciksbyhyLnRhZytcIi5cIityLmNsYXNzZXMuam9pbihcIi5cIiksZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSllW3RdPWEoZVt0XSk7cmV0dXJuIGV9KHIuYXR0cmlidXRlcyksci5jb250ZW50KX19KS5jYWxsKHRoaXMsbigyNykpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oNDg4KX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oNDg5KSxvPW4oNDk3KShyLFwiZGl2XCIpO28uZGlzcGxheU5hbWU9XCJodG1sXCIsZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDQ5MCksbz1uKDQ5MSksYT1uKDQ5MiksaT1uKDQ5MyksbD1uKDQ5NSkscz1uKDQ5Nik7ZS5leHBvcnRzPXIoW2EsbyxpLGwsc10pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyMyksbz1uKDE1OSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LG4sYT1lLmxlbmd0aCxpPVtdLGw9W10scz0tMTtmb3IoOysrczxhOyl0PWVbc10saS5wdXNoKHQucHJvcGVydHkpLGwucHVzaCh0Lm5vcm1hbCksbj10LnNwYWNlO3JldHVybiBuZXcgbyhyLmFwcGx5KG51bGwsaSksci5hcHBseShudWxsLGwpLG4pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMzgpO2UuZXhwb3J0cz1yKHtzcGFjZTpcInhsaW5rXCIsdHJhbnNmb3JtOmZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJ4bGluazpcIit0LnNsaWNlKDUpLnRvTG93ZXJDYXNlKCl9LHByb3BlcnRpZXM6e3hMaW5rQWN0dWF0ZTpudWxsLHhMaW5rQXJjUm9sZTpudWxsLHhMaW5rSHJlZjpudWxsLHhMaW5rUm9sZTpudWxsLHhMaW5rU2hvdzpudWxsLHhMaW5rVGl0bGU6bnVsbCx4TGlua1R5cGU6bnVsbH19KX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMzgpO2UuZXhwb3J0cz1yKHtzcGFjZTpcInhtbFwiLHRyYW5zZm9ybTpmdW5jdGlvbihlLHQpe3JldHVyblwieG1sOlwiK3Quc2xpY2UoMykudG9Mb3dlckNhc2UoKX0scHJvcGVydGllczp7eG1sTGFuZzpudWxsLHhtbEJhc2U6bnVsbCx4bWxTcGFjZTpudWxsfX0pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigzOCksbz1uKDE2Mik7ZS5leHBvcnRzPXIoe3NwYWNlOlwieG1sbnNcIixhdHRyaWJ1dGVzOnt4bWxuc3hsaW5rOlwieG1sbnM6eGxpbmtcIn0sdHJhbnNmb3JtOm8scHJvcGVydGllczp7eG1sbnM6bnVsbCx4bWxuc1hMaW5rOm51bGx9fSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCBpbiBlP2VbdF06dH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDk1KSxvPW4oMzgpLGE9ci5ib29sZWFuaXNoLGk9ci5udW1iZXIsbD1yLnNwYWNlU2VwYXJhdGVkO2UuZXhwb3J0cz1vKHt0cmFuc2Zvcm06ZnVuY3Rpb24oZSx0KXtyZXR1cm5cInJvbGVcIj09PXQ/dDpcImFyaWEtXCIrdC5zbGljZSg0KS50b0xvd2VyQ2FzZSgpfSxwcm9wZXJ0aWVzOnthcmlhQWN0aXZlRGVzY2VuZGFudDpudWxsLGFyaWFBdG9taWM6YSxhcmlhQXV0b0NvbXBsZXRlOm51bGwsYXJpYUJ1c3k6YSxhcmlhQ2hlY2tlZDphLGFyaWFDb2xDb3VudDppLGFyaWFDb2xJbmRleDppLGFyaWFDb2xTcGFuOmksYXJpYUNvbnRyb2xzOmwsYXJpYUN1cnJlbnQ6bnVsbCxhcmlhRGVzY3JpYmVkQnk6bCxhcmlhRGV0YWlsczpudWxsLGFyaWFEaXNhYmxlZDphLGFyaWFEcm9wRWZmZWN0OmwsYXJpYUVycm9yTWVzc2FnZTpudWxsLGFyaWFFeHBhbmRlZDphLGFyaWFGbG93VG86bCxhcmlhR3JhYmJlZDphLGFyaWFIYXNQb3B1cDpudWxsLGFyaWFIaWRkZW46YSxhcmlhSW52YWxpZDpudWxsLGFyaWFLZXlTaG9ydGN1dHM6bnVsbCxhcmlhTGFiZWw6bnVsbCxhcmlhTGFiZWxsZWRCeTpsLGFyaWFMZXZlbDppLGFyaWFMaXZlOm51bGwsYXJpYU1vZGFsOmEsYXJpYU11bHRpTGluZTphLGFyaWFNdWx0aVNlbGVjdGFibGU6YSxhcmlhT3JpZW50YXRpb246bnVsbCxhcmlhT3duczpsLGFyaWFQbGFjZWhvbGRlcjpudWxsLGFyaWFQb3NJblNldDppLGFyaWFQcmVzc2VkOmEsYXJpYVJlYWRPbmx5OmEsYXJpYVJlbGV2YW50Om51bGwsYXJpYVJlcXVpcmVkOmEsYXJpYVJvbGVEZXNjcmlwdGlvbjpsLGFyaWFSb3dDb3VudDppLGFyaWFSb3dJbmRleDppLGFyaWFSb3dTcGFuOmksYXJpYVNlbGVjdGVkOmEsYXJpYVNldFNpemU6aSxhcmlhU29ydDpudWxsLGFyaWFWYWx1ZU1heDppLGFyaWFWYWx1ZU1pbjppLGFyaWFWYWx1ZU5vdzppLGFyaWFWYWx1ZVRleHQ6bnVsbCxyb2xlOm51bGx9fSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDk1KSxvPW4oMzgpLGE9bigxNjIpLGk9ci5ib29sZWFuLGw9ci5vdmVybG9hZGVkQm9vbGVhbixzPXIuYm9vbGVhbmlzaCx1PXIubnVtYmVyLGM9ci5zcGFjZVNlcGFyYXRlZCxkPXIuY29tbWFTZXBhcmF0ZWQ7ZS5leHBvcnRzPW8oe3NwYWNlOlwiaHRtbFwiLGF0dHJpYnV0ZXM6e2FjY2VwdGNoYXJzZXQ6XCJhY2NlcHQtY2hhcnNldFwiLGNsYXNzbmFtZTpcImNsYXNzXCIsaHRtbGZvcjpcImZvclwiLGh0dHBlcXVpdjpcImh0dHAtZXF1aXZcIn0sdHJhbnNmb3JtOmEsbXVzdFVzZVByb3BlcnR5OltcImNoZWNrZWRcIixcIm11bHRpcGxlXCIsXCJtdXRlZFwiLFwic2VsZWN0ZWRcIl0scHJvcGVydGllczp7YWJicjpudWxsLGFjY2VwdDpkLGFjY2VwdENoYXJzZXQ6YyxhY2Nlc3NLZXk6YyxhY3Rpb246bnVsbCxhbGxvd0Z1bGxTY3JlZW46aSxhbGxvd1BheW1lbnRSZXF1ZXN0OmksYWxsb3dVc2VyTWVkaWE6aSxhbHQ6bnVsbCxhczpudWxsLGFzeW5jOmksYXV0b0NhcGl0YWxpemU6bnVsbCxhdXRvQ29tcGxldGU6YyxhdXRvRm9jdXM6aSxhdXRvUGxheTppLGNhcHR1cmU6aSxjaGFyU2V0Om51bGwsY2hlY2tlZDppLGNpdGU6bnVsbCxjbGFzc05hbWU6Yyxjb2xzOnUsY29sU3BhbjpudWxsLGNvbnRlbnQ6bnVsbCxjb250ZW50RWRpdGFibGU6cyxjb250cm9sczppLGNvbnRyb2xzTGlzdDpjLGNvb3Jkczp1fGQsY3Jvc3NPcmlnaW46bnVsbCxkYXRhOm51bGwsZGF0ZVRpbWU6bnVsbCxkZWNvZGluZzpudWxsLGRlZmF1bHQ6aSxkZWZlcjppLGRpcjpudWxsLGRpck5hbWU6bnVsbCxkaXNhYmxlZDppLGRvd25sb2FkOmwsZHJhZ2dhYmxlOnMsZW5jVHlwZTpudWxsLGZvcm06bnVsbCxmb3JtQWN0aW9uOm51bGwsZm9ybUVuY1R5cGU6bnVsbCxmb3JtTWV0aG9kOm51bGwsZm9ybU5vVmFsaWRhdGU6aSxmb3JtVGFyZ2V0Om51bGwsaGVhZGVyczpjLGhlaWdodDp1LGhpZGRlbjppLGhpZ2g6dSxocmVmOm51bGwsaHJlZkxhbmc6bnVsbCxodG1sRm9yOmMsaHR0cEVxdWl2OmMsaWQ6bnVsbCxpbnB1dE1vZGU6bnVsbCxpbnRlZ3JpdHk6bnVsbCxpczpudWxsLGlzTWFwOmksaXRlbUlkOm51bGwsaXRlbVByb3A6YyxpdGVtUmVmOmMsaXRlbVNjb3BlOmksaXRlbVR5cGU6YyxraW5kOm51bGwsbGFiZWw6bnVsbCxsYW5nOm51bGwsbGFuZ3VhZ2U6bnVsbCxsaXN0Om51bGwsbG9vcDppLGxvdzp1LG1hbmlmZXN0Om51bGwsbWF4Om51bGwsbWF4TGVuZ3RoOnUsbWVkaWE6bnVsbCxtZXRob2Q6bnVsbCxtaW46bnVsbCxtaW5MZW5ndGg6dSxtdWx0aXBsZTppLG11dGVkOmksbmFtZTpudWxsLG5vbmNlOm51bGwsbm9Nb2R1bGU6aSxub1ZhbGlkYXRlOmksb3BlbjppLG9wdGltdW06dSxwYXR0ZXJuOm51bGwscGluZzpjLHBsYWNlaG9sZGVyOm51bGwscGxheXNJbmxpbmU6aSxwb3N0ZXI6bnVsbCxwcmVsb2FkOm51bGwscmVhZE9ubHk6aSxyZWZlcnJlclBvbGljeTpudWxsLHJlbDpjLHJlcXVpcmVkOmkscmV2ZXJzZWQ6aSxyb3dzOnUscm93U3Bhbjp1LHNhbmRib3g6YyxzY29wZTpudWxsLHNjb3BlZDppLHNlYW1sZXNzOmksc2VsZWN0ZWQ6aSxzaGFwZTpudWxsLHNpemU6dSxzaXplczpudWxsLHNsb3Q6bnVsbCxzcGFuOnUsc3BlbGxDaGVjazpzLHNyYzpudWxsLHNyY0RvYzpudWxsLHNyY0xhbmc6bnVsbCxzcmNTZXQ6ZCxzdGFydDp1LHN0ZXA6bnVsbCxzdHlsZTpudWxsLHRhYkluZGV4OnUsdGFyZ2V0Om51bGwsdGl0bGU6bnVsbCx0cmFuc2xhdGU6bnVsbCx0eXBlOm51bGwsdHlwZU11c3RNYXRjaDppLHVzZU1hcDpudWxsLHZhbHVlOnMsd2lkdGg6dSx3cmFwOm51bGwsYWxpZ246bnVsbCxhTGluazpudWxsLGFyY2hpdmU6YyxheGlzOm51bGwsYmFja2dyb3VuZDpudWxsLGJnQ29sb3I6bnVsbCxib3JkZXI6dSxib3JkZXJDb2xvcjpudWxsLGJvdHRvbU1hcmdpbjp1LGNlbGxQYWRkaW5nOm51bGwsY2VsbFNwYWNpbmc6bnVsbCxjaGFyOm51bGwsY2hhck9mZjpudWxsLGNsYXNzSWQ6bnVsbCxjbGVhcjpudWxsLGNvZGU6bnVsbCxjb2RlQmFzZTpudWxsLGNvZGVUeXBlOm51bGwsY29sb3I6bnVsbCxjb21wYWN0OmksZGVjbGFyZTppLGV2ZW50Om51bGwsZmFjZTpudWxsLGZyYW1lOm51bGwsZnJhbWVCb3JkZXI6bnVsbCxoU3BhY2U6dSxsZWZ0TWFyZ2luOnUsbGluazpudWxsLGxvbmdEZXNjOm51bGwsbG93U3JjOm51bGwsbWFyZ2luSGVpZ2h0OnUsbWFyZ2luV2lkdGg6dSxub1Jlc2l6ZTppLG5vSHJlZjppLG5vU2hhZGU6aSxub1dyYXA6aSxvYmplY3Q6bnVsbCxwcm9maWxlOm51bGwscHJvbXB0Om51bGwscmV2Om51bGwscmlnaHRNYXJnaW46dSxydWxlczpudWxsLHNjaGVtZTpudWxsLHNjcm9sbGluZzpzLHN0YW5kYnk6bnVsbCxzdW1tYXJ5Om51bGwsdGV4dDpudWxsLHRvcE1hcmdpbjp1LHZhbHVlVHlwZTpudWxsLHZlcnNpb246bnVsbCx2QWxpZ246bnVsbCx2TGluazpudWxsLHZTcGFjZTp1LGFsbG93VHJhbnNwYXJlbmN5Om51bGwsYXV0b0NvcnJlY3Q6bnVsbCxhdXRvU2F2ZTpudWxsLHByZWZpeDpudWxsLHByb3BlcnR5Om51bGwscmVzdWx0czp1LHNlY3VyaXR5Om51bGwsdW5zZWxlY3RhYmxlOm51bGx9fSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDQ5OCksbz1uKDk0KSxhPW4oNDk5KSxpPW4oNTAwKS5wYXJzZSxsPW4oNTAxKS5wYXJzZTtmdW5jdGlvbiBzKGUsdCxuKXt2YXIgcj1uO3JldHVybiBlLm51bWJlcnx8ZS5wb3NpdGl2ZU51bWJlcj9pc05hTihyKXx8XCJcIj09PXJ8fChyPU51bWJlcihyKSk6KGUuYm9vbGVhbnx8ZS5vdmVybG9hZGVkQm9vbGVhbikmJihcInN0cmluZ1wiIT10eXBlb2Ygcnx8XCJcIiE9PXImJm8obikhPT1vKHQpfHwocj0hMCkpLHJ9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIG8saT1hKGUsdCksbD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7ciYmZnVuY3Rpb24oZSx0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZXx8XCJsZW5ndGhcImluIGV8fGZ1bmN0aW9uKGUsdCl7dmFyIG49dC50eXBlO2lmKFwiaW5wdXRcIj09PWV8fCFufHxcInN0cmluZ1wiIT10eXBlb2YgbilyZXR1cm4hMTtpZihcIm9iamVjdFwiPT10eXBlb2YgdC5jaGlsZHJlbiYmXCJsZW5ndGhcImluIHQuY2hpbGRyZW4pcmV0dXJuITA7aWYobj1uLnRvTG93ZXJDYXNlKCksXCJidXR0b25cIj09PWUpcmV0dXJuXCJtZW51XCIhPT1uJiZcInN1Ym1pdFwiIT09biYmXCJyZXNldFwiIT09biYmXCJidXR0b25cIiE9PW47cmV0dXJuXCJ2YWx1ZVwiaW4gdH0odC50YWdOYW1lLGUpfShyLGkpJiYobC51bnNoaWZ0KHIpLHI9bnVsbCk7aWYocilmb3IobyBpbiByKW4oaS5wcm9wZXJ0aWVzLG8scltvXSk7KGZ1bmN0aW9uIGUodCxuKXt2YXIgcixvO2lmKFwic3RyaW5nXCIhPXR5cGVvZiBuJiZcIm51bWJlclwiIT10eXBlb2YgbilpZihcIm9iamVjdFwiPT10eXBlb2YgbiYmXCJsZW5ndGhcImluIG4pZm9yKHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspZSh0LG5bcl0pO2Vsc2V7aWYoXCJvYmplY3RcIiE9dHlwZW9mIG58fCEoXCJ0eXBlXCJpbiBuKSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub2RlLCBub2Rlcywgb3Igc3RyaW5nLCBnb3QgYFwiK24rXCJgXCIpO3QucHVzaChuKX1lbHNlIHQucHVzaCh7dHlwZTpcInRleHRcIix2YWx1ZTpTdHJpbmcobil9KX0pKGkuY2hpbGRyZW4sbCksXCJ0ZW1wbGF0ZVwiPT09aS50YWdOYW1lJiYoaS5jb250ZW50PXt0eXBlOlwicm9vdFwiLGNoaWxkcmVuOmkuY2hpbGRyZW59LGkuY2hpbGRyZW49W10pO3JldHVybiBpfTtmdW5jdGlvbiBuKHQsbixvKXt2YXIgYSx1LGM7bnVsbCE9byYmbz09byYmKGE9cihlLG4pLHU9YS5wcm9wZXJ0eSxcInN0cmluZ1wiPT10eXBlb2YoYz1vKSYmKGEuc3BhY2VTZXBhcmF0ZWQ/Yz1pKGMpOmEuY29tbWFTZXBhcmF0ZWQ/Yz1sKGMpOmEuY29tbWFPclNwYWNlU2VwYXJhdGVkJiYoYz1pKGwoYykuam9pbihcIiBcIikpKSksXCJzdHlsZVwiPT09dSYmXCJzdHJpbmdcIiE9dHlwZW9mIG8mJihjPWZ1bmN0aW9uKGUpe3ZhciB0LG49W107Zm9yKHQgaW4gZSluLnB1c2goW3QsZVt0XV0uam9pbihcIjogXCIpKTtyZXR1cm4gbi5qb2luKFwiOyBcIil9KGMpKSxcImNsYXNzTmFtZVwiPT09dSYmdC5jbGFzc05hbWUmJihjPXQuY2xhc3NOYW1lLmNvbmNhdChjKSksdFt1XT1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxhO2lmKFwib2JqZWN0XCIhPXR5cGVvZiBufHwhKFwibGVuZ3RoXCJpbiBuKSlyZXR1cm4gcyhlLHQsbik7bz1uLmxlbmd0aCxyPS0xLGE9W107Zm9yKDsrK3I8bzspYVtyXT1zKGUsdCxuW3JdKTtyZXR1cm4gYX0oYSx1LGMpKX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big5NCksbz1uKDE2MCksYT1uKDE2MSksaT1cImRhdGFcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1yKHQpLHA9dCxmPWE7aWYobiBpbiBlLm5vcm1hbClyZXR1cm4gZS5wcm9wZXJ0eVtlLm5vcm1hbFtuXV07bi5sZW5ndGg+NCYmbi5zbGljZSgwLDQpPT09aSYmbC50ZXN0KHQpJiYoXCItXCI9PT10LmNoYXJBdCg0KT9wPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc2xpY2UoNSkucmVwbGFjZShzLGQpO3JldHVybiBpK3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKX0odCk6dD1mdW5jdGlvbihlKXt2YXIgdD1lLnNsaWNlKDQpO2lmKHMudGVzdCh0KSlyZXR1cm4gZTtcIi1cIiE9PSh0PXQucmVwbGFjZSh1LGMpKS5jaGFyQXQoMCkmJih0PVwiLVwiK3QpO3JldHVybiBpK3R9KHQpLGY9byk7cmV0dXJuIG5ldyBmKHAsdCl9O3ZhciBsPS9eZGF0YVstYS16MC05LjpfXSskL2kscz0vLVthLXpdL2csdT0vW0EtWl0vZztmdW5jdGlvbiBjKGUpe3JldHVyblwiLVwiK2UudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBkKGUpe3JldHVybiBlLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuLGEsaSxsLHMsdT1lfHxcIlwiLGM9dHx8XCJkaXZcIixkPXt9LHA9LTEsZj11Lmxlbmd0aDtmb3IoOysrcDw9ZjspKGk9dS5jaGFyQ29kZUF0KHApKSYmaSE9PXImJmkhPT1vfHwoKGw9dS5zbGljZShzLHApKSYmKGE9PT1yP24/bi5wdXNoKGwpOihuPVtsXSxkLmNsYXNzTmFtZT1uKTphPT09bz9kLmlkPWw6Yz1sKSxzPXArMSxhPWkpO3JldHVybnt0eXBlOlwiZWxlbWVudFwiLHRhZ05hbWU6Yyxwcm9wZXJ0aWVzOmQsY2hpbGRyZW46W119fTt2YXIgcj1cIi5cIi5jaGFyQ29kZUF0KDApLG89XCIjXCIuY2hhckNvZGVBdCgwKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjQpO3QucGFyc2U9ZnVuY3Rpb24oZSl7dmFyIHQ9cihTdHJpbmcoZXx8bykpO3JldHVybiB0PT09bz9bXTp0LnNwbGl0KGkpfSx0LnN0cmluZ2lmeT1mdW5jdGlvbihlKXtyZXR1cm4gcihlLmpvaW4oYSkpfTt2YXIgbz1cIlwiLGE9XCIgXCIsaT0vWyBcXHRcXG5cXHJcXGZdKy9nfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dC5wYXJzZT1mdW5jdGlvbihlKXt2YXIgdCxuPVtdLGE9U3RyaW5nKGV8fGkpLGw9YS5pbmRleE9mKG8pLHM9MCx1PSExO2Zvcig7IXU7KS0xPT09bCYmKGw9YS5sZW5ndGgsdT0hMCksISh0PXIoYS5zbGljZShzLGwpKSkmJnV8fG4ucHVzaCh0KSxzPWwrMSxsPWEuaW5kZXhPZihvLHMpO3JldHVybiBufSx0LnN0cmluZ2lmeT1mdW5jdGlvbihlLHQpe3ZhciBuPXR8fHt9LGw9ITE9PT1uLnBhZExlZnQ/aTphLHM9bi5wYWRSaWdodD9hOmk7ZVtlLmxlbmd0aC0xXT09PWkmJihlPWUuY29uY2F0KGkpKTtyZXR1cm4gcihlLmpvaW4ocytvK2wpKX07dmFyIHI9bigyNCksbz1cIixcIixhPVwiIFwiLGk9XCJcIn0sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0KXt2YXIgbj1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZT9zZWxmOnt9LHI9ZnVuY3Rpb24oKXt2YXIgZT0vXFxibGFuZyg/OnVhZ2UpPy0oW1xcdy1dKylcXGIvaSx0PTAscj1uLlByaXNtPXttYW51YWw6bi5QcmlzbSYmbi5QcmlzbS5tYW51YWwsZGlzYWJsZVdvcmtlck1lc3NhZ2VIYW5kbGVyOm4uUHJpc20mJm4uUHJpc20uZGlzYWJsZVdvcmtlck1lc3NhZ2VIYW5kbGVyLHV0aWw6e2VuY29kZTpmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG8/bmV3IG8oZS50eXBlLHIudXRpbC5lbmNvZGUoZS5jb250ZW50KSxlLmFsaWFzKTpcIkFycmF5XCI9PT1yLnV0aWwudHlwZShlKT9lLm1hcChyLnV0aWwuZW5jb2RlKTplLnJlcGxhY2UoLyYvZyxcIiZhbXA7XCIpLnJlcGxhY2UoLzwvZyxcIiZsdDtcIikucmVwbGFjZSgvXFx1MDBhMC9nLFwiIFwiKX0sdHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLm1hdGNoKC9cXFtvYmplY3QgKFxcdyspXFxdLylbMV19LG9iaklkOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9faWR8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19pZFwiLHt2YWx1ZTorK3R9KSxlLl9faWR9LGNsb25lOmZ1bmN0aW9uKGUsdCl7dmFyIG49ci51dGlsLnR5cGUoZSk7c3dpdGNoKHQ9dHx8e30sbil7Y2FzZVwiT2JqZWN0XCI6aWYodFtyLnV0aWwub2JqSWQoZSldKXJldHVybiB0W3IudXRpbC5vYmpJZChlKV07dmFyIG89e307Zm9yKHZhciBhIGluIHRbci51dGlsLm9iaklkKGUpXT1vLGUpZS5oYXNPd25Qcm9wZXJ0eShhKSYmKG9bYV09ci51dGlsLmNsb25lKGVbYV0sdCkpO3JldHVybiBvO2Nhc2VcIkFycmF5XCI6aWYodFtyLnV0aWwub2JqSWQoZSldKXJldHVybiB0W3IudXRpbC5vYmpJZChlKV07bz1bXTtyZXR1cm4gdFtyLnV0aWwub2JqSWQoZSldPW8sZS5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7b1tuXT1yLnV0aWwuY2xvbmUoZSx0KX0pLG99cmV0dXJuIGV9fSxsYW5ndWFnZXM6e2V4dGVuZDpmdW5jdGlvbihlLHQpe3ZhciBuPXIudXRpbC5jbG9uZShyLmxhbmd1YWdlc1tlXSk7Zm9yKHZhciBvIGluIHQpbltvXT10W29dO3JldHVybiBufSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGE9KG89b3x8ci5sYW5ndWFnZXMpW2VdO2lmKDI9PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgaSBpbiBuPWFyZ3VtZW50c1sxXSluLmhhc093blByb3BlcnR5KGkpJiYoYVtpXT1uW2ldKTtyZXR1cm4gYX12YXIgbD17fTtmb3IodmFyIHMgaW4gYSlpZihhLmhhc093blByb3BlcnR5KHMpKXtpZihzPT10KWZvcih2YXIgaSBpbiBuKW4uaGFzT3duUHJvcGVydHkoaSkmJihsW2ldPW5baV0pO2xbc109YVtzXX1yZXR1cm4gci5sYW5ndWFnZXMuREZTKHIubGFuZ3VhZ2VzLGZ1bmN0aW9uKHQsbil7bj09PW9bZV0mJnQhPWUmJih0aGlzW3RdPWwpfSksb1tlXT1sfSxERlM6ZnVuY3Rpb24oZSx0LG4sbyl7Zm9yKHZhciBhIGluIG89b3x8e30sZSllLmhhc093blByb3BlcnR5KGEpJiYodC5jYWxsKGUsYSxlW2FdLG58fGEpLFwiT2JqZWN0XCIhPT1yLnV0aWwudHlwZShlW2FdKXx8b1tyLnV0aWwub2JqSWQoZVthXSldP1wiQXJyYXlcIiE9PXIudXRpbC50eXBlKGVbYV0pfHxvW3IudXRpbC5vYmpJZChlW2FdKV18fChvW3IudXRpbC5vYmpJZChlW2FdKV09ITAsci5sYW5ndWFnZXMuREZTKGVbYV0sdCxhLG8pKToob1tyLnV0aWwub2JqSWQoZVthXSldPSEwLHIubGFuZ3VhZ2VzLkRGUyhlW2FdLHQsbnVsbCxvKSkpfX0scGx1Z2luczp7fSxoaWdobGlnaHRBbGw6ZnVuY3Rpb24oZSx0KXtyLmhpZ2hsaWdodEFsbFVuZGVyKGRvY3VtZW50LGUsdCl9LGhpZ2hsaWdodEFsbFVuZGVyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz17Y2FsbGJhY2s6bixzZWxlY3RvcjonY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0sIFtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gY29kZSwgY29kZVtjbGFzcyo9XCJsYW5nLVwiXSwgW2NsYXNzKj1cImxhbmctXCJdIGNvZGUnfTtyLmhvb2tzLnJ1bihcImJlZm9yZS1oaWdobGlnaHRhbGxcIixvKTtmb3IodmFyIGEsaT1vLmVsZW1lbnRzfHxlLnF1ZXJ5U2VsZWN0b3JBbGwoby5zZWxlY3RvciksbD0wO2E9aVtsKytdOylyLmhpZ2hsaWdodEVsZW1lbnQoYSwhMD09PXQsby5jYWxsYmFjayl9LGhpZ2hsaWdodEVsZW1lbnQ6ZnVuY3Rpb24odCxvLGEpe2Zvcih2YXIgaSxsLHM9dDtzJiYhZS50ZXN0KHMuY2xhc3NOYW1lKTspcz1zLnBhcmVudE5vZGU7cyYmKGk9KHMuY2xhc3NOYW1lLm1hdGNoKGUpfHxbLFwiXCJdKVsxXS50b0xvd2VyQ2FzZSgpLGw9ci5sYW5ndWFnZXNbaV0pLHQuY2xhc3NOYW1lPXQuY2xhc3NOYW1lLnJlcGxhY2UoZSxcIlwiKS5yZXBsYWNlKC9cXHMrL2csXCIgXCIpK1wiIGxhbmd1YWdlLVwiK2ksdC5wYXJlbnROb2RlJiYocz10LnBhcmVudE5vZGUsL3ByZS9pLnRlc3Qocy5ub2RlTmFtZSkmJihzLmNsYXNzTmFtZT1zLmNsYXNzTmFtZS5yZXBsYWNlKGUsXCJcIikucmVwbGFjZSgvXFxzKy9nLFwiIFwiKStcIiBsYW5ndWFnZS1cIitpKSk7dmFyIHU9e2VsZW1lbnQ6dCxsYW5ndWFnZTppLGdyYW1tYXI6bCxjb2RlOnQudGV4dENvbnRlbnR9O2lmKHIuaG9va3MucnVuKFwiYmVmb3JlLXNhbml0eS1jaGVja1wiLHUpLCF1LmNvZGV8fCF1LmdyYW1tYXIpcmV0dXJuIHUuY29kZSYmKHIuaG9va3MucnVuKFwiYmVmb3JlLWhpZ2hsaWdodFwiLHUpLHUuZWxlbWVudC50ZXh0Q29udGVudD11LmNvZGUsci5ob29rcy5ydW4oXCJhZnRlci1oaWdobGlnaHRcIix1KSksdm9pZCByLmhvb2tzLnJ1bihcImNvbXBsZXRlXCIsdSk7aWYoci5ob29rcy5ydW4oXCJiZWZvcmUtaGlnaGxpZ2h0XCIsdSksbyYmbi5Xb3JrZXIpe3ZhciBjPW5ldyBXb3JrZXIoci5maWxlbmFtZSk7Yy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dS5oaWdobGlnaHRlZENvZGU9ZS5kYXRhLHIuaG9va3MucnVuKFwiYmVmb3JlLWluc2VydFwiLHUpLHUuZWxlbWVudC5pbm5lckhUTUw9dS5oaWdobGlnaHRlZENvZGUsYSYmYS5jYWxsKHUuZWxlbWVudCksci5ob29rcy5ydW4oXCJhZnRlci1oaWdobGlnaHRcIix1KSxyLmhvb2tzLnJ1bihcImNvbXBsZXRlXCIsdSl9LGMucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe2xhbmd1YWdlOnUubGFuZ3VhZ2UsY29kZTp1LmNvZGUsaW1tZWRpYXRlQ2xvc2U6ITB9KSl9ZWxzZSB1LmhpZ2hsaWdodGVkQ29kZT1yLmhpZ2hsaWdodCh1LmNvZGUsdS5ncmFtbWFyLHUubGFuZ3VhZ2UpLHIuaG9va3MucnVuKFwiYmVmb3JlLWluc2VydFwiLHUpLHUuZWxlbWVudC5pbm5lckhUTUw9dS5oaWdobGlnaHRlZENvZGUsYSYmYS5jYWxsKHQpLHIuaG9va3MucnVuKFwiYWZ0ZXItaGlnaGxpZ2h0XCIsdSksci5ob29rcy5ydW4oXCJjb21wbGV0ZVwiLHUpfSxoaWdobGlnaHQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPXtjb2RlOmUsZ3JhbW1hcjp0LGxhbmd1YWdlOm59O3JldHVybiByLmhvb2tzLnJ1bihcImJlZm9yZS10b2tlbml6ZVwiLGEpLGEudG9rZW5zPXIudG9rZW5pemUoYS5jb2RlLGEuZ3JhbW1hciksci5ob29rcy5ydW4oXCJhZnRlci10b2tlbml6ZVwiLGEpLG8uc3RyaW5naWZ5KHIudXRpbC5lbmNvZGUoYS50b2tlbnMpLGEubGFuZ3VhZ2UpfSxtYXRjaEdyYW1tYXI6ZnVuY3Rpb24oZSx0LG4sbyxhLGksbCl7dmFyIHM9ci5Ub2tlbjtmb3IodmFyIHUgaW4gbilpZihuLmhhc093blByb3BlcnR5KHUpJiZuW3VdKXtpZih1PT1sKXJldHVybjt2YXIgYz1uW3VdO2M9XCJBcnJheVwiPT09ci51dGlsLnR5cGUoYyk/YzpbY107Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDsrK2Qpe3ZhciBwPWNbZF0sZj1wLmluc2lkZSxtPSEhcC5sb29rYmVoaW5kLGc9ISFwLmdyZWVkeSxoPTAsYj1wLmFsaWFzO2lmKGcmJiFwLnBhdHRlcm4uZ2xvYmFsKXt2YXIgeT1wLnBhdHRlcm4udG9TdHJpbmcoKS5tYXRjaCgvW2ltdXldKiQvKVswXTtwLnBhdHRlcm49UmVnRXhwKHAucGF0dGVybi5zb3VyY2UseStcImdcIil9cD1wLnBhdHRlcm58fHA7Zm9yKHZhciB2PW8sUz1hO3Y8dC5sZW5ndGg7Uys9dFt2XS5sZW5ndGgsKyt2KXt2YXIgRT10W3ZdO2lmKHQubGVuZ3RoPmUubGVuZ3RoKXJldHVybjtpZighKEUgaW5zdGFuY2VvZiBzKSl7aWYoZyYmdiE9dC5sZW5ndGgtMSl7aWYocC5sYXN0SW5kZXg9UywhKEE9cC5leGVjKGUpKSlicmVhaztmb3IodmFyIHg9QS5pbmRleCsobT9BWzFdLmxlbmd0aDowKSx3PUEuaW5kZXgrQVswXS5sZW5ndGgsaz12LF89UyxUPXQubGVuZ3RoO2s8VCYmKF88d3x8IXRba10udHlwZSYmIXRbay0xXS5ncmVlZHkpOysrayl4Pj0oXys9dFtrXS5sZW5ndGgpJiYoKyt2LFM9Xyk7aWYodFt2XWluc3RhbmNlb2Ygcyljb250aW51ZTtDPWstdixFPWUuc2xpY2UoUyxfKSxBLmluZGV4LT1TfWVsc2V7cC5sYXN0SW5kZXg9MDt2YXIgQT1wLmV4ZWMoRSksQz0xfWlmKEEpe20mJihoPUFbMV0/QVsxXS5sZW5ndGg6MCk7dz0oeD1BLmluZGV4K2gpKyhBPUFbMF0uc2xpY2UoaCkpLmxlbmd0aDt2YXIgTz1FLnNsaWNlKDAseCksST1FLnNsaWNlKHcpLE49W3YsQ107TyYmKCsrdixTKz1PLmxlbmd0aCxOLnB1c2goTykpO3ZhciBSPW5ldyBzKHUsZj9yLnRva2VuaXplKEEsZik6QSxiLEEsZyk7aWYoTi5wdXNoKFIpLEkmJk4ucHVzaChJKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KHQsTiksMSE9QyYmci5tYXRjaEdyYW1tYXIoZSx0LG4sdixTLCEwLHUpLGkpYnJlYWt9ZWxzZSBpZihpKWJyZWFrfX19fX0sdG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPVtlXSxhPXQucmVzdDtpZihhKXtmb3IodmFyIGkgaW4gYSl0W2ldPWFbaV07ZGVsZXRlIHQucmVzdH1yZXR1cm4gci5tYXRjaEdyYW1tYXIoZSxvLHQsMCwwLCExKSxvfSxob29rczp7YWxsOnt9LGFkZDpmdW5jdGlvbihlLHQpe3ZhciBuPXIuaG9va3MuYWxsO25bZV09bltlXXx8W10sbltlXS5wdXNoKHQpfSxydW46ZnVuY3Rpb24oZSx0KXt2YXIgbj1yLmhvb2tzLmFsbFtlXTtpZihuJiZuLmxlbmd0aClmb3IodmFyIG8sYT0wO289blthKytdOylvKHQpfX19LG89ci5Ub2tlbj1mdW5jdGlvbihlLHQsbixyLG8pe3RoaXMudHlwZT1lLHRoaXMuY29udGVudD10LHRoaXMuYWxpYXM9bix0aGlzLmxlbmd0aD0wfChyfHxcIlwiKS5sZW5ndGgsdGhpcy5ncmVlZHk9ISFvfTtpZihvLnN0cmluZ2lmeT1mdW5jdGlvbihlLHQsbil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoXCJBcnJheVwiPT09ci51dGlsLnR5cGUoZSkpcmV0dXJuIGUubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBvLnN0cmluZ2lmeShuLHQsZSl9KS5qb2luKFwiXCIpO3ZhciBhPXt0eXBlOmUudHlwZSxjb250ZW50Om8uc3RyaW5naWZ5KGUuY29udGVudCx0LG4pLHRhZzpcInNwYW5cIixjbGFzc2VzOltcInRva2VuXCIsZS50eXBlXSxhdHRyaWJ1dGVzOnt9LGxhbmd1YWdlOnQscGFyZW50Om59O2lmKGUuYWxpYXMpe3ZhciBpPVwiQXJyYXlcIj09PXIudXRpbC50eXBlKGUuYWxpYXMpP2UuYWxpYXM6W2UuYWxpYXNdO0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGEuY2xhc3NlcyxpKX1yLmhvb2tzLnJ1bihcIndyYXBcIixhKTt2YXIgbD1PYmplY3Qua2V5cyhhLmF0dHJpYnV0ZXMpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZSsnPVwiJysoYS5hdHRyaWJ1dGVzW2VdfHxcIlwiKS5yZXBsYWNlKC9cIi9nLFwiJnF1b3Q7XCIpKydcIid9KS5qb2luKFwiIFwiKTtyZXR1cm5cIjxcIithLnRhZysnIGNsYXNzPVwiJythLmNsYXNzZXMuam9pbihcIiBcIikrJ1wiJysobD9cIiBcIitsOlwiXCIpK1wiPlwiK2EuY29udGVudCtcIjwvXCIrYS50YWcrXCI+XCJ9LCFuLmRvY3VtZW50KXJldHVybiBuLmFkZEV2ZW50TGlzdGVuZXI/KHIuZGlzYWJsZVdvcmtlck1lc3NhZ2VIYW5kbGVyfHxuLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsZnVuY3Rpb24oZSl7dmFyIHQ9SlNPTi5wYXJzZShlLmRhdGEpLG89dC5sYW5ndWFnZSxhPXQuY29kZSxpPXQuaW1tZWRpYXRlQ2xvc2U7bi5wb3N0TWVzc2FnZShyLmhpZ2hsaWdodChhLHIubGFuZ3VhZ2VzW29dLG8pKSxpJiZuLmNsb3NlKCl9LCExKSxuLlByaXNtKTpuLlByaXNtO3ZhciBhPWRvY3VtZW50LmN1cnJlbnRTY3JpcHR8fFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIikpLnBvcCgpO3JldHVybiBhJiYoci5maWxlbmFtZT1hLnNyYyxyLm1hbnVhbHx8YS5oYXNBdHRyaWJ1dGUoXCJkYXRhLW1hbnVhbFwiKXx8KFwibG9hZGluZ1wiIT09ZG9jdW1lbnQucmVhZHlTdGF0ZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoci5oaWdobGlnaHRBbGwpOndpbmRvdy5zZXRUaW1lb3V0KHIuaGlnaGxpZ2h0QWxsLDE2KTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLHIuaGlnaGxpZ2h0QWxsKSkpLG4uUHJpc219KCk7ZS5leHBvcnRzJiYoZS5leHBvcnRzPXIpLHZvaWQgMCE9PXQmJih0LlByaXNtPXIpfSkuY2FsbCh0aGlzLG4oMjcpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubWFya3VwPXtjb21tZW50Oi88IS0tW1xcc1xcU10qPy0tPi8scHJvbG9nOi88XFw/W1xcc1xcU10rP1xcPz4vLGRvY3R5cGU6LzwhRE9DVFlQRVtcXHNcXFNdKz8+L2ksY2RhdGE6LzwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/XV0+L2ksdGFnOntwYXR0ZXJuOi88XFwvPyg/IVxcZClbXlxccz5cXC89JDwlXSsoPzpcXHMrW15cXHM+XFwvPV0rKD86PSg/OihcInwnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxfFteXFxzJ1wiPj1dKykpPykqXFxzKlxcLz8+L2ksZ3JlZWR5OiEwLGluc2lkZTp7dGFnOntwYXR0ZXJuOi9ePFxcLz9bXlxccz5cXC9dKy9pLGluc2lkZTp7cHVuY3R1YXRpb246L148XFwvPy8sbmFtZXNwYWNlOi9eW15cXHM+XFwvOl0rOi99fSxcImF0dHItdmFsdWVcIjp7cGF0dGVybjovPSg/OihcInwnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxfFteXFxzJ1wiPj1dKykvaSxpbnNpZGU6e3B1bmN0dWF0aW9uOlsvXj0vLHtwYXR0ZXJuOi8oXnxbXlxcXFxdKVtcIiddLyxsb29rYmVoaW5kOiEwfV19fSxwdW5jdHVhdGlvbjovXFwvPz4vLFwiYXR0ci1uYW1lXCI6e3BhdHRlcm46L1teXFxzPlxcL10rLyxpbnNpZGU6e25hbWVzcGFjZTovXlteXFxzPlxcLzpdKzovfX19fSxlbnRpdHk6LyYjP1tcXGRhLXpdezEsOH07L2l9LGUubGFuZ3VhZ2VzLm1hcmt1cC50YWcuaW5zaWRlW1wiYXR0ci12YWx1ZVwiXS5pbnNpZGUuZW50aXR5PWUubGFuZ3VhZ2VzLm1hcmt1cC5lbnRpdHksZS5ob29rcy5hZGQoXCJ3cmFwXCIsZnVuY3Rpb24oZSl7XCJlbnRpdHlcIj09PWUudHlwZSYmKGUuYXR0cmlidXRlcy50aXRsZT1lLmNvbnRlbnQudmFsdWUucmVwbGFjZSgvJmFtcDsvLFwiJlwiKSl9KSxlLmxhbmd1YWdlcy54bWw9ZS5sYW5ndWFnZXMubWFya3VwLGUubGFuZ3VhZ2VzLmh0bWw9ZS5sYW5ndWFnZXMubWFya3VwLGUubGFuZ3VhZ2VzLm1hdGhtbD1lLmxhbmd1YWdlcy5tYXJrdXAsZS5sYW5ndWFnZXMuc3ZnPWUubGFuZ3VhZ2VzLm1hcmt1cH1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibWFya3VwXCIsci5hbGlhc2VzPVtcInhtbFwiLFwiaHRtbFwiLFwibWF0aG1sXCIsXCJzdmdcIl19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmNzcz17Y29tbWVudDovXFwvXFwqW1xcc1xcU10qP1xcKlxcLy8sYXRydWxlOntwYXR0ZXJuOi9AW1xcdy1dKz8uKj8oPzo7fCg/PVxccypcXHspKS9pLGluc2lkZTp7cnVsZTovQFtcXHctXSsvfX0sdXJsOi91cmxcXCgoPzooW1wiJ10pKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMXwuKj8pXFwpL2ksc2VsZWN0b3I6L1tee31cXHNdW157fTtdKj8oPz1cXHMqXFx7KS8sc3RyaW5nOntwYXR0ZXJuOi8oXCJ8JykoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITB9LHByb3BlcnR5Oi9bLV9hLXpcXHhBMC1cXHVGRkZGXVstXFx3XFx4QTAtXFx1RkZGRl0qKD89XFxzKjopL2ksaW1wb3J0YW50Oi9cXEIhaW1wb3J0YW50XFxiL2ksZnVuY3Rpb246L1stYS16MC05XSsoPz1cXCgpL2kscHVuY3R1YXRpb246L1soKXt9OzpdL30sZS5sYW5ndWFnZXMuY3NzLmF0cnVsZS5pbnNpZGUucmVzdD1lLmxhbmd1YWdlcy5jc3MsZS5sYW5ndWFnZXMubWFya3VwJiYoZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwibWFya3VwXCIsXCJ0YWdcIix7c3R5bGU6e3BhdHRlcm46Lyg8c3R5bGVbXFxzXFxTXSo/PilbXFxzXFxTXSo/KD89PFxcL3N0eWxlPikvaSxsb29rYmVoaW5kOiEwLGluc2lkZTplLmxhbmd1YWdlcy5jc3MsYWxpYXM6XCJsYW5ndWFnZS1jc3NcIixncmVlZHk6ITB9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiaW5zaWRlXCIsXCJhdHRyLXZhbHVlXCIse1wic3R5bGUtYXR0clwiOntwYXR0ZXJuOi9cXHMqc3R5bGU9KFwifCcpKD86XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKSpcXDEvaSxpbnNpZGU6e1wiYXR0ci1uYW1lXCI6e3BhdHRlcm46L15cXHMqc3R5bGUvaSxpbnNpZGU6ZS5sYW5ndWFnZXMubWFya3VwLnRhZy5pbnNpZGV9LHB1bmN0dWF0aW9uOi9eXFxzKj1cXHMqWydcIl18WydcIl1cXHMqJC8sXCJhdHRyLXZhbHVlXCI6e3BhdHRlcm46Ly4rL2ksaW5zaWRlOmUubGFuZ3VhZ2VzLmNzc319LGFsaWFzOlwibGFuZ3VhZ2UtY3NzXCJ9fSxlLmxhbmd1YWdlcy5tYXJrdXAudGFnKSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImNzc1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuY2xpa2U9e2NvbW1lbnQ6W3twYXR0ZXJuOi8oXnxbXlxcXFxdKVxcL1xcKltcXHNcXFNdKj8oPzpcXCpcXC98JCkvLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXnxbXlxcXFw6XSlcXC9cXC8uKi8sbG9va2JlaGluZDohMCxncmVlZHk6ITB9XSxzdHJpbmc6e3BhdHRlcm46LyhbXCInXSkoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITB9LFwiY2xhc3MtbmFtZVwiOntwYXR0ZXJuOi8oKD86XFxiKD86Y2xhc3N8aW50ZXJmYWNlfGV4dGVuZHN8aW1wbGVtZW50c3x0cmFpdHxpbnN0YW5jZW9mfG5ldylcXHMrKXwoPzpjYXRjaFxccytcXCgpKVtcXHcuXFxcXF0rL2ksbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9bLlxcXFxdL319LGtleXdvcmQ6L1xcYig/OmlmfGVsc2V8d2hpbGV8ZG98Zm9yfHJldHVybnxpbnxpbnN0YW5jZW9mfGZ1bmN0aW9ufG5ld3x0cnl8dGhyb3d8Y2F0Y2h8ZmluYWxseXxudWxsfGJyZWFrfGNvbnRpbnVlKVxcYi8sYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvLGZ1bmN0aW9uOi9bYS16MC05X10rKD89XFwoKS9pLG51bWJlcjovXFxiMHhbXFxkYS1mXStcXGJ8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86ZVsrLV0/XFxkKyk/L2ksb3BlcmF0b3I6Ly0tP3xcXCtcXCs/fCE9Pz0/fDw9P3w+PT98PT0/PT98JiY/fFxcfFxcfD98XFw/fFxcKnxcXC98fnxcXF58JS8scHVuY3R1YXRpb246L1t7fVtcXF07KCksLjpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImNsaWtlXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5qYXZhc2NyaXB0PWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2tleXdvcmQ6L1xcYig/OmFzfGFzeW5jfGF3YWl0fGJyZWFrfGNhc2V8Y2F0Y2h8Y2xhc3N8Y29uc3R8Y29udGludWV8ZGVidWdnZXJ8ZGVmYXVsdHxkZWxldGV8ZG98ZWxzZXxlbnVtfGV4cG9ydHxleHRlbmRzfGZpbmFsbHl8Zm9yfGZyb218ZnVuY3Rpb258Z2V0fGlmfGltcGxlbWVudHN8aW1wb3J0fGlufGluc3RhbmNlb2Z8aW50ZXJmYWNlfGxldHxuZXd8bnVsbHxvZnxwYWNrYWdlfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZXR1cm58c2V0fHN0YXRpY3xzdXBlcnxzd2l0Y2h8dGhpc3x0aHJvd3x0cnl8dHlwZW9mfHZhcnx2b2lkfHdoaWxlfHdpdGh8eWllbGQpXFxiLyxudW1iZXI6L1xcYig/OjBbeFhdW1xcZEEtRmEtZl0rfDBbYkJdWzAxXSt8MFtvT11bMC03XSt8TmFOfEluZmluaXR5KVxcYnwoPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzpbRWVdWystXT9cXGQrKT8vLGZ1bmN0aW9uOi9bXyRhLXpcXHhBMC1cXHVGRkZGXVskXFx3XFx4QTAtXFx1RkZGRl0qKD89XFxzKlxcKCkvaSxvcGVyYXRvcjovLVstPV0/fFxcK1srPV0/fCE9Pz0/fDw8Pz0/fD4+Pz4/PT98PSg/Oj09P3w+KT98JlsmPV0/fFxcfFt8PV0/fFxcKlxcKj89P3xcXC89P3x+fFxcXj0/fCU9P3xcXD98XFwuezN9L30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImphdmFzY3JpcHRcIixcImtleXdvcmRcIix7cmVnZXg6e3BhdHRlcm46LygoPzpefFteJFxcd1xceEEwLVxcdUZGRkYuXCInXFxdKVxcc10pXFxzKilcXC8oXFxbW15cXF1cXHJcXG5dK118XFxcXC58W15cXC9cXFxcXFxbXFxyXFxuXSkrXFwvW2dpbXl1XXswLDV9KD89XFxzKigkfFtcXHJcXG4sLjt9KVxcXV0pKS8sbG9va2JlaGluZDohMCxncmVlZHk6ITB9LFwiZnVuY3Rpb24tdmFyaWFibGVcIjp7cGF0dGVybjovW18kYS16XFx4QTAtXFx1RkZGRl1bJFxcd1xceEEwLVxcdUZGRkZdKig/PVxccyo9XFxzKig/OmZ1bmN0aW9uXFxifCg/OlxcKFteKCldKlxcKXxbXyRhLXpcXHhBMC1cXHVGRkZGXVskXFx3XFx4QTAtXFx1RkZGRl0qKVxccyo9PikpL2ksYWxpYXM6XCJmdW5jdGlvblwifSxjb25zdGFudDovXFxiW0EtWl1bQS1aXFxkX10qXFxiL30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImphdmFzY3JpcHRcIixcInN0cmluZ1wiLHtcInRlbXBsYXRlLXN0cmluZ1wiOntwYXR0ZXJuOi9gKD86XFxcXFtcXHNcXFNdfFxcJHtbXn1dK318W15cXFxcYF0pKmAvLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246e3BhdHRlcm46L1xcJHtbXn1dK30vLGluc2lkZTp7XCJpbnRlcnBvbGF0aW9uLXB1bmN0dWF0aW9uXCI6e3BhdHRlcm46L15cXCR7fH0kLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LHJlc3Q6bnVsbH19LHN0cmluZzovW1xcc1xcU10rL319fSksZS5sYW5ndWFnZXMuamF2YXNjcmlwdFtcInRlbXBsYXRlLXN0cmluZ1wiXS5pbnNpZGUuaW50ZXJwb2xhdGlvbi5pbnNpZGUucmVzdD1lLmxhbmd1YWdlcy5qYXZhc2NyaXB0LGUubGFuZ3VhZ2VzLm1hcmt1cCYmZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwibWFya3VwXCIsXCJ0YWdcIix7c2NyaXB0OntwYXR0ZXJuOi8oPHNjcmlwdFtcXHNcXFNdKj8+KVtcXHNcXFNdKj8oPz08XFwvc2NyaXB0PikvaSxsb29rYmVoaW5kOiEwLGluc2lkZTplLmxhbmd1YWdlcy5qYXZhc2NyaXB0LGFsaWFzOlwibGFuZ3VhZ2UtamF2YXNjcmlwdFwiLGdyZWVkeTohMH19KSxlLmxhbmd1YWdlcy5qcz1lLmxhbmd1YWdlcy5qYXZhc2NyaXB0fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJqYXZhc2NyaXB0XCIsci5hbGlhc2VzPVtcImpzXCJdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5hYmFwPXtjb21tZW50Oi9eXFwqLiovbSxzdHJpbmc6LyhgfCcpKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS9tLFwic3RyaW5nLXRlbXBsYXRlXCI6e3BhdHRlcm46LyhbfH1dKSg/OlxcXFwufFteXFxcXHx7XFxyXFxuXSkqKD89W3x7XSkvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzdHJpbmdcIn0sXCJlb2wtY29tbWVudFwiOntwYXR0ZXJuOi8oXnxcXHMpXCIuKi9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJjb21tZW50XCJ9LGtleXdvcmQ6e3BhdHRlcm46LyhcXHN8XFwufF4pKD86U0NJRU5USUZJQ19XSVRIX0xFQURJTkdfWkVST3xTQ0FMRV9QUkVTRVJWSU5HX1NDSUVOVElGSUN8Uk1DX0NPTU1VTklDQVRJT05fRkFJTFVSRXxFTkQtRU5IQU5DRU1FTlQtU0VDVElPTnxNVUxUSVBMWS1DT1JSRVNQT05ESU5HfFNVQlRSQUNULUNPUlJFU1BPTkRJTkd8VkVSSUZJQ0FUSU9OLU1FU1NBR0V8RElWSURFLUNPUlJFU1BPTkRJTkd8RU5IQU5DRU1FTlQtU0VDVElPTnxDVVJSRU5DWV9DT05WRVJTSU9OfFJNQ19TWVNURU1fRkFJTFVSRXxTVEFSVC1PRi1TRUxFQ1RJT058TU9WRS1DT1JSRVNQT05ESU5HfFJNQ19JTlZBTElEX1NUQVRVU3xDVVNUT01FUi1GVU5DVElPTnxFTkQtT0YtREVGSU5JVElPTnxFTkhBTkNFTUVOVC1QT0lOVHxTWVNURU0tRVhDRVBUSU9OU3xBREQtQ09SUkVTUE9ORElOR3xTQ0FMRV9QUkVTRVJWSU5HfFNFTEVDVElPTi1TQ1JFRU58Q1VSU09SLVNFTEVDVElPTnxFTkQtT0YtU0VMRUNUSU9OfExPQUQtT0YtUFJPR1JBTXxTQ1JPTEwtQk9VTkRBUll8U0VMRUNUSU9OLVRBQkxFfEVYQ0VQVElPTi1UQUJMRXxJTVBMRU1FTlRBVElPTlN8UEFSQU1FVEVSLVRBQkxFfFJJR0hULUpVU1RJRklFRHxVTklUX0NPTlZFUlNJT058QVVUSE9SSVRZLUNIRUNLfExJU1QtUFJPQ0VTU0lOR3xTSUdOX0FTX1BPU1RGSVh8Q09MX0JBQ0tHUk9VTkR8SU1QTEVNRU5UQVRJT058SU5URVJGQUNFLVBPT0x8VFJBTlNGT1JNQVRJT058SURFTlRJRklDQVRJT058RU5ERU5IQU5DRU1FTlR8TElORS1TRUxFQ1RJT058SU5JVElBTElaQVRJT058TEVGVC1KVVNUSUZJRUR8U0VMRUNULU9QVElPTlN8U0VMRUNUSU9OLVNFVFN8Q09NTVVOSUNBVElPTnxDT1JSRVNQT05ESU5HfERFQ0lNQUxfU0hJRlR8UFJJTlQtQ09OVFJPTHxWQUxVRS1SRVFVRVNUfENIQUlOLVJFUVVFU1R8RlVOQ1RJT04tUE9PTHxGSUVMRC1TWU1CT0xTfEZVTkNUSU9OQUxJVFl8SU5WRVJURUQtREFURXxTRUxFQ1RJT04tU0VUfENMQVNTLU1FVEhPRFN8T1VUUFVULUxFTkdUSHxDTEFTUy1DT0RJTkd8Q09MX05FR0FUSVZFfEVSUk9STUVTU0FHRXxGSUVMRC1HUk9VUFN8SEVMUC1SRVFVRVNUfE5PLUVYVEVOU0lPTnxOTy1UT1BPRlBBR0V8UkVERUZJTklUSU9OfERJU1BMQVktTU9ERXxFTkRJTlRFUkZBQ0V8RVhJVC1DT01NQU5EfEZJRUxELVNZTUJPTHxOTy1TQ1JPTExJTkd8U0hPUlREVU1QLUlEfEFDQ0VTU1BPTElDWXxDTEFTUy1FVkVOVFN8Q09MX1BPU0lUSVZFfERFQ0xBUkFUSU9OU3xFTkhBTkNFTUVOVFN8RklMVEVSLVRBQkxFfFNXSVRDSFNUQVRFU3xTWU5UQVgtQ0hFQ0t8VFJBTlNQT1JUSU5HfEFTWU5DSFJPTk9VU3xTWU5UQVgtVFJBQ0V8VE9LRU5JWkFUSU9OfFVTRVItQ09NTUFORHxXSVRILUhFQURJTkd8QUJBUC1TT1VSQ0V8QlJFQUstUE9JTlR8Q0hBSU4tSU5QVVR8Q09NUFJFU1NJT058RklYRUQtUE9JTlR8TkVXLVNFQ1RJT058Tk9OLVVOSUNPREV8T0NDVVJSRU5DRVN8UkVTUE9OU0lCTEV8U1lTVEVNLUNBTEx8VFJBQ0UtVEFCTEV8QUJCUkVWSUFURUR8Q0hBUi1UTy1IRVh8RU5ELU9GLUZJTEV8RU5ERlVOQ1RJT058RU5WSVJPTk1FTlR8QVNTT0NJQVRJT058Q09MX0hFQURJTkd8RURJVE9SLUNBTEx8RU5ELU9GLVBBR0V8RU5HSU5FRVJJTkd8SU1QTEVNRU5URUR8SU5URU5TSUZJRUR8UkFESU9CVVRUT058U1lTVEVNLUVYSVR8VE9QLU9GLVBBR0V8VFJBTlNBQ1RJT058QVBQTElDQVRJT058Q09OQ0FURU5BVEV8REVTVElOQVRJT058RU5IQU5DRU1FTlR8SU1NRURJQVRFTFl8Tk8tR1JPVVBJTkd8UFJFQ09NUElMRUR8UkVQTEFDRU1FTlR8VElUTEUtTElORVN8QUNUSVZBVElPTnxCWVRFLU9SREVSfENMQVNTLVBPT0x8Q09OTkVDVElPTnxDT05WRVJTSU9OfERFRklOSVRJT058REVQQVJUTUVOVHxFWFBJUkFUSU9OfElOSEVSSVRJTkd8TUVTU0FHRS1JRHxOTy1IRUFESU5HfFBFUkZPUk1JTkd8UVVFVUUtT05MWXxSSUdIVFNQQUNFfFNDSUVOVElGSUN8U1RBVFVTSU5GT3xTVFJVQ1RVUkVTfFNZTkNQT0lOVFN8V0lUSC1USVRMRXxBVFRSSUJVVEVTfEJPVU5EQVJJRVN8Q0xBU1MtREFUQXxDT0xfTk9STUFMfEREXFwvTU1cXC9ZWVlZfERFU0NFTkRJTkd8SU5URVJGQUNFU3xMSU5FLUNPVU5UfE1NXFwvRERcXC9ZWVlZfE5PTi1VTklRVUV8UFJFU0VSVklOR3xTRUxFQ1RJT05TfFNUQVRFTUVOVFN8U1VCUk9VVElORXxUUlVOQ0FUSU9OfFRZUEUtUE9PTFN8QVJJVEhNRVRJQ3xCQUNLR1JPVU5EfEVORFBST1ZJREV8RVhDRVBUSU9OU3xJREVOVElGSUVSfElOREVYLUxJTkV8T0JMSUdBVE9SWXxQQVJBTUVURVJTfFBFUkNFTlRBR0V8UFVTSEJVVFRPTnxSRVNPTFVUSU9OfENPTVBPTkVOVFN8REVBTExPQ0FURXxESVNDT05ORUNUfERVUExJQ0FURVN8RklSU1QtTElORXxIRUFELUxJTkVTfE5PLURJU1BMQVl8T0NDVVJSRU5DRXxSRVNQRUNUSU5HfFJFVFVSTkNPREV8U1VCTUFUQ0hFU3xUUkFDRS1GSUxFfEFTQ0VORElOR3xCWVBBU1NJTkd8RU5ETU9EVUxFfEVYQ0VQVElPTnxFWENMVURJTkd8RVhQT1JUSU5HfElOQ1JFTUVOVHxNQVRDSENPREV8UEFSQU1FVEVSfFBBUlRJQUxMWXxQUkVGRVJSRUR8UkVGRVJFTkNFfFJFUExBQ0lOR3xSRVRVUk5JTkd8U0VMRUNUSU9OfFNFUEFSQVRFRHxTUEVDSUZJRUR8U1RBVEVNRU5UfFRJTUVTVEFNUHxUWVBFLVBPT0x8QUNDRVBUSU5HfEFQUEVOREFHRXxBU1NJR05JTkd8Q09MX0dST1VQfENPTVBBUklOR3xDT05TVEFOVFN8REFOR0VST1VTfElNUE9SVElOR3xJTlNUQU5DRVN8TEVGVFNQQUNFfExPRy1QT0lOVHxRVUlDS0lORk98UkVBRC1PTkxZfFNDUk9MTElOR3xTUUxTQ1JJUFR8U1RFUC1MT09QfFRPUC1MSU5FU3xUUkFOU0xBVEV8QVBQRU5ESU5HfEFVVEhPUklUWXxDSEFSQUNURVJ8Q09NUE9ORU5UfENPTkRJVElPTnxESVJFQ1RPUll8RFVQTElDQVRFfE1FU1NBR0lOR3xSRUNFSVZJTkd8U1VCU0NSRUVOfEFDQ09SRElOR3xDT0xfVE9UQUx8RU5ELUxJTkVTfEVORE1FVEhPRHxFTkRTRUxFQ1R8RVhQQU5ESU5HfEVYVEVOU0lPTnxJTkNMVURJTkd8SU5GT1RZUEVTfElOVEVSRkFDRXxJTlRFUlZBTFN8TElORS1TSVpFfFBGLVNUQVRVU3xQUk9DRURVUkV8UFJPVEVDVEVEfFJFUVVFU1RFRHxSRVNVTUFCTEV8UklHSFRQTFVTfFNBUC1TUE9PTHxTRUNPTkRBUll8U1RSVUNUVVJFfFNVQlNUUklOR3xUQUJMRVZJRVd8TlVNT0ZDSEFSfEFESkFDRU5UfEFOQUxZU0lTfEFTU0lHTkVEfEJBQ0tXQVJEfENIQU5ORUxTfENIRUNLQk9YfENPTlRJTlVFfENSSVRJQ0FMfERBVEFJTkZPfEREXFwvTU1cXC9ZWXxEVVJBVElPTnxFTkNPRElOR3xFTkRDTEFTU3xGVU5DVElPTnxMRUZUUExVU3xMSU5FRkVFRHxNTVxcL0REXFwvWVl8T1ZFUkZMT1d8UkVDRUlWRUR8U0tJUFBJTkd8U09SVEFCTEV8U1RBTkRBUkR8U1VCVFJBQ1R8U1VQUFJFU1N8VEFCU1RSSVB8VElUTEVCQVJ8VFJVTkNBVEV8VU5BU1NJR058V0hFTkVWRVJ8QU5BTFlaRVJ8Q09BTEVTQ0V8Q09NTUVOVFN8Q09OREVOU0V8REVDSU1BTFN8REVGRVJSRUR8RU5EV0hJTEV8RVhQTElDSVR8S0VZV09SRFN8TUVTU0FHRVN8UE9TSVRJT058UFJJT1JJVFl8UkVDRUlWRVJ8UkVOQU1JTkd8VElNRVpPTkV8VFJBSUxJTkd8QUxMT0NBVEV8Q0VOVEVSRUR8Q0lSQ1VMQVJ8Q09OVFJPTFN8Q1VSUkVOQ1l8REVMRVRJTkd8REVTQ1JJQkV8RElTVEFOQ0V8RU5EQ0FUQ0h8RVhQT05FTlR8RVhURU5ERUR8R0VORVJBVEV8SUdOT1JJTkd8SU5DTFVERVN8SU5URVJOQUx8TUFKT1ItSUR8TU9ESUZJRVJ8TkVXLUxJTkV8T1BUSU9OQUx8UFJPUEVSVFl8Uk9MTEJBQ0t8U1RBUlRJTkd8U1VQUExJRUR8QUJTVFJBQ1R8Q0hBTkdJTkd8Q09OVEVYVFN8Q1JFQVRJTkd8Q1VTVE9NRVJ8REFUQUJBU0V8REFZTElHSFR8REVGSU5JTkd8RElTVElOQ1R8RElWSVNJT058RU5BQkxJTkd8RU5EQ0hBSU58RVNDQVBJTkd8SEFSTUxFU1N8SU1QTElDSVR8SU5BQ1RJVkV8TEFOR1VBR0V8TUlOT1ItSUR8TVVMVElQTFl8TkVXLVBBR0V8Tk8tVElUTEV8UE9TX0hJR0h8U0VQQVJBVEV8VEVYVFBPT0x8VFJBTlNGRVJ8U0VMRUNUT1J8REJNQVhMRU58SVRFUkFUT1J8U0VMRUNUT1J8QVJDSElWRXxCSVQtWE9SfEJZVEUtQ098Q09MTEVDVHxDT01NRU5UfENVUlJFTlR8REVGQVVMVHxESVNQTEFZfEVOREZPUk18RVhUUkFDVHxMRUFESU5HfExJU1RCT1h8TE9DQVRPUnxNRU1CRVJTfE1FVEhPRFN8TkVTVElOR3xQT1NfTE9XfFBST0NFU1N8UFJPVklERXxSQUlTSU5HfFJFU0VSVkV8U0VDT05EU3xTVU1NQVJZfFZJU0lCTEV8QkVUV0VFTnxCSVQtQU5EfEJZVEUtQ1N8Q0xFQU5VUHxDT01QVVRFfENPTlRST0x8Q09OVkVSVHxEQVRBU0VUfEVORENBU0V8Rk9SV0FSRHxIRUFERVJTfEhPVFNQT1R8SU5DTFVERXxJTlZFUlNFfEtFRVBJTkd8Tk8tWkVST3xPQkpFQ1RTfE9WRVJMQVl8UEFERElOR3xQQVRURVJOfFBST0dSQU18UkVGUkVTSHxTRUNUSU9OfFNVTU1JTkd8VEVTVElOR3xWRVJTSU9OfFdJTkRPV1N8V0lUSE9VVHxCSVQtTk9UfEJZVEUtQ0F8QllURS1OQXxDQVNUSU5HfENPTlRFWFR8Q09VTlRSWXxEWU5BTUlDfEVOQUJMRUR8RU5ETE9PUHxFWEVDVVRFfEZSSUVORFN8SEFORExFUnxIRUFESU5HfElOSVRJQUx8XFwqLUlOUFVUfExPR0ZJTEV8TUFYSU1VTXxNSU5JTVVNfE5PLUdBUFN8Tk8tU0lHTnxQUkFHTUFTfFBSSU1BUll8UFJJVkFURXxSRURVQ0VEfFJFUExBQ0V8UkVRVUVTVHxSRVNVTFRTfFVOSUNPREV8V0FSTklOR3xBTElBU0VTfEJZVEUtQ058QllURS1OU3xDQUxMSU5HfENPTF9LRVl8Q09MVU1OU3xDT05ORUNUfEVOREVYRUN8RU5UUklFU3xFWENMVURFfEZJTFRFUlN8RlVSVEhFUnxIRUxQLUlEfExPR0lDQUx8TUFQUElOR3xNRVNTQUdFfE5BTUVUQUJ8T1BUSU9OU3xQQUNLQUdFfFBFUkZPUk18UkVDRUlWRXxTVEFUSUNTfFZBUllJTkd8QklORElOR3xDSEFSTEVOfEdSRUFURVJ8WFNUUkxFTnxBQ0NFUFR8QVBQRU5EfERFVEFJTHxFTFNFSUZ8RU5ESU5HfEVORFRSWXxGT1JNQVR8RlJBTUVTfEdJVklOR3xIQVNIRUR8SEVBREVSfElNUE9SVHxJTlNFUlR8TUFSR0lOfE1PRFVMRXxOQVRJVkV8T0JKRUNUfE9GRlNFVHxSRU1PVEV8UkVTVU1FfFNBVklOR3xTSU1QTEV8U1VCTUlUfFRBQkJFRHxUT0tFTlN8VU5JUVVFfFVOUEFDS3xVUERBVEV8V0lORE9XfFlFTExPV3xBQ1RVQUx8QVNQRUNUfENFTlRFUnxDVVJTT1J8REVMRVRFfERJQUxPR3xESVZJREV8RFVSSU5HfEVSUk9SU3xFVkVOVFN8RVhURU5EfEZJTFRFUnxIQU5ETEV8SEFWSU5HfElHTk9SRXxMSVRUTEV8TUVNT1JZfE5PLUdBUHxPQ0NVUlN8T1BUSU9OfFBFUlNPTnxQTEFDRVN8UFVCTElDfFJFRFVDRXxSRVBPUlR8UkVTVUxUfFNJTkdMRXxTT1JURUR8U1dJVENIfFNZTlRBWHxUQVJHRVR8VkFMVUVTfFdSSVRFUnxBU1NFUlR8QkxPQ0tTfEJPVU5EU3xCVUZGRVJ8Q0hBTkdFfENPTFVNTnxDT01NSVR8Q09OQ0FUfENPUElFU3xDUkVBVEV8RERNTVlZfERFRklORXxFTkRJQU58RVNDQVBFfEVYUEFORHxLRVJORUx8TEFZT1VUfExFR0FDWXxMRVZFTFN8TU1ERFlZfE5VTUJFUnxPVVRQVVR8UkFOR0VTfFJFQURFUnxSRVRVUk58U0NSRUVOfFNFQVJDSHxTRUxFQ1R8U0hBUkVEfFNPVVJDRXxTVEFCTEV8U1RBVElDfFNVQktFWXxTVUZGSVh8VEFCTEVTfFVOV0lORHxZWU1NRER8QVNTSUdOfEJBQ0tVUHxCRUZPUkV8QklOQVJZfEJJVC1PUnxCTEFOS1N8Q0xJRU5UfENPRElOR3xDT01NT058REVNQU5EfERZTlBST3xFWENFUFR8RVhJU1RTfEVYUE9SVHxGSUVMRFN8R0xPQkFMfEdST1VQU3xMRU5HVEh8TE9DQUxFfE1FRElVTXxNRVRIT0R8TU9ESUZZfE5FU1RFRHxPVEhFUlN8UkVKRUNUfFNDUk9MTHxTVVBQTFl8U1lNQk9MfEVOREZPUnxTVFJMRU58QUxJR058QkVHSU58Qk9VTkR8RU5EQVR8RU5UUll8RVZFTlR8RklOQUx8RkxVU0h8R1JBTlR8SU5ORVJ8U0hPUlR8VVNJTkd8V1JJVEV8QUZURVJ8QkxBQ0t8QkxPQ0t8Q0xPQ0t8Q09MT1J8Q09VTlR8RFVNTVl8RU1QVFl8RU5ERE98RU5ET058R1JFRU58SU5ERVh8SU5PVVR8TEVBVkV8TEVWRUx8TElORVN8TU9ESUZ8T1JERVJ8T1VURVJ8UkFOR0V8UkVTRVR8UkVUUll8UklHSFR8U01BUlR8U1BMSVR8U1RZTEV8VEFCTEV8VEhST1d8VU5ERVJ8VU5USUx8VVBQRVJ8VVRGLTh8V0hFUkV8QUxJQVN8QkxBTkt8Q0xFQVJ8Q0xPU0V8RVhBQ1R8RkVUQ0h8RklSU1R8Rk9VTkR8R1JPVVB8TExBTkd8TE9DQUx8T1RIRVJ8UkVHRVh8U1BPT0x8VElUTEV8VFlQRVN8VkFMSUR8V0hJTEV8QUxQSEF8Qk9YRUR8Q0FUQ0h8Q0hBSU58Q0hFQ0t8Q0xBU1N8Q09WRVJ8RU5ESUZ8RVFVSVZ8RklFTER8RkxPT1J8RlJBTUV8SU5QVVR8TE9XRVJ8TUFUQ0h8Tk9ERVN8UEFHRVN8UFJJTlR8UkFJU0V8Uk9VTkR8U0hJRlR8U1BBQ0V8U1BPVFN8U1RBTVB8U1RBVEV8VEFTS1N8VElNRVN8VFJNQUN8VUxJTkV8VU5JT058VkFMVUV8V0lEVEh8RVFVQUx8TE9HMTB8VFJVTkN8QkxPQnxDQVNFfENFSUx8Q0xPQnxDT05EfEVYSVR8RklMRXxHQVBTfEhPTER8SU5DTHxJTlRPfEtFRVB8S0VZU3xMQVNUfExJTkV8TE9OR3xMUEFEfE1BSUx8TU9ERXxPUEVOfFBJTkt8UkVBRHxST1dTfFRFU1R8VEhFTnxaRVJPfEFSRUF8QkFDS3xCQURJfEJZVEV8Q0FTVHxFRElUfEVYRUN8RkFJTHxGSU5EfEZLRVF8Rk9OVHxGUkVFfEdLRVF8SElERXxJTklUfElUTk98TEFURXxMT09QfE1BSU58TUFSS3xNT1ZFfE5FWFR8TlVMTHxSSVNLfFJPTEV8VU5JVHxXQUlUfFpPTkV8QkFTRXxDQUxMfENPREV8REFUQXxEQVRFfEZLR0V8R0tHRXxISUdIfEtJTkR8TEVGVHxMSVNUfE1BU0t8TUVTSHxOQU1FfE5PREV8UEFDS3xQQUdFfFBPT0x8U0VORHxTSUdOfFNJWkV8U09NRXxTVE9QfFRBU0t8VEVYVHxUSU1FfFVTRVJ8VkFSWXxXSVRIfFdPUkR8QkxVRXxDT05WfENPUFl8REVFUHxFTFNFfEZPUk18RlJPTXxISU5UfElDT058Sk9JTnxMSUtFfExPQUR8T05MWXxQQVJUfFNDQU58U0tJUHxTT1JUfFRZUEV8VU5JWHxWSUVXfFdIRU58V09SS3xBQ09TfEFTSU58QVRBTnxDT1NIfEVBQ0h8RlJBQ3xMRVNTfFJUVEl8U0lOSHxTUVJUfFRBTkh8QVZHfEJJVHxESVZ8SVNPfExFVHxPVVR8UEFEfFNRTHxBTEx8Q0lffENQSXxFTkR8TE9CfExQSXxNQVh8TUlOfE5FV3xPTEV8UlVOfFNFVHxcXD9UT3xZRVN8QUJTfEFERHxBTkR8QklHfEZPUnxIREJ8Sk9CfExPV3xOT1R8U0FQfFRSWXxWSUF8WE1MfEFOWXxHRVR8SURTfEtFWXxNT0R8T0ZGfFBVVHxSQVd8UkVEfFJFRnxTVU18VEFCfFhTRHxDTlR8Q09TfEVYUHxMT0d8U0lOfFRBTnxYT1J8QVR8Q098Q1B8RE98R1R8SUR8SUZ8TlN8T1J8QlR8Q0F8Q1N8R0V8TkF8TkJ8RVF8SU58TFR8TkV8Tk98T0Z8T058UEZ8VE98QVN8Qll8Q058SVN8TEV8TlB8VVB8RXxJfE18T3xafEN8WClcXGIvaSxsb29rYmVoaW5kOiEwfSxudW1iZXI6L1xcYlxcZCtcXGIvLG9wZXJhdG9yOntwYXR0ZXJuOi8oXFxzKSg/OlxcKlxcKj98PFs9Pl0/fD49P3xcXD89fFstK1xcLz1dKSg/PVxccykvLGxvb2tiZWhpbmQ6ITB9LFwic3RyaW5nLW9wZXJhdG9yXCI6e3BhdHRlcm46LyhcXHMpJiY/KD89XFxzKS8sbG9va2JlaGluZDohMCxhbGlhczpcImtleXdvcmRcIn0sXCJ0b2tlbi1vcGVyYXRvclwiOlt7cGF0dGVybjovKFxcdykoPzotPj98PT58W358e31dKSg/PVxcdykvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJwdW5jdHVhdGlvblwifSx7cGF0dGVybjovW3x7fV0vLGFsaWFzOlwicHVuY3R1YXRpb25cIn1dLHB1bmN0dWF0aW9uOi9bLC46KCldL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImFiYXBcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmFjdGlvbnNjcmlwdD1lLmxhbmd1YWdlcy5leHRlbmQoXCJqYXZhc2NyaXB0XCIse2tleXdvcmQ6L1xcYig/OmFzfGJyZWFrfGNhc2V8Y2F0Y2h8Y2xhc3N8Y29uc3R8ZGVmYXVsdHxkZWxldGV8ZG98ZWxzZXxleHRlbmRzfGZpbmFsbHl8Zm9yfGZ1bmN0aW9ufGlmfGltcGxlbWVudHN8aW1wb3J0fGlufGluc3RhbmNlb2Z8aW50ZXJmYWNlfGludGVybmFsfGlzfG5hdGl2ZXxuZXd8bnVsbHxwYWNrYWdlfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZXR1cm58c3VwZXJ8c3dpdGNofHRoaXN8dGhyb3d8dHJ5fHR5cGVvZnx1c2V8dmFyfHZvaWR8d2hpbGV8d2l0aHxkeW5hbWljfGVhY2h8ZmluYWx8Z2V0fGluY2x1ZGV8bmFtZXNwYWNlfG5hdGl2ZXxvdmVycmlkZXxzZXR8c3RhdGljKVxcYi8sb3BlcmF0b3I6L1xcK1xcK3wtLXwoPzpbK1xcLSpcXC8lXl18JiY/fFxcfFxcfD98PDw/fD4+Pz4/fFshPV09Pyk9P3xbfj9AXS99KSxlLmxhbmd1YWdlcy5hY3Rpb25zY3JpcHRbXCJjbGFzcy1uYW1lXCJdLmFsaWFzPVwiZnVuY3Rpb25cIixlLmxhbmd1YWdlcy5tYXJrdXAmJmUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImFjdGlvbnNjcmlwdFwiLFwic3RyaW5nXCIse3htbDp7cGF0dGVybjovKF58W14uXSk8XFwvP1xcdysoPzpcXHMrW15cXHM+XFwvPV0rPShcInwnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDIpW15cXFxcXSkqXFwyKSpcXHMqXFwvPz4vLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntyZXN0OmUubGFuZ3VhZ2VzLm1hcmt1cH19fSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImFjdGlvbnNjcmlwdFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuYWRhPXtjb21tZW50Oi8tLS4qLyxzdHJpbmc6L1wiKD86XCJcInxbXlwiXFxyXFxmXFxuXSkqXCIvaSxudW1iZXI6W3twYXR0ZXJuOi9cXGJcXGQoPzpfP1xcZCkqI1tcXGRBLUZdKD86Xz9bXFxkQS1GXSkqKD86XFwuW1xcZEEtRl0oPzpfP1tcXGRBLUZdKSopPyMoPzpFWystXT9cXGQoPzpfP1xcZCkqKT8vaX0se3BhdHRlcm46L1xcYlxcZCg/Ol8/XFxkKSooPzpcXC5cXGQoPzpfP1xcZCkqKT8oPzpFWystXT9cXGQoPzpfP1xcZCkqKT9cXGIvaX1dLFwiYXR0ci1uYW1lXCI6L1xcYidcXHcrL2ksa2V5d29yZDovXFxiKD86YWJvcnR8YWJzfGFic3RyYWN0fGFjY2VwdHxhY2Nlc3N8YWxpYXNlZHxhbGx8YW5kfGFycmF5fGF0fGJlZ2lufGJvZHl8Y2FzZXxjb25zdGFudHxkZWNsYXJlfGRlbGF5fGRlbHRhfGRpZ2l0c3xkb3xlbHNlfG5ld3xyZXR1cm58ZWxzaWZ8ZW5kfGVudHJ5fGV4Y2VwdGlvbnxleGl0fGZvcnxmdW5jdGlvbnxnZW5lcmljfGdvdG98aWZ8aW58aW50ZXJmYWNlfGlzfGxpbWl0ZWR8bG9vcHxtb2R8bm90fG51bGx8b2Z8b3RoZXJzfG91dHxvdmVycmlkaW5nfHBhY2thZ2V8cHJhZ21hfHByaXZhdGV8cHJvY2VkdXJlfHByb3RlY3RlZHxyYWlzZXxyYW5nZXxyZWNvcmR8cmVtfHJlbmFtZXN8cmVxdWV1ZXxyZXZlcnNlfHNlbGVjdHxzZXBhcmF0ZXxzb21lfHN1YnR5cGV8c3luY2hyb25pemVkfHRhZ2dlZHx0YXNrfHRlcm1pbmF0ZXx0aGVufHR5cGV8dW50aWx8dXNlfHdoZW58d2hpbGV8d2l0aHx4b3IpXFxiL2ksYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvaSxvcGVyYXRvcjovPFs9Pl0/fD49P3w9Pj98Oj18XFwvPT98XFwqXFwqP3xbJistXS8scHVuY3R1YXRpb246L1xcLlxcLj98Wyw7KCk6XS8sY2hhcjovJy4nLyx2YXJpYWJsZTovXFxiW2Etel0oPzpbX2EtelxcZF0pKlxcYi9pfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiYWRhXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5hcGFjaGVjb25mPXtjb21tZW50Oi8jLiovLFwiZGlyZWN0aXZlLWlubGluZVwiOntwYXR0ZXJuOi9eKFxccyopXFxiKD86QWNjZXB0RmlsdGVyfEFjY2VwdFBhdGhJbmZvfEFjY2Vzc0ZpbGVOYW1lfEFjdGlvbnxBZGRBbHR8QWRkQWx0QnlFbmNvZGluZ3xBZGRBbHRCeVR5cGV8QWRkQ2hhcnNldHxBZGREZWZhdWx0Q2hhcnNldHxBZGREZXNjcmlwdGlvbnxBZGRFbmNvZGluZ3xBZGRIYW5kbGVyfEFkZEljb258QWRkSWNvbkJ5RW5jb2Rpbmd8QWRkSWNvbkJ5VHlwZXxBZGRJbnB1dEZpbHRlcnxBZGRMYW5ndWFnZXxBZGRNb2R1bGVJbmZvfEFkZE91dHB1dEZpbHRlcnxBZGRPdXRwdXRGaWx0ZXJCeVR5cGV8QWRkVHlwZXxBbGlhc3xBbGlhc01hdGNofEFsbG93fEFsbG93Q09OTkVDVHxBbGxvd0VuY29kZWRTbGFzaGVzfEFsbG93TWV0aG9kc3xBbGxvd092ZXJyaWRlfEFsbG93T3ZlcnJpZGVMaXN0fEFub255bW91c3xBbm9ueW1vdXNfTG9nRW1haWx8QW5vbnltb3VzX011c3RHaXZlRW1haWx8QW5vbnltb3VzX05vVXNlcklEfEFub255bW91c19WZXJpZnlFbWFpbHxBc3luY1JlcXVlc3RXb3JrZXJGYWN0b3J8QXV0aEJhc2ljQXV0aG9yaXRhdGl2ZXxBdXRoQmFzaWNGYWtlfEF1dGhCYXNpY1Byb3ZpZGVyfEF1dGhCYXNpY1VzZURpZ2VzdEFsZ29yaXRobXxBdXRoREJEVXNlclBXUXVlcnl8QXV0aERCRFVzZXJSZWFsbVF1ZXJ5fEF1dGhEQk1Hcm91cEZpbGV8QXV0aERCTVR5cGV8QXV0aERCTVVzZXJGaWxlfEF1dGhEaWdlc3RBbGdvcml0aG18QXV0aERpZ2VzdERvbWFpbnxBdXRoRGlnZXN0Tm9uY2VMaWZldGltZXxBdXRoRGlnZXN0UHJvdmlkZXJ8QXV0aERpZ2VzdFFvcHxBdXRoRGlnZXN0U2htZW1TaXplfEF1dGhGb3JtQXV0aG9yaXRhdGl2ZXxBdXRoRm9ybUJvZHl8QXV0aEZvcm1EaXNhYmxlTm9TdG9yZXxBdXRoRm9ybUZha2VCYXNpY0F1dGh8QXV0aEZvcm1Mb2NhdGlvbnxBdXRoRm9ybUxvZ2luUmVxdWlyZWRMb2NhdGlvbnxBdXRoRm9ybUxvZ2luU3VjY2Vzc0xvY2F0aW9ufEF1dGhGb3JtTG9nb3V0TG9jYXRpb258QXV0aEZvcm1NZXRob2R8QXV0aEZvcm1NaW1ldHlwZXxBdXRoRm9ybVBhc3N3b3JkfEF1dGhGb3JtUHJvdmlkZXJ8QXV0aEZvcm1TaXRlUGFzc3BocmFzZXxBdXRoRm9ybVNpemV8QXV0aEZvcm1Vc2VybmFtZXxBdXRoR3JvdXBGaWxlfEF1dGhMREFQQXV0aG9yaXplUHJlZml4fEF1dGhMREFQQmluZEF1dGhvcml0YXRpdmV8QXV0aExEQVBCaW5kRE58QXV0aExEQVBCaW5kUGFzc3dvcmR8QXV0aExEQVBDaGFyc2V0Q29uZmlnfEF1dGhMREFQQ29tcGFyZUFzVXNlcnxBdXRoTERBUENvbXBhcmVETk9uU2VydmVyfEF1dGhMREFQRGVyZWZlcmVuY2VBbGlhc2VzfEF1dGhMREFQR3JvdXBBdHRyaWJ1dGV8QXV0aExEQVBHcm91cEF0dHJpYnV0ZUlzRE58QXV0aExEQVBJbml0aWFsQmluZEFzVXNlcnxBdXRoTERBUEluaXRpYWxCaW5kUGF0dGVybnxBdXRoTERBUE1heFN1Ykdyb3VwRGVwdGh8QXV0aExEQVBSZW1vdGVVc2VyQXR0cmlidXRlfEF1dGhMREFQUmVtb3RlVXNlcklzRE58QXV0aExEQVBTZWFyY2hBc1VzZXJ8QXV0aExEQVBTdWJHcm91cEF0dHJpYnV0ZXxBdXRoTERBUFN1Ykdyb3VwQ2xhc3N8QXV0aExEQVBVcmx8QXV0aE1lcmdpbmd8QXV0aE5hbWV8QXV0aG5DYWNoZUNvbnRleHR8QXV0aG5DYWNoZUVuYWJsZXxBdXRobkNhY2hlUHJvdmlkZUZvcnxBdXRobkNhY2hlU09DYWNoZXxBdXRobkNhY2hlVGltZW91dHxBdXRobnpGY2dpQ2hlY2tBdXRoblByb3ZpZGVyfEF1dGhuekZjZ2lEZWZpbmVQcm92aWRlcnxBdXRoVHlwZXxBdXRoVXNlckZpbGV8QXV0aHpEQkRMb2dpblRvUmVmZXJlcnxBdXRoekRCRFF1ZXJ5fEF1dGh6REJEUmVkaXJlY3RRdWVyeXxBdXRoekRCTVR5cGV8QXV0aHpTZW5kRm9yYmlkZGVuT25GYWlsdXJlfEJhbGFuY2VyR3Jvd3RofEJhbGFuY2VySW5oZXJpdHxCYWxhbmNlck1lbWJlcnxCYWxhbmNlclBlcnNpc3R8QnJvd3Nlck1hdGNofEJyb3dzZXJNYXRjaE5vQ2FzZXxCdWZmZXJlZExvZ3N8QnVmZmVyU2l6ZXxDYWNoZURlZmF1bHRFeHBpcmV8Q2FjaGVEZXRhaWxIZWFkZXJ8Q2FjaGVEaXJMZW5ndGh8Q2FjaGVEaXJMZXZlbHN8Q2FjaGVEaXNhYmxlfENhY2hlRW5hYmxlfENhY2hlRmlsZXxDYWNoZUhlYWRlcnxDYWNoZUlnbm9yZUNhY2hlQ29udHJvbHxDYWNoZUlnbm9yZUhlYWRlcnN8Q2FjaGVJZ25vcmVOb0xhc3RNb2R8Q2FjaGVJZ25vcmVRdWVyeVN0cmluZ3xDYWNoZUlnbm9yZVVSTFNlc3Npb25JZGVudGlmaWVyc3xDYWNoZUtleUJhc2VVUkx8Q2FjaGVMYXN0TW9kaWZpZWRGYWN0b3J8Q2FjaGVMb2NrfENhY2hlTG9ja01heEFnZXxDYWNoZUxvY2tQYXRofENhY2hlTWF4RXhwaXJlfENhY2hlTWF4RmlsZVNpemV8Q2FjaGVNaW5FeHBpcmV8Q2FjaGVNaW5GaWxlU2l6ZXxDYWNoZU5lZ290aWF0ZWREb2NzfENhY2hlUXVpY2tIYW5kbGVyfENhY2hlUmVhZFNpemV8Q2FjaGVSZWFkVGltZXxDYWNoZVJvb3R8Q2FjaGVTb2NhY2hlfENhY2hlU29jYWNoZU1heFNpemV8Q2FjaGVTb2NhY2hlTWF4VGltZXxDYWNoZVNvY2FjaGVNaW5UaW1lfENhY2hlU29jYWNoZVJlYWRTaXplfENhY2hlU29jYWNoZVJlYWRUaW1lfENhY2hlU3RhbGVPbkVycm9yfENhY2hlU3RvcmVFeHBpcmVkfENhY2hlU3RvcmVOb1N0b3JlfENhY2hlU3RvcmVQcml2YXRlfENHSURTY3JpcHRUaW1lb3V0fENHSU1hcEV4dGVuc2lvbnxDaGFyc2V0RGVmYXVsdHxDaGFyc2V0T3B0aW9uc3xDaGFyc2V0U291cmNlRW5jfENoZWNrQ2FzZU9ubHl8Q2hlY2tTcGVsbGluZ3xDaHJvb3REaXJ8Q29udGVudERpZ2VzdHxDb29raWVEb21haW58Q29va2llRXhwaXJlc3xDb29raWVOYW1lfENvb2tpZVN0eWxlfENvb2tpZVRyYWNraW5nfENvcmVEdW1wRGlyZWN0b3J5fEN1c3RvbUxvZ3xEYXZ8RGF2RGVwdGhJbmZpbml0eXxEYXZHZW5lcmljTG9ja0RCfERhdkxvY2tEQnxEYXZNaW5UaW1lb3V0fERCREV4cHRpbWV8REJESW5pdFNRTHxEQkRLZWVwfERCRE1heHxEQkRNaW58REJEUGFyYW1zfERCRFBlcnNpc3R8REJEUHJlcGFyZVNRTHxEQkRyaXZlcnxEZWZhdWx0SWNvbnxEZWZhdWx0TGFuZ3VhZ2V8RGVmYXVsdFJ1bnRpbWVEaXJ8RGVmYXVsdFR5cGV8RGVmaW5lfERlZmxhdGVCdWZmZXJTaXplfERlZmxhdGVDb21wcmVzc2lvbkxldmVsfERlZmxhdGVGaWx0ZXJOb3RlfERlZmxhdGVJbmZsYXRlTGltaXRSZXF1ZXN0Qm9keXxEZWZsYXRlSW5mbGF0ZVJhdGlvQnVyc3R8RGVmbGF0ZUluZmxhdGVSYXRpb0xpbWl0fERlZmxhdGVNZW1MZXZlbHxEZWZsYXRlV2luZG93U2l6ZXxEZW55fERpcmVjdG9yeUNoZWNrSGFuZGxlcnxEaXJlY3RvcnlJbmRleHxEaXJlY3RvcnlJbmRleFJlZGlyZWN0fERpcmVjdG9yeVNsYXNofERvY3VtZW50Um9vdHxEVHJhY2VQcml2aWxlZ2VzfER1bXBJT0lucHV0fER1bXBJT091dHB1dHxFbmFibGVFeGNlcHRpb25Ib29rfEVuYWJsZU1NQVB8RW5hYmxlU2VuZGZpbGV8RXJyb3J8RXJyb3JEb2N1bWVudHxFcnJvckxvZ3xFcnJvckxvZ0Zvcm1hdHxFeGFtcGxlfEV4cGlyZXNBY3RpdmV8RXhwaXJlc0J5VHlwZXxFeHBpcmVzRGVmYXVsdHxFeHRlbmRlZFN0YXR1c3xFeHRGaWx0ZXJEZWZpbmV8RXh0RmlsdGVyT3B0aW9uc3xGYWxsYmFja1Jlc291cmNlfEZpbGVFVGFnfEZpbHRlckNoYWlufEZpbHRlckRlY2xhcmV8RmlsdGVyUHJvdG9jb2x8RmlsdGVyUHJvdmlkZXJ8RmlsdGVyVHJhY2V8Rm9yY2VMYW5ndWFnZVByaW9yaXR5fEZvcmNlVHlwZXxGb3JlbnNpY0xvZ3xHcHJvZkRpcnxHcmFjZWZ1bFNodXRkb3duVGltZW91dHxHcm91cHxIZWFkZXJ8SGVhZGVyTmFtZXxIZWFydGJlYXRBZGRyZXNzfEhlYXJ0YmVhdExpc3RlbnxIZWFydGJlYXRNYXhTZXJ2ZXJzfEhlYXJ0YmVhdFN0b3JhZ2V8SGVhcnRiZWF0U3RvcmFnZXxIb3N0bmFtZUxvb2t1cHN8SWRlbnRpdHlDaGVja3xJZGVudGl0eUNoZWNrVGltZW91dHxJbWFwQmFzZXxJbWFwRGVmYXVsdHxJbWFwTWVudXxJbmNsdWRlfEluY2x1ZGVPcHRpb25hbHxJbmRleEhlYWRJbnNlcnR8SW5kZXhJZ25vcmV8SW5kZXhJZ25vcmVSZXNldHxJbmRleE9wdGlvbnN8SW5kZXhPcmRlckRlZmF1bHR8SW5kZXhTdHlsZVNoZWV0fElucHV0U2VkfElTQVBJQXBwZW5kTG9nVG9FcnJvcnN8SVNBUElBcHBlbmRMb2dUb1F1ZXJ5fElTQVBJQ2FjaGVGaWxlfElTQVBJRmFrZUFzeW5jfElTQVBJTG9nTm90U3VwcG9ydGVkfElTQVBJUmVhZEFoZWFkQnVmZmVyfEtlZXBBbGl2ZXxLZWVwQWxpdmVUaW1lb3V0fEtlcHRCb2R5U2l6ZXxMYW5ndWFnZVByaW9yaXR5fExEQVBDYWNoZUVudHJpZXN8TERBUENhY2hlVFRMfExEQVBDb25uZWN0aW9uUG9vbFRUTHxMREFQQ29ubmVjdGlvblRpbWVvdXR8TERBUExpYnJhcnlEZWJ1Z3xMREFQT3BDYWNoZUVudHJpZXN8TERBUE9wQ2FjaGVUVEx8TERBUFJlZmVycmFsSG9wTGltaXR8TERBUFJlZmVycmFsc3xMREFQUmV0cmllc3xMREFQUmV0cnlEZWxheXxMREFQU2hhcmVkQ2FjaGVGaWxlfExEQVBTaGFyZWRDYWNoZVNpemV8TERBUFRpbWVvdXR8TERBUFRydXN0ZWRDbGllbnRDZXJ0fExEQVBUcnVzdGVkR2xvYmFsQ2VydHxMREFQVHJ1c3RlZE1vZGV8TERBUFZlcmlmeVNlcnZlckNlcnR8TGltaXRJbnRlcm5hbFJlY3Vyc2lvbnxMaW1pdFJlcXVlc3RCb2R5fExpbWl0UmVxdWVzdEZpZWxkc3xMaW1pdFJlcXVlc3RGaWVsZFNpemV8TGltaXRSZXF1ZXN0TGluZXxMaW1pdFhNTFJlcXVlc3RCb2R5fExpc3RlbnxMaXN0ZW5CYWNrTG9nfExvYWRGaWxlfExvYWRNb2R1bGV8TG9nRm9ybWF0fExvZ0xldmVsfExvZ01lc3NhZ2V8THVhQXV0aHpQcm92aWRlcnxMdWFDb2RlQ2FjaGV8THVhSG9va0FjY2Vzc0NoZWNrZXJ8THVhSG9va0F1dGhDaGVja2VyfEx1YUhvb2tDaGVja1VzZXJJRHxMdWFIb29rRml4dXBzfEx1YUhvb2tJbnNlcnRGaWx0ZXJ8THVhSG9va0xvZ3xMdWFIb29rTWFwVG9TdG9yYWdlfEx1YUhvb2tUcmFuc2xhdGVOYW1lfEx1YUhvb2tUeXBlQ2hlY2tlcnxMdWFJbmhlcml0fEx1YUlucHV0RmlsdGVyfEx1YU1hcEhhbmRsZXJ8THVhT3V0cHV0RmlsdGVyfEx1YVBhY2thZ2VDUGF0aHxMdWFQYWNrYWdlUGF0aHxMdWFRdWlja0hhbmRsZXJ8THVhUm9vdHxMdWFTY29wZXxNYXhDb25uZWN0aW9uc1BlckNoaWxkfE1heEtlZXBBbGl2ZVJlcXVlc3RzfE1heE1lbUZyZWV8TWF4UmFuZ2VPdmVybGFwc3xNYXhSYW5nZVJldmVyc2Fsc3xNYXhSYW5nZXN8TWF4UmVxdWVzdFdvcmtlcnN8TWF4U3BhcmVTZXJ2ZXJzfE1heFNwYXJlVGhyZWFkc3xNYXhUaHJlYWRzfE1lcmdlVHJhaWxlcnN8TWV0YURpcnxNZXRhRmlsZXN8TWV0YVN1ZmZpeHxNaW1lTWFnaWNGaWxlfE1pblNwYXJlU2VydmVyc3xNaW5TcGFyZVRocmVhZHN8TU1hcEZpbGV8TW9kZW1TdGFuZGFyZHxNb2RNaW1lVXNlUGF0aEluZm98TXVsdGl2aWV3c01hdGNofE11dGV4fE5hbWVWaXJ0dWFsSG9zdHxOb1Byb3h5fE5XU1NMVHJ1c3RlZENlcnRzfE5XU1NMVXBncmFkZWFibGV8T3B0aW9uc3xPcmRlcnxPdXRwdXRTZWR8UGFzc0VudnxQaWRGaWxlfFByaXZpbGVnZXNNb2RlfFByb3RvY29sfFByb3RvY29sRWNob3xQcm94eUFkZEhlYWRlcnN8UHJveHlCYWRIZWFkZXJ8UHJveHlCbG9ja3xQcm94eURvbWFpbnxQcm94eUVycm9yT3ZlcnJpZGV8UHJveHlFeHByZXNzREJNRmlsZXxQcm94eUV4cHJlc3NEQk1UeXBlfFByb3h5RXhwcmVzc0VuYWJsZXxQcm94eUZ0cERpckNoYXJzZXR8UHJveHlGdHBFc2NhcGVXaWxkY2FyZHN8UHJveHlGdHBMaXN0T25XaWxkY2FyZHxQcm94eUhUTUxCdWZTaXplfFByb3h5SFRNTENoYXJzZXRPdXR8UHJveHlIVE1MRG9jVHlwZXxQcm94eUhUTUxFbmFibGV8UHJveHlIVE1MRXZlbnRzfFByb3h5SFRNTEV4dGVuZGVkfFByb3h5SFRNTEZpeHVwc3xQcm94eUhUTUxJbnRlcnB8UHJveHlIVE1MTGlua3N8UHJveHlIVE1MTWV0YXxQcm94eUhUTUxTdHJpcENvbW1lbnRzfFByb3h5SFRNTFVSTE1hcHxQcm94eUlPQnVmZmVyU2l6ZXxQcm94eU1heEZvcndhcmRzfFByb3h5UGFzc3xQcm94eVBhc3NJbmhlcml0fFByb3h5UGFzc0ludGVycG9sYXRlRW52fFByb3h5UGFzc01hdGNofFByb3h5UGFzc1JldmVyc2V8UHJveHlQYXNzUmV2ZXJzZUNvb2tpZURvbWFpbnxQcm94eVBhc3NSZXZlcnNlQ29va2llUGF0aHxQcm94eVByZXNlcnZlSG9zdHxQcm94eVJlY2VpdmVCdWZmZXJTaXplfFByb3h5UmVtb3RlfFByb3h5UmVtb3RlTWF0Y2h8UHJveHlSZXF1ZXN0c3xQcm94eVNDR0lJbnRlcm5hbFJlZGlyZWN0fFByb3h5U0NHSVNlbmRmaWxlfFByb3h5U2V0fFByb3h5U291cmNlQWRkcmVzc3xQcm94eVN0YXR1c3xQcm94eVRpbWVvdXR8UHJveHlWaWF8UmVhZG1lTmFtZXxSZWNlaXZlQnVmZmVyU2l6ZXxSZWRpcmVjdHxSZWRpcmVjdE1hdGNofFJlZGlyZWN0UGVybWFuZW50fFJlZGlyZWN0VGVtcHxSZWZsZWN0b3JIZWFkZXJ8UmVtb3RlSVBIZWFkZXJ8UmVtb3RlSVBJbnRlcm5hbFByb3h5fFJlbW90ZUlQSW50ZXJuYWxQcm94eUxpc3R8UmVtb3RlSVBQcm94aWVzSGVhZGVyfFJlbW90ZUlQVHJ1c3RlZFByb3h5fFJlbW90ZUlQVHJ1c3RlZFByb3h5TGlzdHxSZW1vdmVDaGFyc2V0fFJlbW92ZUVuY29kaW5nfFJlbW92ZUhhbmRsZXJ8UmVtb3ZlSW5wdXRGaWx0ZXJ8UmVtb3ZlTGFuZ3VhZ2V8UmVtb3ZlT3V0cHV0RmlsdGVyfFJlbW92ZVR5cGV8UmVxdWVzdEhlYWRlcnxSZXF1ZXN0UmVhZFRpbWVvdXR8UmVxdWlyZXxSZXdyaXRlQmFzZXxSZXdyaXRlQ29uZHxSZXdyaXRlRW5naW5lfFJld3JpdGVNYXB8UmV3cml0ZU9wdGlvbnN8UmV3cml0ZVJ1bGV8UkxpbWl0Q1BVfFJMaW1pdE1FTXxSTGltaXROUFJPQ3xTYXRpc2Z5fFNjb3JlQm9hcmRGaWxlfFNjcmlwdHxTY3JpcHRBbGlhc3xTY3JpcHRBbGlhc01hdGNofFNjcmlwdEludGVycHJldGVyU291cmNlfFNjcmlwdExvZ3xTY3JpcHRMb2dCdWZmZXJ8U2NyaXB0TG9nTGVuZ3RofFNjcmlwdFNvY2t8U2VjdXJlTGlzdGVufFNlZVJlcXVlc3RUYWlsfFNlbmRCdWZmZXJTaXplfFNlcnZlckFkbWlufFNlcnZlckFsaWFzfFNlcnZlckxpbWl0fFNlcnZlck5hbWV8U2VydmVyUGF0aHxTZXJ2ZXJSb290fFNlcnZlclNpZ25hdHVyZXxTZXJ2ZXJUb2tlbnN8U2Vzc2lvbnxTZXNzaW9uQ29va2llTmFtZXxTZXNzaW9uQ29va2llTmFtZTJ8U2Vzc2lvbkNvb2tpZVJlbW92ZXxTZXNzaW9uQ3J5cHRvQ2lwaGVyfFNlc3Npb25DcnlwdG9Ecml2ZXJ8U2Vzc2lvbkNyeXB0b1Bhc3NwaHJhc2V8U2Vzc2lvbkNyeXB0b1Bhc3NwaHJhc2VGaWxlfFNlc3Npb25EQkRDb29raWVOYW1lfFNlc3Npb25EQkRDb29raWVOYW1lMnxTZXNzaW9uREJEQ29va2llUmVtb3ZlfFNlc3Npb25EQkREZWxldGVMYWJlbHxTZXNzaW9uREJESW5zZXJ0TGFiZWx8U2Vzc2lvbkRCRFBlclVzZXJ8U2Vzc2lvbkRCRFNlbGVjdExhYmVsfFNlc3Npb25EQkRVcGRhdGVMYWJlbHxTZXNzaW9uRW52fFNlc3Npb25FeGNsdWRlfFNlc3Npb25IZWFkZXJ8U2Vzc2lvbkluY2x1ZGV8U2Vzc2lvbk1heEFnZXxTZXRFbnZ8U2V0RW52SWZ8U2V0RW52SWZFeHByfFNldEVudklmTm9DYXNlfFNldEhhbmRsZXJ8U2V0SW5wdXRGaWx0ZXJ8U2V0T3V0cHV0RmlsdGVyfFNTSUVuZFRhZ3xTU0lFcnJvck1zZ3xTU0lFVGFnfFNTSUxhc3RNb2RpZmllZHxTU0lMZWdhY3lFeHByUGFyc2VyfFNTSVN0YXJ0VGFnfFNTSVRpbWVGb3JtYXR8U1NJVW5kZWZpbmVkRWNob3xTU0xDQUNlcnRpZmljYXRlRmlsZXxTU0xDQUNlcnRpZmljYXRlUGF0aHxTU0xDQUROUmVxdWVzdEZpbGV8U1NMQ0FETlJlcXVlc3RQYXRofFNTTENBUmV2b2NhdGlvbkNoZWNrfFNTTENBUmV2b2NhdGlvbkZpbGV8U1NMQ0FSZXZvY2F0aW9uUGF0aHxTU0xDZXJ0aWZpY2F0ZUNoYWluRmlsZXxTU0xDZXJ0aWZpY2F0ZUZpbGV8U1NMQ2VydGlmaWNhdGVLZXlGaWxlfFNTTENpcGhlclN1aXRlfFNTTENvbXByZXNzaW9ufFNTTENyeXB0b0RldmljZXxTU0xFbmdpbmV8U1NMRklQU3xTU0xIb25vckNpcGhlck9yZGVyfFNTTEluc2VjdXJlUmVuZWdvdGlhdGlvbnxTU0xPQ1NQRGVmYXVsdFJlc3BvbmRlcnxTU0xPQ1NQRW5hYmxlfFNTTE9DU1BPdmVycmlkZVJlc3BvbmRlcnxTU0xPQ1NQUmVzcG9uZGVyVGltZW91dHxTU0xPQ1NQUmVzcG9uc2VNYXhBZ2V8U1NMT0NTUFJlc3BvbnNlVGltZVNrZXd8U1NMT0NTUFVzZVJlcXVlc3ROb25jZXxTU0xPcGVuU1NMQ29uZkNtZHxTU0xPcHRpb25zfFNTTFBhc3NQaHJhc2VEaWFsb2d8U1NMUHJvdG9jb2x8U1NMUHJveHlDQUNlcnRpZmljYXRlRmlsZXxTU0xQcm94eUNBQ2VydGlmaWNhdGVQYXRofFNTTFByb3h5Q0FSZXZvY2F0aW9uQ2hlY2t8U1NMUHJveHlDQVJldm9jYXRpb25GaWxlfFNTTFByb3h5Q0FSZXZvY2F0aW9uUGF0aHxTU0xQcm94eUNoZWNrUGVlckNOfFNTTFByb3h5Q2hlY2tQZWVyRXhwaXJlfFNTTFByb3h5Q2hlY2tQZWVyTmFtZXxTU0xQcm94eUNpcGhlclN1aXRlfFNTTFByb3h5RW5naW5lfFNTTFByb3h5TWFjaGluZUNlcnRpZmljYXRlQ2hhaW5GaWxlfFNTTFByb3h5TWFjaGluZUNlcnRpZmljYXRlRmlsZXxTU0xQcm94eU1hY2hpbmVDZXJ0aWZpY2F0ZVBhdGh8U1NMUHJveHlQcm90b2NvbHxTU0xQcm94eVZlcmlmeXxTU0xQcm94eVZlcmlmeURlcHRofFNTTFJhbmRvbVNlZWR8U1NMUmVuZWdCdWZmZXJTaXplfFNTTFJlcXVpcmV8U1NMUmVxdWlyZVNTTHxTU0xTZXNzaW9uQ2FjaGV8U1NMU2Vzc2lvbkNhY2hlVGltZW91dHxTU0xTZXNzaW9uVGlja2V0S2V5RmlsZXxTU0xTUlBVbmtub3duVXNlclNlZWR8U1NMU1JQVmVyaWZpZXJGaWxlfFNTTFN0YXBsaW5nQ2FjaGV8U1NMU3RhcGxpbmdFcnJvckNhY2hlVGltZW91dHxTU0xTdGFwbGluZ0Zha2VUcnlMYXRlcnxTU0xTdGFwbGluZ0ZvcmNlVVJMfFNTTFN0YXBsaW5nUmVzcG9uZGVyVGltZW91dHxTU0xTdGFwbGluZ1Jlc3BvbnNlTWF4QWdlfFNTTFN0YXBsaW5nUmVzcG9uc2VUaW1lU2tld3xTU0xTdGFwbGluZ1JldHVyblJlc3BvbmRlckVycm9yc3xTU0xTdGFwbGluZ1N0YW5kYXJkQ2FjaGVUaW1lb3V0fFNTTFN0cmljdFNOSVZIb3N0Q2hlY2t8U1NMVXNlck5hbWV8U1NMVXNlU3RhcGxpbmd8U1NMVmVyaWZ5Q2xpZW50fFNTTFZlcmlmeURlcHRofFN0YXJ0U2VydmVyc3xTdGFydFRocmVhZHN8U3Vic3RpdHV0ZXxTdWV4ZWN8U3VleGVjVXNlckdyb3VwfFRocmVhZExpbWl0fFRocmVhZHNQZXJDaGlsZHxUaHJlYWRTdGFja1NpemV8VGltZU91dHxUcmFjZUVuYWJsZXxUcmFuc2ZlckxvZ3xUeXBlc0NvbmZpZ3xVbkRlZmluZXxVbmRlZk1hY3JvfFVuc2V0RW52fFVzZXxVc2VDYW5vbmljYWxOYW1lfFVzZUNhbm9uaWNhbFBoeXNpY2FsUG9ydHxVc2VyfFVzZXJEaXJ8Vkhvc3RDR0lNb2RlfFZIb3N0Q0dJUHJpdnN8Vkhvc3RHcm91cHxWSG9zdFByaXZzfFZIb3N0U2VjdXJlfFZIb3N0VXNlcnxWaXJ0dWFsRG9jdW1lbnRSb290fFZpcnR1YWxEb2N1bWVudFJvb3RJUHxWaXJ0dWFsU2NyaXB0QWxpYXN8VmlydHVhbFNjcmlwdEFsaWFzSVB8V2F0Y2hkb2dJbnRlcnZhbHxYQml0SGFja3x4bWwyRW5jQWxpYXN8eG1sMkVuY0RlZmF1bHR8eG1sMlN0YXJ0UGFyc2UpXFxiL2ltLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJwcm9wZXJ0eVwifSxcImRpcmVjdGl2ZS1ibG9ja1wiOntwYXR0ZXJuOi88XFwvP1xcYig/OkF1dGhuUHJvdmlkZXJBbGlhc3xBdXRoelByb3ZpZGVyQWxpYXN8RGlyZWN0b3J5fERpcmVjdG9yeU1hdGNofEVsc2V8RWxzZUlmfEZpbGVzfEZpbGVzTWF0Y2h8SWZ8SWZEZWZpbmV8SWZNb2R1bGV8SWZWZXJzaW9ufExpbWl0fExpbWl0RXhjZXB0fExvY2F0aW9ufExvY2F0aW9uTWF0Y2h8TWFjcm98UHJveHl8UmVxdWlyZUFsbHxSZXF1aXJlQW55fFJlcXVpcmVOb25lfFZpcnR1YWxIb3N0KVxcYiAqLio+L2ksaW5zaWRlOntcImRpcmVjdGl2ZS1ibG9ja1wiOntwYXR0ZXJuOi9ePFxcLz9cXHcrLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9ePFxcLz8vfSxhbGlhczpcInRhZ1wifSxcImRpcmVjdGl2ZS1ibG9jay1wYXJhbWV0ZXJcIjp7cGF0dGVybjovLipbXj5dLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi86LyxzdHJpbmc6e3BhdHRlcm46LyhcInwnKS4qXFwxLyxpbnNpZGU6e3ZhcmlhYmxlOi9bJCVdXFx7Pyg/Olxcd1xcLj9bLSs6XT8pK1xcfT8vfX19LGFsaWFzOlwiYXR0ci12YWx1ZVwifSxwdW5jdHVhdGlvbjovPi99LGFsaWFzOlwidGFnXCJ9LFwiZGlyZWN0aXZlLWZsYWdzXCI6e3BhdHRlcm46L1xcWyg/Olxcdyw/KStcXF0vLGFsaWFzOlwia2V5d29yZFwifSxzdHJpbmc6e3BhdHRlcm46LyhcInwnKS4qXFwxLyxpbnNpZGU6e3ZhcmlhYmxlOi9bJCVdXFx7Pyg/Olxcd1xcLj9bLSs6XT8pK1xcfT8vfX0sdmFyaWFibGU6L1skJV1cXHs/KD86XFx3XFwuP1stKzpdPykrXFx9Py8scmVnZXg6L1xcXj8uKlxcJHxcXF4uKlxcJD8vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiYXBhY2hlY29uZlwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuYXBsPXtjb21tZW50Oi8oPzrijZ18I1shIF0pLiokL20sc3RyaW5nOntwYXR0ZXJuOi8nKD86W14nXFxyXFxuXXwnJykqJy8sZ3JlZWR5OiEwfSxudW1iZXI6L8KvPyg/OlxcZCpcXC4/XFxkKyg/OmVbK8KvXT9cXGQrKT98wq984oieKSg/OmrCrz8oPzpcXGQqXFwuP1xcZCsoPzplWyvCr10/XFxkKyk/fMKvfOKInikpPy9pLHN0YXRlbWVudDovOltBLVpdW2Etel1bQS1aYS16XSpcXGIvLFwic3lzdGVtLWZ1bmN0aW9uXCI6e3BhdHRlcm46L+KOlVtBLVpdKy9pLGFsaWFzOlwiZnVuY3Rpb25cIn0sY29uc3RhbnQ6L1vijazijL4j4o6V4o2eXS8sZnVuY3Rpb246L1stK8OXw7fijIjijIriiKN84o2z4o24PyrijZ/il4sh4oy5POKJpD0+4oml4omg4omh4omi4oiK4o234oiq4oipfuKIqOKIp+KNseKNsuKNtCzijarijL3iipbijYnihpHihpPiioLiioPiiobiiofijLfijYvijZLiiqTiiqXijZXijY7iiqPiiqLijYHijYLiiYjija/ihpfCpOKGkl0vLFwibW9uYWRpYy1vcGVyYXRvclwiOntwYXR0ZXJuOi9bXFxcXFxcL+KMv+KNgMKo4o2o4oy2JuKIpV0vLGFsaWFzOlwib3BlcmF0b3JcIn0sXCJkeWFkaWMtb3BlcmF0b3JcIjp7cGF0dGVybjovWy7ijaPijaDijaTiiJjijLhA4oy6XS8sYWxpYXM6XCJvcGVyYXRvclwifSxhc3NpZ25tZW50OntwYXR0ZXJuOi/ihpAvLGFsaWFzOlwia2V5d29yZFwifSxwdW5jdHVhdGlvbjovW1xcWztcXF0oKeKXh+KLhF0vLGRmbjp7cGF0dGVybjovW3t94o264o214o224o254oiH4o2rOl0vLGFsaWFzOlwiYnVpbHRpblwifX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImFwbFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuYXBwbGVzY3JpcHQ9e2NvbW1lbnQ6Wy9cXChcXCooPzpcXChcXCpbXFxzXFxTXSo/XFwqXFwpfFtcXHNcXFNdKSo/XFwqXFwpLywvLS0uKy8sLyMuKy9dLHN0cmluZzovXCIoPzpcXFxcLnxbXlwiXFxcXFxcclxcbl0pKlwiLyxudW1iZXI6Lyg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OmUtP1xcZCspP1xcYi9pLG9wZXJhdG9yOlsvWyY94omg4omk4omlKitcXC1cXC/Dt15dfFs8Pl09Py8sL1xcYig/Oig/OnN0YXJ0fGJlZ2lufGVuZClzPyB3aXRofCg/Oig/OmRvZXMgbm90fGRvZXNuJ3QpIGNvbnRhaW58Y29udGFpbnM/KXwoPzppc3xpc24ndHxpcyBub3QpICg/OmlufGNvbnRhaW5lZCBieSl8KD86KD86aXN8aXNuJ3R8aXMgbm90KSApPyg/OmdyZWF0ZXJ8bGVzcykgdGhhbig/OiBvciBlcXVhbCk/KD86IHRvKT98KD86KD86ZG9lcyBub3R8ZG9lc24ndCkgY29tZXxjb21lcykgKD86YmVmb3JlfGFmdGVyKXwoPzppc3xpc24ndHxpcyBub3QpIGVxdWFsKD86IHRvKT98KD86KD86ZG9lcyBub3R8ZG9lc24ndCkgZXF1YWx8ZXF1YWxzfGVxdWFsIHRvfGlzbid0fGlzIG5vdCl8KD86YSApPyg/OnJlZig/OiB0byk/fHJlZmVyZW5jZSB0byl8KD86YW5kfG9yfGRpdnxtb2R8YXN8bm90KSlcXGIvXSxrZXl3b3JkOi9cXGIoPzphYm91dHxhYm92ZXxhZnRlcnxhZ2FpbnN0fGFwYXJ0IGZyb218YXJvdW5kfGFzaWRlIGZyb218YXR8YmFja3xiZWZvcmV8YmVnaW5uaW5nfGJlaGluZHxiZWxvd3xiZW5lYXRofGJlc2lkZXxiZXR3ZWVufGJ1dHxieXxjb25zaWRlcmluZ3xjb250aW51ZXxjb3B5fGRvZXN8ZWlnaHRofGVsc2V8ZW5kfGVxdWFsfGVycm9yfGV2ZXJ5fGV4aXR8ZmFsc2V8ZmlmdGh8Zmlyc3R8Zm9yfGZvdXJ0aHxmcm9tfGZyb250fGdldHxnaXZlbnxnbG9iYWx8aWZ8aWdub3Jpbmd8aW58aW5zdGVhZCBvZnxpbnRvfGlzfGl0fGl0c3xsYXN0fGxvY2FsfG1lfG1pZGRsZXxteXxuaW50aHxvZnxvbnxvbnRvfG91dCBvZnxvdmVyfHByb3B8cHJvcGVydHl8cHV0fHJlcGVhdHxyZXR1cm58cmV0dXJuaW5nfHNlY29uZHxzZXR8c2V2ZW50aHxzaW5jZXxzaXh0aHxzb21lfHRlbGx8dGVudGh8dGhhdHx0aGV8dGhlbnx0aGlyZHx0aHJvdWdofHRocnV8dGltZW91dHx0aW1lc3x0b3x0cmFuc2FjdGlvbnx0cnVlfHRyeXx1bnRpbHx3aGVyZXx3aGlsZXx3aG9zZXx3aXRofHdpdGhvdXQpXFxiLyxjbGFzczp7cGF0dGVybjovXFxiKD86YWxpYXN8YXBwbGljYXRpb258Ym9vbGVhbnxjbGFzc3xjb25zdGFudHxkYXRlfGZpbGV8aW50ZWdlcnxsaXN0fG51bWJlcnxQT1NJWCBmaWxlfHJlYWx8cmVjb3JkfHJlZmVyZW5jZXxSR0IgY29sb3J8c2NyaXB0fHRleHR8Y2VudGltZXRyZXN8Y2VudGltZXRlcnN8ZmVldHxpbmNoZXN8a2lsb21ldHJlc3xraWxvbWV0ZXJzfG1ldHJlc3xtZXRlcnN8bWlsZXN8eWFyZHN8c3F1YXJlIGZlZXR8c3F1YXJlIGtpbG9tZXRyZXN8c3F1YXJlIGtpbG9tZXRlcnN8c3F1YXJlIG1ldHJlc3xzcXVhcmUgbWV0ZXJzfHNxdWFyZSBtaWxlc3xzcXVhcmUgeWFyZHN8Y3ViaWMgY2VudGltZXRyZXN8Y3ViaWMgY2VudGltZXRlcnN8Y3ViaWMgZmVldHxjdWJpYyBpbmNoZXN8Y3ViaWMgbWV0cmVzfGN1YmljIG1ldGVyc3xjdWJpYyB5YXJkc3xnYWxsb25zfGxpdHJlc3xsaXRlcnN8cXVhcnRzfGdyYW1zfGtpbG9ncmFtc3xvdW5jZXN8cG91bmRzfGRlZ3JlZXMgQ2Vsc2l1c3xkZWdyZWVzIEZhaHJlbmhlaXR8ZGVncmVlcyBLZWx2aW4pXFxiLyxhbGlhczpcImJ1aWx0aW5cIn0scHVuY3R1YXRpb246L1t7fSgpOizCrMKrwrvjgIrjgItdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImFwcGxlc2NyaXB0XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big5Nik7ZnVuY3Rpb24gbyhlKXtlLnJlZ2lzdGVyKHIpLGUubGFuZ3VhZ2VzLmFyZHVpbm89ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY3BwXCIse2tleXdvcmQ6L1xcYig/OnNldHVwfGlmfGVsc2V8d2hpbGV8ZG98Zm9yfHJldHVybnxpbnxpbnN0YW5jZW9mfGRlZmF1bHR8ZnVuY3Rpb258bG9vcHxnb3RvfHN3aXRjaHxjYXNlfG5ld3x0cnl8dGhyb3d8Y2F0Y2h8ZmluYWxseXxudWxsfGJyZWFrfGNvbnRpbnVlfGJvb2xlYW58Ym9vbHx2b2lkfGJ5dGV8d29yZHxzdHJpbmd8U3RyaW5nfGFycmF5fGludHxsb25nfGludGVnZXJ8ZG91YmxlKVxcYi8sYnVpbHRpbjovXFxiKD86S2V5Ym9hcmRDb250cm9sbGVyfE1vdXNlQ29udHJvbGxlcnxTb2Z0d2FyZVNlcmlhbHxFdGhlcm5ldFNlcnZlcnxFdGhlcm5ldENsaWVudHxMaXF1aWRDcnlzdGFsfExpcXVpZENyeXN0YWxfSTJDfFJvYm90Q29udHJvbHxHU01Wb2ljZUNhbGx8RXRoZXJuZXRVRFB8RXNwbG9yYVRGVHxIdHRwQ2xpZW50fFJvYm90TW90b3J8V2lGaUNsaWVudHxHU01TY2FubmVyfEZpbGVTeXN0ZW18U2NoZWR1bGVyfEdTTVNlcnZlcnxZdW5DbGllbnR8WXVuU2VydmVyfElQQWRkcmVzc3xHU01DbGllbnR8R1NNTW9kZW18S2V5Ym9hcmR8RXRoZXJuZXR8Q29uc29sZXxHU01CYW5kfEVzcGxvcmF8U3RlcHBlcnxQcm9jZXNzfFdpRmlVRFB8R1NNX1NNU3xNYWlsYm94fFVTQkhvc3R8RmlybWF0YXxQSW1hZ2V8Q2xpZW50fFNlcnZlcnxHU01QSU58RmlsZUlPfEJyaWRnZXxTZXJpYWx8RUVQUk9NfFN0cmVhbXxNb3VzZXxBdWRpb3xTZXJ2b3xGaWxlfFRhc2t8R1BSU3xXaUZpfFdpcmV8VEZUfEdTTXxTUEl8U0R8cnVuU2hlbGxDb21tYW5kQXN5bmNocm9ub3VzbHl8YW5hbG9nV3JpdGVSZXNvbHV0aW9ufHJldHJpZXZlQ2FsbGluZ051bWJlcnxwcmludEZpcm13YXJlVmVyc2lvbnxhbmFsb2dSZWFkUmVzb2x1dGlvbnxzZW5kRGlnaXRhbFBvcnRQYWlyfG5vTGlzdGVuT25Mb2NhbGhvc3R8cmVhZEpveXN0aWNrQnV0dG9ufHNldEZpcm13YXJlVmVyc2lvbnxyZWFkSm95c3RpY2tTd2l0Y2h8c2Nyb2xsRGlzcGxheVJpZ2h0fGdldFZvaWNlQ2FsbFN0YXR1c3xzY3JvbGxEaXNwbGF5TGVmdHx3cml0ZU1pY3Jvc2Vjb25kc3xkZWxheU1pY3Jvc2Vjb25kc3xiZWdpblRyYW5zbWlzc2lvbnxnZXRTaWduYWxTdHJlbmd0aHxydW5Bc3luY2hyb25vdXNseXxnZXRBc3luY2hyb25vdXNseXxsaXN0ZW5PbkxvY2FsaG9zdHxnZXRDdXJyZW50Q2FycmllcnxyZWFkQWNjZWxlcm9tZXRlcnxtZXNzYWdlQXZhaWxhYmxlfHNlbmREaWdpdGFsUG9ydHN8bGluZUZvbGxvd0NvbmZpZ3xjb3VudHJ5TmFtZVdyaXRlfHJ1blNoZWxsQ29tbWFuZHxyZWFkU3RyaW5nVW50aWx8cmV3aW5kRGlyZWN0b3J5fHJlYWRUZW1wZXJhdHVyZXxzZXRDbG9ja0RpdmlkZXJ8cmVhZExpZ2h0U2Vuc29yfGVuZFRyYW5zbWlzc2lvbnxhbmFsb2dSZWZlcmVuY2V8ZGV0YWNoSW50ZXJydXB0fGNvdW50cnlOYW1lUmVhZHxhdHRhY2hJbnRlcnJ1cHR8ZW5jcnlwdGlvblR5cGV8cmVhZEJ5dGVzVW50aWx8cm9ib3ROYW1lV3JpdGV8cmVhZE1pY3JvcGhvbmV8cm9ib3ROYW1lUmVhZHxjaXR5TmFtZVdyaXRlfHVzZXJOYW1lV3JpdGV8cmVhZEpveXN0aWNrWXxyZWFkSm95c3RpY2tYfG1vdXNlUmVsZWFzZWR8b3Blbk5leHRGaWxlfHNjYW5OZXR3b3Jrc3xub0ludGVycnVwdHN8ZGlnaXRhbFdyaXRlfGJlZ2luU3BlYWtlcnxtb3VzZVByZXNzZWR8aXNBY3Rpb25Eb25lfG1vdXNlRHJhZ2dlZHxkaXNwbGF5TG9nb3N8bm9BdXRvc2Nyb2xsfGFkZFBhcmFtZXRlcnxyZW1vdGVOdW1iZXJ8Z2V0TW9kaWZpZXJzfGtleWJvYXJkUmVhZHx1c2VyTmFtZVJlYWR8d2FpdENvbnRpbnVlfHByb2Nlc3NJbnB1dHxwYXJzZUNvbW1hbmR8cHJpbnRWZXJzaW9ufHJlYWROZXR3b3Jrc3x3cml0ZU1lc3NhZ2V8YmxpbmtWZXJzaW9ufGNpdHlOYW1lUmVhZHxyZWFkTWVzc2FnZXxzZXREYXRhTW9kZXxwYXJzZVBhY2tldHxpc0xpc3RlbmluZ3xzZXRCaXRPcmRlcnxiZWdpblBhY2tldHxpc0RpcmVjdG9yeXxtb3RvcnNXcml0ZXxkcmF3Q29tcGFzc3xkaWdpdGFsUmVhZHxjbGVhclNjcmVlbnxzZXJpYWxFdmVudHxyaWdodFRvTGVmdHxzZXRUZXh0U2l6ZXxsZWZ0VG9SaWdodHxyZXF1ZXN0RnJvbXxrZXlSZWxlYXNlZHxjb21wYXNzUmVhZHxhbmFsb2dXcml0ZXxpbnRlcnJ1cHRzfFdpRmlTZXJ2ZXJ8ZGlzY29ubmVjdHxwbGF5TWVsb2R5fHBhcnNlRmxvYXR8YXV0b3Njcm9sbHxnZXRQSU5Vc2VkfHNldFBJTlVzZWR8c2V0VGltZW91dHxzZW5kQW5hbG9nfHJlYWRTbGlkZXJ8YW5hbG9nUmVhZHxiZWdpbldyaXRlfGNyZWF0ZUNoYXJ8bW90b3JzU3RvcHxrZXlQcmVzc2VkfHRlbXBvV3JpdGV8cmVhZEJ1dHRvbnxzdWJuZXRNYXNrfGRlYnVnUHJpbnR8bWFjQWRkcmVzc3x3cml0ZUdyZWVufHJhbmRvbVNlZWR8YXR0YWNoR1BSU3xyZWFkU3RyaW5nfHNlbmRTdHJpbmd8cmVtb3RlUG9ydHxyZWxlYXNlQWxsfG1vdXNlTW92ZWR8YmFja2dyb3VuZHxnZXRYQ2hhbmdlfGdldFlDaGFuZ2V8YW5zd2VyQ2FsbHxnZXRSZXN1bHR8dm9pY2VDYWxsfGVuZFBhY2tldHxjb25zdHJhaW58Z2V0U29ja2V0fHdyaXRlSlNPTnxnZXRCdXR0b258YXZhaWxhYmxlfGNvbm5lY3RlZHxmaW5kVW50aWx8cmVhZEJ5dGVzfGV4aXRWYWx1ZXxyZWFkR3JlZW58d3JpdGVCbHVlfHN0YXJ0TG9vcHxJUEFkZHJlc3N8aXNQcmVzc2VkfHNlbmRTeXNleHxwYXVzZU1vZGV8Z2F0ZXdheUlQfHNldEN1cnNvcnxnZXRPZW1LZXl8dHVuZVdyaXRlfG5vRGlzcGxheXxsb2FkSW1hZ2V8c3dpdGNoUElOfG9uUmVxdWVzdHxvblJlY2VpdmV8Y2hhbmdlUElOfHBsYXlGaWxlfG5vQnVmZmVyfHBhcnNlSW50fG92ZXJmbG93fGNoZWNrUElOfGtub2JSZWFkfGJlZ2luVEZUfGJpdENsZWFyfHVwZGF0ZUlSfGJpdFdyaXRlfHBvc2l0aW9ufHdyaXRlUkdCfGhpZ2hCeXRlfHdyaXRlUmVkfHNldFNwZWVkfHJlYWRCbHVlfG5vU3Ryb2tlfHJlbW90ZUlQfHRyYW5zZmVyfHNodXRkb3dufGhhbmdDYWxsfGJlZ2luU01TfGVuZFdyaXRlfGF0dGFjaGVkfG1haW50YWlufG5vQ3Vyc29yfGNoZWNrUmVnfGNoZWNrUFVLfHNoaWZ0T3V0fGlzVmFsaWR8c2hpZnRJbnxwdWxzZUlufGNvbm5lY3R8cHJpbnRsbnxsb2NhbElQfHBpbk1vZGV8Z2V0SU1FSXxkaXNwbGF5fG5vQmxpbmt8cHJvY2Vzc3xnZXRCYW5kfHJ1bm5pbmd8YmVnaW5TRHxkcmF3Qk1QfGxvd0J5dGV8c2V0QmFuZHxyZWxlYXNlfGJpdFJlYWR8cHJlcGFyZXxwb2ludFRvfHJlYWRSZWR8c2V0TW9kZXxub0ZpbGx8cmVtb3ZlfGxpc3RlbnxzdHJva2V8ZGV0YWNofGF0dGFjaHxub1RvbmV8ZXhpc3RzfGJ1ZmZlcnxoZWlnaHR8Yml0U2V0fGNpcmNsZXxjb25maWd8Y3Vyc29yfHJhbmRvbXxJUnJlYWR8c2V0RE5TfGVuZFNNU3xnZXRLZXl8bWljcm9zfG1pbGxpc3xiZWdpbnxwcmludHx3cml0ZXxyZWFkeXxmbHVzaHx3aWR0aHxpc1BJTnxibGlua3xjbGVhcnxwcmVzc3xta2RpcnxybWRpcnxjbG9zZXxwb2ludHx5aWVsZHxpbWFnZXxCU1NJRHxjbGlja3xkZWxheXxyZWFkfHRleHR8bW92ZXxwZWVrfGJlZXB8cmVjdHxsaW5lfG9wZW58c2Vla3xmaWxsfHNpemV8dHVybnxzdG9wfGhvbWV8ZmluZHxzdGVwfHRvbmV8c3FydHxSU1NJfFNTSUR8ZW5kfGJpdHx0YW58Y29zfHNpbnxwb3d8bWFwfGFic3xtYXh8bWlufGdldHxydW58cHV0KVxcYi8sY29uc3RhbnQ6L1xcYig/OkRJR0lUQUxfTUVTU0FHRXxGSVJNQVRBX1NUUklOR3xBTkFMT0dfTUVTU0FHRXxSRVBPUlRfRElHSVRBTHxSRVBPUlRfQU5BTE9HfElOUFVUX1BVTExVUHxTRVRfUElOX01PREV8SU5URVJOQUwyVjU2fFNZU1RFTV9SRVNFVHxMRURfQlVJTFRJTnxJTlRFUk5BTDFWMXxTWVNFWF9TVEFSVHxJTlRFUk5BTHxFWFRFUk5BTHxERUZBVUxUfE9VVFBVVHxJTlBVVHxISUdIfExPVylcXGIvfSl9ZS5leHBvcnRzPW8sby5kaXNwbGF5TmFtZT1cImFyZHVpbm9cIixvLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmFyZmY9e2NvbW1lbnQ6LyUuKi8sc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfSxrZXl3b3JkOi9AKD86YXR0cmlidXRlfGRhdGF8ZW5kfHJlbGF0aW9uKVxcYi9pLG51bWJlcjovXFxiXFxkKyg/OlxcLlxcZCspP1xcYi8scHVuY3R1YXRpb246L1t7fSxdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImFyZmZcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXt2YXIgdD17cGF0dGVybjovKF5bIFxcdF0qKVxcWyg/IVxcWykoPzooW1wiJyRgXSkoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqXFwyfFxcWyg/OlteXFxdXFxcXF18XFxcXC4pKlxcXXxbXlxcXVxcXFxdfFxcXFwuKSpcXF0vbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7cXVvdGVkOntwYXR0ZXJuOi8oWyRgXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqXFwxLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9eWyRgXXxbJGBdJC99fSxpbnRlcnByZXRlZDp7cGF0dGVybjovJyg/OlteJ1xcXFxdfFxcXFwuKSonLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9eJ3wnJC99fSxzdHJpbmc6L1wiKD86W15cIlxcXFxdfFxcXFwuKSpcIi8sdmFyaWFibGU6L1xcdysoPz09KS8scHVuY3R1YXRpb246L15cXFt8XFxdJHwsLyxvcGVyYXRvcjovPS8sXCJhdHRyLXZhbHVlXCI6Lyg/IV5cXHMrJCkuKy99fTtlLmxhbmd1YWdlcy5hc2NpaWRvYz17XCJjb21tZW50LWJsb2NrXCI6e3BhdHRlcm46L14oXFwvezQsfSkoPzpcXHI/XFxufFxccikoPzpbXFxzXFxTXSooPzpcXHI/XFxufFxccikpPz9cXDEvbSxhbGlhczpcImNvbW1lbnRcIn0sdGFibGU6e3BhdHRlcm46L15cXHw9ezMsfSg/Oig/Olxccj9cXG58XFxyKS4qKSo/KD86XFxyP1xcbnxcXHIpXFx8PXszLH0kL20saW5zaWRlOntzcGVjaWZpZXJzOntwYXR0ZXJuOi8oPyFcXHwpKD86KD86KD86XFxkKyg/OlxcLlxcZCspP3xcXC5cXGQrKVsrKl0pPyg/Ols8Xj5dKD86XFwuWzxePl0pP3xcXC5bPF4+XSk/W2Etel0qKSg/PVxcfCkvLGFsaWFzOlwiYXR0ci12YWx1ZVwifSxwdW5jdHVhdGlvbjp7cGF0dGVybjovKF58W15cXFxcXSlbfCFdPSovLGxvb2tiZWhpbmQ6ITB9fX0sXCJwYXNzdGhyb3VnaC1ibG9ja1wiOntwYXR0ZXJuOi9eKFxcK3s0LH0pKD86XFxyP1xcbnxcXHIpKD86W1xcc1xcU10qKD86XFxyP1xcbnxcXHIpKT8/XFwxJC9tLGluc2lkZTp7cHVuY3R1YXRpb246L15cXCsrfFxcKyskL319LFwibGl0ZXJhbC1ibG9ja1wiOntwYXR0ZXJuOi9eKC17NCx9fFxcLns0LH0pKD86XFxyP1xcbnxcXHIpKD86W1xcc1xcU10qKD86XFxyP1xcbnxcXHIpKT8/XFwxJC9tLGluc2lkZTp7cHVuY3R1YXRpb246L14oPzotK3xcXC4rKXwoPzotK3xcXC4rKSQvfX0sXCJvdGhlci1ibG9ja1wiOntwYXR0ZXJuOi9eKC0tfFxcKns0LH18X3s0LH18PXs0LH0pKD86XFxyP1xcbnxcXHIpKD86W1xcc1xcU10qKD86XFxyP1xcbnxcXHIpKT8/XFwxJC9tLGluc2lkZTp7cHVuY3R1YXRpb246L14oPzotK3xcXCorfF8rfD0rKXwoPzotK3xcXCorfF8rfD0rKSQvfX0sXCJsaXN0LXB1bmN0dWF0aW9uXCI6e3BhdHRlcm46LyheWyBcXHRdKikoPzotfFxcKnsxLDV9fFxcLnsxLDV9fCg/OlthLXpdfFxcZCspXFwufFt4dmldK1xcKSkoPz0gKS9pbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwicHVuY3R1YXRpb25cIn0sXCJsaXN0LWxhYmVsXCI6e3BhdHRlcm46LyheWyBcXHRdKilbYS16XFxkXS4rKD86OnsyLDR9fDs7KSg/PVxccykvaW0sbG9va2JlaGluZDohMCxhbGlhczpcInN5bWJvbFwifSxcImluZGVudGVkLWJsb2NrXCI6e3BhdHRlcm46LygoXFxyP1xcbnxcXHIpXFwyKShbIFxcdF0rKVxcUy4qKD86KD86XFxyP1xcbnxcXHIpXFwzLispKig/PVxcMnsyfXwkKS8sbG9va2JlaGluZDohMH0sY29tbWVudDovXlxcL1xcLy4qL20sdGl0bGU6e3BhdHRlcm46L14uKyg/Olxccj9cXG58XFxyKSg/Oj17Myx9fC17Myx9fH57Myx9fFxcXnszLH18XFwrezMsfSkkfF49ezEsNX0gKy4rfF5cXC4oPyFbXFxzLl0pLiovbSxhbGlhczpcImltcG9ydGFudFwiLGluc2lkZTp7cHVuY3R1YXRpb246L14oPzpcXC58PSspfCg/Oj0rfC0rfH4rfFxcXit8XFwrKykkL319LFwiYXR0cmlidXRlLWVudHJ5XCI6e3BhdHRlcm46L146W146XFxyXFxuXSs6KD86IC4qPyg/OiBcXCsoPzpcXHI/XFxufFxccikuKj8pKik/JC9tLGFsaWFzOlwidGFnXCJ9LGF0dHJpYnV0ZXM6dCxocjp7cGF0dGVybjovXid7Myx9JC9tLGFsaWFzOlwicHVuY3R1YXRpb25cIn0sXCJwYWdlLWJyZWFrXCI6e3BhdHRlcm46L148ezMsfSQvbSxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LGFkbW9uaXRpb246e3BhdHRlcm46L14oPzpUSVB8Tk9URXxJTVBPUlRBTlR8V0FSTklOR3xDQVVUSU9OKTovbSxhbGlhczpcImtleXdvcmRcIn0sY2FsbG91dDpbe3BhdHRlcm46LyheWyBcXHRdKik8P1xcZCo+L20sbG9va2JlaGluZDohMCxhbGlhczpcInN5bWJvbFwifSx7cGF0dGVybjovPFxcZCs+LyxhbGlhczpcInN5bWJvbFwifV0sbWFjcm86e3BhdHRlcm46L1xcYlthLXpcXGRdW2EtelxcZC1dKjo6Pyg/Oig/OlxcUyspPz9cXFsoPzpbXlxcXVxcXFxcIl18KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSpcXDF8XFxcXC4pKlxcXSkvLGluc2lkZTp7ZnVuY3Rpb246L15bYS16XFxkLV0rKD89OikvLHB1bmN0dWF0aW9uOi9eOjo/LyxhdHRyaWJ1dGVzOntwYXR0ZXJuOi8oPzpcXFsoPzpbXlxcXVxcXFxcIl18KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSpcXDF8XFxcXC4pKlxcXSkvLGluc2lkZTp0Lmluc2lkZX19fSxpbmxpbmU6e3BhdHRlcm46LyhefFteXFxcXF0pKD86KD86XFxCXFxbKD86W15cXF1cXFxcXCJdfChbXCInXSkoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqXFwyfFxcXFwuKSpcXF0pPyg/OlxcYl8oPyFcXHMpKD86IF98W15fXFxcXFxcclxcbl18XFxcXC4pKyg/Oig/Olxccj9cXG58XFxyKSg/OiBffFteX1xcXFxcXHJcXG5dfFxcXFwuKSspKl9cXGJ8XFxCYGAoPyFcXHMpLis/KD86KD86XFxyP1xcbnxcXHIpLis/KSonJ1xcQnxcXEJgKD8hXFxzKSg/OiBbJ2BdfC4pKz8oPzooPzpcXHI/XFxufFxccikoPzogWydgXXwuKSs/KSpbJ2BdXFxCfFxcQihbJyorI10pKD8hXFxzKSg/OiBcXDN8KD8hXFwzKVteXFxcXFxcclxcbl18XFxcXC4pKyg/Oig/Olxccj9cXG58XFxyKSg/OiBcXDN8KD8hXFwzKVteXFxcXFxcclxcbl18XFxcXC4pKykqXFwzXFxCKXwoPzpcXFsoPzpbXlxcXVxcXFxcIl18KFtcIiddKSg/Oig/IVxcNClbXlxcXFxdfFxcXFwuKSpcXDR8XFxcXC4pKlxcXSk/KD86KF9ffFxcKlxcKnxcXCtcXCtcXCs/fCMjfFxcJFxcJHxbfl5dKS4rPyg/Oig/Olxccj9cXG58XFxyKS4rPykqXFw1fFxce1tefVxcclxcbl0rXFx9fFxcW1xcW1xcWz8uKz8oPzooPzpcXHI/XFxufFxccikuKz8pKlxcXT9cXF1cXF18PDwuKz8oPzooPzpcXHI/XFxufFxccikuKz8pKj4+fFxcKFxcKFxcKD8uKz8oPzooPzpcXHI/XFxufFxccikuKz8pKlxcKT9cXClcXCkpKS9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOnthdHRyaWJ1dGVzOnQsdXJsOntwYXR0ZXJuOi9eKD86XFxbXFxbXFxbPy4rP1xcXT9cXF1cXF18PDwuKz8+PikkLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9eKD86XFxbXFxbXFxbP3w8PCl8KD86XFxdXFxdXFxdP3w+PikkL319LFwiYXR0cmlidXRlLXJlZlwiOntwYXR0ZXJuOi9eXFx7LitcXH0kLyxpbnNpZGU6e3ZhcmlhYmxlOntwYXR0ZXJuOi8oXlxceylbYS16XFxkLCtfLV0rLyxsb29rYmVoaW5kOiEwfSxvcGVyYXRvcjovXls9PyEjJUAkXXwhKD89Wzp9XSkvLHB1bmN0dWF0aW9uOi9eXFx7fFxcfSR8Ojo/L319LGl0YWxpYzp7cGF0dGVybjovXihbJ19dKVtcXHNcXFNdK1xcMSQvLGluc2lkZTp7cHVuY3R1YXRpb246L14oPzonJz98X18/KXwoPzonJz98X18/KSQvfX0sYm9sZDp7cGF0dGVybjovXlxcKltcXHNcXFNdK1xcKiQvLGluc2lkZTp7cHVuY3R1YXRpb246L15cXCpcXCo/fFxcKlxcKj8kL319LHB1bmN0dWF0aW9uOi9eKD86YGA/fFxcK3sxLDN9fCMjP3xcXCRcXCR8W35eXXxcXChcXChcXCg/KXwoPzonJz98XFwrezEsM318IyM/fFxcJFxcJHxbfl5gXXxcXCk/XFwpXFwpKSQvfX0scmVwbGFjZW1lbnQ6e3BhdHRlcm46L1xcKCg/OkN8VE18UilcXCkvLGFsaWFzOlwiYnVpbHRpblwifSxlbnRpdHk6LyYjP1tcXGRhLXpdezEsOH07L2ksXCJsaW5lLWNvbnRpbnVhdGlvblwiOntwYXR0ZXJuOi8oXnwgKVxcKyQvbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwicHVuY3R1YXRpb25cIn19LHQuaW5zaWRlLmludGVycHJldGVkLmluc2lkZS5yZXN0PXttYWNybzplLmxhbmd1YWdlcy5hc2NpaWRvYy5tYWNybyxpbmxpbmU6ZS5sYW5ndWFnZXMuYXNjaWlkb2MuaW5saW5lLHJlcGxhY2VtZW50OmUubGFuZ3VhZ2VzLmFzY2lpZG9jLnJlcGxhY2VtZW50LGVudGl0eTplLmxhbmd1YWdlcy5hc2NpaWRvYy5lbnRpdHl9LGUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wicGFzc3Rocm91Z2gtYmxvY2tcIl0uaW5zaWRlLnJlc3Q9e21hY3JvOmUubGFuZ3VhZ2VzLmFzY2lpZG9jLm1hY3JvfSxlLmxhbmd1YWdlcy5hc2NpaWRvY1tcImxpdGVyYWwtYmxvY2tcIl0uaW5zaWRlLnJlc3Q9e2NhbGxvdXQ6ZS5sYW5ndWFnZXMuYXNjaWlkb2MuY2FsbG91dH0sZS5sYW5ndWFnZXMuYXNjaWlkb2MudGFibGUuaW5zaWRlLnJlc3Q9e1wiY29tbWVudC1ibG9ja1wiOmUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wiY29tbWVudC1ibG9ja1wiXSxcInBhc3N0aHJvdWdoLWJsb2NrXCI6ZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJwYXNzdGhyb3VnaC1ibG9ja1wiXSxcImxpdGVyYWwtYmxvY2tcIjplLmxhbmd1YWdlcy5hc2NpaWRvY1tcImxpdGVyYWwtYmxvY2tcIl0sXCJvdGhlci1ibG9ja1wiOmUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wib3RoZXItYmxvY2tcIl0sXCJsaXN0LXB1bmN0dWF0aW9uXCI6ZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJsaXN0LXB1bmN0dWF0aW9uXCJdLFwiaW5kZW50ZWQtYmxvY2tcIjplLmxhbmd1YWdlcy5hc2NpaWRvY1tcImluZGVudGVkLWJsb2NrXCJdLGNvbW1lbnQ6ZS5sYW5ndWFnZXMuYXNjaWlkb2MuY29tbWVudCx0aXRsZTplLmxhbmd1YWdlcy5hc2NpaWRvYy50aXRsZSxcImF0dHJpYnV0ZS1lbnRyeVwiOmUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wiYXR0cmlidXRlLWVudHJ5XCJdLGF0dHJpYnV0ZXM6ZS5sYW5ndWFnZXMuYXNjaWlkb2MuYXR0cmlidXRlcyxocjplLmxhbmd1YWdlcy5hc2NpaWRvYy5ocixcInBhZ2UtYnJlYWtcIjplLmxhbmd1YWdlcy5hc2NpaWRvY1tcInBhZ2UtYnJlYWtcIl0sYWRtb25pdGlvbjplLmxhbmd1YWdlcy5hc2NpaWRvYy5hZG1vbml0aW9uLFwibGlzdC1sYWJlbFwiOmUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wibGlzdC1sYWJlbFwiXSxjYWxsb3V0OmUubGFuZ3VhZ2VzLmFzY2lpZG9jLmNhbGxvdXQsbWFjcm86ZS5sYW5ndWFnZXMuYXNjaWlkb2MubWFjcm8saW5saW5lOmUubGFuZ3VhZ2VzLmFzY2lpZG9jLmlubGluZSxyZXBsYWNlbWVudDplLmxhbmd1YWdlcy5hc2NpaWRvYy5yZXBsYWNlbWVudCxlbnRpdHk6ZS5sYW5ndWFnZXMuYXNjaWlkb2MuZW50aXR5LFwibGluZS1jb250aW51YXRpb25cIjplLmxhbmd1YWdlcy5hc2NpaWRvY1tcImxpbmUtY29udGludWF0aW9uXCJdfSxlLmxhbmd1YWdlcy5hc2NpaWRvY1tcIm90aGVyLWJsb2NrXCJdLmluc2lkZS5yZXN0PXt0YWJsZTplLmxhbmd1YWdlcy5hc2NpaWRvYy50YWJsZSxcImxpc3QtcHVuY3R1YXRpb25cIjplLmxhbmd1YWdlcy5hc2NpaWRvY1tcImxpc3QtcHVuY3R1YXRpb25cIl0sXCJpbmRlbnRlZC1ibG9ja1wiOmUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wiaW5kZW50ZWQtYmxvY2tcIl0sY29tbWVudDplLmxhbmd1YWdlcy5hc2NpaWRvYy5jb21tZW50LFwiYXR0cmlidXRlLWVudHJ5XCI6ZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJhdHRyaWJ1dGUtZW50cnlcIl0sYXR0cmlidXRlczplLmxhbmd1YWdlcy5hc2NpaWRvYy5hdHRyaWJ1dGVzLGhyOmUubGFuZ3VhZ2VzLmFzY2lpZG9jLmhyLFwicGFnZS1icmVha1wiOmUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wicGFnZS1icmVha1wiXSxhZG1vbml0aW9uOmUubGFuZ3VhZ2VzLmFzY2lpZG9jLmFkbW9uaXRpb24sXCJsaXN0LWxhYmVsXCI6ZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJsaXN0LWxhYmVsXCJdLG1hY3JvOmUubGFuZ3VhZ2VzLmFzY2lpZG9jLm1hY3JvLGlubGluZTplLmxhbmd1YWdlcy5hc2NpaWRvYy5pbmxpbmUscmVwbGFjZW1lbnQ6ZS5sYW5ndWFnZXMuYXNjaWlkb2MucmVwbGFjZW1lbnQsZW50aXR5OmUubGFuZ3VhZ2VzLmFzY2lpZG9jLmVudGl0eSxcImxpbmUtY29udGludWF0aW9uXCI6ZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJsaW5lLWNvbnRpbnVhdGlvblwiXX0sZS5sYW5ndWFnZXMuYXNjaWlkb2MudGl0bGUuaW5zaWRlLnJlc3Q9e21hY3JvOmUubGFuZ3VhZ2VzLmFzY2lpZG9jLm1hY3JvLGlubGluZTplLmxhbmd1YWdlcy5hc2NpaWRvYy5pbmxpbmUscmVwbGFjZW1lbnQ6ZS5sYW5ndWFnZXMuYXNjaWlkb2MucmVwbGFjZW1lbnQsZW50aXR5OmUubGFuZ3VhZ2VzLmFzY2lpZG9jLmVudGl0eX0sZS5ob29rcy5hZGQoXCJ3cmFwXCIsZnVuY3Rpb24oZSl7XCJlbnRpdHlcIj09PWUudHlwZSYmKGUuYXR0cmlidXRlcy50aXRsZT1lLmNvbnRlbnQudmFsdWUucmVwbGFjZSgvJmFtcDsvLFwiJlwiKSl9KX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImFzY2lpZG9jXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5hc202NTAyPXtjb21tZW50Oi87LiovLGRpcmVjdGl2ZTp7cGF0dGVybjovXFwuXFx3Kyg/PSApLyxhbGlhczpcImtleXdvcmRcIn0sc3RyaW5nOi8oW1wiJ2BdKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLG9wY29kZTp7cGF0dGVybjovXFxiKD86YWRjfGFuZHxhc2x8YmNjfGJjc3xiZXF8Yml0fGJtaXxibmV8YnBsfGJya3xidmN8YnZzfGNsY3xjbGR8Y2xpfGNsdnxjbXB8Y3B4fGNweXxkZWN8ZGV4fGRleXxlb3J8aW5jfGlueHxpbnl8am1wfGpzcnxsZGF8bGR4fGxkeXxsc3J8bm9wfG9yYXxwaGF8cGhwfHBsYXxwbHB8cm9sfHJvcnxydGl8cnRzfHNiY3xzZWN8c2VkfHNlaXxzdGF8c3R4fHN0eXx0YXh8dGF5fHRzeHx0eGF8dHhzfHR5YXxBREN8QU5EfEFTTHxCQ0N8QkNTfEJFUXxCSVR8Qk1JfEJORXxCUEx8QlJLfEJWQ3xCVlN8Q0xDfENMRHxDTEl8Q0xWfENNUHxDUFh8Q1BZfERFQ3xERVh8REVZfEVPUnxJTkN8SU5YfElOWXxKTVB8SlNSfExEQXxMRFh8TERZfExTUnxOT1B8T1JBfFBIQXxQSFB8UExBfFBMUHxST0x8Uk9SfFJUSXxSVFN8U0JDfFNFQ3xTRUR8U0VJfFNUQXxTVFh8U1RZfFRBWHxUQVl8VFNYfFRYQXxUWFN8VFlBKVxcYi8sYWxpYXM6XCJwcm9wZXJ0eVwifSxoZXhudW1iZXI6e3BhdHRlcm46LyM/XFwkW1xcZGEtZl17Miw0fS9pLGFsaWFzOlwic3RyaW5nXCJ9LGJpbmFyeW51bWJlcjp7cGF0dGVybjovIz8lWzAxXSsvLGFsaWFzOlwic3RyaW5nXCJ9LGRlY2ltYWxudW1iZXI6e3BhdHRlcm46LyM/XFxkKy8sYWxpYXM6XCJzdHJpbmdcIn0scmVnaXN0ZXI6e3BhdHRlcm46L1xcYlt4eWFdXFxiL2ksYWxpYXM6XCJ2YXJpYWJsZVwifX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImFzbTY1MDJcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmFzcG5ldD1lLmxhbmd1YWdlcy5leHRlbmQoXCJtYXJrdXBcIix7XCJwYWdlLWRpcmVjdGl2ZSB0YWdcIjp7cGF0dGVybjovPCVcXHMqQC4qJT4vaSxpbnNpZGU6e1wicGFnZS1kaXJlY3RpdmUgdGFnXCI6LzwlXFxzKkBcXHMqKD86QXNzZW1ibHl8Q29udHJvbHxJbXBsZW1lbnRzfEltcG9ydHxNYXN0ZXIoPzpUeXBlKT98T3V0cHV0Q2FjaGV8UGFnZXxQcmV2aW91c1BhZ2VUeXBlfFJlZmVyZW5jZXxSZWdpc3Rlcik/fCU+L2kscmVzdDplLmxhbmd1YWdlcy5tYXJrdXAudGFnLmluc2lkZX19LFwiZGlyZWN0aXZlIHRhZ1wiOntwYXR0ZXJuOi88JS4qJT4vaSxpbnNpZGU6e1wiZGlyZWN0aXZlIHRhZ1wiOi88JVxccyo/WyQ9JSM6XXswLDJ9fCU+L2kscmVzdDplLmxhbmd1YWdlcy5jc2hhcnB9fX0pLGUubGFuZ3VhZ2VzLmFzcG5ldC50YWcucGF0dGVybj0vPCg/ISUpXFwvP1teXFxzPlxcL10rKD86XFxzK1teXFxzPlxcLz1dKyg/Oj0oPzooXCJ8JykoPzpcXFxcW1xcc1xcU118KD8hXFwxKVteXFxcXF0pKlxcMXxbXlxccydcIj49XSspKT8pKlxccypcXC8/Pi9pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImluc2lkZVwiLFwicHVuY3R1YXRpb25cIix7XCJkaXJlY3RpdmUgdGFnXCI6ZS5sYW5ndWFnZXMuYXNwbmV0W1wiZGlyZWN0aXZlIHRhZ1wiXX0sZS5sYW5ndWFnZXMuYXNwbmV0LnRhZy5pbnNpZGVbXCJhdHRyLXZhbHVlXCJdKSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJhc3BuZXRcIixcImNvbW1lbnRcIix7XCJhc3AgY29tbWVudFwiOi88JS0tW1xcc1xcU10qPy0tJT4vfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiYXNwbmV0XCIsZS5sYW5ndWFnZXMuamF2YXNjcmlwdD9cInNjcmlwdFwiOlwidGFnXCIse1wiYXNwIHNjcmlwdFwiOntwYXR0ZXJuOi8oPHNjcmlwdCg/PS4qcnVuYXQ9WydcIl0/c2VydmVyWydcIl0/KVtcXHNcXFNdKj8+KVtcXHNcXFNdKj8oPz08XFwvc2NyaXB0PikvaSxsb29rYmVoaW5kOiEwLGluc2lkZTplLmxhbmd1YWdlcy5jc2hhcnB8fHt9fX0pfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJhc3BuZXRcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmF1dG9ob3RrZXk9e2NvbW1lbnQ6e3BhdHRlcm46LyheW15cIjtcXG5dKihcIlteXCJcXG5dKj9cIlteXCJcXG5dKj8pKikoPzo7LiokfF5cXHMqXFwvXFwqW1xcc1xcU10qXFxuXFwqXFwvKS9tLGxvb2tiZWhpbmQ6ITB9LHN0cmluZzovXCIoPzpbXlwiXFxuXFxyXXxcIlwiKSpcIi9tLGZ1bmN0aW9uOi9bXigpOyBcXHQsXFxuKypcXC09Pz46XFxcXFxcLzwmJVxcW1xcXV0rPyg/PVxcKCkvbSx0YWc6L15bIFxcdF0qW15cXHM6XSs/KD89Oig/OlteOl18JCkpL20sdmFyaWFibGU6LyVcXHcrJS8sbnVtYmVyOi9cXGIweFtcXGRBLUZhLWZdK1xcYnwoPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzpbRWVdLT9cXGQrKT8vLG9wZXJhdG9yOi9cXD98XFwvXFwvPz0/fDo9fFxcfFs9fF0/fCZbPSZdP3xcXCtbPStdP3wtWz0tXT98XFwqWz0qXT98PCg/Ojw9P3w+fD0pP3w+Pj89P3xbLl4hPX5dPT98XFxiKD86QU5EfE5PVHxPUilcXGIvLHB1bmN0dWF0aW9uOi9be31bXFxdKCk6LF0vLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2UpXFxiLyxzZWxlY3RvcjovXFxiKD86QXV0b1RyaW18QmxvY2tJbnB1dHxCcmVha3xDbGlja3xDbGlwV2FpdHxDb250aW51ZXxDb250cm9sfENvbnRyb2xDbGlja3xDb250cm9sRm9jdXN8Q29udHJvbEdldHxDb250cm9sR2V0Rm9jdXN8Q29udHJvbEdldFBvc3xDb250cm9sR2V0VGV4dHxDb250cm9sTW92ZXxDb250cm9sU2VuZHxDb250cm9sU2VuZFJhd3xDb250cm9sU2V0VGV4dHxDb29yZE1vZGV8Q3JpdGljYWx8RGV0ZWN0SGlkZGVuVGV4dHxEZXRlY3RIaWRkZW5XaW5kb3dzfERyaXZlfERyaXZlR2V0fERyaXZlU3BhY2VGcmVlfEVudkFkZHxFbnZEaXZ8RW52R2V0fEVudk11bHR8RW52U2V0fEVudlN1YnxFbnZVcGRhdGV8RXhpdHxFeGl0QXBwfEZpbGVBcHBlbmR8RmlsZUNvcHl8RmlsZUNvcHlEaXJ8RmlsZUNyZWF0ZURpcnxGaWxlQ3JlYXRlU2hvcnRjdXR8RmlsZURlbGV0ZXxGaWxlRW5jb2Rpbmd8RmlsZUdldEF0dHJpYnxGaWxlR2V0U2hvcnRjdXR8RmlsZUdldFNpemV8RmlsZUdldFRpbWV8RmlsZUdldFZlcnNpb258RmlsZUluc3RhbGx8RmlsZU1vdmV8RmlsZU1vdmVEaXJ8RmlsZVJlYWR8RmlsZVJlYWRMaW5lfEZpbGVSZWN5Y2xlfEZpbGVSZWN5Y2xlRW1wdHl8RmlsZVJlbW92ZURpcnxGaWxlU2VsZWN0RmlsZXxGaWxlU2VsZWN0Rm9sZGVyfEZpbGVTZXRBdHRyaWJ8RmlsZVNldFRpbWV8Rm9ybWF0VGltZXxHZXRLZXlTdGF0ZXxHb3N1YnxHb3RvfEdyb3VwQWN0aXZhdGV8R3JvdXBBZGR8R3JvdXBDbG9zZXxHcm91cERlYWN0aXZhdGV8R3VpfEd1aUNvbnRyb2x8R3VpQ29udHJvbEdldHxIb3RrZXl8SW1hZ2VTZWFyY2h8SW5pRGVsZXRlfEluaVJlYWR8SW5pV3JpdGV8SW5wdXR8SW5wdXRCb3h8S2V5V2FpdHxMaXN0SG90a2V5c3xMaXN0TGluZXN8TGlzdFZhcnN8TG9vcHxNZW51fE1vdXNlQ2xpY2t8TW91c2VDbGlja0RyYWd8TW91c2VHZXRQb3N8TW91c2VNb3ZlfE1zZ0JveHxPbkV4aXR8T3V0cHV0RGVidWd8UGF1c2V8UGl4ZWxHZXRDb2xvcnxQaXhlbFNlYXJjaHxQb3N0TWVzc2FnZXxQcm9jZXNzfFByb2dyZXNzfFJhbmRvbXxSZWdEZWxldGV8UmVnUmVhZHxSZWdXcml0ZXxSZWxvYWR8UmVwZWF0fFJldHVybnxSdW58UnVuQXN8UnVuV2FpdHxTZW5kfFNlbmRFdmVudHxTZW5kSW5wdXR8U2VuZE1lc3NhZ2V8U2VuZE1vZGV8U2VuZFBsYXl8U2VuZFJhd3xTZXRCYXRjaExpbmVzfFNldENhcHNsb2NrU3RhdGV8U2V0Q29udHJvbERlbGF5fFNldERlZmF1bHRNb3VzZVNwZWVkfFNldEVudnxTZXRGb3JtYXR8U2V0S2V5RGVsYXl8U2V0TW91c2VEZWxheXxTZXROdW1sb2NrU3RhdGV8U2V0U2Nyb2xsTG9ja1N0YXRlfFNldFN0b3JlQ2Fwc2xvY2tNb2RlfFNldFRpbWVyfFNldFRpdGxlTWF0Y2hNb2RlfFNldFdpbkRlbGF5fFNldFdvcmtpbmdEaXJ8U2h1dGRvd258U2xlZXB8U29ydHxTb3VuZEJlZXB8U291bmRHZXR8U291bmRHZXRXYXZlVm9sdW1lfFNvdW5kUGxheXxTb3VuZFNldHxTb3VuZFNldFdhdmVWb2x1bWV8U3BsYXNoSW1hZ2V8U3BsYXNoVGV4dE9mZnxTcGxhc2hUZXh0T258U3BsaXRQYXRofFN0YXR1c0JhckdldFRleHR8U3RhdHVzQmFyV2FpdHxTdHJpbmdDYXNlU2Vuc2V8U3RyaW5nR2V0UG9zfFN0cmluZ0xlZnR8U3RyaW5nTGVufFN0cmluZ0xvd2VyfFN0cmluZ01pZHxTdHJpbmdSZXBsYWNlfFN0cmluZ1JpZ2h0fFN0cmluZ1NwbGl0fFN0cmluZ1RyaW1MZWZ0fFN0cmluZ1RyaW1SaWdodHxTdHJpbmdVcHBlcnxTdXNwZW5kfFN5c0dldHxUaHJlYWR8VG9vbFRpcHxUcmFuc2Zvcm18VHJheVRpcHxVUkxEb3dubG9hZFRvRmlsZXxXaW5BY3RpdmF0ZXxXaW5BY3RpdmF0ZUJvdHRvbXxXaW5DbG9zZXxXaW5HZXR8V2luR2V0QWN0aXZlU3RhdHN8V2luR2V0QWN0aXZlVGl0bGV8V2luR2V0Q2xhc3N8V2luR2V0UG9zfFdpbkdldFRleHR8V2luR2V0VGl0bGV8V2luSGlkZXxXaW5LaWxsfFdpbk1heGltaXplfFdpbk1lbnVTZWxlY3RJdGVtfFdpbk1pbmltaXplfFdpbk1pbmltaXplQWxsfFdpbk1pbmltaXplQWxsVW5kb3xXaW5Nb3ZlfFdpblJlc3RvcmV8V2luU2V0fFdpblNldFRpdGxlfFdpblNob3d8V2luV2FpdHxXaW5XYWl0QWN0aXZlfFdpbldhaXRDbG9zZXxXaW5XYWl0Tm90QWN0aXZlKVxcYi9pLGNvbnN0YW50Oi9cXGIoPzphX2Foa3BhdGh8YV9haGt2ZXJzaW9ufGFfYXBwZGF0YXxhX2FwcGRhdGFjb21tb258YV9hdXRvdHJpbXxhX2JhdGNobGluZXN8YV9jYXJldHh8YV9jYXJldHl8YV9jb21wdXRlcm5hbWV8YV9jb250cm9sZGVsYXl8YV9jdXJzb3J8YV9kZHxhX2RkZHxhX2RkZGR8YV9kZWZhdWx0bW91c2VzcGVlZHxhX2Rlc2t0b3B8YV9kZXNrdG9wY29tbW9ufGFfZGV0ZWN0aGlkZGVudGV4dHxhX2RldGVjdGhpZGRlbndpbmRvd3N8YV9lbmRjaGFyfGFfZXZlbnRpbmZvfGFfZXhpdHJlYXNvbnxhX2Zvcm1hdGZsb2F0fGFfZm9ybWF0aW50ZWdlcnxhX2d1aXxhX2d1aWV2ZW50fGFfZ3VpY29udHJvbHxhX2d1aWNvbnRyb2xldmVudHxhX2d1aWhlaWdodHxhX2d1aXdpZHRofGFfZ3VpeHxhX2d1aXl8YV9ob3VyfGFfaWNvbmZpbGV8YV9pY29uaGlkZGVufGFfaWNvbm51bWJlcnxhX2ljb250aXB8YV9pbmRleHxhX2lwYWRkcmVzczF8YV9pcGFkZHJlc3MyfGFfaXBhZGRyZXNzM3xhX2lwYWRkcmVzczR8YV9pc2FkbWlufGFfaXNjb21waWxlZHxhX2lzY3JpdGljYWx8YV9pc3BhdXNlZHxhX2lzc3VzcGVuZGVkfGFfaXN1bmljb2RlfGFfa2V5ZGVsYXl8YV9sYW5ndWFnZXxhX2xhc3RlcnJvcnxhX2xpbmVmaWxlfGFfbGluZW51bWJlcnxhX2xvb3BmaWVsZHxhX2xvb3BmaWxlYXR0cmlifGFfbG9vcGZpbGVkaXJ8YV9sb29wZmlsZWV4dHxhX2xvb3BmaWxlZnVsbHBhdGh8YV9sb29wZmlsZWxvbmdwYXRofGFfbG9vcGZpbGVuYW1lfGFfbG9vcGZpbGVzaG9ydG5hbWV8YV9sb29wZmlsZXNob3J0cGF0aHxhX2xvb3BmaWxlc2l6ZXxhX2xvb3BmaWxlc2l6ZWtifGFfbG9vcGZpbGVzaXplbWJ8YV9sb29wZmlsZXRpbWVhY2Nlc3NlZHxhX2xvb3BmaWxldGltZWNyZWF0ZWR8YV9sb29wZmlsZXRpbWVtb2RpZmllZHxhX2xvb3ByZWFkbGluZXxhX2xvb3ByZWdrZXl8YV9sb29wcmVnbmFtZXxhX2xvb3ByZWdzdWJrZXl8YV9sb29wcmVndGltZW1vZGlmaWVkfGFfbG9vcHJlZ3R5cGV8YV9tZGF5fGFfbWlufGFfbW18YV9tbW18YV9tbW1tfGFfbW9ufGFfbW91c2VkZWxheXxhX21zZWN8YV9teWRvY3VtZW50c3xhX25vd3xhX25vd3V0Y3xhX251bWJhdGNobGluZXN8YV9vc3R5cGV8YV9vc3ZlcnNpb258YV9wcmlvcmhvdGtleXxwcm9ncmFtZmlsZXN8YV9wcm9ncmFtZmlsZXN8YV9wcm9ncmFtc3xhX3Byb2dyYW1zY29tbW9ufGFfc2NyZWVuaGVpZ2h0fGFfc2NyZWVud2lkdGh8YV9zY3JpcHRkaXJ8YV9zY3JpcHRmdWxscGF0aHxhX3NjcmlwdG5hbWV8YV9zZWN8YV9zcGFjZXxhX3N0YXJ0bWVudXxhX3N0YXJ0bWVudWNvbW1vbnxhX3N0YXJ0dXB8YV9zdGFydHVwY29tbW9ufGFfc3RyaW5nY2FzZXNlbnNlfGFfdGFifGFfdGVtcHxhX3RoaXNmdW5jfGFfdGhpc2hvdGtleXxhX3RoaXNsYWJlbHxhX3RoaXNtZW51fGFfdGhpc21lbnVpdGVtfGFfdGhpc21lbnVpdGVtcG9zfGFfdGlja2NvdW50fGFfdGltZWlkbGV8YV90aW1laWRsZXBoeXNpY2FsfGFfdGltZXNpbmNlcHJpb3Job3RrZXl8YV90aW1lc2luY2V0aGlzaG90a2V5fGFfdGl0bGVtYXRjaG1vZGV8YV90aXRsZW1hdGNobW9kZXNwZWVkfGFfdXNlcm5hbWV8YV93ZGF5fGFfd2luZGVsYXl8YV93aW5kaXJ8YV93b3JraW5nZGlyfGFfeWRheXxhX3llYXJ8YV95d2Vla3xhX3l5eXl8Y2xpcGJvYXJkfGNsaXBib2FyZGFsbHxjb21zcGVjfGVycm9ybGV2ZWwpXFxiL2ksYnVpbHRpbjovXFxiKD86YWJzfGFjb3N8YXNjfGFzaW58YXRhbnxjZWlsfGNocnxjbGFzc3xjb3N8ZGxsY2FsbHxleHB8ZmlsZWV4aXN0fEZpbGVvcGVufGZsb29yfGlsX2FkZHxpbF9jcmVhdGV8aWxfZGVzdHJveXxpbnN0cnxzdWJzdHJ8aXNmdW5jfGlzbGFiZWx8SXNPYmplY3R8bG58bG9nfGx2X2FkZHxsdl9kZWxldGV8bHZfZGVsZXRlY29sfGx2X2dldGNvdW50fGx2X2dldG5leHR8bHZfZ2V0dGV4dHxsdl9pbnNlcnR8bHZfaW5zZXJ0Y29sfGx2X21vZGlmeXxsdl9tb2RpZnljb2x8bHZfc2V0aW1hZ2VsaXN0fG1vZHxvbm1lc3NhZ2V8bnVtZ2V0fG51bXB1dHxyZWdpc3RlcmNhbGxiYWNrfHJlZ2V4bWF0Y2h8cmVnZXhyZXBsYWNlfHJvdW5kfHNpbnx0YW58c3FydHxzdHJsZW58c2Jfc2V0aWNvbnxzYl9zZXRwYXJ0c3xzYl9zZXR0ZXh0fHN0cnNwbGl0fHR2X2FkZHx0dl9kZWxldGV8dHZfZ2V0Y2hpbGR8dHZfZ2V0Y291bnR8dHZfZ2V0bmV4dHx0dl9nZXR8dHZfZ2V0cGFyZW50fHR2X2dldHByZXZ8dHZfZ2V0c2VsZWN0aW9ufHR2X2dldHRleHR8dHZfbW9kaWZ5fHZhcnNldGNhcGFjaXR5fHdpbmFjdGl2ZXx3aW5leGlzdHxfX05ld3xfX0NhbGx8X19HZXR8X19TZXQpXFxiL2ksc3ltYm9sOi9cXGIoPzphbHR8YWx0ZG93bnxhbHR1cHxhcHBza2V5fGJhY2tzcGFjZXxicm93c2VyX2JhY2t8YnJvd3Nlcl9mYXZvcml0ZXN8YnJvd3Nlcl9mb3J3YXJkfGJyb3dzZXJfaG9tZXxicm93c2VyX3JlZnJlc2h8YnJvd3Nlcl9zZWFyY2h8YnJvd3Nlcl9zdG9wfGJzfGNhcHNsb2NrfGN0cmx8Y3RybGJyZWFrfGN0cmxkb3dufGN0cmx1cHxkZWx8ZGVsZXRlfGRvd258ZW5kfGVudGVyfGVzY3xlc2NhcGV8ZjF8ZjEwfGYxMXxmMTJ8ZjEzfGYxNHxmMTV8ZjE2fGYxN3xmMTh8ZjE5fGYyfGYyMHxmMjF8ZjIyfGYyM3xmMjR8ZjN8ZjR8ZjV8ZjZ8Zjd8Zjh8Zjl8aG9tZXxpbnN8aW5zZXJ0fGpveTF8am95MTB8am95MTF8am95MTJ8am95MTN8am95MTR8am95MTV8am95MTZ8am95MTd8am95MTh8am95MTl8am95Mnxqb3kyMHxqb3kyMXxqb3kyMnxqb3kyM3xqb3kyNHxqb3kyNXxqb3kyNnxqb3kyN3xqb3kyOHxqb3kyOXxqb3kzfGpveTMwfGpveTMxfGpveTMyfGpveTR8am95NXxqb3k2fGpveTd8am95OHxqb3k5fGpveWF4ZXN8am95YnV0dG9uc3xqb3lpbmZvfGpveW5hbWV8am95cG92fGpveXJ8am95dXxqb3l2fGpveXh8am95eXxqb3l6fGxhbHR8bGF1bmNoX2FwcDF8bGF1bmNoX2FwcDJ8bGF1bmNoX21haWx8bGF1bmNoX21lZGlhfGxidXR0b258bGNvbnRyb2x8bGN0cmx8bGVmdHxsc2hpZnR8bHdpbnxsd2luZG93bnxsd2ludXB8bWJ1dHRvbnxtZWRpYV9uZXh0fG1lZGlhX3BsYXlfcGF1c2V8bWVkaWFfcHJldnxtZWRpYV9zdG9wfG51bWxvY2t8bnVtcGFkMHxudW1wYWQxfG51bXBhZDJ8bnVtcGFkM3xudW1wYWQ0fG51bXBhZDV8bnVtcGFkNnxudW1wYWQ3fG51bXBhZDh8bnVtcGFkOXxudW1wYWRhZGR8bnVtcGFkY2xlYXJ8bnVtcGFkZGVsfG51bXBhZGRpdnxudW1wYWRkb3R8bnVtcGFkZG93bnxudW1wYWRlbmR8bnVtcGFkZW50ZXJ8bnVtcGFkaG9tZXxudW1wYWRpbnN8bnVtcGFkbGVmdHxudW1wYWRtdWx0fG51bXBhZHBnZG58bnVtcGFkcGd1cHxudW1wYWRyaWdodHxudW1wYWRzdWJ8bnVtcGFkdXB8cGdkbnxwZ3VwfHByaW50c2NyZWVufHJhbHR8cmJ1dHRvbnxyY29udHJvbHxyY3RybHxyaWdodHxyc2hpZnR8cndpbnxyd2luZG93bnxyd2ludXB8c2Nyb2xsbG9ja3xzaGlmdHxzaGlmdGRvd258c2hpZnR1cHxzcGFjZXx0YWJ8dXB8dm9sdW1lX2Rvd258dm9sdW1lX211dGV8dm9sdW1lX3VwfHdoZWVsZG93bnx3aGVlbGxlZnR8d2hlZWxyaWdodHx3aGVlbHVwfHhidXR0b24xfHhidXR0b24yKVxcYi9pLGltcG9ydGFudDovI1xcYig/OkFsbG93U2FtZUxpbmVDb21tZW50c3xDbGlwYm9hcmRUaW1lb3V0fENvbW1lbnRGbGFnfEVycm9yU3RkT3V0fEVzY2FwZUNoYXJ8SG90a2V5SW50ZXJ2YWx8SG90a2V5TW9kaWZpZXJUaW1lb3V0fEhvdHN0cmluZ3xJZldpbkFjdGl2ZXxJZldpbkV4aXN0fElmV2luTm90QWN0aXZlfElmV2luTm90RXhpc3R8SW5jbHVkZXxJbmNsdWRlQWdhaW58SW5zdGFsbEtleWJkSG9va3xJbnN0YWxsTW91c2VIb29rfEtleUhpc3Rvcnl8TFRyaW18TWF4SG90a2V5c1BlckludGVydmFsfE1heE1lbXxNYXhUaHJlYWRzfE1heFRocmVhZHNCdWZmZXJ8TWF4VGhyZWFkc1BlckhvdGtleXxOb0VudnxOb1RyYXlJY29ufFBlcnNpc3RlbnR8U2luZ2xlSW5zdGFuY2V8VXNlSG9va3xXaW5BY3RpdmF0ZUZvcmNlKVxcYi9pLGtleXdvcmQ6L1xcYig/OkFib3J0fEFib3ZlTm9ybWFsfEFkZHxhaGtfY2xhc3N8YWhrX2dyb3VwfGFoa19pZHxhaGtfcGlkfEFsbHxBbG51bXxBbHBoYXxBbHRTdWJtaXR8QWx0VGFifEFsdFRhYkFuZE1lbnV8QWx0VGFiTWVudXxBbHRUYWJNZW51RGlzbWlzc3xBbHdheXNPblRvcHxBdXRvU2l6ZXxCYWNrZ3JvdW5kfEJhY2tncm91bmRUcmFuc3xCZWxvd05vcm1hbHxiZXR3ZWVufEJpdEFuZHxCaXROb3R8Qml0T3J8Qml0U2hpZnRMZWZ0fEJpdFNoaWZ0UmlnaHR8Qml0WE9yfEJvbGR8Qm9yZGVyfEJ1dHRvbnxCeVJlZnxDaGVja2JveHxDaGVja2VkfENoZWNrZWRHcmF5fENob29zZXxDaG9vc2VTdHJpbmd8Q2xvc2V8Q29sb3J8Q29tYm9Cb3h8Q29udGFpbnN8Q29udHJvbExpc3R8Q291bnR8RGF0ZXxEYXRlVGltZXxEYXlzfERETHxEZWZhdWx0fERlbGV0ZUFsbHxEZWxpbWl0ZXJ8RGVyZWZ8RGVzdHJveXxEaWdpdHxEaXNhYmxlfERpc2FibGVkfERyb3BEb3duTGlzdHxFZGl0fEVqZWN0fEVsc2V8RW5hYmxlfEVuYWJsZWR8RXJyb3J8RXhpc3R8RXhwYW5kfEV4U3R5bGV8RmlsZVN5c3RlbXxGaXJzdHxGbGFzaHxGbG9hdHxGbG9hdEZhc3R8Rm9jdXN8Rm9udHxmb3J8Z2xvYmFsfEdyaWR8R3JvdXB8R3JvdXBCb3h8R3VpQ2xvc2V8R3VpQ29udGV4dE1lbnV8R3VpRHJvcEZpbGVzfEd1aUVzY2FwZXxHdWlTaXplfEhkcnxIaWRkZW58SGlkZXxIaWdofEhLQ0N8SEtDUnxIS0NVfEhLRVlfQ0xBU1NFU19ST09UfEhLRVlfQ1VSUkVOVF9DT05GSUd8SEtFWV9DVVJSRU5UX1VTRVJ8SEtFWV9MT0NBTF9NQUNISU5FfEhLRVlfVVNFUlN8SEtMTXxIS1V8SG91cnN8SFNjcm9sbHxJY29ufEljb25TbWFsbHxJRHxJRExhc3R8SWZ8SWZFcXVhbHxJZkV4aXN0fElmR3JlYXRlcnxJZkdyZWF0ZXJPckVxdWFsfElmSW5TdHJpbmd8SWZMZXNzfElmTGVzc09yRXF1YWx8SWZNc2dCb3h8SWZOb3RFcXVhbHxJZk5vdEV4aXN0fElmTm90SW5TdHJpbmd8SWZXaW5BY3RpdmV8SWZXaW5FeGlzdHxJZldpbk5vdEFjdGl2ZXxJZldpbk5vdEV4aXN0fElnbm9yZXxJbWFnZUxpc3R8aW58SW50ZWdlcnxJbnRlZ2VyRmFzdHxJbnRlcnJ1cHR8aXN8aXRhbGljfEpvaW58TGFiZWx8TGFzdEZvdW5kfExhc3RGb3VuZEV4aXN0fExpbWl0fExpbmVzfExpc3R8TGlzdEJveHxMaXN0Vmlld3xsb2NhbHxMb2NrfExvZ29mZnxMb3d8TG93ZXJ8TG93ZXJjYXNlfE1haW5XaW5kb3d8TWFyZ2lufE1heGltaXplfE1heGltaXplQm94fE1heFNpemV8TWluaW1pemV8TWluaW1pemVCb3h8TWluTWF4fE1pblNpemV8TWludXRlc3xNb250aENhbHxNb3VzZXxNb3ZlfE11bHRpfE5BfE5vfE5vQWN0aXZhdGV8Tm9EZWZhdWx0fE5vSGlkZXxOb0ljb258Tm9NYWluV2luZG93fG5vcm18Tm9ybWFsfE5vU29ydHxOb1NvcnRIZHJ8Tm9TdGFuZGFyZHxOb3R8Tm9UYWJ8Tm9UaW1lcnN8TnVtYmVyfE9mZnxPa3xPbnxPd25EaWFsb2dzfE93bmVyfFBhcnNlfFBhc3N3b3JkfFBpY3R1cmV8UGl4ZWx8UG9zfFBvd3xQcmlvcml0eXxQcm9jZXNzTmFtZXxSYWRpb3xSYW5nZXxSZWFkfFJlYWRPbmx5fFJlYWx0aW1lfFJlZHJhd3xSRUdfQklOQVJZfFJFR19EV09SRHxSRUdfRVhQQU5EX1NafFJFR19NVUxUSV9TWnxSRUdfU1p8UmVnaW9ufFJlbGF0aXZlfFJlbmFtZXxSZXBvcnR8UmVzaXplfFJlc3RvcmV8UmV0cnl8UkdCfFNjcmVlbnxTZWNvbmRzfFNlY3Rpb258U2VyaWFsfFNldExhYmVsfFNoaWZ0QWx0VGFifFNob3d8U2luZ2xlfFNsaWRlcnxTb3J0RGVzY3xTdGFuZGFyZHxzdGF0aWN8U3RhdHVzfFN0YXR1c0JhcnxTdGF0dXNDRHxzdHJpa2V8U3R5bGV8U3VibWl0fFN5c01lbnV8VGFiMnxUYWJTdG9wfFRleHR8VGhlbWV8VGlsZXxUb2dnbGVDaGVja3xUb2dnbGVFbmFibGV8VG9vbFdpbmRvd3xUb3B8VG9wbW9zdHxUcmFuc0NvbG9yfFRyYW5zcGFyZW50fFRyYXl8VHJlZVZpZXd8VHJ5QWdhaW58VHlwZXxVbkNoZWNrfHVuZGVybGluZXxVbmljb2RlfFVubG9ja3xVcERvd258VXBwZXJ8VXBwZXJjYXNlfFVzZUVycm9yTGV2ZWx8VmlzfFZpc0ZpcnN0fFZpc2libGV8VlNjcm9sbHxXYWl0fFdhaXRDbG9zZXxXYW50Q3RybEF8V2FudEYyfFdhbnRSZXR1cm58V2hpbGV8V3JhcHxYZGlnaXR8eG18eHB8eHN8WWVzfHltfHlwfHlzKVxcYi9pfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiYXV0b2hvdGtleVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuYXV0b2l0PXtjb21tZW50OlsvOy4qLyx7cGF0dGVybjovKF5cXHMqKSMoPzpjb21tZW50cy1zdGFydHxjcylbXFxzXFxTXSo/XlxccyojKD86Y29tbWVudHMtZW5kfGNlKS9tLGxvb2tiZWhpbmQ6ITB9XSx1cmw6e3BhdHRlcm46LyheXFxzKiNpbmNsdWRlXFxzKykoPzo8W15cXHJcXG4+XSs+fFwiW15cXHJcXG5cIl0rXCIpL20sbG9va2JlaGluZDohMH0sc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86XFwxXFwxfCg/IVxcMSlbXlxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwLGluc2lkZTp7dmFyaWFibGU6LyhbJSRAXSlcXHcrXFwxL319LGRpcmVjdGl2ZTp7cGF0dGVybjovKF5cXHMqKSNcXHcrL20sbG9va2JlaGluZDohMCxhbGlhczpcImtleXdvcmRcIn0sZnVuY3Rpb246L1xcYlxcdysoPz1cXCgpLyx2YXJpYWJsZTovWyRAXVxcdysvLGtleXdvcmQ6L1xcYig/OkNhc2V8Q29uc3R8Q29udGludWUoPzpDYXNlfExvb3ApfERlZmF1bHR8RGltfERvfEVsc2UoPzpJZik/fEVuZCg/OkZ1bmN8SWZ8U2VsZWN0fFN3aXRjaHxXaXRoKXxFbnVtfEV4aXQoPzpMb29wKT98Rm9yfEZ1bmN8R2xvYmFsfElmfElufExvY2FsfE5leHR8TnVsbHxSZURpbXxTZWxlY3R8U3RhdGljfFN0ZXB8U3dpdGNofFRoZW58VG98VW50aWx8Vm9sYXRpbGV8V0VuZHxXaGlsZXxXaXRoKVxcYi9pLG51bWJlcjovXFxiKD86MHhbXFxkYS1mXSt8XFxkKyg/OlxcLlxcZCspPyg/OmVbKy1dP1xcZCspPylcXGIvaSxib29sZWFuOi9cXGIoPzpUcnVlfEZhbHNlKVxcYi9pLG9wZXJhdG9yOi88Wz0+XT98Wy0rKlxcLz0mPl09P3xbP15dfFxcYig/OkFuZHxPcnxOb3QpXFxiL2kscHVuY3R1YXRpb246L1tcXFtcXF0oKS4sOl0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiYXV0b2l0XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7dmFyIHQ9e3ZhcmlhYmxlOlt7cGF0dGVybjovXFwkP1xcKFxcKFtcXHNcXFNdKz9cXClcXCkvLGluc2lkZTp7dmFyaWFibGU6W3twYXR0ZXJuOi8oXlxcJFxcKFxcKFtcXHNcXFNdKylcXClcXCkvLGxvb2tiZWhpbmQ6ITB9LC9eXFwkXFwoXFwoL10sbnVtYmVyOi9cXGIweFtcXGRBLUZhLWZdK1xcYnwoPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzpbRWVdLT9cXGQrKT8vLG9wZXJhdG9yOi8tLT98LT18XFwrXFwrP3xcXCs9fCE9P3x+fFxcKlxcKj98XFwqPXxcXC89P3wlPT98PDw9P3w+Pj0/fDw9P3w+PT98PT0/fCYmP3wmPXxcXF49P3xcXHxcXHw/fFxcfD18XFw/fDovLHB1bmN0dWF0aW9uOi9cXChcXCg/fFxcKVxcKT98LHw7L319LHtwYXR0ZXJuOi9cXCRcXChbXildK1xcKXxgW15gXStgLyxncmVlZHk6ITAsaW5zaWRlOnt2YXJpYWJsZTovXlxcJFxcKHxeYHxcXCkkfGAkL319LC9cXCQoPzpbXFx3Iz8qIUBdK3xcXHtbXn1dK1xcfSkvaV19O2UubGFuZ3VhZ2VzLmJhc2g9e3NoZWJhbmc6e3BhdHRlcm46L14jIVxccypcXC9iaW5cXC9iYXNofF4jIVxccypcXC9iaW5cXC9zaC8sYWxpYXM6XCJpbXBvcnRhbnRcIn0sY29tbWVudDp7cGF0dGVybjovKF58W15cIntcXFxcXSkjLiovLGxvb2tiZWhpbmQ6ITB9LHN0cmluZzpbe3BhdHRlcm46LygoPzpefFtePF0pPDxcXHMqKVtcIiddPyhcXHcrPylbXCInXT9cXHMqXFxyP1xcbig/OltcXHNcXFNdKSo/XFxyP1xcblxcMi8sbG9va2JlaGluZDohMCxncmVlZHk6ITAsaW5zaWRlOnR9LHtwYXR0ZXJuOi8oW1wiJ10pKD86XFxcXFtcXHNcXFNdfFxcJFxcKFteKV0rXFwpfGBbXmBdK2B8KD8hXFwxKVteXFxcXF0pKlxcMS8sZ3JlZWR5OiEwLGluc2lkZTp0fV0sdmFyaWFibGU6dC52YXJpYWJsZSxmdW5jdGlvbjp7cGF0dGVybjovKF58W1xcczt8Jl0pKD86YWxpYXN8YXByb3Bvc3xhcHQtZ2V0fGFwdGl0dWRlfGFzcGVsbHxhd2t8YmFzZW5hbWV8YmFzaHxiY3xiZ3xidWlsdGlufGJ6aXAyfGNhbHxjYXR8Y2R8Y2ZkaXNrfGNoZ3JwfGNobW9kfGNob3dufGNocm9vdHxjaGtjb25maWd8Y2tzdW18Y2xlYXJ8Y21wfGNvbW18Y29tbWFuZHxjcHxjcm9ufGNyb250YWJ8Y3NwbGl0fGN1cmx8Y3V0fGRhdGV8ZGN8ZGR8ZGRyZXNjdWV8ZGZ8ZGlmZnxkaWZmM3xkaWd8ZGlyfGRpcmNvbG9yc3xkaXJuYW1lfGRpcnN8ZG1lc2d8ZHV8ZWdyZXB8ZWplY3R8ZW5hYmxlfGVudnxldGh0b29sfGV2YWx8ZXhlY3xleHBhbmR8ZXhwZWN0fGV4cG9ydHxleHByfGZkZm9ybWF0fGZkaXNrfGZnfGZncmVwfGZpbGV8ZmluZHxmbXR8Zm9sZHxmb3JtYXR8ZnJlZXxmc2NrfGZ0cHxmdXNlcnxnYXdrfGdldG9wdHN8Z2l0fGdyZXB8Z3JvdXBhZGR8Z3JvdXBkZWx8Z3JvdXBtb2R8Z3JvdXBzfGd6aXB8aGFzaHxoZWFkfGhlbHB8aGd8aGlzdG9yeXxob3N0bmFtZXxodG9wfGljb252fGlkfGlmY29uZmlnfGlmZG93bnxpZnVwfGltcG9ydHxpbnN0YWxsfGpvYnN8am9pbnxraWxsfGtpbGxhbGx8bGVzc3xsaW5rfGxufGxvY2F0ZXxsb2duYW1lfGxvZ291dHxsb29rfGxwY3xscHJ8bHByaW50fGxwcmludGR8bHByaW50cXxscHJtfGxzfGxzb2Z8bWFrZXxtYW58bWtkaXJ8bWtmaWZvfG1raXNvZnN8bWtub2R8bW9yZXxtb3N0fG1vdW50fG10b29sc3xtdHJ8bXZ8bW12fG5hbm98bmV0c3RhdHxuaWNlfG5sfG5vaHVwfG5vdGlmeS1zZW5kfG5wbXxuc2xvb2t1cHxvcGVufG9wfHBhc3N3ZHxwYXN0ZXxwYXRoY2hrfHBpbmd8cGtpbGx8cG9wZHxwcnxwcmludGNhcHxwcmludGVudnxwcmludGZ8cHN8cHVzaGR8cHZ8cHdkfHF1b3RhfHF1b3RhY2hlY2t8cXVvdGFjdGx8cmFtfHJhcnxyY3B8cmVhZHxyZWFkYXJyYXl8cmVhZG9ubHl8cmVib290fHJlbmFtZXxyZW5pY2V8cmVtc3luY3xyZXZ8cm18cm1kaXJ8cnN5bmN8c2NyZWVufHNjcHxzZGlmZnxzZWR8c2VxfHNlcnZpY2V8c2Z0cHxzaGlmdHxzaG9wdHxzaHV0ZG93bnxzbGVlcHxzbG9jYXRlfHNvcnR8c291cmNlfHNwbGl0fHNzaHxzdGF0fHN0cmFjZXxzdXxzdWRvfHN1bXxzdXNwZW5kfHN5bmN8dGFpbHx0YXJ8dGVlfHRlc3R8dGltZXx0aW1lb3V0fHRpbWVzfHRvdWNofHRvcHx0cmFjZXJvdXRlfHRyYXB8dHJ8dHNvcnR8dHR5fHR5cGV8dWxpbWl0fHVtYXNrfHVtb3VudHx1bmFsaWFzfHVuYW1lfHVuZXhwYW5kfHVuaXF8dW5pdHN8dW5yYXJ8dW5zaGFyfHVwdGltZXx1c2VyYWRkfHVzZXJkZWx8dXNlcm1vZHx1c2Vyc3x1dWVuY29kZXx1dWRlY29kZXx2fHZkaXJ8dml8dm1zdGF0fHdhaXR8d2F0Y2h8d2N8d2dldHx3aGVyZWlzfHdoaWNofHdob3x3aG9hbWl8d3JpdGV8eGFyZ3N8eGRnLW9wZW58eWVzfHppcCkoPz0kfFtcXHM7fCZdKS8sbG9va2JlaGluZDohMH0sa2V5d29yZDp7cGF0dGVybjovKF58W1xcczt8Jl0pKD86bGV0fDp8XFwufGlmfHRoZW58ZWxzZXxlbGlmfGZpfGZvcnxicmVha3xjb250aW51ZXx3aGlsZXxpbnxjYXNlfGZ1bmN0aW9ufHNlbGVjdHxkb3xkb25lfHVudGlsfGVjaG98ZXhpdHxyZXR1cm58c2V0fGRlY2xhcmUpKD89JHxbXFxzO3wmXSkvLGxvb2tiZWhpbmQ6ITB9LGJvb2xlYW46e3BhdHRlcm46LyhefFtcXHM7fCZdKSg/OnRydWV8ZmFsc2UpKD89JHxbXFxzO3wmXSkvLGxvb2tiZWhpbmQ6ITB9LG9wZXJhdG9yOi8mJj98XFx8XFx8P3w9PT98IT0/fDw8PD98Pj58PD0/fD49P3w9fi8scHVuY3R1YXRpb246L1xcJD9cXChcXCg/fFxcKVxcKT98XFwuXFwufFt7fVtcXF07XS99O3ZhciBuPXQudmFyaWFibGVbMV0uaW5zaWRlO24uc3RyaW5nPWUubGFuZ3VhZ2VzLmJhc2guc3RyaW5nLG4uZnVuY3Rpb249ZS5sYW5ndWFnZXMuYmFzaC5mdW5jdGlvbixuLmtleXdvcmQ9ZS5sYW5ndWFnZXMuYmFzaC5rZXl3b3JkLG4uYm9vbGVhbj1lLmxhbmd1YWdlcy5iYXNoLmJvb2xlYW4sbi5vcGVyYXRvcj1lLmxhbmd1YWdlcy5iYXNoLm9wZXJhdG9yLG4ucHVuY3R1YXRpb249ZS5sYW5ndWFnZXMuYmFzaC5wdW5jdHVhdGlvbixlLmxhbmd1YWdlcy5zaGVsbD1lLmxhbmd1YWdlcy5iYXNofShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiYmFzaFwiLHIuYWxpYXNlcz1bXCJzaGVsbFwiXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe3ZhciB0PS8lJT9bfjpcXHddKyU/fCFcXFMrIS8sbj17cGF0dGVybjovXFwvW2Etej9dKyg/PVsgOl18JCk6P3wtW2Etel1cXGJ8LS1bYS16LV0rXFxiL2ltLGFsaWFzOlwiYXR0ci1uYW1lXCIsaW5zaWRlOntwdW5jdHVhdGlvbjovOi99fSxyPS9cIlteXCJdKlwiLyxvPS8oPzpcXGJ8LSlcXGQrXFxiLztlLmxhbmd1YWdlcy5iYXRjaD17Y29tbWVudDpbL146Oi4qL20se3BhdHRlcm46LygoPzpefFsmKF0pWyBcXHRdKilyZW1cXGIoPzpbXl4mKVxcclxcbl18XFxeKD86XFxyXFxufFtcXHNcXFNdKSkqL2ltLGxvb2tiZWhpbmQ6ITB9XSxsYWJlbDp7cGF0dGVybjovXjouKi9tLGFsaWFzOlwicHJvcGVydHlcIn0sY29tbWFuZDpbe3BhdHRlcm46LygoPzpefFsmKF0pWyBcXHRdKilmb3IoPzogP1xcL1thLXo/XSg/OlsgOl0oPzpcIlteXCJdKlwifFxcUyspKT8pKiBcXFMrIGluIFxcKFteKV0rXFwpIGRvL2ltLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntrZXl3b3JkOi9eZm9yXFxifFxcYig/OmlufGRvKVxcYi9pLHN0cmluZzpyLHBhcmFtZXRlcjpuLHZhcmlhYmxlOnQsbnVtYmVyOm8scHVuY3R1YXRpb246L1soKScsXS99fSx7cGF0dGVybjovKCg/Ol58WyYoXSlbIFxcdF0qKWlmKD86ID9cXC9bYS16P10oPzpbIDpdKD86XCJbXlwiXSpcInxcXFMrKSk/KSogKD86bm90ICk/KD86Y21kZXh0dmVyc2lvbiBcXGQrfGRlZmluZWQgXFx3K3xlcnJvcmxldmVsIFxcZCt8ZXhpc3QgXFxTK3woPzpcIlteXCJdKlwifFxcUyspPyg/Oj09fCAoPzplcXV8bmVxfGxzc3xsZXF8Z3RyfGdlcSkgKSg/OlwiW15cIl0qXCJ8XFxTKykpL2ltLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntrZXl3b3JkOi9eaWZcXGJ8XFxiKD86bm90fGNtZGV4dHZlcnNpb258ZGVmaW5lZHxlcnJvcmxldmVsfGV4aXN0KVxcYi9pLHN0cmluZzpyLHBhcmFtZXRlcjpuLHZhcmlhYmxlOnQsbnVtYmVyOm8sb3BlcmF0b3I6L1xcXnw9PXxcXGIoPzplcXV8bmVxfGxzc3xsZXF8Z3RyfGdlcSlcXGIvaX19LHtwYXR0ZXJuOi8oKD86XnxbJigpXSlbIFxcdF0qKWVsc2VcXGIvaW0sbG9va2JlaGluZDohMCxpbnNpZGU6e2tleXdvcmQ6L15lbHNlXFxiL2l9fSx7cGF0dGVybjovKCg/Ol58WyYoXSlbIFxcdF0qKXNldCg/OiA/XFwvW2Etel0oPzpbIDpdKD86XCJbXlwiXSpcInxcXFMrKSk/KSogKD86W15eJilcXHJcXG5dfFxcXig/OlxcclxcbnxbXFxzXFxTXSkpKi9pbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7a2V5d29yZDovXnNldFxcYi9pLHN0cmluZzpyLHBhcmFtZXRlcjpuLHZhcmlhYmxlOlt0LC9cXHcrKD89KD86WypcXC8lK1xcLSZefF18PDx8Pj4pPz0pL10sbnVtYmVyOm8sb3BlcmF0b3I6L1sqXFwvJStcXC0mXnxdPT98PDw9P3w+Pj0/fFshfl89XS8scHVuY3R1YXRpb246L1soKScsXS99fSx7cGF0dGVybjovKCg/Ol58WyYoXSlbIFxcdF0qQD8pXFx3K1xcYig/OlteXiYpXFxyXFxuXXxcXF4oPzpcXHJcXG58W1xcc1xcU10pKSovaW0sbG9va2JlaGluZDohMCxpbnNpZGU6e2tleXdvcmQ6L15cXHcrXFxiL2ksc3RyaW5nOnIscGFyYW1ldGVyOm4sbGFiZWw6e3BhdHRlcm46LyheXFxzKik6XFxTKy9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJwcm9wZXJ0eVwifSx2YXJpYWJsZTp0LG51bWJlcjpvLG9wZXJhdG9yOi9cXF4vfX1dLG9wZXJhdG9yOi9bJkBdLyxwdW5jdHVhdGlvbjovWygpJ10vfX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImJhdGNoXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigzNCk7ZnVuY3Rpb24gbyhlKXtlLnJlZ2lzdGVyKHIpLGUubGFuZ3VhZ2VzLmJpc29uPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNcIix7fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiYmlzb25cIixcImNvbW1lbnRcIix7Ymlzb246e3BhdHRlcm46L15bXFxzXFxTXSo/JSVbXFxzXFxTXSo/JSUvLGluc2lkZTp7Yzp7cGF0dGVybjovJVxce1tcXHNcXFNdKj8lXFx9fFxceyg/Olxce1tefV0qXFx9fFtee31dKSpcXH0vLGluc2lkZTp7ZGVsaW1pdGVyOntwYXR0ZXJuOi9eJT9cXHt8JT9cXH0kLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LFwiYmlzb24tdmFyaWFibGVcIjp7cGF0dGVybjovWyRAXSg/OjxbXlxccz5dKz4pP1tcXHckXSsvLGFsaWFzOlwidmFyaWFibGVcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi88fD4vfX0scmVzdDplLmxhbmd1YWdlcy5jfX0sY29tbWVudDplLmxhbmd1YWdlcy5jLmNvbW1lbnQsc3RyaW5nOmUubGFuZ3VhZ2VzLmMuc3RyaW5nLHByb3BlcnR5Oi9cXFMrKD89OikvLGtleXdvcmQ6LyVcXHcrLyxudW1iZXI6e3BhdHRlcm46LyhefFteQF0pXFxiKD86MHhbXFxkYS1mXSt8XFxkKykvaSxsb29rYmVoaW5kOiEwfSxwdW5jdHVhdGlvbjovJVslP118W3w6O1xcW1xcXTw+XS99fX0pfWUuZXhwb3J0cz1vLG8uZGlzcGxheU5hbWU9XCJiaXNvblwiLG8uYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuYnJhaW5mdWNrPXtwb2ludGVyOntwYXR0ZXJuOi88fD4vLGFsaWFzOlwia2V5d29yZFwifSxpbmNyZW1lbnQ6e3BhdHRlcm46L1xcKy8sYWxpYXM6XCJpbnNlcnRlZFwifSxkZWNyZW1lbnQ6e3BhdHRlcm46Ly0vLGFsaWFzOlwiZGVsZXRlZFwifSxicmFuY2hpbmc6e3BhdHRlcm46L1xcW3xcXF0vLGFsaWFzOlwiaW1wb3J0YW50XCJ9LG9wZXJhdG9yOi9bLixdLyxjb21tZW50Oi9cXFMrL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImJyYWluZnVja1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuYnJvPXtjb21tZW50OntwYXR0ZXJuOi8oXnxbXlxcXFwkXSkjLiovLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntpdGFsaWM6L1xcYig/OlRPRE98RklYTUV8WFhYKVxcYi99fSxzdHJpbmc6e3BhdHRlcm46LyhbXCInXSkoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITB9LGJvb2xlYW46L1xcYltURl1cXGIvLGZ1bmN0aW9uOntwYXR0ZXJuOi8oPzpmdW5jdGlvbnxob29rfGV2ZW50KSBcXHcrKD86OjpcXHcrKT8vLGluc2lkZTp7a2V5d29yZDovXig/OmZ1bmN0aW9ufGhvb2t8ZXZlbnQpL319LHZhcmlhYmxlOntwYXR0ZXJuOi8oPzpnbG9iYWx8bG9jYWwpIFxcdysvaSxpbnNpZGU6e2tleXdvcmQ6Lyg/Omdsb2JhbHxsb2NhbCkvfX0sYnVpbHRpbjovKD86QCg/OmxvYWQoPzotKD86c2lnc3xwbHVnaW4pKT98dW5sb2FkfHByZWZpeGVzfGlmbj9kZWZ8ZWxzZXwoPzplbmQpP2lmfERJUnxGSUxFTkFNRSkpfCg/OiY/KD86cmVkZWZ8cHJpb3JpdHl8bG9nfG9wdGlvbmFsfGRlZmF1bHR8YWRkX2Z1bmN8ZGVsZXRlX2Z1bmN8ZXhwaXJlX2Z1bmN8cmVhZF9leHBpcmV8d3JpdGVfZXhwaXJlfGNyZWF0ZV9leHBpcmV8c3luY2hyb25pemVkfHBlcnNpc3RlbnR8cm90YXRlX2ludGVydmFsfHJvdGF0ZV9zaXplfGVuY3J5cHR8cmF3X291dHB1dHxtZXJnZWFibGV8Z3JvdXB8ZXJyb3JfaGFuZGxlcnx0eXBlX2NvbHVtbikpLyxjb25zdGFudDp7cGF0dGVybjovY29uc3QgXFx3Ky9pLGluc2lkZTp7a2V5d29yZDovY29uc3QvfX0sa2V5d29yZDovXFxiKD86YnJlYWt8bmV4dHxjb250aW51ZXxhbGFybXx1c2luZ3xvZnxhZGR8ZGVsZXRlfGV4cG9ydHxwcmludHxyZXR1cm58c2NoZWR1bGV8d2hlbnx0aW1lb3V0fGFkZHJ8YW55fGJvb2x8Y291bnR8ZG91YmxlfGVudW18ZmlsZXxpbnR8aW50ZXJ2YWx8cGF0dGVybnxvcGFxdWV8cG9ydHxyZWNvcmR8c2V0fHN0cmluZ3xzdWJuZXR8dGFibGV8dGltZXx2ZWN0b3J8Zm9yfGlmfGVsc2V8aW58bW9kdWxlfGZ1bmN0aW9uKVxcYi8sb3BlcmF0b3I6Ly0tP3xcXCtcXCs/fCE9Pz0/fDw9P3w+PT98PT0/PT98JiZ8XFx8XFx8P3xcXD98XFwqfFxcL3x+fFxcXnwlLyxudW1iZXI6L1xcYjB4W1xcZGEtZl0rXFxifCg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OmVbKy1dP1xcZCspPy9pLHB1bmN0dWF0aW9uOi9be31bXFxdOygpLC46XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJicm9cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmNsb2p1cmU9e2NvbW1lbnQ6LzsrLiovLHN0cmluZzovXCIoPzpcXFxcLnxbXlxcXFxcIlxcclxcbl0pKlwiLyxvcGVyYXRvcjovKD86Ojp8Wzp8J10pXFxiW2Etel1bXFx3KishPy1dKlxcYi9pLGtleXdvcmQ6e3BhdHRlcm46LyhbXlxcdysqJz8tXSkoPzpkZWZ8aWZ8ZG98bGV0fFxcLlxcLnxxdW90ZXx2YXJ8LT4+fC0+fGZufGxvb3B8cmVjdXJ8dGhyb3d8dHJ5fG1vbml0b3ItZW50ZXJ8XFwufG5ld3xzZXQhfGRlZlxcLXxkZWZufGRlZm5cXC18ZGVmbWFjcm98ZGVmbXVsdGl8ZGVmbWV0aG9kfGRlZnN0cnVjdHxkZWZvbmNlfGRlY2xhcmV8ZGVmaW5saW5lfGRlZmludGVyZmFjZXxkZWZwcm90b2NvbHw9PXxkZWZyZWNvcmR8Pj18ZGVmdHlwZXw8PXxkZWZwcm9qZWN0fG5zfFxcKnxcXCt8XFwtfFxcL3w8fD18PnxhY2Nlc3NvcnxhZ2VudHxhZ2VudC1lcnJvcnN8YWdldHxhbGVuZ3RofGFsbC1uc3xhbHRlcnxhbmR8YXBwZW5kLWNoaWxkfGFwcGx5fGFycmF5LW1hcHxhc2V0fGFzZXQtYm9vbGVhbnxhc2V0LWJ5dGV8YXNldC1jaGFyfGFzZXQtZG91YmxlfGFzZXQtZmxvYXR8YXNldC1pbnR8YXNldC1sb25nfGFzZXQtc2hvcnR8YXNzZXJ0fGFzc29jfGF3YWl0fGF3YWl0LWZvcnxiZWFufGJpbmRpbmd8Yml0LWFuZHxiaXQtbm90fGJpdC1vcnxiaXQtc2hpZnQtbGVmdHxiaXQtc2hpZnQtcmlnaHR8Yml0LXhvcnxib29sZWFufGJyYW5jaFxcP3xidXRsYXN0fGJ5dGV8Y2FzdHxjaGFyfGNoaWxkcmVufGNsYXNzfGNsZWFyLWFnZW50LWVycm9yc3xjb21tZW50fGNvbW11dGV8Y29tcHxjb21wYXJhdG9yfGNvbXBsZW1lbnR8Y29uY2F0fGNvbmp8Y29uc3xjb25zdGFudGx5fGNvbmR8aWYtbm90fGNvbnN0cnVjdC1wcm94eXxjb250YWluc1xcP3xjb3VudHxjcmVhdGUtbnN8Y3JlYXRlLXN0cnVjdHxjeWNsZXxkZWN8ZGVyZWZ8ZGlmZmVyZW5jZXxkaXNqfGRpc3NvY3xkaXN0aW5jdHxkb2FsbHxkb2N8ZG9ydW58ZG9zZXF8ZG9zeW5jfGRvdGltZXN8ZG90b3xkb3VibGV8ZG93bnxkcm9wfGRyb3Atd2hpbGV8ZWRpdHxlbmRcXD98ZW5zdXJlfGV2YWx8ZXZlcnlcXD98ZmFsc2VcXD98ZmZpcnN0fGZpbGUtc2VxfGZpbHRlcnxmaW5kfGZpbmQtZG9jfGZpbmQtbnN8ZmluZC12YXJ8Zmlyc3R8ZmxvYXR8Zmx1c2h8Zm9yfGZuc2VxfGZyZXN0fGdlbnN5bXxnZXQtcHJveHktY2xhc3N8Z2V0fGhhc2gtbWFwfGhhc2gtc2V0fGlkZW50aWNhbFxcP3xpZGVudGl0eXxpZi1sZXR8aW1wb3J0fGluLW5zfGluY3xpbmRleHxpbnNlcnQtY2hpbGR8aW5zZXJ0LWxlZnR8aW5zZXJ0LXJpZ2h0fGluc3BlY3QtdGFibGV8aW5zcGVjdC10cmVlfGluc3RhbmNlXFw/fGludHxpbnRlcmxlYXZlfGludGVyc2VjdGlvbnxpbnRvfGludG8tYXJyYXl8aXRlcmF0ZXxqb2lufGtleXxrZXlzfGtleXdvcmR8a2V5d29yZFxcP3xsYXN0fGxhenktY2F0fGxhenktY29uc3xsZWZ0fGxlZnRzfGxpbmUtc2VxfGxpc3RcXCp8bGlzdHxsb2FkfGxvYWQtZmlsZXxsb2NraW5nfGxvbmd8bG9vcHxtYWNyb2V4cGFuZHxtYWNyb2V4cGFuZC0xfG1ha2UtYXJyYXl8bWFrZS1ub2RlfG1hcHxtYXAtaW52ZXJ0fG1hcFxcP3xtYXBjYXR8bWF4fG1heC1rZXl8bWVtZm58bWVyZ2V8bWVyZ2Utd2l0aHxtZXRhfG1pbnxtaW4ta2V5fG5hbWV8bmFtZXNwYWNlfG5lZ1xcP3xuZXd8bmV3bGluZXxuZXh0fG5pbFxcP3xub2RlfG5vdHxub3QtYW55XFw/fG5vdC1ldmVyeVxcP3xub3Q9fG5zLWltcG9ydHN8bnMtaW50ZXJuc3xucy1tYXB8bnMtbmFtZXxucy1wdWJsaWNzfG5zLXJlZmVyc3xucy1yZXNvbHZlfG5zLXVubWFwfG50aHxudGhyZXN0fG9yfHBhcnNlfHBhcnRpYWx8cGF0aHxwZWVrfHBvcHxwb3NcXD98cHJ8cHItc3RyfHByaW50fHByaW50LXN0cnxwcmludGxufHByaW50bG4tc3RyfHBybnxwcm4tc3RyfHByb2plY3R8cHJveHl8cHJveHktbWFwcGluZ3N8cXVvdHxyYW5kfHJhbmQtaW50fHJhbmdlfHJlLWZpbmR8cmUtZ3JvdXBzfHJlLW1hdGNoZXJ8cmUtbWF0Y2hlc3xyZS1wYXR0ZXJufHJlLXNlcXxyZWFkfHJlYWQtbGluZXxyZWR1Y2V8cmVmfHJlZi1zZXR8cmVmZXJ8cmVtfHJlbW92ZXxyZW1vdmUtbWV0aG9kfHJlbW92ZS1uc3xyZW5hbWV8cmVuYW1lLWtleXN8cmVwZWF0fHJlcGxhY2V8cmVwbGljYXRlfHJlc29sdmV8cmVzdHxyZXN1bHRzZXQtc2VxfHJldmVyc2V8cmZpcnN0fHJpZ2h0fHJpZ2h0c3xyb290fHJyZXN0fHJzZXF8c2Vjb25kfHNlbGVjdHxzZWxlY3Qta2V5c3xzZW5kfHNlbmQtb2ZmfHNlcXxzZXEtemlwfHNlcVxcP3xzZXR8c2hvcnR8c2x1cnB8c29tZXxzb3J0fHNvcnQtYnl8c29ydGVkLW1hcHxzb3J0ZWQtbWFwLWJ5fHNvcnRlZC1zZXR8c3BlY2lhbC1zeW1ib2xcXD98c3BsaXQtYXR8c3BsaXQtd2l0aHxzdHJ8c3RyaW5nXFw/fHN0cnVjdHxzdHJ1Y3QtbWFwfHN1YnN8c3VidmVjfHN5bWJvbHxzeW1ib2xcXD98c3luY3x0YWtlfHRha2UtbnRofHRha2Utd2hpbGV8dGVzdHx0aW1lfHRvLWFycmF5fHRvLWFycmF5LTJkfHRyZWUtc2VxfHRydWVcXD98dW5pb258dXB8dXBkYXRlLXByb3h5fHZhbHx2YWxzfHZhci1nZXR8dmFyLXNldHx2YXJcXD98dmVjdG9yfHZlY3Rvci16aXB8dmVjdG9yXFw/fHdoZW58d2hlbi1maXJzdHx3aGVuLWxldHx3aGVuLW5vdHx3aXRoLWxvY2FsLXZhcnN8d2l0aC1tZXRhfHdpdGgtb3Blbnx3aXRoLW91dC1zdHJ8eG1sLXNlcXx4bWwtemlwfHplcm9cXD98emlwbWFwfHppcHBlcikoPz1bXlxcdysqJz8tXSkvLGxvb2tiZWhpbmQ6ITB9LGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2V8bmlsKVxcYi8sbnVtYmVyOi9cXGJbMC05QS1GYS1mXStcXGIvLHB1bmN0dWF0aW9uOi9be31cXFtcXF0oKSxdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImNsb2p1cmVcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXt2YXIgdD0vIyg/IVxceykuKy8sbj17cGF0dGVybjovI1xce1tefV0rXFx9LyxhbGlhczpcInZhcmlhYmxlXCJ9O2UubGFuZ3VhZ2VzLmNvZmZlZXNjcmlwdD1lLmxhbmd1YWdlcy5leHRlbmQoXCJqYXZhc2NyaXB0XCIse2NvbW1lbnQ6dCxzdHJpbmc6W3twYXR0ZXJuOi8nKD86XFxcXFtcXHNcXFNdfFteXFxcXCddKSonLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi9cIig/OlxcXFxbXFxzXFxTXXxbXlxcXFxcIl0pKlwiLyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOm59fV0sa2V5d29yZDovXFxiKD86YW5kfGJyZWFrfGJ5fGNhdGNofGNsYXNzfGNvbnRpbnVlfGRlYnVnZ2VyfGRlbGV0ZXxkb3xlYWNofGVsc2V8ZXh0ZW5kfGV4dGVuZHN8ZmFsc2V8ZmluYWxseXxmb3J8aWZ8aW58aW5zdGFuY2VvZnxpc3xpc250fGxldHxsb29wfG5hbWVzcGFjZXxuZXd8bm98bm90fG51bGx8b2Z8b2ZmfG9ufG9yfG93bnxyZXR1cm58c3VwZXJ8c3dpdGNofHRoZW58dGhpc3x0aHJvd3x0cnVlfHRyeXx0eXBlb2Z8dW5kZWZpbmVkfHVubGVzc3x1bnRpbHx3aGVufHdoaWxlfHdpbmRvd3x3aXRofHllc3x5aWVsZClcXGIvLFwiY2xhc3MtbWVtYmVyXCI6e3BhdHRlcm46L0AoPyFcXGQpXFx3Ky8sYWxpYXM6XCJ2YXJpYWJsZVwifX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImNvZmZlZXNjcmlwdFwiLFwiY29tbWVudFwiLHtcIm11bHRpbGluZS1jb21tZW50XCI6e3BhdHRlcm46LyMjI1tcXHNcXFNdKz8jIyMvLGFsaWFzOlwiY29tbWVudFwifSxcImJsb2NrLXJlZ2V4XCI6e3BhdHRlcm46L1xcL3szfVtcXHNcXFNdKj9cXC97M30vLGFsaWFzOlwicmVnZXhcIixpbnNpZGU6e2NvbW1lbnQ6dCxpbnRlcnBvbGF0aW9uOm59fX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImNvZmZlZXNjcmlwdFwiLFwic3RyaW5nXCIse1wiaW5saW5lLWphdmFzY3JpcHRcIjp7cGF0dGVybjovYCg/OlxcXFxbXFxzXFxTXXxbXlxcXFxgXSkqYC8saW5zaWRlOntkZWxpbWl0ZXI6e3BhdHRlcm46L15gfGAkLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LHJlc3Q6ZS5sYW5ndWFnZXMuamF2YXNjcmlwdH19LFwibXVsdGlsaW5lLXN0cmluZ1wiOlt7cGF0dGVybjovJycnW1xcc1xcU10qPycnJy8sZ3JlZWR5OiEwLGFsaWFzOlwic3RyaW5nXCJ9LHtwYXR0ZXJuOi9cIlwiXCJbXFxzXFxTXSo/XCJcIlwiLyxncmVlZHk6ITAsYWxpYXM6XCJzdHJpbmdcIixpbnNpZGU6e2ludGVycG9sYXRpb246bn19XX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImNvZmZlZXNjcmlwdFwiLFwia2V5d29yZFwiLHtwcm9wZXJ0eTovKD8hXFxkKVxcdysoPz1cXHMqOig/ITopKS99KSxkZWxldGUgZS5sYW5ndWFnZXMuY29mZmVlc2NyaXB0W1widGVtcGxhdGUtc3RyaW5nXCJdfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiY29mZmVlc2NyaXB0XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big5Nyk7ZnVuY3Rpb24gbyhlKXtlLnJlZ2lzdGVyKHIpLGZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLmNyeXN0YWw9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwicnVieVwiLHtrZXl3b3JkOlsvXFxiKD86YWJzdHJhY3R8YWxpYXN8YXN8YXNtfGJlZ2lufGJyZWFrfGNhc2V8Y2xhc3N8ZGVmfGRvfGVsc2V8ZWxzaWZ8ZW5kfGVuc3VyZXxlbnVtfGV4dGVuZHxmb3J8ZnVufGlmfGluY2x1ZGV8aW5zdGFuY2Vfc2l6ZW9mfGxpYnxtYWNyb3xtb2R1bGV8bmV4dHxvZnxvdXR8cG9pbnRlcm9mfHByaXZhdGV8cHJvdGVjdGVkfHJlc2N1ZXxyZXR1cm58cmVxdWlyZXxzZWxlY3R8c2VsZnxzaXplb2Z8c3RydWN0fHN1cGVyfHRoZW58dHlwZXx0eXBlb2Z8dW5pbml0aWFsaXplZHx1bmlvbnx1bmxlc3N8dW50aWx8d2hlbnx3aGlsZXx3aXRofHlpZWxkfF9fRElSX198X19FTkRfTElORV9ffF9fRklMRV9ffF9fTElORV9fKVxcYi8se3BhdHRlcm46LyhcXC5cXHMqKSg/OmlzX2F8cmVzcG9uZHNfdG8pXFw/Lyxsb29rYmVoaW5kOiEwfV0sbnVtYmVyOi9cXGIoPzowYlswMV9dKlswMV18MG9bMC03X10qWzAtN118MHhbXFxkYS1mQS1GX10qW1xcZGEtZkEtRl18KD86XFxkKD86W1xcZF9dKlxcZCk/KSg/OlxcLltcXGRfXSpcXGQpPyg/OltlRV1bKy1dP1tcXGRfXSpcXGQpPykoPzpfKD86W3VpZl0oPzo4fDE2fDMyfDY0KSk/KT9cXGIvfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiY3J5c3RhbFwiLFwic3RyaW5nXCIse2F0dHJpYnV0ZTp7cGF0dGVybjovQFxcWy4rP1xcXS8sYWxpYXM6XCJhdHRyLW5hbWVcIixpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXkBcXFt8XFxdJC8sYWxpYXM6XCJ0YWdcIn0scmVzdDplLmxhbmd1YWdlcy5jcnlzdGFsfX0sZXhwYW5zaW9uOlt7cGF0dGVybjovXFx7XFx7Lis/XFx9XFx9LyxpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXlxce1xce3xcXH1cXH0kLyxhbGlhczpcInRhZ1wifSxyZXN0OmUubGFuZ3VhZ2VzLmNyeXN0YWx9fSx7cGF0dGVybjovXFx7JS4rPyVcXH0vLGluc2lkZTp7ZGVsaW1pdGVyOntwYXR0ZXJuOi9eXFx7JXwlXFx9JC8sYWxpYXM6XCJ0YWdcIn0scmVzdDplLmxhbmd1YWdlcy5jcnlzdGFsfX1dfSl9KGUpfWUuZXhwb3J0cz1vLG8uZGlzcGxheU5hbWU9XCJjcnlzdGFsXCIsby5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5jc2hhcnA9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7a2V5d29yZDovXFxiKD86YWJzdHJhY3R8YWRkfGFsaWFzfGFzfGFzY2VuZGluZ3xhc3luY3xhd2FpdHxiYXNlfGJvb2x8YnJlYWt8Ynl0ZXxjYXNlfGNhdGNofGNoYXJ8Y2hlY2tlZHxjbGFzc3xjb25zdHxjb250aW51ZXxkZWNpbWFsfGRlZmF1bHR8ZGVsZWdhdGV8ZGVzY2VuZGluZ3xkb3xkb3VibGV8ZHluYW1pY3xlbHNlfGVudW18ZXZlbnR8ZXhwbGljaXR8ZXh0ZXJufGZhbHNlfGZpbmFsbHl8Zml4ZWR8ZmxvYXR8Zm9yfGZvcmVhY2h8ZnJvbXxnZXR8Z2xvYmFsfGdvdG98Z3JvdXB8aWZ8aW1wbGljaXR8aW58aW50fGludGVyZmFjZXxpbnRlcm5hbHxpbnRvfGlzfGpvaW58bGV0fGxvY2t8bG9uZ3xuYW1lc3BhY2V8bmV3fG51bGx8b2JqZWN0fG9wZXJhdG9yfG9yZGVyYnl8b3V0fG92ZXJyaWRlfHBhcmFtc3xwYXJ0aWFsfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZWFkb25seXxyZWZ8cmVtb3ZlfHJldHVybnxzYnl0ZXxzZWFsZWR8c2VsZWN0fHNldHxzaG9ydHxzaXplb2Z8c3RhY2thbGxvY3xzdGF0aWN8c3RyaW5nfHN0cnVjdHxzd2l0Y2h8dGhpc3x0aHJvd3x0cnVlfHRyeXx0eXBlb2Z8dWludHx1bG9uZ3x1bmNoZWNrZWR8dW5zYWZlfHVzaG9ydHx1c2luZ3x2YWx1ZXx2YXJ8dmlydHVhbHx2b2lkfHZvbGF0aWxlfHdoZXJlfHdoaWxlfHlpZWxkKVxcYi8sc3RyaW5nOlt7cGF0dGVybjovQChcInwnKSg/OlxcMVxcMXxcXFxcW1xcc1xcU118KD8hXFwxKVteXFxcXF0pKlxcMS8sZ3JlZWR5OiEwfSx7cGF0dGVybjovKFwifCcpKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKj9cXDEvLGdyZWVkeTohMH1dLFwiY2xhc3MtbmFtZVwiOlt7cGF0dGVybjovXFxiW0EtWl1cXHcqKD86XFwuXFx3KykqXFxiKD89XFxzK1xcdyspLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cXC4vfX0se3BhdHRlcm46LyhcXFspW0EtWl1cXHcqKD86XFwuXFx3KykqXFxiLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cHVuY3R1YXRpb246L1xcLi99fSx7cGF0dGVybjovKFxcYig/OmNsYXNzfGludGVyZmFjZSlcXHMrW0EtWl1cXHcqKD86XFwuXFx3KykqXFxzKjpcXHMqKVtBLVpdXFx3Kig/OlxcLlxcdyspKlxcYi8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cXC4vfX0se3BhdHRlcm46LygoPzpcXGIoPzpjbGFzc3xpbnRlcmZhY2V8bmV3KVxccyspfCg/OmNhdGNoXFxzK1xcKCkpW0EtWl1cXHcqKD86XFwuXFx3KykqXFxiLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cHVuY3R1YXRpb246L1xcLi99fV0sbnVtYmVyOi9cXGIweFtcXGRhLWZdK1xcYnwoPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKylmPy9pfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiY3NoYXJwXCIsXCJjbGFzcy1uYW1lXCIse1wiZ2VuZXJpYy1tZXRob2RcIjp7cGF0dGVybjovXFx3K1xccyo8W14+XFxyXFxuXSs/PlxccyooPz1cXCgpLyxpbnNpZGU6e2Z1bmN0aW9uOi9eXFx3Ky8sXCJjbGFzcy1uYW1lXCI6e3BhdHRlcm46L1xcYltBLVpdXFx3Kig/OlxcLlxcdyspKlxcYi8saW5zaWRlOntwdW5jdHVhdGlvbjovXFwuL319LGtleXdvcmQ6ZS5sYW5ndWFnZXMuY3NoYXJwLmtleXdvcmQscHVuY3R1YXRpb246L1s8PigpLC46XS99fSxwcmVwcm9jZXNzb3I6e3BhdHRlcm46LyheXFxzKikjLiovbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwicHJvcGVydHlcIixpbnNpZGU6e2RpcmVjdGl2ZTp7cGF0dGVybjovKFxccyojKVxcYig/OmRlZmluZXxlbGlmfGVsc2V8ZW5kaWZ8ZW5kcmVnaW9ufGVycm9yfGlmfGxpbmV8cHJhZ21hfHJlZ2lvbnx1bmRlZnx3YXJuaW5nKVxcYi8sbG9va2JlaGluZDohMCxhbGlhczpcImtleXdvcmRcIn19fX0pLGUubGFuZ3VhZ2VzLmRvdG5ldD1lLmxhbmd1YWdlcy5jc2hhcnB9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImNzaGFycFwiLHIuYWxpYXNlcz1bXCJkb3RuZXRcIl19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmNzcD17ZGlyZWN0aXZlOntwYXR0ZXJuOi9cXGIoPzooPzpiYXNlLXVyaXxmb3JtLWFjdGlvbnxmcmFtZS1hbmNlc3RvcnN8cGx1Z2luLXR5cGVzfHJlZmVycmVyfHJlZmxlY3RlZC14c3N8cmVwb3J0LXRvfHJlcG9ydC11cml8cmVxdWlyZS1zcmktZm9yfHNhbmRib3gpIHwoPzpibG9jay1hbGwtbWl4ZWQtY29udGVudHxkaXNvd24tb3BlbmVyfHVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMpKD86IHw7KXwoPzpjaGlsZHxjb25uZWN0fGRlZmF1bHR8Zm9udHxmcmFtZXxpbWd8bWFuaWZlc3R8bWVkaWF8b2JqZWN0fHNjcmlwdHxzdHlsZXx3b3JrZXIpLXNyYyApL2ksYWxpYXM6XCJrZXl3b3JkXCJ9LHNhZmU6e3BhdHRlcm46LycoPzpzZWxmfG5vbmV8c3RyaWN0LWR5bmFtaWN8KD86bm9uY2UtfHNoYSg/OjI1NnwzODR8NTEyKS0pW2EtekEtWlxcZCs9XFwvXSspJy8sYWxpYXM6XCJzZWxlY3RvclwifSx1bnNhZmU6e3BhdHRlcm46Lyg/Oid1bnNhZmUtaW5saW5lJ3wndW5zYWZlLWV2YWwnfCd1bnNhZmUtaGFzaGVkLWF0dHJpYnV0ZXMnfFxcKikvLGFsaWFzOlwiZnVuY3Rpb25cIn19fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJjc3BcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmNzcy5zZWxlY3Rvcj17cGF0dGVybjovW157fVxcc11bXnt9XSooPz1cXHMqXFx7KS8saW5zaWRlOntcInBzZXVkby1lbGVtZW50XCI6LzooPzphZnRlcnxiZWZvcmV8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8c2VsZWN0aW9uKXw6OlstXFx3XSsvLFwicHNldWRvLWNsYXNzXCI6LzpbLVxcd10rKD86XFwoLipcXCkpPy8sY2xhc3M6L1xcLlstOi5cXHddKy8saWQ6LyNbLTouXFx3XSsvLGF0dHJpYnV0ZTovXFxbW15cXF1dK1xcXS99fSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJjc3NcIixcImZ1bmN0aW9uXCIse2hleGNvZGU6LyNbXFxkYS1mXXszLDh9L2ksZW50aXR5Oi9cXFxcW1xcZGEtZl17MSw4fS9pLG51bWJlcjovW1xcZCUuXSsvfSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImNzc0V4dHJhc1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuZD1lLmxhbmd1YWdlcy5leHRlbmQoXCJjbGlrZVwiLHtzdHJpbmc6Wy9cXGJbcnhdXCIoPzpcXFxcW1xcc1xcU118W15cXFxcXCJdKSpcIltjd2RdPy8sL1xcYnFcIig/OlxcW1tcXHNcXFNdKj9cXF18XFwoW1xcc1xcU10qP1xcKXw8W1xcc1xcU10qPz58XFx7W1xcc1xcU10qP1xcfSlcIi8sL1xcYnFcIihbX2EtekEtWl1bX2EtekEtWlxcZF0qKSg/Olxccj9cXG58XFxyKVtcXHNcXFNdKj8oPzpcXHI/XFxufFxccilcXDFcIi8sL1xcYnFcIiguKVtcXHNcXFNdKj9cXDFcIi8sLycoPzpcXFxcJ3xcXFxcP1teJ10rKScvLC8oW1wiYF0pKD86XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKSpcXDFbY3dkXT8vXSxudW1iZXI6Wy9cXGIweFxcLj9bYS1mXFxkX10rKD86KD8hXFwuXFwuKVxcLlthLWZcXGRfXSopPyg/OnBbKy1dP1thLWZcXGRfXSspP1t1bGZpXSovaSx7cGF0dGVybjovKCg/OlxcLlxcLik/KSg/OlxcYjBiXFwuP3xcXGJ8XFwuKVxcZFtcXGRfXSooPzooPyFcXC5cXC4pXFwuW1xcZF9dKik/KD86ZVsrLV0/XFxkW1xcZF9dKik/W3VsZmldKi9pLGxvb2tiZWhpbmQ6ITB9XSxrZXl3b3JkOi9cXCR8XFxiKD86YWJzdHJhY3R8YWxpYXN8YWxpZ258YXNtfGFzc2VydHxhdXRvfGJvZHl8Ym9vbHxicmVha3xieXRlfGNhc2V8Y2FzdHxjYXRjaHxjZG91YmxlfGNlbnR8Y2Zsb2F0fGNoYXJ8Y2xhc3N8Y29uc3R8Y29udGludWV8Y3JlYWx8ZGNoYXJ8ZGVidWd8ZGVmYXVsdHxkZWxlZ2F0ZXxkZWxldGV8ZGVwcmVjYXRlZHxkb3xkb3VibGV8ZWxzZXxlbnVtfGV4cG9ydHxleHRlcm58ZmFsc2V8ZmluYWx8ZmluYWxseXxmbG9hdHxmb3J8Zm9yZWFjaHxmb3JlYWNoX3JldmVyc2V8ZnVuY3Rpb258Z290b3xpZG91YmxlfGlmfGlmbG9hdHxpbW11dGFibGV8aW1wb3J0fGlub3V0fGludHxpbnRlcmZhY2V8aW52YXJpYW50fGlyZWFsfGxhenl8bG9uZ3xtYWNyb3xtaXhpbnxtb2R1bGV8bmV3fG5vdGhyb3d8bnVsbHxvdXR8b3ZlcnJpZGV8cGFja2FnZXxwcmFnbWF8cHJpdmF0ZXxwcm90ZWN0ZWR8cHVibGljfHB1cmV8cmVhbHxyZWZ8cmV0dXJufHNjb3BlfHNoYXJlZHxzaG9ydHxzdGF0aWN8c3RydWN0fHN1cGVyfHN3aXRjaHxzeW5jaHJvbml6ZWR8dGVtcGxhdGV8dGhpc3x0aHJvd3x0cnVlfHRyeXx0eXBlZGVmfHR5cGVpZHx0eXBlb2Z8dWJ5dGV8dWNlbnR8dWludHx1bG9uZ3x1bmlvbnx1bml0dGVzdHx1c2hvcnR8dmVyc2lvbnx2b2lkfHZvbGF0aWxlfHdjaGFyfHdoaWxlfHdpdGh8X18oPzooPzpGSUxFfE1PRFVMRXxMSU5FfEZVTkNUSU9OfFBSRVRUWV9GVU5DVElPTnxEQVRFfEVPRnxUSU1FfFRJTUVTVEFNUHxWRU5ET1J8VkVSU0lPTilfX3xnc2hhcmVkfHRyYWl0c3x2ZWN0b3J8cGFyYW1ldGVycyl8c3RyaW5nfHdzdHJpbmd8ZHN0cmluZ3xzaXplX3R8cHRyZGlmZl90KVxcYi8sb3BlcmF0b3I6L1xcfFt8PV0/fCZbJj1dP3xcXCtbKz1dP3wtWy09XT98XFwuP1xcLlxcLnw9Wz49XT98ISg/OmlbbnNdXFxifDw+Pz0/fD49P3w9KT98XFxiaVtuc11cXGJ8KD86PFs8Pl0/fD4+Pz4/fFxcXlxcXnxbKlxcLyVefl0pPT8vfSksZS5sYW5ndWFnZXMuZC5jb21tZW50PVsvXlxccyojIS4rLyx7cGF0dGVybjovKF58W15cXFxcXSlcXC9cXCsoPzpcXC9cXCtbXFxzXFxTXSo/XFwrXFwvfFtcXHNcXFNdKSo/XFwrXFwvLyxsb29rYmVoaW5kOiEwfV0uY29uY2F0KGUubGFuZ3VhZ2VzLmQuY29tbWVudCksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiZFwiLFwiY29tbWVudFwiLHtcInRva2VuLXN0cmluZ1wiOntwYXR0ZXJuOi9cXGJxXFx7KD86XFx7W159XSpcXH18W159XSkqXFx9LyxhbGlhczpcInN0cmluZ1wifX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImRcIixcImtleXdvcmRcIix7cHJvcGVydHk6L1xcQkBcXHcqL30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImRcIixcImZ1bmN0aW9uXCIse3JlZ2lzdGVyOntwYXR0ZXJuOi9cXGIoPzpbQUJDRF1bTEhYXXxFW0FCQ0RdWHxFPyg/OkJQfFNQfERJfFNJKXxbRUNTREdGXVN8Q1JbMDIzNF18RFJbMDEyMzY3XXxUUlszLTddfFg/TU1bMC03XXxSW0FCQ0RdWHxbQlNdUEx8UltCU11QfFtEU11JTHxSW0RTXUl8Uig/Ols4OV18MVswLTVdKVtCV0RdP3xYTU0oPzpbODldfDFbMC01XSl8WU1NKD86MVswLTVdfFxcZCkpXFxifFxcYlNUKD86XFwoWzAtN11cXCl8XFxiKS8sYWxpYXM6XCJ2YXJpYWJsZVwifX0pfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJkXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5kYXJ0PWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse3N0cmluZzpbe3BhdHRlcm46L3I/KFwiXCJcInwnJycpW1xcc1xcU10qP1xcMS8sZ3JlZWR5OiEwfSx7cGF0dGVybjovcj8oXCJ8JykoPzpcXFxcLnwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITB9XSxrZXl3b3JkOlsvXFxiKD86YXN5bmN8c3luY3x5aWVsZClcXCovLC9cXGIoPzphYnN0cmFjdHxhc3NlcnR8YXN5bmN8YXdhaXR8YnJlYWt8Y2FzZXxjYXRjaHxjbGFzc3xjb25zdHxjb250aW51ZXxkZWZhdWx0fGRlZmVycmVkfGRvfGR5bmFtaWN8ZWxzZXxlbnVtfGV4cG9ydHxleHRlcm5hbHxleHRlbmRzfGZhY3Rvcnl8ZmluYWx8ZmluYWxseXxmb3J8Z2V0fGlmfGltcGxlbWVudHN8aW1wb3J0fGlufGxpYnJhcnl8bmV3fG51bGx8b3BlcmF0b3J8cGFydHxyZXRocm93fHJldHVybnxzZXR8c3RhdGljfHN1cGVyfHN3aXRjaHx0aGlzfHRocm93fHRyeXx0eXBlZGVmfHZhcnx2b2lkfHdoaWxlfHdpdGh8eWllbGQpXFxiL10sb3BlcmF0b3I6L1xcYmlzIXxcXGIoPzphc3xpcylcXGJ8XFwrXFwrfC0tfCYmfFxcfFxcfHw8PD0/fD4+PT98fig/OlxcLz0/KT98WytcXC0qXFwvJSZefD0hPD5dPT98XFw/L30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImRhcnRcIixcImZ1bmN0aW9uXCIse21ldGFkYXRhOntwYXR0ZXJuOi9AXFx3Ky8sYWxpYXM6XCJzeW1ib2xcIn19KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZGFydFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuZGlmZj17Y29vcmQ6Wy9eKD86XFwqezN9fC17M318XFwrezN9KS4qJC9tLC9eQEAuKkBAJC9tLC9eXFxkKy4qJC9tXSxkZWxldGVkOi9eWy08XS4qJC9tLGluc2VydGVkOi9eWys+XS4qJC9tLGRpZmY6e3BhdHRlcm46L14hKD8hISkuKyQvbSxhbGlhczpcImltcG9ydGFudFwifX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImRpZmZcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe3ZhciB0PXtwcm9wZXJ0eTp7cGF0dGVybjovKD86e3t8eyUpW1xcc1xcU10qPyg/OiV9fH19KS9nLGdyZWVkeTohMCxpbnNpZGU6e3N0cmluZzp7cGF0dGVybjovKFwifCcpKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfSxrZXl3b3JkOi9cXGIoPzpcXHx8bG9hZHx2ZXJiYXRpbXx3aWR0aHJhdGlvfHNzaXxmaXJzdG9mfGZvcnx1cmx8aWZjaGFuZ2VkfGNzcmZfdG9rZW58bG9yZW18aWZub3RlcXVhbHxhdXRvZXNjYXBlfG5vd3x0ZW1wbGF0ZXRhZ3xkZWJ1Z3xjeWNsZXxpZmVxdWFsfHJlZ3JvdXB8Y29tbWVudHxmaWx0ZXJ8ZW5kZmlsdGVyfGlmfHNwYWNlbGVzc3x3aXRofGV4dGVuZHN8YmxvY2t8aW5jbHVkZXxlbHNlfGVtcHR5fGVuZGlmfGVuZGZvcnxhc3xlbmRibG9ja3xlbmRhdXRvZXNjYXBlfGVuZHZlcmJhdGltfHRyYW5zfGVuZHRyYW5zfFtUdF1ydWV8W0ZmXWFsc2V8W05uXW9uZXxpbnxpc3xzdGF0aWN8bWFjcm98ZW5kbWFjcm98Y2FsbHxlbmRjYWxsfHNldHxlbmRzZXR8cmF3fGVuZHJhdylcXGIvLG9wZXJhdG9yOi9bLSs9XT0/fCE9fFxcKlxcKj89P3xcXC9cXC8/PT98PFs8PT5dP3w+Wz0+XT98WyZ8Xn5dfFxcYig/Om9yfGFuZHxub3QpXFxiLyxmdW5jdGlvbjovXFxiKD86X3xhYnN8YWRkfGFkZHNsYXNoZXN8YXR0cnxiYXRjaHxjYWxsYWJsZXxjYXBmaXJzdHxjYXBpdGFsaXplfGNlbnRlcnxjb3VudHxjdXR8ZHxkYXRlfGRlZmF1bHR8ZGVmYXVsdF9pZl9ub25lfGRlZmluZWR8ZGljdHNvcnR8ZGljdHNvcnRyZXZlcnNlZHxkaXZpc2libGVieXxlfGVxdWFsdG98ZXNjYXBlfGVzY2FwZWR8ZXNjYXBlanN8ZXZlbnxmaWxlc2l6ZWZvcm1hdHxmaXJzdHxmbG9hdHxmbG9hdGZvcm1hdHxmb3JjZV9lc2NhcGV8Zm9yY2Vlc2NhcGV8Zm9ybWF0fGdldF9kaWdpdHxncm91cGJ5fGluZGVudHxpbnR8aXJpZW5jb2RlfGl0ZXJhYmxlfGpvaW58bGFzdHxsZW5ndGh8bGVuZ3RoX2lzfGxpbmVicmVha3N8bGluZWJyZWFrc2JyfGxpbmVudW1iZXJzfGxpc3R8bGp1c3R8bG93ZXJ8bWFrZV9saXN0fG1hcHxtYXBwaW5nfG51bWJlcnxvZGR8cGhvbmUybnVtZXJpY3xwbHVyYWxpemV8cHByaW50fHJhbmRvbXxyZWplY3R8cmVqZWN0YXR0cnxyZW1vdmV0YWdzfHJlcGxhY2V8cmV2ZXJzZXxyanVzdHxyb3VuZHxzYWZlfHNhZmVzZXF8c2FtZWFzfHNlbGVjdHxzZWxlY3RhdHRyfHNlcXVlbmNlfHNsaWNlfHNsdWdpZnl8c29ydHxzdHJpbmd8c3RyaW5nZm9ybWF0fHN0cmlwdGFnc3xzdW18dGltZXx0aW1lc2luY2V8dGltZXVudGlsfHRpdGxlfHRyaW18dHJ1bmNhdGV8dHJ1bmNhdGVjaGFyc3x0cnVuY2F0ZWNoYXJzX2h0bWx8dHJ1bmNhdGV3b3Jkc3x0cnVuY2F0ZXdvcmRzX2h0bWx8dW5kZWZpbmVkfHVub3JkZXJlZF9saXN0fHVwcGVyfHVybGVuY29kZXx1cmxpemV8dXJsaXpldHJ1bmN8d29yZGNvdW50fHdvcmR3cmFwfHhtbGF0dHJ8eWVzbm8pXFxiLyxpbXBvcnRhbnQ6L1xcYi0/XFxkKyg/OlxcLlxcZCspP1xcYi8sdmFyaWFibGU6L1xcYlxcdys/XFxiLyxwdW5jdHVhdGlvbjovW1tcXF07KCksLjpdL319fTtlLmxhbmd1YWdlcy5kamFuZ289ZS5sYW5ndWFnZXMuZXh0ZW5kKFwibWFya3VwXCIse2NvbW1lbnQ6Lyg/OjwhLS18eyMpW1xcc1xcU10qPyg/OiN9fC0tPikvfSksZS5sYW5ndWFnZXMuZGphbmdvLnRhZy5wYXR0ZXJuPS88XFwvPyg/IVxcZClbXlxccz5cXC89JDxdKyg/OlxccytbXlxccz5cXC89XSsoPzo9KD86KFwifCcpKD86XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKSpcXDF8W14+PV0rKSk/KSpcXHMqXFwvPz4vaSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJkamFuZ29cIixcImVudGl0eVwiLHQpLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImluc2lkZVwiLFwidGFnXCIsdCxlLmxhbmd1YWdlcy5kamFuZ28udGFnKSxlLmxhbmd1YWdlcy5qYXZhc2NyaXB0JiYoZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiaW5zaWRlXCIsXCJzdHJpbmdcIix0LGUubGFuZ3VhZ2VzLmRqYW5nby5zY3JpcHQpLGUubGFuZ3VhZ2VzLmRqYW5nby5zY3JpcHQuaW5zaWRlLnN0cmluZy5pbnNpZGU9dCksZS5sYW5ndWFnZXMuY3NzJiYoZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiaW5zaWRlXCIsXCJhdHJ1bGVcIix7dGFnOnQucHJvcGVydHl9LGUubGFuZ3VhZ2VzLmRqYW5nby5zdHlsZSksZS5sYW5ndWFnZXMuZGphbmdvLnN0eWxlLmluc2lkZS5zdHJpbmcuaW5zaWRlPXQpLGUubGFuZ3VhZ2VzLmppbmphMj1lLmxhbmd1YWdlcy5kamFuZ299ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImRqYW5nb1wiLHIuYWxpYXNlcz1bXCJqaW5qYTJcIl19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmRvY2tlcj17a2V5d29yZDp7cGF0dGVybjovKF5cXHMqKSg/OkFERHxBUkd8Q01EfENPUFl8RU5UUllQT0lOVHxFTlZ8RVhQT1NFfEZST018SEVBTFRIQ0hFQ0t8TEFCRUx8TUFJTlRBSU5FUnxPTkJVSUxEfFJVTnxTSEVMTHxTVE9QU0lHTkFMfFVTRVJ8Vk9MVU1FfFdPUktESVIpKD89XFxzKS9pbSxsb29rYmVoaW5kOiEwfSxzdHJpbmc6LyhcInwnKSg/Oig/IVxcMSlbXlxcXFxcXHJcXG5dfFxcXFwoPzpcXHJcXG58W1xcc1xcU10pKSpcXDEvLGNvbW1lbnQ6LyMuKi8scHVuY3R1YXRpb246Ly0tLXxcXC5cXC5cXC58WzpbXFxde31cXC0sfD4/XS99LGUubGFuZ3VhZ2VzLmRvY2tlcmZpbGU9ZS5sYW5ndWFnZXMuZG9ja2VyfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJkb2NrZXJcIixyLmFsaWFzZXM9W1wiZG9ja2VyZmlsZVwiXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuZWlmZmVsPXtjb21tZW50Oi8tLS4qLyxzdHJpbmc6W3twYXR0ZXJuOi9cIihbXltdKilcXFtbXFxzXFxTXSo/XFxdXFwxXCIvLGdyZWVkeTohMH0se3BhdHRlcm46L1wiKFtee10qKVxce1tcXHNcXFNdKj9cXH1cXDFcIi8sZ3JlZWR5OiEwfSx7cGF0dGVybjovXCIoPzolXFxzKyV8JS58W14lXCJcXHJcXG5dKSpcIi8sZ3JlZWR5OiEwfV0sY2hhcjovJyg/OiUufFteJSdcXHJcXG5dKSsnLyxrZXl3b3JkOi9cXGIoPzphY3Jvc3N8YWdlbnR8YWxpYXN8YWxsfGFuZHxhdHRhY2hlZHxhc3xhc3NpZ258YXR0cmlidXRlfGNoZWNrfGNsYXNzfGNvbnZlcnR8Y3JlYXRlfEN1cnJlbnR8ZGVidWd8ZGVmZXJyZWR8ZGV0YWNoYWJsZXxkb3xlbHNlfGVsc2VpZnxlbmR8ZW5zdXJlfGV4cGFuZGVkfGV4cG9ydHxleHRlcm5hbHxmZWF0dXJlfGZyb218ZnJvemVufGlmfGltcGxpZXN8aW5oZXJpdHxpbnNwZWN0fGludmFyaWFudHxsaWtlfGxvY2FsfGxvb3B8bm90fG5vdGV8b2Jzb2xldGV8b2xkfG9uY2V8b3J8UHJlY3Vyc29yfHJlZGVmaW5lfHJlbmFtZXxyZXF1aXJlfHJlc2N1ZXxSZXN1bHR8cmV0cnl8c2VsZWN0fHNlcGFyYXRlfHNvbWV8dGhlbnx1bmRlZmluZXx1bnRpbHx2YXJpYW50fFZvaWR8d2hlbnx4b3IpXFxiL2ksYm9vbGVhbjovXFxiKD86VHJ1ZXxGYWxzZSlcXGIvaSxcImNsYXNzLW5hbWVcIjp7cGF0dGVybjovXFxiW0EtWl1bXFxkQS1aX10qXFxiLyxhbGlhczpcImJ1aWx0aW5cIn0sbnVtYmVyOlsvXFxiMFt4Y2JdW1xcZGEtZl0oPzpfKltcXGRhLWZdKSpcXGIvaSwvKD86XFxkKD86XypcXGQpKik/XFwuKD86KD86XFxkKD86XypcXGQpKik/ZVsrLV0/KT9cXGQoPzpfKlxcZCkqfFxcZCg/Ol8qXFxkKSpcXC4/L2ldLHB1bmN0dWF0aW9uOi86PXw8PHw+PnxcXChcXHx8XFx8XFwpfC0+fFxcLig/PVxcdyl8W3t9W1xcXTsoKSw6P10vLG9wZXJhdG9yOi9cXFxcXFxcXHxcXHxcXC5cXC5cXHx8XFwuXFwufFxcL1t+XFwvPV0/fFs+PF09P3xbLSsqXj1+XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJlaWZmZWxcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmVsaXhpcj17Y29tbWVudDp7cGF0dGVybjovIy4qL20sbG9va2JlaGluZDohMH0scmVnZXg6e3BhdHRlcm46L35bclJdKD86KFwiXCJcInwnJycpKD86XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKStcXDF8KFtcXC98XCInXSkoPzpcXFxcLnwoPyFcXDIpW15cXFxcXFxyXFxuXSkrXFwyfFxcKCg/OlxcXFwufFteXFxcXClcXHJcXG5dKStcXCl8XFxbKD86XFxcXC58W15cXFxcXFxdXFxyXFxuXSkrXFxdfFxceyg/OlxcXFwufFteXFxcXH1cXHJcXG5dKStcXH18PCg/OlxcXFwufFteXFxcXD5cXHJcXG5dKSs+KVt1aXNteGZyXSovLGdyZWVkeTohMH0sc3RyaW5nOlt7cGF0dGVybjovfltjQ3NTd1ddKD86KFwiXCJcInwnJycpKD86XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKStcXDF8KFtcXC98XCInXSkoPzpcXFxcLnwoPyFcXDIpW15cXFxcXFxyXFxuXSkrXFwyfFxcKCg/OlxcXFwufFteXFxcXClcXHJcXG5dKStcXCl8XFxbKD86XFxcXC58W15cXFxcXFxdXFxyXFxuXSkrXFxdfFxceyg/OlxcXFwufCNcXHtbXn1dK1xcfXxbXlxcXFx9XFxyXFxuXSkrXFx9fDwoPzpcXFxcLnxbXlxcXFw+XFxyXFxuXSkrPilbY3NhXT8vLGdyZWVkeTohMCxpbnNpZGU6e319LHtwYXR0ZXJuOi8oXCJcIlwifCcnJylbXFxzXFxTXSo/XFwxLyxncmVlZHk6ITAsaW5zaWRlOnt9fSx7cGF0dGVybjovKFwifCcpKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwLGluc2lkZTp7fX1dLGF0b206e3BhdHRlcm46LyhefFteOl0pOlxcdysvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzeW1ib2xcIn0sXCJhdHRyLW5hbWVcIjovXFx3KzooPyE6KS8sY2FwdHVyZTp7cGF0dGVybjovKF58W14mXSkmKD86W14mXFxzXFxkKCldW15cXHMoKV0qfCg/PVxcKCkpLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwiZnVuY3Rpb25cIn0sYXJndW1lbnQ6e3BhdHRlcm46LyhefFteJl0pJlxcZCsvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJ2YXJpYWJsZVwifSxhdHRyaWJ1dGU6e3BhdHRlcm46L0BcXHcrLyxhbGlhczpcInZhcmlhYmxlXCJ9LG51bWJlcjovXFxiKD86MFtib3hdW2EtZlxcZF9dK3xcXGRbXFxkX10qKSg/OlxcLltcXGRfXSspPyg/OmVbKy1dP1tcXGRfXSspP1xcYi9pLGtleXdvcmQ6L1xcYig/OmFmdGVyfGFsaWFzfGFuZHxjYXNlfGNhdGNofGNvbmR8ZGVmKD86Y2FsbGJhY2t8ZXhjZXB0aW9ufGltcGx8bW9kdWxlfHB8cHJvdG9jb2x8c3RydWN0KT98ZG98ZWxzZXxlbmR8Zm58Zm9yfGlmfGltcG9ydHxub3R8b3J8cmVxdWlyZXxyZXNjdWV8dHJ5fHVubGVzc3x1c2V8d2hlbilcXGIvLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2V8bmlsKVxcYi8sb3BlcmF0b3I6Wy9cXGJpblxcYnwmJj98XFx8W3w+XT98XFxcXFxcXFx8Ojp8XFwuXFwuXFwuP3xcXCtcXCs/fC1bLT5dP3w8Wy09Pl18Pj18IT09P3xcXEIhfD0oPzo9PT98Wz5+XSk/fFsqXFwvXl0vLHtwYXR0ZXJuOi8oW148XSk8KD8hPCkvLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oW14+XSk+KD8hPikvLGxvb2tiZWhpbmQ6ITB9XSxwdW5jdHVhdGlvbjovPDx8Pj58Wy4sJVxcW1xcXXt9KCldL30sZS5sYW5ndWFnZXMuZWxpeGlyLnN0cmluZy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuaW5zaWRlPXtpbnRlcnBvbGF0aW9uOntwYXR0ZXJuOi8jXFx7W159XStcXH0vLGluc2lkZTp7ZGVsaW1pdGVyOntwYXR0ZXJuOi9eI1xce3xcXH0kLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LHJlc3Q6ZS5sYW5ndWFnZXMuZWxpeGlyfX19fSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImVsaXhpclwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuZWxtPXtjb21tZW50Oi8tLS4qfHstW1xcc1xcU10qPy19LyxjaGFyOntwYXR0ZXJuOi8nKD86W15cXFxcJ1xcclxcbl18XFxcXCg/OlthYmZucnR2XFxcXCddfFxcZCt8eFswLTlhLWZBLUZdKykpJy8sZ3JlZWR5OiEwfSxzdHJpbmc6W3twYXR0ZXJuOi9cIlwiXCJbXFxzXFxTXSo/XCJcIlwiLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi9cIig/OlteXFxcXFwiXFxyXFxuXXxcXFxcKD86W2FiZm5ydHZcXFxcXCJdfFxcZCt8eFswLTlhLWZBLUZdKykpKlwiLyxncmVlZHk6ITB9XSxpbXBvcnRfc3RhdGVtZW50OntwYXR0ZXJuOi9eXFxzKmltcG9ydFxccytbQS1aXVxcdyooPzpcXC5bQS1aXVxcdyopKig/Olxccythc1xccysoW0EtWl1cXHcqKSg/OlxcLltBLVpdXFx3KikqKT8oPzpcXHMrZXhwb3NpbmdcXHMrKT8vbSxpbnNpZGU6e2tleXdvcmQ6L1xcYig/OmltcG9ydHxhc3xleHBvc2luZylcXGIvfX0sa2V5d29yZDovXFxiKD86YWxpYXN8YXN8Y2FzZXxlbHNlfGV4cG9zaW5nfGlmfGlufGluZml4bHxpbmZpeHJ8bGV0fG1vZHVsZXxvZnx0aGVufHR5cGUpXFxiLyxidWlsdGluOi9cXGIoPzphYnN8YWNvc3xhbHdheXN8YXNpbnxhdGFufGF0YW4yfGNlaWxpbmd8Y2xhbXB8Y29tcGFyZXxjb3N8Y3Vycnl8ZGVncmVlc3xlfGZsaXB8Zmxvb3J8ZnJvbVBvbGFyfGlkZW50aXR5fGlzSW5maW5pdGV8aXNOYU58bG9nQmFzZXxtYXh8bWlufG5lZ2F0ZXxuZXZlcnxub3R8cGl8cmFkaWFuc3xyZW18cm91bmR8c2lufHNxcnR8dGFufHRvRmxvYXR8dG9Qb2xhcnx0b1N0cmluZ3x0cnVuY2F0ZXx0dXJuc3x1bmN1cnJ5fHhvcilcXGIvLG51bWJlcjovXFxiKD86XFxkKyg/OlxcLlxcZCspPyg/OmVbKy1dP1xcZCspP3wweFswLTlhLWZdKylcXGIvaSxvcGVyYXRvcjovXFxzXFwuXFxzfFsrXFwtXFwvKj0uJDw+OiZ8Xj8lI0B+IV17Mix9fFsrXFwtXFwvKj0kPD46JnxePyUjQH4hXS8saHZhcmlhYmxlOi9cXGIoPzpbQS1aXVxcdypcXC4pKlthLXpdXFx3KlxcYi8sY29uc3RhbnQ6L1xcYig/OltBLVpdXFx3KlxcLikqW0EtWl1cXHcqXFxiLyxwdW5jdHVhdGlvbjovW3t9W1xcXXwoKSwuOl0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZWxtXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big5Nyk7ZnVuY3Rpb24gbyhlKXtlLnJlZ2lzdGVyKHIpLGZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLmVyYj1lLmxhbmd1YWdlcy5leHRlbmQoXCJydWJ5XCIse30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImVyYlwiLFwiY29tbWVudFwiLHtkZWxpbWl0ZXI6e3BhdHRlcm46L148JT0/fCU+JC8sYWxpYXM6XCJwdW5jdHVhdGlvblwifX0pLGUuaG9va3MuYWRkKFwiYmVmb3JlLXRva2VuaXplXCIsZnVuY3Rpb24odCl7ZS5sYW5ndWFnZXNbXCJtYXJrdXAtdGVtcGxhdGluZ1wiXS5idWlsZFBsYWNlaG9sZGVycyh0LFwiZXJiXCIsLzwlPT9bXFxzXFxTXSs/JT4vZyl9KSxlLmhvb2tzLmFkZChcImFmdGVyLXRva2VuaXplXCIsZnVuY3Rpb24odCl7ZS5sYW5ndWFnZXNbXCJtYXJrdXAtdGVtcGxhdGluZ1wiXS50b2tlbml6ZVBsYWNlaG9sZGVycyh0LFwiZXJiXCIpfSl9KGUpfWUuZXhwb3J0cz1vLG8uZGlzcGxheU5hbWU9XCJlcmJcIixvLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmVybGFuZz17Y29tbWVudDovJS4rLyxzdHJpbmc6e3BhdHRlcm46L1wiKD86XFxcXC58W15cXFxcXCJcXHJcXG5dKSpcIi8sZ3JlZWR5OiEwfSxcInF1b3RlZC1mdW5jdGlvblwiOntwYXR0ZXJuOi8nKD86XFxcXC58W15cXFxcJ1xcclxcbl0pKycoPz1cXCgpLyxhbGlhczpcImZ1bmN0aW9uXCJ9LFwicXVvdGVkLWF0b21cIjp7cGF0dGVybjovJyg/OlxcXFwufFteXFxcXCdcXHJcXG5dKSsnLyxhbGlhczpcImF0b21cIn0sYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvLGtleXdvcmQ6L1xcYig/OmZ1bnx3aGVufGNhc2V8b2Z8ZW5kfGlmfHJlY2VpdmV8YWZ0ZXJ8dHJ5fGNhdGNoKVxcYi8sbnVtYmVyOlsvXFwkXFxcXD8uLywvXFxkKyNbYS16MC05XSsvaSwvKD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86ZVsrLV0/XFxkKyk/L2ldLGZ1bmN0aW9uOi9cXGJbYS16XVtcXHdAXSooPz1cXCgpLyx2YXJpYWJsZTp7cGF0dGVybjovKF58W15AXSkoPzpcXGJ8XFw/KVtBLVpfXVtcXHdAXSovLGxvb2tiZWhpbmQ6ITB9LG9wZXJhdG9yOlsvWz1cXC88PjpdPXw9WzpcXC9dPXxcXCtcXCs/fC0tP3xbPSpcXC8hXXxcXGIoPzpibm90fGRpdnxyZW18YmFuZHxib3J8Ynhvcnxic2x8YnNyfG5vdHxhbmR8b3J8eG9yfG9yZWxzZXxhbmRhbHNvKVxcYi8se3BhdHRlcm46LyhefFtePF0pPCg/ITwpLyxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W14+XSk+KD8hPikvLGxvb2tiZWhpbmQ6ITB9XSxhdG9tOi9cXGJbYS16XVtcXHdAXSovLHB1bmN0dWF0aW9uOi9bKClbXFxde306OywuI3xdfDw8fD4+L319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImVybGFuZ1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLmZsb3c9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiamF2YXNjcmlwdFwiLHt9KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJmbG93XCIsXCJrZXl3b3JkXCIse3R5cGU6W3twYXR0ZXJuOi9cXGIoPzpbTm5ddW1iZXJ8W1NzXXRyaW5nfFtCYl1vb2xlYW58RnVuY3Rpb258YW55fG1peGVkfG51bGx8dm9pZClcXGIvLGFsaWFzOlwidGFnXCJ9XX0pLGUubGFuZ3VhZ2VzLmZsb3dbXCJmdW5jdGlvbi12YXJpYWJsZVwiXS5wYXR0ZXJuPS9bXyRhLXpcXHhBMC1cXHVGRkZGXVskXFx3XFx4QTAtXFx1RkZGRl0qKD89XFxzKj1cXHMqKD86ZnVuY3Rpb25cXGJ8KD86XFwoW14oKV0qXFwpKD86XFxzKjpcXHMqXFx3Kyk/fFtfJGEtelxceEEwLVxcdUZGRkZdWyRcXHdcXHhBMC1cXHVGRkZGXSopXFxzKj0+KSkvaSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJmbG93XCIsXCJvcGVyYXRvclwiLHtcImZsb3ctcHVuY3R1YXRpb25cIjp7cGF0dGVybjovXFx7XFx8fFxcfFxcfS8sYWxpYXM6XCJwdW5jdHVhdGlvblwifX0pLFwiQXJyYXlcIiE9PWUudXRpbC50eXBlKGUubGFuZ3VhZ2VzLmZsb3cua2V5d29yZCkmJihlLmxhbmd1YWdlcy5mbG93LmtleXdvcmQ9W2UubGFuZ3VhZ2VzLmZsb3cua2V5d29yZF0pLGUubGFuZ3VhZ2VzLmZsb3cua2V5d29yZC51bnNoaWZ0KHtwYXR0ZXJuOi8oXnxbXiRdXFxiKSg/OnR5cGV8b3BhcXVlfGRlY2xhcmV8Q2xhc3MpXFxiKD8hXFwkKS8sbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhefFteJF1cXEIpXFwkKD86YXdhaXR8RGlmZnxFeGFjdHxLZXlzfE9iak1hcHxQcm9wZXJ0eVR5cGV8U2hhcGV8UmVjb3JkfFN1cGVydHlwZXxTdWJ0eXBlfEVudW0pXFxiKD8hXFwkKS8sbG9va2JlaGluZDohMH0pfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZmxvd1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuZm9ydHJhbj17XCJxdW90ZWQtbnVtYmVyXCI6e3BhdHRlcm46L1tCT1pdKFsnXCJdKVtBLUYwLTldK1xcMS9pLGFsaWFzOlwibnVtYmVyXCJ9LHN0cmluZzp7cGF0dGVybjovKD86XFx3K18pPyhbJ1wiXSkoPzpcXDFcXDF8Jig/Olxcclxcbj98XFxuKSg/OlxccyohLisoPzpcXHJcXG4/fFxcbikpP3woPyFcXDEpLikqKD86XFwxfCYpLyxpbnNpZGU6e2NvbW1lbnQ6e3BhdHRlcm46LygmKD86XFxyXFxuP3xcXG4pXFxzKikhLiovLGxvb2tiZWhpbmQ6ITB9fX0sY29tbWVudDp7cGF0dGVybjovIS4qLyxncmVlZHk6ITB9LGJvb2xlYW46L1xcLig/OlRSVUV8RkFMU0UpXFwuKD86X1xcdyspPy9pLG51bWJlcjovKD86XFxiXFxkKyg/OlxcLlxcZCopP3xcXEJcXC5cXGQrKSg/OltFRF1bKy1dP1xcZCspPyg/Ol9cXHcrKT8vaSxrZXl3b3JkOlsvXFxiKD86SU5URUdFUnxSRUFMfERPVUJMRSA/UFJFQ0lTSU9OfENPTVBMRVh8Q0hBUkFDVEVSfExPR0lDQUwpXFxiL2ksL1xcYig/OkVORCA/KT8oPzpCTE9DSyA/REFUQXxET3xGSUxFfEZPUkFMTHxGVU5DVElPTnxJRnxJTlRFUkZBQ0V8TU9EVUxFKD8hIFBST0NFRFVSRSl8UFJPR1JBTXxTRUxFQ1R8U1VCUk9VVElORXxUWVBFfFdIRVJFKVxcYi9pLC9cXGIoPzpBTExPQ0FUQUJMRXxBTExPQ0FURXxCQUNLU1BBQ0V8Q0FMTHxDQVNFfENMT1NFfENPTU1PTnxDT05UQUlOU3xDT05USU5VRXxDWUNMRXxEQVRBfERFQUxMT0NBVEV8RElNRU5TSU9OfERPfEVORHxFUVVJVkFMRU5DRXxFWElUfEVYVEVSTkFMfEZPUk1BVHxHTyA/VE98SU1QTElDSVQoPzogTk9ORSk/fElOUVVJUkV8SU5URU5UfElOVFJJTlNJQ3xNT0RVTEUgUFJPQ0VEVVJFfE5BTUVMSVNUfE5VTExJRll8T1BFTnxPUFRJT05BTHxQQVJBTUVURVJ8UE9JTlRFUnxQUklOVHxQUklWQVRFfFBVQkxJQ3xSRUFEfFJFVFVSTnxSRVdJTkR8U0FWRXxTRUxFQ1R8U1RPUHxUQVJHRVR8V0hJTEV8V1JJVEUpXFxiL2ksL1xcYig/OkFTU0lHTk1FTlR8REVGQVVMVHxFTEVNRU5UQUx8RUxTRXxFTFNFV0hFUkV8RUxTRUlGfEVOVFJZfElOfElOQ0xVREV8SU5PVVR8S0lORHxOVUxMfE9OTFl8T1BFUkFUT1J8T1VUfFBVUkV8UkVDVVJTSVZFfFJFU1VMVHxTRVFVRU5DRXxTVEFUfFRIRU58VVNFKVxcYi9pXSxvcGVyYXRvcjpbL1xcKlxcKnxcXC9cXC98PT58Wz1cXC9dPXxbPD5dPT98Ojp8WytcXC0qPSVdfFxcLig/OkVRfE5FfExUfExFfEdUfEdFfE5PVHxBTkR8T1J8RVFWfE5FUVYpXFwufFxcLltBLVpdK1xcLi9pLHtwYXR0ZXJuOi8oXnwoPyFcXCgpLilcXC8oPyFcXCkpLyxsb29rYmVoaW5kOiEwfV0scHVuY3R1YXRpb246L1xcKFxcL3xcXC9cXCl8WygpLDs6Jl0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZm9ydHJhblwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuZnNoYXJwPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2NvbW1lbnQ6W3twYXR0ZXJuOi8oXnxbXlxcXFxdKVxcKFxcKltcXHNcXFNdKj9cXCpcXCkvLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXnxbXlxcXFw6XSlcXC9cXC8uKi8sbG9va2JlaGluZDohMH1dLGtleXdvcmQ6L1xcYig/OmxldHxyZXR1cm58dXNlfHlpZWxkKSg/OiFcXEJ8XFxiKXxcXGIoYWJzdHJhY3R8YW5kfGFzfGFzc2VydHxiYXNlfGJlZ2lufGNsYXNzfGRlZmF1bHR8ZGVsZWdhdGV8ZG98ZG9uZXxkb3duY2FzdHxkb3dudG98ZWxpZnxlbHNlfGVuZHxleGNlcHRpb258ZXh0ZXJufGZhbHNlfGZpbmFsbHl8Zm9yfGZ1bnxmdW5jdGlvbnxnbG9iYWx8aWZ8aW58aW5oZXJpdHxpbmxpbmV8aW50ZXJmYWNlfGludGVybmFsfGxhenl8bWF0Y2h8bWVtYmVyfG1vZHVsZXxtdXRhYmxlfG5hbWVzcGFjZXxuZXd8bm90fG51bGx8b2Z8b3BlbnxvcnxvdmVycmlkZXxwcml2YXRlfHB1YmxpY3xyZWN8c2VsZWN0fHN0YXRpY3xzdHJ1Y3R8dGhlbnx0b3x0cnVlfHRyeXx0eXBlfHVwY2FzdHx2YWx8dm9pZHx3aGVufHdoaWxlfHdpdGh8YXNyfGxhbmR8bG9yfGxzbHxsc3J8bHhvcnxtb2R8c2lnfGF0b21pY3xicmVha3xjaGVja2VkfGNvbXBvbmVudHxjb25zdHxjb25zdHJhaW50fGNvbnN0cnVjdG9yfGNvbnRpbnVlfGVhZ2VyfGV2ZW50fGV4dGVybmFsfGZpeGVkfGZ1bmN0b3J8aW5jbHVkZXxtZXRob2R8bWl4aW58b2JqZWN0fHBhcmFsbGVsfHByb2Nlc3N8cHJvdGVjdGVkfHB1cmV8c2VhbGVkfHRhaWxjYWxsfHRyYWl0fHZpcnR1YWx8dm9sYXRpbGUpXFxiLyxzdHJpbmc6e3BhdHRlcm46Lyg/OlwiXCJcIltcXHNcXFNdKj9cIlwiXCJ8QFwiKD86XCJcInxbXlwiXSkqXCJ8KFwifCcpKD86XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKSpcXDEpQj8vLGdyZWVkeTohMH0sbnVtYmVyOlsvXFxiMHhbXFxkYS1mQS1GXSsoPzp1bnxsZnxMRik/XFxiLywvXFxiMGJbMDFdKyg/Onl8dXkpP1xcYi8sLyg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OltmbV18ZVsrLV0/XFxkKyk/XFxiL2ksL1xcYlxcZCsoPzpbSWxMc3ldfHVbbHN5XT98VUwpP1xcYi9dfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiZnNoYXJwXCIsXCJrZXl3b3JkXCIse3ByZXByb2Nlc3Nvcjp7cGF0dGVybjovXlteXFxyXFxuXFxTXSojLiovbSxhbGlhczpcInByb3BlcnR5XCIsaW5zaWRlOntkaXJlY3RpdmU6e3BhdHRlcm46LyhcXHMqIylcXGIoPzplbHNlfGVuZGlmfGlmfGxpZ2h0fGxpbmV8bm93YXJuKVxcYi8sbG9va2JlaGluZDohMCxhbGlhczpcImtleXdvcmRcIn19fX0pfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJmc2hhcnBcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmdlZGNvbT17XCJsaW5lLXZhbHVlXCI6e3BhdHRlcm46LyheXFxzKlxcZCsgKyg/OkBcXHdbXFx3IVwiJCUmJygpKissXFwtLlxcLzo7PD0+P1tcXFxcXFxdXmB7fH1+XFx4ODAtXFx4ZmUgI10qQCArKT9cXHcrICspLisvbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7cG9pbnRlcjp7cGF0dGVybjovXkBcXHdbXFx3IVwiJCUmJygpKissXFwtLlxcLzo7PD0+P1tcXFxcXFxdXmB7fH1+XFx4ODAtXFx4ZmUgI10qQCQvLGFsaWFzOlwidmFyaWFibGVcIn19fSx0YWc6e3BhdHRlcm46LyheXFxzKlxcZCsgKyg/OkBcXHdbXFx3IVwiJCUmJygpKissXFwtLlxcLzo7PD0+P1tcXFxcXFxdXmB7fH1+XFx4ODAtXFx4ZmUgI10qQCArKT8pXFx3Ky9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzdHJpbmdcIn0sbGV2ZWw6e3BhdHRlcm46LyheXFxzKilcXGQrL20sbG9va2JlaGluZDohMCxhbGlhczpcIm51bWJlclwifSxwb2ludGVyOntwYXR0ZXJuOi9AXFx3W1xcdyFcIiQlJicoKSorLFxcLS5cXC86Ozw9Pj9bXFxcXFxcXV5ge3x9flxceDgwLVxceGZlICNdKkAvLGFsaWFzOlwidmFyaWFibGVcIn19fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJnZWRjb21cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmdoZXJraW49e3B5c3RyaW5nOntwYXR0ZXJuOi8oXCJcIlwifCcnJylbXFxzXFxTXSs/XFwxLyxhbGlhczpcInN0cmluZ1wifSxjb21tZW50OntwYXR0ZXJuOi8oKD86XnxcXHI/XFxufFxccilbIFxcdF0qKSMuKi8sbG9va2JlaGluZDohMH0sdGFnOntwYXR0ZXJuOi8oKD86XnxcXHI/XFxufFxccilbIFxcdF0qKUBcXFMqLyxsb29rYmVoaW5kOiEwfSxmZWF0dXJlOntwYXR0ZXJuOi8oKD86XnxcXHI/XFxufFxccilbIFxcdF0qKSg/OkFiaWxpdHl8QWhveSBtYXRleSF8QXJ3ZWRkfEFzcGVrdHxCZXNpZ2hlaWQgQmVob2VmdGV8QnVzaW5lc3MgTmVlZHxDYXJhY3RlcmlzdGljYXxDYXJhY3RlcsOtc3RpY2F8RWdlbnNrYWJ8RWdlbnNrYXB8RWlnaW5sZWlraXxGZWF0dXJlfEbEq8SNYXxGaXR1cnxGb25jdGlvbm5hbGl0w6l8Rm9ua3N5b25hbGl0ZXxGdW5jaW9uYWxpZGFkZXxGdW5jaW9uYWxpdGF0fEZ1bmN0aW9uYWxpdGF0ZXxGdW5jxaNpb25hbGl0YXRlfEZ1bmPIm2lvbmFsaXRhdGV8RnVuY3Rpb25hbGl0ZWl0fEZ1bmdzaXxGdW5rY2lhfEZ1bmtjaWphfEZ1bmtjaW9uYWxpdMSBdGV8RnVua2Npb25hbG5vc3R8RnVua2NqYXxGdW5rc2llfEZ1bmt0aW9uYWxpdMOkdHxGdW5rdGlvbmFsaXTDqWl0fEZ1bnppb25hbGl0w6B8SHdhZXR8SHfDpnR8SmVsbGVtesWRfEthcmFrdGVyaXN0aWt8bGFIfExhc3Rub3N0fE1ha3xNb2d1Y25vc3R8TW9ndcSHbm9zdHxNb3pub3N0aXxNb8W+bm9zdGl8T0ggSEFJfE9tYWR1c3xPbWluYWlzdXVzfE9zb2JpbmF8w5Z6ZWxsaWt8cGVyYm9naHxwb1Fib2doIG1hbGphJ3xQb3RyemViYSBiaXpuZXNvd2F8UG/FvmFkYXZla3xQb8W+aWFkYXZrYXxQcmV0dHkgbXVjaHxRYXB8UXUnbWVIICd1dHxTYXZ5YsSXfFTDrW5oIG7Eg25nfFRyYWp0b3xWZXJtb8OrfFZsYXN0bm9zxaV8V8WCYcWbY2l3b8WbxId8Wm5hxI1pbG5vc3R8zpTPhc69zrHPhM+Mz4TOt8+EzrF8zpvOtc65z4TOv8+Fz4HOs86vzrF80JzQvtCz0YPRm9C90L7RgdGCfNCc06nQvNC60LjQvdC70LXQunzQntGB0L7QsdC40L3QsHzQodCy0L7QudGB0YLQstC+fNKu0LfQtdC90YfTmdC70LXQutC70LXQu9C10Lp80KTRg9C90LrRhtC40L7QvdCw0Lt80KTRg9C90LrRhtC40L7QvdCw0LvQvdC+0YHRgnzQpNGD0L3QutGG0LjRj3zQpNGD0L3QutGG0ZbQvtC90LDQu3zXqteb15XXoNeUfNiu2KfYtdmK2Kl82K7YtdmI2LXbjNiqfNi12YTYp9it24zYqnzaqdin2LHZiNio2KfYsSDaqduMINi22LHZiNix2Kp82YjZkNuM2pjar9uMfOCksOClguCkqiDgpLLgpYfgpJZ84KiW4Ki+4Ki44KmA4KiF4KikfOCoqOColeCotiDgqKjgqYHgqLngqL7gqLB84Kiu4KmB4Ki54Ki+4KiC4Kim4Kiw4Ki+fOCwl+CxgeCwo+CwruCxgXzgsrngs4bgsprgs43gsprgsrN84LiE4Lin4Liy4Lih4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LiX4Liy4LiH4LiY4Li44Lij4LiB4Li04LiIfOC4hOC4p+C4suC4oeC4quC4suC4oeC4suC4o+C4lnzguYLguITguKPguIfguKvguKXguLHguIF86riw64qlfOODleOCo+ODvOODgeODo3zlip/og7185qmf6IO9KTooPzpbXjpdKyg/Olxccj9cXG58XFxyfCQpKSovLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntpbXBvcnRhbnQ6e3BhdHRlcm46Lyg6KVteXFxyXFxuXSsvLGxvb2tiZWhpbmQ6ITB9LGtleXdvcmQ6L1teOlxcclxcbl0rOi99fSxzY2VuYXJpbzp7cGF0dGVybjovKCg/Ol58XFxyP1xcbnxcXHIpWyBcXHRdKikoPzpBYnN0cmFjdCBTY2VuYXJpb3xBYnN0cmFrdCBTY2VuYXJpb3xBY2h0ZXJncm9uZHxBZXJ8w4ZyfEFndGVyZ3JvbmR8QWxsIHknYWxsfEFudGVjZWRlbnRlc3xBbnRlY2VkZW50c3xBdGJ1csOwYXLDoXN8QXRidXLDsGFyw6FzaXJ8QXd3dywgbG9vayBtYXRlfEI0fEJhY2tncm91bmR8QmFnZ3J1bmR8QmFrZ3J1bmR8QmFrZ3J1bm58QmFrZ3J1bm51cnxCZWlzcGllbGV8QmVpc3BpbGxlcnxC4buRaSBj4bqjbmh8Q2VmbmRpcnxDZW5hcmlvfENlbsOhcmlvfENlbmFyaW8gZGUgRnVuZG98Q2Vuw6FyaW8gZGUgRnVuZG98Q2VuYXJpb3N8Q2Vuw6FyaW9zfENvbnRlc3RvfENvbnRleHR8Q29udGV4dGV8Q29udGV4dG98Q29udG98Q29udG9ofENvbnRvbmV8RMOmbWl8RGFzYXJ8RGVhZCBtZW4gdGVsbCBubyB0YWxlc3xEZWxpbmVhY2FvIGRvIENlbmFyaW98RGVsaW5lYcOnw6NvIGRvIENlbsOhcmlvfERpcyBpcyB3aGF0IHdlbnQgZG93bnxE4buvIGxp4buHdXxEeWFncmFtIHNlbmFyeW98RHlhZ3JhbSBTZW5hcnlvfEVnemFucHxFamVtcGxvc3xFa3NlbXBsZXJ8RWt6ZW1wbG9qfEVuZ2hyZWlmZnRpYXV8RXNib3pvIGRvIGVzY2VuYXJpb3xFc2NlbmFyaXxFc2NlbmFyaW98RXNlbXBpfEVzcXVlbWEgZGUgbCdlc2NlbmFyaXxFc3F1ZW1hIGRlbCBlc2NlbmFyaW98RXNxdWVtYSBkbyBDZW5hcmlvfEVzcXVlbWEgZG8gQ2Vuw6FyaW98RXhhbXBsZXN8RVhBTVBMWnxFeGVtcGVsfEV4ZW1wbGV8RXhlbXBsZXN8RXhlbXBsb3N8Rmlyc3Qgb2ZmfEZvbm98Rm9yZ2F0w7Nrw7ZueXZ8Rm9yZ2F0w7Nrw7ZueXYgdsOhemxhdHxGdW5kb3xHZcOnbWnFn3xnaGFudG9IfEdydW5kbGFnZXxIYW5uZXJncm9uZHxIw6F0dMOpcnxIZWF2ZSB0b3xJc3RvcmlrfEp1aHR1bWlkfEtlYWRhYW58S2h1bmcga+G7i2NoIGLhuqNufEtodW5nIHTDrG5oIGh14buRbmd8S+G7i2NoIGLhuqNufEtvbmNlcHR8S29uc2VwIHNrZW5hcmlvfEtvbnTDqGtzfEtvbnRla3N0fEtvbnRla3N0YXN8S29udGVrc3RzfEtvbnRleHR8S29udHVybyBkZSBsYSBzY2VuYXJvfExhdGFyIEJlbGFrYW5nfGx1dHxsdXQgY2hvdm5hdGxofGx1dG1leXxMw71zaW5nIEF0YnVyw7BhcsOhc2FyfEzDvXNpbmcgRMOmbWF8TWVuZ2dhcmlza2FuIFNlbmFyaW98TUlTSFVOfE1JU0hVTiBTUlNMWXxtbyd8TsOhxI1ydCBTY2Vuw6FyYXxOw6HEjXJ0IFNjw6luw6HFmWV8TsOhxI1ydCBTY2Vuw6FydXxPcmlzIHNjZW5hcmlqYXzDlnJuZWtsZXJ8T3Nub3ZhfE9zbm92YSBTY2Vuw6FyYXxPc25vdmEgc2PDqW7DocWZZXxPc251dGVrfE96YWRqZXxQYXJhdWdzfFBhdnl6ZMW+aWFpfFDDqWxkw6FrfFBpZW3Ek3JpfFBsYW4gZHUgc2PDqW5hcmlvfFBsYW4gZHUgU2PDqW5hcmlvfFBsYW4gc2VuYXJ5b3xQbGFuIFNlbmFyeW98UGxhbmcgdnVtIFN6ZW5hcmlvfFBvemFkw618UG96YWRpZXxQb3phZGluYXxQcsOta2xhZHl8UMWZw61rbGFkeXxQcmltZXJ8UHJpbWVyaXxQcmltamVyaXxQcnp5a8WCYWR5fFJhYW1zdHNlbmFhcml1bXxSZWNrb24gaXQncyBsaWtlfFJlcmVmb25zfFNjZW7DoXJ8U2PDqW7DocWZfFNjZW5hcmllfFNjZW5hcmlqfFNjZW5hcmlqYWl8U2NlbmFyaWphdXMgxaFhYmxvbmFzfFNjZW5hcmlqaXxTY2VuxIFyaWpzfFNjZW7EgXJpanMgcMSTYyBwYXJhdWdhfFNjZW5hcmlqdXN8U2NlbmFyaW98U2PDqW5hcmlvfFNjZW5hcmlvIEFtbGluZWxsb2x8U2NlbmFyaW8gT3V0bGluZXxTY2VuYXJpbyBUZW1wbGF0ZXxTY2VuYXJpb21hbHxTY2VuYXJpb21hbGx8U2NlbmFyaW9zfFNjZW5hcml1fFNjZW5hcml1c3p8U2NlbmFyb3xTY2hlbWEgZGVsbG8gc2NlbmFyaW98U2Ugw7BlfFNlIHRoZXxTZSDDvmV8U2VuYXJpb3xTZW5hcnlvfFNlbmFyeW8gZGVza3JpcHN5b258U2VuYXJ5byBEZXNrcmlwc3lvbnxTZW5hcnlvIHRhc2xhxJ/EsXxTaGl2ZXIgbWUgdGltYmVyc3xTaXR1xIFjaWphfFNpdHVhaXxTaXR1YXNpZXxTaXR1YXNpZSBVaXRlZW5zZXR0aW5nfFNrZW5hcmlvfFNrZW5hcmlvIGtvbnNlcHxTa2ljYXxTdHJ1Y3R1cmEgc2NlbmFyaXV8U3RydWN0dXLEgyBzY2VuYXJpdXxTdHJ1a3R1cmEgc2NlbmFyaWphfFN0c2VuYWFyaXVtfFN3YXxTd2EgaHdhZXIgc3dhfFN3YSBod8OmciBzd2F8U3phYmxvbiBzY2VuYXJpdXN6YXxTemVuYXJpb3xTemVuYXJpb2dydW5kcmlzc3xUYXBhdWtzZXR8VGFwYXVzfFRhcGF1c2FpaGlvfFRhdXN0fFRhdXN0YXxUZW1wbGF0ZSBLZWFkYWFufFRlbXBsYXRlIFNlbmFyaW98VGVtcGxhdGUgU2l0dWFpfFRoZSB0aGluZyBvZiBpdCBpc3xUw6xuaCBodeG7kW5nfFZhcmlhbnRhaXxWb29yYmVlbGRlfFZvb3JiZWVsZGVufFdoYXJyaW1lYW4gaXN8WW9cXC1ob1xcLWhvfFlvdSdsbCB3YW5uYXxaYcWCb8W8ZW5pYXzOoM6xz4HOsc60zrXOr86zzrzOsc+EzrF8zqDOtc+BzrnOs8+BzrHPhs6uIM6jzrXOvc6xz4HOr86/z4V8zqPOtc69zqzPgc65zrF8zqPOtc69zqzPgc65zr98zqXPgM+MzrLOsc64z4HOv3zQmtC10YDQtdGIfNCa0L7QvdGC0LXQutGB0YJ80JrQvtC90YbQtdC/0YJ80JzQuNGB0LDQu9C70LDRgHzQnNC40YHQvtC70LvQsNGAfNCe0YHQvdC+0LLQsHzQn9C10YDQtdC00YPQvNC+0LLQsHzQn9C+0LfQsNC00LjQvdCwfNCf0YDQtdC00LjRgdGC0L7RgNC40Y980J/RgNC10LTRi9GB0YLQvtGA0LjRj3zQn9GA0LjQutC70LDQtNC4fNCf0YDQuNC80LXRgHzQn9GA0LjQvNC10YDQuHzQn9GA0LjQvNC10YDRi3zQoNCw0LzQutCwINC90LAg0YHRhtC10L3QsNGA0LjQuXzQodC60LjRhtCwfNCh0YLRgNGD0LrRgtGD0YDQsCDRgdGG0LXQvdCw0YDQuNGY0LB80KHRgtGA0YPQutGC0YPRgNCwINGB0YbQtdC90LDRgNC40Y980KHRgtGA0YPQutGC0YPRgNCwINGB0YbQtdC90LDRgNGW0Y580KHRhtC10L3QsNGA0LjQuXzQodGG0LXQvdCw0YDQuNC5INGB0YLRgNGD0LrRgtGD0YDQsNGB0Lh80KHRhtC10L3QsNGA0LjQudC90YvSoyDRgtOp0LfQtdC70LXRiNC1fNCh0YbQtdC90LDRgNC40ZjQuHzQodGG0LXQvdCw0YDQuNC+fNCh0YbQtdC90LDRgNGW0Ll80KLQsNGA0LjRhXzSrtGA0L3TmdC60LvTmdGAfNeT15XXktee15DXldeqfNeo16fXonzXqteR16DXmdeqINeq16jXl9eZ16l816rXqNeX15nXqXzYp9mE2K7ZhNmB2YrYqXzYp9mE2q/ZiNuMINiz2YbYp9ix24zZiHzYp9mF2KvZhNipfNm+2LMg2YXZhti42LF82LLZhduM2YbZh3zYs9mG2KfYsduM2Yh82LPZitmG2KfYsdmK2Yh82LPZitmG2KfYsdmK2Ygg2YXYrti32Ld82YXYq9in2YTbjNq6fNmF2YbYuNixINmG2KfZhduSINqp2Kcg2K7Yp9qp24F82YXZhti42LHZhtin2YXbgXzZhtmF2YjZhtmHINmH2Kd84KSJ4KSm4KS+4KS54KSw4KSjfOCkquCksOCkv+CkpuClg+CktuCljeCkr3zgpKrgpLDgpL/gpKbgpYPgpLbgpY3gpK8g4KSw4KWC4KSq4KSw4KWH4KSW4KS+fOCkquClg+Ckt+CljeCkoOCkreClguCkruCkv3zgqIngqKbgqL7gqLngqLDgqKjgqL7gqIJ84Kiq4Kif4KiV4Kil4Ki+fOCoquCon+ColeCopeCoviDgqKLgqL7gqILgqJrgqL584Kiq4Kif4KiV4Kil4Ki+IOCosOCpguCoqiDgqLDgqYfgqJbgqL584Kiq4Ki/4Kib4KmL4KiV4KmcfOCwieCwpuCwvuCwueCwsOCwo+CwsuCxgXzgsJXgsKXgsKjgsIJ84LCo4LGH4LCq4LCl4LGN4LCv4LCCfOCwuOCwqOCxjeCwqOCwv+CwteCxh+CwtuCwgnzgsongsqbgsr7gsrngsrDgsqPgs4bgspfgsrPgs4F84LKV4LKl4LK+4LK44LK+4LKw4LK+4LKC4LK2fOCyteCyv+CyteCysOCyo+Czhnzgsrngsr/gsqjgs43gsqjgs4bgsrLgs4Z84LmC4LiE4Lij4LiH4Liq4Lij4LmJ4Liy4LiH4LiC4Lit4LiH4LmA4Lir4LiV4Li44LiB4Liy4Lij4LiT4LmMfOC4iuC4uOC4lOC4guC4reC4h+C4leC4seC4p+C4reC4ouC5iOC4suC4h3zguIrguLjguJTguILguK3guIfguYDguKvguJXguLjguIHguLLguKPguJPguYx84LmB4LiZ4Lin4LiE4Li04LiUfOC4quC4o+C4uOC4m+C5gOC4q+C4leC4uOC4geC4suC4o+C4k+C5jHzguYDguKvguJXguLjguIHguLLguKPguJPguYx867Cw6rK9fOyLnOuCmOumrOyYpHzsi5zrgpjrpqzsmKQg6rCc7JqUfOyYiHzjgrXjg7Pjg5fjg6t844K344OK44Oq44KqfOOCt+ODiuODquOCquOCouOCpuODiOODqeOCpOODs3zjgrfjg4rjg6rjgqrjg4bjg7Pjg5fjg6x844K344OK44Oq44Kq44OG44Oz44OX44Os44O844OIfOODhuODs+ODl+ODrHzkvot85L6L5a2QfOWJp+acrHzliafmnKzlpKfnurJ85YqH5pysfOWKh+acrOWkp+e2sXzlnLrmma985Zy65pmv5aSn57qyfOWgtOaZr3zloLTmma/lpKfntrF86IOM5pmvKTpbXjpcXHJcXG5dKi8sbG9va2JlaGluZDohMCxpbnNpZGU6e2ltcG9ydGFudDp7cGF0dGVybjovKDopW15cXHJcXG5dKi8sbG9va2JlaGluZDohMH0sa2V5d29yZDovW146XFxyXFxuXSs6L319LFwidGFibGUtYm9keVwiOntwYXR0ZXJuOi8oKD86XFxyP1xcbnxcXHIpWyBcXHRdKlxcfC4rXFx8W15cXHJcXG5dKikrLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7b3V0bGluZTp7cGF0dGVybjovPFtePl0rPz4vLGFsaWFzOlwidmFyaWFibGVcIn0sdGQ6e3BhdHRlcm46L1xccypbXlxcc3xdW158XSovLGFsaWFzOlwic3RyaW5nXCJ9LHB1bmN0dWF0aW9uOi9cXHwvfX0sXCJ0YWJsZS1oZWFkXCI6e3BhdHRlcm46Lyg/Olxccj9cXG58XFxyKVsgXFx0XSpcXHwuK1xcfFteXFxyXFxuXSovLGluc2lkZTp7dGg6e3BhdHRlcm46L1xccypbXlxcc3xdW158XSovLGFsaWFzOlwidmFyaWFibGVcIn0scHVuY3R1YXRpb246L1xcfC99fSxhdHJ1bGU6e3BhdHRlcm46LygoPzpcXHI/XFxufFxccilbIFxcdF0rKSg/OidhY2h8J2F8J2VqfDd8YXxBIHRha8OpfEEgdGFrdGllxb58QSB0aWXFvnxBIHrDoXJvdmXFiHxBYmVyfEFjfEFkb3R0fEFra29yfEFrfEFsZXNob3Jlc3xBbGV8QWxpfEFsbG9yYXxBbG9yc3xBbHN8QW1hfEFtZW5ueWliZW58QW1pa29yfEFtcGFrfGFufEFOfEFuYW5naW5nfEFuZCB5J2FsbHxBbmR8QW5nZW5vbW1lbnxBbnJoZWdlZGlnIGF8QW58QXBhYmlsYXxBdMOoc3xBdGVzYXxBdHVuY2l8QXZhc3QhfEF5ZXxBfGF3ZXJ8QmFnaXxCYW5qdXJ8QmV0fEJp4bq/dHxCbGltZXkhfEJ1aHxCdXQgYXQgdGhlIGVuZCBvZiB0aGUgZGF5IEkgcmVja29ufEJ1dCB5J2FsbHxCdXR8QlVUfENhbHxDw6JuZHxDYW5kb3xDYW5kfENlfEN1YW5kb3zEjGV8w5BhIMOwZXzDkGF8RGFkYXN8RGFkYXxEYWRvc3xEYWRvfERhSCBnaHUnIGJlamx1J3xkYW5ufERhbm58RGFub3xEYW58RGFyfERhdCBmaWluZHxEYXRhfERhdGUgZmlpbmR8RGF0ZXxEYXRpIGZpaW5kfERhdGl8RGHFo2kgZmlpbmR8RGHIm2kgZmlpbmR8RGF0b3xERU58RGVuIHlvdXNlIGdvdHRhfERlbmdhbnxEZXxEaWJlcml8RGl5ZWxpbSBraXxEb25hZGF8RG9uYXR8RG9uaXRhxLVvfERvfER1bnxEdW90YXzDkHVyaHxFZWxkYWRlc3xFZnxFxJ9lciBraXxFbnRhb3xFbnTDo298RW50w7NufEVudG9uY2VzfEVufEVwaXxFfMOJc3xFdGFudCBkb25uw6llfEV0YW50IGRvbm7DqXxFdHzDiXRhbnQgZG9ubsOpZXN8w4l0YW50IGRvbm7DqWV8w4l0YW50IGRvbm7DqXxFdGFudCBkb25uw6llc3xFdGFudCBkb25uw6lzfMOJdGFudCBkb25uw6lzfEZha2F0fEdhbmd3YXkhfEdkeXxHZWdlYmVuIHNlaWVufEdlZ2ViZW4gc2VpfEdlZ2V2ZW58R2VnZXdlfGdodScgbm9ibHUnfEdpdHR8R2l2ZW4geSdhbGx8R2l2ZW58R2l2ZXR8R2l2dW58SGF8Q2hvfEkgQ0FOIEhBWnxJbnxJcnxJdCdzIGp1c3QgdW5iZWxpZXZhYmxlfEl8SmF8SmXFm2xpfEplxbxlbGl8S2FkYXJ8S2FkYXxLYWR8S2FpfEthanxLZHnFvnxLZcSPfEtlbXVkaWFufEtldGlrYXxLaGl8S2llZHl8S298S3VpZHxLdWl8S3VufExhbnxsYXRsaHxMZSBzYSBhfExldCBnbyBhbmQgaGF1bHxMZXxMw6ggc2EgYXxMw6h8TG9nb3xMb3JzcXUnPHxMb3JzcXVlfG3DpHxNYWFyfE1haXN8TWFqxIVjfE1hamR8TWFrYXxNYW5hd2F8TWFzfE1hfE1lbmF3YXxNZW58TXV0dGF8TmFsaWthbmluZ3xOYWxpa2F8TmFuZ2luZ3xOw6VyfE7DpHJ8TmF0b3xOaMawbmd8TmlpbnxOanVrfE8gemFtYW58T2d8T2NofE9sZXRldGFhbnxPbmRhfE9uZHxPcmF6fFBha3xQZXJvfFBlcsOyfFBvZGFub3xQb2tpYcS+fFBva3VkfFBvdGVtfFBvdG9tfFByaXZ6ZXRvfFByeWR8cWFTREknfFF1YW5kb3xRdWFuZHxRdWFufFPDpXxTZWR8U2V8U2lpc3xTaXBvemUga2V8U2lwb3plIEtlfFNpcG96ZXxTaXzFnml8yJhpfFNvaXR8U3RlbHxUYWRhfFRhZHxUYWtyYXR8VGFrfFRhcGl8VGVyfFRldGFwaXxUaGEgdGhlfFRoYXxUaGVuIHknYWxsfFRoZW58VGjDrHxUaHVyaHxUb2RhfFRvbyByaWdodHx1Z2Vob2xsfFVuZHxVbnxWw6B8dmFqfFZlbmRhcnxWZXx3YW5ufFdhbm5lZXJ8V0VOfFdlbm58V2hlbiB5J2FsbHxXaGVufFd0ZWR5fFd1bnxZJ2tub3d8WWVhaCBuYWh8WW5hfFlvdXNlIGtub3cgbGlrZSB3aGVufFlvdXNlIGtub3cgd2hlbiB5b3VzZSBnb3R8WXxaYSBwcmVkcG9rbGFkdXxaYSBwxZllZHBva2xhZHV8WmFkYW5pfFphZGFub3xaYWRhbnxaYWRhdGV8WmFkYXRvfFpha8WCYWRhasSFY3xaYXJhZGl8WmF0YXRpfMOeYSDDvmV8w55hfMOew6F8w55lZ2FyfMOedXJofM6RzrvOu86sfM6UzrXOtM6/zrzOrc69zr/PhXzOms6xzrl8zozPhM6xzr18zqTPjM+EzrV80JAg0YLQsNC60L7QtnzQkNCz0LDRgHzQkNC70LV80JDQu9C4fNCQ0LzQvNC+fNCQfNOY0LPTmdGAfNOY0LnRgtC40Lp805jQvNC80LB80JHQuNGA0L7QunzQktCwfNCS05l80JTQsNC00LXQvdC+fNCU0LDQvdC+fNCU0L7Qv9GD0YHRgtC40Lx80JXRgdC70Lh80JfQsNC00LDRgtC1fNCX0LDQtNCw0YLQuHzQl9Cw0LTQsNGC0L580Jh80IZ80Jog0YLQvtC80YMg0LbQtXzQmtCw0LTQsHzQmtCw0LR80JrQvtCz0LDRgtC+fNCa0L7Qs9C00LB80JrQvtC70Lh80JvTmdC60LjQvXzQm9C10LrQuNC9fNCd05nRgtC40pfTmdC005l80J3QtdGF0LDQuXzQndC+fNCe0L3QtNCwfNCf0YDQuNC/0YPRgdGC0LjQvNC+LCDRidC+fNCf0YDQuNC/0YPRgdGC0LjQvNC+fNCf0YPRgdGC0Yx80KLQsNC60LbQtXzQotCwfNCi0L7Qs9C00LB80KLQvtC00ZZ80KLQvnzQo9C90LTQsHzSutOZ0Lx80K/QutGJ0L5815DXkdecfNeQ15bXmXzXkNeWfNeR15TXmdeg16rXn3zXldeS151815vXkNep16h82KLZhtqv2KfZh3zYp9iw2KfZi3zYp9qv2LF82KfZhdinfNin2YjYsXzYqNinINmB2LHYtnzYqNin2YTZgdix2LZ82KjZgdix2LZ82b7avtixfNiq2Kh82KvZhXzYrNiofNi52YbYr9mF2Kd82YHYsdi2INqp24zYp3zZhNmD2YZ82YTbjNqp2YZ82YXYqtmJfNmH2Ybar9in2YXbjHzZiHzgpIXgpJfgpLB84KSU4KSwfOCkleCkpuCkvnzgpJXgpL/gpKjgpY3gpKTgpYF84KSa4KWC4KSC4KSV4KS/fOCknOCkrHzgpKTgpKXgpL584KSk4KSm4KS+fOCkpOCkrHzgpKrgpLDgpKjgpY3gpKTgpYF84KSq4KSwfOCkr+CkpuCkv3zgqIXgqKTgqYd84Kic4Kim4KmL4KiCfOConOCov+CoteCph+CogiDgqJXgqL984Kic4KmH4KiV4KiwfOCopOCopnzgqKrgqLB84LCF4LCq4LGN4LCq4LGB4LCh4LGBfOCwiCDgsKrgsLDgsL/gsLjgsY3gsKXgsL/gsKTgsL/gsLLgsYt84LCV4LC+4LCo4LC/fOCwmuCxhuCwquCxjeCwquCwrOCwoeCwv+CwqOCwpuCwv3zgsK7gsLDgsL/gsK/gsYF84LKG4LKm4LKw4LOGfOCyqOCyguCypOCysHzgsqjgsr/gs5XgsqHgsr/gsqZ84LKu4LKk4LON4LKk4LOBfOCyuOCzjeCypeCyv+CypOCyv+Cyr+CyqOCzjeCyqOCzgXzguIHguLPguKvguJnguJTguYPguKvguYl84LiU4Lix4LiH4LiZ4Lix4LmJ4LiZfOC5geC4leC5iHzguYDguKHguLfguYjguK184LmB4Lil4LiwfOq3uOufrOuptDx86re466as6rOgPHzri6g8fOunjOyVvTx866eM7J28PHzrqLzsoIA8fOyhsOqxtDx87ZWY7KeA66eMPHzjgYvjgaQ8fOOBl+OBi+OBlzx844Gf44Gg44GXPHzjgarjgonjgbA8fOOCguOBlzx85Lim5LiUPHzkvYbjgZc8fOS9huaYrzx85YGH5aaCPHzlgYflrpo8fOWBh+iorTx85YGH6K6+PHzliY3mj5A8fOWQjOaXtjx85ZCM5pmCPHzlubbkuJQ8fOW9kzx855W2PHzogIzkuJQ8fOmCo+S5iDx86YKj6bq8PCkoPz1bIFxcdF0rKS8sbG9va2JlaGluZDohMH0sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlxcXFwufFteXCJcXFxcXFxyXFxuXSkqXCJ8Jyg/OlxcXFwufFteJ1xcXFxcXHJcXG5dKSonLyxpbnNpZGU6e291dGxpbmU6e3BhdHRlcm46LzxbXj5dKz8+LyxhbGlhczpcInZhcmlhYmxlXCJ9fX0sb3V0bGluZTp7cGF0dGVybjovPFtePl0rPz4vLGFsaWFzOlwidmFyaWFibGVcIn19fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJnaGVya2luXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5naXQ9e2NvbW1lbnQ6L14jLiovbSxkZWxldGVkOi9eWy3igJNdLiovbSxpbnNlcnRlZDovXlxcKy4qL20sc3RyaW5nOi8oXCJ8JykoPzpcXFxcLnwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxL20sY29tbWFuZDp7cGF0dGVybjovXi4qXFwkIGdpdCAuKiQvbSxpbnNpZGU6e3BhcmFtZXRlcjovXFxzLS0/XFx3Ky9tfX0sY29vcmQ6L15AQC4qQEAkL20sY29tbWl0X3NoYTE6L15jb21taXQgXFx3ezQwfSQvbX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImdpdFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuZ2xzbD1lLmxhbmd1YWdlcy5leHRlbmQoXCJjbGlrZVwiLHtjb21tZW50OlsvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy8sL1xcL1xcLyg/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfFteXFxcXFxcclxcbl0pKi9dLG51bWJlcjovKD86XFxiMHhbXFxkYS1mXSt8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86ZVsrLV0/XFxkKyk/KVt1bGZdKi9pLGtleXdvcmQ6L1xcYig/OmF0dHJpYnV0ZXxjb25zdHx1bmlmb3JtfHZhcnlpbmd8YnVmZmVyfHNoYXJlZHxjb2hlcmVudHx2b2xhdGlsZXxyZXN0cmljdHxyZWFkb25seXx3cml0ZW9ubHl8YXRvbWljX3VpbnR8bGF5b3V0fGNlbnRyb2lkfGZsYXR8c21vb3RofG5vcGVyc3BlY3RpdmV8cGF0Y2h8c2FtcGxlfGJyZWFrfGNvbnRpbnVlfGRvfGZvcnx3aGlsZXxzd2l0Y2h8Y2FzZXxkZWZhdWx0fGlmfGVsc2V8c3Vicm91dGluZXxpbnxvdXR8aW5vdXR8ZmxvYXR8ZG91YmxlfGludHx2b2lkfGJvb2x8dHJ1ZXxmYWxzZXxpbnZhcmlhbnR8cHJlY2lzZXxkaXNjYXJkfHJldHVybnxkP21hdFsyMzRdKD86eFsyMzRdKT98W2liZHVdP3ZlY1syMzRdfHVpbnR8bG93cHxtZWRpdW1wfGhpZ2hwfHByZWNpc2lvbnxbaXVdP3NhbXBsZXJbMTIzXUR8W2l1XT9zYW1wbGVyQ3ViZXxzYW1wbGVyWzEyXURTaGFkb3d8c2FtcGxlckN1YmVTaGFkb3d8W2l1XT9zYW1wbGVyWzEyXURBcnJheXxzYW1wbGVyWzEyXURBcnJheVNoYWRvd3xbaXVdP3NhbXBsZXIyRFJlY3R8c2FtcGxlcjJEUmVjdFNoYWRvd3xbaXVdP3NhbXBsZXJCdWZmZXJ8W2l1XT9zYW1wbGVyMkRNUyg/OkFycmF5KT98W2l1XT9zYW1wbGVyQ3ViZUFycmF5fHNhbXBsZXJDdWJlQXJyYXlTaGFkb3d8W2l1XT9pbWFnZVsxMjNdRHxbaXVdP2ltYWdlMkRSZWN0fFtpdV0/aW1hZ2VDdWJlfFtpdV0/aW1hZ2VCdWZmZXJ8W2l1XT9pbWFnZVsxMl1EQXJyYXl8W2l1XT9pbWFnZUN1YmVBcnJheXxbaXVdP2ltYWdlMkRNUyg/OkFycmF5KT98c3RydWN0fGNvbW1vbnxwYXJ0aXRpb258YWN0aXZlfGFzbXxjbGFzc3x1bmlvbnxlbnVtfHR5cGVkZWZ8dGVtcGxhdGV8dGhpc3xyZXNvdXJjZXxnb3RvfGlubGluZXxub2lubGluZXxwdWJsaWN8c3RhdGljfGV4dGVybnxleHRlcm5hbHxpbnRlcmZhY2V8bG9uZ3xzaG9ydHxoYWxmfGZpeGVkfHVuc2lnbmVkfHN1cGVycHxpbnB1dHxvdXRwdXR8aHZlY1syMzRdfGZ2ZWNbMjM0XXxzYW1wbGVyM0RSZWN0fGZpbHRlcnxzaXplb2Z8Y2FzdHxuYW1lc3BhY2V8dXNpbmcpXFxiL30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImdsc2xcIixcImNvbW1lbnRcIix7cHJlcHJvY2Vzc29yOntwYXR0ZXJuOi8oXlsgXFx0XSopIyg/Oig/OmRlZmluZXx1bmRlZnxpZnxpZmRlZnxpZm5kZWZ8ZWxzZXxlbGlmfGVuZGlmfGVycm9yfHByYWdtYXxleHRlbnNpb258dmVyc2lvbnxsaW5lKVxcYik/L20sbG9va2JlaGluZDohMCxhbGlhczpcImJ1aWx0aW5cIn19KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZ2xzbFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuZ289ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7a2V5d29yZDovXFxiKD86YnJlYWt8Y2FzZXxjaGFufGNvbnN0fGNvbnRpbnVlfGRlZmF1bHR8ZGVmZXJ8ZWxzZXxmYWxsdGhyb3VnaHxmb3J8ZnVuY3xnbyg/OnRvKT98aWZ8aW1wb3J0fGludGVyZmFjZXxtYXB8cGFja2FnZXxyYW5nZXxyZXR1cm58c2VsZWN0fHN0cnVjdHxzd2l0Y2h8dHlwZXx2YXIpXFxiLyxidWlsdGluOi9cXGIoPzpib29sfGJ5dGV8Y29tcGxleCg/OjY0fDEyOCl8ZXJyb3J8ZmxvYXQoPzozMnw2NCl8cnVuZXxzdHJpbmd8dT9pbnQoPzo4fDE2fDMyfDY0KT98dWludHB0cnxhcHBlbmR8Y2FwfGNsb3NlfGNvbXBsZXh8Y29weXxkZWxldGV8aW1hZ3xsZW58bWFrZXxuZXd8cGFuaWN8cHJpbnQoPzpsbik/fHJlYWx8cmVjb3ZlcilcXGIvLGJvb2xlYW46L1xcYig/Ol98aW90YXxuaWx8dHJ1ZXxmYWxzZSlcXGIvLG9wZXJhdG9yOi9bKlxcLyVeIT1dPT98XFwrWz0rXT98LVs9LV0/fFxcfFs9fF0/fCYoPzo9fCZ8XFxePT8pP3w+KD86Pj0/fD0pP3w8KD86PD0/fD18LSk/fDo9fFxcLlxcLlxcLi8sbnVtYmVyOi8oPzpcXGIweFthLWZcXGRdK3woPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzplWy0rXT9cXGQrKT8paT8vaSxzdHJpbmc6e3BhdHRlcm46LyhbXCInYF0pKFxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxLyxncmVlZHk6ITB9fSksZGVsZXRlIGUubGFuZ3VhZ2VzLmdvW1wiY2xhc3MtbmFtZVwiXX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZ29cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmdyYXBocWw9e2NvbW1lbnQ6LyMuKi8sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlxcXFwufFteXFxcXFwiXFxyXFxuXSkqXCIvLGdyZWVkeTohMH0sbnVtYmVyOi8oPzpcXEItfFxcYilcXGQrKD86XFwuXFxkKyk/KD86ZVsrLV0/XFxkKyk/XFxiL2ksYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvLHZhcmlhYmxlOi9cXCRbYS16X11cXHcqL2ksZGlyZWN0aXZlOntwYXR0ZXJuOi9AW2Etel9dXFx3Ki9pLGFsaWFzOlwiZnVuY3Rpb25cIn0sXCJhdHRyLW5hbWVcIjovW2Etel9dXFx3Kig/PVxccyo6KS9pLGtleXdvcmQ6W3twYXR0ZXJuOi8oZnJhZ21lbnRcXHMrKD8hb24pW2Etel9dXFx3Klxccyt8XFwuezN9XFxzKilvblxcYi8sbG9va2JlaGluZDohMH0sL1xcYig/OnF1ZXJ5fGZyYWdtZW50fG11dGF0aW9uKVxcYi9dLG9wZXJhdG9yOi8hfD18XFwuezN9LyxwdW5jdHVhdGlvbjovWyEoKXt9XFxbXFxdOj0sXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJncmFwaHFsXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5ncm9vdnk9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7a2V5d29yZDovXFxiKD86YXN8ZGVmfGlufGFic3RyYWN0fGFzc2VydHxib29sZWFufGJyZWFrfGJ5dGV8Y2FzZXxjYXRjaHxjaGFyfGNsYXNzfGNvbnN0fGNvbnRpbnVlfGRlZmF1bHR8ZG98ZG91YmxlfGVsc2V8ZW51bXxleHRlbmRzfGZpbmFsfGZpbmFsbHl8ZmxvYXR8Zm9yfGdvdG98aWZ8aW1wbGVtZW50c3xpbXBvcnR8aW5zdGFuY2VvZnxpbnR8aW50ZXJmYWNlfGxvbmd8bmF0aXZlfG5ld3xwYWNrYWdlfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZXR1cm58c2hvcnR8c3RhdGljfHN0cmljdGZwfHN1cGVyfHN3aXRjaHxzeW5jaHJvbml6ZWR8dGhpc3x0aHJvd3x0aHJvd3N8dHJhaXR8dHJhbnNpZW50fHRyeXx2b2lkfHZvbGF0aWxlfHdoaWxlKVxcYi8sc3RyaW5nOlt7cGF0dGVybjovKFwiXCJcInwnJycpW1xcc1xcU10qP1xcMXwoPzpcXCRcXC8pKD86XFwkXFwvXFwkfFtcXHNcXFNdKSo/XFwvXFwkLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi8oW1wiJ1xcL10pKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfV0sbnVtYmVyOi9cXGIoPzowYlswMV9dK3wweFtcXGRhLWZfXSsoPzpcXC5bXFxkYS1mX3BcXC1dKyk/fFtcXGRfXSsoPzpcXC5bXFxkX10rKT8oPzplWystXT9bXFxkXSspPylbZ2xpZGZdP1xcYi9pLG9wZXJhdG9yOntwYXR0ZXJuOi8oXnxbXi5dKSg/On58PT0/fj98XFw/Wy46XT98XFwqKD86Wy49XXxcXCo9Pyk/fFxcLltAJl18XFwuXFwuPHxcXC57MSwyfSg/IVxcLil8LVstPT5dP3xcXCtbKz1dP3whPT98PCg/Ojw9P3w9Pj8pP3w+KD86Pj4/PT98PSk/fCZbJj1dP3xcXHxbfD1dP3xcXC89P3xcXF49P3wlPT8pLyxsb29rYmVoaW5kOiEwfSxwdW5jdHVhdGlvbjovXFwuK3xbe31bXFxdOygpLDokXS99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJncm9vdnlcIixcInN0cmluZ1wiLHtzaGViYW5nOntwYXR0ZXJuOi8jIS4rLyxhbGlhczpcImNvbW1lbnRcIn19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJncm9vdnlcIixcInB1bmN0dWF0aW9uXCIse1wic3BvY2stYmxvY2tcIjovXFxiKD86c2V0dXB8Z2l2ZW58d2hlbnx0aGVufGFuZHxjbGVhbnVwfGV4cGVjdHx3aGVyZSk6L30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImdyb292eVwiLFwiZnVuY3Rpb25cIix7YW5ub3RhdGlvbjp7YWxpYXM6XCJwdW5jdHVhdGlvblwiLHBhdHRlcm46LyhefFteLl0pQFxcdysvLGxvb2tiZWhpbmQ6ITB9fSksZS5ob29rcy5hZGQoXCJ3cmFwXCIsZnVuY3Rpb24odCl7aWYoXCJncm9vdnlcIj09PXQubGFuZ3VhZ2UmJlwic3RyaW5nXCI9PT10LnR5cGUpe3ZhciBuPXQuY29udGVudC52YWx1ZVswXTtpZihcIidcIiE9bil7dmFyIHI9LyhbXlxcXFxdKSg/OlxcJCg/Olxcey4qP1xcfXxbXFx3Ll0rKSkvO1wiJFwiPT09biYmKHI9LyhbXlxcJF0pKD86XFwkKD86XFx7Lio/XFx9fFtcXHcuXSspKS8pLHQuY29udGVudC52YWx1ZT10LmNvbnRlbnQudmFsdWUucmVwbGFjZSgvJmx0Oy9nLFwiPFwiKS5yZXBsYWNlKC8mYW1wOy9nLFwiJlwiKSx0LmNvbnRlbnQ9ZS5oaWdobGlnaHQodC5jb250ZW50LnZhbHVlLHtleHByZXNzaW9uOntwYXR0ZXJuOnIsbG9va2JlaGluZDohMCxpbnNpZGU6ZS5sYW5ndWFnZXMuZ3Jvb3Z5fX0pLHQuY2xhc3Nlcy5wdXNoKFwiL1wiPT09bj9cInJlZ2V4XCI6XCJnc3RyaW5nXCIpfX19KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZ3Jvb3Z5XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7ZS5sYW5ndWFnZXMuaGFtbD17XCJtdWx0aWxpbmUtY29tbWVudFwiOntwYXR0ZXJuOi8oKD86XnxcXHI/XFxufFxccikoW1xcdCBdKikpKD86XFwvfC0jKS4qKD86KD86XFxyP1xcbnxcXHIpXFwyW1xcdCBdKy4rKSovLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJjb21tZW50XCJ9LFwibXVsdGlsaW5lLWNvZGVcIjpbe3BhdHRlcm46LygoPzpefFxccj9cXG58XFxyKShbXFx0IF0qKSg/Olt+LV18WyYhXT89KSkuKixbXFx0IF0qKD86KD86XFxyP1xcbnxcXHIpXFwyW1xcdCBdKy4qLFtcXHQgXSopKig/Oig/Olxccj9cXG58XFxyKVxcMltcXHQgXSsuKykvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntyZXN0OmUubGFuZ3VhZ2VzLnJ1Ynl9fSx7cGF0dGVybjovKCg/Ol58XFxyP1xcbnxcXHIpKFtcXHQgXSopKD86W34tXXxbJiFdPz0pKS4qXFx8W1xcdCBdKig/Oig/Olxccj9cXG58XFxyKVxcMltcXHQgXSsuKlxcfFtcXHQgXSopKi8sbG9va2JlaGluZDohMCxpbnNpZGU6e3Jlc3Q6ZS5sYW5ndWFnZXMucnVieX19XSxmaWx0ZXI6e3BhdHRlcm46LygoPzpefFxccj9cXG58XFxyKShbXFx0IF0qKSk6W1xcdy1dKyg/Oig/Olxccj9cXG58XFxyKSg/OlxcMltcXHQgXSsuK3xcXHMqPyg/PVxccj9cXG58XFxyKSkpKy8sbG9va2JlaGluZDohMCxpbnNpZGU6e1wiZmlsdGVyLW5hbWVcIjp7cGF0dGVybjovXjpbXFx3LV0rLyxhbGlhczpcInZhcmlhYmxlXCJ9fX0sbWFya3VwOntwYXR0ZXJuOi8oKD86XnxcXHI/XFxufFxccilbXFx0IF0qKTwuKy8sbG9va2JlaGluZDohMCxpbnNpZGU6e3Jlc3Q6ZS5sYW5ndWFnZXMubWFya3VwfX0sZG9jdHlwZTp7cGF0dGVybjovKCg/Ol58XFxyP1xcbnxcXHIpW1xcdCBdKikhISEoPzogLispPy8sbG9va2JlaGluZDohMH0sdGFnOntwYXR0ZXJuOi8oKD86XnxcXHI/XFxufFxccilbXFx0IF0qKVslLiNdW1xcd1xcLSMuXSpbXFx3XFwtXSg/OlxcKFteKV0rXFwpfFxceyg/Olxce1tefV0rXFx9fFtefV0pK1xcfXxcXFtbXlxcXV0rXFxdKSpbXFwvPD5dKi8sbG9va2JlaGluZDohMCxpbnNpZGU6e2F0dHJpYnV0ZXM6W3twYXR0ZXJuOi8oXnxbXiNdKVxceyg/Olxce1tefV0rXFx9fFtefV0pK1xcfS8sbG9va2JlaGluZDohMCxpbnNpZGU6e3Jlc3Q6ZS5sYW5ndWFnZXMucnVieX19LHtwYXR0ZXJuOi9cXChbXildK1xcKS8saW5zaWRlOntcImF0dHItdmFsdWVcIjp7cGF0dGVybjovKD1cXHMqKSg/OlwiKD86XFxcXC58W15cXFxcXCJcXHJcXG5dKSpcInxbXilcXHNdKykvLGxvb2tiZWhpbmQ6ITB9LFwiYXR0ci1uYW1lXCI6L1tcXHc6LV0rKD89XFxzKiE/PXxcXHMqWywpXSkvLHB1bmN0dWF0aW9uOi9bPSgpLF0vfX0se3BhdHRlcm46L1xcW1teXFxdXStcXF0vLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy5ydWJ5fX1dLHB1bmN0dWF0aW9uOi9bPD5dL319LGNvZGU6e3BhdHRlcm46LygoPzpefFxccj9cXG58XFxyKVtcXHQgXSooPzpbfi1dfFsmIV0/PSkpLisvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntyZXN0OmUubGFuZ3VhZ2VzLnJ1Ynl9fSxpbnRlcnBvbGF0aW9uOntwYXR0ZXJuOi8jXFx7W159XStcXH0vLGluc2lkZTp7ZGVsaW1pdGVyOntwYXR0ZXJuOi9eI1xce3xcXH0kLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LHJlc3Q6ZS5sYW5ndWFnZXMucnVieX19LHB1bmN0dWF0aW9uOntwYXR0ZXJuOi8oKD86XnxcXHI/XFxufFxccilbXFx0IF0qKVt+PVxcLSYhXSsvLGxvb2tiZWhpbmQ6ITB9fTtmb3IodmFyIHQ9W1wiY3NzXCIse2ZpbHRlcjpcImNvZmZlZVwiLGxhbmd1YWdlOlwiY29mZmVlc2NyaXB0XCJ9LFwiZXJiXCIsXCJqYXZhc2NyaXB0XCIsXCJsZXNzXCIsXCJtYXJrZG93blwiLFwicnVieVwiLFwic2Nzc1wiLFwidGV4dGlsZVwiXSxuPXt9LHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe3ZhciBhPXRbcl07YT1cInN0cmluZ1wiPT10eXBlb2YgYT97ZmlsdGVyOmEsbGFuZ3VhZ2U6YX06YSxlLmxhbmd1YWdlc1thLmxhbmd1YWdlXSYmKG5bXCJmaWx0ZXItXCIrYS5maWx0ZXJdPXtwYXR0ZXJuOlJlZ0V4cChcIigoPzpefFxcXFxyP1xcXFxufFxcXFxyKShbXFxcXHQgXSopKTp7e2ZpbHRlcl9uYW1lfX0oPzooPzpcXFxccj9cXFxcbnxcXFxccikoPzpcXFxcMltcXFxcdCBdKy4rfFxcXFxzKj8oPz1cXFxccj9cXFxcbnxcXFxccikpKStcIi5yZXBsYWNlKFwie3tmaWx0ZXJfbmFtZX19XCIsYS5maWx0ZXIpKSxsb29rYmVoaW5kOiEwLGluc2lkZTp7XCJmaWx0ZXItbmFtZVwiOntwYXR0ZXJuOi9eOltcXHctXSsvLGFsaWFzOlwidmFyaWFibGVcIn0scmVzdDplLmxhbmd1YWdlc1thLmxhbmd1YWdlXX19KX1lLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJoYW1sXCIsXCJmaWx0ZXJcIixuKX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImhhbWxcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5oYW5kbGViYXJzPXtjb21tZW50Oi9cXHtcXHshW1xcc1xcU10qP1xcfVxcfS8sZGVsaW1pdGVyOntwYXR0ZXJuOi9eXFx7XFx7XFx7P3xcXH1cXH1cXH0/JC9pLGFsaWFzOlwicHVuY3R1YXRpb25cIn0sc3RyaW5nOi8oW1wiJ10pKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sbnVtYmVyOi9cXGIweFtcXGRBLUZhLWZdK1xcYnwoPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzpbRWVdWystXT9cXGQrKT8vLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2UpXFxiLyxibG9jazp7cGF0dGVybjovXihcXHMqfj9cXHMqKVsjXFwvXVxcUys/KD89XFxzKn4/XFxzKiR8XFxzKS9pLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJrZXl3b3JkXCJ9LGJyYWNrZXRzOntwYXR0ZXJuOi9cXFtbXlxcXV0rXFxdLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cXFt8XFxdLyx2YXJpYWJsZTovW1xcc1xcU10rL319LHB1bmN0dWF0aW9uOi9bIVwiIyUmJygpKissLlxcLzs8PT5AXFxbXFxcXFxcXV5ge3x9fl0vLHZhcmlhYmxlOi9bXiFcIiMlJicoKSorLC5cXC87PD0+QFxcW1xcXFxcXF1eYHt8fX5cXHNdKy99LGUuaG9va3MuYWRkKFwiYmVmb3JlLXRva2VuaXplXCIsZnVuY3Rpb24odCl7ZS5sYW5ndWFnZXNbXCJtYXJrdXAtdGVtcGxhdGluZ1wiXS5idWlsZFBsYWNlaG9sZGVycyh0LFwiaGFuZGxlYmFyc1wiLC9cXHtcXHtcXHtbXFxzXFxTXSs/XFx9XFx9XFx9fFxce1xce1tcXHNcXFNdKz9cXH1cXH0vZyl9KSxlLmhvb2tzLmFkZChcImFmdGVyLXRva2VuaXplXCIsZnVuY3Rpb24odCl7ZS5sYW5ndWFnZXNbXCJtYXJrdXAtdGVtcGxhdGluZ1wiXS50b2tlbml6ZVBsYWNlaG9sZGVycyh0LFwiaGFuZGxlYmFyc1wiKX0pfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiaGFuZGxlYmFyc1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuaGFza2VsbD17Y29tbWVudDp7cGF0dGVybjovKF58W14tISMkJSorPT8mQHx+Ljo8Pl5cXFxcXFwvXSkoPzotLVteLSEjJCUqKz0/JkB8fi46PD5eXFxcXFxcL10uKnx7LVtcXHNcXFNdKj8tfSkvbSxsb29rYmVoaW5kOiEwfSxjaGFyOi8nKD86W15cXFxcJ118XFxcXCg/OlthYmZucnR2XFxcXFwiJyZdfFxcXltBLVpAW1xcXV5fXXxOVUx8U09IfFNUWHxFVFh8RU9UfEVOUXxBQ0t8QkVMfEJTfEhUfExGfFZUfEZGfENSfFNPfFNJfERMRXxEQzF8REMyfERDM3xEQzR8TkFLfFNZTnxFVEJ8Q0FOfEVNfFNVQnxFU0N8RlN8R1N8UlN8VVN8U1B8REVMfFxcZCt8b1swLTddK3x4WzAtOWEtZkEtRl0rKSknLyxzdHJpbmc6e3BhdHRlcm46L1wiKD86W15cXFxcXCJdfFxcXFwoPzpbYWJmbnJ0dlxcXFxcIicmXXxcXF5bQS1aQFtcXF1eX118TlVMfFNPSHxTVFh8RVRYfEVPVHxFTlF8QUNLfEJFTHxCU3xIVHxMRnxWVHxGRnxDUnxTT3xTSXxETEV8REMxfERDMnxEQzN8REM0fE5BS3xTWU58RVRCfENBTnxFTXxTVUJ8RVNDfEZTfEdTfFJTfFVTfFNQfERFTHxcXGQrfG9bMC03XSt8eFswLTlhLWZBLUZdKyl8XFxcXFxccytcXFxcKSpcIi8sZ3JlZWR5OiEwfSxrZXl3b3JkOi9cXGIoPzpjYXNlfGNsYXNzfGRhdGF8ZGVyaXZpbmd8ZG98ZWxzZXxpZnxpbnxpbmZpeGx8aW5maXhyfGluc3RhbmNlfGxldHxtb2R1bGV8bmV3dHlwZXxvZnxwcmltaXRpdmV8dGhlbnx0eXBlfHdoZXJlKVxcYi8saW1wb3J0X3N0YXRlbWVudDp7cGF0dGVybjovKCg/Olxccj9cXG58XFxyfF4pXFxzKilpbXBvcnRcXHMrKD86cXVhbGlmaWVkXFxzKyk/KD86W0EtWl1bXFx3J10qKSg/OlxcLltBLVpdW1xcdyddKikqKD86XFxzK2FzXFxzKyg/OltBLVpdW19hLXpBLVowLTknXSopKD86XFwuW0EtWl1bXFx3J10qKSopPyg/OlxccytoaWRpbmdcXGIpPy9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntrZXl3b3JkOi9cXGIoPzppbXBvcnR8cXVhbGlmaWVkfGFzfGhpZGluZylcXGIvfX0sYnVpbHRpbjovXFxiKD86YWJzfGFjb3N8YWNvc2h8YWxsfGFuZHxhbnl8YXBwZW5kRmlsZXxhcHByb3hSYXRpb25hbHxhc1R5cGVPZnxhc2lufGFzaW5ofGF0YW58YXRhbjJ8YXRhbmh8YmFzaWNJT1J1bnxicmVha3xjYXRjaHxjZWlsaW5nfGNocnxjb21wYXJlfGNvbmNhdHxjb25jYXRNYXB8Y29uc3R8Y29zfGNvc2h8Y3Vycnl8Y3ljbGV8ZGVjb2RlRmxvYXR8ZGVub21pbmF0b3J8ZGlnaXRUb0ludHxkaXZ8ZGl2TW9kfGRyb3B8ZHJvcFdoaWxlfGVpdGhlcnxlbGVtfGVuY29kZUZsb2F0fGVudW1Gcm9tfGVudW1Gcm9tVGhlbnxlbnVtRnJvbVRoZW5Ub3xlbnVtRnJvbVRvfGVycm9yfGV2ZW58ZXhwfGV4cG9uZW50fGZhaWx8ZmlsdGVyfGZsaXB8ZmxvYXREaWdpdHN8ZmxvYXRSYWRpeHxmbG9hdFJhbmdlfGZsb29yfGZtYXB8Zm9sZGx8Zm9sZGwxfGZvbGRyfGZvbGRyMXxmcm9tRG91YmxlfGZyb21FbnVtfGZyb21JbnR8ZnJvbUludGVnZXJ8ZnJvbUludGVncmFsfGZyb21SYXRpb25hbHxmc3R8Z2NkfGdldENoYXJ8Z2V0Q29udGVudHN8Z2V0TGluZXxncm91cHxoZWFkfGlkfGluUmFuZ2V8aW5kZXh8aW5pdHxpbnRUb0RpZ2l0fGludGVyYWN0fGlvRXJyb3J8aXNBbHBoYXxpc0FscGhhTnVtfGlzQXNjaWl8aXNDb250cm9sfGlzRGVub3JtYWxpemVkfGlzRGlnaXR8aXNIZXhEaWdpdHxpc0lFRUV8aXNJbmZpbml0ZXxpc0xvd2VyfGlzTmFOfGlzTmVnYXRpdmVaZXJvfGlzT2N0RGlnaXR8aXNQcmludHxpc1NwYWNlfGlzVXBwZXJ8aXRlcmF0ZXxsYXN0fGxjbXxsZW5ndGh8bGV4fGxleERpZ2l0c3xsZXhMaXRDaGFyfGxpbmVzfGxvZ3xsb2dCYXNlfGxvb2t1cHxtYXB8bWFwTXxtYXBNX3xtYXh8bWF4Qm91bmR8bWF4aW11bXxtYXliZXxtaW58bWluQm91bmR8bWluaW11bXxtb2R8bmVnYXRlfG5vdHxub3RFbGVtfG51bGx8bnVtZXJhdG9yfG9kZHxvcnxvcmR8b3RoZXJ3aXNlfHBhY2t8cGl8cHJlZHxwcmltRXhpdFdpdGh8cHJpbnR8cHJvZHVjdHxwcm9wZXJGcmFjdGlvbnxwdXRDaGFyfHB1dFN0cnxwdXRTdHJMbnxxdW90fHF1b3RSZW18cmFuZ2V8cmFuZ2VTaXplfHJlYWR8cmVhZERlY3xyZWFkRmlsZXxyZWFkRmxvYXR8cmVhZEhleHxyZWFkSU98cmVhZEludHxyZWFkTGlzdHxyZWFkTGl0Q2hhcnxyZWFkTG58cmVhZE9jdHxyZWFkUGFyZW58cmVhZFNpZ25lZHxyZWFkc3xyZWFkc1ByZWN8cmVhbFRvRnJhY3xyZWNpcHxyZW18cmVwZWF0fHJlcGxpY2F0ZXxyZXR1cm58cmV2ZXJzZXxyb3VuZHxzY2FsZUZsb2F0fHNjYW5sfHNjYW5sMXxzY2FucnxzY2FucjF8c2VxfHNlcXVlbmNlfHNlcXVlbmNlX3xzaG93fHNob3dDaGFyfHNob3dJbnR8c2hvd0xpc3R8c2hvd0xpdENoYXJ8c2hvd1BhcmVufHNob3dTaWduZWR8c2hvd1N0cmluZ3xzaG93c3xzaG93c1ByZWN8c2lnbmlmaWNhbmR8c2lnbnVtfHNpbnxzaW5ofHNuZHxzb3J0fHNwYW58c3BsaXRBdHxzcXJ0fHN1YnRyYWN0fHN1Y2N8c3VtfHRhaWx8dGFrZXx0YWtlV2hpbGV8dGFufHRhbmh8dGhyZWFkVG9JT1Jlc3VsdHx0b0VudW18dG9JbnR8dG9JbnRlZ2VyfHRvTG93ZXJ8dG9SYXRpb25hbHx0b1VwcGVyfHRydW5jYXRlfHVuY3Vycnl8dW5kZWZpbmVkfHVubGluZXN8dW50aWx8dW53b3Jkc3x1bnppcHx1bnppcDN8dXNlckVycm9yfHdvcmRzfHdyaXRlRmlsZXx6aXB8emlwM3x6aXBXaXRofHppcFdpdGgzKVxcYi8sbnVtYmVyOi9cXGIoPzpcXGQrKD86XFwuXFxkKyk/KD86ZVsrLV0/XFxkKyk/fDBvWzAtN10rfDB4WzAtOWEtZl0rKVxcYi9pLG9wZXJhdG9yOi9cXHNcXC5cXHN8Wy0hIyQlKis9PyZAfH4uOjw+XlxcXFxcXC9dKlxcLlstISMkJSorPT8mQHx+Ljo8Pl5cXFxcXFwvXSt8Wy0hIyQlKis9PyZAfH4uOjw+XlxcXFxcXC9dK1xcLlstISMkJSorPT8mQHx+Ljo8Pl5cXFxcXFwvXSp8Wy0hIyQlKis9PyZAfH46PD5eXFxcXFxcL10rfGAoW0EtWl1bXFx3J10qXFwuKSpbX2Etel1bXFx3J10qYC8saHZhcmlhYmxlOi9cXGIoPzpbQS1aXVtcXHcnXSpcXC4pKltfYS16XVtcXHcnXSpcXGIvLGNvbnN0YW50Oi9cXGIoPzpbQS1aXVtcXHcnXSpcXC4pKltBLVpdW1xcdyddKlxcYi8scHVuY3R1YXRpb246L1t7fVtcXF07KCksLjpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImhhc2tlbGxcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmhheGU9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7c3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXFtcXHNcXFNdKSpcXDEvLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246e3BhdHRlcm46LyhefFteXFxcXF0pXFwkKD86XFx3K3xcXHtbXn1dK1xcfSkvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOntwYXR0ZXJuOi9eXFwkXFx3Ki8sYWxpYXM6XCJ2YXJpYWJsZVwifX19fX0sa2V5d29yZDovXFxidGhpc1xcYnxcXGIoPzphYnN0cmFjdHxhc3xicmVha3xjYXNlfGNhc3R8Y2F0Y2h8Y2xhc3N8Y29udGludWV8ZGVmYXVsdHxkb3xkeW5hbWljfGVsc2V8ZW51bXxleHRlbmRzfGV4dGVybnxmcm9tfGZvcnxmdW5jdGlvbnxpZnxpbXBsZW1lbnRzfGltcG9ydHxpbnxpbmxpbmV8aW50ZXJmYWNlfG1hY3JvfG5ld3xudWxsfG92ZXJyaWRlfHB1YmxpY3xwcml2YXRlfHJldHVybnxzdGF0aWN8c3VwZXJ8c3dpdGNofHRocm93fHRvfHRyeXx0eXBlZGVmfHVzaW5nfHZhcnx3aGlsZSkoPyFcXC4pXFxiLyxvcGVyYXRvcjovXFwuezN9fFxcK1xcKz98LVstPl0/fFs9IV09P3wmJj98XFx8XFx8P3w8Wzw9XT98Pls+PV0/fFsqXFwvJX5eXS99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJoYXhlXCIsXCJjbGFzcy1uYW1lXCIse3JlZ2V4OntwYXR0ZXJuOi9+XFwvKD86W15cXC9cXFxcXFxyXFxuXXxcXFxcLikrXFwvW2lnbXN1XSovLGdyZWVkeTohMH19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJoYXhlXCIsXCJrZXl3b3JkXCIse3ByZXByb2Nlc3Nvcjp7cGF0dGVybjovI1xcdysvLGFsaWFzOlwiYnVpbHRpblwifSxtZXRhZGF0YTp7cGF0dGVybjovQDo/XFx3Ky8sYWxpYXM6XCJzeW1ib2xcIn0scmVpZmljYXRpb246e3BhdHRlcm46L1xcJCg/Olxcdyt8KD89XFx7KSkvLGFsaWFzOlwidmFyaWFibGVcIn19KSxlLmxhbmd1YWdlcy5oYXhlLnN0cmluZy5pbnNpZGUuaW50ZXJwb2xhdGlvbi5pbnNpZGUucmVzdD1lLmxhbmd1YWdlcy5oYXhlLGRlbGV0ZSBlLmxhbmd1YWdlcy5oYXhlW1wiY2xhc3MtbmFtZVwiXX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiaGF4ZVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuaHBrcD17ZGlyZWN0aXZlOntwYXR0ZXJuOi9cXGIoPzooPzppbmNsdWRlU3ViRG9tYWluc3xwcmVsb2FkfHN0cmljdCkoPzogfDspfHBpbi1zaGEyNTY9XCJbYS16QS1aXFxkKz1cXC9dK1wifCg/Om1heC1hZ2V8cmVwb3J0LXVyaSk9fHJlcG9ydC10byApLyxhbGlhczpcImtleXdvcmRcIn0sc2FmZTp7cGF0dGVybjovXFxkezcsfS8sYWxpYXM6XCJzZWxlY3RvclwifSx1bnNhZmU6e3BhdHRlcm46L1xcZHswLDZ9LyxhbGlhczpcImZ1bmN0aW9uXCJ9fX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiaHBrcFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuaHN0cz17ZGlyZWN0aXZlOntwYXR0ZXJuOi9cXGIoPzptYXgtYWdlPXxpbmNsdWRlU3ViRG9tYWluc3xwcmVsb2FkKS8sYWxpYXM6XCJrZXl3b3JkXCJ9LHNhZmU6e3BhdHRlcm46L1xcZHs4LH0vLGFsaWFzOlwic2VsZWN0b3JcIn0sdW5zYWZlOntwYXR0ZXJuOi9cXGR7MCw3fS8sYWxpYXM6XCJmdW5jdGlvblwifX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImhzdHNcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmh0dHA9e1wicmVxdWVzdC1saW5lXCI6e3BhdHRlcm46L14oPzpQT1NUfEdFVHxQVVR8REVMRVRFfE9QVElPTlN8UEFUQ0h8VFJBQ0V8Q09OTkVDVClcXHMoPzpodHRwcz86XFwvXFwvfFxcLylcXFMrXFxzSFRUUFxcL1swLTkuXSsvbSxpbnNpZGU6e3Byb3BlcnR5Oi9eKD86UE9TVHxHRVR8UFVUfERFTEVURXxPUFRJT05TfFBBVENIfFRSQUNFfENPTk5FQ1QpXFxiLyxcImF0dHItbmFtZVwiOi86XFx3Ky99fSxcInJlc3BvbnNlLXN0YXR1c1wiOntwYXR0ZXJuOi9eSFRUUFxcLzEuWzAxXSBcXGQrLiovbSxpbnNpZGU6e3Byb3BlcnR5OntwYXR0ZXJuOi8oXkhUVFBcXC8xLlswMV0gKVxcZCsuKi9pLGxvb2tiZWhpbmQ6ITB9fX0sXCJoZWFkZXItbmFtZVwiOntwYXR0ZXJuOi9eW1xcdy1dKzooPz0uKS9tLGFsaWFzOlwia2V5d29yZFwifX07dmFyIHQ9e1wiYXBwbGljYXRpb24vanNvblwiOmUubGFuZ3VhZ2VzLmphdmFzY3JpcHQsXCJhcHBsaWNhdGlvbi94bWxcIjplLmxhbmd1YWdlcy5tYXJrdXAsXCJ0ZXh0L3htbFwiOmUubGFuZ3VhZ2VzLm1hcmt1cCxcInRleHQvaHRtbFwiOmUubGFuZ3VhZ2VzLm1hcmt1cH07Zm9yKHZhciBuIGluIHQpaWYodFtuXSl7dmFyIHI9e307cltuXT17cGF0dGVybjpuZXcgUmVnRXhwKFwiKGNvbnRlbnQtdHlwZTpcXFxccypcIituK1wiW1xcXFx3XFxcXFddKj8pKD86XFxcXHI/XFxcXG58XFxcXHIpezJ9W1xcXFx3XFxcXFddKlwiLFwiaVwiKSxsb29rYmVoaW5kOiEwLGluc2lkZTp7cmVzdDp0W25dfX0sZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiaHR0cFwiLFwiaGVhZGVyLW5hbWVcIixyKX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImh0dHBcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmljaGlnb2phbT17Y29tbWVudDovKD86XFxCJ3xSRU0pKD86W15cXG5cXHJdKikvaSxzdHJpbmc6e3BhdHRlcm46L1wiKD86XCJcInxbISMkJSYnKCkqLFxcLzo7PD0+P15fICtcXC0uQS1aXFxkXSkqXCIvaSxncmVlZHk6ITB9LG51bWJlcjovXFxCI1swLTlBLUZdK3xcXEJgWzAxXSt8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86RVsrLV0/XFxkKyk/L2ksa2V5d29yZDovXFxiKD86QkVFUHxCUFN8Q0FTRXxDTEVBUnxDTEt8Q0xPfENMUHxDTFN8Q0xUfENMVnxDT05UfENPUFl8RUxTRXxFTkR8RklMRXxGSUxFU3xGT1J8R09TVUJ8R1NCfEdPVE98SUZ8SU5QVVR8S0JEfExFRHxMRVR8TElTVHxMT0FEfExPQ0FURXxMUlVOfE5FV3xORVhUfE9VVHxSSUdIVHxQTEFZfFBPS0V8UFJJTlR8UFdNfFJFTXxSRU5VTXxSRVNFVHxSRVRVUk58UlROfFJVTnxTQVZFfFNDUk9MTHxTTEVFUHxTUk5EfFNURVB8U1RPUHxTVUJ8VEVNUE98VEhFTnxUT3xVQVJUfFZJREVPfFdBSVQpKD86XFwkfFxcYikvaSxmdW5jdGlvbjovXFxiKD86QUJTfEFOQXxBU0N8QklOfEJUTnxERUN8RU5EfEZSRUV8SEVMUHxIRVh8STJDUnxJMkNXfElOfElOS0VZfExFTnxMSU5FfFBFRUt8Uk5EfFNDUnxTT1VORHxTVFJ8VElDS3xVU1J8VkVSfFZQRUVLfFpFUikoPzpcXCR8XFxiKS9pLGxhYmVsOi8oPzpcXEJAW15cXHNdKykvaSxvcGVyYXRvcjovPFs9Pl0/fD49P3xcXHxcXHx8JiZ8WytcXC0qXFwvPXwmXn4hXXxcXGIoPzpBTkR8Tk9UfE9SKVxcYi9pLHB1bmN0dWF0aW9uOi9bXFxbLDs6KClcXF1dL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImljaGlnb2phbVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuaWNvbj17Y29tbWVudDovIy4qLyxzdHJpbmc6e3BhdHRlcm46LyhbXCInXSkoPzooPyFcXDEpW15cXFxcXFxyXFxuX118XFxcXC58Xyg/IVxcMSkoPzpcXHJcXG58W1xcc1xcU10pKSpcXDEvLGdyZWVkeTohMH0sbnVtYmVyOi9cXGIoPzpcXGQrclthLXpcXGRdK3xcXGQrKD86XFwuXFxkKyk/KD86ZVsrLV0/XFxkKyk/KVxcYnxcXC5cXGQrXFxiL2ksXCJidWlsdGluLWtleXdvcmRcIjp7cGF0dGVybjovJig/OmFsbG9jYXRlZHxhc2NpaXxjbG9ja3xjb2xsZWN0aW9uc3xjc2V0fGN1cnJlbnR8ZGF0ZXxkYXRlbGluZXxkaWdpdHN8ZHVtcHxlfGVycm9yKD86bnVtYmVyfHRleHR8dmFsdWUpP3xlcnJvdXR8ZmFpbHxmZWF0dXJlc3xmaWxlfGhvc3R8aW5wdXR8bGNhc2V8bGV0dGVyc3xsZXZlbHxsaW5lfG1haW58bnVsbHxvdXRwdXR8cGhpfHBpfHBvc3xwcm9nbmFtZXxyYW5kb218cmVnaW9uc3xzb3VyY2V8c3RvcmFnZXxzdWJqZWN0fHRpbWV8dHJhY2V8dWNhc2V8dmVyc2lvbilcXGIvLGFsaWFzOlwidmFyaWFibGVcIn0sZGlyZWN0aXZlOntwYXR0ZXJuOi9cXCRcXHcrLyxhbGlhczpcImJ1aWx0aW5cIn0sa2V5d29yZDovXFxiKD86YnJlYWt8Ynl8Y2FzZXxjcmVhdGV8ZGVmYXVsdHxkb3xlbHNlfGVuZHxldmVyeXxmYWlsfGdsb2JhbHxpZnxpbml0aWFsfGludm9jYWJsZXxsaW5rfGxvY2FsfG5leHR8bm90fG9mfHByb2NlZHVyZXxyZWNvcmR8cmVwZWF0fHJldHVybnxzdGF0aWN8c3VzcGVuZHx0aGVufHRvfHVudGlsfHdoaWxlKVxcYi8sZnVuY3Rpb246Lyg/IVxcZClcXHcrKD89XFxzKlsoe118XFxzKiFcXHMqXFxbKS8sb3BlcmF0b3I6L1srLV06KD8hPSl8KD86W1xcLz9AXiUmXXxcXCtcXCs/fC0tP3w9PT89P3x+PT0/PT98XFwqXFwqP3xcXHxcXHxcXHw/fDwoPzotPj98PD89Pyl8Pj4/PT8pKD86Oj0pP3w6KD86PTo/KT98WyEuXFxcXHx+XS8scHVuY3R1YXRpb246L1tcXFtcXF0oKXt9LDtdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImljb25cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmluZm9ybTc9e3N0cmluZzp7cGF0dGVybjovXCJbXlwiXSpcIi8saW5zaWRlOntzdWJzdGl0dXRpb246e3BhdHRlcm46L1xcW1teXFxdXStcXF0vLGluc2lkZTp7ZGVsaW1pdGVyOntwYXR0ZXJuOi9cXFt8XFxdLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9fX19fSxjb21tZW50OntwYXR0ZXJuOi9cXFtbXlxcXV0rXFxdLyxncmVlZHk6ITB9LHRpdGxlOntwYXR0ZXJuOi9eWyBcXHRdKig/OnZvbHVtZXxib29rfHBhcnQoPyEgb2YpfGNoYXB0ZXJ8c2VjdGlvbnx0YWJsZSlcXGIuKy9pbSxhbGlhczpcImltcG9ydGFudFwifSxudW1iZXI6e3BhdHRlcm46LyhefFteLV0pKD86XFxiXFxkKyg/OlxcLlxcZCspPyg/OlxcXlxcZCspP1xcdyp8XFxiKD86b25lfHR3b3x0aHJlZXxmb3VyfGZpdmV8c2l4fHNldmVufGVpZ2h0fG5pbmV8dGVufGVsZXZlbnx0d2VsdmUpKVxcYig/IS0pL2ksbG9va2JlaGluZDohMH0sdmVyYjp7cGF0dGVybjovKF58W14tXSlcXGIoPzphcHBseWluZyB0b3xhcmV8YXR0YWNraW5nfGFuc3dlcmluZ3xhc2tpbmd8YmUoPzppbmcpP3xidXJuaW5nfGJ1eWluZ3xjYWxsZWR8Y2Fycmllc3xjYXJyeSg/ISBvdXQpfGNhcnJ5aW5nfGNsaW1iaW5nfGNsb3Npbmd8Y29uY2VhbCg/OnN8aW5nKT98Y29uc3VsdGluZ3xjb250YWluKD86c3xpbmcpP3xjdXR0aW5nfGRyaW5raW5nfGRyb3BwaW5nfGVhdGluZ3xlbmNsb3MoPzplcz98aW5nKXxlbnRlcmluZ3xleGFtaW5pbmd8ZXhpdGluZ3xnZXR0aW5nfGdpdmluZ3xnb2luZ3xoYSg/OnZlfHN8dmluZyl8aG9sZCg/OnN8aW5nKT98aW1wbCg/Onl8aWVzKXxpbmNvcnBvcmF0KD86ZXM/fGluZyl8aW5zZXJ0aW5nfGlzfGp1bXBpbmd8a2lzc2luZ3xsaXN0ZW5pbmd8bG9ja2luZ3xsb29raW5nfG1lYW4oPzpzfGluZyk/fG9wZW5pbmd8cHJvdmlkKD86ZXM/fGluZyl8cHVsbGluZ3xwdXNoaW5nfHB1dHRpbmd8cmVsYXQoPzplcz98aW5nKXxyZW1vdmluZ3xzZWFyY2hpbmd8c2VlKD86c3xpbmcpP3xzZXR0aW5nfHNob3dpbmd8c2luZ2luZ3xzbGVlcGluZ3xzbWVsbGluZ3xzcXVlZXppbmd8c3dpdGNoaW5nfHN1cHBvcnQoPzpzfGluZyk/fHN3ZWFyaW5nfHRha2luZ3x0YXN0aW5nfHRlbGxpbmd8dGhpbmtpbmd8dGhyb3dpbmd8dG91Y2hpbmd8dHVybmluZ3x0eWluZ3x1bmxvY2soPzpzfGluZyk/fHZhcig/Onl8aWVzfHlpbmcpfHdhaXRpbmd8d2FraW5nfHdhdmluZ3x3ZWFyKD86c3xpbmcpPylcXGIoPyEtKS9pLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJvcGVyYXRvclwifSxrZXl3b3JkOntwYXR0ZXJuOi8oXnxbXi1dKVxcYig/OmFmdGVyfGJlZm9yZXxjYXJyeSBvdXR8Y2hlY2t8Y29udGludWUgdGhlIGFjdGlvbnxkZWZpbml0aW9uKD89ICo6KXxkbyBub3RoaW5nfGVsc2V8ZW5kICg/OmlmfHVubGVzc3x0aGUgc3RvcnkpfGV2ZXJ5IHR1cm58aWZ8aW5jbHVkZXxpbnN0ZWFkKD86IG9mKT98bGV0fG1vdmV8bm98bm93fG90aGVyd2lzZXxyZXBlYXR8cmVwb3J0fHJlc3VtZSB0aGUgc3Rvcnl8cnVsZSBmb3J8cnVubmluZyB0aHJvdWdofHNheSg/OmluZyk/fHN0b3AgdGhlIGFjdGlvbnx0ZXN0fHRyeSg/OmluZyk/fHVuZGVyc3RhbmR8dW5sZXNzfHVzZXx3aGVufHdoaWxlfHllcylcXGIoPyEtKS9pLGxvb2tiZWhpbmQ6ITB9LHByb3BlcnR5OntwYXR0ZXJuOi8oXnxbXi1dKVxcYig/OmFkamFjZW50KD8hIHRvKXxjYXJyaWVkfGNsb3NlZHxjb25jZWFsZWR8Y29udGFpbmVkfGRhcmt8ZGVzY3JpYmVkfGVkaWJsZXxlbXB0eXxlbmNsb3NlZHxlbnRlcmFibGV8ZXZlbnxmZW1hbGV8Zml4ZWQgaW4gcGxhY2V8ZnVsbHxoYW5kbGVkfGhlbGR8aW1wcm9wZXItbmFtZWR8aW5jb3Jwb3JhdGVkfGluZWRpYmxlfGludmlzaWJsZXxsaWdodGVkfGxpdHxsb2NrKD86YWJsZXxlZCl8bWFsZXxtYXJrZWQgZm9yIGxpc3Rpbmd8bWVudGlvbmVkfG5lZ2F0aXZlfG5ldXRlcnxub24tKD86ZW1wdHl8ZnVsbHxyZWN1cnJpbmcpfG9kZHxvcGFxdWV8b3Blbig/OmFibGUpP3xwbHVyYWwtbmFtZWR8cG9ydGFibGV8cG9zaXRpdmV8cHJpdmF0ZWx5LW5hbWVkfHByb3Blci1uYW1lZHxwcm92aWRlZHxwdWJsaWNhbGx5LW5hbWVkfHB1c2hhYmxlIGJldHdlZW4gcm9vbXN8cmVjdXJyaW5nfHJlbGF0ZWR8cnViYmluZ3xzY2VuZXJ5fHNlZW58c2luZ3VsYXItbmFtZWR8c3VwcG9ydGVkfHN3aW5naW5nfHN3aXRjaCg/OmFibGV8ZWQoPzogb258IG9mZik/KXx0b3VjaCg/OmFibGV8ZWQpfHRyYW5zcGFyZW50fHVuY29uY2VhbGVkfHVuZGVzY3JpYmVkfHVubGl0fHVubG9ja2VkfHVubWFya2VkIGZvciBsaXN0aW5nfHVubWVudGlvbmVkfHVub3BlbmFibGV8dW50b3VjaGFibGV8dW52aXNpdGVkfHZhcmlhYmxlfHZpc2libGV8dmlzaXRlZHx3ZWFyYWJsZXx3b3JuKVxcYig/IS0pL2ksbG9va2JlaGluZDohMCxhbGlhczpcInN5bWJvbFwifSxwb3NpdGlvbjp7cGF0dGVybjovKF58W14tXSlcXGIoPzphYm92ZXxhZGphY2VudCB0b3xiYWNrIHNpZGUgb2Z8YmVsb3d8YmV0d2Vlbnxkb3dufGVhc3R8ZXZlcnl3aGVyZXxmcm9udCBzaWRlfGhlcmV8aW58aW5zaWRlKD86IGZyb20pP3xub3J0aCg/OmVhc3R8d2VzdCk/fG5vd2hlcmV8b24oPzogdG9wIG9mKT98b3RoZXIgc2lkZXxvdXRzaWRlKD86IGZyb20pP3xwYXJ0cz8gb2Z8cmVnaW9uYWxseSBpbnxzb3V0aCg/OmVhc3R8d2VzdCk/fHRocm91Z2h8dXB8d2VzdHx3aXRoaW4pXFxiKD8hLSkvaSxsb29rYmVoaW5kOiEwLGFsaWFzOlwia2V5d29yZFwifSx0eXBlOntwYXR0ZXJuOi8oXnxbXi1dKVxcYig/OmFjdGlvbnM/fGFjdGl2aXQoPzp5fGllcyl8YWN0b3JzP3xhbmltYWxzP3xiYWNrZHJvcHM/fGNvbnRhaW5lcnM/fGRldmljZXM/fGRpcmVjdGlvbnM/fGRvb3JzP3xob2xkZXJzP3xraW5kcz98bGlzdHM/fG1bYWVdbnxub2JvZHl8bm90aGluZ3xub3Vucz98bnVtYmVycz98b2JqZWN0cz98cGVvcGxlfHBlcnNvbnM/fHBsYXllcig/OidzIGhvbGRhbGwpP3xyZWdpb25zP3xyZWxhdGlvbnM/fHJvb21zP3xydWxlKD86Ym9vayk/cz98c2NlbmVzP3xzb21lb25lfHNvbWV0aGluZ3xzdXBwb3J0ZXJzP3x0YWJsZXM/fHRleHRzP3x0aGluZ3M/fHRpbWV8dmVoaWNsZXM/fHdvbVthZV1uKVxcYig/IS0pL2ksbG9va2JlaGluZDohMCxhbGlhczpcInZhcmlhYmxlXCJ9LHB1bmN0dWF0aW9uOi9bLiw6Oygpe31dL30sZS5sYW5ndWFnZXMuaW5mb3JtNy5zdHJpbmcuaW5zaWRlLnN1YnN0aXR1dGlvbi5pbnNpZGUucmVzdD1lLmxhbmd1YWdlcy5pbmZvcm03LGUubGFuZ3VhZ2VzLmluZm9ybTcuc3RyaW5nLmluc2lkZS5zdWJzdGl0dXRpb24uaW5zaWRlLnJlc3QudGV4dD17cGF0dGVybjovXFxTKD86XFxzKlxcUykqLyxhbGlhczpcImNvbW1lbnRcIn19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImluZm9ybTdcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmluaT17Y29tbWVudDovXlsgXFx0XSo7LiokL20sc2VsZWN0b3I6L15bIFxcdF0qXFxbLio/XFxdL20sY29uc3RhbnQ6L15bIFxcdF0qW15cXHM9XSs/KD89WyBcXHRdKj0pL20sXCJhdHRyLXZhbHVlXCI6e3BhdHRlcm46Lz0uKi8saW5zaWRlOntwdW5jdHVhdGlvbjovXls9XS99fX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImluaVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuaW89e2NvbW1lbnQ6W3twYXR0ZXJuOi8oXnxbXlxcXFxdKVxcL1xcKltcXHNcXFNdKj8oPzpcXCpcXC98JCkvLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXnxbXlxcXFxdKVxcL1xcLy4qLyxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W15cXFxcXSkjLiovLGxvb2tiZWhpbmQ6ITB9XSxcInRyaXBsZS1xdW90ZWQtc3RyaW5nXCI6e3BhdHRlcm46L1wiXCJcIig/OlxcXFxbXFxzXFxTXXwoPyFcIlwiXCIpW15cXFxcXSkqXCJcIlwiLyxncmVlZHk6ITAsYWxpYXM6XCJzdHJpbmdcIn0sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlxcXFwufFteXFxcXFxcclxcblwiXSkqXCIvLGdyZWVkeTohMH0sa2V5d29yZDovXFxiKD86YWN0aXZhdGV8YWN0aXZlQ29yb0NvdW50fGFzU3RyaW5nfGJsb2NrfGJyZWFrfGNhdGNofGNsb25lfGNvbGxlY3RHYXJiYWdlfGNvbXBpbGVTdHJpbmd8Y29udGludWV8ZG98ZG9GaWxlfGRvTWVzc2FnZXxkb1N0cmluZ3xlbHNlfGVsc2VpZnxleGl0fGZvcnxmb3JlYWNofGZvcndhcmR8Z2V0U2xvdHxnZXRFbnZpcm9ubWVudFZhcmlhYmxlfGhhc1Nsb3R8aWZ8aWZGYWxzZXxpZk5pbHxpZk5pbEV2YWx8aWZUcnVlfGlzQWN0aXZlfGlzTmlsfGlzUmVzdW1hYmxlfGxpc3R8bWVzc2FnZXxtZXRob2R8cGFyZW50fHBhc3N8cGF1c2V8cGVyZm9ybXxwZXJmb3JtV2l0aEFyZ0xpc3R8cHJpbnR8cHJpbnRsbnxwcm90b3xyYWlzZXxyYWlzZVJlc3VtYWJsZXxyZW1vdmVTbG90fHJlc2VuZHxyZXN1bWV8c2NoZWR1bGVyU2xlZXBTZWNvbmRzfHNlbGZ8c2VuZGVyfHNldFNjaGVkdWxlclNsZWVwU2Vjb25kc3xzZXRTbG90fHNoYWxsb3dDb3B5fHNsb3ROYW1lc3xzdXBlcnxzeXN0ZW18dGhlbnx0aGlzQmxvY2t8dGhpc0NvbnRleHR8Y2FsbHx0cnl8dHlwZXx1bmlxdWVJZHx1cGRhdGVTbG90fHdhaXR8d2hpbGV8d3JpdGV8eWllbGQpXFxiLyxidWlsdGluOi9cXGIoPzpBcnJheXxBdWRpb0RldmljZXxBdWRpb01peGVyfEJsb2NrfEJveHxCdWZmZXJ8Q0Z1bmN0aW9ufENHSXxDb2xvcnxDdXJzZXN8REJNfEROU1Jlc29sdmVyfERPQ29ubmVjdGlvbnxET1Byb3h5fERPU2VydmVyfERhdGV8RGlyZWN0b3J5fER1cmF0aW9ufER5bkxpYnxFcnJvcnxFeGNlcHRpb258RkZUfEZpbGV8Rm5tYXRjaHxGb250fEZ1dHVyZXxHTHxHTEV8R0xTY2lzc29yfEdMVXxHTFVDeWxpbmRlcnxHTFVRdWFkcmljfEdMVVNwaGVyZXxHTFVUfEhvc3R8SW1hZ2V8SW1wb3J0ZXJ8TGlua0xpc3R8TGlzdHxMb2JieXxMb2NhbHN8TUQ1fE1QM0RlY29kZXJ8TVAzRW5jb2RlcnxNYXB8TWVzc2FnZXxNb3ZpZXxOb3RpZmljYXRpb258TnVtYmVyfE9iamVjdHxPcGVuR0x8UG9pbnR8UHJvdG9zfFJlZ2V4fFNHTUx8U0dNTEVsZW1lbnR8U0dNTFBhcnNlcnxTUUxpdGV8U2VydmVyfFNlcXVlbmNlfFNob3dNZXNzYWdlfFNsZWVweUNhdHxTbGVlcHlDYXRDdXJzb3J8U29ja2V0fFNvY2tldE1hbmFnZXJ8U291bmR8U291cHxTdG9yZXxTdHJpbmd8VHJlZXxVRFBTZW5kZXJ8VVBEUmVjZWl2ZXJ8VVJMfFVzZXJ8V2FybmluZ3xXZWFrTGlua3xSYW5kb218QmlnTnVtfFNlcXVlbmNlKVxcYi8sYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZXxuaWwpXFxiLyxudW1iZXI6L1xcYjB4W1xcZGEtZl0rXFxifCg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OmUtP1xcZCspPy9pLG9wZXJhdG9yOi9bPSEqXFwvJSstXiZ8XT18Pj4/PT98PDw/PT98Oj86Pz18XFwrXFwrP3wtLT98XFwqXFwqP3xcXC9cXC8/fCV8XFx8XFx8P3wmJj98KFxcYig/OnJldHVybnxhbmR8b3J8bm90KVxcYil8QEA/fFxcP1xcPz98XFwuXFwuLyxwdW5jdHVhdGlvbjovW3t9W1xcXTsoKSwuOl0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiaW9cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmo9e2NvbW1lbnQ6L1xcYk5CXFwuLiovLHN0cmluZzp7cGF0dGVybjovJyg/OicnfFteJ1xcclxcbl0pKicvLGdyZWVkeTohMH0sa2V5d29yZDovXFxiKD86KD86YWR2ZXJifGNvbmp1bmN0aW9ufENSfGRlZnxkZWZpbmV8ZHlhZHxMRnxtb25hZHxub3VufHZlcmIpXFxifCg/OmFzc2VydHxicmVha3xjYXNlfGNhdGNoW2R0XT98Y29udGludWV8ZG98ZWxzZXxlbHNlaWZ8ZW5kfGZjYXNlfGZvcnxmb3JfXFx3K3xnb3RvX1xcdyt8aWZ8bGFiZWxfXFx3K3xyZXR1cm58c2VsZWN0fHRocm93fHRyeXx3aGlsZXx3aGlsc3QpXFwuKS8sdmVyYjp7cGF0dGVybjovKD8hXFxeOnw7XFwufFs9IV1bLjpdKSg/Olxceyg/OlxcLnw6Oj8pP3xwKD86XFwuXFwuP3w6KXxbPSFcXF1dfFs8PisqXFwtJSR8LCNdWy46XT98Wz9eXVxcLj98WztcXFtdOj98W359XCJpXVsuOl18W0FDZUVJakxvcl1cXC58KD86W19cXC9cXFxccXN1eF18Xz9cXGQpOikvLGFsaWFzOlwia2V5d29yZFwifSxudW1iZXI6L1xcYl8/KD86KD8hXFxkOilcXGQrKD86XFwuXFxkKyk/KD86KD86W2VqcHhdfGFkfGFyKV8/XFxkKyg/OlxcLlxcZCspPykqKD86Yl8/W1xcZGEtel0rKD86XFwuW1xcZGEtel0rKT8pP3xfKD8hXFwuKSkvLGFkdmVyYjp7cGF0dGVybjovW359XXxbXFwvXFxcXF1cXC4/fFtiZk1dXFwufHRbLjpdLyxhbGlhczpcImJ1aWx0aW5cIn0sb3BlcmF0b3I6L1s9YV1bLjpdfF9cXC4vLGNvbmp1bmN0aW9uOntwYXR0ZXJuOi8mKD86XFwuOj98Oik/fFsuOkBdWy46XT98WyFEXVsuOl18WztkSFRdXFwufGA6P3xbXFxeTFNdOnxcIi8sYWxpYXM6XCJ2YXJpYWJsZVwifSxwdW5jdHVhdGlvbjovWygpXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJqXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5qb2xpZT1lLmxhbmd1YWdlcy5leHRlbmQoXCJjbGlrZVwiLHtrZXl3b3JkOi9cXGIoPzppbmNsdWRlfGRlZmluZXxpc19kZWZpbmVkfHVuZGVmfG1haW58aW5pdHxvdXRwdXRQb3J0fGlucHV0UG9ydHxMb2NhdGlvbnxQcm90b2NvbHxJbnRlcmZhY2VzfFJlcXVlc3RSZXNwb25zZXxPbmVXYXl8dHlwZXxpbnRlcmZhY2V8ZXh0ZW5kZXJ8dGhyb3dzfGNzZXR8Y3NldHN8Zm9yd2FyZHxBZ2dyZWdhdGVzfFJlZGlyZWN0c3xlbWJlZGRlZHxjb3VyaWVyfGV4ZWN1dGlvbnxzZXF1ZW50aWFsfGNvbmN1cnJlbnR8c2luZ2xlfHNjb3BlfGluc3RhbGx8dGhyb3d8Y29tcHxjSHxkZWZhdWx0fGdsb2JhbHxsaW5rSW58bGlua091dHxzeW5jaHJvbml6ZWR8dGhpc3xuZXd8Zm9yfGlmfGVsc2V8d2hpbGV8aW58Sm9saWV8SmF2YXxKYXZhc2NyaXB0fG51bGxQcm9jZXNzfHNwYXdufGNvbnN0YW50c3x3aXRofHByb3ZpZGV8dW50aWx8ZXhpdHxmb3JlYWNofGluc3RhbmNlb2Z8b3ZlcnxzZXJ2aWNlKVxcYi8sYnVpbHRpbjovXFxiKD86dW5kZWZpbmVkfHN0cmluZ3xpbnR8dm9pZHxsb25nfEJ5dGV8Ym9vbHxkb3VibGV8ZmxvYXR8Y2hhcnxhbnkpXFxiLyxudW1iZXI6Lyg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OmVbKy1dP1xcZCspP2w/L2ksb3BlcmF0b3I6Ly1bLT0+XT98XFwrWys9XT98PFs8PV0/fFs+PSohXT0/fCYmfFxcfFxcfHxbOj9cXC8lXl0vLHN5bWJvbDovW3w7QF0vLHB1bmN0dWF0aW9uOi9bLC5dLyxzdHJpbmc6e3BhdHRlcm46LyhbXCInXSkoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITB9fSksZGVsZXRlIGUubGFuZ3VhZ2VzLmpvbGllW1wiY2xhc3MtbmFtZVwiXSxkZWxldGUgZS5sYW5ndWFnZXMuam9saWUuZnVuY3Rpb24sZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiam9saWVcIixcImtleXdvcmRcIix7ZnVuY3Rpb246e3BhdHRlcm46LygoPzpcXGIoPzpvdXRwdXRQb3J0fGlucHV0UG9ydHxpbnxzZXJ2aWNlfGNvdXJpZXIpXFxifEApXFxzKilcXHcrLyxsb29rYmVoaW5kOiEwfSxhZ2dyZWdhdGVzOntwYXR0ZXJuOi8oXFxiQWdncmVnYXRlc1xccyo6XFxzKikoPzpcXHcrKD86XFxzK3dpdGhcXHMrXFx3Kyk/XFxzKixcXHMqKSpcXHcrKD86XFxzK3dpdGhcXHMrXFx3Kyk/Lyxsb29rYmVoaW5kOiEwLGluc2lkZTp7d2l0aEV4dGVuc2lvbjp7cGF0dGVybjovXFxid2l0aFxccytcXHcrLyxpbnNpZGU6e2tleXdvcmQ6L1xcYndpdGhcXGIvfX0sZnVuY3Rpb246e3BhdHRlcm46L1xcdysvfSxwdW5jdHVhdGlvbjp7cGF0dGVybjovLC99fX0scmVkaXJlY3RzOntwYXR0ZXJuOi8oXFxiUmVkaXJlY3RzXFxzKjpcXHMqKSg/OlxcdytcXHMqPT5cXHMqXFx3K1xccyosXFxzKikqKD86XFx3K1xccyo9PlxccypcXHcrKS8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOntwYXR0ZXJuOi8sL30sZnVuY3Rpb246e3BhdHRlcm46L1xcdysvfSxzeW1ib2w6e3BhdHRlcm46Lz0+L319fX0pfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJqb2xpZVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuanNvbj17cHJvcGVydHk6L1wiKD86XFxcXC58W15cXFxcXCJcXHJcXG5dKSpcIig/PVxccyo6KS9pLHN0cmluZzp7cGF0dGVybjovXCIoPzpcXFxcLnxbXlxcXFxcIlxcclxcbl0pKlwiKD8hXFxzKjopLyxncmVlZHk6ITB9LG51bWJlcjovXFxiMHhbXFxkQS1GYS1mXStcXGJ8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86W0VlXVsrLV0/XFxkKyk/LyxwdW5jdHVhdGlvbjovW3t9W1xcXSk7LF0vLG9wZXJhdG9yOi86L2csYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvaSxudWxsOi9cXGJudWxsXFxiL2l9LGUubGFuZ3VhZ2VzLmpzb25wPWUubGFuZ3VhZ2VzLmpzb259ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImpzb25cIixyLmFsaWFzZXM9W1wianNvbnBcIl19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmp1bGlhPXtjb21tZW50OntwYXR0ZXJuOi8oXnxbXlxcXFxdKSMuKi8sbG9va2JlaGluZDohMH0sc3RyaW5nOi8oXCJcIlwifCcnJylbXFxzXFxTXSs/XFwxfChcInwnKSg/OlxcXFwufCg/IVxcMilbXlxcXFxcXHJcXG5dKSpcXDIvLGtleXdvcmQ6L1xcYig/OmFic3RyYWN0fGJhcmVtb2R1bGV8YmVnaW58Yml0c3R5cGV8YnJlYWt8Y2F0Y2h8Y2NhbGx8Y29uc3R8Y29udGludWV8ZG98ZWxzZXxlbHNlaWZ8ZW5kfGV4cG9ydHxmaW5hbGx5fGZvcnxmdW5jdGlvbnxnbG9iYWx8aWZ8aW1tdXRhYmxlfGltcG9ydHxpbXBvcnRhbGx8bGV0fGxvY2FsfG1hY3JvfG1vZHVsZXxwcmludHxwcmludGxufHF1b3RlfHJldHVybnx0cnl8dHlwZXx0eXBlYWxpYXN8dXNpbmd8d2hpbGUpXFxiLyxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi8sbnVtYmVyOi8oPzpcXGIoPz1cXGQpfFxcQig/PVxcLikpKD86MFtib3hdKT8oPzpbXFxkYS1mXStcXC4/XFxkKnxcXC5cXGQrKSg/OltlZnBdWystXT9cXGQrKT9qPy9pLG9wZXJhdG9yOi9bLSsqXiXDtyYkXFxcXF09P3xcXC9bXFwvPV0/fCE9Pz0/fFxcfFs9Pl0/fDwoPzo8PT98Wz06XSk/fD4oPzo9fD4+Pz0/KT98PT0/PT98W37iiaDiiaTiiaVdLyxwdW5jdHVhdGlvbjovW3t9W1xcXTsoKSwuOl0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwianVsaWFcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmtleW1hbj17Y29tbWVudDovXFxiY1xccy4qL2ksZnVuY3Rpb246L1xcW1xccyooPzooPzpDVFJMfFNISUZUfEFMVHxMQ1RSTHxSQ1RSTHxMQUxUfFJBTFR8Q0FQU3xOQ0FQUylcXHMrKSooPzpbVEtVXV9bXFx3P10rfFwiLis/XCJ8Jy4rPycpXFxzKlxcXS9pLHN0cmluZzovKFwifCcpLio/XFwxLyxib2xkOlsvJig/OmJhc2VsYXlvdXR8Yml0bWFwfGNhcHNvbm9ubHl8Y2Fwc2Fsd2F5c29mZnxzaGlmdGZyZWVzY2Fwc3xjb3B5cmlnaHR8ZXRobm9sb2d1ZWNvZGV8aG90a2V5fGluY2x1ZGVjb2Rlc3xrZXlib2FyZHZlcnNpb258a213X2VtYmVkY3NzfGttd19lbWJlZGpzfGttd19oZWxwZmlsZXxrbXdfaGVscHRleHR8a213X3J0bHxsYW5ndWFnZXxsYXllcnxsYXlvdXRmaWxlfG1lc3NhZ2V8bW5lbW9uaWNsYXlvdXR8bmFtZXxvbGRjaGFycG9zbWF0Y2hpbmd8cGxhdGZvcm18dGFyZ2V0c3x2ZXJzaW9ufHZpc3VhbGtleWJvYXJkfHdpbmRvd3NsYW5ndWFnZXMpXFxiL2ksL1xcYig/OmJpdG1hcHxiaXRtYXBzfGNhcHMgb24gb25seXxjYXBzIGFsd2F5cyBvZmZ8c2hpZnQgZnJlZXMgY2Fwc3xjb3B5cmlnaHR8aG90a2V5fGxhbmd1YWdlfGxheW91dHxtZXNzYWdlfG5hbWV8dmVyc2lvbilcXGIvaV0sa2V5d29yZDovXFxiKD86YW55fGJhc2VsYXlvdXR8YmVlcHxjYWxsfGNvbnRleHR8ZGVhZGtleXxka3xpZnxpbmRleHxsYXllcnxub3Rhbnl8bnVsfG91dHN8cGxhdGZvcm18cmV0dXJufHJlc2V0fHNhdmV8c2V0fHN0b3JlfHVzZSlcXGIvaSxhdHJ1bGU6L1xcYig/OmFuc2l8YmVnaW58dW5pY29kZXxncm91cHx1c2luZyBrZXlzfG1hdGNofG5vbWF0Y2gpXFxiL2ksbnVtYmVyOi9cXGIoPzpVXFwrW1xcZEEtRl0rfGRcXGQrfHhbXFxkYS1mXSt8XFxkKylcXGIvaSxvcGVyYXRvcjovWys+XFxcXCwoKV0vLHRhZzovXFwkKD86a2V5bWFufGttZmx8d2VhdmVyfGtleW1hbndlYnxrZXltYW5vbmx5KTovaX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImtleW1hblwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLmtvdGxpbj1lLmxhbmd1YWdlcy5leHRlbmQoXCJjbGlrZVwiLHtrZXl3b3JkOntwYXR0ZXJuOi8oXnxbXi5dKVxcYig/OmFic3RyYWN0fGFjdHVhbHxhbm5vdGF0aW9ufGFzfGJyZWFrfGJ5fGNhdGNofGNsYXNzfGNvbXBhbmlvbnxjb25zdHxjb25zdHJ1Y3Rvcnxjb250aW51ZXxjcm9zc2lubGluZXxkYXRhfGRvfGR5bmFtaWN8ZWxzZXxlbnVtfGV4cGVjdHxleHRlcm5hbHxmaW5hbHxmaW5hbGx5fGZvcnxmdW58Z2V0fGlmfGltcG9ydHxpbnxpbmZpeHxpbml0fGlubGluZXxpbm5lcnxpbnRlcmZhY2V8aW50ZXJuYWx8aXN8bGF0ZWluaXR8bm9pbmxpbmV8bnVsbHxvYmplY3R8b3BlbnxvcGVyYXRvcnxvdXR8b3ZlcnJpZGV8cGFja2FnZXxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8cmVpZmllZHxyZXR1cm58c2VhbGVkfHNldHxzdXBlcnxzdXNwZW5kfHRhaWxyZWN8dGhpc3x0aHJvd3x0b3x0cnl8dHlwZWFsaWFzfHZhbHx2YXJ8dmFyYXJnfHdoZW58d2hlcmV8d2hpbGUpXFxiLyxsb29rYmVoaW5kOiEwfSxmdW5jdGlvbjpbL1xcdysoPz1cXHMqXFwoKS8se3BhdHRlcm46LyhcXC4pXFx3Kyg/PVxccypcXHspLyxsb29rYmVoaW5kOiEwfV0sbnVtYmVyOi9cXGIoPzowW3hYXVtcXGRhLWZBLUZdKyg/Ol9bXFxkYS1mQS1GXSspKnwwW2JCXVswMV0rKD86X1swMV0rKSp8XFxkKyg/Ol9cXGQrKSooPzpcXC5cXGQrKD86X1xcZCspKik/KD86W2VFXVsrLV0/XFxkKyg/Ol9cXGQrKSopP1tmRkxdPylcXGIvLG9wZXJhdG9yOi9cXCtbKz1dP3wtWy09Pl0/fD09Pz0/fCEoPzohfD09Pyk/fFtcXC8qJTw+XT0/fFs/Ol06P3xcXC5cXC58JiZ8XFx8XFx8fFxcYig/OmFuZHxpbnZ8b3J8c2hsfHNocnx1c2hyfHhvcilcXGIvfSksZGVsZXRlIGUubGFuZ3VhZ2VzLmtvdGxpbltcImNsYXNzLW5hbWVcIl0sZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwia290bGluXCIsXCJzdHJpbmdcIix7XCJyYXctc3RyaW5nXCI6e3BhdHRlcm46LyhcIlwiXCJ8JycnKVtcXHNcXFNdKj9cXDEvLGFsaWFzOlwic3RyaW5nXCJ9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwia290bGluXCIsXCJrZXl3b3JkXCIse2Fubm90YXRpb246e3BhdHRlcm46L1xcQkAoPzpcXHcrOik/KD86W0EtWl1cXHcqfFxcW1teXFxdXStcXF0pLyxhbGlhczpcImJ1aWx0aW5cIn19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJrb3RsaW5cIixcImZ1bmN0aW9uXCIse2xhYmVsOntwYXR0ZXJuOi9cXHcrQHxAXFx3Ky8sYWxpYXM6XCJzeW1ib2xcIn19KTt2YXIgdD1be3BhdHRlcm46L1xcJFxce1tefV0rXFx9LyxpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXlxcJFxce3xcXH0kLyxhbGlhczpcInZhcmlhYmxlXCJ9LHJlc3Q6ZS5sYW5ndWFnZXMua290bGlufX0se3BhdHRlcm46L1xcJFxcdysvLGFsaWFzOlwidmFyaWFibGVcIn1dO2UubGFuZ3VhZ2VzLmtvdGxpbi5zdHJpbmcuaW5zaWRlPWUubGFuZ3VhZ2VzLmtvdGxpbltcInJhdy1zdHJpbmdcIl0uaW5zaWRlPXtpbnRlcnBvbGF0aW9uOnR9fShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwia290bGluXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7dmFyIHQ9L1xcXFwoPzpbXmEteigpW1xcXV18W2EteipdKykvaSxuPXtcImVxdWF0aW9uLWNvbW1hbmRcIjp7cGF0dGVybjp0LGFsaWFzOlwicmVnZXhcIn19O2UubGFuZ3VhZ2VzLmxhdGV4PXtjb21tZW50Oi8lLiovbSxjZGF0YTp7cGF0dGVybjovKFxcXFxiZWdpblxceygoPzp2ZXJiYXRpbXxsc3RsaXN0aW5nKVxcKj8pXFx9KVtcXHNcXFNdKj8oPz1cXFxcZW5kXFx7XFwyXFx9KS8sbG9va2JlaGluZDohMH0sZXF1YXRpb246W3twYXR0ZXJuOi9cXCQoPzpcXFxcW1xcc1xcU118W15cXFxcJF0pKlxcJHxcXFxcXFwoW1xcc1xcU10qP1xcXFxcXCl8XFxcXFxcW1tcXHNcXFNdKj9cXFxcXFxdLyxpbnNpZGU6bixhbGlhczpcInN0cmluZ1wifSx7cGF0dGVybjovKFxcXFxiZWdpblxceygoPzplcXVhdGlvbnxtYXRofGVxbmFycmF5fGFsaWdufG11bHRsaW5lfGdhdGhlcilcXCo/KVxcfSlbXFxzXFxTXSo/KD89XFxcXGVuZFxce1xcMlxcfSkvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOm4sYWxpYXM6XCJzdHJpbmdcIn1dLGtleXdvcmQ6e3BhdHRlcm46LyhcXFxcKD86YmVnaW58ZW5kfHJlZnxjaXRlfGxhYmVsfHVzZXBhY2thZ2V8ZG9jdW1lbnRjbGFzcykoPzpcXFtbXlxcXV0rXFxdKT9cXHspW159XSsoPz1cXH0pLyxsb29rYmVoaW5kOiEwfSx1cmw6e3BhdHRlcm46LyhcXFxcdXJsXFx7KVtefV0rKD89XFx9KS8sbG9va2JlaGluZDohMH0saGVhZGxpbmU6e3BhdHRlcm46LyhcXFxcKD86cGFydHxjaGFwdGVyfHNlY3Rpb258c3Vic2VjdGlvbnxmcmFtZXRpdGxlfHN1YnN1YnNlY3Rpb258cGFyYWdyYXBofHN1YnBhcmFncmFwaHxzdWJzdWJwYXJhZ3JhcGh8c3Vic3Vic3VicGFyYWdyYXBoKVxcKj8oPzpcXFtbXlxcXV0rXFxdKT9cXHspW159XSsoPz1cXH0oPzpcXFtbXlxcXV0rXFxdKT8pLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwiY2xhc3MtbmFtZVwifSxmdW5jdGlvbjp7cGF0dGVybjp0LGFsaWFzOlwic2VsZWN0b3JcIn0scHVuY3R1YXRpb246L1tbXFxde30mXS99fShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibGF0ZXhcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmxlc3M9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY3NzXCIse2NvbW1lbnQ6Wy9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvLyx7cGF0dGVybjovKF58W15cXFxcXSlcXC9cXC8uKi8sbG9va2JlaGluZDohMH1dLGF0cnVsZTp7cGF0dGVybjovQFtcXHctXSs/KD86XFwoW157fV0rXFwpfFteKCl7fTtdKSo/KD89XFxzKlxceykvaSxpbnNpZGU6e3B1bmN0dWF0aW9uOi9bOigpXS99fSxzZWxlY3Rvcjp7cGF0dGVybjovKD86QFxce1tcXHctXStcXH18W157fTtcXHNAXSkoPzpAXFx7W1xcdy1dK1xcfXxcXChbXnt9XSpcXCl8W157fTtAXSkqPyg/PVxccypcXHspLyxpbnNpZGU6e3ZhcmlhYmxlOi9AK1tcXHctXSsvfX0scHJvcGVydHk6Lyg/OkBcXHtbXFx3LV0rXFx9fFtcXHctXSkrKD86XFwrXz8pPyg/PVxccyo6KS9pLHB1bmN0dWF0aW9uOi9be30oKTs6LF0vLG9wZXJhdG9yOi9bK1xcLSpcXC9dL30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImxlc3NcIixcInB1bmN0dWF0aW9uXCIse2Z1bmN0aW9uOmUubGFuZ3VhZ2VzLmxlc3MuZnVuY3Rpb259KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJsZXNzXCIsXCJwcm9wZXJ0eVwiLHt2YXJpYWJsZTpbe3BhdHRlcm46L0BbXFx3LV0rXFxzKjovLGluc2lkZTp7cHVuY3R1YXRpb246LzovfX0sL0BAP1tcXHctXSsvXSxcIm1peGluLXVzYWdlXCI6e3BhdHRlcm46LyhbeztdXFxzKilbLiNdKD8hXFxkKVtcXHctXSsuKj8oPz1bKDtdKS8sbG9va2JlaGluZDohMCxhbGlhczpcImZ1bmN0aW9uXCJ9fSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImxlc3NcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmxpcXVpZD17a2V5d29yZDovXFxiKD86Y29tbWVudHxlbmRjb21tZW50fGlmfGVsc2lmfGVsc2V8ZW5kaWZ8dW5sZXNzfGVuZHVubGVzc3xmb3J8ZW5kZm9yfGNhc2V8ZW5kY2FzZXx3aGVufGlufGJyZWFrfGFzc2lnbnxjb250aW51ZXxsaW1pdHxvZmZzZXR8cmFuZ2V8cmV2ZXJzZWR8cmF3fGVuZHJhd3xjYXB0dXJlfGVuZGNhcHR1cmV8dGFibGVyb3d8ZW5kdGFibGVyb3cpXFxiLyxudW1iZXI6L1xcYjBiWzAxXStcXGJ8XFxiMHhbXFxkYS1mXSpcXC4/W1xcZGEtZnAtXStcXGJ8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86ZVsrLV0/XFxkKyk/W2RmXT8vaSxvcGVyYXRvcjp7cGF0dGVybjovKF58W14uXSkoPzpcXCtbKz1dP3wtWy09XT98IT0/fDw8Pz0/fD4+Pz4/PT98PT0/fCZbJj1dP3xcXHxbfD1dP3xcXCo9P3xcXC89P3wlPT98XFxePT98Wz86fl0pL20sbG9va2JlaGluZDohMH0sZnVuY3Rpb246e3BhdHRlcm46LyhefFtcXHM7fCZdKSg/OmFwcGVuZHxwcmVwZW5kfGNhcGl0YWxpemV8Y3ljbGV8Y29sc3xpbmNyZW1lbnR8ZGVjcmVtZW50fGFic3xhdF9sZWFzdHxhdF9tb3N0fGNlaWx8Y29tcGFjdHxjb25jYXR8ZGF0ZXxkZWZhdWx0fGRpdmlkZWRfYnl8ZG93bmNhc2V8ZXNjYXBlfGVzY2FwZV9vbmNlfGZpcnN0fGZsb29yfGpvaW58bGFzdHxsc3RyaXB8bWFwfG1pbnVzfG1vZHVsb3xuZXdsaW5lX3RvX2JyfHBsdXN8cmVtb3ZlfHJlbW92ZV9maXJzdHxyZXBsYWNlfHJlcGxhY2VfZmlyc3R8cmV2ZXJzZXxyb3VuZHxyc3RyaXB8c2l6ZXxzbGljZXxzb3J0fHNvcnRfbmF0dXJhbHxzcGxpdHxzdHJpcHxzdHJpcF9odG1sfHN0cmlwX25ld2xpbmVzfHRpbWVzfHRydW5jYXRlfHRydW5jYXRld29yZHN8dW5pcXx1cGNhc2V8dXJsX2RlY29kZXx1cmxfZW5jb2RlfGluY2x1ZGV8cGFnaW5hdGUpKD89JHxbXFxzO3wmXSkvLGxvb2tiZWhpbmQ6ITB9fX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibGlxdWlkXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IFJlZ0V4cChcIihcXFxcKClcIitlK1wiKD89W1xcXFxzXFxcXCldKVwiKX1mdW5jdGlvbiBuKGUpe3JldHVybiBuZXcgUmVnRXhwKFwiKFtcXFxccyhbXSlcIitlK1wiKD89W1xcXFxzKV0pXCIpfXZhciByPVwiWy0rKi9ffiFAJCVePTw+e31cXFxcd10rXCIsbz1cIihcXFxcKClcIixhPXtoZWFkaW5nOntwYXR0ZXJuOi87OzsuKi8sYWxpYXM6W1wiY29tbWVudFwiLFwidGl0bGVcIl19LGNvbW1lbnQ6LzsuKi8sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlteXCJcXFxcXSp8XFxcXC4pKlwiLyxncmVlZHk6ITAsaW5zaWRlOnthcmd1bWVudDovWy1BLVpdKyg/PVsuLFxcc10pLyxzeW1ib2w6bmV3IFJlZ0V4cChcImBcIityK1wiJ1wiKX19LFwicXVvdGVkLXN5bWJvbFwiOntwYXR0ZXJuOm5ldyBSZWdFeHAoXCIjPydcIityKSxhbGlhczpbXCJ2YXJpYWJsZVwiLFwic3ltYm9sXCJdfSxcImxpc3AtcHJvcGVydHlcIjp7cGF0dGVybjpuZXcgUmVnRXhwKFwiOlwiK3IpLGFsaWFzOlwicHJvcGVydHlcIn0sc3BsaWNlOntwYXR0ZXJuOm5ldyBSZWdFeHAoXCIsQD9cIityKSxhbGlhczpbXCJzeW1ib2xcIixcInZhcmlhYmxlXCJdfSxrZXl3b3JkOlt7cGF0dGVybjpuZXcgUmVnRXhwKG8rXCIoPzooPzpsZXhpY2FsLSk/bGV0XFxcXCo/fCg/OmNsLSk/bGV0ZnxpZnx3aGVufHdoaWxlfHVubGVzc3xjb25zfGNsLWxvb3B8YW5kfG9yfG5vdHxjb25kfHNldHF8ZXJyb3J8bWVzc2FnZXxudWxsfHJlcXVpcmV8cHJvdmlkZXx1c2UtcGFja2FnZSkoPz1cXFxccylcIiksbG9va2JlaGluZDohMH0se3BhdHRlcm46bmV3IFJlZ0V4cChvK1wiKD86Zm9yfGRvfGNvbGxlY3R8cmV0dXJufGZpbmFsbHl8YXBwZW5kfGNvbmNhdHxpbnxieSkoPz1cXFxccylcIiksbG9va2JlaGluZDohMH1dLGRlY2xhcmU6e3BhdHRlcm46dChcImRlY2xhcmVcIiksbG9va2JlaGluZDohMCxhbGlhczpcImtleXdvcmRcIn0saW50ZXJhY3RpdmU6e3BhdHRlcm46dChcImludGVyYWN0aXZlXCIpLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJrZXl3b3JkXCJ9LGJvb2xlYW46e3BhdHRlcm46bihcIig/OnR8bmlsKVwiKSxsb29rYmVoaW5kOiEwfSxudW1iZXI6e3BhdHRlcm46bihcIlstK10/XFxcXGQrKD86XFxcXC5cXFxcZCopP1wiKSxsb29rYmVoaW5kOiEwfSxkZWZ2YXI6e3BhdHRlcm46bmV3IFJlZ0V4cChvK1wiZGVmKD86dmFyfGNvbnN0fGN1c3RvbXxncm91cClcXFxccytcIityKSxsb29rYmVoaW5kOiEwLGluc2lkZTp7a2V5d29yZDovXmRlZlthLXpdKy8sdmFyaWFibGU6bmV3IFJlZ0V4cChyKX19LGRlZnVuOntwYXR0ZXJuOm5ldyBSZWdFeHAobytcIig/OmNsLSk/KD86ZGVmdW5cXFxcKj98ZGVmbWFjcm8pXFxcXHMrXCIrcitcIlxcXFxzK1xcXFwoW1xcXFxzXFxcXFNdKj9cXFxcKVwiKSxsb29rYmVoaW5kOiEwLGluc2lkZTp7a2V5d29yZDovXig/OmNsLSk/ZGVmXFxTKy8sYXJndW1lbnRzOm51bGwsZnVuY3Rpb246e3BhdHRlcm46bmV3IFJlZ0V4cChcIiheXFxcXHMpXCIrciksbG9va2JlaGluZDohMH0scHVuY3R1YXRpb246L1soKV0vfX0sbGFtYmRhOntwYXR0ZXJuOm5ldyBSZWdFeHAobytcImxhbWJkYVxcXFxzK1xcXFwoKD86Jj9cIityK1wiXFxcXHMqKSpcXFxcKVwiKSxsb29rYmVoaW5kOiEwLGluc2lkZTp7a2V5d29yZDovXmxhbWJkYS8sYXJndW1lbnRzOm51bGwscHVuY3R1YXRpb246L1soKV0vfX0sY2FyOntwYXR0ZXJuOm5ldyBSZWdFeHAobytyKSxsb29rYmVoaW5kOiEwfSxwdW5jdHVhdGlvbjpbLyhbJ2AsXT9cXCh8WylcXFtcXF1dKS8se3BhdHRlcm46LyhcXHMpXFwuKD89XFxzKS8sbG9va2JlaGluZDohMH1dfSxpPXtcImxpc3AtbWFya2VyXCI6bmV3IFJlZ0V4cChcIiZbLSsqL19+IUAkJV49PD57fVxcXFx3XStcIikscmVzdDp7YXJndW1lbnQ6e3BhdHRlcm46bmV3IFJlZ0V4cChyKSxhbGlhczpcInZhcmlhYmxlXCJ9LHZhcmZvcm06e3BhdHRlcm46bmV3IFJlZ0V4cChvK3IrXCJcXFxccytcXFxcU1tcXFxcc1xcXFxTXSooPz1cXFxcKSlcIiksbG9va2JlaGluZDohMCxpbnNpZGU6e3N0cmluZzphLnN0cmluZyxib29sZWFuOmEuYm9vbGVhbixudW1iZXI6YS5udW1iZXIsc3ltYm9sOmEuc3ltYm9sLHB1bmN0dWF0aW9uOi9bKCldL319fX0sbD1cIlxcXFxTKyg/OlxcXFxzK1xcXFxTKykqXCIscz17cGF0dGVybjpuZXcgUmVnRXhwKG8rXCJbXFxcXHNcXFxcU10qKD89XFxcXCkpXCIpLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntcInJlc3QtdmFyc1wiOntwYXR0ZXJuOm5ldyBSZWdFeHAoXCImKD86cmVzdHxib2R5KVxcXFxzK1wiK2wpLGluc2lkZTppfSxcIm90aGVyLW1hcmtlci12YXJzXCI6e3BhdHRlcm46bmV3IFJlZ0V4cChcIiYoPzpvcHRpb25hbHxhdXgpXFxcXHMrXCIrbCksaW5zaWRlOml9LGtleXM6e3BhdHRlcm46bmV3IFJlZ0V4cChcIiZrZXlcXFxccytcIitsK1wiKD86XFxcXHMrJmFsbG93LW90aGVyLWtleXMpP1wiKSxpbnNpZGU6aX0sYXJndW1lbnQ6e3BhdHRlcm46bmV3IFJlZ0V4cChyKSxhbGlhczpcInZhcmlhYmxlXCJ9LHB1bmN0dWF0aW9uOi9bKCldL319O2EubGFtYmRhLmluc2lkZS5hcmd1bWVudHM9cyxhLmRlZnVuLmluc2lkZS5hcmd1bWVudHM9ZS51dGlsLmNsb25lKHMpLGEuZGVmdW4uaW5zaWRlLmFyZ3VtZW50cy5pbnNpZGUuc3VibGlzdD1zLGUubGFuZ3VhZ2VzLmxpc3A9YSxlLmxhbmd1YWdlcy5lbGlzcD1hLGUubGFuZ3VhZ2VzLmVtYWNzPWEsZS5sYW5ndWFnZXNbXCJlbWFjcy1saXNwXCJdPWF9KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJsaXNwXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5saXZlc2NyaXB0PXtjb21tZW50Olt7cGF0dGVybjovKF58W15cXFxcXSlcXC9cXCpbXFxzXFxTXSo/XFwqXFwvLyxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W15cXFxcXSkjLiovLGxvb2tiZWhpbmQ6ITB9XSxcImludGVycG9sYXRlZC1zdHJpbmdcIjp7cGF0dGVybjovKF58W15cIl0pKFwiXCJcInxcIikoPzpcXFxcW1xcc1xcU118KD8hXFwyKVteXFxcXF0pKlxcMig/IVwiKS8sbG9va2JlaGluZDohMCxncmVlZHk6ITAsaW5zaWRlOnt2YXJpYWJsZTp7cGF0dGVybjovKF58W15cXFxcXSkjW2Etel9dKD86LT9bYS16XXxbXFxkX10pKi9tLGxvb2tiZWhpbmQ6ITB9LGludGVycG9sYXRpb246e3BhdHRlcm46LyhefFteXFxcXF0pI1xce1tefV0rXFx9L20sbG9va2JlaGluZDohMCxpbnNpZGU6e1wiaW50ZXJwb2xhdGlvbi1wdW5jdHVhdGlvblwiOntwYXR0ZXJuOi9eI1xce3xcXH0kLyxhbGlhczpcInZhcmlhYmxlXCJ9fX0sc3RyaW5nOi9bXFxzXFxTXSsvfX0sc3RyaW5nOlt7cGF0dGVybjovKCcnJ3wnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi88XFxbW1xcc1xcU10qP1xcXT4vLGdyZWVkeTohMH0sL1xcXFxbXlxccyw7XFxdKX1dKy9dLHJlZ2V4Olt7cGF0dGVybjovXFwvXFwvKFxcWy4rP118XFxcXC58KD8hXFwvXFwvKVteXFxcXF0pK1xcL1xcL1tnaW15dV17MCw1fS8sZ3JlZWR5OiEwLGluc2lkZTp7Y29tbWVudDp7cGF0dGVybjovKF58W15cXFxcXSkjLiovLGxvb2tiZWhpbmQ6ITB9fX0se3BhdHRlcm46L1xcLyhcXFsuKz9dfFxcXFwufFteXFwvXFxcXFxcclxcbl0pK1xcL1tnaW15dV17MCw1fS8sZ3JlZWR5OiEwfV0sa2V5d29yZDp7cGF0dGVybjovKF58KD8hLSkuKVxcYig/OmJyZWFrfGNhc2V8Y2F0Y2h8Y2xhc3N8Y29uc3R8Y29udGludWV8ZGVmYXVsdHxkb3xlbHNlfGV4dGVuZHN8ZmFsbHRocm91Z2h8ZmluYWxseXxmb3IoPzogZXZlcik/fGZ1bmN0aW9ufGlmfGltcGxlbWVudHN8aXR8bGV0fGxvb3B8bmV3fG51bGx8b3RoZXJ3aXNlfG93bnxyZXR1cm58c3VwZXJ8c3dpdGNofHRoYXR8dGhlbnx0aGlzfHRocm93fHRyeXx1bmxlc3N8dW50aWx8dmFyfHZvaWR8d2hlbnx3aGlsZXx5aWVsZCkoPyEtKVxcYi9tLGxvb2tiZWhpbmQ6ITB9LFwia2V5d29yZC1vcGVyYXRvclwiOntwYXR0ZXJuOi8oXnxbXi1dKVxcYig/Oig/OmRlbGV0ZXxyZXF1aXJlfHR5cGVvZikhfCg/OmFuZHxieXxkZWxldGV8ZXhwb3J0fGZyb218aW1wb3J0KD86IGFsbCk/fGlufGluc3RhbmNlb2Z8aXMoPzpudHwgbm90KT98bm90fG9mfG9yfHRpbHx0b3x0eXBlb2Z8d2l0aHx4b3IpKD8hLSlcXGIpL20sbG9va2JlaGluZDohMCxhbGlhczpcIm9wZXJhdG9yXCJ9LGJvb2xlYW46e3BhdHRlcm46LyhefFteLV0pXFxiKD86ZmFsc2V8bm98b2ZmfG9ufHRydWV8eWVzKSg/IS0pXFxiL20sbG9va2JlaGluZDohMH0sYXJndW1lbnQ6e3BhdHRlcm46LyhefCg/IVxcLiZcXC4pW14mXSkmKD8hJilcXGQqL20sbG9va2JlaGluZDohMCxhbGlhczpcInZhcmlhYmxlXCJ9LG51bWJlcjovXFxiKD86XFxkK35bXFxkYS16XSt8XFxkW1xcZF9dKig/OlxcLlxcZFtcXGRfXSopPyg/OlthLXpdXFx3Kik/KS9pLGlkZW50aWZpZXI6L1thLXpfXSg/Oi0/W2Etel18W1xcZF9dKSovaSxvcGVyYXRvcjpbe3BhdHRlcm46LyggKVxcLig/PSApLyxsb29rYmVoaW5kOiEwfSwvXFwuKD86Wz1+XXxcXC5cXC4/KXxcXC4oPzpbJnxeXXw8PHw+Pj4/KVxcLnw6KD86PXw6PT8pfCYmfFxcfFt8Pl18PCg/Ojw8Pzw/fC0tPyE/fH5+PyE/fFt8PT9dKT98Pls+PT9dP3wtKD86LT4/fD4pP3xcXCtcXCs/fEBAP3wlJT98XFwqXFwqP3whKD86fj89fC0tPz58fj9+Pik/fH4oPzp+Pz58PSk/fD09P3xcXF5cXF4/fFtcXC8/XS9dLHB1bmN0dWF0aW9uOi9bKCl7fVxcW1xcXXwuLDo7YF0vfSxlLmxhbmd1YWdlcy5saXZlc2NyaXB0W1wiaW50ZXJwb2xhdGVkLXN0cmluZ1wiXS5pbnNpZGUuaW50ZXJwb2xhdGlvbi5pbnNpZGUucmVzdD1lLmxhbmd1YWdlcy5saXZlc2NyaXB0fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJsaXZlc2NyaXB0XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5sb2xjb2RlPXtjb21tZW50OlsvXFxiT0JUV1xccytbXFxzXFxTXSo/XFxzK1RMRFJcXGIvLC9cXGJCVFcuKy9dLHN0cmluZzp7cGF0dGVybjovXCIoPzo6LnxbXlwiXSkqXCIvLGluc2lkZTp7dmFyaWFibGU6LzpcXHtbXn1dK1xcfS8sc3ltYm9sOlsvOlxcKFthLWZcXGRdK1xcKS9pLC86XFxbW15cXF1dK1xcXS8sLzpbKT5vXCI6XS9dfSxncmVlZHk6ITB9LG51bWJlcjovKD86XFxCLSk/KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspLyxzeW1ib2w6e3BhdHRlcm46LyhefFxccykoPzpBICk/KD86WUFSTnxOVU1CUnxOVU1CQVJ8VFJPT0Z8QlVLS0lUfE5PT0IpKD89XFxzfCx8JCkvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntrZXl3b3JkOi9BKD89XFxzKS99fSxsYWJlbDp7cGF0dGVybjovKCg/Ol58XFxzKSg/OklNIElOIFlSfElNIE9VVFRBIFlSKSApW2EtekEtWl1cXHcqLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwic3RyaW5nXCJ9LGZ1bmN0aW9uOntwYXR0ZXJuOi8oKD86XnxcXHMpKD86SSBJWnxIT1cgSVogSXxJWikgKVthLXpBLVpdXFx3Ki8sbG9va2JlaGluZDohMH0sa2V5d29yZDpbe3BhdHRlcm46LyhefFxccykoPzpPIEhBSSBJTXxLVEhYfEhBSXxLVEhYQllFfEkgSEFTIEF8SVRaKD86IEEpP3xSfEFOfE1LQVl8U01PT1NIfE1BRUt8SVMgTk9XKD86IEEpP3xWSVNJQkxFfEdJTU1FSHxPIFJMWVxcP3xZQSBSTFl8Tk8gV0FJfE9JQ3xNRUJCRXxXVEZcXD98T01HfE9NR1dURnxHVEZPfElNIElOIFlSfElNIE9VVFRBIFlSfEZPVU5EIFlSfFlSfFRJTHxXSUxFfFVQUElOfE5FUkZJTnxJIElafEhPVyBJWiBJfElGIFUgU0FZIFNPfFNSU3xIQVMgQXxMSUVLKD86IEEpP3xJWikoPz1cXHN8LHwkKS8sbG9va2JlaGluZDohMH0sLydaKD89XFxzfCx8JCkvXSxib29sZWFuOntwYXR0ZXJuOi8oXnxcXHMpKD86V0lOfEZBSUwpKD89XFxzfCx8JCkvLGxvb2tiZWhpbmQ6ITB9LHZhcmlhYmxlOntwYXR0ZXJuOi8oXnxcXHMpSVQoPz1cXHN8LHwkKS8sbG9va2JlaGluZDohMH0sb3BlcmF0b3I6e3BhdHRlcm46LyhefFxccykoPzpOT1R8Qk9USCBTQUVNfERJRkZSSU5UfCg/OlNVTXxESUZGfFBST0RVS1R8UVVPU0hVTlR8TU9EfEJJR0dSfFNNQUxMUnxCT1RIfEVJVEhFUnxXT058QUxMfEFOWSkgT0YpKD89XFxzfCx8JCkvLGxvb2tiZWhpbmQ6ITB9LHB1bmN0dWF0aW9uOi9cXC57M3184oCmfCx8IS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJsb2xjb2RlXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5sdWE9e2NvbW1lbnQ6L14jIS4rfC0tKD86XFxbKD0qKVxcW1tcXHNcXFNdKj9cXF1cXDFcXF18LiopL20sc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86KD8hXFwxKVteXFxcXFxcclxcbl18XFxcXHooPzpcXHJcXG58XFxzKXxcXFxcKD86XFxyXFxufFtcXHNcXFNdKSkqXFwxfFxcWyg9KilcXFtbXFxzXFxTXSo/XFxdXFwyXFxdLyxncmVlZHk6ITB9LG51bWJlcjovXFxiMHhbYS1mXFxkXStcXC4/W2EtZlxcZF0qKD86cFsrLV0/XFxkKyk/XFxifFxcYlxcZCsoPzpcXC5cXEJ8XFwuP1xcZCooPzplWystXT9cXGQrKT9cXGIpfFxcQlxcLlxcZCsoPzplWystXT9cXGQrKT9cXGIvaSxrZXl3b3JkOi9cXGIoPzphbmR8YnJlYWt8ZG98ZWxzZXxlbHNlaWZ8ZW5kfGZhbHNlfGZvcnxmdW5jdGlvbnxnb3RvfGlmfGlufGxvY2FsfG5pbHxub3R8b3J8cmVwZWF0fHJldHVybnx0aGVufHRydWV8dW50aWx8d2hpbGUpXFxiLyxmdW5jdGlvbjovKD8hXFxkKVxcdysoPz1cXHMqKD86Wyh7XSkpLyxvcGVyYXRvcjpbL1stKyolXiZ8I118XFwvXFwvP3w8Wzw9XT98Pls+PV0/fFs9fl09Py8se3BhdHRlcm46LyhefFteLl0pXFwuXFwuKD8hXFwuKS8sbG9va2JlaGluZDohMH1dLHB1bmN0dWF0aW9uOi9bXFxbXFxdKCl7fSw7XXxcXC4rfDorL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImx1YVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubWFrZWZpbGU9e2NvbW1lbnQ6e3BhdHRlcm46LyhefFteXFxcXF0pIyg/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfFteXFxcXFxcclxcbl0pKi8sbG9va2JlaGluZDohMH0sc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfSxidWlsdGluOi9cXC5bQS1aXVteOiM9XFxzXSsoPz1cXHMqOig/IT0pKS8sc3ltYm9sOntwYXR0ZXJuOi9eW146PVxcclxcbl0rKD89XFxzKjooPyE9KSkvbSxpbnNpZGU6e3ZhcmlhYmxlOi9cXCQrKD86W14oKXt9OiM9XFxzXSt8KD89Wyh7XSkpL319LHZhcmlhYmxlOi9cXCQrKD86W14oKXt9OiM9XFxzXSt8XFwoW0AqJTxeKz9dW0RGXVxcKXwoPz1bKHtdKSkvLGtleXdvcmQ6Wy8taW5jbHVkZVxcYnxcXGIoPzpkZWZpbmV8ZWxzZXxlbmRlZnxlbmRpZnxleHBvcnR8aWZuP2RlZnxpZm4/ZXF8aW5jbHVkZXxvdmVycmlkZXxwcml2YXRlfHNpbmNsdWRlfHVuZGVmaW5lfHVuZXhwb3J0fHZwYXRoKVxcYi8se3BhdHRlcm46LyhcXCgpKD86YWRkc3VmZml4fGFic3BhdGh8YW5kfGJhc2VuYW1lfGNhbGx8ZGlyfGVycm9yfGV2YWx8ZmlsZXxmaWx0ZXIoPzotb3V0KT98ZmluZHN0cmluZ3xmaXJzdHdvcmR8Zmxhdm9yfGZvcmVhY2h8Z3VpbGV8aWZ8aW5mb3xqb2lufGxhc3R3b3JkfGxvYWR8bm90ZGlyfG9yfG9yaWdpbnxwYXRzdWJzdHxyZWFscGF0aHxzaGVsbHxzb3J0fHN0cmlwfHN1YnN0fHN1ZmZpeHx2YWx1ZXx3YXJuaW5nfHdpbGRjYXJkfHdvcmQoPzpzfGxpc3QpPykoPz1bIFxcdF0pLyxsb29rYmVoaW5kOiEwfV0sb3BlcmF0b3I6Lyg/Ojo6fFs/OishXSk/PXxbfEBdLyxwdW5jdHVhdGlvbjovWzo7KCl7fV0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibWFrZWZpbGVcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm1hcmtkb3duPWUubGFuZ3VhZ2VzLmV4dGVuZChcIm1hcmt1cFwiLHt9KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJtYXJrZG93blwiLFwicHJvbG9nXCIse2Jsb2NrcXVvdGU6e3BhdHRlcm46L14+KD86W1xcdCBdKj4pKi9tLGFsaWFzOlwicHVuY3R1YXRpb25cIn0sY29kZTpbe3BhdHRlcm46L14oPzogezR9fFxcdCkuKy9tLGFsaWFzOlwia2V5d29yZFwifSx7cGF0dGVybjovYGAuKz9gYHxgW15gXFxuXStgLyxhbGlhczpcImtleXdvcmRcIn1dLHRpdGxlOlt7cGF0dGVybjovXFx3Ky4qKD86XFxyP1xcbnxcXHIpKD86PT0rfC0tKykvLGFsaWFzOlwiaW1wb3J0YW50XCIsaW5zaWRlOntwdW5jdHVhdGlvbjovPT0rJHwtLSskL319LHtwYXR0ZXJuOi8oXlxccyopIysuKy9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJpbXBvcnRhbnRcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi9eIyt8IyskL319XSxocjp7cGF0dGVybjovKF5cXHMqKShbKi1dKSg/OltcXHQgXSpcXDIpezIsfSg/PVxccyokKS9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJwdW5jdHVhdGlvblwifSxsaXN0OntwYXR0ZXJuOi8oXlxccyopKD86WyorLV18XFxkK1xcLikoPz1bXFx0IF0uKS9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJwdW5jdHVhdGlvblwifSxcInVybC1yZWZlcmVuY2VcIjp7cGF0dGVybjovIT9cXFtbXlxcXV0rXFxdOltcXHQgXSsoPzpcXFMrfDwoPzpcXFxcLnxbXj5cXFxcXSkrPikoPzpbXFx0IF0rKD86XCIoPzpcXFxcLnxbXlwiXFxcXF0pKlwifCcoPzpcXFxcLnxbXidcXFxcXSkqJ3xcXCgoPzpcXFxcLnxbXilcXFxcXSkqXFwpKSk/LyxpbnNpZGU6e3ZhcmlhYmxlOntwYXR0ZXJuOi9eKCE/XFxbKVteXFxdXSsvLGxvb2tiZWhpbmQ6ITB9LHN0cmluZzovKD86XCIoPzpcXFxcLnxbXlwiXFxcXF0pKlwifCcoPzpcXFxcLnxbXidcXFxcXSkqJ3xcXCgoPzpcXFxcLnxbXilcXFxcXSkqXFwpKSQvLHB1bmN0dWF0aW9uOi9eW1xcW1xcXSE6XXxbPD5dL30sYWxpYXM6XCJ1cmxcIn0sYm9sZDp7cGF0dGVybjovKF58W15cXFxcXSkoXFwqXFwqfF9fKSg/Oig/Olxccj9cXG58XFxyKSg/IVxccj9cXG58XFxyKXwuKSs/XFwyLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cHVuY3R1YXRpb246L15cXCpcXCp8Xl9ffFxcKlxcKiR8X18kL319LGl0YWxpYzp7cGF0dGVybjovKF58W15cXFxcXSkoWypfXSkoPzooPzpcXHI/XFxufFxccikoPyFcXHI/XFxufFxccil8LikrP1xcMi8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9eWypfXXxbKl9dJC99fSx1cmw6e3BhdHRlcm46LyE/XFxbW15cXF1dK1xcXSg/OlxcKFteXFxzKV0rKD86W1xcdCBdK1wiKD86XFxcXC58W15cIlxcXFxdKSpcIik/XFwpfCA/XFxbW15cXF1cXG5dKlxcXSkvLGluc2lkZTp7dmFyaWFibGU6e3BhdHRlcm46LyghP1xcWylbXlxcXV0rKD89XFxdJCkvLGxvb2tiZWhpbmQ6ITB9LHN0cmluZzp7cGF0dGVybjovXCIoPzpcXFxcLnxbXlwiXFxcXF0pKlwiKD89XFwpJCkvfX19fSksZS5sYW5ndWFnZXMubWFya2Rvd24uYm9sZC5pbnNpZGUudXJsPWUubGFuZ3VhZ2VzLm1hcmtkb3duLnVybCxlLmxhbmd1YWdlcy5tYXJrZG93bi5pdGFsaWMuaW5zaWRlLnVybD1lLmxhbmd1YWdlcy5tYXJrZG93bi51cmwsZS5sYW5ndWFnZXMubWFya2Rvd24uYm9sZC5pbnNpZGUuaXRhbGljPWUubGFuZ3VhZ2VzLm1hcmtkb3duLml0YWxpYyxlLmxhbmd1YWdlcy5tYXJrZG93bi5pdGFsaWMuaW5zaWRlLmJvbGQ9ZS5sYW5ndWFnZXMubWFya2Rvd24uYm9sZH1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibWFya2Rvd25cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl09e30sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZS5sYW5ndWFnZXNbXCJtYXJrdXAtdGVtcGxhdGluZ1wiXSx7YnVpbGRQbGFjZWhvbGRlcnM6e3ZhbHVlOmZ1bmN0aW9uKHQsbixyLG8pe3QubGFuZ3VhZ2U9PT1uJiYodC50b2tlblN0YWNrPVtdLHQuY29kZT10LmNvZGUucmVwbGFjZShyLGZ1bmN0aW9uKGUpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG8mJiFvKGUpKXJldHVybiBlO2Zvcih2YXIgcj10LnRva2VuU3RhY2subGVuZ3RoOy0xIT09dC5jb2RlLmluZGV4T2YoXCJfX19cIituLnRvVXBwZXJDYXNlKCkrcitcIl9fX1wiKTspKytyO3JldHVybiB0LnRva2VuU3RhY2tbcl09ZSxcIl9fX1wiK24udG9VcHBlckNhc2UoKStyK1wiX19fXCJ9KSx0LmdyYW1tYXI9ZS5sYW5ndWFnZXMubWFya3VwKX19LHRva2VuaXplUGxhY2Vob2xkZXJzOnt2YWx1ZTpmdW5jdGlvbih0LG4pe2lmKHQubGFuZ3VhZ2U9PT1uJiZ0LnRva2VuU3RhY2spe3QuZ3JhbW1hcj1lLmxhbmd1YWdlc1tuXTt2YXIgcj0wLG89T2JqZWN0LmtleXModC50b2tlblN0YWNrKSxhPWZ1bmN0aW9uKGkpe2lmKCEocj49by5sZW5ndGgpKWZvcih2YXIgbD0wO2w8aS5sZW5ndGg7bCsrKXt2YXIgcz1pW2xdO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBzfHxzLmNvbnRlbnQmJlwic3RyaW5nXCI9PXR5cGVvZiBzLmNvbnRlbnQpe3ZhciB1PW9bcl0sYz10LnRva2VuU3RhY2tbdV0sZD1cInN0cmluZ1wiPT10eXBlb2Ygcz9zOnMuY29udGVudCxwPWQuaW5kZXhPZihcIl9fX1wiK24udG9VcHBlckNhc2UoKSt1K1wiX19fXCIpO2lmKHA+LTEpeysrcjt2YXIgZixtPWQuc3Vic3RyaW5nKDAscCksZz1uZXcgZS5Ub2tlbihuLGUudG9rZW5pemUoYyx0LmdyYW1tYXIsbiksXCJsYW5ndWFnZS1cIituLGMpLGg9ZC5zdWJzdHJpbmcocCsoXCJfX19cIituLnRvVXBwZXJDYXNlKCkrdStcIl9fX1wiKS5sZW5ndGgpO2lmKG18fGg/KGY9W20sZyxoXS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuISFlfSksYShmKSk6Zj1nLFwic3RyaW5nXCI9PXR5cGVvZiBzP0FycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoaSxbbCwxXS5jb25jYXQoZikpOnMuY29udGVudD1mLHI+PW8ubGVuZ3RoKWJyZWFrfX1lbHNlIHMuY29udGVudCYmXCJzdHJpbmdcIiE9dHlwZW9mIHMuY29udGVudCYmYShzLmNvbnRlbnQpfX07YSh0LnRva2Vucyl9fX19KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibWFya3VwVGVtcGxhdGluZ1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubWF0bGFiPXtjb21tZW50OlsvJVxce1tcXHNcXFNdKj9cXH0lLywvJS4rL10sc3RyaW5nOntwYXR0ZXJuOi9cXEInKD86Jyd8W14nXFxyXFxuXSkqJy8sZ3JlZWR5OiEwfSxudW1iZXI6Lyg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OltlRV1bKy1dP1xcZCspPyg/Oltpal0pP3xcXGJbaWpdXFxiLyxrZXl3b3JkOi9cXGIoPzpicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGVsc2V8ZWxzZWlmfGVuZHxmb3J8ZnVuY3Rpb258aWZ8aW5mfE5hTnxvdGhlcndpc2V8cGFyZm9yfHBhdXNlfHBpfHJldHVybnxzd2l0Y2h8dHJ5fHdoaWxlKVxcYi8sZnVuY3Rpb246Lyg/IVxcZClcXHcrKD89XFxzKlxcKCkvLG9wZXJhdG9yOi9cXC4/WypeXFwvXFxcXCddfFsrXFwtOkBdfFs8Pj1+XT0/fCYmP3xcXHxcXHw/LyxwdW5jdHVhdGlvbjovXFwuezN9fFsuLDtcXFtcXF0oKXt9IV0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibWF0bGFiXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5tZWw9e2NvbW1lbnQ6L1xcL1xcLy4qLyxjb2RlOntwYXR0ZXJuOi9gKD86XFxcXC58W15cXFxcYFxcclxcbl0pKmAvLGdyZWVkeTohMCxhbGlhczpcIml0YWxpY1wiLGluc2lkZTp7ZGVsaW1pdGVyOntwYXR0ZXJuOi9eYHxgJC8sYWxpYXM6XCJwdW5jdHVhdGlvblwifX19LHN0cmluZzp7cGF0dGVybjovXCIoPzpcXFxcLnxbXlxcXFxcIlxcclxcbl0pKlwiLyxncmVlZHk6ITB9LHZhcmlhYmxlOi9cXCRcXHcrLyxudW1iZXI6L1xcYjB4W1xcZGEtZkEtRl0rXFxifFxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrLyxmbGFnOntwYXR0ZXJuOi8tW15cXGRcXFddXFx3Ki8sYWxpYXM6XCJvcGVyYXRvclwifSxrZXl3b3JkOi9cXGIoPzpicmVha3xjYXNlfGNvbnRpbnVlfGRlZmF1bHR8ZG98ZWxzZXxmbG9hdHxmb3J8Z2xvYmFsfGlmfGlufGludHxtYXRyaXh8cHJvY3xyZXR1cm58c3RyaW5nfHN3aXRjaHx2ZWN0b3J8d2hpbGUpXFxiLyxmdW5jdGlvbjovXFx3Kyg/PVxcKCl8XFxiKD86YWJvdXR8YWJzfGFkZEF0dHJ8YWRkQXR0cmlidXRlRWRpdG9yTm9kZUhlbHB8YWRkRHluYW1pY3xhZGROZXdTaGVsZlRhYnxhZGRQUHxhZGRQYW5lbENhdGVnb3J5fGFkZFByZWZpeFRvTmFtZXxhZHZhbmNlVG9OZXh0RHJpdmVuS2V5fGFmZmVjdGVkTmV0fGFmZmVjdHN8YWltQ29uc3RyYWludHxhaXJ8YWxpYXN8YWxpYXNBdHRyfGFsaWdufGFsaWduQ3R4fGFsaWduQ3VydmV8YWxpZ25TdXJmYWNlfGFsbFZpZXdGaXR8YW1iaWVudExpZ2h0fGFuZ2xlfGFuZ2xlQmV0d2VlbnxhbmltQ29uZXxhbmltQ3VydmVFZGl0b3J8YW5pbURpc3BsYXl8YW5pbVZpZXd8YW5ub3RhdGV8YXBwZW5kU3RyaW5nQXJyYXl8YXBwbGljYXRpb25OYW1lfGFwcGx5QXR0clByZXNldHxhcHBseVRha2V8YXJjTGVuRGltQ29udGV4dHxhcmNMZW5ndGhEaW1lbnNpb258YXJjbGVufGFycmF5TWFwcGVyfGFydDNkUGFpbnRDdHh8YXJ0QXR0ckN0eHxhcnRBdHRyUGFpbnRWZXJ0ZXhDdHh8YXJ0QXR0clNraW5QYWludEN0eHxhcnRBdHRyVG9vbHxhcnRCdWlsZFBhaW50TWVudXxhcnRGbHVpZEF0dHJDdHh8YXJ0UHV0dHlDdHh8YXJ0U2VsZWN0Q3R4fGFydFNldFBhaW50Q3R4fGFydFVzZXJQYWludEN0eHxhc3NpZ25Db21tYW5kfGFzc2lnbklucHV0RGV2aWNlfGFzc2lnblZpZXdwb3J0RmFjdG9yaWVzfGF0dGFjaEN1cnZlfGF0dGFjaERldmljZUF0dHJ8YXR0YWNoU3VyZmFjZXxhdHRyQ29sb3JTbGlkZXJHcnB8YXR0ckNvbXBhdGliaWxpdHl8YXR0ckNvbnRyb2xHcnB8YXR0ckVudW1PcHRpb25NZW51fGF0dHJFbnVtT3B0aW9uTWVudUdycHxhdHRyRmllbGRHcnB8YXR0ckZpZWxkU2xpZGVyR3JwfGF0dHJOYXZpZ2F0aW9uQ29udHJvbEdycHxhdHRyUHJlc2V0RWRpdFdpbnxhdHRyaWJ1dGVFeGlzdHN8YXR0cmlidXRlSW5mb3xhdHRyaWJ1dGVNZW51fGF0dHJpYnV0ZVF1ZXJ5fGF1dG9LZXlmcmFtZXxhdXRvUGxhY2V8YmFrZUNsaXB8YmFrZUZsdWlkU2hhZGluZ3xiYWtlUGFydGlhbEhpc3Rvcnl8YmFrZVJlc3VsdHN8YmFrZVNpbXVsYXRpb258YmFzZW5hbWV8YmFzZW5hbWVFeHxiYXRjaFJlbmRlcnxiZXNzZWx8YmV2ZWx8YmV2ZWxQbHVzfGJpbk1lbWJlcnNoaXB8YmluZFNraW58YmxlbmQyfGJsZW5kU2hhcGV8YmxlbmRTaGFwZUVkaXRvcnxibGVuZFNoYXBlUGFuZWx8YmxlbmRUd29BdHRyfGJsaW5kRGF0YVR5cGV8Ym9uZUxhdHRpY2V8Ym91bmRhcnl8Ym94RG9sbHlDdHh8Ym94Wm9vbUN0eHxidWZmZXJDdXJ2ZXxidWlsZEJvb2ttYXJrTWVudXxidWlsZEtleWZyYW1lTWVudXxidXR0b258YnV0dG9uTWFuaXB8Q0JHfGNhY2hlRmlsZXxjYWNoZUZpbGVDb21iaW5lfGNhY2hlRmlsZU1lcmdlfGNhY2hlRmlsZVRyYWNrfGNhbWVyYXxjYW1lcmFWaWV3fGNhbkNyZWF0ZU1hbmlwfGNhbnZhc3xjYXBpdGFsaXplU3RyaW5nfGNhdGNofGNhdGNoUXVpZXR8Y2VpbHxjaGFuZ2VTdWJkaXZDb21wb25lbnREaXNwbGF5TGV2ZWx8Y2hhbmdlU3ViZGl2UmVnaW9ufGNoYW5uZWxCb3h8Y2hhcmFjdGVyfGNoYXJhY3Rlck1hcHxjaGFyYWN0ZXJPdXRsaW5lRWRpdG9yfGNoYXJhY3Rlcml6ZXxjaGRpcnxjaGVja0JveHxjaGVja0JveEdycHxjaGVja0RlZmF1bHRSZW5kZXJHbG9iYWxzfGNob2ljZXxjaXJjbGV8Y2lyY3VsYXJGaWxsZXR8Y2xhbXB8Y2xlYXJ8Y2xlYXJDYWNoZXxjbGlwfGNsaXBFZGl0b3J8Y2xpcEVkaXRvckN1cnJlbnRUaW1lQ3R4fGNsaXBTY2hlZHVsZXxjbGlwU2NoZWR1bGVyT3V0bGluZXJ8Y2xpcFRyaW1CZWZvcmV8Y2xvc2VDdXJ2ZXxjbG9zZVN1cmZhY2V8Y2x1c3RlcnxjbWRGaWxlT3V0cHV0fGNtZFNjcm9sbEZpZWxkRXhlY3V0ZXJ8Y21kU2Nyb2xsRmllbGRSZXBvcnRlcnxjbWRTaGVsbHxjb2Fyc2VuU3ViZGl2U2VsZWN0aW9uTGlzdHxjb2xsaXNpb258Y29sb3J8Y29sb3JBdFBvaW50fGNvbG9yRWRpdG9yfGNvbG9ySW5kZXh8Y29sb3JJbmRleFNsaWRlckdycHxjb2xvclNsaWRlckJ1dHRvbkdycHxjb2xvclNsaWRlckdycHxjb2x1bW5MYXlvdXR8Y29tbWFuZEVjaG98Y29tbWFuZExpbmV8Y29tbWFuZFBvcnR8Y29tcGFjdEhhaXJTeXN0ZW18Y29tcG9uZW50RWRpdG9yfGNvbXBvc2l0aW5nSW50ZXJvcHxjb21wdXRlUG9seXNldFZvbHVtZXxjb25kaXRpb258Y29uZXxjb25maXJtRGlhbG9nfGNvbm5lY3RBdHRyfGNvbm5lY3RDb250cm9sfGNvbm5lY3REeW5hbWljfGNvbm5lY3RKb2ludHxjb25uZWN0aW9uSW5mb3xjb25zdHJhaW58Y29uc3RyYWluVmFsdWV8Y29uc3RydWN0aW9uSGlzdG9yeXxjb250YWluZXJ8Y29udGFpbnNNdWx0aWJ5dGV8Y29udGV4dEluZm98Y29udHJvbHxjb252ZXJ0RnJvbU9sZExheWVyc3xjb252ZXJ0SWZmVG9Qc2R8Y29udmVydExpZ2h0bWFwfGNvbnZlcnRTb2xpZFR4fGNvbnZlcnRUZXNzZWxsYXRpb258Y29udmVydFVuaXR8Y29weUFycmF5fGNvcHlGbGV4b3J8Y29weUtleXxjb3B5U2tpbldlaWdodHN8Y29zfGNwQnV0dG9ufGNwQ2FjaGV8Y3BDbG90aFNldHxjcENvbGxpc2lvbnxjcENvbnN0cmFpbnR8Y3BDb252Q2xvdGhUb01lc2h8Y3BGb3JjZXN8Y3BHZXRTb2x2ZXJBdHRyfGNwUGFuZWx8Y3BQcm9wZXJ0eXxjcFJpZ2lkQ29sbGlzaW9uRmlsdGVyfGNwU2VhbXxjcFNldEVkaXR8Y3BTZXRTb2x2ZXJBdHRyfGNwU29sdmVyfGNwU29sdmVyVHlwZXN8Y3BUb29sfGNwVXBkYXRlQ2xvdGhVVnN8Y3JlYXRlRGlzcGxheUxheWVyfGNyZWF0ZURyYXdDdHh8Y3JlYXRlRWRpdG9yfGNyZWF0ZUxheWVyZWRQc2RGaWxlfGNyZWF0ZU1vdGlvbkZpZWxkfGNyZWF0ZU5ld1NoZWxmfGNyZWF0ZU5vZGV8Y3JlYXRlUmVuZGVyTGF5ZXJ8Y3JlYXRlU3ViZGl2UmVnaW9ufGNyb3NzfGNyb3NzUHJvZHVjdHxjdHhBYm9ydHxjdHhDb21wbGV0aW9ufGN0eEVkaXRNb2RlfGN0eFRyYXZlcnNlfGN1cnJlbnRDdHh8Y3VycmVudFRpbWV8Y3VycmVudFRpbWVDdHh8Y3VycmVudFVuaXR8Y3VydmV8Y3VydmVBZGRQdEN0eHxjdXJ2ZUNWQ3R4fGN1cnZlRVBDdHh8Y3VydmVFZGl0b3JDdHh8Y3VydmVJbnRlcnNlY3R8Y3VydmVNb3ZlRVBDdHh8Y3VydmVPblN1cmZhY2V8Y3VydmVTa2V0Y2hDdHh8Y3V0S2V5fGN5Y2xlQ2hlY2t8Y3lsaW5kZXJ8ZGFnUG9zZXxkYXRlfGRlZmF1bHRMaWdodExpc3RDaGVja0JveHxkZWZhdWx0TmF2aWdhdGlvbnxkZWZpbmVEYXRhU2VydmVyfGRlZmluZVZpcnR1YWxEZXZpY2V8ZGVmb3JtZXJ8ZGVnX3RvX3JhZHxkZWxldGV8ZGVsZXRlQXR0cnxkZWxldGVTaGFkaW5nR3JvdXBzQW5kTWF0ZXJpYWxzfGRlbGV0ZVNoZWxmVGFifGRlbGV0ZVVJfGRlbGV0ZVVudXNlZEJydXNoZXN8ZGVscmFuZHN0cnxkZXRhY2hDdXJ2ZXxkZXRhY2hEZXZpY2VBdHRyfGRldGFjaFN1cmZhY2V8ZGV2aWNlRWRpdG9yfGRldmljZVBhbmVsfGRnSW5mb3xkZ2RpcnR5fGRnZXZhbHxkZ3RpbWVyfGRpbVdoZW58ZGlyZWN0S2V5Q3R4fGRpcmVjdGlvbmFsTGlnaHR8ZGlybWFwfGRpcm5hbWV8ZGlzYWJsZXxkaXNjb25uZWN0QXR0cnxkaXNjb25uZWN0Sm9pbnR8ZGlza0NhY2hlfGRpc3BsYWNlbWVudFRvUG9seXxkaXNwbGF5QWZmZWN0ZWR8ZGlzcGxheUNvbG9yfGRpc3BsYXlDdWxsfGRpc3BsYXlMZXZlbE9mRGV0YWlsfGRpc3BsYXlQcmVmfGRpc3BsYXlSR0JDb2xvcnxkaXNwbGF5U21vb3RobmVzc3xkaXNwbGF5U3RhdHN8ZGlzcGxheVN0cmluZ3xkaXNwbGF5U3VyZmFjZXxkaXN0YW5jZURpbUNvbnRleHR8ZGlzdGFuY2VEaW1lbnNpb258ZG9CbHVyfGRvbGx5fGRvbGx5Q3R4fGRvcGVTaGVldEVkaXRvcnxkb3R8ZG90UHJvZHVjdHxkb3VibGVQcm9maWxlQmlyYWlsU3VyZmFjZXxkcmFnfGRyYWdBdHRyQ29udGV4dHxkcmFnZ2VyQ29udGV4dHxkcm9wb2ZmTG9jYXRvcnxkdXBsaWNhdGV8ZHVwbGljYXRlQ3VydmV8ZHVwbGljYXRlU3VyZmFjZXxkeW5DYWNoZXxkeW5Db250cm9sfGR5bkV4cG9ydHxkeW5FeHByZXNzaW9ufGR5bkdsb2JhbHN8ZHluUGFpbnRFZGl0b3J8ZHluUGFydGljbGVDdHh8ZHluUHJlZnxkeW5SZWxFZFBhbmVsfGR5blJlbEVkaXRvcnxkeW5hbWljTG9hZHxlZGl0QXR0ckxpbWl0c3xlZGl0RGlzcGxheUxheWVyR2xvYmFsc3xlZGl0RGlzcGxheUxheWVyTWVtYmVyc3xlZGl0UmVuZGVyTGF5ZXJBZGp1c3RtZW50fGVkaXRSZW5kZXJMYXllckdsb2JhbHN8ZWRpdFJlbmRlckxheWVyTWVtYmVyc3xlZGl0b3J8ZWRpdG9yVGVtcGxhdGV8ZWZmZWN0b3J8ZW1pdHxlbWl0dGVyfGVuYWJsZURldmljZXxlbmNvZGVTdHJpbmd8ZW5kU3RyaW5nfGVuZHNXaXRofGVudnxlcXVpdmFsZW50fGVxdWl2YWxlbnRUb2x8ZXJmfGVycm9yfGV2YWx8ZXZhbERlZmVycmVkfGV2YWxFY2hvfGV2ZW50fGV4YWN0V29ybGRCb3VuZGluZ0JveHxleGNsdXNpdmVMaWdodENoZWNrQm94fGV4ZWN8ZXhlY3V0ZUZvckVhY2hPYmplY3R8ZXhpc3RzfGV4cHxleHByZXNzaW9ufGV4cHJlc3Npb25FZGl0b3JMaXN0ZW58ZXh0ZW5kQ3VydmV8ZXh0ZW5kU3VyZmFjZXxleHRydWRlfGZjaGVja3xmY2xvc2V8ZmVvZnxmZmx1c2h8ZmdldGxpbmV8ZmdldHdvcmR8ZmlsZXxmaWxlQnJvd3NlckRpYWxvZ3xmaWxlRGlhbG9nfGZpbGVFeHRlbnNpb258ZmlsZUluZm98ZmlsZXRlc3R8ZmlsbGV0Q3VydmV8ZmlsdGVyfGZpbHRlckN1cnZlfGZpbHRlckV4cGFuZHxmaWx0ZXJTdHVkaW9JbXBvcnR8ZmluZEFsbEludGVyc2VjdGlvbnN8ZmluZEFuaW1DdXJ2ZXN8ZmluZEtleWZyYW1lfGZpbmRNZW51SXRlbXxmaW5kUmVsYXRlZFNraW5DbHVzdGVyfGZpbmRlcnxmaXJzdFBhcmVudE9mfGZpdEJzcGxpbmV8ZmxleG9yfGZsb2F0RXF8ZmxvYXRGaWVsZHxmbG9hdEZpZWxkR3JwfGZsb2F0U2Nyb2xsQmFyfGZsb2F0U2xpZGVyfGZsb2F0U2xpZGVyMnxmbG9hdFNsaWRlckJ1dHRvbkdycHxmbG9hdFNsaWRlckdycHxmbG9vcnxmbG93fGZsdWlkQ2FjaGVJbmZvfGZsdWlkRW1pdHRlcnxmbHVpZFZveGVsSW5mb3xmbHVzaFVuZG98Zm1vZHxmb250RGlhbG9nfGZvcGVufGZvcm1MYXlvdXR8Zm9ybWF0fGZwcmludHxmcmFtZUxheW91dHxmcmVhZHxmcmVlRm9ybUZpbGxldHxmcmV3aW5kfGZyb21OYXRpdmVQYXRofGZ3cml0ZXxnYW1tYXxnYXVzc3xnZW9tZXRyeUNvbnN0cmFpbnR8Z2V0QXBwbGljYXRpb25WZXJzaW9uQXNGbG9hdHxnZXRBdHRyfGdldENsYXNzaWZpY2F0aW9ufGdldERlZmF1bHRCcnVzaHxnZXRGaWxlTGlzdHxnZXRGbHVpZEF0dHJ8Z2V0SW5wdXREZXZpY2VSYW5nZXxnZXRNYXlhUGFuZWxUeXBlc3xnZXRNb2RpZmllcnN8Z2V0UGFuZWx8Z2V0UGFydGljbGVBdHRyfGdldFBsdWdpblJlc291cmNlfGdldGVudnxnZXRwaWR8Z2xSZW5kZXJ8Z2xSZW5kZXJFZGl0b3J8Z2xvYmFsU3RpdGNofGdtYXRjaHxnb2FsfGdvdG9CaW5kUG9zZXxncmFiQ29sb3J8Z3JhZGllbnRDb250cm9sfGdyYWRpZW50Q29udHJvbE5vQXR0cnxncmFwaERvbGx5Q3R4fGdyYXBoU2VsZWN0Q29udGV4dHxncmFwaFRyYWNrQ3R4fGdyYXZpdHl8Z3JpZHxncmlkTGF5b3V0fGdyb3VwfGdyb3VwT2JqZWN0c0J5TmFtZXxIZkFkZEF0dHJhY3RvclRvQVN8SGZBc3NpZ25BU3xIZkJ1aWxkRXF1YWxNYXB8SGZCdWlsZEZ1ckZpbGVzfEhmQnVpbGRGdXJJbWFnZXN8SGZDYW5jZWxBRlJ8SGZDb25uZWN0QVNUb0hGfEhmQ3JlYXRlQXR0cmFjdG9yfEhmRGVsZXRlQVN8SGZFZGl0QVN8SGZQZXJmb3JtQ3JlYXRlQVN8SGZSZW1vdmVBdHRyYWN0b3JGcm9tQVN8SGZTZWxlY3RBdHRhY2hlZHxIZlNlbGVjdEF0dHJhY3RvcnN8SGZVbkFzc2lnbkFTfGhhcmRlblBvaW50Q3VydmV8aGFyZHdhcmV8aGFyZHdhcmVSZW5kZXJQYW5lbHxoZWFkc1VwRGlzcGxheXxoZWFkc1VwTWVzc2FnZXxoZWxwfGhlbHBMaW5lfGhlcm1pdGV8aGlkZXxoaWxpdGV8aGl0VGVzdHxob3RCb3h8aG90a2V5fGhvdGtleUNoZWNrfGhzdl90b19yZ2J8aHVkQnV0dG9ufGh1ZFNsaWRlcnxodWRTbGlkZXJCdXR0b258aHdSZWZsZWN0aW9uTWFwfGh3UmVuZGVyfGh3UmVuZGVyTG9hZHxoeXBlckdyYXBofGh5cGVyUGFuZWx8aHlwZXJTaGFkZXxoeXBvdHxpY29uVGV4dEJ1dHRvbnxpY29uVGV4dENoZWNrQm94fGljb25UZXh0UmFkaW9CdXR0b258aWNvblRleHRSYWRpb0NvbGxlY3Rpb258aWNvblRleHRTY3JvbGxMaXN0fGljb25UZXh0U3RhdGljTGFiZWx8aWtIYW5kbGV8aWtIYW5kbGVDdHh8aWtIYW5kbGVEaXNwbGF5U2NhbGV8aWtTb2x2ZXJ8aWtTcGxpbmVIYW5kbGVDdHh8aWtTeXN0ZW18aWtTeXN0ZW1JbmZvfGlrZmtEaXNwbGF5TWV0aG9kfGlsbHVzdHJhdG9yQ3VydmVzfGltYWdlfGltZlBsdWdpbnN8aW5oZXJpdFRyYW5zZm9ybXxpbnNlcnRKb2ludHxpbnNlcnRKb2ludEN0eHxpbnNlcnRLZXlDdHh8aW5zZXJ0S25vdEN1cnZlfGluc2VydEtub3RTdXJmYWNlfGluc3RhbmNlfGluc3RhbmNlYWJsZXxpbnN0YW5jZXJ8aW50RmllbGR8aW50RmllbGRHcnB8aW50U2Nyb2xsQmFyfGludFNsaWRlcnxpbnRTbGlkZXJHcnB8aW50ZXJUb1VJfGludGVybmFsVmFyfGludGVyc2VjdHxpcHJFbmdpbmV8aXNBbmltQ3VydmV8aXNDb25uZWN0ZWR8aXNEaXJ0eXxpc1BhcmVudE9mfGlzU2FtZU9iamVjdHxpc1RydWV8aXNWYWxpZE9iamVjdE5hbWV8aXNWYWxpZFN0cmluZ3xpc1ZhbGlkVWlOYW1lfGlzb2xhdGVTZWxlY3R8aXRlbUZpbHRlcnxpdGVtRmlsdGVyQXR0cnxpdGVtRmlsdGVyUmVuZGVyfGl0ZW1GaWx0ZXJUeXBlfGpvaW50fGpvaW50Q2x1c3Rlcnxqb2ludEN0eHxqb2ludERpc3BsYXlTY2FsZXxqb2ludExhdHRpY2V8a2V5VGFuZ2VudHxrZXlmcmFtZXxrZXlmcmFtZU91dGxpbmVyfGtleWZyYW1lUmVnaW9uQ3VycmVudFRpbWVDdHh8a2V5ZnJhbWVSZWdpb25EaXJlY3RLZXlDdHh8a2V5ZnJhbWVSZWdpb25Eb2xseUN0eHxrZXlmcmFtZVJlZ2lvbkluc2VydEtleUN0eHxrZXlmcmFtZVJlZ2lvbk1vdmVLZXlDdHh8a2V5ZnJhbWVSZWdpb25TY2FsZUtleUN0eHxrZXlmcmFtZVJlZ2lvblNlbGVjdEtleUN0eHxrZXlmcmFtZVJlZ2lvblNldEtleUN0eHxrZXlmcmFtZVJlZ2lvblRyYWNrQ3R4fGtleWZyYW1lU3RhdHN8bGFzc29Db250ZXh0fGxhdHRpY2V8bGF0dGljZURlZm9ybUtleUN0eHxsYXVuY2h8bGF1bmNoSW1hZ2VFZGl0b3J8bGF5ZXJCdXR0b258bGF5ZXJlZFNoYWRlclBvcnR8bGF5ZXJlZFRleHR1cmVQb3J0fGxheW91dHxsYXlvdXREaWFsb2d8bGlnaHRMaXN0fGxpZ2h0TGlzdEVkaXRvcnxsaWdodExpc3RQYW5lbHxsaWdodGxpbmt8bGluZUludGVyc2VjdGlvbnxsaW5lYXJQcmVjaXNpb258bGluc3RlcHxsaXN0QW5pbWF0YWJsZXxsaXN0QXR0cnxsaXN0Q2FtZXJhc3xsaXN0Q29ubmVjdGlvbnN8bGlzdERldmljZUF0dGFjaG1lbnRzfGxpc3RIaXN0b3J5fGxpc3RJbnB1dERldmljZUF4ZXN8bGlzdElucHV0RGV2aWNlQnV0dG9uc3xsaXN0SW5wdXREZXZpY2VzfGxpc3RNZW51QW5ub3RhdGlvbnxsaXN0Tm9kZVR5cGVzfGxpc3RQYW5lbENhdGVnb3JpZXN8bGlzdFJlbGF0aXZlc3xsaXN0U2V0c3xsaXN0VHJhbnNmb3Jtc3xsaXN0VW5zZWxlY3RlZHxsaXN0ZXJFZGl0b3J8bG9hZEZsdWlkfGxvYWROZXdTaGVsZnxsb2FkUGx1Z2lufGxvYWRQbHVnaW5MYW5ndWFnZVJlc291cmNlc3xsb2FkUHJlZk9iamVjdHN8bG9jYWxpemVkUGFuZWxMYWJlbHxsb2NrTm9kZXxsb2Z0fGxvZ3xsb25nTmFtZU9mfGxvb2tUaHJ1fGxzfGxzVGhyb3VnaEZpbHRlcnxsc1R5cGV8bHNVSXxNYXlhdG9tcnxtYWd8bWFrZUlkZW50aXR5fG1ha2VMaXZlfG1ha2VQYWludGFibGV8bWFrZVJvbGx8bWFrZVNpbmdsZVN1cmZhY2V8bWFrZVR1YmVPbnxtYWtlYm90fG1hbmlwTW92ZUNvbnRleHR8bWFuaXBNb3ZlTGltaXRzQ3R4fG1hbmlwT3B0aW9uc3xtYW5pcFJvdGF0ZUNvbnRleHR8bWFuaXBSb3RhdGVMaW1pdHNDdHh8bWFuaXBTY2FsZUNvbnRleHR8bWFuaXBTY2FsZUxpbWl0c0N0eHxtYXJrZXJ8bWF0Y2h8bWF4fG1lbW9yeXxtZW51fG1lbnVCYXJMYXlvdXR8bWVudUVkaXRvcnxtZW51SXRlbXxtZW51SXRlbVRvU2hlbGZ8bWVudVNldHxtZW51U2V0UHJlZnxtZXNzYWdlTGluZXxtaW58bWluaW1pemVBcHB8bWlycm9ySm9pbnR8bW9kZWxDdXJyZW50VGltZUN0eHxtb2RlbEVkaXRvcnxtb2RlbFBhbmVsfG1vdXNlfG1vdklufG1vdk91dHxtb3ZlfG1vdmVJS3RvRkt8bW92ZUtleUN0eHxtb3ZlVmVydGV4QWxvbmdEaXJlY3Rpb258bXVsdGlQcm9maWxlQmlyYWlsU3VyZmFjZXxtdXRlfG5QYXJ0aWNsZXxuYW1lQ29tbWFuZHxuYW1lRmllbGR8bmFtZXNwYWNlfG5hbWVzcGFjZUluZm98bmV3UGFuZWxJdGVtc3xuZXd0b258bm9kZUNhc3R8bm9kZUljb25CdXR0b258bm9kZU91dGxpbmVyfG5vZGVQcmVzZXR8bm9kZVR5cGV8bm9pc2V8bm9uTGluZWFyfG5vcm1hbENvbnN0cmFpbnR8bm9ybWFsaXplfG51cmJzQm9vbGVhbnxudXJic0NvcHlVVlNldHxudXJic0N1YmV8bnVyYnNFZGl0VVZ8bnVyYnNQbGFuZXxudXJic1NlbGVjdHxudXJic1NxdWFyZXxudXJic1RvUG9seXxudXJic1RvUG9seWdvbnNQcmVmfG51cmJzVG9TdWJkaXZ8bnVyYnNUb1N1YmRpdlByZWZ8bnVyYnNVVlNldHxudXJic1ZpZXdEaXJlY3Rpb25WZWN0b3J8b2JqRXhpc3RzfG9iamVjdENlbnRlcnxvYmplY3RMYXllcnxvYmplY3RUeXBlfG9iamVjdFR5cGVVSXxvYnNvbGV0ZVByb2N8b2NlYW5OdXJic1ByZXZpZXdQbGFuZXxvZmZzZXRDdXJ2ZXxvZmZzZXRDdXJ2ZU9uU3VyZmFjZXxvZmZzZXRTdXJmYWNlfG9wZW5HTEV4dGVuc2lvbnxvcGVuTWF5YVByZWZ8b3B0aW9uTWVudXxvcHRpb25NZW51R3JwfG9wdGlvblZhcnxvcmJpdHxvcmJpdEN0eHxvcmllbnRDb25zdHJhaW50fG91dGxpbmVyRWRpdG9yfG91dGxpbmVyUGFuZWx8b3ZlcnJpZGVNb2RpZmllcnxwYWludEVmZmVjdHNEaXNwbGF5fHBhaXJCbGVuZHxwYWxldHRlUG9ydHxwYW5lTGF5b3V0fHBhbmVsfHBhbmVsQ29uZmlndXJhdGlvbnxwYW5lbEhpc3Rvcnl8cGFyYW1EaW1Db250ZXh0fHBhcmFtRGltZW5zaW9ufHBhcmFtTG9jYXRvcnxwYXJlbnR8cGFyZW50Q29uc3RyYWludHxwYXJ0aWNsZXxwYXJ0aWNsZUV4aXN0c3xwYXJ0aWNsZUluc3RhbmNlcnxwYXJ0aWNsZVJlbmRlckluZm98cGFydGl0aW9ufHBhc3RlS2V5fHBhdGhBbmltYXRpb258cGF1c2V8cGNsb3NlfHBlcmNlbnR8cGVyZm9ybWFuY2VPcHRpb25zfHBmeHN0cm9rZXN8cGlja1dhbGt8cGljdHVyZXxwaXhlbE1vdmV8cGxhbmFyU3JmfHBsYW5lfHBsYXl8cGxheWJhY2tPcHRpb25zfHBsYXlibGFzdHxwbHVnQXR0cnxwbHVnTm9kZXxwbHVnaW5JbmZvfHBsdWdpblJlc291cmNlVXRpbHxwb2ludENvbnN0cmFpbnR8cG9pbnRDdXJ2ZUNvbnN0cmFpbnR8cG9pbnRMaWdodHxwb2ludE1hdHJpeE11bHR8cG9pbnRPbkN1cnZlfHBvaW50T25TdXJmYWNlfHBvaW50UG9zaXRpb258cG9sZVZlY3RvckNvbnN0cmFpbnR8cG9seUFwcGVuZHxwb2x5QXBwZW5kRmFjZXRDdHh8cG9seUFwcGVuZFZlcnRleHxwb2x5QXV0b1Byb2plY3Rpb258cG9seUF2ZXJhZ2VOb3JtYWx8cG9seUF2ZXJhZ2VWZXJ0ZXh8cG9seUJldmVsfHBvbHlCbGVuZENvbG9yfHBvbHlCbGluZERhdGF8cG9seUJvb2xPcHxwb2x5QnJpZGdlRWRnZXxwb2x5Q2FjaGVNb25pdG9yfHBvbHlDaGVja3xwb2x5Q2hpcE9mZnxwb2x5Q2xpcGJvYXJkfHBvbHlDbG9zZUJvcmRlcnxwb2x5Q29sbGFwc2VFZGdlfHBvbHlDb2xsYXBzZUZhY2V0fHBvbHlDb2xvckJsaW5kRGF0YXxwb2x5Q29sb3JEZWx8cG9seUNvbG9yUGVyVmVydGV4fHBvbHlDb2xvclNldHxwb2x5Q29tcGFyZXxwb2x5Q29uZXxwb2x5Q29weVVWfHBvbHlDcmVhc2V8cG9seUNyZWFzZUN0eHxwb2x5Q3JlYXRlRmFjZXR8cG9seUNyZWF0ZUZhY2V0Q3R4fHBvbHlDdWJlfHBvbHlDdXR8cG9seUN1dEN0eHxwb2x5Q3lsaW5kZXJ8cG9seUN5bGluZHJpY2FsUHJvamVjdGlvbnxwb2x5RGVsRWRnZXxwb2x5RGVsRmFjZXR8cG9seURlbFZlcnRleHxwb2x5RHVwbGljYXRlQW5kQ29ubmVjdHxwb2x5RHVwbGljYXRlRWRnZXxwb2x5RWRpdFVWfHBvbHlFZGl0VVZTaGVsbHxwb2x5RXZhbHVhdGV8cG9seUV4dHJ1ZGVFZGdlfHBvbHlFeHRydWRlRmFjZXR8cG9seUV4dHJ1ZGVWZXJ0ZXh8cG9seUZsaXBFZGdlfHBvbHlGbGlwVVZ8cG9seUZvcmNlVVZ8cG9seUdlb1NhbXBsZXJ8cG9seUhlbGl4fHBvbHlJbmZvfHBvbHlJbnN0YWxsQWN0aW9ufHBvbHlMYXlvdXRVVnxwb2x5TGlzdENvbXBvbmVudENvbnZlcnNpb258cG9seU1hcEN1dHxwb2x5TWFwRGVsfHBvbHlNYXBTZXd8cG9seU1hcFNld01vdmV8cG9seU1lcmdlRWRnZXxwb2x5TWVyZ2VFZGdlQ3R4fHBvbHlNZXJnZUZhY2V0fHBvbHlNZXJnZUZhY2V0Q3R4fHBvbHlNZXJnZVVWfHBvbHlNZXJnZVZlcnRleHxwb2x5TWlycm9yRmFjZXxwb2x5TW92ZUVkZ2V8cG9seU1vdmVGYWNldHxwb2x5TW92ZUZhY2V0VVZ8cG9seU1vdmVVVnxwb2x5TW92ZVZlcnRleHxwb2x5Tm9ybWFsfHBvbHlOb3JtYWxQZXJWZXJ0ZXh8cG9seU5vcm1hbGl6ZVVWfHBvbHlPcHRVdnN8cG9seU9wdGlvbnN8cG9seU91dHB1dHxwb2x5UGlwZXxwb2x5UGxhbmFyUHJvamVjdGlvbnxwb2x5UGxhbmV8cG9seVBsYXRvbmljU29saWR8cG9seVBva2V8cG9seVByaW1pdGl2ZXxwb2x5UHJpc218cG9seVByb2plY3Rpb258cG9seVB5cmFtaWR8cG9seVF1YWR8cG9seVF1ZXJ5QmxpbmREYXRhfHBvbHlSZWR1Y2V8cG9seVNlbGVjdHxwb2x5U2VsZWN0Q29uc3RyYWludHxwb2x5U2VsZWN0Q29uc3RyYWludE1vbml0b3J8cG9seVNlbGVjdEN0eHxwb2x5U2VsZWN0RWRpdEN0eHxwb2x5U2VwYXJhdGV8cG9seVNldFRvRmFjZU5vcm1hbHxwb2x5U2V3RWRnZXxwb2x5U2hvcnRlc3RQYXRoQ3R4fHBvbHlTbW9vdGh8cG9seVNvZnRFZGdlfHBvbHlTcGhlcmV8cG9seVNwaGVyaWNhbFByb2plY3Rpb258cG9seVNwbGl0fHBvbHlTcGxpdEN0eHxwb2x5U3BsaXRFZGdlfHBvbHlTcGxpdFJpbmd8cG9seVNwbGl0VmVydGV4fHBvbHlTdHJhaWdodGVuVVZCb3JkZXJ8cG9seVN1YmRpdmlkZUVkZ2V8cG9seVN1YmRpdmlkZUZhY2V0fHBvbHlUb1N1YmRpdnxwb2x5VG9ydXN8cG9seVRyYW5zZmVyfHBvbHlUcmlhbmd1bGF0ZXxwb2x5VVZTZXR8cG9seVVuaXRlfHBvbHlXZWRnZUZhY2V8cG9wZW58cG9wdXBNZW51fHBvc2V8cG93fHByZWxvYWRSZWZFZHxwcmludHxwcm9ncmVzc0Jhcnxwcm9ncmVzc1dpbmRvd3xwcm9qRmlsZVZpZXdlcnxwcm9qZWN0Q3VydmV8cHJvamVjdFRhbmdlbnR8cHJvamVjdGlvbkNvbnRleHR8cHJvamVjdGlvbk1hbmlwfHByb21wdERpYWxvZ3xwcm9wTW9kQ3R4fHByb3BNb3ZlfHBzZENoYW5uZWxPdXRsaW5lcnxwc2RFZGl0VGV4dHVyZUZpbGV8cHNkRXhwb3J0fHBzZFRleHR1cmVGaWxlfHB1dGVudnxwd2R8cHl0aG9ufHF1ZXJ5U3ViZGl2fHF1aXR8cmFkX3RvX2RlZ3xyYWRpYWx8cmFkaW9CdXR0b258cmFkaW9CdXR0b25HcnB8cmFkaW9Db2xsZWN0aW9ufHJhZGlvTWVudUl0ZW1Db2xsZWN0aW9ufHJhbXBDb2xvclBvcnR8cmFuZHxyYW5kb21pemVGb2xsaWNsZXN8cmFuZHN0YXRlfHJhbmdlQ29udHJvbHxyZWFkVGFrZXxyZWJ1aWxkQ3VydmV8cmVidWlsZFN1cmZhY2V8cmVjb3JkQXR0cnxyZWNvcmREZXZpY2V8cmVkb3xyZWZlcmVuY2V8cmVmZXJlbmNlRWRpdHxyZWZlcmVuY2VRdWVyeXxyZWZpbmVTdWJkaXZTZWxlY3Rpb25MaXN0fHJlZnJlc2h8cmVmcmVzaEFFfHJlZ2lzdGVyUGx1Z2luUmVzb3VyY2V8cmVoYXNofHJlbG9hZEltYWdlfHJlbW92ZUpvaW50fHJlbW92ZU11bHRpSW5zdGFuY2V8cmVtb3ZlUGFuZWxDYXRlZ29yeXxyZW5hbWV8cmVuYW1lQXR0cnxyZW5hbWVTZWxlY3Rpb25MaXN0fHJlbmFtZVVJfHJlbmRlcnxyZW5kZXJHbG9iYWxzTm9kZXxyZW5kZXJJbmZvfHJlbmRlckxheWVyQnV0dG9ufHJlbmRlckxheWVyUGFyZW50fHJlbmRlckxheWVyUG9zdFByb2Nlc3N8cmVuZGVyTGF5ZXJVbnBhcmVudHxyZW5kZXJNYW5pcHxyZW5kZXJQYXJ0aXRpb258cmVuZGVyUXVhbGl0eU5vZGV8cmVuZGVyU2V0dGluZ3N8cmVuZGVyVGh1bWJuYWlsVXBkYXRlfHJlbmRlcldpbmRvd0VkaXRvcnxyZW5kZXJXaW5kb3dTZWxlY3RDb250ZXh0fHJlbmRlcmVyfHJlb3JkZXJ8cmVvcmRlckRlZm9ybWVyc3xyZXF1aXJlc3xyZXJvb3R8cmVzYW1wbGVGbHVpZHxyZXNldEFFfHJlc2V0UGZ4VG9Qb2x5Q2FtZXJhfHJlc2V0VG9vbHxyZXNvbHV0aW9uTm9kZXxyZXRhcmdldHxyZXZlcnNlQ3VydmV8cmV2ZXJzZVN1cmZhY2V8cmV2b2x2ZXxyZ2JfdG9faHN2fHJpZ2lkQm9keXxyaWdpZFNvbHZlcnxyb2xsfHJvbGxDdHh8cm9vdE9mfHJvdHxyb3RhdGV8cm90YXRpb25JbnRlcnBvbGF0aW9ufHJvdW5kQ29uc3RhbnRSYWRpdXN8cm93Q29sdW1uTGF5b3V0fHJvd0xheW91dHxydW5UaW1lQ29tbWFuZHxydW51cHxzYW1wbGVJbWFnZXxzYXZlQWxsU2hlbHZlc3xzYXZlQXR0clByZXNldHxzYXZlRmx1aWR8c2F2ZUltYWdlfHNhdmVJbml0aWFsU3RhdGV8c2F2ZU1lbnV8c2F2ZVByZWZPYmplY3RzfHNhdmVQcmVmc3xzYXZlU2hlbGZ8c2F2ZVRvb2xTZXR0aW5nc3xzY2FsZXxzY2FsZUJydXNoQnJpZ2h0bmVzc3xzY2FsZUNvbXBvbmVudHN8c2NhbGVDb25zdHJhaW50fHNjYWxlS2V5fHNjYWxlS2V5Q3R4fHNjZW5lRWRpdG9yfHNjZW5lVUlSZXBsYWNlbWVudHxzY21ofHNjcmlwdEN0eHxzY3JpcHRFZGl0b3JJbmZvfHNjcmlwdEpvYnxzY3JpcHROb2RlfHNjcmlwdFRhYmxlfHNjcmlwdFRvU2hlbGZ8c2NyaXB0ZWRQYW5lbHxzY3JpcHRlZFBhbmVsVHlwZXxzY3JvbGxGaWVsZHxzY3JvbGxMYXlvdXR8c2N1bHB0fHNlYXJjaFBhdGhBcnJheXxzZWVkfHNlbExvYWRTZXR0aW5nc3xzZWxlY3R8c2VsZWN0Q29udGV4dHxzZWxlY3RDdXJ2ZUNWfHNlbGVjdEtleXxzZWxlY3RLZXlDdHh8c2VsZWN0S2V5ZnJhbWVSZWdpb25DdHh8c2VsZWN0TW9kZXxzZWxlY3RQcmVmfHNlbGVjdFByaW9yaXR5fHNlbGVjdFR5cGV8c2VsZWN0ZWROb2Rlc3xzZWxlY3Rpb25Db25uZWN0aW9ufHNlcGFyYXRvcnxzZXRBdHRyfHNldEF0dHJFbnVtUmVzb3VyY2V8c2V0QXR0ck1hcHBpbmd8c2V0QXR0ck5pY2VOYW1lUmVzb3VyY2V8c2V0Q29uc3RyYWludFJlc3RQb3NpdGlvbnxzZXREZWZhdWx0U2hhZGluZ0dyb3VwfHNldERyaXZlbktleWZyYW1lfHNldER5bmFtaWN8c2V0RWRpdEN0eHxzZXRFZGl0b3J8c2V0Rmx1aWRBdHRyfHNldEZvY3VzfHNldEluZmluaXR5fHNldElucHV0RGV2aWNlTWFwcGluZ3xzZXRLZXlDdHh8c2V0S2V5UGF0aHxzZXRLZXlmcmFtZXxzZXRLZXlmcmFtZUJsZW5kc2hhcGVUYXJnZXRXdHN8c2V0TWVudU1vZGV8c2V0Tm9kZU5pY2VOYW1lUmVzb3VyY2V8c2V0Tm9kZVR5cGVGbGFnfHNldFBhcmVudHxzZXRQYXJ0aWNsZUF0dHJ8c2V0UGZ4VG9Qb2x5Q2FtZXJhfHNldFBsdWdpblJlc291cmNlfHNldFByb2plY3R8c2V0U3RhbXBEZW5zaXR5fHNldFN0YXJ0dXBNZXNzYWdlfHNldFN0YXRlfHNldFRvb2xUb3xzZXRVSVRlbXBsYXRlfHNldFhmb3JtTWFuaXB8c2V0c3xzaGFkaW5nQ29ubmVjdGlvbnxzaGFkaW5nR2VvbWV0cnlSZWxDdHh8c2hhZGluZ0xpZ2h0UmVsQ3R4fHNoYWRpbmdOZXR3b3JrQ29tcGFyZXxzaGFkaW5nTm9kZXxzaGFwZUNvbXBhcmV8c2hlbGZCdXR0b258c2hlbGZMYXlvdXR8c2hlbGZUYWJMYXlvdXR8c2hlbGxGaWVsZHxzaG9ydE5hbWVPZnxzaG93SGVscHxzaG93SGlkZGVufHNob3dNYW5pcEN0eHxzaG93U2VsZWN0aW9uSW5UaXRsZXxzaG93U2hhZGluZ0dyb3VwQXR0ckVkaXRvcnxzaG93V2luZG93fHNpZ258c2ltcGxpZnl8c2lufHNpbmdsZVByb2ZpbGVCaXJhaWxTdXJmYWNlfHNpemV8c2l6ZUJ5dGVzfHNraW5DbHVzdGVyfHNraW5QZXJjZW50fHNtb290aEN1cnZlfHNtb290aFRhbmdlbnRTdXJmYWNlfHNtb290aHN0ZXB8c25hcDJ0bzJ8c25hcEtleXxzbmFwTW9kZXxzbmFwVG9nZXRoZXJDdHh8c25hcHNob3R8c29mdHxzb2Z0TW9kfHNvZnRNb2RDdHh8c29ydHxzb3VuZHxzb3VuZENvbnRyb2x8c291cmNlfHNwYWNlTG9jYXRvcnxzcGhlcmV8c3BocmFuZHxzcG90TGlnaHR8c3BvdExpZ2h0UHJldmlld1BvcnR8c3ByZWFkU2hlZXRFZGl0b3J8c3ByaW5nfHNxcnR8c3F1YXJlU3VyZmFjZXxzcnRDb250ZXh0fHN0YWNrVHJhY2V8c3RhcnRTdHJpbmd8c3RhcnRzV2l0aHxzdGl0Y2hBbmRFeHBsb2RlU2hlbGx8c3RpdGNoU3VyZmFjZXxzdGl0Y2hTdXJmYWNlUG9pbnRzfHN0cmNtcHxzdHJpbmdBcnJheUNhdGVuYXRlfHN0cmluZ0FycmF5Q29udGFpbnN8c3RyaW5nQXJyYXlDb3VudHxzdHJpbmdBcnJheUluc2VydEF0SW5kZXh8c3RyaW5nQXJyYXlJbnRlcnNlY3RvcnxzdHJpbmdBcnJheVJlbW92ZXxzdHJpbmdBcnJheVJlbW92ZUF0SW5kZXh8c3RyaW5nQXJyYXlSZW1vdmVEdXBsaWNhdGVzfHN0cmluZ0FycmF5UmVtb3ZlRXhhY3R8c3RyaW5nQXJyYXlUb1N0cmluZ3xzdHJpbmdUb1N0cmluZ0FycmF5fHN0cmlwfHN0cmlwUHJlZml4RnJvbU5hbWV8c3Ryb2tlfHN1YmRBdXRvUHJvamVjdGlvbnxzdWJkQ2xlYW5Ub3BvbG9neXxzdWJkQ29sbGFwc2V8c3ViZER1cGxpY2F0ZUFuZENvbm5lY3R8c3ViZEVkaXRVVnxzdWJkTGlzdENvbXBvbmVudENvbnZlcnNpb258c3ViZE1hcEN1dHxzdWJkTWFwU2V3TW92ZXxzdWJkTWF0Y2hUb3BvbG9neXxzdWJkTWlycm9yfHN1YmRUb0JsaW5kfHN1YmRUb1BvbHl8c3ViZFRyYW5zZmVyVVZzVG9DYWNoZXxzdWJkaXZ8c3ViZGl2Q3JlYXNlfHN1YmRpdkRpc3BsYXlTbW9vdGhuZXNzfHN1YnN0aXR1dGV8c3Vic3RpdHV0ZUFsbFN0cmluZ3xzdWJzdGl0dXRlR2VvbWV0cnl8c3Vic3RyaW5nfHN1cmZhY2V8c3VyZmFjZVNhbXBsZXJ8c3VyZmFjZVNoYWRlckxpc3R8c3dhdGNoRGlzcGxheVBvcnR8c3dpdGNoVGFibGV8c3ltYm9sQnV0dG9ufHN5bWJvbENoZWNrQm94fHN5c0ZpbGV8c3lzdGVtfHRhYkxheW91dHx0YW58dGFuZ2VudENvbnN0cmFpbnR8dGV4TGF0dGljZURlZm9ybUNvbnRleHR8dGV4TWFuaXBDb250ZXh0fHRleE1vdmVDb250ZXh0fHRleE1vdmVVVlNoZWxsQ29udGV4dHx0ZXhSb3RhdGVDb250ZXh0fHRleFNjYWxlQ29udGV4dHx0ZXhTZWxlY3RDb250ZXh0fHRleFNlbGVjdFNob3J0ZXN0UGF0aEN0eHx0ZXhTbXVkZ2VVVkNvbnRleHR8dGV4V2luVG9vbEN0eHx0ZXh0fHRleHRDdXJ2ZXN8dGV4dEZpZWxkfHRleHRGaWVsZEJ1dHRvbkdycHx0ZXh0RmllbGRHcnB8dGV4dE1hbmlwfHRleHRTY3JvbGxMaXN0fHRleHRUb1NoZWxmfHRleHR1cmVEaXNwbGFjZVBsYW5lfHRleHR1cmVIYWlyQ29sb3J8dGV4dHVyZVBsYWNlbWVudENvbnRleHR8dGV4dHVyZVdpbmRvd3x0aHJlYWRDb3VudHx0aHJlZVBvaW50QXJjQ3R4fHRpbWVDb250cm9sfHRpbWVQb3J0fHRpbWVyWHx0b05hdGl2ZVBhdGh8dG9nZ2xlfHRvZ2dsZUF4aXN8dG9nZ2xlV2luZG93VmlzaWJpbGl0eXx0b2tlbml6ZXx0b2tlbml6ZUxpc3R8dG9sZXJhbmNlfHRvbG93ZXJ8dG9vbEJ1dHRvbnx0b29sQ29sbGVjdGlvbnx0b29sRHJvcHBlZHx0b29sSGFzT3B0aW9uc3x0b29sUHJvcGVydHlXaW5kb3d8dG9ydXN8dG91cHBlcnx0cmFjZXx0cmFja3x0cmFja0N0eHx0cmFuc2ZlckF0dHJpYnV0ZXN8dHJhbnNmb3JtQ29tcGFyZXx0cmFuc2Zvcm1MaW1pdHN8dHJhbnNsYXRvcnx0cmltfHRydW5jfHRydW5jYXRlRmx1aWRDYWNoZXx0cnVuY2F0ZUhhaXJDYWNoZXx0dW1ibGV8dHVtYmxlQ3R4fHR1cmJ1bGVuY2V8dHdvUG9pbnRBcmNDdHh8dWlSZXN8dWlUZW1wbGF0ZXx1bmFzc2lnbklucHV0RGV2aWNlfHVuZG98dW5kb0luZm98dW5ncm91cHx1bmlmb3JtfHVuaXR8dW5sb2FkUGx1Z2lufHVudGFuZ2xlVVZ8dW50aXRsZWRGaWxlTmFtZXx1bnRyaW18dXBBeGlzfHVwZGF0ZUFFfHVzZXJDdHh8dXZMaW5rfHV2U25hcHNob3R8dmFsaWRhdGVTaGVsZk5hbWV8dmVjdG9yaXplfHZpZXcyZFRvb2xDdHh8dmlld0NhbWVyYXx2aWV3Q2xpcFBsYW5lfHZpZXdGaXR8dmlld0hlYWRPbnx2aWV3TG9va0F0fHZpZXdNYW5pcHx2aWV3UGxhY2V8dmlld1NldHx2aXNvcnx2b2x1bWVBeGlzfHZvcnRleHx3YWl0Q3Vyc29yfHdhcm5pbmd8d2ViQnJvd3Nlcnx3ZWJCcm93c2VyUHJlZnN8d2hhdElzfHdpbmRvd3x3aW5kb3dQcmVmfHdpcmV8d2lyZUNvbnRleHR8d29ya3NwYWNlfHdyaW5rbGV8d3JpbmtsZUNvbnRleHR8d3JpdGVUYWtlfHhibUxhbmdQYXRoTGlzdHx4Zm9ybSlcXGIvLG9wZXJhdG9yOlsvXFwrWys9XT98LVstPV0/fCYmfFxcfFxcfHxbPD5dPXxbKlxcLyE9XT0/fFslXl0vLHtwYXR0ZXJuOi8oXnxbXjxdKTwoPyE8KS8sbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhefFtePl0pPig/IT4pLyxsb29rYmVoaW5kOiEwfV0scHVuY3R1YXRpb246Lzw8fD4+fFsuLDo7P1xcW1xcXSgpe31dL30sZS5sYW5ndWFnZXMubWVsLmNvZGUuaW5zaWRlLnJlc3Q9ZS5sYW5ndWFnZXMubWVsfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJtZWxcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm1pemFyPXtjb21tZW50Oi86Oi4rLyxrZXl3b3JkOi9AcHJvb2ZcXGJ8XFxiKD86YWNjb3JkaW5nfGFnZ3JlZ2F0ZXxhbGx8YW5kfGFudG9ueW18YXJlfGFzfGFzc29jaWF0aXZpdHl8YXNzdW1lfGFzeW1tZXRyeXxhdHRyfGJlfGJlZ2lufGJlaW5nfGJ5fGNhbmNlbGVkfGNhc2V8Y2FzZXN8Y2x1c3RlcnM/fGNvaGVyZW5jZXxjb21tdXRhdGl2aXR5fGNvbXBhdGliaWxpdHl8Y29ubmVjdGVkbmVzc3xjb25zaWRlcnxjb25zaXN0ZW5jeXxjb25zdHJ1Y3RvcnN8Y29udHJhZGljdGlvbnxjb3JyZWN0bmVzc3xkZWZ8ZGVmZnVuY3xkZWZpbmV8ZGVmaW5pdGlvbnM/fGRlZnByZWR8ZG98ZG9lc3xlcXVhbHN8ZW5kfGVudmlyb258ZXh8ZXhhY3RseXxleGlzdGVuY2V8Zm9yfGZyb218ZnVuY3xnaXZlbnxoZW5jZXxoZXJlYnl8aG9sZHN8aWRlbXBvdGVuY2V8aWRlbnRpdHl8aWZmP3xpbXBsaWVzfGludm9sdXRpdmVuZXNzfGlycmVmbGV4aXZpdHl8aXN8aXR8bGV0fG1lYW5zfG1vZGV8bm9ufG5vdHxub3RhdGlvbnM/fG5vd3xvZnxvcnxvdGhlcndpc2V8b3ZlcnxwZXJ8cHJlZHxwcmVmaXh8cHJvamVjdGl2aXR5fHByb29mfHByb3ZpZGVkfHF1YXxyZWNvbnNpZGVyfHJlZGVmaW5lfHJlZHVjZXxyZWR1Y2liaWxpdHl8cmVmbGV4aXZpdHl8cmVnaXN0cmF0aW9ucz98cmVxdWlyZW1lbnRzfHJlc2VydmV8c2NofHNjaGVtZXM/fHNlY3Rpb258c2VsZWN0b3J8c2V0fHNldGhvb2R8c3R8c3RydWN0fHN1Y2h8c3VwcG9zZXxzeW1tZXRyeXxzeW5vbnltfHRha2V8dGhhdHx0aGV8dGhlbnx0aGVvcmVtcz98dGhlc2lzfHRodXN8dG98dHJhbnNpdGl2aXR5fHVuaXF1ZW5lc3N8dm9jYWJ1bGFyKD86eXxpZXMpfHdoZW58d2hlcmV8d2l0aHx3cnQpXFxiLyxwYXJhbWV0ZXI6e3BhdHRlcm46L1xcJCg/OjEwfFxcZCkvLGFsaWFzOlwidmFyaWFibGVcIn0sdmFyaWFibGU6L1xcdysoPz06KS8sbnVtYmVyOi8oPzpcXGJ8LSlcXGQrXFxiLyxvcGVyYXRvcjovXFwuXFwuXFwufC0+fCZ8XFwuPz0vLHB1bmN0dWF0aW9uOi9cXCgjfCNcXCl8Wyw6O1xcW1xcXSgpe31dL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm1pemFyXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5tb25rZXk9e3N0cmluZzovXCJbXlwiXFxyXFxuXSpcIi8sY29tbWVudDpbe3BhdHRlcm46L14jUmVtXFxzK1tcXHNcXFNdKj9eI0VuZC9pbSxncmVlZHk6ITB9LHtwYXR0ZXJuOi8nLisvLGdyZWVkeTohMH1dLHByZXByb2Nlc3Nvcjp7cGF0dGVybjovKF5bIFxcdF0qKSMuKy9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJjb21tZW50XCJ9LGZ1bmN0aW9uOi9cXHcrKD89XFwoKS8sXCJ0eXBlLWNoYXJcIjp7cGF0dGVybjovKFxcdylbPyUjJF0vLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJ2YXJpYWJsZVwifSxudW1iZXI6e3BhdHRlcm46LygoPzpcXC5cXC4pPykoPzooPzpcXGJ8XFxCLVxcLj98XFxCXFwuKVxcZCsoPzooPyFcXC5cXC4pXFwuXFxkKik/fFxcJFtcXGRhLWZdKykvaSxsb29rYmVoaW5kOiEwfSxrZXl3b3JkOi9cXGIoPzpWb2lkfFN0cmljdHxQdWJsaWN8UHJpdmF0ZXxQcm9wZXJ0eXxCb29sfEludHxGbG9hdHxTdHJpbmd8QXJyYXl8T2JqZWN0fENvbnRpbnVlfEV4aXR8SW1wb3J0fEV4dGVybnxOZXd8U2VsZnxTdXBlcnxUcnl8Q2F0Y2h8RWFjaGlufFRydWV8RmFsc2V8RXh0ZW5kc3xBYnN0cmFjdHxGaW5hbHxTZWxlY3R8Q2FzZXxEZWZhdWx0fENvbnN0fExvY2FsfEdsb2JhbHxGaWVsZHxNZXRob2R8RnVuY3Rpb258Q2xhc3N8RW5kfElmfFRoZW58RWxzZXxFbHNlSWZ8RW5kSWZ8V2hpbGV8V2VuZHxSZXBlYXR8VW50aWx8Rm9yZXZlcnxGb3J8VG98U3RlcHxOZXh0fFJldHVybnxNb2R1bGV8SW50ZXJmYWNlfEltcGxlbWVudHN8SW5saW5lfFRocm93fE51bGwpXFxiL2ksb3BlcmF0b3I6L1xcLlxcLnw8Wz0+XT98Pj0/fDo/PXwoPzpbK1xcLSpcXC8mfnxdfFxcYig/Ok1vZHxTaGx8U2hyKVxcYik9P3xcXGIoPzpBbmR8Tm90fE9yKVxcYi9pLHB1bmN0dWF0aW9uOi9bLiw6OygpXFxbXFxdXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJtb25rZXlcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm40anM9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiamF2YXNjcmlwdFwiLHtrZXl3b3JkOi9cXGIoPzphbnl8QXJyYXl8Ym9vbGVhbnxicmVha3xjYXNlfGNhdGNofGNsYXNzfGNvbnN0fGNvbnN0cnVjdG9yfGNvbnRpbnVlfGRlYnVnZ2VyfGRlY2xhcmV8ZGVmYXVsdHxkZWxldGV8ZG98ZWxzZXxlbnVtfGV4cG9ydHxleHRlbmRzfGZhbHNlfGZpbmFsbHl8Zm9yfGZyb218ZnVuY3Rpb258Z2V0fGlmfGltcGxlbWVudHN8aW1wb3J0fGlufGluc3RhbmNlb2Z8aW50ZXJmYWNlfGxldHxtb2R1bGV8bmV3fG51bGx8bnVtYmVyfHBhY2thZ2V8cHJpdmF0ZXxwcm90ZWN0ZWR8cHVibGljfHJldHVybnxzZXR8c3RhdGljfHN0cmluZ3xzdXBlcnxzd2l0Y2h8dGhpc3x0aHJvd3x0cnVlfHRyeXx0eXBlb2Z8dmFyfHZvaWR8d2hpbGV8d2l0aHx5aWVsZClcXGIvfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwibjRqc1wiLFwiY29uc3RhbnRcIix7YW5ub3RhdGlvbjp7cGF0dGVybjovQCtcXHcrLyxhbGlhczpcIm9wZXJhdG9yXCJ9fSksZS5sYW5ndWFnZXMubjRqc2Q9ZS5sYW5ndWFnZXMubjRqc31lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibjRqc1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubmFzbT17Y29tbWVudDovOy4qJC9tLHN0cmluZzovKFtcIidgXSkoPzpcXFxcLnwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxsYWJlbDp7cGF0dGVybjovKF5cXHMqKVtBLVphLXouXz8kXVtcXHcuPyRAfiNdKjovbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwiZnVuY3Rpb25cIn0sa2V5d29yZDpbL1xcWz9CSVRTICg/OjE2fDMyfDY0KVxcXT8vLHtwYXR0ZXJuOi8oXlxccyopc2VjdGlvblxccypbYS16QS1aLl0rOj8vaW0sbG9va2JlaGluZDohMH0sLyg/OmV4dGVybnxnbG9iYWwpW147XFxyXFxuXSovaSwvKD86Q1BVfEZMT0FUfERFRkFVTFQpLiokL21dLHJlZ2lzdGVyOntwYXR0ZXJuOi9cXGIoPzpzdFxcZHxbeHl6XW1tXFxkXFxkP3xbY2R0XXJcXGR8clxcZFxcZD9bYndkXT98W2VyXT9bYWJjZF14fFthYmNkXVtobF18W2VyXT8oPzpicHxzcHxzaXxkaSl8W2NkZWZnc11zKVxcYi9pLGFsaWFzOlwidmFyaWFibGVcIn0sbnVtYmVyOi8oPzpcXGJ8KD89XFwkKSkoPzowW2h4XVtcXGRhLWZdKlxcLj9bXFxkYS1mXSsoPzpwWystXT9cXGQrKT98XFxkW1xcZGEtZl0rW2h4XXxcXCRcXGRbXFxkYS1mXSp8MFtvcV1bMC03XSt8WzAtN10rW29xXXwwW2J5XVswMV0rfFswMV0rW2J5XXwwW2R0XVxcZCt8XFxkKlxcLj9cXGQrKD86XFwuP2VbKy1dP1xcZCspP1tkdF0/KVxcYi9pLG9wZXJhdG9yOi9bXFxbXFxdKitcXC1cXC8lPD49JnwkIV0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibmFzbVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubmdpbng9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7Y29tbWVudDp7cGF0dGVybjovKF58W15cIntcXFxcXSkjLiovLGxvb2tiZWhpbmQ6ITB9LGtleXdvcmQ6L1xcYig/OkNPTlRFTlRffERPQ1VNRU5UX3xHQVRFV0FZX3xIVFRQX3xIVFRQU3xpZl9ub3RfZW1wdHl8UEFUSF98UVVFUllffFJFRElSRUNUX3xSRU1PVEVffFJFUVVFU1RffFNDR0l8U0NSSVBUX3xTRVJWRVJffGh0dHB8ZXZlbnRzfGFjY2VwdF9tdXRleHxhY2NlcHRfbXV0ZXhfZGVsYXl8YWNjZXNzX2xvZ3xhZGRfYWZ0ZXJfYm9keXxhZGRfYmVmb3JlX2JvZHl8YWRkX2hlYWRlcnxhZGRpdGlvbl90eXBlc3xhaW98YWxpYXN8YWxsb3d8YW5jaWVudF9icm93c2VyfGFuY2llbnRfYnJvd3Nlcl92YWx1ZXxhdXRofGF1dGhfYmFzaWN8YXV0aF9iYXNpY191c2VyX2ZpbGV8YXV0aF9odHRwfGF1dGhfaHR0cF9oZWFkZXJ8YXV0aF9odHRwX3RpbWVvdXR8YXV0b2luZGV4fGF1dG9pbmRleF9leGFjdF9zaXplfGF1dG9pbmRleF9sb2NhbHRpbWV8YnJlYWt8Y2hhcnNldHxjaGFyc2V0X21hcHxjaGFyc2V0X3R5cGVzfGNodW5rZWRfdHJhbnNmZXJfZW5jb2Rpbmd8Y2xpZW50X2JvZHlfYnVmZmVyX3NpemV8Y2xpZW50X2JvZHlfaW5fZmlsZV9vbmx5fGNsaWVudF9ib2R5X2luX3NpbmdsZV9idWZmZXJ8Y2xpZW50X2JvZHlfdGVtcF9wYXRofGNsaWVudF9ib2R5X3RpbWVvdXR8Y2xpZW50X2hlYWRlcl9idWZmZXJfc2l6ZXxjbGllbnRfaGVhZGVyX3RpbWVvdXR8Y2xpZW50X21heF9ib2R5X3NpemV8Y29ubmVjdGlvbl9wb29sX3NpemV8Y3JlYXRlX2Z1bGxfcHV0X3BhdGh8ZGFlbW9ufGRhdl9hY2Nlc3N8ZGF2X21ldGhvZHN8ZGVidWdfY29ubmVjdGlvbnxkZWJ1Z19wb2ludHN8ZGVmYXVsdF90eXBlfGRlbnl8ZGV2cG9sbF9jaGFuZ2VzfGRldnBvbGxfZXZlbnRzfGRpcmVjdGlvfGRpcmVjdGlvX2FsaWdubWVudHxkaXNhYmxlX3N5bWxpbmtzfGVtcHR5X2dpZnxlbnZ8ZXBvbGxfZXZlbnRzfGVycm9yX2xvZ3xlcnJvcl9wYWdlfGV4cGlyZXN8ZmFzdGNnaV9idWZmZXJfc2l6ZXxmYXN0Y2dpX2J1ZmZlcnN8ZmFzdGNnaV9idXN5X2J1ZmZlcnNfc2l6ZXxmYXN0Y2dpX2NhY2hlfGZhc3RjZ2lfY2FjaGVfYnlwYXNzfGZhc3RjZ2lfY2FjaGVfa2V5fGZhc3RjZ2lfY2FjaGVfbG9ja3xmYXN0Y2dpX2NhY2hlX2xvY2tfdGltZW91dHxmYXN0Y2dpX2NhY2hlX21ldGhvZHN8ZmFzdGNnaV9jYWNoZV9taW5fdXNlc3xmYXN0Y2dpX2NhY2hlX3BhdGh8ZmFzdGNnaV9jYWNoZV9wdXJnZXxmYXN0Y2dpX2NhY2hlX3VzZV9zdGFsZXxmYXN0Y2dpX2NhY2hlX3ZhbGlkfGZhc3RjZ2lfY29ubmVjdF90aW1lb3V0fGZhc3RjZ2lfaGlkZV9oZWFkZXJ8ZmFzdGNnaV9pZ25vcmVfY2xpZW50X2Fib3J0fGZhc3RjZ2lfaWdub3JlX2hlYWRlcnN8ZmFzdGNnaV9pbmRleHxmYXN0Y2dpX2ludGVyY2VwdF9lcnJvcnN8ZmFzdGNnaV9rZWVwX2Nvbm58ZmFzdGNnaV9tYXhfdGVtcF9maWxlX3NpemV8ZmFzdGNnaV9uZXh0X3Vwc3RyZWFtfGZhc3RjZ2lfbm9fY2FjaGV8ZmFzdGNnaV9wYXJhbXxmYXN0Y2dpX3Bhc3N8ZmFzdGNnaV9wYXNzX2hlYWRlcnxmYXN0Y2dpX3JlYWRfdGltZW91dHxmYXN0Y2dpX3JlZGlyZWN0X2Vycm9yc3xmYXN0Y2dpX3NlbmRfdGltZW91dHxmYXN0Y2dpX3NwbGl0X3BhdGhfaW5mb3xmYXN0Y2dpX3N0b3JlfGZhc3RjZ2lfc3RvcmVfYWNjZXNzfGZhc3RjZ2lfdGVtcF9maWxlX3dyaXRlX3NpemV8ZmFzdGNnaV90ZW1wX3BhdGh8Zmx2fGdlb3xnZW9pcF9jaXR5fGdlb2lwX2NvdW50cnl8Z29vZ2xlX3BlcmZ0b29sc19wcm9maWxlc3xnemlwfGd6aXBfYnVmZmVyc3xnemlwX2NvbXBfbGV2ZWx8Z3ppcF9kaXNhYmxlfGd6aXBfaHR0cF92ZXJzaW9ufGd6aXBfbWluX2xlbmd0aHxnemlwX3Byb3hpZWR8Z3ppcF9zdGF0aWN8Z3ppcF90eXBlc3xnemlwX3Zhcnl8aWZ8aWZfbW9kaWZpZWRfc2luY2V8aWdub3JlX2ludmFsaWRfaGVhZGVyc3xpbWFnZV9maWx0ZXJ8aW1hZ2VfZmlsdGVyX2J1ZmZlcnxpbWFnZV9maWx0ZXJfanBlZ19xdWFsaXR5fGltYWdlX2ZpbHRlcl9zaGFycGVufGltYWdlX2ZpbHRlcl90cmFuc3BhcmVuY3l8aW1hcF9jYXBhYmlsaXRpZXN8aW1hcF9jbGllbnRfYnVmZmVyfGluY2x1ZGV8aW5kZXh8aW50ZXJuYWx8aXBfaGFzaHxrZWVwYWxpdmV8a2VlcGFsaXZlX2Rpc2FibGV8a2VlcGFsaXZlX3JlcXVlc3RzfGtlZXBhbGl2ZV90aW1lb3V0fGtxdWV1ZV9jaGFuZ2VzfGtxdWV1ZV9ldmVudHN8bGFyZ2VfY2xpZW50X2hlYWRlcl9idWZmZXJzfGxpbWl0X2Nvbm58bGltaXRfY29ubl9sb2dfbGV2ZWx8bGltaXRfY29ubl96b25lfGxpbWl0X2V4Y2VwdHxsaW1pdF9yYXRlfGxpbWl0X3JhdGVfYWZ0ZXJ8bGltaXRfcmVxfGxpbWl0X3JlcV9sb2dfbGV2ZWx8bGltaXRfcmVxX3pvbmV8bGltaXRfem9uZXxsaW5nZXJpbmdfY2xvc2V8bGluZ2VyaW5nX3RpbWV8bGluZ2VyaW5nX3RpbWVvdXR8bGlzdGVufGxvY2F0aW9ufGxvY2tfZmlsZXxsb2dfZm9ybWF0fGxvZ19mb3JtYXRfY29tYmluZWR8bG9nX25vdF9mb3VuZHxsb2dfc3VicmVxdWVzdHxtYXB8bWFwX2hhc2hfYnVja2V0X3NpemV8bWFwX2hhc2hfbWF4X3NpemV8bWFzdGVyX3Byb2Nlc3N8bWF4X3Jhbmdlc3xtZW1jYWNoZWRfYnVmZmVyX3NpemV8bWVtY2FjaGVkX2Nvbm5lY3RfdGltZW91dHxtZW1jYWNoZWRfbmV4dF91cHN0cmVhbXxtZW1jYWNoZWRfcGFzc3xtZW1jYWNoZWRfcmVhZF90aW1lb3V0fG1lbWNhY2hlZF9zZW5kX3RpbWVvdXR8bWVyZ2Vfc2xhc2hlc3xtaW5fZGVsZXRlX2RlcHRofG1vZGVybl9icm93c2VyfG1vZGVybl9icm93c2VyX3ZhbHVlfG1wNHxtcDRfYnVmZmVyX3NpemV8bXA0X21heF9idWZmZXJfc2l6ZXxtc2llX3BhZGRpbmd8bXNpZV9yZWZyZXNofG11bHRpX2FjY2VwdHxvcGVuX2ZpbGVfY2FjaGV8b3Blbl9maWxlX2NhY2hlX2Vycm9yc3xvcGVuX2ZpbGVfY2FjaGVfbWluX3VzZXN8b3Blbl9maWxlX2NhY2hlX3ZhbGlkfG9wZW5fbG9nX2ZpbGVfY2FjaGV8b3B0aW1pemVfc2VydmVyX25hbWVzfG92ZXJyaWRlX2NoYXJzZXR8cGNyZV9qaXR8cGVybHxwZXJsX21vZHVsZXN8cGVybF9yZXF1aXJlfHBlcmxfc2V0fHBpZHxwb3AzX2F1dGh8cG9wM19jYXBhYmlsaXRpZXN8cG9ydF9pbl9yZWRpcmVjdHxwb3N0X2FjdGlvbnxwb3N0cG9uZV9vdXRwdXR8cHJvdG9jb2x8cHJveHl8cHJveHlfYnVmZmVyfHByb3h5X2J1ZmZlcl9zaXplfHByb3h5X2J1ZmZlcmluZ3xwcm94eV9idWZmZXJzfHByb3h5X2J1c3lfYnVmZmVyc19zaXplfHByb3h5X2NhY2hlfHByb3h5X2NhY2hlX2J5cGFzc3xwcm94eV9jYWNoZV9rZXl8cHJveHlfY2FjaGVfbG9ja3xwcm94eV9jYWNoZV9sb2NrX3RpbWVvdXR8cHJveHlfY2FjaGVfbWV0aG9kc3xwcm94eV9jYWNoZV9taW5fdXNlc3xwcm94eV9jYWNoZV9wYXRofHByb3h5X2NhY2hlX3VzZV9zdGFsZXxwcm94eV9jYWNoZV92YWxpZHxwcm94eV9jb25uZWN0X3RpbWVvdXR8cHJveHlfY29va2llX2RvbWFpbnxwcm94eV9jb29raWVfcGF0aHxwcm94eV9oZWFkZXJzX2hhc2hfYnVja2V0X3NpemV8cHJveHlfaGVhZGVyc19oYXNoX21heF9zaXplfHByb3h5X2hpZGVfaGVhZGVyfHByb3h5X2h0dHBfdmVyc2lvbnxwcm94eV9pZ25vcmVfY2xpZW50X2Fib3J0fHByb3h5X2lnbm9yZV9oZWFkZXJzfHByb3h5X2ludGVyY2VwdF9lcnJvcnN8cHJveHlfbWF4X3RlbXBfZmlsZV9zaXplfHByb3h5X21ldGhvZHxwcm94eV9uZXh0X3Vwc3RyZWFtfHByb3h5X25vX2NhY2hlfHByb3h5X3Bhc3N8cHJveHlfcGFzc19lcnJvcl9tZXNzYWdlfHByb3h5X3Bhc3NfaGVhZGVyfHByb3h5X3Bhc3NfcmVxdWVzdF9ib2R5fHByb3h5X3Bhc3NfcmVxdWVzdF9oZWFkZXJzfHByb3h5X3JlYWRfdGltZW91dHxwcm94eV9yZWRpcmVjdHxwcm94eV9yZWRpcmVjdF9lcnJvcnN8cHJveHlfc2VuZF9sb3dhdHxwcm94eV9zZW5kX3RpbWVvdXR8cHJveHlfc2V0X2JvZHl8cHJveHlfc2V0X2hlYWRlcnxwcm94eV9zc2xfc2Vzc2lvbl9yZXVzZXxwcm94eV9zdG9yZXxwcm94eV9zdG9yZV9hY2Nlc3N8cHJveHlfdGVtcF9maWxlX3dyaXRlX3NpemV8cHJveHlfdGVtcF9wYXRofHByb3h5X3RpbWVvdXR8cHJveHlfdXBzdHJlYW1fZmFpbF90aW1lb3V0fHByb3h5X3Vwc3RyZWFtX21heF9mYWlsc3xyYW5kb21faW5kZXh8cmVhZF9haGVhZHxyZWFsX2lwX2hlYWRlcnxyZWN1cnNpdmVfZXJyb3JfcGFnZXN8cmVxdWVzdF9wb29sX3NpemV8cmVzZXRfdGltZWRvdXRfY29ubmVjdGlvbnxyZXNvbHZlcnxyZXNvbHZlcl90aW1lb3V0fHJldHVybnxyZXdyaXRlfHJvb3R8cnRzaWdfb3ZlcmZsb3dfZXZlbnRzfHJ0c2lnX292ZXJmbG93X3Rlc3R8cnRzaWdfb3ZlcmZsb3dfdGhyZXNob2xkfHJ0c2lnX3NpZ25vfHNhdGlzZnl8c2F0aXNmeV9hbnl8c2VjdXJlX2xpbmtfc2VjcmV0fHNlbmRfbG93YXR8c2VuZF90aW1lb3V0fHNlbmRmaWxlfHNlbmRmaWxlX21heF9jaHVua3xzZXJ2ZXJ8c2VydmVyX25hbWV8c2VydmVyX25hbWVfaW5fcmVkaXJlY3R8c2VydmVyX25hbWVzX2hhc2hfYnVja2V0X3NpemV8c2VydmVyX25hbWVzX2hhc2hfbWF4X3NpemV8c2VydmVyX3Rva2Vuc3xzZXR8c2V0X3JlYWxfaXBfZnJvbXxzbXRwX2F1dGh8c210cF9jYXBhYmlsaXRpZXN8c29fa2VlcGFsaXZlfHNvdXJjZV9jaGFyc2V0fHNwbGl0X2NsaWVudHN8c3NpfHNzaV9zaWxlbnRfZXJyb3JzfHNzaV90eXBlc3xzc2lfdmFsdWVfbGVuZ3RofHNzbHxzc2xfY2VydGlmaWNhdGV8c3NsX2NlcnRpZmljYXRlX2tleXxzc2xfY2lwaGVyc3xzc2xfY2xpZW50X2NlcnRpZmljYXRlfHNzbF9jcmx8c3NsX2RocGFyYW18c3NsX2VuZ2luZXxzc2xfcHJlZmVyX3NlcnZlcl9jaXBoZXJzfHNzbF9wcm90b2NvbHN8c3NsX3Nlc3Npb25fY2FjaGV8c3NsX3Nlc3Npb25fdGltZW91dHxzc2xfdmVyaWZ5X2NsaWVudHxzc2xfdmVyaWZ5X2RlcHRofHN0YXJ0dGxzfHN0dWJfc3RhdHVzfHN1Yl9maWx0ZXJ8c3ViX2ZpbHRlcl9vbmNlfHN1Yl9maWx0ZXJfdHlwZXN8dGNwX25vZGVsYXl8dGNwX25vcHVzaHx0aW1lb3V0fHRpbWVyX3Jlc29sdXRpb258dHJ5X2ZpbGVzfHR5cGVzfHR5cGVzX2hhc2hfYnVja2V0X3NpemV8dHlwZXNfaGFzaF9tYXhfc2l6ZXx1bmRlcnNjb3Jlc19pbl9oZWFkZXJzfHVuaW5pdGlhbGl6ZWRfdmFyaWFibGVfd2Fybnx1cHN0cmVhbXx1c2V8dXNlcnx1c2VyaWR8dXNlcmlkX2RvbWFpbnx1c2VyaWRfZXhwaXJlc3x1c2VyaWRfbmFtZXx1c2VyaWRfcDNwfHVzZXJpZF9wYXRofHVzZXJpZF9zZXJ2aWNlfHZhbGlkX3JlZmVyZXJzfHZhcmlhYmxlc19oYXNoX2J1Y2tldF9zaXplfHZhcmlhYmxlc19oYXNoX21heF9zaXplfHdvcmtlcl9jb25uZWN0aW9uc3x3b3JrZXJfY3B1X2FmZmluaXR5fHdvcmtlcl9wcmlvcml0eXx3b3JrZXJfcHJvY2Vzc2VzfHdvcmtlcl9ybGltaXRfY29yZXx3b3JrZXJfcmxpbWl0X25vZmlsZXx3b3JrZXJfcmxpbWl0X3NpZ3BlbmRpbmd8d29ya2luZ19kaXJlY3Rvcnl8eGNsaWVudHx4bWxfZW50aXRpZXN8eHNsdF9lbnRpdGllc3x4c2x0X3N0eWxlc2hlZXR8eHNsdF90eXBlcylcXGIvaX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcIm5naW54XCIsXCJrZXl3b3JkXCIse3ZhcmlhYmxlOi9cXCRbYS16X10rL2l9KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibmdpbnhcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm5pbT17Y29tbWVudDovIy4qLyxzdHJpbmc6e3BhdHRlcm46Lyg/Oig/OlxcYig/IVxcZCkoPzpcXHd8XFxcXHhbOC05YS1mQS1GXVswLTlhLWZBLUZdKSspPyg/OlwiXCJcIltcXHNcXFNdKj9cIlwiXCIoPyFcIil8XCIoPzpcXFxcW1xcc1xcU118XCJcInxbXlwiXFxcXF0pKlwiKXwnKD86XFxcXCg/OlxcZCt8eFtcXGRhLWZBLUZdezJ9fC4pfFteJ10pJykvLGdyZWVkeTohMH0sbnVtYmVyOi9cXGIoPzowW3hYb09iQl1bXFxkYS1mQS1GX10rfFxcZFtcXGRfXSooPzooPyFcXC5cXC4pXFwuW1xcZF9dKik/KD86W2VFXVsrLV0/XFxkW1xcZF9dKik/KSg/Oic/W2l1Zl1cXGQqKT8vLGtleXdvcmQ6L1xcYig/OmFkZHJ8YXN8YXNtfGF0b21pY3xiaW5kfGJsb2NrfGJyZWFrfGNhc2V8Y2FzdHxjb25jZXB0fGNvbnN0fGNvbnRpbnVlfGNvbnZlcnRlcnxkZWZlcnxkaXNjYXJkfGRpc3RpbmN0fGRvfGVsaWZ8ZWxzZXxlbmR8ZW51bXxleGNlcHR8ZXhwb3J0fGZpbmFsbHl8Zm9yfGZyb218ZnVuY3xnZW5lcmljfGlmfGltcG9ydHxpbmNsdWRlfGludGVyZmFjZXxpdGVyYXRvcnxsZXR8bWFjcm98bWV0aG9kfG1peGlufG5pbHxvYmplY3R8b3V0fHByb2N8cHRyfHJhaXNlfHJlZnxyZXR1cm58c3RhdGljfHRlbXBsYXRlfHRyeXx0dXBsZXx0eXBlfHVzaW5nfHZhcnx3aGVufHdoaWxlfHdpdGh8d2l0aG91dHx5aWVsZClcXGIvLGZ1bmN0aW9uOntwYXR0ZXJuOi8oPzooPyFcXGQpKD86XFx3fFxcXFx4WzgtOWEtZkEtRl1bMC05YS1mQS1GXSkrfGBbXmBcXHJcXG5dK2ApXFwqPyg/OlxcW1teXFxdXStcXF0pPyg/PVxccypcXCgpLyxpbnNpZGU6e29wZXJhdG9yOi9cXCokL319LGlnbm9yZTp7cGF0dGVybjovYFteYFxcclxcbl0rYC8saW5zaWRlOntwdW5jdHVhdGlvbjovYC99fSxvcGVyYXRvcjp7cGF0dGVybjovKF58Wyh7XFxbXSg/PVxcLlxcLil8KD8hWyh7XFxbXVxcLikuKSg/Oig/Ols9K1xcLSpcXC88PkAkfiYlfCE/XjpcXFxcXXxcXC5cXC58XFwuKD8hWyl9XFxdXSkpK3xcXGIoPzphbmR8ZGl2fG9mfG9yfGlufGlzfGlzbm90fG1vZHxub3R8bm90aW58c2hsfHNocnx4b3IpXFxiKS9tLGxvb2tiZWhpbmQ6ITB9LHB1bmN0dWF0aW9uOi9bKHtcXFtdXFwufFxcLlspfVxcXV18W2AoKXt9XFxbXFxdLDpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm5pbVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubml4PXtjb21tZW50Oi9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvfCMuKi8sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlteXCJcXFxcXXxcXFxcW1xcc1xcU10pKlwifCcnKD86KD8hJycpW1xcc1xcU118JycoPzonfFxcXFx8XFwkXFx7KSkqJycvLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246e3BhdHRlcm46LyhefCg/Ol58KD8hJycpLilbXlxcXFxdKVxcJFxceyg/OltefV18XFx7W159XSpcXH0pKn0vLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOnthbnRpcXVvdGF0aW9uOntwYXR0ZXJuOi9eXFwkKD89XFx7KS8sYWxpYXM6XCJ2YXJpYWJsZVwifX19fX0sdXJsOlsvXFxiKD86W2Etel17Myw3fTpcXC9cXC8pW1xcd1xcLSslflxcLy46Iz0/Jl0rLyx7cGF0dGVybjovKFteXFwvXSkoPzpbXFx3XFwtKyV+LjojPT8mXSooPyFcXC9cXC8pW1xcd1xcLSslflxcLy46Iz0/Jl0pPyg/IVxcL1xcLylcXC9bXFx3XFwtKyV+XFwvLjojPT8mXSovLGxvb2tiZWhpbmQ6ITB9XSxhbnRpcXVvdGF0aW9uOntwYXR0ZXJuOi9cXCQoPz1cXHspLyxhbGlhczpcInZhcmlhYmxlXCJ9LG51bWJlcjovXFxiXFxkK1xcYi8sa2V5d29yZDovXFxiKD86YXNzZXJ0fGJ1aWx0aW5zfGVsc2V8aWZ8aW58aW5oZXJpdHxsZXR8bnVsbHxvcnx0aGVufHdpdGgpXFxiLyxmdW5jdGlvbjovXFxiKD86YWJvcnR8YWRkfGFsbHxhbnl8YXR0ck5hbWVzfGF0dHJWYWx1ZXN8YmFzZU5hbWVPZnxjb21wYXJlVmVyc2lvbnN8Y29uY2F0TGlzdHN8Y3VycmVudFN5c3RlbXxkZWVwU2VxfGRlcml2YXRpb258ZGlyT2Z8ZGl2fGVsZW0oPzpBdCk/fGZldGNoKD86dXJsfFRhcmJhbGwpfGZpbHRlcig/OlNvdXJjZSk/fGZyb21KU09OfGdlbkxpc3R8Z2V0QXR0cnxnZXRFbnZ8aGFzQXR0cnxoYXNoU3RyaW5nfGhlYWR8aW1wb3J0fGludGVyc2VjdEF0dHJzfGlzKD86QXR0cnN8Qm9vbHxGdW5jdGlvbnxJbnR8TGlzdHxOdWxsfFN0cmluZyl8bGVuZ3RofGxlc3NUaGFufGxpc3RUb0F0dHJzfG1hcHxtdWx8cGFyc2VEcnZOYW1lfHBhdGhFeGlzdHN8cmVhZCg/OkRpcnxGaWxlKXxyZW1vdmVBdHRyc3xyZXBsYWNlU3RyaW5nc3xzZXF8c29ydHxzdHJpbmdMZW5ndGh8c3ViKD86c3RyaW5nKT98dGFpbHx0aHJvd3x0byg/OkZpbGV8SlNPTnxQYXRofFN0cmluZ3xYTUwpfHRyYWNlfHR5cGVPZilcXGJ8XFxiZm9sZGwnXFxCLyxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi8sb3BlcmF0b3I6L1s9ITw+XT0/fFxcK1xcKz98XFx8XFx8fCYmfFxcL1xcL3wtPj98Wz9AXS8scHVuY3R1YXRpb246L1t7fSgpW1xcXS4sOjtdL30sZS5sYW5ndWFnZXMubml4LnN0cmluZy5pbnNpZGUuaW50ZXJwb2xhdGlvbi5pbnNpZGUucmVzdD1lLmxhbmd1YWdlcy5uaXh9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm5peFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubnNpcz17Y29tbWVudDp7cGF0dGVybjovKF58W15cXFxcXSkoXFwvXFwqW1xcc1xcU10qP1xcKlxcL3xbIztdLiopLyxsb29rYmVoaW5kOiEwfSxzdHJpbmc6e3BhdHRlcm46LyhcInwnKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLGdyZWVkeTohMH0sa2V5d29yZDp7cGF0dGVybjovKF5cXHMqKSg/OkFib3J0fEFkZCg/OkJyYW5kaW5nSW1hZ2V8U2l6ZSl8QWR2U3BsYXNofEFsbG93KD86Um9vdERpckluc3RhbGx8U2tpcEZpbGVzKXxBdXRvQ2xvc2VXaW5kb3d8QmFubmVyfEJHKD86Rm9udHxHcmFkaWVudHxJbWFnZSl8QnJhbmRpbmdUZXh0fEJyaW5nVG9Gcm9udHxDYWxsKD86SW5zdERMTCk/fENhcHRpb258Q2hhbmdlVUl8Q2hlY2tCaXRtYXB8Q2xlYXJFcnJvcnN8Q29tcGxldGVkVGV4dHxDb21wb25lbnRUZXh0fENvcHlGaWxlc3xDUkNDaGVja3xDcmVhdGUoPzpEaXJlY3Rvcnl8Rm9udHxTaG9ydEN1dCl8RGVsZXRlKD86SU5JU2VjfElOSVN0cnxSZWdLZXl8UmVnVmFsdWUpP3xEZXRhaWwoPzpQcmludHxzQnV0dG9uVGV4dCl8RGlhbGVyfERpcig/OlRleHR8VmFyfFZlcmlmeSl8RW5hYmxlV2luZG93fEVudW0oPzpSZWdLZXl8UmVnVmFsdWUpfEV4Y2h8RXhlYyg/OlNoZWxsKD86V2FpdCk/fFdhaXQpP3xFeHBhbmRFbnZTdHJpbmdzfEZpbGUoPzpCdWZTaXplfENsb3NlfEVycm9yVGV4dHxPcGVufFJlYWR8UmVhZEJ5dGV8UmVhZFVURjE2TEV8UmVhZFdvcmR8V3JpdGVVVEYxNkxFfFNlZWt8V3JpdGV8V3JpdGVCeXRlfFdyaXRlV29yZCk/fEZpbmQoPzpDbG9zZXxGaXJzdHxOZXh0fFdpbmRvdyl8Rmx1c2hJTkl8R2V0KD86Q3VySW5zdFR5cGV8Q3VycmVudEFkZHJlc3N8RGxnSXRlbXxETExWZXJzaW9uKD86TG9jYWwpP3xFcnJvckxldmVsfEZpbGVUaW1lKD86TG9jYWwpP3xGdWxsUGF0aE5hbWV8RnVuY3Rpb24oPzpBZGRyZXNzfEVuZCk/fEluc3REaXJFcnJvcnxMYWJlbEFkZHJlc3N8VGVtcEZpbGVOYW1lKXxHb3RvfEhpZGVXaW5kb3d8SWNvbnxJZig/OkFib3J0fEVycm9yc3xGaWxlRXhpc3RzfFJlYm9vdEZsYWd8U2lsZW50KXxJbml0UGx1Z2luc0RpcnxJbnN0YWxsKD86QnV0dG9uVGV4dHxDb2xvcnN8RGlyKD86UmVnS2V5KT8pfEluc3RQcm9ncmVzc0ZsYWdzfEluc3QoPzpUeXBlKD86R2V0VGV4dHxTZXRUZXh0KT8pfEludCg/OjY0fFB0cik/Q21wVT98SW50KD86NjQpP0ZtdHxJbnQoPzpQdHIpP09wfElzV2luZG93fExhbmcoPzpETEx8U3RyaW5nKXxMaWNlbnNlKD86QmtDb2xvcnxEYXRhfEZvcmNlU2VsZWN0aW9ufExhbmdTdHJpbmd8VGV4dCl8TG9hZExhbmd1YWdlRmlsZXxMb2NrV2luZG93fExvZyg/OlNldHxUZXh0KXxNYW5pZmVzdCg/OkRQSUF3YXJlfFN1cHBvcnRlZE9TKXxNYXRofE1lc3NhZ2VCb3h8TWlzY0J1dHRvblRleHR8TmFtZXxOb3B8bnMoPzpEaWFsb2dzfEV4ZWMpfE5TSVNkbHxPdXRGaWxlfFBhZ2UoPzpDYWxsYmFja3MpP3xQRSg/OkRsbENoYXJhY3RlcmlzdGljc3xTdWJzeXNWZXIpfFBvcHxQdXNofFF1aXR8UmVhZCg/OkVudlN0cnxJTklTdHJ8UmVnRFdPUkR8UmVnU3RyKXxSZWJvb3R8UmVnRExMfFJlbmFtZXxSZXF1ZXN0RXhlY3V0aW9uTGV2ZWx8UmVzZXJ2ZUZpbGV8UmV0dXJufFJNRGlyfFNlYXJjaFBhdGh8U2VjdGlvbig/OkVuZHxHZXRGbGFnc3xHZXRJbnN0VHlwZXN8R2V0U2l6ZXxHZXRUZXh0fEdyb3VwfElufFNldEZsYWdzfFNldEluc3RUeXBlc3xTZXRTaXplfFNldFRleHQpP3xTZW5kTWVzc2FnZXxTZXQoPzpBdXRvQ2xvc2V8QnJhbmRpbmdJbWFnZXxDb21wcmVzc3xDb21wcmVzc29yKD86RGljdFNpemUpP3xDdGxDb2xvcnN8Q3VySW5zdFR5cGV8RGF0YWJsb2NrT3B0aW1pemV8RGF0ZVNhdmV8RGV0YWlscyg/OlByaW50fFZpZXcpfEVycm9yTGV2ZWx8RXJyb3JzfEZpbGVBdHRyaWJ1dGVzfEZvbnR8T3V0UGF0aHxPdmVyd3JpdGV8UGx1Z2luVW5sb2FkfFJlYm9vdEZsYWd8UmVnVmlld3xTaGVsbFZhckNvbnRleHR8U2lsZW50KXxTaG93KD86SW5zdERldGFpbHN8VW5pbnN0RGV0YWlsc3xXaW5kb3cpfFNpbGVudCg/Okluc3RhbGx8VW5JbnN0YWxsKXxTbGVlcHxTcGFjZVRleHRzfFNwbGFzaHxTdGFydE1lbnV8U3RyKD86Q21wUz98Q3B5fExlbil8U3ViQ2FwdGlvbnxTeXN0ZW18VW5pY29kZXxVbmluc3RhbGwoPzpCdXR0b25UZXh0fENhcHRpb258SWNvbnxTdWJDYXB0aW9ufFRleHQpfFVuaW5zdFBhZ2V8VW5SZWdETEx8VXNlckluZm98VmFyfFZJKD86QWRkVmVyc2lvbktleXxGaWxlVmVyc2lvbnxQcm9kdWN0VmVyc2lvbil8VlBhdGNofFdpbmRvd0ljb258V3JpdGUoPzpJTklTdHJ8UmVnKD86QmlufERXT1JEfEV4cGFuZFN0cnxNdWx0aVN0cnxOb25lfFN0cil8VW5pbnN0YWxsZXIpfFhQU3R5bGUpXFxiL20sbG9va2JlaGluZDohMH0scHJvcGVydHk6L1xcYig/OmFkbWlufGFsbHxhdXRvfGJvdGh8Y29sb3JlZHxmYWxzZXxmb3JjZXxoaWRlfGhpZ2hlc3R8bGFzdHVzZWR8bGVhdmV8bGlzdG9ubHl8bm9uZXxub3JtYWx8bm90c2V0fG9mZnxvbnxvcGVufHByaW50fHNob3d8c2lsZW50fHNpbGVudGxvZ3xzbW9vdGh8dGV4dG9ubHl8dHJ1ZXx1c2VyfEFSQ0hJVkV8RklMRV8oQVRUUklCVVRFX0FSQ0hJVkV8QVRUUklCVVRFX05PUk1BTHxBVFRSSUJVVEVfT0ZGTElORXxBVFRSSUJVVEVfUkVBRE9OTFl8QVRUUklCVVRFX1NZU1RFTXxBVFRSSUJVVEVfVEVNUE9SQVJZKXxISygoQ1J8Q1V8TE0pKDMyfDY0KT98RER8UER8VSl8SEtFWV8oQ0xBU1NFU19ST09UfENVUlJFTlRfQ09ORklHfENVUlJFTlRfVVNFUnxEWU5fREFUQXxMT0NBTF9NQUNISU5FfFBFUkZPUk1BTkNFX0RBVEF8VVNFUlMpfElEKEFCT1JUfENBTkNFTHxJR05PUkV8Tk98T0t8UkVUUll8WUVTKXxNQl8oQUJPUlRSRVRSWUlHTk9SRXxERUZCVVRUT04xfERFRkJVVFRPTjJ8REVGQlVUVE9OM3xERUZCVVRUT040fElDT05FWENMQU1BVElPTnxJQ09OSU5GT1JNQVRJT058SUNPTlFVRVNUSU9OfElDT05TVE9QfE9LfE9LQ0FOQ0VMfFJFVFJZQ0FOQ0VMfFJJR0hUfFJUTFJFQURJTkd8U0VURk9SRUdST1VORHxUT1BNT1NUfFVTRVJJQ09OfFlFU05PKXxOT1JNQUx8T0ZGTElORXxSRUFET05MWXxTSENUWHxTSEVMTF9DT05URVhUfFNZU1RFTXxURU1QT1JBUlkpXFxiLyxjb25zdGFudDovXFwke1tcXHdcXC46XFxeLV0rfXxcXCRcXChbXFx3XFwuOlxcXi1dK1xcKS9pLHZhcmlhYmxlOi9cXCRcXHcrL2ksbnVtYmVyOi9cXGIweFtcXGRBLUZhLWZdK1xcYnwoPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzpbRWVdLT9cXGQrKT8vLG9wZXJhdG9yOi8tLT98XFwrXFwrP3w8PT98Pj0/fD09Pz0/fCYmP3xcXHxcXHw/fFs/KlxcL35eJV0vLHB1bmN0dWF0aW9uOi9be31bXFxdOygpLC46XS8saW1wb3J0YW50OntwYXR0ZXJuOi8oXlxccyopISg/OmFkZGluY2x1ZGVkaXJ8YWRkcGx1Z2luZGlyfGFwcGVuZGZpbGV8Y2R8ZGVmaW5lfGRlbGZpbGV8ZWNob3xlbHNlfGVuZGlmfGVycm9yfGV4ZWN1dGV8ZmluYWxpemV8Z2V0ZGxsdmVyc2lvbnxnZXR0bGJ2ZXJzaW9ufGlmZGVmfGlmbWFjcm9kZWZ8aWZtYWNyb25kZWZ8aWZuZGVmfGlmfGluY2x1ZGV8aW5zZXJ0bWFjcm98bWFjcm9lbmR8bWFjcm98bWFrZW5zaXN8cGFja2hkcnxwcmFnbWF8c2VhcmNocGFyc2V8c2VhcmNocmVwbGFjZXxzeXN0ZW18dGVtcGZpbGV8dW5kZWZ8dmVyYm9zZXx3YXJuaW5nKVxcYi9pbSxsb29rYmVoaW5kOiEwfX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm5zaXNcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDM0KTtmdW5jdGlvbiBvKGUpe2UucmVnaXN0ZXIociksZS5sYW5ndWFnZXMub2JqZWN0aXZlYz1lLmxhbmd1YWdlcy5leHRlbmQoXCJjXCIse2tleXdvcmQ6L1xcYig/OmFzbXx0eXBlb2Z8aW5saW5lfGF1dG98YnJlYWt8Y2FzZXxjaGFyfGNvbnN0fGNvbnRpbnVlfGRlZmF1bHR8ZG98ZG91YmxlfGVsc2V8ZW51bXxleHRlcm58ZmxvYXR8Zm9yfGdvdG98aWZ8aW50fGxvbmd8cmVnaXN0ZXJ8cmV0dXJufHNob3J0fHNpZ25lZHxzaXplb2Z8c3RhdGljfHN0cnVjdHxzd2l0Y2h8dHlwZWRlZnx1bmlvbnx1bnNpZ25lZHx2b2lkfHZvbGF0aWxlfHdoaWxlfGlufHNlbGZ8c3VwZXIpXFxifCg/OkBpbnRlcmZhY2V8QGVuZHxAaW1wbGVtZW50YXRpb258QHByb3RvY29sfEBjbGFzc3xAcHVibGljfEBwcm90ZWN0ZWR8QHByaXZhdGV8QHByb3BlcnR5fEB0cnl8QGNhdGNofEBmaW5hbGx5fEB0aHJvd3xAc3ludGhlc2l6ZXxAZHluYW1pY3xAc2VsZWN0b3IpXFxiLyxzdHJpbmc6LyhcInwnKSg/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDF8QFwiKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8W15cIlxcXFxcXHJcXG5dKSpcIi8sb3BlcmF0b3I6Ly1bLT5dP3xcXCtcXCs/fCE9P3w8PD89P3w+Pj89P3w9PT98JiY/fFxcfFxcfD98W35eJT8qXFwvQF0vfSl9ZS5leHBvcnRzPW8sby5kaXNwbGF5TmFtZT1cIm9iamVjdGl2ZWNcIixvLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm9jYW1sPXtjb21tZW50Oi9cXChcXCpbXFxzXFxTXSo/XFwqXFwpLyxzdHJpbmc6W3twYXR0ZXJuOi9cIig/OlxcXFwufFteXFxcXFxcclxcblwiXSkqXCIvLGdyZWVkeTohMH0se3BhdHRlcm46LyhbJ2BdKSg/OlxcXFwoPzpcXGQrfHhbXFxkYS1mXSt8Lil8KD8hXFwxKVteXFxcXFxcclxcbl0pXFwxL2ksZ3JlZWR5OiEwfV0sbnVtYmVyOi9cXGIoPzoweFtcXGRhLWZdW1xcZGEtZl9dK3woPzowW2JvXSk/XFxkW1xcZF9dKlxcLj9bXFxkX10qKD86ZVsrLV0/W1xcZF9dKyk/KS9pLHR5cGU6e3BhdHRlcm46L1xcQlsnYF1cXHcqLyxhbGlhczpcInZhcmlhYmxlXCJ9LGRpcmVjdGl2ZTp7cGF0dGVybjovXFxCI1xcdysvLGFsaWFzOlwiZnVuY3Rpb25cIn0sa2V5d29yZDovXFxiKD86YXN8YXNzZXJ0fGJlZ2lufGNsYXNzfGNvbnN0cmFpbnR8ZG98ZG9uZXxkb3dudG98ZWxzZXxlbmR8ZXhjZXB0aW9ufGV4dGVybmFsfGZvcnxmdW58ZnVuY3Rpb258ZnVuY3RvcnxpZnxpbnxpbmNsdWRlfGluaGVyaXR8aW5pdGlhbGl6ZXJ8bGF6eXxsZXR8bWF0Y2h8bWV0aG9kfG1vZHVsZXxtdXRhYmxlfG5ld3xvYmplY3R8b2Z8b3BlbnxwcmVmaXh8cHJpdmF0ZXxyZWN8dGhlbnxzaWd8c3RydWN0fHRvfHRyeXx0eXBlfHZhbHx2YWx1ZXx2aXJ0dWFsfHdoZXJlfHdoaWxlfHdpdGgpXFxiLyxib29sZWFuOi9cXGIoPzpmYWxzZXx0cnVlKVxcYi8sb3BlcmF0b3I6Lzo9fFs9PD5AXnwmK1xcLSpcXC8kJSE/fl1bISQlJiorXFwtLlxcLzo8PT4/QF58fl0qfFxcYig/OmFuZHxhc3J8bGFuZHxsb3J8bHhvcnxsc2x8bHNyfG1vZHxub3J8b3IpXFxiLyxwdW5jdHVhdGlvbjovWygpe31cXFtcXF18Xy4sOjtdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm9jYW1sXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigzNCksbz1uKDk2KTtmdW5jdGlvbiBhKGUpe2UucmVnaXN0ZXIociksZS5yZWdpc3RlcihvKSxmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5vcGVuY2w9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY1wiLHtrZXl3b3JkOi9cXGIoPzpfX2F0dHJpYnV0ZV9ffCg/Ol9fKT8oPzpjb25zdGFudHxnbG9iYWx8a2VybmVsfGxvY2FsfHByaXZhdGV8cmVhZF9vbmx5fHJlYWRfd3JpdGV8d3JpdGVfb25seSl8X2NsXyg/OmNvbW1hbmRfcXVldWV8Y29udGV4dHxkZXZpY2VfaWR8ZXZlbnR8a2VybmVsfG1lbXxwbGF0Zm9ybV9pZHxwcm9ncmFtfHNhbXBsZXIpfGF1dG98YnJlYWt8Y2FzZXxjbF8oPzppbWFnZV9mb3JtYXR8bWVtX2ZlbmNlX2ZsYWdzKXxjbGtfZXZlbnRfdHxjb21wbGV4fGNvbnN0fGNvbnRpbnVlfGRlZmF1bHR8ZG98KD86ZmxvYXR8ZG91YmxlKSg/OjE2KD86eCg/OjF8MTZ8Mnw0fDgpKT98MXgoPzoxfDE2fDJ8NHw4KXwyKD86eCg/OjF8MTZ8Mnw0fDgpKT98M3w0KD86eCg/OjF8MTZ8Mnw0fDgpKT98OCg/OngoPzoxfDE2fDJ8NHw4KSk/KT98ZWxzZXxlbnVtfGV2ZW50X3R8ZXh0ZXJufGZvcnxnb3RvfCg/OnU/KD86Y2hhcnxzaG9ydHxpbnR8bG9uZyl8aGFsZnxxdWFkfGJvb2wpKD86MnwzfDR8OHwxNik/fGlmfGltYWdlKD86MWRfKD86YXJyYXlffGJ1ZmZlcl8pP3R8MmRfKD86YXJyYXlfKD86ZGVwdGhffG1zYWFfZGVwdGhffG1zYWFfKT98ZGVwdGhffG1zYWFfZGVwdGhffG1zYWFfKT90fDNkX3QpfGltYWdpbmFyeXxpbmxpbmV8aW50cHRyX3R8bmRyYW5nZV90fHBhY2tlZHxwaXBlfHB0cmRpZmZfdHxxdWV1ZV90fHJlZ2lzdGVyfHJlc2VydmVfaWRfdHxyZXN0cmljdHxyZXR1cm58c2FtcGxlcl90fHNpZ25lZHxzaXplX3R8c2l6ZW9mfHN0YXRpY3xzdHJ1Y3R8c3dpdGNofHR5cGVkZWZ8dWludHB0cl90fHVuaWZvcm18dW5pb258dW5zaWduZWR8dm9pZHx2b2xhdGlsZXx3aGlsZSlcXGIvLFwiZnVuY3Rpb24tb3BlbmNsLWtlcm5lbFwiOntwYXR0ZXJuOi9cXGIoPzphYnMoPzpfZGlmZik/fGE/KD86Y29zfHNpbikoPzpofHBpKT98YWRkX3NhdHxhbGlnbmVkfGFsbHxhbmR8YW55fGFzeW5jKD86X3dvcmtfZ3JvdXBfY29weXxfd29ya19ncm91cF9zdHJpZGVkX2NvcHkpP3xhdGFuKD86Mj8oPzpwaSk/fGgpP3xhdG9tXyg/OmFkZHxhbmR8Y21weGNoZ3xkZWN8aW5jfG1heHxtaW58b3J8c3VifHhjaGd8eG9yKXxiYXJyaWVyfGJpdHNlbGVjdHxjYnJ0fGNlaWx8Y2xhbXB8Y2x6fGNvcGllc3xjb3B5c2lnbnxjcm9zc3xkZWdyZWVzfGRpc3RhbmNlfGRvdHxlbmRpYW58ZXJmfGVyZmN8ZXhwKD86MnwxMCk/fGV4cG0xfGZhYnN8ZmFzdF8oPzpkaXN0YW5jZXxsZW5ndGh8bm9ybWFsaXplKXxmZGltfGZsb29yfGZtYXxmbWF4fGZtaW58ZnJhY3R8ZnJleHB8ZnJvfGZyb218Z2V0Xyg/Omdsb2JhbF8oPzppZHxvZmZzZXR8c2l6ZSl8Z3JvdXBfaWR8aW1hZ2VfKD86Y2hhbm5lbF9kYXRhX3R5cGV8Y2hhbm5lbF9vcmRlcnxkZXB0aHxkaW18aGVpZ2h0fHdpZHRoKXxsb2NhbCg/Ol9pZHxfc2l6ZSl8bnVtX2dyb3Vwc3x3b3JrX2RpbSl8aGFkZHwoPzpoYWxmfG5hdGl2ZSlfKD86Y29zfGRpdmlkZXxleHAoPzoyfDEwKT98bG9nKD86MnwxMCk/fHBvd3J8cmVjaXB8cj9zcXJ0fHNpbnx0YW4pfGh5cG90fGlsb2difGlzKD86ZXF1YWx8ZmluaXRlfGdyZWF0ZXIoPzplcXVhbCk/fGluZnxsZXNzKD86ZXF1YWx8Z3JlYXRlcik/fG5hbnxub3JtYWx8bm90ZXF1YWx8KD86dW4pP29yZGVyZWQpfGxkZXhwfGxlbmd0aHxsZ2FtbWF8bGdhbW1hX3J8bG9nKD86YnwxcHwyfDEwKT98bWFkKD86MjR8X2hpfF9zYXQpP3xtYXh8bWVtKD86X2ZlbmNlKT98bWlufG1peHxtb2RmfG11bDI0fG11bF9oaXxuYW58bmV4dGFmdGVyfG5vcm1hbGl6ZXxwb3dbbnJdP3xwcmVmZXRjaHxyYWRpYW5zfHJlYWRfKD86aW1hZ2UpKD86ZnxofHU/aSl8cmVhZF9tZW1fZmVuY2V8cmVtYWluZGVyfHJlbXF1b3xyZXFkX3dvcmtfZ3JvdXBfc2l6ZXxyaGFkZHxyaW50fHJvb3RufHJvdGF0ZXxyb3VuZHxyc3FydHxzZWxlY3R8c2h1ZmZsZTI/fHNpZ258c2lnbmJpdHxzaW5jb3N8c21vb3Roc3RlcHxzcXJ0fHN0ZXB8c3ViX3NhdHx0YW58dGFuaHx0YW5waXx0Z2FtbWF8dG98dHJ1bmN8dXBzYW1wbGV8dmVjXyg/OnN0ZXB8dHlwZV9oaW50KXx2KD86bG9hZHxzdG9yZSkoPzpfaGFsZik/KD86MnwzfDR8OHwxNik/fHYoPzpsb2FkYV9oYWxmfHN0b3JlYT8oPzpfaGFsZik/KSg/OjJ8M3w0fDh8MTYpPyg/Ol8oPzpydGV8cnRufHJ0cHxydHopKT98d2FpdF9ncm91cF9ldmVudHN8d29ya19ncm91cF9zaXplX2hpbnR8d3JpdGVfaW1hZ2UoPzpmfGh8dT9pKXx3cml0ZV9tZW1fZmVuY2UpXFxiLyxhbGlhczpcImZ1bmN0aW9uXCJ9LFwiY29uc3RhbnQtb3BlbmNsLWtlcm5lbFwiOntwYXR0ZXJuOi9cXGIoPzpDSEFSXyg/OkJJVHxNQVh8TUlOKXxDTEtfKD86QUREUkVTU18oPzpDTEFNUCg/Ol9UT19FREdFKT98Tk9ORXxSRVBFQVQpfEZJTFRFUl8oPzpMSU5FQVJ8TkVBUkVTVCl8KD86TE9DQUx8R0xPQkFMKV9NRU1fRkVOQ0V8Tk9STUFMSVpFRF9DT09SRFNfKD86RkFMU0V8VFJVRSkpfENMXyg/OkJHUkF8KD86SEFMRl8pP0ZMT0FUfElOVEVOU0lUWXxMVU1JTkFOQ0V8QT9SP0c/Qj9bQXhdP3woPzooPzpVTik/U0lHTkVEfFtVU11OT1JNKV8oPzpJTlQoPzo4fDE2fDMyKSl8VU5PUk1fKD86SU5UXzEwMTAxMHxTSE9SVF8oPzo1NTV8NTY1KSkpfCg/OkRCTHxGTFQpXyg/OkRJR3xFUFNJTE9OfE1BTlRfRElHfCg/Ok1JTnxNQVgpKD86KD86XzEwKT9fRVhQKT8pfEZMVF9SQURJWHxIVUdFX1ZBTEZ8SU5GSU5JVFl8KD86SU5UfExPTkd8U0NIQVJ8U0hSVHxVQ0hBUnxVSU5UfFVMT05HKV8oPzpNQVh8TUlOKXxNQVhGTE9BVHxNXyg/OlsxMl1fUEl8Ml9TUVJUUEl8RXxMTig/OjJ8MTApfExPRyg/OjEwfDIpRT98UElbMjRdP3xTUVJUKD86MV8yfDIpKXxOQU4pXFxiLyxhbGlhczpcImNvbnN0YW50XCJ9fSk7dmFyIHQ9e1widHlwZS1vcGVuY2wtaG9zdFwiOntwYXR0ZXJuOi9cXGIoPzpjbF8oPzpHTGVudW18R0xpbnR8R0x1aW58YWRkcmVzc2luZ19tb2RlfGJpdGZpZWxkfGJvb2x8YnVmZmVyX2NyZWF0ZV90eXBlfGJ1aWxkX3N0YXR1c3xjaGFubmVsXyg/Om9yZGVyfHR5cGUpfCg/OnU/KD86Y2hhcnxzaG9ydHxpbnR8bG9uZyl8ZmxvYXR8ZG91YmxlKSg/OjJ8M3w0fDh8MTYpP3xjb21tYW5kXyg/OnF1ZXVlKD86X2luZm98X3Byb3BlcnRpZXMpP3x0eXBlKXxjb250ZXh0KD86X2luZm98X3Byb3BlcnRpZXMpP3xkZXZpY2VfKD86ZXhlY19jYXBhYmlsaXRpZXN8ZnBfY29uZmlnfGlkfGluZm98bG9jYWxfbWVtX3R5cGV8bWVtX2NhY2hlX3R5cGV8dHlwZSl8KD86ZXZlbnR8c2FtcGxlcikoPzpfaW5mbyk/fGZpbHRlcl9tb2RlfGhhbGZ8aW1hZ2VfaW5mb3xrZXJuZWwoPzpfaW5mb3xfd29ya19ncm91cF9pbmZvKT98bWFwX2ZsYWdzfG1lbSg/Ol9mbGFnc3xfaW5mb3xfb2JqZWN0X3R5cGUpP3xwbGF0Zm9ybV8oPzppZHxpbmZvKXxwcm9maWxpbmdfaW5mb3xwcm9ncmFtKD86X2J1aWxkX2luZm98X2luZm8pPykpXFxiLyxhbGlhczpcImtleXdvcmRcIn0sXCJib29sZWFuLW9wZW5jbC1ob3N0XCI6e3BhdHRlcm46L1xcYkNMXyg/OlRSVUV8RkFMU0UpXFxiLyxhbGlhczpcImJvb2xlYW5cIn0sXCJjb25zdGFudC1vcGVuY2wtaG9zdFwiOntwYXR0ZXJuOi9cXGJDTF8oPzpBfEFCR1J8QUREUkVTU18oPzpDTEFNUCg/Ol9UT19FREdFKT98TUlSUk9SRURfUkVQRUFUfE5PTkV8UkVQRUFUKXxBUkdCfEJHUkF8QkxPQ0tJTkd8QlVGRkVSX0NSRUFURV9UWVBFX1JFR0lPTnxCVUlMRF8oPzpFUlJPUnxJTl9QUk9HUkVTU3xOT05FfFBST0dSQU1fRkFJTFVSRXxTVUNDRVNTKXxDT01NQU5EXyg/OkFDUVVJUkVfR0xfT0JKRUNUU3xCQVJSSUVSfENPUFlfKD86QlVGRkVSKD86X1JFQ1R8X1RPX0lNQUdFKT98SU1BR0UoPzpfVE9fQlVGRkVSKT8pfEZJTExfKD86QlVGRkVSfElNQUdFKXxNQVAoPzpfQlVGRkVSfF9JTUFHRSl8TUFSS0VSfE1JR1JBVEUoPzpfU1ZNKT9fTUVNX09CSkVDVFN8TkFUSVZFX0tFUk5FTHxORFJBTkdFX0tFUk5FTHxSRUFEXyg/OkJVRkZFUig/Ol9SRUNUKT98SU1BR0UpfFJFTEVBU0VfR0xfT0JKRUNUU3xTVk1fKD86RlJFRXxNQVB8TUVNQ1BZfE1FTUZJTEx8VU5NQVApfFRBU0t8VU5NQVBfTUVNX09CSkVDVHxVU0VSfFdSSVRFXyg/OkJVRkZFUig/Ol9SRUNUKT98SU1BR0UpKXxDT01QSUxFUl9OT1RfQVZBSUxBQkxFfENPTVBJTEVfUFJPR1JBTV9GQUlMVVJFfENPTVBMRVRFfENPTlRFWFRfKD86REVWSUNFU3xJTlRFUk9QX1VTRVJfU1lOQ3xOVU1fREVWSUNFU3xQTEFURk9STXxQUk9QRVJUSUVTfFJFRkVSRU5DRV9DT1VOVCl8REVQVEgoPzpfU1RFTkNJTCk/fERFVklDRV8oPzpBRERSRVNTX0JJVFN8QUZGSU5JVFlfRE9NQUlOXyg/OkxbMS00XV9DQUNIRXxORVhUX1BBUlRJVElPTkFCTEV8TlVNQSl8QVZBSUxBQkxFfEJVSUxUX0lOX0tFUk5FTFN8Q09NUElMRVJfQVZBSUxBQkxFfERPVUJMRV9GUF9DT05GSUd8RU5ESUFOX0xJVFRMRXxFUlJPUl9DT1JSRUNUSU9OX1NVUFBPUlR8RVhFQ1VUSU9OX0NBUEFCSUxJVElFU3xFWFRFTlNJT05TfEdMT0JBTF8oPzpNRU1fKD86Q0FDSEVMSU5FX1NJWkV8Q0FDSEVfU0laRXxDQUNIRV9UWVBFfFNJWkUpfFZBUklBQkxFX1BSRUZFUlJFRF9UT1RBTF9TSVpFKXxIT1NUX1VOSUZJRURfTUVNT1JZfElMX1ZFUlNJT058SU1BR0UoPzoyRF9NQVhfKD86SEVJR0hUfFdJRFRIKXwzRF9NQVhfKD86REVQVEh8SEVJR0hUfFdJRFRIKXxfQkFTRV9BRERSRVNTX0FMSUdOTUVOVHxfTUFYX0FSUkFZX1NJWkV8X01BWF9CVUZGRVJfU0laRXxfUElUQ0hfQUxJR05NRU5UfF9TVVBQT1JUKXxMSU5LRVJfQVZBSUxBQkxFfExPQ0FMX01FTV9TSVpFfExPQ0FMX01FTV9UWVBFfE1BWF8oPzpDTE9DS19GUkVRVUVOQ1l8Q09NUFVURV9VTklUU3xDT05TVEFOVF9BUkdTfENPTlNUQU5UX0JVRkZFUl9TSVpFfEdMT0JBTF9WQVJJQUJMRV9TSVpFfE1FTV9BTExPQ19TSVpFfE5VTV9TVUJfR1JPVVBTfE9OX0RFVklDRV8oPzpFVkVOVFN8UVVFVUVTKXxQQVJBTUVURVJfU0laRXxQSVBFX0FSR1N8UkVBRF9JTUFHRV9BUkdTfFJFQURfV1JJVEVfSU1BR0VfQVJHU3xTQU1QTEVSU3xXT1JLX0dST1VQX1NJWkV8V09SS19JVEVNX0RJTUVOU0lPTlN8V09SS19JVEVNX1NJWkVTfFdSSVRFX0lNQUdFX0FSR1MpfE1FTV9CQVNFX0FERFJfQUxJR058TUlOX0RBVEFfVFlQRV9BTElHTl9TSVpFfE5BTUV8TkFUSVZFX1ZFQ1RPUl9XSURUSF8oPzpDSEFSfERPVUJMRXxGTE9BVHxIQUxGfElOVHxMT05HfFNIT1JUKXxOT1RfKD86QVZBSUxBQkxFfEZPVU5EKXxPUEVOQ0xfQ19WRVJTSU9OfFBBUkVOVF9ERVZJQ0V8UEFSVElUSU9OXyg/OkFGRklOSVRZX0RPTUFJTnxCWV9BRkZJTklUWV9ET01BSU58QllfQ09VTlRTfEJZX0NPVU5UU19MSVNUX0VORHxFUVVBTExZfEZBSUxFRHxNQVhfU1VCX0RFVklDRVN8UFJPUEVSVElFU3xUWVBFKXxQSVBFX01BWF8oPzpBQ1RJVkVfUkVTRVJWQVRJT05TfFBBQ0tFVF9TSVpFKXxQTEFURk9STXxQUkVGRVJSRURfKD86R0xPQkFMX0FUT01JQ19BTElHTk1FTlR8SU5URVJPUF9VU0VSX1NZTkN8TE9DQUxfQVRPTUlDX0FMSUdOTUVOVHxQTEFURk9STV9BVE9NSUNfQUxJR05NRU5UfFZFQ1RPUl9XSURUSF8oPzpDSEFSfERPVUJMRXxGTE9BVHxIQUxGfElOVHxMT05HfFNIT1JUKSl8UFJJTlRGX0JVRkZFUl9TSVpFfFBST0ZJTEV8UFJPRklMSU5HX1RJTUVSX1JFU09MVVRJT058UVVFVUVfKD86T05fKD86REVWSUNFXyg/Ok1BWF9TSVpFfFBSRUZFUlJFRF9TSVpFfFBST1BFUlRJRVMpfEhPU1RfUFJPUEVSVElFUyl8UFJPUEVSVElFUyl8UkVGRVJFTkNFX0NPVU5UfFNJTkdMRV9GUF9DT05GSUd8U1VCX0dST1VQX0lOREVQRU5ERU5UX0ZPUldBUkRfUFJPR1JFU1N8U1ZNXyg/OkFUT01JQ1N8Q0FQQUJJTElUSUVTfENPQVJTRV9HUkFJTl9CVUZGRVJ8RklORV9HUkFJTl9CVUZGRVJ8RklORV9HUkFJTl9TWVNURU0pfFRZUEUoPzpfQUNDRUxFUkFUT1J8X0FMTHxfQ1BVfF9DVVNUT018X0RFRkFVTFR8X0dQVSk/fFZFTkRPUig/Ol9JRCk/fFZFUlNJT04pfERSSVZFUl9WRVJTSU9OfEVWRU5UXyg/OkNPTU1BTkRfKD86RVhFQ1VUSU9OX1NUQVRVU3xRVUVVRXxUWVBFKXxDT05URVhUfFJFRkVSRU5DRV9DT1VOVCl8RVhFQ18oPzpLRVJORUx8TkFUSVZFX0tFUk5FTHxTVEFUVVNfRVJST1JfRk9SX0VWRU5UU19JTl9XQUlUX0xJU1QpfEZJTFRFUl8oPzpMSU5FQVJ8TkVBUkVTVCl8RkxPQVR8RlBfKD86Q09SUkVDVExZX1JPVU5ERURfRElWSURFX1NRUlR8REVOT1JNfEZNQXxJTkZfTkFOfFJPVU5EX1RPX0lORnxST1VORF9UT19ORUFSRVNUfFJPVU5EX1RPX1pFUk98U09GVF9GTE9BVCl8R0xPQkFMfEhBTEZfRkxPQVR8SU1BR0VfKD86QVJSQVlfU0laRXxCVUZGRVJ8REVQVEh8RUxFTUVOVF9TSVpFfEZPUk1BVHxGT1JNQVRfTUlTTUFUQ0h8Rk9STUFUX05PVF9TVVBQT1JURUR8SEVJR0hUfE5VTV9NSVBfTEVWRUxTfE5VTV9TQU1QTEVTfFJPV19QSVRDSHxTTElDRV9QSVRDSHxXSURUSCl8SU5URU5TSVRZfElOVkFMSURfKD86QVJHX0lOREVYfEFSR19TSVpFfEFSR19WQUxVRXxCSU5BUll8QlVGRkVSX1NJWkV8QlVJTERfT1BUSU9OU3xDT01NQU5EX1FVRVVFfENPTVBJTEVSX09QVElPTlN8Q09OVEVYVHxERVZJQ0V8REVWSUNFX1BBUlRJVElPTl9DT1VOVHxERVZJQ0VfUVVFVUV8REVWSUNFX1RZUEV8RVZFTlR8RVZFTlRfV0FJVF9MSVNUfEdMT0JBTF9PRkZTRVR8R0xPQkFMX1dPUktfU0laRXxHTF9PQkpFQ1R8SE9TVF9QVFJ8SU1BR0VfREVTQ1JJUFRPUnxJTUFHRV9GT1JNQVRfREVTQ1JJUFRPUnxJTUFHRV9TSVpFfEtFUk5FTHxLRVJORUxfQVJHU3xLRVJORUxfREVGSU5JVElPTnxLRVJORUxfTkFNRXxMSU5LRVJfT1BUSU9OU3xNRU1fT0JKRUNUfE1JUF9MRVZFTHxPUEVSQVRJT058UElQRV9TSVpFfFBMQVRGT1JNfFBST0dSQU18UFJPR1JBTV9FWEVDVVRBQkxFfFBST1BFUlRZfFFVRVVFX1BST1BFUlRJRVN8U0FNUExFUnxWQUxVRXxXT1JLX0RJTUVOU0lPTnxXT1JLX0dST1VQX1NJWkV8V09SS19JVEVNX1NJWkUpfEtFUk5FTF8oPzpBUkdfKD86QUNDRVNTXyg/Ok5PTkV8UVVBTElGSUVSfFJFQURfT05MWXxSRUFEX1dSSVRFfFdSSVRFX09OTFkpfEFERFJFU1NfKD86Q09OU1RBTlR8R0xPQkFMfExPQ0FMfFBSSVZBVEV8UVVBTElGSUVSKXxJTkZPX05PVF9BVkFJTEFCTEV8TkFNRXxUWVBFXyg/OkNPTlNUfE5BTUV8Tk9ORXxQSVBFfFFVQUxJRklFUnxSRVNUUklDVHxWT0xBVElMRSkpfEFUVFJJQlVURVN8Q09NUElMRV9OVU1fU1VCX0dST1VQU3xDT01QSUxFX1dPUktfR1JPVVBfU0laRXxDT05URVhUfEVYRUNfSU5GT19TVk1fRklORV9HUkFJTl9TWVNURU18RVhFQ19JTkZPX1NWTV9QVFJTfEZVTkNUSU9OX05BTUV8R0xPQkFMX1dPUktfU0laRXxMT0NBTF9NRU1fU0laRXxMT0NBTF9TSVpFX0ZPUl9TVUJfR1JPVVBfQ09VTlR8TUFYX05VTV9TVUJfR1JPVVBTfE1BWF9TVUJfR1JPVVBfU0laRV9GT1JfTkRSQU5HRXxOVU1fQVJHU3xQUkVGRVJSRURfV09SS19HUk9VUF9TSVpFX01VTFRJUExFfFBSSVZBVEVfTUVNX1NJWkV8UFJPR1JBTXxSRUZFUkVOQ0VfQ09VTlR8U1VCX0dST1VQX0NPVU5UX0ZPUl9ORFJBTkdFfFdPUktfR1JPVVBfU0laRSl8TElOS0VSX05PVF9BVkFJTEFCTEV8TElOS19QUk9HUkFNX0ZBSUxVUkV8TE9DQUx8TFVNSU5BTkNFfE1BUF8oPzpGQUlMVVJFfFJFQUR8V1JJVEV8V1JJVEVfSU5WQUxJREFURV9SRUdJT04pfE1FTV8oPzpBTExPQ19IT1NUX1BUUnxBU1NPQ0lBVEVEX01FTU9CSkVDVHxDT05URVhUfENPUFlfSE9TVF9QVFJ8Q09QWV9PVkVSTEFQfEZMQUdTfEhPU1RfTk9fQUNDRVNTfEhPU1RfUFRSfEhPU1RfUkVBRF9PTkxZfEhPU1RfV1JJVEVfT05MWXxLRVJORUxfUkVBRF9BTkRfV1JJVEV8TUFQX0NPVU5UfE9CSkVDVF8oPzpBTExPQ0FUSU9OX0ZBSUxVUkV8QlVGRkVSfElNQUdFMUR8SU1BR0UxRF9BUlJBWXxJTUFHRTFEX0JVRkZFUnxJTUFHRTJEfElNQUdFMkRfQVJSQVl8SU1BR0UzRHxQSVBFKXxPRkZTRVR8UkVBRF9PTkxZfFJFQURfV1JJVEV8UkVGRVJFTkNFX0NPVU5UfFNJWkV8U1ZNX0FUT01JQ1N8U1ZNX0ZJTkVfR1JBSU5fQlVGRkVSfFRZUEV8VVNFU19TVk1fUE9JTlRFUnxVU0VfSE9TVF9QVFJ8V1JJVEVfT05MWSl8TUlHUkFURV9NRU1fT0JKRUNUXyg/OkNPTlRFTlRfVU5ERUZJTkVEfEhPU1QpfE1JU0FMSUdORURfU1VCX0JVRkZFUl9PRkZTRVR8Tk9ORXxOT05fQkxPQ0tJTkd8T1VUX09GXyg/OkhPU1RfTUVNT1JZfFJFU09VUkNFUyl8UElQRV8oPzpNQVhfUEFDS0VUU3xQQUNLRVRfU0laRSl8UExBVEZPUk1fKD86RVhURU5TSU9OU3xIT1NUX1RJTUVSX1JFU09MVVRJT058TkFNRXxQUk9GSUxFfFZFTkRPUnxWRVJTSU9OKXxQUk9GSUxJTkdfKD86Q09NTUFORF8oPzpDT01QTEVURXxFTkR8UVVFVUVEfFNUQVJUfFNVQk1JVCl8SU5GT19OT1RfQVZBSUxBQkxFKXxQUk9HUkFNXyg/OkJJTkFSSUVTfEJJTkFSWV9TSVpFU3xCSU5BUllfVFlQRSg/Ol9DT01QSUxFRF9PQkpFQ1R8X0VYRUNVVEFCTEV8X0xJQlJBUll8X05PTkUpP3xCVUlMRF8oPzpHTE9CQUxfVkFSSUFCTEVfVE9UQUxfU0laRXxMT0d8T1BUSU9OU3xTVEFUVVMpfENPTlRFWFR8REVWSUNFU3xJTHxLRVJORUxfTkFNRVN8TlVNX0RFVklDRVN8TlVNX0tFUk5FTFN8UkVGRVJFTkNFX0NPVU5UfFNPVVJDRSl8UVVFVUVEfFFVRVVFXyg/OkNPTlRFWFR8REVWSUNFfERFVklDRV9ERUZBVUxUfE9OX0RFVklDRXxPTl9ERVZJQ0VfREVGQVVMVHxPVVRfT0ZfT1JERVJfRVhFQ19NT0RFX0VOQUJMRXxQUk9GSUxJTkdfRU5BQkxFfFBST1BFUlRJRVN8UkVGRVJFTkNFX0NPVU5UfFNJWkUpfFJ8UkF8UkVBRF8oPzpPTkxZfFdSSVRFKV9DQUNIRXxSR3xSR0J8UkdCQXxSR0J4fFJHeHxSVU5OSU5HfFJ4fFNBTVBMRVJfKD86QUREUkVTU0lOR19NT0RFfENPTlRFWFR8RklMVEVSX01PREV8TE9EX01BWHxMT0RfTUlOfE1JUF9GSUxURVJfTU9ERXxOT1JNQUxJWkVEX0NPT1JEU3xSRUZFUkVOQ0VfQ09VTlQpfCg/OlVOKT9TSUdORURfSU5UKD86OHwxNnwzMil8U05PUk1fSU5UKD86OHwxNil8U1VCTUlUVEVEfFNVQ0NFU1N8VU5PUk1fSU5UKD86MTZ8MjR8OHxfMTAxMDEwfF8xMDEwMTBfMil8VU5PUk1fU0hPUlRfKD86NTU1fDU2NSl8VkVSU0lPTl8oPzoxXzB8MV8xfDFfMnwyXzB8Ml8xKXxzQkdSQXxzUkdCfHNSR0JBfHNSR0J4KVxcYi8sYWxpYXM6XCJjb25zdGFudFwifSxcImZ1bmN0aW9uLW9wZW5jbC1ob3N0XCI6e3BhdHRlcm46L1xcYmNsKD86QnVpbGRQcm9ncmFtfENsb25lS2VybmVsfENvbXBpbGVQcm9ncmFtfENyZWF0ZSg/OkJ1ZmZlcnxDb21tYW5kUXVldWUoPzpXaXRoUHJvcGVydGllcyk/fENvbnRleHR8Q29udGV4dEZyb21UeXBlfEltYWdlfEltYWdlMkR8SW1hZ2UzRHxLZXJuZWx8S2VybmVsc0luUHJvZ3JhbXxQaXBlfFByb2dyYW1XaXRoKD86QmluYXJ5fEJ1aWx0SW5LZXJuZWxzfElMfFNvdXJjZSl8U2FtcGxlcnxTYW1wbGVyV2l0aFByb3BlcnRpZXN8U3ViQnVmZmVyfFN1YkRldmljZXN8VXNlckV2ZW50KXxFbnF1ZXVlKD86KD86QmFycmllcnxNYXJrZXIpKD86V2l0aFdhaXRMaXN0KT98Q29weSg/OkJ1ZmZlcig/OlJlY3R8VG9JbWFnZSk/fEltYWdlKD86VG9CdWZmZXIpPyl8KD86RmlsbHxNYXApKD86QnVmZmVyfEltYWdlKXxNaWdyYXRlTWVtT2JqZWN0c3xORFJhbmdlS2VybmVsfE5hdGl2ZUtlcm5lbHwoPzpSZWFkfFdyaXRlKSg/OkJ1ZmZlcig/OlJlY3QpP3xJbWFnZSl8U1ZNKD86RnJlZXxNYXB8TWVtRmlsbHxNZW1jcHl8TWlncmF0ZU1lbXxVbm1hcCl8VGFza3xVbm1hcE1lbU9iamVjdHxXYWl0Rm9yRXZlbnRzKXxGaW5pc2h8Rmx1c2h8R2V0KD86Q29tbWFuZFF1ZXVlSW5mb3xDb250ZXh0SW5mb3xEZXZpY2UoPzpBbmRIb3N0VGltZXJ8SURzfEluZm8pfEV2ZW50KD86UHJvZmlsaW5nKT9JbmZvfEV4dGVuc2lvbkZ1bmN0aW9uQWRkcmVzcyg/OkZvclBsYXRmb3JtKT98SG9zdFRpbWVyfEltYWdlSW5mb3xLZXJuZWwoPzpBcmdJbmZvfEluZm98U3ViR3JvdXBJbmZvfFdvcmtHcm91cEluZm8pfE1lbU9iamVjdEluZm98UGlwZUluZm98UGxhdGZvcm0oPzpJRHN8SW5mbyl8UHJvZ3JhbSg/OkJ1aWxkKT9JbmZvfFNhbXBsZXJJbmZvfFN1cHBvcnRlZEltYWdlRm9ybWF0cyl8TGlua1Byb2dyYW18KD86UmVsZWFzZXxSZXRhaW4pKD86Q29tbWFuZFF1ZXVlfENvbnRleHR8RGV2aWNlfEV2ZW50fEtlcm5lbHxNZW1PYmplY3R8UHJvZ3JhbXxTYW1wbGVyKXxTVk0oPzpBbGxvY3xGcmVlKXxTZXQoPzpDb21tYW5kUXVldWVQcm9wZXJ0eXxEZWZhdWx0RGV2aWNlQ29tbWFuZFF1ZXVlfEV2ZW50Q2FsbGJhY2t8S2VybmVsKD86QXJnKD86U1ZNUG9pbnRlcik/fEV4ZWNJbmZvKXxLZXJuZWx8TWVtT2JqZWN0RGVzdHJ1Y3RvckNhbGxiYWNrfFVzZXJFdmVudFN0YXR1cyl8VW5sb2FkKD86UGxhdGZvcm0pP0NvbXBpbGVyfFdhaXRGb3JFdmVudHMpXFxiLyxhbGlhczpcImZ1bmN0aW9uXCJ9fTtlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJjXCIsXCJrZXl3b3JkXCIsdCksdFtcInR5cGUtb3BlbmNsLWhvc3QtYysrXCJdPXtwYXR0ZXJuOi9cXGIoPzpCdWZmZXJ8QnVmZmVyR0x8QnVmZmVyUmVuZGVyR0x8Q29tbWFuZFF1ZXVlfENvbnRleHR8RGV2aWNlfERldmljZUNvbW1hbmRRdWV1ZXxFbnF1ZXVlQXJnc3xFdmVudHxJbWFnZXxJbWFnZTFEfEltYWdlMURBcnJheXxJbWFnZTFEQnVmZmVyfEltYWdlMkR8SW1hZ2UyREFycmF5fEltYWdlMkRHTHxJbWFnZTNEfEltYWdlM0RHTHxJbWFnZUZvcm1hdHxJbWFnZUdMfEtlcm5lbHxLZXJuZWxGdW5jdG9yfExvY2FsU3BhY2VBcmd8TWVtb3J5fE5EUmFuZ2V8UGlwZXxQbGF0Zm9ybXxQcm9ncmFtfFNhbXBsZXJ8U1ZNQWxsb2NhdG9yfFNWTVRyYWl0QXRvbWljfFNWTVRyYWl0Q29hcnNlfFNWTVRyYWl0RmluZXxTVk1UcmFpdFJlYWRPbmx5fFNWTVRyYWl0UmVhZFdyaXRlfFNWTVRyYWl0V3JpdGVPbmx5fFVzZXJFdmVudClcXGIvLGFsaWFzOlwia2V5d29yZFwifSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJjcHBcIixcImtleXdvcmRcIix0KX0oZSl9ZS5leHBvcnRzPWEsYS5kaXNwbGF5TmFtZT1cIm9wZW5jbFwiLGEuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMub3o9e2NvbW1lbnQ6L1xcL1xcKltcXHNcXFNdKj9cXCpcXC98JS4qLyxzdHJpbmc6e3BhdHRlcm46L1wiKD86W15cIlxcXFxdfFxcXFxbXFxzXFxTXSkqXCIvLGdyZWVkeTohMH0sYXRvbTp7cGF0dGVybjovJyg/OlteJ1xcXFxdfFxcXFxbXFxzXFxTXSkqJy8sZ3JlZWR5OiEwLGFsaWFzOlwiYnVpbHRpblwifSxrZXl3b3JkOi9bJF9dfFxcW1xcXXxcXGIoPzphdHxhdHRyfGNhc2V8Y2F0Y2h8Y2hvaWNlfGNsYXNzfGNvbmR8ZGVjbGFyZXxkZWZpbmV8ZGlzfGVsc2UoPzpjYXNlfGlmKT98ZW5kfGV4cG9ydHxmYWlsfGZhbHNlfGZlYXR8ZmluYWxseXxmcm9tfGZ1bnxmdW5jdG9yfGlmfGltcG9ydHxpbnxsb2NhbHxsb2NrfG1ldGh8bmlsfG5vdHxvZnxvcnxwcmVwYXJlfHByb2N8cHJvcHxyYWlzZXxyZXF1aXJlfHNlbGZ8c2tpcHx0aGVufHRocmVhZHx0cnVlfHRyeXx1bml0KVxcYi8sZnVuY3Rpb246Wy9bYS16XVtBLVphLXpcXGRdKig/PVxcKCkvLHtwYXR0ZXJuOi8oXFx7KVtBLVpdW0EtWmEtelxcZF0qLyxsb29rYmVoaW5kOiEwfV0sbnVtYmVyOi9cXGIoPzowW2J4XVtcXGRhLWZdK3xcXGQrXFwuP1xcZCooPzplfj9cXGQrKT9cXGIpfCYoPzpbXlxcXFxdfFxcXFwoPzpcXGR7M318LikpL2ksdmFyaWFibGU6L1xcYltBLVpdW0EtWmEtelxcZF0qfGAoPzpbXmBcXFxcXXxcXFxcLikrYC8sXCJhdHRyLW5hbWVcIjovXFx3Kyg/PTopLyxvcGVyYXRvcjovOig/Oj18Ojo/KXw8Wy06PV0/fD0oPzo9fDw/Oj8pfD49Pzo/fFxcXFw9Oj98ISE/fFt8IytcXC0qXFwvLH5eQF18XFxiKD86YW5kdGhlbnxkaXZ8bW9kfG9yZWxzZSlcXGIvLHB1bmN0dWF0aW9uOi9bXFxbXFxdKCl7fS46Oz9dL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm96XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXt2YXIgdDtlLmxhbmd1YWdlcy5wYXJpZ3A9e2NvbW1lbnQ6L1xcL1xcKltcXHNcXFNdKj9cXCpcXC98XFxcXFxcXFwuKi8sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlteXCJcXFxcXFxyXFxuXXxcXFxcLikqXCIvLGdyZWVkeTohMH0sa2V5d29yZDoodD1bXCJicmVha3BvaW50XCIsXCJicmVha1wiLFwiZGJnX2Rvd25cIixcImRiZ19lcnJcIixcImRiZ191cFwiLFwiZGJnX3hcIixcImZvcmNvbXBvc2l0ZVwiLFwiZm9yZGl2XCIsXCJmb3JlbGxcIixcImZvcnBhcnRcIixcImZvcnByaW1lXCIsXCJmb3JzdGVwXCIsXCJmb3JzdWJncm91cFwiLFwiZm9ydmVjXCIsXCJmb3JcIixcImlmZXJyXCIsXCJpZlwiLFwibG9jYWxcIixcIm15XCIsXCJuZXh0XCIsXCJyZXR1cm5cIixcInVudGlsXCIsXCJ3aGlsZVwiXSx0PXQubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KFwiXCIpLmpvaW4oXCIgKlwiKX0pLmpvaW4oXCJ8XCIpLFJlZ0V4cChcIlxcXFxiKD86XCIrdCtcIilcXFxcYlwiKSksZnVuY3Rpb246L1xcd1tcXHcgXSo/KD89ICpcXCgpLyxudW1iZXI6e3BhdHRlcm46LygoPzpcXC4gKlxcLiAqKT8pKD86XFxkKD86ICpcXGQpKig/OiAqKD8hXFwuICpcXC4pXFwuKD86ICpcXGQpKik/fFxcLiAqXFxkKD86ICpcXGQpKikoPzogKmUgKlsrLV0/ICpcXGQoPzogKlxcZCkqKT8vaSxsb29rYmVoaW5kOiEwfSxvcGVyYXRvcjovXFwuICpcXC58WypcXC8hXSg/OiAqPSk/fCUoPzogKj18KD86ICojKT8oPzogKicpKik/fFxcKyg/OiAqWys9XSk/fC0oPzogKlstPT5dKT98PCg/Oig/OiAqPCk/KD86ICo9KT98ICo+KT98Pig/OiAqPik/KD86ICo9KT98PSg/OiAqPSl7MCwyfXxcXFxcKD86ICpcXC8pPyg/OiAqPSk/fCYoPzogKiYpP3xcXHwgKlxcfHxbJyN+Xl0vLHB1bmN0dWF0aW9uOi9bXFxbXFxde30oKS4sOjt8XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJwYXJpZ3BcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnBhcnNlcj1lLmxhbmd1YWdlcy5leHRlbmQoXCJtYXJrdXBcIix7a2V5d29yZDp7cGF0dGVybjovKF58W15eXSkoPzpcXF4oPzpjYXNlfGV2YWx8Zm9yfGlmfHN3aXRjaHx0aHJvdylcXGJ8QCg/OkJBU0V8Q0xBU1N8R0VUKD86X0RFRkFVTFQpP3xPUFRJT05TfFNFVF9ERUZBVUxUfFVTRSlcXGIpLyxsb29rYmVoaW5kOiEwfSx2YXJpYWJsZTp7cGF0dGVybjovKF58W15eXSlcXEJcXCQoPzpcXHcrfCg/PVsue10pKSg/Oig/OlxcLnw6Oj8pXFx3KykqKD86XFwufDo6Pyk/Lyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cHVuY3R1YXRpb246L1xcLnw6Ky99fSxmdW5jdGlvbjp7cGF0dGVybjovKF58W15eXSlcXEJbQF5dXFx3Kyg/Oig/OlxcLnw6Oj8pXFx3KykqKD86XFwufDo6Pyk/Lyxsb29rYmVoaW5kOiEwLGluc2lkZTp7a2V5d29yZDp7cGF0dGVybjovKF5AKSg/OkdFVF98U0VUXykvLGxvb2tiZWhpbmQ6ITB9LHB1bmN0dWF0aW9uOi9cXC58OisvfX0sZXNjYXBlOntwYXR0ZXJuOi9cXF4oPzpbJF47QCgpXFxbXFxde31cIic6XXwjW2EtZlxcZF0qKS9pLGFsaWFzOlwiYnVpbHRpblwifSxwdW5jdHVhdGlvbjovW1xcW1xcXSgpe307XS99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJwYXJzZXJcIixcImtleXdvcmRcIix7XCJwYXJzZXItY29tbWVudFwiOntwYXR0ZXJuOi8oXFxzKSMuKi8sbG9va2JlaGluZDohMCxhbGlhczpcImNvbW1lbnRcIn0sZXhwcmVzc2lvbjp7cGF0dGVybjovKF58W15eXSlcXCgoPzpbXigpXXxcXCgoPzpbXigpXXxcXCgoPzpbXigpXSkqXFwpKSpcXCkpKlxcKS8sZ3JlZWR5OiEwLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntzdHJpbmc6e3BhdHRlcm46LyhefFteXl0pKFtcIiddKSg/Oig/IVxcMilbXl5dfFxcXltcXHNcXFNdKSpcXDIvLGxvb2tiZWhpbmQ6ITB9LGtleXdvcmQ6ZS5sYW5ndWFnZXMucGFyc2VyLmtleXdvcmQsdmFyaWFibGU6ZS5sYW5ndWFnZXMucGFyc2VyLnZhcmlhYmxlLGZ1bmN0aW9uOmUubGFuZ3VhZ2VzLnBhcnNlci5mdW5jdGlvbixib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi8sbnVtYmVyOi9cXGIoPzoweFthLWZcXGRdK3xcXGQrXFwuP1xcZCooPzplWystXT9cXGQrKT8pXFxiL2ksZXNjYXBlOmUubGFuZ3VhZ2VzLnBhcnNlci5lc2NhcGUsb3BlcmF0b3I6L1t+KypcXC9cXFxcJV18ISg/OlxcfFxcfD98PSk/fCYmP3xcXHxcXHw/fD09fDxbPD1dP3w+Wz49XT98LVtmZF0/fFxcYig/OmRlZnxlcXxnZXxndHxpbnxpc3xsZXxsdHxuZSlcXGIvLHB1bmN0dWF0aW9uOmUubGFuZ3VhZ2VzLnBhcnNlci5wdW5jdHVhdGlvbn19fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiaW5zaWRlXCIsXCJwdW5jdHVhdGlvblwiLHtleHByZXNzaW9uOmUubGFuZ3VhZ2VzLnBhcnNlci5leHByZXNzaW9uLGtleXdvcmQ6ZS5sYW5ndWFnZXMucGFyc2VyLmtleXdvcmQsdmFyaWFibGU6ZS5sYW5ndWFnZXMucGFyc2VyLnZhcmlhYmxlLGZ1bmN0aW9uOmUubGFuZ3VhZ2VzLnBhcnNlci5mdW5jdGlvbixlc2NhcGU6ZS5sYW5ndWFnZXMucGFyc2VyLmVzY2FwZSxcInBhcnNlci1wdW5jdHVhdGlvblwiOntwYXR0ZXJuOmUubGFuZ3VhZ2VzLnBhcnNlci5wdW5jdHVhdGlvbixhbGlhczpcInB1bmN0dWF0aW9uXCJ9fSxlLmxhbmd1YWdlcy5wYXJzZXIudGFnLmluc2lkZVtcImF0dHItdmFsdWVcIl0pfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJwYXJzZXJcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnBhc2NhbD17Y29tbWVudDpbL1xcKFxcKltcXHNcXFNdKz9cXCpcXCkvLC9cXHtbXFxzXFxTXSs/XFx9LywvXFwvXFwvLiovXSxzdHJpbmc6e3BhdHRlcm46Lyg/OicoPzonJ3xbXidcXHJcXG5dKSonfCNbJiQlXT9bYS1mXFxkXSspK3xcXF5bYS16XS9pLGdyZWVkeTohMH0sa2V5d29yZDpbe3BhdHRlcm46LyhefFteJl0pXFxiKD86YWJzb2x1dGV8YXJyYXl8YXNtfGJlZ2lufGNhc2V8Y29uc3R8Y29uc3RydWN0b3J8ZGVzdHJ1Y3Rvcnxkb3xkb3dudG98ZWxzZXxlbmR8ZmlsZXxmb3J8ZnVuY3Rpb258Z290b3xpZnxpbXBsZW1lbnRhdGlvbnxpbmhlcml0ZWR8aW5saW5lfGludGVyZmFjZXxsYWJlbHxuaWx8b2JqZWN0fG9mfG9wZXJhdG9yfHBhY2tlZHxwcm9jZWR1cmV8cHJvZ3JhbXxyZWNvcmR8cmVpbnRyb2R1Y2V8cmVwZWF0fHNlbGZ8c2V0fHN0cmluZ3x0aGVufHRvfHR5cGV8dW5pdHx1bnRpbHx1c2VzfHZhcnx3aGlsZXx3aXRoKVxcYi9pLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXnxbXiZdKVxcYig/OmRpc3Bvc2V8ZXhpdHxmYWxzZXxuZXd8dHJ1ZSlcXGIvaSxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W14mXSlcXGIoPzpjbGFzc3xkaXNwaW50ZXJmYWNlfGV4Y2VwdHxleHBvcnRzfGZpbmFsaXphdGlvbnxmaW5hbGx5fGluaXRpYWxpemF0aW9ufGlubGluZXxsaWJyYXJ5fG9ufG91dHxwYWNrZWR8cHJvcGVydHl8cmFpc2V8cmVzb3VyY2VzdHJpbmd8dGhyZWFkdmFyfHRyeSlcXGIvaSxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W14mXSlcXGIoPzphYnNvbHV0ZXxhYnN0cmFjdHxhbGlhc3xhc3NlbWJsZXJ8Yml0cGFja2VkfGJyZWFrfGNkZWNsfGNvbnRpbnVlfGNwcGRlY2x8Y3ZhcnxkZWZhdWx0fGRlcHJlY2F0ZWR8ZHluYW1pY3xlbnVtZXJhdG9yfGV4cGVyaW1lbnRhbHxleHBvcnR8ZXh0ZXJuYWx8ZmFyfGZhcjE2fGZvcndhcmR8Z2VuZXJpY3xoZWxwZXJ8aW1wbGVtZW50c3xpbmRleHxpbnRlcnJ1cHR8aW9jaGVja3N8bG9jYWx8bWVzc2FnZXxuYW1lfG5lYXJ8bm9kZWZhdWx0fG5vcmV0dXJufG5vc3RhY2tmcmFtZXxvbGRmcGNjYWxsfG90aGVyd2lzZXxvdmVybG9hZHxvdmVycmlkZXxwYXNjYWx8cGxhdGZvcm18cHJpdmF0ZXxwcm90ZWN0ZWR8cHVibGljfHB1Ymxpc2hlZHxyZWFkfHJlZ2lzdGVyfHJlaW50cm9kdWNlfHJlc3VsdHxzYWZlY2FsbHxzYXZlcmVnaXN0ZXJzfHNvZnRmbG9hdHxzcGVjaWFsaXplfHN0YXRpY3xzdGRjYWxsfHN0b3JlZHxzdHJpY3R8dW5hbGlnbmVkfHVuaW1wbGVtZW50ZWR8dmFyYXJnc3x2aXJ0dWFsfHdyaXRlKVxcYi9pLGxvb2tiZWhpbmQ6ITB9XSxudW1iZXI6Wy8oPzpbJiVdXFxkK3xcXCRbYS1mXFxkXSspL2ksL1xcYlxcZCsoPzpcXC5cXGQrKT8oPzplWystXT9cXGQrKT8vaV0sb3BlcmF0b3I6Wy9cXC5cXC58XFwqXFwqfDo9fDxbPD0+XT98Pls+PV0/fFsrXFwtKlxcL109P3xbQF49XS9pLHtwYXR0ZXJuOi8oXnxbXiZdKVxcYig/OmFuZHxhc3xkaXZ8ZXhjbHVkZXxpbnxpbmNsdWRlfGlzfG1vZHxub3R8b3J8c2hsfHNocnx4b3IpXFxiLyxsb29rYmVoaW5kOiEwfV0scHVuY3R1YXRpb246L1xcKFxcLnxcXC5cXCl8WygpXFxbXFxdOjssLl0vfSxlLmxhbmd1YWdlcy5vYmplY3RwYXNjYWw9ZS5sYW5ndWFnZXMucGFzY2FsfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJwYXNjYWxcIixyLmFsaWFzZXM9W1wib2JqZWN0cGFzY2FsXCJdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5wZXJsPXtjb21tZW50Olt7cGF0dGVybjovKF5cXHMqKT1cXHcrW1xcc1xcU10qPz1jdXQuKi9tLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXnxbXlxcXFwkXSkjLiovLGxvb2tiZWhpbmQ6ITB9XSxzdHJpbmc6W3twYXR0ZXJuOi9cXGIoPzpxfHFxfHF4fHF3KVxccyooW15hLXpBLVowLTlcXHN7KFxcWzxdKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFxbXFxzXFxTXSkqXFwxLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi9cXGIoPzpxfHFxfHF4fHF3KVxccysoW2EtekEtWjAtOV0pKD86KD8hXFwxKVteXFxcXF18XFxcXFtcXHNcXFNdKSpcXDEvLGdyZWVkeTohMH0se3BhdHRlcm46L1xcYig/OnF8cXF8cXh8cXcpXFxzKlxcKCg/OlteKClcXFxcXXxcXFxcW1xcc1xcU10pKlxcKS8sZ3JlZWR5OiEwfSx7cGF0dGVybjovXFxiKD86cXxxcXxxeHxxdylcXHMqXFx7KD86W157fVxcXFxdfFxcXFxbXFxzXFxTXSkqXFx9LyxncmVlZHk6ITB9LHtwYXR0ZXJuOi9cXGIoPzpxfHFxfHF4fHF3KVxccypcXFsoPzpbXltcXF1cXFxcXXxcXFxcW1xcc1xcU10pKlxcXS8sZ3JlZWR5OiEwfSx7cGF0dGVybjovXFxiKD86cXxxcXxxeHxxdylcXHMqPCg/OltePD5cXFxcXXxcXFxcW1xcc1xcU10pKj4vLGdyZWVkeTohMH0se3BhdHRlcm46LyhcInxgKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFxbXFxzXFxTXSkqXFwxLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi8nKD86W14nXFxcXFxcclxcbl18XFxcXC4pKicvLGdyZWVkeTohMH1dLHJlZ2V4Olt7cGF0dGVybjovXFxiKD86bXxxcilcXHMqKFteYS16QS1aMC05XFxzeyhcXFs8XSkoPzooPyFcXDEpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMVttc2l4cG9kdWFsbmdjXSovLGdyZWVkeTohMH0se3BhdHRlcm46L1xcYig/Om18cXIpXFxzKyhbYS16QS1aMC05XSkoPzooPyFcXDEpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMVttc2l4cG9kdWFsbmdjXSovLGdyZWVkeTohMH0se3BhdHRlcm46L1xcYig/Om18cXIpXFxzKlxcKCg/OlteKClcXFxcXXxcXFxcW1xcc1xcU10pKlxcKVttc2l4cG9kdWFsbmdjXSovLGdyZWVkeTohMH0se3BhdHRlcm46L1xcYig/Om18cXIpXFxzKlxceyg/Oltee31cXFxcXXxcXFxcW1xcc1xcU10pKlxcfVttc2l4cG9kdWFsbmdjXSovLGdyZWVkeTohMH0se3BhdHRlcm46L1xcYig/Om18cXIpXFxzKlxcWyg/OlteW1xcXVxcXFxdfFxcXFxbXFxzXFxTXSkqXFxdW21zaXhwb2R1YWxuZ2NdKi8sZ3JlZWR5OiEwfSx7cGF0dGVybjovXFxiKD86bXxxcilcXHMqPCg/OltePD5cXFxcXXxcXFxcW1xcc1xcU10pKj5bbXNpeHBvZHVhbG5nY10qLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi8oXnxbXi1dXFxiKSg/OnN8dHJ8eSlcXHMqKFteYS16QS1aMC05XFxzeyhcXFs8XSkoPzooPyFcXDIpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMig/Oig/IVxcMilbXlxcXFxdfFxcXFxbXFxzXFxTXSkqXFwyW21zaXhwb2R1YWxuZ2Nlcl0qLyxsb29rYmVoaW5kOiEwLGdyZWVkeTohMH0se3BhdHRlcm46LyhefFteLV1cXGIpKD86c3x0cnx5KVxccysoW2EtekEtWjAtOV0pKD86KD8hXFwyKVteXFxcXF18XFxcXFtcXHNcXFNdKSpcXDIoPzooPyFcXDIpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMlttc2l4cG9kdWFsbmdjZXJdKi8sbG9va2JlaGluZDohMCxncmVlZHk6ITB9LHtwYXR0ZXJuOi8oXnxbXi1dXFxiKSg/OnN8dHJ8eSlcXHMqXFwoKD86W14oKVxcXFxdfFxcXFxbXFxzXFxTXSkqXFwpXFxzKlxcKCg/OlteKClcXFxcXXxcXFxcW1xcc1xcU10pKlxcKVttc2l4cG9kdWFsbmdjZXJdKi8sbG9va2JlaGluZDohMCxncmVlZHk6ITB9LHtwYXR0ZXJuOi8oXnxbXi1dXFxiKSg/OnN8dHJ8eSlcXHMqXFx7KD86W157fVxcXFxdfFxcXFxbXFxzXFxTXSkqXFx9XFxzKlxceyg/Oltee31cXFxcXXxcXFxcW1xcc1xcU10pKlxcfVttc2l4cG9kdWFsbmdjZXJdKi8sbG9va2JlaGluZDohMCxncmVlZHk6ITB9LHtwYXR0ZXJuOi8oXnxbXi1dXFxiKSg/OnN8dHJ8eSlcXHMqXFxbKD86W15bXFxdXFxcXF18XFxcXFtcXHNcXFNdKSpcXF1cXHMqXFxbKD86W15bXFxdXFxcXF18XFxcXFtcXHNcXFNdKSpcXF1bbXNpeHBvZHVhbG5nY2VyXSovLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfSx7cGF0dGVybjovKF58W14tXVxcYikoPzpzfHRyfHkpXFxzKjwoPzpbXjw+XFxcXF18XFxcXFtcXHNcXFNdKSo+XFxzKjwoPzpbXjw+XFxcXF18XFxcXFtcXHNcXFNdKSo+W21zaXhwb2R1YWxuZ2Nlcl0qLyxsb29rYmVoaW5kOiEwLGdyZWVkeTohMH0se3BhdHRlcm46L1xcLyg/OlteXFwvXFxcXFxcclxcbl18XFxcXC4pKlxcL1ttc2l4cG9kdWFsbmdjXSooPz1cXHMqKD86JHxbXFxyXFxuLC47fSkmfFxcLSsqfjw+IT9eXXwobHR8Z3R8bGV8Z2V8ZXF8bmV8Y21wfG5vdHxhbmR8b3J8eG9yfHgpXFxiKSkvLGdyZWVkeTohMH1dLHZhcmlhYmxlOlsvWyYqJEAlXVxce1xcXltBLVpdK1xcfS8sL1smKiRAJV1cXF5bQS1aX10vLC9bJiokQCVdIz8oPz1cXHspLywvWyYqJEAlXSM/KD86KD86OjopKic/KD8hXFxkKVtcXHckXSspKyg/Ojo6KSovaSwvWyYqJEAlXVxcZCsvLC8oPyElPSlbJEAlXVshXCIjJCUmJygpKissXFwtLlxcLzo7PD0+P0BbXFxcXFxcXV5fYHt8fX5dL10sZmlsZWhhbmRsZTp7cGF0dGVybjovPCg/IVs8PV0pXFxTKj58XFxiX1xcYi8sYWxpYXM6XCJzeW1ib2xcIn0sdnN0cmluZzp7cGF0dGVybjovdlxcZCsoPzpcXC5cXGQrKSp8XFxkKyg/OlxcLlxcZCspezIsfS8sYWxpYXM6XCJzdHJpbmdcIn0sZnVuY3Rpb246e3BhdHRlcm46L3N1YiBbYS16MC05X10rL2ksaW5zaWRlOntrZXl3b3JkOi9zdWIvfX0sa2V5d29yZDovXFxiKD86YW55fGJyZWFrfGNvbnRpbnVlfGRlZmF1bHR8ZGVsZXRlfGRpZXxkb3xlbHNlfGVsc2lmfGV2YWx8Zm9yfGZvcmVhY2h8Z2l2ZW58Z290b3xpZnxsYXN0fGxvY2FsfG15fG5leHR8b3VyfHBhY2thZ2V8cHJpbnR8cmVkb3xyZXF1aXJlfHNheXxzdGF0ZXxzdWJ8c3dpdGNofHVuZGVmfHVubGVzc3x1bnRpbHx1c2V8d2hlbnx3aGlsZSlcXGIvLG51bWJlcjovXFxiKD86MHhbXFxkQS1GYS1mXSg/Ol8/W1xcZEEtRmEtZl0pKnwwYlswMV0oPzpfP1swMV0pKnwoPzpcXGQoPzpfP1xcZCkqKT9cXC4/XFxkKD86Xz9cXGQpKig/OltFZV1bKy1dP1xcZCspPylcXGIvLG9wZXJhdG9yOi8tW3J3eG9SV1hPZXpzZmRscFNiY3R1Z2tUQk1BQ11cXGJ8XFwrWys9XT98LVstPT5dP3xcXCpcXCo/PT98XFwvXFwvPz0/fD1bPX4+XT98flt+PV0/fFxcfFxcfD89P3wmJj89P3w8KD86PT4/fDw9Pyk/fD4+Pz0/fCFbfj1dP3xbJV5dPT98XFwuKD86PXxcXC5cXC4/KT98W1xcXFw/XXxcXGJ4KD86PXxcXGIpfFxcYig/Omx0fGd0fGxlfGdlfGVxfG5lfGNtcHxub3R8YW5kfG9yfHhvcilcXGIvLHB1bmN0dWF0aW9uOi9be31bXFxdOygpLDpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInBlcmxcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDE2Nik7ZnVuY3Rpb24gbyhlKXtlLnJlZ2lzdGVyKHIpLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInBocFwiLFwidmFyaWFibGVcIix7dGhpczovXFwkdGhpc1xcYi8sZ2xvYmFsOi9cXCQoPzpfKD86U0VSVkVSfEdFVHxQT1NUfEZJTEVTfFJFUVVFU1R8U0VTU0lPTnxFTlZ8Q09PS0lFKXxHTE9CQUxTfEhUVFBfUkFXX1BPU1RfREFUQXxhcmdjfGFyZ3Z8cGhwX2Vycm9ybXNnfGh0dHBfcmVzcG9uc2VfaGVhZGVyKVxcYi8sc2NvcGU6e3BhdHRlcm46L1xcYltcXHdcXFxcXSs6Oi8saW5zaWRlOntrZXl3b3JkOi9zdGF0aWN8c2VsZnxwYXJlbnQvLHB1bmN0dWF0aW9uOi86OnxcXFxcL319fSl9ZS5leHBvcnRzPW8sby5kaXNwbGF5TmFtZT1cInBocEV4dHJhc1wiLG8uYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMTY3KTtmdW5jdGlvbiBvKGUpe2UucmVnaXN0ZXIociksZS5sYW5ndWFnZXMucGxzcWw9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwic3FsXCIse2NvbW1lbnQ6Wy9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvLywvLS0uKi9dfSksXCJBcnJheVwiIT09ZS51dGlsLnR5cGUoZS5sYW5ndWFnZXMucGxzcWwua2V5d29yZCkmJihlLmxhbmd1YWdlcy5wbHNxbC5rZXl3b3JkPVtlLmxhbmd1YWdlcy5wbHNxbC5rZXl3b3JkXSksZS5sYW5ndWFnZXMucGxzcWwua2V5d29yZC51bnNoaWZ0KC9cXGIoPzpBQ0NFU1N8QUdFTlR8QUdHUkVHQVRFfEFSUkFZfEFSUk9XfEFUfEFUVFJJQlVURXxBVURJVHxBVVRISUR8QkZJTEVfQkFTRXxCTE9CX0JBU0V8QkxPQ0t8Qk9EWXxCT1RIfEJPVU5EfEJZVEV8Q0FMTElOR3xDSEFSX0JBU0V8Q0hBUlNFVCg/OkZPUk18SUQpfENMT0JfQkFTRXxDT0xBVVRIfENPTExFQ1R8Q0xVU1RFUlM/fENPTVBJTEVEfENPTVBSRVNTfENPTlNUQU5UfENPTlNUUlVDVE9SfENPTlRFWFR8Q1JBU0h8Q1VTVE9NREFUVU18REFOR0xJTkd8REFURV9CQVNFfERFRklORXxERVRFUk1JTklTVElDfERVUkFUSU9OfEVMRU1FTlR8RU1QVFl8RVhDRVBUSU9OUz98RVhDTFVTSVZFfEVYVEVSTkFMfEZJTkFMfEZPUkFMTHxGT1JNfEZPVU5EfEdFTkVSQUx8SEVBUHxISURERU58SURFTlRJRklFRHxJTU1FRElBVEV8SU5DTFVESU5HfElOQ1JFTUVOVHxJTkRJQ0FUT1J8SU5ERVhFU3xJTkRJQ0VTfElORklOSVRFfElOSVRJQUx8SVNPUEVOfElOU1RBTlRJQUJMRXxJTlRFUkZBQ0V8SU5WQUxJREFURXxKQVZBfExBUkdFfExFQURJTkd8TEVOR1RIfExJQlJBUll8TElLRVsyNENdfExJTUlURUR8TE9OR3xMT09QfE1BUHxNQVhFWFRFTlRTfE1BWExFTnxNRU1CRVJ8TUlOVVN8TUxTTEFCRUx8TVVMVElTRVR8TkFNRXxOQU58TkFUSVZFfE5FV3xOT0FVRElUfE5PQ09NUFJFU1N8Tk9DT1BZfE5PVEZPVU5EfE5PV0FJVHxOVU1CRVIoPzpfQkFTRSk/fE9CSkVDVHxPQ0koPzpDT0xMfERBVEV8REFURVRJTUV8RFVSQVRJT058SU5URVJWQUx8TE9CTE9DQVRPUnxOVU1CRVJ8UkFXfFJFRnxSRUZDVVJTT1J8Uk9XSUR8U1RSSU5HfFRZUEUpfE9GRkxJTkV8T05MSU5FfE9OTFl8T1BBUVVFfE9QRVJBVE9SfE9SQUNMRXxPUkFEQVRBfE9SR0FOSVpBVElPTnxPUkwoPzpBTll8VkFSWSl8T1RIRVJTfE9WRVJMQVBTfE9WRVJSSURJTkd8UEFDS0FHRXxQQVJBTExFTF9FTkFCTEV8UEFSQU1FVEVSUz98UEFTQ0FMfFBDVEZSRUV8UElQRSg/OkxJTkVEKT98UFJBR01BfFBSSU9SfFBSSVZBVEV8UkFJU0V8UkFOR0V8UkFXfFJFQ09SRHxSRUZ8UkVGRVJFTkNFfFJFTXxSRU1BSU5ERVJ8UkVTVUxUfFJFU09VUkNFfFJFVFVSTklOR3xSRVZFUlNFfFJPVyg/OklEfE5VTXxUWVBFKXxTQU1QTEV8U0JbMTI0XXxTRUdNRU5UfFNFTEZ8U0VQQVJBVEV8U0VRVUVOQ0V8U0hPUlR8U0laRSg/Ol9UKT98U1BBUlNFfFNRTCg/OkNPREV8REFUQXxOQU1FfFNUQVRFKXxTVEFOREFSRHxTVEFUSUN8U1REREVWfFNUT1JFRHxTVFJJTkd8U1RSVUNUfFNUWUxFfFNVQk1VTFRJU0VUfFNVQlBBUlRJVElPTnxTVUJTVElUVVRBQkxFfFNVQlRZUEV8U1VDQ0VTU0ZVTHxTWU5PTllNfFNZU0RBVEV8VEFCQVVUSHxURE98VEhFfFRJTUVaT05FXyg/OkFCQlJ8SE9VUnxNSU5VVEV8UkVHSU9OKXxUUkFJTElOR3xUUkFOU0FDKD86VElPTkFMKT98VFJVU1RFRHxVQlsxMjRdfFVJRHxVTkRFUnxVTlRSVVNURUR8VkFMSURBVEV8VkFMSVNUfFZBUkNIQVIyfFZBUklBQkxFfFZBUklBTkNFfFZBUlJBWXxWSUVXU3xWT0lEfFdIRU5FVkVSfFdSQVBQRUR8Wk9ORSlcXGIvaSksXCJBcnJheVwiIT09ZS51dGlsLnR5cGUoZS5sYW5ndWFnZXMucGxzcWwub3BlcmF0b3IpJiYoZS5sYW5ndWFnZXMucGxzcWwub3BlcmF0b3I9W2UubGFuZ3VhZ2VzLnBsc3FsLm9wZXJhdG9yXSksZS5sYW5ndWFnZXMucGxzcWwub3BlcmF0b3IudW5zaGlmdCgvOj0vKX1lLmV4cG9ydHM9byxvLmRpc3BsYXlOYW1lPVwicGxzcWxcIixvLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnBvd2Vyc2hlbGw9e2NvbW1lbnQ6W3twYXR0ZXJuOi8oXnxbXmBdKTwjW1xcc1xcU10qPyM+Lyxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W15gXSkjLiovLGxvb2tiZWhpbmQ6ITB9XSxzdHJpbmc6W3twYXR0ZXJuOi9cIig/OmBbXFxzXFxTXXxbXmBcIl0pKlwiLyxncmVlZHk6ITAsaW5zaWRlOntmdW5jdGlvbjp7cGF0dGVybjovKF58W15gXSlcXCRcXCgoPzpcXCRcXCguKj9cXCl8KD8hXFwkXFwoKVteXFxyXFxuKV0pKlxcKS8sbG9va2JlaGluZDohMCxpbnNpZGU6e319fX0se3BhdHRlcm46LycoPzpbXiddfCcnKSonLyxncmVlZHk6ITB9XSxuYW1lc3BhY2U6L1xcW1thLXpdKD86XFxbKD86XFxbW15cXF1dKl18W15cXFtcXF1dKSpdfFteXFxbXFxdXSkqXS9pLGJvb2xlYW46L1xcJCg/OnRydWV8ZmFsc2UpXFxiL2ksdmFyaWFibGU6L1xcJFxcdytcXGIvaSxmdW5jdGlvbjpbL1xcYig/OkFkZC0oPzpDb21wdXRlcnxDb250ZW50fEhpc3Rvcnl8TWVtYmVyfFBTU25hcGlufFR5cGUpfENoZWNrcG9pbnQtQ29tcHV0ZXJ8Q2xlYXItKD86Q29udGVudHxFdmVudExvZ3xIaXN0b3J5fEl0ZW18SXRlbVByb3BlcnR5fFZhcmlhYmxlKXxDb21wYXJlLU9iamVjdHxDb21wbGV0ZS1UcmFuc2FjdGlvbnxDb25uZWN0LVBTU2Vzc2lvbnxDb252ZXJ0RnJvbS0oPzpDc3Z8SnNvbnxTdHJpbmdEYXRhKXxDb252ZXJ0LVBhdGh8Q29udmVydFRvLSg/OkNzdnxIdG1sfEpzb258WG1sKXxDb3B5LSg/Okl0ZW18SXRlbVByb3BlcnR5KXxEZWJ1Zy1Qcm9jZXNzfERpc2FibGUtKD86Q29tcHV0ZXJSZXN0b3JlfFBTQnJlYWtwb2ludHxQU1JlbW90aW5nfFBTU2Vzc2lvbkNvbmZpZ3VyYXRpb24pfERpc2Nvbm5lY3QtUFNTZXNzaW9ufEVuYWJsZS0oPzpDb21wdXRlclJlc3RvcmV8UFNCcmVha3BvaW50fFBTUmVtb3Rpbmd8UFNTZXNzaW9uQ29uZmlndXJhdGlvbil8RW50ZXItUFNTZXNzaW9ufEV4aXQtUFNTZXNzaW9ufEV4cG9ydC0oPzpBbGlhc3xDbGl4bWx8Q29uc29sZXxDc3Z8Rm9ybWF0RGF0YXxNb2R1bGVNZW1iZXJ8UFNTZXNzaW9uKXxGb3JFYWNoLU9iamVjdHxGb3JtYXQtKD86Q3VzdG9tfExpc3R8VGFibGV8V2lkZSl8R2V0LSg/OkFsaWFzfENoaWxkSXRlbXxDb21tYW5kfENvbXB1dGVyUmVzdG9yZVBvaW50fENvbnRlbnR8Q29udHJvbFBhbmVsSXRlbXxDdWx0dXJlfERhdGV8RXZlbnR8RXZlbnRMb2d8RXZlbnRTdWJzY3JpYmVyfEZvcm1hdERhdGF8SGVscHxIaXN0b3J5fEhvc3R8SG90Rml4fEl0ZW18SXRlbVByb3BlcnR5fEpvYnxMb2NhdGlvbnxNZW1iZXJ8TW9kdWxlfFByb2Nlc3N8UFNCcmVha3BvaW50fFBTQ2FsbFN0YWNrfFBTRHJpdmV8UFNQcm92aWRlcnxQU1Nlc3Npb258UFNTZXNzaW9uQ29uZmlndXJhdGlvbnxQU1NuYXBpbnxSYW5kb218U2VydmljZXxUcmFjZVNvdXJjZXxUcmFuc2FjdGlvbnxUeXBlRGF0YXxVSUN1bHR1cmV8VW5pcXVlfFZhcmlhYmxlfFdtaU9iamVjdCl8R3JvdXAtT2JqZWN0fEltcG9ydC0oPzpBbGlhc3xDbGl4bWx8Q3N2fExvY2FsaXplZERhdGF8TW9kdWxlfFBTU2Vzc2lvbil8SW52b2tlLSg/OkNvbW1hbmR8RXhwcmVzc2lvbnxIaXN0b3J5fEl0ZW18UmVzdE1ldGhvZHxXZWJSZXF1ZXN0fFdtaU1ldGhvZCl8Sm9pbi1QYXRofExpbWl0LUV2ZW50TG9nfE1lYXN1cmUtKD86Q29tbWFuZHxPYmplY3QpfE1vdmUtKD86SXRlbXxJdGVtUHJvcGVydHkpfE5ldy0oPzpBbGlhc3xFdmVudHxFdmVudExvZ3xJdGVtfEl0ZW1Qcm9wZXJ0eXxNb2R1bGV8TW9kdWxlTWFuaWZlc3R8T2JqZWN0fFBTRHJpdmV8UFNTZXNzaW9ufFBTU2Vzc2lvbkNvbmZpZ3VyYXRpb25GaWxlfFBTU2Vzc2lvbk9wdGlvbnxQU1RyYW5zcG9ydE9wdGlvbnxTZXJ2aWNlfFRpbWVTcGFufFZhcmlhYmxlfFdlYlNlcnZpY2VQcm94eSl8T3V0LSg/OkRlZmF1bHR8RmlsZXxHcmlkVmlld3xIb3N0fE51bGx8UHJpbnRlcnxTdHJpbmcpfFBvcC1Mb2NhdGlvbnxQdXNoLUxvY2F0aW9ufFJlYWQtSG9zdHxSZWNlaXZlLSg/OkpvYnxQU1Nlc3Npb24pfFJlZ2lzdGVyLSg/OkVuZ2luZUV2ZW50fE9iamVjdEV2ZW50fFBTU2Vzc2lvbkNvbmZpZ3VyYXRpb258V21pRXZlbnQpfFJlbW92ZS0oPzpDb21wdXRlcnxFdmVudHxFdmVudExvZ3xJdGVtfEl0ZW1Qcm9wZXJ0eXxKb2J8TW9kdWxlfFBTQnJlYWtwb2ludHxQU0RyaXZlfFBTU2Vzc2lvbnxQU1NuYXBpbnxUeXBlRGF0YXxWYXJpYWJsZXxXbWlPYmplY3QpfFJlbmFtZS0oPzpDb21wdXRlcnxJdGVtfEl0ZW1Qcm9wZXJ0eSl8UmVzZXQtQ29tcHV0ZXJNYWNoaW5lUGFzc3dvcmR8UmVzb2x2ZS1QYXRofFJlc3RhcnQtKD86Q29tcHV0ZXJ8U2VydmljZSl8UmVzdG9yZS1Db21wdXRlcnxSZXN1bWUtKD86Sm9ifFNlcnZpY2UpfFNhdmUtSGVscHxTZWxlY3QtKD86T2JqZWN0fFN0cmluZ3xYbWwpfFNlbmQtTWFpbE1lc3NhZ2V8U2V0LSg/OkFsaWFzfENvbnRlbnR8RGF0ZXxJdGVtfEl0ZW1Qcm9wZXJ0eXxMb2NhdGlvbnxQU0JyZWFrcG9pbnR8UFNEZWJ1Z3xQU1Nlc3Npb25Db25maWd1cmF0aW9ufFNlcnZpY2V8U3RyaWN0TW9kZXxUcmFjZVNvdXJjZXxWYXJpYWJsZXxXbWlJbnN0YW5jZSl8U2hvdy0oPzpDb21tYW5kfENvbnRyb2xQYW5lbEl0ZW18RXZlbnRMb2cpfFNvcnQtT2JqZWN0fFNwbGl0LVBhdGh8U3RhcnQtKD86Sm9ifFByb2Nlc3N8U2VydmljZXxTbGVlcHxUcmFuc2FjdGlvbil8U3RvcC0oPzpDb21wdXRlcnxKb2J8UHJvY2Vzc3xTZXJ2aWNlKXxTdXNwZW5kLSg/OkpvYnxTZXJ2aWNlKXxUZWUtT2JqZWN0fFRlc3QtKD86Q29tcHV0ZXJTZWN1cmVDaGFubmVsfENvbm5lY3Rpb258TW9kdWxlTWFuaWZlc3R8UGF0aHxQU1Nlc3Npb25Db25maWd1cmF0aW9uRmlsZSl8VHJhY2UtQ29tbWFuZHxVbmJsb2NrLUZpbGV8VW5kby1UcmFuc2FjdGlvbnxVbnJlZ2lzdGVyLSg/OkV2ZW50fFBTU2Vzc2lvbkNvbmZpZ3VyYXRpb24pfFVwZGF0ZS0oPzpGb3JtYXREYXRhfEhlbHB8TGlzdHxUeXBlRGF0YSl8VXNlLVRyYW5zYWN0aW9ufFdhaXQtKD86RXZlbnR8Sm9ifFByb2Nlc3MpfFdoZXJlLU9iamVjdHxXcml0ZS0oPzpEZWJ1Z3xFcnJvcnxFdmVudExvZ3xIb3N0fE91dHB1dHxQcm9ncmVzc3xWZXJib3NlfFdhcm5pbmcpKVxcYi9pLC9cXGIoPzphY3xjYXR8Y2hkaXJ8Y2xjfGNsaXxjbHB8Y2x2fGNvbXBhcmV8Y29weXxjcHxjcGl8Y3BwfGN2cGF8ZGJwfGRlbHxkaWZmfGRpcnxlYnB8ZWNob3xlcGFsfGVwY3N2fGVwc258ZXJhc2V8ZmN8Zmx8ZnR8Znd8Z2FsfGdicHxnY3xnY2l8Z2NzfGdkcnxnaXxnbHxnbXxncHxncHN8Z3JvdXB8Z3N2fGd1fGd2fGd3bWl8aWV4fGlpfGlwYWx8aXBjc3Z8aXBzbnxpcm18aXdtaXxpd3J8a2lsbHxscHxsc3xtZWFzdXJlfG1pfG1vdW50fG1vdmV8bXB8bXZ8bmFsfG5kcnxuaXxudnxvZ3Z8cG9wZHxwc3xwdXNoZHxwd2R8cmJwfHJkfHJkcnxyZW58cml8cm18cm1kaXJ8cm5pfHJucHxycHxydnxydnBhfHJ3bWl8c2FsfHNhcHN8c2FzdnxzYnB8c2N8c2VsZWN0fHNldHxzaGNtfHNpfHNsfHNsZWVwfHNsc3xzb3J0fHNwfHNwcHN8c3BzdnxzdGFydHxzdnxzd21pfHRlZXx0cmNtfHR5cGV8d3JpdGUpXFxiL2ldLGtleXdvcmQ6L1xcYig/OkJlZ2lufEJyZWFrfENhdGNofENsYXNzfENvbnRpbnVlfERhdGF8RGVmaW5lfERvfER5bmFtaWNQYXJhbXxFbHNlfEVsc2VJZnxFbmR8RXhpdHxGaWx0ZXJ8RmluYWxseXxGb3J8Rm9yRWFjaHxGcm9tfEZ1bmN0aW9ufElmfElubGluZVNjcmlwdHxQYXJhbGxlbHxQYXJhbXxQcm9jZXNzfFJldHVybnxTZXF1ZW5jZXxTd2l0Y2h8VGhyb3d8VHJhcHxUcnl8VW50aWx8VXNpbmd8VmFyfFdoaWxlfFdvcmtmbG93KVxcYi9pLG9wZXJhdG9yOntwYXR0ZXJuOi8oXFxXPykoPzohfC0oZXF8bmV8Z3R8Z2V8bHR8bGV8c2hbbHJdfG5vdHxiPyg/OmFuZHx4P29yKXwoPzpOb3QpPyg/Okxpa2V8TWF0Y2h8Q29udGFpbnN8SW4pfFJlcGxhY2V8Sm9pbnxpcyg/Ok5vdCk/fGFzKVxcYnwtWy09XT98XFwrWys9XT98WypcXC8lXT0/KS9pLGxvb2tiZWhpbmQ6ITB9LHB1bmN0dWF0aW9uOi9bfHt9W1xcXTsoKSwuXS99LGUubGFuZ3VhZ2VzLnBvd2Vyc2hlbGwuc3RyaW5nWzBdLmluc2lkZS5ib29sZWFuPWUubGFuZ3VhZ2VzLnBvd2Vyc2hlbGwuYm9vbGVhbixlLmxhbmd1YWdlcy5wb3dlcnNoZWxsLnN0cmluZ1swXS5pbnNpZGUudmFyaWFibGU9ZS5sYW5ndWFnZXMucG93ZXJzaGVsbC52YXJpYWJsZSxlLmxhbmd1YWdlcy5wb3dlcnNoZWxsLnN0cmluZ1swXS5pbnNpZGUuZnVuY3Rpb24uaW5zaWRlPWUubGFuZ3VhZ2VzLnBvd2Vyc2hlbGx9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInBvd2Vyc2hlbGxcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnByb2Nlc3Npbmc9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7a2V5d29yZDovXFxiKD86YnJlYWt8Y2F0Y2h8Y2FzZXxjbGFzc3xjb250aW51ZXxkZWZhdWx0fGVsc2V8ZXh0ZW5kc3xmaW5hbHxmb3J8aWZ8aW1wbGVtZW50c3xpbXBvcnR8bmV3fG51bGx8cHJpdmF0ZXxwdWJsaWN8cmV0dXJufHN0YXRpY3xzdXBlcnxzd2l0Y2h8dGhpc3x0cnl8dm9pZHx3aGlsZSlcXGIvLG9wZXJhdG9yOi88Wzw9XT98Pls+PV0/fCYmP3xcXHxcXHw/fFslP118WyE9K1xcLSpcXC9dPT8vfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwicHJvY2Vzc2luZ1wiLFwibnVtYmVyXCIse2NvbnN0YW50Oi9cXGIoPyFYTUxcXGIpW0EtWl1bQS1aXFxkX10rXFxiLyx0eXBlOntwYXR0ZXJuOi9cXGIoPzpib29sZWFufGJ5dGV8Y2hhcnxjb2xvcnxkb3VibGV8ZmxvYXR8aW50fFhNTHxbQS1aXVxcdyopXFxiLyxhbGlhczpcInZhcmlhYmxlXCJ9fSksZS5sYW5ndWFnZXMucHJvY2Vzc2luZy5mdW5jdGlvbi5wYXR0ZXJuPS9cXHcrKD89XFxzKlxcKCkvLGUubGFuZ3VhZ2VzLnByb2Nlc3NpbmdbXCJjbGFzcy1uYW1lXCJdLmFsaWFzPVwidmFyaWFibGVcIn1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicHJvY2Vzc2luZ1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucHJvbG9nPXtjb21tZW50OlsvJS4rLywvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9dLHN0cmluZzp7cGF0dGVybjovKFtcIiddKSg/OlxcMVxcMXxcXFxcKD86XFxyXFxufFtcXHNcXFNdKXwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITB9LGJ1aWx0aW46L1xcYig/OmZ4fGZ5fHhmW3h5XT98eWZ4PylcXGIvLHZhcmlhYmxlOi9cXGJbQS1aX11cXHcqLyxmdW5jdGlvbjovXFxiW2Etel1cXHcqKD86KD89XFwoKXxcXC9cXGQrKS8sbnVtYmVyOi9cXGJcXGQrXFwuP1xcZCovLG9wZXJhdG9yOi9bOlxcXFw9PjxcXC0/KkBcXC87K158ISQuXSt8XFxiKD86aXN8bW9kfG5vdHx4b3IpXFxiLyxwdW5jdHVhdGlvbjovWygpe31cXFtcXF0sXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJwcm9sb2dcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnByb3BlcnRpZXM9e2NvbW1lbnQ6L15bIFxcdF0qWyMhXS4qJC9tLFwiYXR0ci12YWx1ZVwiOntwYXR0ZXJuOi8oXlsgXFx0XSooPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXxbXlxcXFxcXHM6PV0pKz8oPzogKls9Ol0gKnwgKSkoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXxbXlxcXFxcXHJcXG5dKSsvbSxsb29rYmVoaW5kOiEwfSxcImF0dHItbmFtZVwiOi9eWyBcXHRdKig/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfFteXFxcXFxcczo9XSkrPyg/PSAqWz06XSAqfCApL20scHVuY3R1YXRpb246L1s9Ol0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicHJvcGVydGllc1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucHJvdG9idWY9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7a2V5d29yZDovXFxiKD86cGFja2FnZXxpbXBvcnR8bWVzc2FnZXxlbnVtKVxcYi8sYnVpbHRpbjovXFxiKD86cmVxdWlyZWR8cmVwZWF0ZWR8b3B0aW9uYWx8cmVzZXJ2ZWQpXFxiLyxwcmltaXRpdmU6e3BhdHRlcm46L1xcYig/OmRvdWJsZXxmbG9hdHxpbnQzMnxpbnQ2NHx1aW50MzJ8dWludDY0fHNpbnQzMnxzaW50NjR8Zml4ZWQzMnxmaXhlZDY0fHNmaXhlZDMyfHNmaXhlZDY0fGJvb2x8c3RyaW5nfGJ5dGVzKVxcYi8sYWxpYXM6XCJzeW1ib2xcIn19KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicHJvdG9idWZcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5wdWc9e2NvbW1lbnQ6e3BhdHRlcm46LyheKFtcXHQgXSopKVxcL1xcLy4qKD86KD86XFxyP1xcbnxcXHIpXFwyW1xcdCBdKy4rKSovbSxsb29rYmVoaW5kOiEwfSxcIm11bHRpbGluZS1zY3JpcHRcIjp7cGF0dGVybjovKF4oW1xcdCBdKilzY3JpcHRcXGIuKlxcLltcXHQgXSopKD86KD86XFxyP1xcbnxcXHIoPyFcXG4pKSg/OlxcMltcXHQgXSsuK3xcXHMqPyg/PVxccj9cXG58XFxyKSkpKy9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntyZXN0OmUubGFuZ3VhZ2VzLmphdmFzY3JpcHR9fSxmaWx0ZXI6e3BhdHRlcm46LyheKFtcXHQgXSopKTouKyg/Oig/Olxccj9cXG58XFxyKD8hXFxuKSkoPzpcXDJbXFx0IF0rLit8XFxzKj8oPz1cXHI/XFxufFxccikpKSsvbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7XCJmaWx0ZXItbmFtZVwiOntwYXR0ZXJuOi9eOltcXHctXSsvLGFsaWFzOlwidmFyaWFibGVcIn19fSxcIm11bHRpbGluZS1wbGFpbi10ZXh0XCI6e3BhdHRlcm46LyheKFtcXHQgXSopW1xcd1xcLSMuXStcXC5bXFx0IF0qKSg/Oig/Olxccj9cXG58XFxyKD8hXFxuKSkoPzpcXDJbXFx0IF0rLit8XFxzKj8oPz1cXHI/XFxufFxccikpKSsvbSxsb29rYmVoaW5kOiEwfSxtYXJrdXA6e3BhdHRlcm46LyheW1xcdCBdKik8LisvbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy5tYXJrdXB9fSxkb2N0eXBlOntwYXR0ZXJuOi8oKD86XnxcXG4pW1xcdCBdKilkb2N0eXBlKD86IC4rKT8vLGxvb2tiZWhpbmQ6ITB9LFwiZmxvdy1jb250cm9sXCI6e3BhdHRlcm46LyheW1xcdCBdKikoPzppZnx1bmxlc3N8ZWxzZXxjYXNlfHdoZW58ZGVmYXVsdHxlYWNofHdoaWxlKVxcYig/OiAuKyk/L20sbG9va2JlaGluZDohMCxpbnNpZGU6e2VhY2g6e3BhdHRlcm46L15lYWNoIC4rPyBpblxcYi8saW5zaWRlOntrZXl3b3JkOi9cXGIoPzplYWNofGluKVxcYi8scHVuY3R1YXRpb246LywvfX0sYnJhbmNoOntwYXR0ZXJuOi9eKD86aWZ8dW5sZXNzfGVsc2V8Y2FzZXx3aGVufGRlZmF1bHR8d2hpbGUpXFxiLyxhbGlhczpcImtleXdvcmRcIn0scmVzdDplLmxhbmd1YWdlcy5qYXZhc2NyaXB0fX0sa2V5d29yZDp7cGF0dGVybjovKF5bXFx0IF0qKSg/OmJsb2NrfGV4dGVuZHN8aW5jbHVkZXxhcHBlbmR8cHJlcGVuZClcXGIuKy9tLGxvb2tiZWhpbmQ6ITB9LG1peGluOlt7cGF0dGVybjovKF5bXFx0IF0qKW1peGluIC4rL20sbG9va2JlaGluZDohMCxpbnNpZGU6e2tleXdvcmQ6L15taXhpbi8sZnVuY3Rpb246L1xcdysoPz1cXHMqXFwofFxccyokKS8scHVuY3R1YXRpb246L1soKSwuXS99fSx7cGF0dGVybjovKF5bXFx0IF0qKVxcKy4rL20sbG9va2JlaGluZDohMCxpbnNpZGU6e25hbWU6e3BhdHRlcm46L15cXCtcXHcrLyxhbGlhczpcImZ1bmN0aW9uXCJ9LHJlc3Q6ZS5sYW5ndWFnZXMuamF2YXNjcmlwdH19XSxzY3JpcHQ6e3BhdHRlcm46LyheW1xcdCBdKnNjcmlwdCg/Oig/OiZbXihdKyk/XFwoW14pXStcXCkpKltcXHQgXSspLisvbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy5qYXZhc2NyaXB0fX0sXCJwbGFpbi10ZXh0XCI6e3BhdHRlcm46LyheW1xcdCBdKig/IS0pW1xcd1xcLSMuXSpbXFx3XFwtXSg/Oig/OiZbXihdKyk/XFwoW14pXStcXCkpKlxcLz9bXFx0IF0rKS4rL20sbG9va2JlaGluZDohMH0sdGFnOntwYXR0ZXJuOi8oXltcXHQgXSopKD8hLSlbXFx3XFwtIy5dKltcXHdcXC1dKD86KD86JlteKF0rKT9cXChbXildK1xcKSkqXFwvPzo/L20sbG9va2JlaGluZDohMCxpbnNpZGU6e2F0dHJpYnV0ZXM6W3twYXR0ZXJuOi8mW14oXStcXChbXildK1xcKS8saW5zaWRlOntyZXN0OmUubGFuZ3VhZ2VzLmphdmFzY3JpcHR9fSx7cGF0dGVybjovXFwoW14pXStcXCkvLGluc2lkZTp7XCJhdHRyLXZhbHVlXCI6e3BhdHRlcm46Lyg9XFxzKikoPzpcXHtbXn1dKlxcfXxbXiwpXFxyXFxuXSspLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy5qYXZhc2NyaXB0fX0sXCJhdHRyLW5hbWVcIjovW1xcdy1dKyg/PVxccyohPz18XFxzKlssKV0pLyxwdW5jdHVhdGlvbjovWyE9KCksXSsvfX1dLHB1bmN0dWF0aW9uOi86L319LGNvZGU6W3twYXR0ZXJuOi8oXltcXHQgXSooPzotfCE/PSkpLisvbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy5qYXZhc2NyaXB0fX1dLHB1bmN0dWF0aW9uOi9bLlxcLSE9fF0rL307Zm9yKHZhciB0PVt7ZmlsdGVyOlwiYXRwbFwiLGxhbmd1YWdlOlwidHdpZ1wifSx7ZmlsdGVyOlwiY29mZmVlXCIsbGFuZ3VhZ2U6XCJjb2ZmZWVzY3JpcHRcIn0sXCJlanNcIixcImhhbmRsZWJhcnNcIixcImhvZ2FuXCIsXCJsZXNzXCIsXCJsaXZlc2NyaXB0XCIsXCJtYXJrZG93blwiLFwibXVzdGFjaGVcIixcInBsYXRlc1wiLHtmaWx0ZXI6XCJzYXNzXCIsbGFuZ3VhZ2U6XCJzY3NzXCJ9LFwic3R5bHVzXCIsXCJzd2lnXCJdLG49e30scj0wLG89dC5sZW5ndGg7cjxvO3IrKyl7dmFyIGE9dFtyXTthPVwic3RyaW5nXCI9PXR5cGVvZiBhP3tmaWx0ZXI6YSxsYW5ndWFnZTphfTphLGUubGFuZ3VhZ2VzW2EubGFuZ3VhZ2VdJiYobltcImZpbHRlci1cIithLmZpbHRlcl09e3BhdHRlcm46UmVnRXhwKFwiKF4oW1xcXFx0IF0qKSk6e3tmaWx0ZXJfbmFtZX19KD86KD86XFxcXHI/XFxcXG58XFxcXHIoPyFcXFxcbikpKD86XFxcXDJbXFxcXHQgXSsuK3xcXFxccyo/KD89XFxcXHI/XFxcXG58XFxcXHIpKSkrXCIucmVwbGFjZShcInt7ZmlsdGVyX25hbWV9fVwiLGEuZmlsdGVyKSxcIm1cIiksbG9va2JlaGluZDohMCxpbnNpZGU6e1wiZmlsdGVyLW5hbWVcIjp7cGF0dGVybjovXjpbXFx3LV0rLyxhbGlhczpcInZhcmlhYmxlXCJ9LHJlc3Q6ZS5sYW5ndWFnZXNbYS5sYW5ndWFnZV19fSl9ZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwicHVnXCIsXCJmaWx0ZXJcIixuKX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInB1Z1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLnB1cHBldD17aGVyZWRvYzpbe3BhdHRlcm46LyhAXFwoXCIoW15cIlxcclxcblxcLyk6XSspXCIoPzpcXC9bbnJ0cyR1TF0qKT9cXCkuKig/Olxccj9cXG58XFxyKSkoPzouKig/Olxccj9cXG58XFxyKSkqP1sgXFx0XSpcXHw/WyBcXHRdKi0/WyBcXHRdKlxcMi8sbG9va2JlaGluZDohMCxhbGlhczpcInN0cmluZ1wiLGluc2lkZTp7cHVuY3R1YXRpb246Lyg/PVxcUykuKlxcUyg/PSAqJCkvfX0se3BhdHRlcm46LyhAXFwoKFteXCJcXHJcXG5cXC8pOl0rKSg/OlxcL1tucnRzJHVMXSopP1xcKS4qKD86XFxyP1xcbnxcXHIpKSg/Oi4qKD86XFxyP1xcbnxcXHIpKSo/WyBcXHRdKlxcfD9bIFxcdF0qLT9bIFxcdF0qXFwyLyxsb29rYmVoaW5kOiEwLGdyZWVkeTohMCxhbGlhczpcInN0cmluZ1wiLGluc2lkZTp7cHVuY3R1YXRpb246Lyg/PVxcUykuKlxcUyg/PSAqJCkvfX0se3BhdHRlcm46L0BcXChcIj8oPzpbXlwiXFxyXFxuXFwvKTpdKylcIj8oPzpcXC9bbnJ0cyR1TF0qKT9cXCkvLGFsaWFzOlwic3RyaW5nXCIsaW5zaWRlOntwdW5jdHVhdGlvbjp7cGF0dGVybjovKFxcKCkuKz8oPz1cXCkpLyxsb29rYmVoaW5kOiEwfX19XSxcIm11bHRpbGluZS1jb21tZW50XCI6e3BhdHRlcm46LyhefFteXFxcXF0pXFwvXFwqW1xcc1xcU10qP1xcKlxcLy8sbG9va2JlaGluZDohMCxncmVlZHk6ITAsYWxpYXM6XCJjb21tZW50XCJ9LHJlZ2V4OntwYXR0ZXJuOi8oKD86XFxibm9kZVxccyt8W349XFwoXFxbXFx7LF1cXHMqfFs9K10+XFxzKnxeXFxzKikpXFwvKD86W15cXC9cXFxcXXxcXFxcW1xcc1xcU10pK1xcLyg/OltpbXhdK1xcYnxcXEIpLyxsb29rYmVoaW5kOiEwLGdyZWVkeTohMCxpbnNpZGU6e1wiZXh0ZW5kZWQtcmVnZXhcIjp7cGF0dGVybjovXlxcLyg/OlteXFwvXFxcXF18XFxcXFtcXHNcXFNdKStcXC9baW1dKnhbaW1dKiQvLGluc2lkZTp7Y29tbWVudDovIy4qL319fX0sY29tbWVudDp7cGF0dGVybjovKF58W15cXFxcXSkjLiovLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfSxzdHJpbmc6e3BhdHRlcm46LyhbXCInXSkoPzpcXCRcXHsoPzpbXidcIn1dfChbXCInXSkoPzooPyFcXDIpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMikrXFx9fCg/IVxcMSlbXlxcXFxdfFxcXFxbXFxzXFxTXSkqXFwxLyxncmVlZHk6ITAsaW5zaWRlOntcImRvdWJsZS1xdW90ZWRcIjp7cGF0dGVybjovXlwiW1xcc1xcU10qXCIkLyxpbnNpZGU6e319fX0sdmFyaWFibGU6e3BhdHRlcm46L1xcJCg/Ojo6KT9cXHcrKD86OjpcXHcrKSovLGluc2lkZTp7cHVuY3R1YXRpb246Lzo6L319LFwiYXR0ci1uYW1lXCI6Lyg/Olxcdyt8XFwqKSg/PVxccyo9PikvLGZ1bmN0aW9uOlt7cGF0dGVybjovKFxcLikoPyFcXGQpXFx3Ky8sbG9va2JlaGluZDohMH0sL1xcYig/OmNvbnRhaW58ZGVidWd8ZXJyfGZhaWx8aW5jbHVkZXxpbmZvfG5vdGljZXxyZWFsaXplfHJlcXVpcmV8dGFnfHdhcm5pbmcpXFxifFxcYig/IVxcZClcXHcrKD89XFwoKS9dLG51bWJlcjovXFxiKD86MHhbYS1mXFxkXSt8XFxkKyg/OlxcLlxcZCspPyg/OmUtP1xcZCspPylcXGIvaSxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi8sa2V5d29yZDovXFxiKD86YXBwbGljYXRpb258YXR0cnxjYXNlfGNsYXNzfGNvbnN1bWVzfGRlZmF1bHR8ZGVmaW5lfGVsc2V8ZWxzaWZ8ZnVuY3Rpb258aWZ8aW1wb3J0fGluaGVyaXRzfG5vZGV8cHJpdmF0ZXxwcm9kdWNlc3x0eXBlfHVuZGVmfHVubGVzcylcXGIvLGRhdGF0eXBlOntwYXR0ZXJuOi9cXGIoPzpBbnl8QXJyYXl8Qm9vbGVhbnxDYWxsYWJsZXxDYXRhbG9nZW50cnl8Q2xhc3N8Q29sbGVjdGlvbnxEYXRhfERlZmF1bHR8RW51bXxGbG9hdHxIYXNofEludGVnZXJ8Tm90VW5kZWZ8TnVtZXJpY3xPcHRpb25hbHxQYXR0ZXJufFJlZ2V4cHxSZXNvdXJjZXxSdW50aW1lfFNjYWxhcnxTdHJpbmd8U3RydWN0fFR1cGxlfFR5cGV8VW5kZWZ8VmFyaWFudClcXGIvLGFsaWFzOlwic3ltYm9sXCJ9LG9wZXJhdG9yOi89Wz1+Pl0/fCFbPX5dP3w8KD86PFxcfD98Wz1+fC1dKT98Pls+PV0/fC0+P3x+PnxcXHw+Pz4/fFsqXFwvJSs/XXxcXGIoPzphbmR8aW58b3IpXFxiLyxwdW5jdHVhdGlvbjovW1xcW1xcXXt9KCkuLDtdfDorL307dmFyIHQ9W3twYXR0ZXJuOi8oXnxbXlxcXFxdKVxcJFxceyg/OlteJ1wie31dfFxce1tefV0qXFx9fChbXCInXSkoPzooPyFcXDIpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMikrXFx9Lyxsb29rYmVoaW5kOiEwLGluc2lkZTp7XCJzaG9ydC12YXJpYWJsZVwiOntwYXR0ZXJuOi8oXlxcJFxceykoPyFcXHcrXFwoKSg/Ojo6KT9cXHcrKD86OjpcXHcrKSovLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJ2YXJpYWJsZVwiLGluc2lkZTp7cHVuY3R1YXRpb246Lzo6L319LGRlbGltaXRlcjp7cGF0dGVybjovXlxcJC8sYWxpYXM6XCJ2YXJpYWJsZVwifSxyZXN0OmUubGFuZ3VhZ2VzLnB1cHBldH19LHtwYXR0ZXJuOi8oXnxbXlxcXFxdKVxcJCg/Ojo6KT9cXHcrKD86OjpcXHcrKSovLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJ2YXJpYWJsZVwiLGluc2lkZTp7cHVuY3R1YXRpb246Lzo6L319XTtlLmxhbmd1YWdlcy5wdXBwZXQuaGVyZWRvY1swXS5pbnNpZGUuaW50ZXJwb2xhdGlvbj10LGUubGFuZ3VhZ2VzLnB1cHBldC5zdHJpbmcuaW5zaWRlW1wiZG91YmxlLXF1b3RlZFwiXS5pbnNpZGUuaW50ZXJwb2xhdGlvbj10fShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicHVwcGV0XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigzNCk7ZnVuY3Rpb24gbyhlKXtlLnJlZ2lzdGVyKHIpLGZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLnB1cmU9e2NvbW1lbnQ6W3twYXR0ZXJuOi8oXnxbXlxcXFxdKVxcL1xcKltcXHNcXFNdKj9cXCpcXC8vLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXnxbXlxcXFw6XSlcXC9cXC8uKi8sbG9va2JlaGluZDohMH0sLyMhLisvXSxcImlubGluZS1sYW5nXCI6e3BhdHRlcm46LyU8W1xcc1xcU10rPyU+LyxncmVlZHk6ITAsaW5zaWRlOntsYW5nOntwYXR0ZXJuOi8oXiU8ICopLVxcKi0uKz8tXFwqLS8sbG9va2JlaGluZDohMCxhbGlhczpcImNvbW1lbnRcIn0sZGVsaW1pdGVyOntwYXR0ZXJuOi9eJTwuKnwlPiQvLGFsaWFzOlwicHVuY3R1YXRpb25cIn19fSxzdHJpbmc6e3BhdHRlcm46L1wiKD86XFxcXC58W15cIlxcXFxcXHJcXG5dKSpcIi8sZ3JlZWR5OiEwfSxudW1iZXI6e3BhdHRlcm46LygoPzpcXC5cXC4pPykoPzpcXGIoPzppbmZ8bmFuKVxcYnxcXGIweFtcXGRhLWZdK3woPzpcXGIoPzowYik/XFxkKyg/OlxcLlxcZCk/fFxcQlxcLlxcZClcXGQqKD86ZVsrLV0/XFxkKyk/TD8pL2ksbG9va2JlaGluZDohMH0sa2V5d29yZDovXFxiKD86YW5zfGJyZWFrfGJ0fGNhc2V8Y2F0Y2h8Y2R8Y2xlYXJ8Y29uc3R8ZGVmfGRlbHxkdW1wfGVsc2V8ZW5kfGV4aXR8ZXh0ZXJufGZhbHNlfGZvcmNlfGhlbHB8aWZ8aW5maXhbbHJdP3xpbnRlcmZhY2V8bGV0fGxzfG1lbXxuYW1lc3BhY2V8bm9uZml4fE5VTEx8b2Z8b3RoZXJ3aXNlfG91dGZpeHxvdmVycmlkZXxwb3N0Zml4fHByZWZpeHxwcml2YXRlfHB1YmxpY3xwd2R8cXVpdHxydW58c2F2ZXxzaG93fHN0YXRzfHRoZW58dGhyb3d8dHJhY2V8dHJ1ZXx0eXBlfHVuZGVycmlkZXx1c2luZ3x3aGVufHdpdGgpXFxiLyxmdW5jdGlvbjovXFxiKD86YWJzfGFkZF8oPzooPzpmdW5kZWZ8aW50ZXJmYWNlfG1hY2RlZnx0eXBlZGVmKSg/Ol9hdCk/fGFkZHJ8Y29uc3RkZWZ8dmFyZGVmKXxhbGx8YW55fGFwcGxwP3xhcml0eXxiaWdpbnRwP3xibG9iKD86X2NyY3xfc2l6ZXxwKT98Ym9vbHA/fGJ5dGVfKD86bWF0cml4fHBvaW50ZXIpfGJ5dGVfYz9zdHJpbmcoPzpfcG9pbnRlcik/fGNhbGxvY3xjYXR8Y2F0bWFwfGNlaWx8Y2hhcltwc10/fGNoZWNrX3B0cnRhZ3xjaHJ8Y2xlYXJfc2VudHJ5fGNsZWFyc3ltfGNsb3N1cmVwP3xjbWF0cml4cD98Y29scz98Y29sY2F0KD86bWFwKT98Y29sbWFwfGNvbHJldnxjb2x2ZWN0b3IoPzpwfHNlcSk/fGNvbXBsZXgoPzpfZmxvYXRfKD86bWF0cml4fHBvaW50ZXIpfF9tYXRyaXgoPzpfdmlldyk/fF9wb2ludGVyfHApP3xjb25qfGNvb2tlZHA/fGNzdHxjc3RyaW5nKD86Xyg/OmR1cHxsaXN0fHZlY3RvcikpP3xjdXJyeTM/fGN5Y2xlbj98ZGVsXyg/OmNvbnN0ZGVmfGZ1bmRlZnxpbnRlcmZhY2V8bWFjZGVmfHR5cGVkZWZ8dmFyZGVmKXxkZWxldGV8ZGlhZyg/Om1hdCk/fGRpbXxkbWF0cml4cD98ZG98ZG91YmxlKD86X21hdHJpeCg/Ol92aWV3KT98X3BvaW50ZXJ8cCk/fGRvd2l0aDM/fGRyb3B8ZHJvcHdoaWxlfGV2YWwoPzpjbWQpP3xleGFjdHB8ZmlsdGVyfGZpeHxmaXhpdHl8ZmxpcHxmbG9hdCg/Ol9tYXRyaXh8X3BvaW50ZXIpfGZsb29yfGZvbGRbbHJdMT98ZnJhY3xmcmVlfGZ1bnA/fGZ1bmN0aW9ucD98Z2NkfGdldCg/Ol8oPzpieXRlfGNvbnN0ZGVmfGRvdWJsZXxmbG9hdHxmdW5kZWZ8aW50KD86NjQpP3xpbnRlcmZhY2UoPzpfdHlwZWRlZik/fGxvbmd8bWFjZGVmfHBvaW50ZXJ8cHRydGFnfHNob3J0fHNlbnRyeXxzdHJpbmd8dHlwZWRlZnx2YXJkZWYpKT98Z2xvYnN5bXxoYXNofGhlYWR8aWR8aW18aW1hdHJpeHA/fGluZGV4fGluZXhhY3RwfGluZnB8aW5pdHxpbnNlcnR8aW50KD86X21hdHJpeCg/Ol92aWV3KT98X3BvaW50ZXJ8cCk/fGludDY0Xyg/Om1hdHJpeHxwb2ludGVyKXxpbnRlZ2VycD98aXRlcmF0ZW4/fGl0ZXJ3aGlsZXxqb2lufGtleXM/fGxhbWJkYXA/fGxhc3QoPzplcnIoPzpwb3MpPyk/fGxjZHxsaXN0WzJwXT98bGlzdG1hcHxtYWtlX3B0cnRhZ3xtYWxsb2N8bWFwfG1hdGNhdHxtYXRyaXhwP3xtYXh8bWVtYmVyfG1pbnxuYW5wfG5hcmdzfG5tYXRyaXhwP3xudWxsfG51bWJlcnA/fG9yZHxwYWNrKD86ZWQpP3xwb2ludGVyKD86X2Nhc3R8X3RhZ3xfdHlwZXxwKT98cG93fHByZWR8cHRydGFnfHB1dCg/Ol8oPzpieXRlfGRvdWJsZXxmbG9hdHxpbnQoPzo2NCk/fGxvbmd8cG9pbnRlcnxzaG9ydHxzdHJpbmcpKT98cmF0aW9uYWxwP3xyZXxyZWFscD98cmVhbGxvY3xyZWNvcmRwP3xyZWRpbXxyZWR1Y2UoPzpfd2l0aCk/fHJlZnA/fHJlcGVhdG4/fHJldmVyc2V8cmxpc3RwP3xyb3VuZHxyb3dzP3xyb3djYXQoPzptYXApP3xyb3dtYXB8cm93cmV2fHJvd3ZlY3Rvcig/OnB8c2VxKT98c2FtZXxzY2FuW2xyXTE/fHNlbnRyeXxzZ258c2hvcnRfKD86bWF0cml4fHBvaW50ZXIpfHNsaWNlfHNtYXRyaXhwP3xzb3J0fHNwbGl0fHN0cnxzdHJjYXR8c3RyZWFtfHN0cmlkZXxzdHJpbmcoPzpfKD86ZHVwfGxpc3R8dmVjdG9yKXxwKT98c3ViZGlhZyg/Om1hdCk/fHN1Ym1hdHxzdWJzZXEyP3xzdWJzdHJ8c3VjY3xzdXBkaWFnKD86bWF0KT98c3ltYm9scD98dGFpbHx0YWtlfHRha2V3aGlsZXx0aHVua3A/fHRyYW5zcG9zZXx0cnVuY3x0dXBsZXA/fHR5cGVwfHVieXRlfHVpbnQoPzo2NCk/fHVsb25nfHVuY3VycnkzP3x1bnJlZnx1bnppcDM/fHVwZGF0ZXx1c2hvcnR8dmFscz98dmFycD98dmVjdG9yKD86cHxzZXEpP3x2b2lkfHppcDM/fHppcHdpdGgzPylcXGIvLHNwZWNpYWw6e3BhdHRlcm46L1xcYl9fW2Etel0rX19cXGIvaSxhbGlhczpcImJ1aWx0aW5cIn0sb3BlcmF0b3I6Lyg/PVxcYl98W15fXSlbIVwiIyQlJicqKyxcXC0uXFwvOjw9Pj9AXFxcXF5fYHx+XFx1MDBhMS1cXHUwMGJmXFx1MDBkNy1cXHUwMGY3XFx1MjBkMC1cXHUyYmZmXSt8XFxiKD86YW5kfGRpdnxtb2R8bm90fG9yKVxcYi8scHVuY3R1YXRpb246L1soKXt9XFxbXFxdOyx8XS99O1tcImNcIix7bGFuZzpcImMrK1wiLGFsaWFzOlwiY3BwXCJ9LFwiZm9ydHJhblwiLFwiYXRzXCIsXCJkc3BcIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj10O2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0JiYobj10LmFsaWFzLHQ9dC5sYW5nKSxlLmxhbmd1YWdlc1tuXSl7dmFyIHI9e307cltcImlubGluZS1sYW5nLVwiK25dPXtwYXR0ZXJuOlJlZ0V4cChcIiU8ICotXFxcXCotICp7bGFuZ31cXFxcZCogKi1cXFxcKi1bXFxcXHNcXFxcU10rPyU+XCIucmVwbGFjZShcIntsYW5nfVwiLHQucmVwbGFjZSgvKFsuKyo/XFwvXFxcXCgpe31cXFtcXF1dKS9nLFwiXFxcXCQxXCIpKSxcImlcIiksaW5zaWRlOmUudXRpbC5jbG9uZShlLmxhbmd1YWdlcy5wdXJlW1wiaW5saW5lLWxhbmdcIl0uaW5zaWRlKX0scltcImlubGluZS1sYW5nLVwiK25dLmluc2lkZS5yZXN0PWUudXRpbC5jbG9uZShlLmxhbmd1YWdlc1tuXSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwicHVyZVwiLFwiaW5saW5lLWxhbmdcIixyKX19KSxlLmxhbmd1YWdlcy5jJiYoZS5sYW5ndWFnZXMucHVyZVtcImlubGluZS1sYW5nXCJdLmluc2lkZS5yZXN0PWUudXRpbC5jbG9uZShlLmxhbmd1YWdlcy5jKSl9KGUpfWUuZXhwb3J0cz1vLG8uZGlzcGxheU5hbWU9XCJwdXJlXCIsby5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5weXRob249e2NvbW1lbnQ6e3BhdHRlcm46LyhefFteXFxcXF0pIy4qLyxsb29rYmVoaW5kOiEwfSxcInRyaXBsZS1xdW90ZWQtc3RyaW5nXCI6e3BhdHRlcm46LyhcIlwiXCJ8JycnKVtcXHNcXFNdKz9cXDEvLGdyZWVkeTohMCxhbGlhczpcInN0cmluZ1wifSxzdHJpbmc6e3BhdHRlcm46LyhcInwnKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLGdyZWVkeTohMH0sZnVuY3Rpb246e3BhdHRlcm46LygoPzpefFxccylkZWZbIFxcdF0rKVthLXpBLVpfXVxcdyooPz1cXHMqXFwoKS9nLGxvb2tiZWhpbmQ6ITB9LFwiY2xhc3MtbmFtZVwiOntwYXR0ZXJuOi8oXFxiY2xhc3NcXHMrKVxcdysvaSxsb29rYmVoaW5kOiEwfSxrZXl3b3JkOi9cXGIoPzphc3xhc3NlcnR8YXN5bmN8YXdhaXR8YnJlYWt8Y2xhc3N8Y29udGludWV8ZGVmfGRlbHxlbGlmfGVsc2V8ZXhjZXB0fGV4ZWN8ZmluYWxseXxmb3J8ZnJvbXxnbG9iYWx8aWZ8aW1wb3J0fGlufGlzfGxhbWJkYXxub25sb2NhbHxwYXNzfHByaW50fHJhaXNlfHJldHVybnx0cnl8d2hpbGV8d2l0aHx5aWVsZClcXGIvLGJ1aWx0aW46L1xcYig/Ol9faW1wb3J0X198YWJzfGFsbHxhbnl8YXBwbHl8YXNjaWl8YmFzZXN0cmluZ3xiaW58Ym9vbHxidWZmZXJ8Ynl0ZWFycmF5fGJ5dGVzfGNhbGxhYmxlfGNocnxjbGFzc21ldGhvZHxjbXB8Y29lcmNlfGNvbXBpbGV8Y29tcGxleHxkZWxhdHRyfGRpY3R8ZGlyfGRpdm1vZHxlbnVtZXJhdGV8ZXZhbHxleGVjZmlsZXxmaWxlfGZpbHRlcnxmbG9hdHxmb3JtYXR8ZnJvemVuc2V0fGdldGF0dHJ8Z2xvYmFsc3xoYXNhdHRyfGhhc2h8aGVscHxoZXh8aWR8aW5wdXR8aW50fGludGVybnxpc2luc3RhbmNlfGlzc3ViY2xhc3N8aXRlcnxsZW58bGlzdHxsb2NhbHN8bG9uZ3xtYXB8bWF4fG1lbW9yeXZpZXd8bWlufG5leHR8b2JqZWN0fG9jdHxvcGVufG9yZHxwb3d8cHJvcGVydHl8cmFuZ2V8cmF3X2lucHV0fHJlZHVjZXxyZWxvYWR8cmVwcnxyZXZlcnNlZHxyb3VuZHxzZXR8c2V0YXR0cnxzbGljZXxzb3J0ZWR8c3RhdGljbWV0aG9kfHN0cnxzdW18c3VwZXJ8dHVwbGV8dHlwZXx1bmljaHJ8dW5pY29kZXx2YXJzfHhyYW5nZXx6aXApXFxiLyxib29sZWFuOi9cXGIoPzpUcnVlfEZhbHNlfE5vbmUpXFxiLyxudW1iZXI6Lyg/OlxcYig/PVxcZCl8XFxCKD89XFwuKSkoPzowW2JvXSk/KD86KD86XFxkfDB4W1xcZGEtZl0pW1xcZGEtZl0qXFwuP1xcZCp8XFwuXFxkKykoPzplWystXT9cXGQrKT9qP1xcYi9pLG9wZXJhdG9yOi9bLSslPV09P3whPXxcXCpcXCo/PT98XFwvXFwvPz0/fDxbPD0+XT98Pls9Pl0/fFsmfF5+XXxcXGIoPzpvcnxhbmR8bm90KVxcYi8scHVuY3R1YXRpb246L1t7fVtcXF07KCksLjpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInB5dGhvblwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucT17c3RyaW5nOi9cIig/OlxcXFwufFteXCJcXFxcXFxyXFxuXSkqXCIvLGNvbW1lbnQ6W3twYXR0ZXJuOi8oW1xcdCApXFxdfV0pXFwvLiovLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfSx7cGF0dGVybjovKF58XFxyP1xcbnxcXHIpXFwvW1xcdCBdKig/Oig/Olxccj9cXG58XFxyKSg/Oi4qKD86XFxyP1xcbnxcXHIpKSo/KD86XFxcXCg/PVtcXHQgXSooPzpcXHI/XFxufFxccikpfCQpfFxcUy4qKS8sbG9va2JlaGluZDohMCxncmVlZHk6ITB9LHtwYXR0ZXJuOi9eXFxcXFtcXHQgXSooPzpcXHI/XFxufFxccilbXFxzXFxTXSsvbSxncmVlZHk6ITB9LHtwYXR0ZXJuOi9eIyEuKy9tLGdyZWVkeTohMH1dLHN5bWJvbDovYCg/OjpcXFMrfFtcXHcuXSopLyxkYXRldGltZTp7cGF0dGVybjovME5bbWR6dXZ0XXwwV1tkdHpdfFxcZHs0fVxcLlxcZFxcZCg/Om18XFwuXFxkXFxkKD86VCg/OlxcZFxcZCg/OjpcXGRcXGQoPzo6XFxkXFxkKD86Wy46XVxcZFxcZFxcZCk/KT8pPyk/KT9bZHpdPyl8XFxkXFxkOlxcZFxcZCg/OjpcXGRcXGQoPzpbLjpdXFxkXFxkXFxkKT8pP1t1dnRdPy8sYWxpYXM6XCJudW1iZXJcIn0sbnVtYmVyOi9cXGIoPyFbMDFdOikoPzowW3duXXwwV1toal0/fDBOW2hqZV0/fDB4W1xcZGEtZkEtRl0rfFxcZCtcXC4/XFxkKig/OmVbKy1dP1xcZCspP1toamZlYl0/KS8sa2V5d29yZDovXFxcXFxcdytcXGJ8XFxiKD86YWJzfGFjb3N8YWowP3xhbGx8YW5kfGFueXxhc2N8YXNpbnxhc29mfGF0YW58YXR0cnxhdmdzP3xiaW5yP3xieXxjZWlsaW5nfGNvbHN8Y29yfGNvc3xjb3VudHxjb3Z8Y3Jvc3N8Y3N2fGN1dHxkZWxldGV8ZGVsdGFzfGRlc2N8ZGV2fGRpZmZlcnxkaXN0aW5jdHxkaXZ8ZG98ZHNhdmV8ZWp8ZW5saXN0fGV2YWx8ZXhjZXB0fGV4ZWN8ZXhpdHxleHB8ZmJ5fGZpbGxzfGZpcnN0fGZrZXlzfGZsaXB8Zmxvb3J8ZnJvbXxnZXR8Z2V0ZW52fGdyb3VwfGd0aW1lfGhjbG9zZXxoY291bnR8aGRlbHxob3Blbnxoc3ltfGlhc2N8aWRlbnRpdHl8aWRlc2N8aWZ8aWp8aW58aW5zZXJ0fGludGVyfGludnxrZXlzP3xsYXN0fGxpa2V8bGlzdHxsamY/fGxvYWR8bG9nfGxvd2VyfGxzcXxsdGltZXxsdHJpbXxtYXZnfG1heHM/fG1jb3VudHxtZDV8bWRldnxtZWR8bWV0YXxtaW5zP3xtbWF4fG1taW58bW11fG1vZHxtc3VtfG5lZ3xuZXh0fG5vdHxudWxsfG9yfG92ZXJ8cGFyc2V8cGVhY2h8cGp8cGxpc3R8cHJkcz98cHJldnxwcmlvcnxyYW5kfHJhbmt8cmF0aW9zfHJhemV8cmVhZDB8cmVhZDF8cmVjaXByb2NhbHxyZXZhbHxyZXZlcnNlfHJsb2FkfHJvdGF0ZXxyc2F2ZXxydHJpbXxzYXZlfHNjYW58c2NvdnxzZGV2fHNlbGVjdHxzZXR8c2V0ZW52fHNob3d8c2lnbnVtfHNpbnxzcXJ0fHNzcj98c3RyaW5nfHN1Ymxpc3R8c3Vtcz98c3Z8c3ZhcnxzeXN0ZW18dGFibGVzfHRhbnx0aWx8dHJpbXx0eGZ8dHlwZXx1anx1bmdyb3VwfHVuaW9ufHVwZGF0ZXx1cHBlcnx1cHNlcnR8dmFsdWV8dmFyfHZpZXdzP3x2c3x3YXZnfHdoZXJlfHdoaWxlfHdpdGhpbnx3ajE/fHdzdW18d3d8eGFzY3x4YmFyfHhjb2xzP3x4ZGVzY3x4ZXhwfHhncm91cHx4a2V5fHhsb2d8eHByZXZ8eHJhbmspXFxiLyxhZHZlcmI6e3BhdHRlcm46L1snXFwvXFxcXF06P3xcXGJlYWNoXFxiLyxhbGlhczpcImZ1bmN0aW9uXCJ9LHZlcmI6e3BhdHRlcm46Lyg/OlxcQlxcLlxcQnxcXGJbMDFdOnw8Wz0+XT98Pj0/fFs6K1xcLSolLCE/X349fCQmI0BeXSk6Py8sYWxpYXM6XCJvcGVyYXRvclwifSxwdW5jdHVhdGlvbjovWygpe31cXFtcXF07Ll0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucW9yZT1lLmxhbmd1YWdlcy5leHRlbmQoXCJjbGlrZVwiLHtjb21tZW50OntwYXR0ZXJuOi8oXnxbXlxcXFxdKSg/OlxcL1xcKltcXHNcXFNdKj9cXCpcXC98KD86XFwvXFwvfCMpLiopLyxsb29rYmVoaW5kOiEwfSxzdHJpbmc6e3BhdHRlcm46LyhcInwnKShcXFxcW1xcc1xcU118KD8hXFwxKVteXFxcXF0pKlxcMS8sZ3JlZWR5OiEwfSx2YXJpYWJsZTovXFwkKD8hXFxkKVxcdytcXGIvLGtleXdvcmQ6L1xcYig/OmFic3RyYWN0fGFueXxhc3NlcnR8YmluYXJ5fGJvb2x8Ym9vbGVhbnxicmVha3xieXRlfGNhc2V8Y2F0Y2h8Y2hhcnxjbGFzc3xjb2RlfGNvbnN0fGNvbnRpbnVlfGRhdGF8ZGVmYXVsdHxkb3xkb3VibGV8ZWxzZXxlbnVtfGV4dGVuZHN8ZmluYWx8ZmluYWxseXxmbG9hdHxmb3J8Z290b3xoYXNofGlmfGltcGxlbWVudHN8aW1wb3J0fGluaGVyaXRzfGluc3RhbmNlb2Z8aW50fGludGVyZmFjZXxsb25nfG15fG5hdGl2ZXxuZXd8bm90aGluZ3xudWxsfG9iamVjdHxvdXJ8b3dufHByaXZhdGV8cmVmZXJlbmNlfHJldGhyb3d8cmV0dXJufHNob3J0fHNvZnQoPzppbnR8ZmxvYXR8bnVtYmVyfGJvb2x8c3RyaW5nfGRhdGV8bGlzdCl8c3RhdGljfHN0cmljdGZwfHN0cmluZ3xzdWJ8c3VwZXJ8c3dpdGNofHN5bmNocm9uaXplZHx0aGlzfHRocm93fHRocm93c3x0cmFuc2llbnR8dHJ5fHZvaWR8dm9sYXRpbGV8d2hpbGUpXFxiLyxudW1iZXI6L1xcYig/OjBiWzAxXSt8MHhbXFxkYS1mXSpcXC4/W1xcZGEtZnBcXC1dK3xcXGQqXFwuP1xcZCtlP1xcZCpbZGZdfFxcZCpcXC4/XFxkKylcXGIvaSxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi9pLG9wZXJhdG9yOntwYXR0ZXJuOi8oXnxbXi5dKSg/OlxcK1srPV0/fC1bLT1dP3xbIT1dKD86PT0/fH4pP3w+Pj89P3w8KD86PT4/fDw9Pyk/fCZbJj1dP3xcXHxbfD1dP3xbKlxcLyVeXT0/fFt+P10pLyxsb29rYmVoaW5kOiEwfSxmdW5jdGlvbjovXFwkP1xcYig/IVxcZClcXHcrKD89XFwoKS99KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicW9yZVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucj17Y29tbWVudDovIy4qLyxzdHJpbmc6e3BhdHRlcm46LyhbJ1wiXSkoPzpcXFxcLnwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITB9LFwicGVyY2VudC1vcGVyYXRvclwiOntwYXR0ZXJuOi8lW14lXFxzXSolLyxhbGlhczpcIm9wZXJhdG9yXCJ9LGJvb2xlYW46L1xcYig/OlRSVUV8RkFMU0UpXFxiLyxlbGxpcHNpczovXFwuXFwuKD86XFwufFxcZCspLyxudW1iZXI6Wy9cXGIoPzpOYU58SW5mKVxcYi8sLyg/OlxcYjB4W1xcZEEtRmEtZl0rKD86XFwuXFxkKik/fFxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OltFZVBwXVsrLV0/XFxkKyk/W2lMXT8vXSxrZXl3b3JkOi9cXGIoPzppZnxlbHNlfHJlcGVhdHx3aGlsZXxmdW5jdGlvbnxmb3J8aW58bmV4dHxicmVha3xOVUxMfE5BfE5BX2ludGVnZXJffE5BX3JlYWxffE5BX2NvbXBsZXhffE5BX2NoYXJhY3Rlcl8pXFxiLyxvcGVyYXRvcjovLT4/Pj98PCg/Oj18PD8tKT98Wz49IV09P3w6Oj98JiY/fFxcfFxcfD98WysqXFwvXiRAfl0vLHB1bmN0dWF0aW9uOi9bKCl7fVxcW1xcXSw7XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJyXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5yZWFzb249ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7Y29tbWVudDp7cGF0dGVybjovKF58W15cXFxcXSlcXC9cXCpbXFxzXFxTXSo/XFwqXFwvLyxsb29rYmVoaW5kOiEwfSxzdHJpbmc6e3BhdHRlcm46L1wiKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8W15cXFxcXFxyXFxuXCJdKSpcIi8sZ3JlZWR5OiEwfSxcImNsYXNzLW5hbWVcIjovXFxiW0EtWl1cXHcqLyxrZXl3b3JkOi9cXGIoPzphbmR8YXN8YXNzZXJ0fGJlZ2lufGNsYXNzfGNvbnN0cmFpbnR8ZG98ZG9uZXxkb3dudG98ZWxzZXxlbmR8ZXhjZXB0aW9ufGV4dGVybmFsfGZvcnxmdW58ZnVuY3Rpb258ZnVuY3RvcnxpZnxpbnxpbmNsdWRlfGluaGVyaXR8aW5pdGlhbGl6ZXJ8bGF6eXxsZXR8bWV0aG9kfG1vZHVsZXxtdXRhYmxlfG5ld3xub25yZWN8b2JqZWN0fG9mfG9wZW58b3J8cHJpdmF0ZXxyZWN8c2lnfHN0cnVjdHxzd2l0Y2h8dGhlbnx0b3x0cnl8dHlwZXx2YWx8dmlydHVhbHx3aGVufHdoaWxlfHdpdGgpXFxiLyxvcGVyYXRvcjovXFwuezN9fDpbOj1dfD0oPzo9PT98Pik/fDw9P3w+PT98W3xePycjIX5gXXxbK1xcLSpcXC9dXFwuP3xcXGIoPzptb2R8bGFuZHxsb3J8bHhvcnxsc2x8bHNyfGFzcilcXGIvfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwicmVhc29uXCIsXCJjbGFzcy1uYW1lXCIse2NoYXJhY3Rlcjp7cGF0dGVybjovJyg/OlxcXFx4W1xcZGEtZl17Mn18XFxcXG9bMC0zXVswLTddWzAtN118XFxcXFxcZHszfXxcXFxcLnxbXidcXFxcXFxyXFxuXSknLyxhbGlhczpcInN0cmluZ1wifSxjb25zdHJ1Y3Rvcjp7cGF0dGVybjovXFxiW0EtWl1cXHcqXFxiKD8hXFxzKlxcLikvLGFsaWFzOlwidmFyaWFibGVcIn0sbGFiZWw6e3BhdHRlcm46L1xcYlthLXpdXFx3Kig/PTo6KS8sYWxpYXM6XCJzeW1ib2xcIn19KSxkZWxldGUgZS5sYW5ndWFnZXMucmVhc29uLmZ1bmN0aW9ufWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJyZWFzb25cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnJlbnB5PXtjb21tZW50OntwYXR0ZXJuOi8oXnxbXlxcXFxdKSMuKy8sbG9va2JlaGluZDohMH0sc3RyaW5nOntwYXR0ZXJuOi8oXCJcIlwifCcnJylbXFxzXFxTXSs/XFwxfChcInwnKSg/OlxcXFwufCg/IVxcMilbXlxcXFxcXHJcXG5dKSpcXDJ8KD86XiM/KD86KD86WzAtOWEtZkEtRl17Mn0pezN9fCg/OlswLTlhLWZBLUZdKXszfSkkKS9tLGdyZWVkeTohMH0sZnVuY3Rpb246L1thLXpfXVxcdyooPz1cXCgpL2kscHJvcGVydHk6L1xcYig/Omluc2Vuc2l0aXZlfGlkbGV8aG92ZXJ8c2VsZWN0ZWRfaWRsZXxzZWxlY3RlZF9ob3ZlcnxiYWNrZ3JvdW5kfHBvc2l0aW9ufGFsdHx4cG9zfHlwb3N8cG9zfHhhbmNob3J8eWFuY2hvcnxhbmNob3J8eGFsaWdufHlhbGlnbnxhbGlnbnx4Y2VudGVyfHljZW50ZXJ8eG9mc3NldHx5b2Zmc2V0fHltYXhpbXVtfG1heGltdW18eG1heGltdW18eG1pbmltdW18eW1pbmltdW18bWluaW11bXx4c2l6ZXx5c2l6ZXh5c2l6ZXx4ZmlsbHx5ZmlsbHxhcmVhfGFudGlhbGlhc3xibGFja19jb2xvcnxib2xkfGNhcmV0fGNvbG9yfGZpcnN0X2luZGVudHxmb250fHNpemV8aXRhbGljfGp1c3RpZnl8a2VybmluZ3xsYW5ndWFnZXxsYXlvdXR8bGluZV9sZWFkaW5nfGxpbmVfb3ZlcmxhcF9zcGxpdHxsaW5lX3NwYWNpbmd8bWluX3dpZHRofG5ld2xpbmVfaW5kZW50fG91dGxpbmVzfHJlc3RfaW5kZW50fHJ1Ynlfc3R5bGV8c2xvd19jcHN8c2xvd19jcHNfbXVsdGlwbGllcnxzdHJpa2V0aHJvdWdofHRleHRfYWxpZ258dW5kZXJsaW5lfGh5cGVybGlua19mdW5jdGlvbnN8dmVydGljYWx8aGludGluZ3xmb3JlZ3JvdW5kfGxlZnRfbWFyZ2lufHhtYXJnaW58dG9wX21hcmdpbnxib3R0b21fbWFyZ2lufHltYXJnaW58bGVmdF9wYWRkaW5nfHJpZ2h0X3BhZGRpbmd8eHBhZGRpbmd8dG9wX3BhZGRpbmd8Ym90dG9tX3BhZGRpbmd8eXBhZGRpbmd8c2l6ZV9ncm91cHxjaGlsZHxob3Zlcl9zb3VuZHxhY3RpdmF0ZV9zb3VuZHxtb3VzZXxmb2N1c19tYXNrfGtleWJvYXJkX2ZvY3VzfGJhcl92ZXJ0aWNhbHxiYXJfaW52ZXJ0fGJhcl9yZXNpemluZ3xsZWZ0X2d1dHRlcnxyaWdodF9ndXR0ZXJ8dG9wX2d1dHRlcnxib3R0b21fZ3V0dGVyfGxlZnRfYmFyfHJpZ2h0X2Jhcnx0b3BfYmFyfGJvdHRvbV9iYXJ8dGh1bWJ8dGh1bWJfc2hhZG93fHRodW1iX29mZnNldHx1bnNjcm9sbGFibGV8c3BhY2luZ3xmaXJzdF9zcGFjaW5nfGJveF9yZXZlcnNlfGJveF93cmFwfG9yZGVyX3JldmVyc2V8Zml0X2ZpcnN0fHlzaXplfHRodW1ibmFpbF93aWR0aHx0aHVtYm5haWxfaGVpZ2h0fGhlbHB8dGV4dF95cG9zfHRleHRfeHBvc3xpZGxlX2NvbG9yfGhvdmVyX2NvbG9yfHNlbGVjdGVkX2lkbGVfY29sb3J8c2VsZWN0ZWRfaG92ZXJfY29sb3J8aW5zZW5zaXRpdmVfY29sb3J8YWxwaGF8aW5zZW5zaXRpdmVfYmFja2dyb3VuZHxob3Zlcl9iYWNrZ3JvdW5kfHpvcmRlcnx2YWx1ZXx3aWR0aHx4YWRqdXN0bWVudHx4YW5jaG9yYXJvdW5kfHhhcm91bmR8eGluaXRpYWx8eG9mZnNldHx4em9vbXx5YWRqdXN0bWVudHx5YW5jaG9yYXJvdW5kfHlhcm91bmR8eWluaXRpYWx8eXpvb218em9vbXxncm91bmR8aGVpZ2h0fHRleHRfc3R5bGV8dGV4dF95X2Z1ZGdlfHNlbGVjdGVkX2luc2Vuc2l0aXZlfGhhc19zb3VuZHxoYXNfbXVzaWN8aGFzX3ZvaWNlfGZvY3VzfGhvdmVyZWR8aW1hZ2Vfc3R5bGV8bGVuZ3RofG1pbndpZHRofG1vdXNld2hlZWx8b2Zmc2V0fHByZWZpeHxyYWRpdXN8cmFuZ2V8cmlnaHRfbWFyZ2lufHJvdGF0ZXxyb3RhdGVfcGFkfGRldmVsb3BlcnxzY3JlZW5fd2lkdGh8c2NyZWVuX2hlaWdodHx3aW5kb3dfdGl0bGV8bmFtZXx2ZXJzaW9ufHdpbmRvd3NfaWNvbnxkZWZhdWx0X2Z1bGxzY3JlZW58ZGVmYXVsdF90ZXh0X2Nwc3xkZWZhdWx0X2FmbV90aW1lfG1haW5fbWVudV9tdXNpY3xzYW1wbGVfc291bmR8ZW50ZXJfc291bmR8ZXhpdF9zb3VuZHxzYXZlX2RpcmVjdG9yeXxlbnRlcl90cmFuc2l0aW9ufGV4aXRfdHJhbnNpdGlvbnxpbnRyYV90cmFuc2l0aW9ufG1haW5fZ2FtZV90cmFuc2l0aW9ufGdhbWVfbWFpbl90cmFuc2l0aW9ufGVuZF9zcGxhc2hfdHJhbnNpdGlvbnxlbmRfZ2FtZV90cmFuc2l0aW9ufGFmdGVyX2xvYWRfdHJhbnNpdGlvbnx3aW5kb3dfc2hvd190cmFuc2l0aW9ufHdpbmRvd19oaWRlX3RyYW5zaXRpb258YWR2X252bF90cmFuc2l0aW9ufG52bF9hZHZfdHJhbnNpdGlvbnxlbnRlcl95ZXNub190cmFuc2l0aW9ufGV4aXRfeWVzbm9fdHJhbnNpdGlvbnxlbnRlcl9yZXBsYXlfdHJhbnNpdGlvbnxleGl0X3JlcGxheV90cmFuc2l0aW9ufHNheV9hdHRyaWJ1dGVfdHJhbnNpdGlvbnxkaXJlY3RvcnlfbmFtZXxleGVjdXRhYmxlX25hbWV8aW5jbHVkZV91cGRhdGV8d2luZG93X2ljb258bW9kYWx8Z29vZ2xlX3BsYXlfa2V5fGdvb2dsZV9wbGF5X3NhbHR8ZHJhZ19uYW1lfGRyYWdfaGFuZGxlfGRyYWdnYWJsZXxkcmFnZ2VkfGRyb3BwYWJsZXxkcm9wcGVkfG5hcnJhdG9yX21lbnV8YWN0aW9ufGRlZmF1bHRfYWZtX2VuYWJsZXx2ZXJzaW9uX25hbWV8dmVyc2lvbl90dXBsZXxpbnNpZGV8ZmFkZW91dHxmYWRlaW58bGF5ZXJzfGxheWVyX2NsaXBwaW5nfGxpbmVhcnxzY3JvbGxiYXJzfHNpZGVfeHBvc3xzaWRlX3lwb3N8c2lkZV9zcGFjaW5nfGVkZ2VzY3JvbGx8ZHJhZ19qb2luZWR8ZHJhZ19yYWlzZXxkcm9wX3NoYWRvd3xkcm9wX3NoYWRvd19jb2xvcnxzdWJwaXhlbHxlYXNlaW58ZWFzZW91dHx0aW1lfGNyb3B8YXV0b3x1cGRhdGV8Z2V0X2luc3RhbGxlZF9wYWNrYWdlc3xjYW5fdXBkYXRlfFVwZGF0ZVZlcnNpb258VXBkYXRlfG92ZXJsYXlfZnVuY3Rpb25zfHRyYW5zbGF0aW9uc3x3aW5kb3dfbGVmdF9wYWRkaW5nfHNob3dfc2lkZV9pbWFnZXxzaG93X3R3b193aW5kb3cpXFxiLyx0YWc6L1xcYig/OmxhYmVsfGltYWdlfG1lbnV8W2h2XWJveHxmcmFtZXx0ZXh0fGltYWdlbWFwfGltYWdlYnV0dG9ufGJhcnx2YmFyfHNjcmVlbnx0ZXh0YnV0dG9ufGJ1dHRvc2NyZWVubnxmaXhlZHxncmlkfGlucHV0fGtleXxtb3VzZWFyZWF8c2lkZXx0aW1lcnx2aWV3cG9ydHx3aW5kb3d8aG90c3BvdHxob3RiYXJ8c2VsZnxidXR0b258ZHJhZ3xkcmFnZ3JvdXB8dGFnfG1tX21lbnVfZnJhbWV8bnZsfGJsb2NrfHBhcmFsbGVsKVxcYnxcXCQvLGtleXdvcmQ6L1xcYig/OmFzfGFzc2VydHxicmVha3xjbGFzc3xjb250aW51ZXxkZWZ8ZGVsfGVsaWZ8ZWxzZXxleGNlcHR8ZXhlY3xmaW5hbGx5fGZvcnxmcm9tfGdsb2JhbHxpZnxpbXBvcnR8aW58aXN8bGFtYmRhfHBhc3N8cHJpbnR8cmFpc2V8cmV0dXJufHRyeXx3aGlsZXx5aWVsZHxhZGp1c3RtZW50fGFsaWduYXJvdW5kfGFsbG93fGFuZ2xlfGFyb3VuZHxib3hfbGF5b3V0fGNhY2hlfGNoYW5nZWR8Y2hpbGRfc2l6ZXxjbGlja2VkfGNsaXBwaW5nfGNvcm5lcjF8Y29ybmVyMnxkZWZhdWx0fGRlbGF5fGV4Y2x1ZGV8c2NvcGV8c2xvd3xzbG93X2Fib3J0YWJsZXxzbG93X2RvbmV8c291bmR8c3R5bGVfZ3JvdXB8c3Vic3RpdHV0ZXxzdWZmaXh8dHJhbnNmb3JtX2FuY2hvcnx0cmFuc3Bvc2V8dW5ob3ZlcmVkfGNvbmZpZ3x0aGVtZXxtbV9yb290fGdtX3Jvb3R8cm91bmRlZF93aW5kb3d8YnVpbGR8ZGlzYWJsZWRfdGV4dHxkaXNhYmxlZHx3aWRnZXRfc2VsZWN0ZWR8d2lkZ2V0X3RleHR8d2lkZ2V0X2hvdmVyfHdpZGdldHx1cGRhdGVyfGJlaGluZHxjYWxsfGV4cHJlc3Npb258aGlkZXxpbml0fGp1bXB8b25sYXllcnxweXRob258cmVucHl8c2NlbmV8c2V0fHNob3d8dHJhbnNmb3JtfHBsYXl8cXVldWV8c3RvcHxwYXVzZXxkZWZpbmV8d2luZG93fHJlcGVhdHxjb250YWluc3xjaG9pY2V8b258ZnVuY3Rpb258ZXZlbnR8YW5pbWF0aW9ufGNsb2Nrd2lzZXxjb3VudGVyY2xvY2t3aXNlfGNpcmNsZXN8a25vdHxudWxsfE5vbmV8cmFuZG9tfGhhc3xhZGR8dXNlfGZhZGV8ZGlzc29sdmV8c3R5bGV8c3RvcmV8aWR8dm9pY2V8Y2VudGVyfGxlZnR8cmlnaHR8bGVzc19yb3VuZGVkfG11c2ljfG1vdmllfGNsZWFyfHBlcnNpc3RlbnR8dWkpXFxiLyxib29sZWFuOi9cXGIoPzpbVHRdcnVlfFtGZl1hbHNlKVxcYi8sbnVtYmVyOi8oPzpcXGIoPzowW2JvXSk/KD86KD86XFxkfDB4W1xcZGEtZl0pW1xcZGEtZl0qXFwuP1xcZCopfFxcQlxcLlxcZCspKD86ZVsrLV0/XFxkKyk/aj8vaSxvcGVyYXRvcjovWy0rJT1dPT98IT18XFwqXFwqPz0/fFxcL1xcLz89P3w8Wzw9Pl0/fD5bPT5dP3xbJnxefl18XFxiKD86b3J8YW5kfG5vdHx3aXRofGF0KVxcYi8scHVuY3R1YXRpb246L1t7fVtcXF07KCksLjpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInJlbnB5XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5yZXN0PXt0YWJsZTpbe3BhdHRlcm46LyhcXHMqKSg/OlxcK1s9LV0rKStcXCsoPzpcXHI/XFxufFxccikoPzpcXDEoPzpbK3xdLispK1srfF0oPzpcXHI/XFxufFxccikpK1xcMSg/OlxcK1s9LV0rKStcXCsvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwdW5jdHVhdGlvbjovXFx8fCg/OlxcK1s9LV0rKStcXCsvfX0se3BhdHRlcm46LyhcXHMqKSg/Oj0rICspKz0rKD86KD86XFxyP1xcbnxcXHIpXFwxLispKyg/Olxccj9cXG58XFxyKVxcMSg/Oj0rICspKz0rKD89KD86XFxyP1xcbnxcXHIpezJ9fFxccyokKS8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9bPS1dKy99fV0sXCJzdWJzdGl0dXRpb24tZGVmXCI6e3BhdHRlcm46LyheXFxzKlxcLlxcLiApXFx8KD86W158XFxzXSg/OltefF0qW158XFxzXSk/KVxcfCBbXjpdKzo6L20sbG9va2JlaGluZDohMCxpbnNpZGU6e3N1YnN0aXR1dGlvbjp7cGF0dGVybjovXlxcfCg/OltefFxcc118W158XFxzXVtefF0qW158XFxzXSlcXHwvLGFsaWFzOlwiYXR0ci12YWx1ZVwiLGluc2lkZTp7cHVuY3R1YXRpb246L15cXHx8XFx8JC99fSxkaXJlY3RpdmU6e3BhdHRlcm46LyggKylbXjpdKzo6Lyxsb29rYmVoaW5kOiEwLGFsaWFzOlwiZnVuY3Rpb25cIixpbnNpZGU6e3B1bmN0dWF0aW9uOi86OiQvfX19fSxcImxpbmstdGFyZ2V0XCI6W3twYXR0ZXJuOi8oXlxccypcXC5cXC4gKVxcW1teXFxdXStcXF0vbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwic3RyaW5nXCIsaW5zaWRlOntwdW5jdHVhdGlvbjovXlxcW3xcXF0kL319LHtwYXR0ZXJuOi8oXlxccypcXC5cXC4gKV8oPzpgW15gXStgfCg/OlteOlxcXFxdfFxcXFwuKSspOi9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzdHJpbmdcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi9eX3w6JC99fV0sZGlyZWN0aXZlOntwYXR0ZXJuOi8oXlxccypcXC5cXC4gKVteOl0rOjovbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwiZnVuY3Rpb25cIixpbnNpZGU6e3B1bmN0dWF0aW9uOi86OiQvfX0sY29tbWVudDp7cGF0dGVybjovKF5cXHMqXFwuXFwuKSg/Oig/OiAuKyk/KD86KD86XFxyP1xcbnxcXHIpLispK3wgLispKD89KD86XFxyP1xcbnxcXHIpezJ9fCQpL20sbG9va2JlaGluZDohMH0sdGl0bGU6W3twYXR0ZXJuOi9eKChbIVwiIyQlJicoKSorLFxcLS5cXC86Ozw9Pj9AXFxbXFxcXFxcXV5fYHt8fX5dKVxcMispKD86XFxyP1xcbnxcXHIpLisoPzpcXHI/XFxufFxccilcXDEkL20saW5zaWRlOntwdW5jdHVhdGlvbjovXlshXCIjJCUmJygpKissXFwtLlxcLzo7PD0+P0BcXFtcXFxcXFxdXl9ge3x9fl0rfFshXCIjJCUmJygpKissXFwtLlxcLzo7PD0+P0BcXFtcXFxcXFxdXl9ge3x9fl0rJC8saW1wb3J0YW50Oi8uKy99fSx7cGF0dGVybjovKF58KD86XFxyP1xcbnxcXHIpezJ9KS4rKD86XFxyP1xcbnxcXHIpKFshXCIjJCUmJygpKissXFwtLlxcLzo7PD0+P0BcXFtcXFxcXFxdXl9ge3x9fl0pXFwyKyg/PVxccj9cXG58XFxyfCQpLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cHVuY3R1YXRpb246L1shXCIjJCUmJygpKissXFwtLlxcLzo7PD0+P0BcXFtcXFxcXFxdXl9ge3x9fl0rJC8saW1wb3J0YW50Oi8uKy99fV0saHI6e3BhdHRlcm46LygoPzpcXHI/XFxufFxccil7Mn0pKFshXCIjJCUmJygpKissXFwtLlxcLzo7PD0+P0BcXFtcXFxcXFxdXl9ge3x9fl0pXFwyezMsfSg/PSg/Olxccj9cXG58XFxyKXsyfSkvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJwdW5jdHVhdGlvblwifSxmaWVsZDp7cGF0dGVybjovKF5cXHMqKTpbXjpcXHJcXG5dKzooPz0gKS9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJhdHRyLW5hbWVcIn0sXCJjb21tYW5kLWxpbmUtb3B0aW9uXCI6e3BhdHRlcm46LyheXFxzKikoPzpbKy1dW2EtelxcZF18KD86LS18XFwvKVthLXpcXGQtXSspKD86WyA9XSg/OlthLXpdW1xcdy1dKnw8W148Pl0rPikpPyg/OiwgKD86WystXVthLXpcXGRdfCg/Oi0tfFxcLylbYS16XFxkLV0rKSg/OlsgPV0oPzpbYS16XVtcXHctXSp8PFtePD5dKz4pKT8pKig/PSg/Olxccj9cXG58XFxyKT8gezIsfVxcUykvaW0sbG9va2JlaGluZDohMCxhbGlhczpcInN5bWJvbFwifSxcImxpdGVyYWwtYmxvY2tcIjp7cGF0dGVybjovOjooPzpcXHI/XFxufFxccil7Mn0oWyBcXHRdKykuKyg/Oig/Olxccj9cXG58XFxyKVxcMS4rKSovLGluc2lkZTp7XCJsaXRlcmFsLWJsb2NrLXB1bmN0dWF0aW9uXCI6e3BhdHRlcm46L146Oi8sYWxpYXM6XCJwdW5jdHVhdGlvblwifX19LFwicXVvdGVkLWxpdGVyYWwtYmxvY2tcIjp7cGF0dGVybjovOjooPzpcXHI/XFxufFxccil7Mn0oWyFcIiMkJSYnKCkqKyxcXC0uXFwvOjs8PT4/QFxcW1xcXFxcXF1eX2B7fH1+XSkuKig/Oig/Olxccj9cXG58XFxyKVxcMS4qKSovLGluc2lkZTp7XCJsaXRlcmFsLWJsb2NrLXB1bmN0dWF0aW9uXCI6e3BhdHRlcm46L14oPzo6OnwoWyFcIiMkJSYnKCkqKyxcXC0uXFwvOjs8PT4/QFxcW1xcXFxcXF1eX2B7fH1+XSlcXDEqKS9tLGFsaWFzOlwicHVuY3R1YXRpb25cIn19fSxcImxpc3QtYnVsbGV0XCI6e3BhdHRlcm46LyheXFxzKikoPzpbKitcXC3igKLigKPigYNdfFxcKD8oPzpcXGQrfFthLXpdfFtpdnhkY2xtXSspXFwpfCg/OlxcZCt8W2Etel18W2l2eGRjbG1dKylcXC4pKD89ICkvaW0sbG9va2JlaGluZDohMCxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LFwiZG9jdGVzdC1ibG9ja1wiOntwYXR0ZXJuOi8oXlxccyopPj4+IC4rKD86KD86XFxyP1xcbnxcXHIpLispKi9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwdW5jdHVhdGlvbjovXj4+Pi99fSxpbmxpbmU6W3twYXR0ZXJuOi8oXnxbXFxzXFwtOlxcLydcIjwoXFxbe10pKD86OlteOl0rOmAuKj9gfGAuKj9gOlteOl0rOnwoXFwqXFwqP3xgYD98XFx8KSg/IVxccykuKj9bXlxcc11cXDIoPz1bXFxzXFwtLiw6OyE/XFxcXFxcLydcIilcXF19XXwkKSkvbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7Ym9sZDp7cGF0dGVybjovKF5cXCpcXCopLisoPz1cXCpcXCokKS8sbG9va2JlaGluZDohMH0saXRhbGljOntwYXR0ZXJuOi8oXlxcKikuKyg/PVxcKiQpLyxsb29rYmVoaW5kOiEwfSxcImlubGluZS1saXRlcmFsXCI6e3BhdHRlcm46LyheYGApLisoPz1gYCQpLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwic3ltYm9sXCJ9LHJvbGU6e3BhdHRlcm46L146W146XSs6fDpbXjpdKzokLyxhbGlhczpcImZ1bmN0aW9uXCIsaW5zaWRlOntwdW5jdHVhdGlvbjovXjp8OiQvfX0sXCJpbnRlcnByZXRlZC10ZXh0XCI6e3BhdHRlcm46LyheYCkuKyg/PWAkKS8sbG9va2JlaGluZDohMCxhbGlhczpcImF0dHItdmFsdWVcIn0sc3Vic3RpdHV0aW9uOntwYXR0ZXJuOi8oXlxcfCkuKyg/PVxcfCQpLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwiYXR0ci12YWx1ZVwifSxwdW5jdHVhdGlvbjovXFwqXFwqP3xgYD98XFx8L319XSxsaW5rOlt7cGF0dGVybjovXFxbW15cXF1dK1xcXV8oPz1bXFxzXFwtLiw6OyE/XFxcXFxcLydcIilcXF19XXwkKS8sYWxpYXM6XCJzdHJpbmdcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi9eXFxbfFxcXV8kL319LHtwYXR0ZXJuOi8oPzpcXGJbYS16XFxkXSg/OltfLjorXT9bYS16XFxkXSspKl8/X3xgW15gXStgXz9ffF9gW15gXStgKSg/PVtcXHNcXC0uLDo7IT9cXFxcXFwvJ1wiKVxcXX1dfCQpL2ksYWxpYXM6XCJzdHJpbmdcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi9eXz9gfGAkfGA/Xz9fJC99fV0scHVuY3R1YXRpb246e3BhdHRlcm46LyheXFxzKikoPzpcXHwoPz0gfCQpfCg/Oi0tLT984oCUfFxcLlxcLnxfXykoPz0gKXxcXC5cXC4kKS9tLGxvb2tiZWhpbmQ6ITB9fX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicmVzdFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucmlwPXtjb21tZW50Oi8jLiovLGtleXdvcmQ6Lyg/Oj0+fC0+KXxcXGIoPzpjbGFzc3xpZnxlbHNlfHN3aXRjaHxjYXNlfHJldHVybnxleGl0fHRyeXxjYXRjaHxmaW5hbGx5fHJhaXNlKVxcYi8sYnVpbHRpbjovQHxcXGJTeXN0ZW1cXGIvLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2UpXFxiLyxkYXRlOi9cXGJcXGR7NH0tXFxkezJ9LVxcZHsyfVxcYi8sdGltZTovXFxiXFxkezJ9OlxcZHsyfTpcXGR7Mn1cXGIvLGRhdGV0aW1lOi9cXGJcXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfVxcYi8sY2hhcmFjdGVyOi9cXEJgW15cXHNgJ1wiLC46OyNcXC9cXFxcKCk8PlxcW1xcXXt9XVxcYi8scmVnZXg6e3BhdHRlcm46LyhefFteXFwvXSlcXC8oPyFcXC8pKFxcWy4rP118XFxcXC58W15cXC9cXFxcXFxyXFxuXSkrXFwvKD89XFxzKigkfFtcXHJcXG4sLjt9KV0pKS8sbG9va2JlaGluZDohMCxncmVlZHk6ITB9LHN5bWJvbDovOlteXFxkXFxzYCdcIiwuOjsjXFwvXFxcXCgpPD5cXFtcXF17fV1bXlxcc2AnXCIsLjo7I1xcL1xcXFwoKTw+XFxbXFxde31dKi8sc3RyaW5nOntwYXR0ZXJuOi8oXCJ8JykoPzpcXFxcLnwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITB9LG51bWJlcjovWystXT8oPzooPzpcXGQrXFwuXFxkKyl8KD86XFxkKykpLyxwdW5jdHVhdGlvbjovKD86XFwuezIsM30pfFtgLC46Oz1cXC9cXFxcKCk8PlxcW1xcXXt9XS8scmVmZXJlbmNlOi9bXlxcZFxcc2AnXCIsLjo7I1xcL1xcXFwoKTw+XFxbXFxde31dW15cXHNgJ1wiLC46OyNcXC9cXFxcKCk8PlxcW1xcXXt9XSovfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicmlwXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5yb2JvY29uZj17Y29tbWVudDovIy4qLyxrZXl3b3JkOntwYXR0ZXJuOi8oXnxcXHMpKD86KD86ZmFjZXR8aW5zdGFuY2Ugb2YpKD89WyBcXHRdK1tcXHctXStbIFxcdF0qXFx7KXwoPzpleHRlcm5hbHxpbXBvcnQpXFxiKS8sbG9va2JlaGluZDohMH0sY29tcG9uZW50OntwYXR0ZXJuOi9bXFx3LV0rKD89WyBcXHRdKlxceykvLGFsaWFzOlwidmFyaWFibGVcIn0scHJvcGVydHk6L1tcXHcuLV0rKD89WyBcXHRdKjopLyx2YWx1ZTp7cGF0dGVybjovKD1bIFxcdF0qKVteLDtdKy8sbG9va2JlaGluZDohMCxhbGlhczpcImF0dHItdmFsdWVcIn0sb3B0aW9uYWw6e3BhdHRlcm46L1xcKG9wdGlvbmFsXFwpLyxhbGlhczpcImJ1aWx0aW5cIn0sd2lsZGNhcmQ6e3BhdHRlcm46LyhcXC4pXFwqLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwib3BlcmF0b3JcIn0scHVuY3R1YXRpb246L1t7fSwuOzo9XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJyb2JvY29uZlwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucnVzdD17Y29tbWVudDpbe3BhdHRlcm46LyhefFteXFxcXF0pXFwvXFwqW1xcc1xcU10qP1xcKlxcLy8sbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhefFteXFxcXDpdKVxcL1xcLy4qLyxsb29rYmVoaW5kOiEwfV0sc3RyaW5nOlt7cGF0dGVybjovYj9yKCMqKVwiKD86XFxcXC58KD8hXCJcXDEpW15cXFxcXFxyXFxuXSkqXCJcXDEvLGdyZWVkeTohMH0se3BhdHRlcm46L2I/XCIoPzpcXFxcLnxbXlxcXFxcXHJcXG5cIl0pKlwiLyxncmVlZHk6ITB9XSxjaGFyOntwYXR0ZXJuOi9iPycoPzpcXFxcKD86eFswLTddW1xcZGEtZkEtRl18dXsoPzpbXFxkYS1mQS1GXV8qKXsxLDZ9fC4pfFteXFxcXFxcclxcblxcdCddKScvLGFsaWFzOlwic3RyaW5nXCJ9LFwibGlmZXRpbWUtYW5ub3RhdGlvblwiOntwYXR0ZXJuOi8nW15cXHM+J10rLyxhbGlhczpcInN5bWJvbFwifSxrZXl3b3JkOi9cXGIoPzphYnN0cmFjdHxhbGlnbm9mfGFzfGJlfGJveHxicmVha3xjb25zdHxjb250aW51ZXxjcmF0ZXxkb3xlbHNlfGVudW18ZXh0ZXJufGZhbHNlfGZpbmFsfGZufGZvcnxpZnxpbXBsfGlufGxldHxsb29wfG1hdGNofG1vZHxtb3ZlfG11dHxvZmZzZXRvZnxvbmNlfG92ZXJyaWRlfHByaXZ8cHVifHB1cmV8cmVmfHJldHVybnxzaXplb2Z8c3RhdGljfHNlbGZ8c3RydWN0fHN1cGVyfHRydWV8dHJhaXR8dHlwZXx0eXBlb2Z8dW5zYWZlfHVuc2l6ZWR8dXNlfHZpcnR1YWx8d2hlcmV8d2hpbGV8eWllbGQpXFxiLyxhdHRyaWJ1dGU6e3BhdHRlcm46LyMhP1xcWy4rP1xcXS8sZ3JlZWR5OiEwLGFsaWFzOlwiYXR0ci1uYW1lXCJ9LGZ1bmN0aW9uOlsvXFx3Kyg/PVxccypcXCgpLywvXFx3KyEoPz1cXHMqXFwofFxcWykvXSxcIm1hY3JvLXJ1bGVzXCI6e3BhdHRlcm46L1xcdyshLyxhbGlhczpcImZ1bmN0aW9uXCJ9LG51bWJlcjovXFxiKD86MHhbXFxkQS1GYS1mXSg/Ol8/W1xcZEEtRmEtZl0pKnwwb1swLTddKD86Xz9bMC03XSkqfDBiWzAxXSg/Ol8/WzAxXSkqfChcXGQoPzpfP1xcZCkqKT9cXC4/XFxkKD86Xz9cXGQpKig/OltFZV1bKy1dP1xcZCspPykoPzpfPyg/OltpdV0oPzo4fDE2fDMyfDY0KT98ZjMyfGY2NCkpP1xcYi8sXCJjbG9zdXJlLXBhcmFtc1wiOntwYXR0ZXJuOi9cXHxbXnxdKlxcfCg/PVxccypbey1dKS8saW5zaWRlOntwdW5jdHVhdGlvbjovW3w6LF0vLG9wZXJhdG9yOi9bJipdL319LHB1bmN0dWF0aW9uOi9be31bXFxdOygpLDpdfFxcLit8LT4vLG9wZXJhdG9yOi9bLSsqXFwvJSFeXT0/fD1bPT5dP3xAfCZbJj1dP3xcXHxbfD1dP3w8PD89P3w+Pj89Py99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJydXN0XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5zYXM9e2RhdGFsaW5lczp7cGF0dGVybjovXlxccyooPzooPzpkYXRhKT9saW5lc3xjYXJkcyk7W1xcc1xcU10rPyg/Olxccj9cXG58XFxyKTsvaW0sYWxpYXM6XCJzdHJpbmdcIixpbnNpZGU6e2tleXdvcmQ6e3BhdHRlcm46L14oXFxzKikoPzooPzpkYXRhKT9saW5lc3xjYXJkcykvaSxsb29rYmVoaW5kOiEwfSxwdW5jdHVhdGlvbjovOy99fSxjb21tZW50Olt7cGF0dGVybjovKF5cXHMqfDtcXHMqKVxcKi4qOy9tLGxvb2tiZWhpbmQ6ITB9LC9cXC9cXCpbXFxzXFxTXSs/XFwqXFwvL10sZGF0ZXRpbWU6e3BhdHRlcm46LydbXiddKycoPzpkdD98dClcXGIvaSxhbGlhczpcIm51bWJlclwifSxzdHJpbmc6e3BhdHRlcm46LyhbXCInXSkoPzpcXDFcXDF8KD8hXFwxKVtcXHNcXFNdKSpcXDEvLGdyZWVkeTohMH0sa2V5d29yZDovXFxiKD86ZGF0YXxlbHNlfGZvcm1hdHxpZnxpbnB1dHxwcm9jXFxzXFx3K3xxdWl0fHJ1bnx0aGVuKVxcYi9pLG51bWJlcjovXFxiKD86W1xcZGEtZl0reHxcXGQrKD86XFwuXFxkKyk/KD86ZVsrLV0/XFxkKyk/KS9pLG9wZXJhdG9yOi9cXCpcXCo/fFxcfFxcfD98ISE/fMKmwqY/fDxbPj1dP3w+Wzw9XT98Wy0rXFwvPSZdfFt+wqxeXT0/fFxcYig/OmVxfG5lfGd0fGx0fGdlfGxlfGlufG5vdClcXGIvaSxwdW5jdHVhdGlvbjovWyQlQC4oKXt9XFxbXFxdOyxcXFxcXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJzYXNcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5zYXNzPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNzc1wiLHtjb21tZW50OntwYXR0ZXJuOi9eKFsgXFx0XSopXFwvW1xcLypdLiooPzooPzpcXHI/XFxufFxccilcXDFbIFxcdF0rLispKi9tLGxvb2tiZWhpbmQ6ITB9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwic2Fzc1wiLFwiYXRydWxlXCIse1wiYXRydWxlLWxpbmVcIjp7cGF0dGVybjovXig/OlsgXFx0XSopW0ArPV0uKy9tLGluc2lkZTp7YXRydWxlOi8oPzpAW1xcdy1dK3xbKz1dKS9tfX19KSxkZWxldGUgZS5sYW5ndWFnZXMuc2Fzcy5hdHJ1bGU7dmFyIHQ9L1xcJFstXFx3XSt8I1xce1xcJFstXFx3XStcXH0vLG49Wy9bKypcXC8lXXxbPSFdPXw8PT98Pj0/fFxcYig/OmFuZHxvcnxub3QpXFxiLyx7cGF0dGVybjovKFxccyspLSg/PVxccykvLGxvb2tiZWhpbmQ6ITB9XTtlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJzYXNzXCIsXCJwcm9wZXJ0eVwiLHtcInZhcmlhYmxlLWxpbmVcIjp7cGF0dGVybjovXlsgXFx0XSpcXCQuKy9tLGluc2lkZTp7cHVuY3R1YXRpb246LzovLHZhcmlhYmxlOnQsb3BlcmF0b3I6bn19LFwicHJvcGVydHktbGluZVwiOntwYXR0ZXJuOi9eWyBcXHRdKig/OlteOlxcc10rICo6Lip8OlteOlxcc10rLiopL20saW5zaWRlOntwcm9wZXJ0eTpbL1teOlxcc10rKD89XFxzKjopLyx7cGF0dGVybjovKDopW146XFxzXSsvLGxvb2tiZWhpbmQ6ITB9XSxwdW5jdHVhdGlvbjovOi8sdmFyaWFibGU6dCxvcGVyYXRvcjpuLGltcG9ydGFudDplLmxhbmd1YWdlcy5zYXNzLmltcG9ydGFudH19fSksZGVsZXRlIGUubGFuZ3VhZ2VzLnNhc3MucHJvcGVydHksZGVsZXRlIGUubGFuZ3VhZ2VzLnNhc3MuaW1wb3J0YW50LGRlbGV0ZSBlLmxhbmd1YWdlcy5zYXNzLnNlbGVjdG9yLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInNhc3NcIixcInB1bmN0dWF0aW9uXCIse3NlbGVjdG9yOntwYXR0ZXJuOi8oWyBcXHRdKilcXFMoPzosP1teLFxcclxcbl0rKSooPzosKD86XFxyP1xcbnxcXHIpXFwxWyBcXHRdK1xcUyg/Oiw/W14sXFxyXFxuXSspKikqLyxsb29rYmVoaW5kOiEwfX0pfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwic2Fzc1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMTY0KTtmdW5jdGlvbiBvKGUpe2UucmVnaXN0ZXIociksZS5sYW5ndWFnZXMuc2NhbGE9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiamF2YVwiLHtrZXl3b3JkOi88LXw9PnxcXGIoPzphYnN0cmFjdHxjYXNlfGNhdGNofGNsYXNzfGRlZnxkb3xlbHNlfGV4dGVuZHN8ZmluYWx8ZmluYWxseXxmb3J8Zm9yU29tZXxpZnxpbXBsaWNpdHxpbXBvcnR8bGF6eXxtYXRjaHxuZXd8bnVsbHxvYmplY3R8b3ZlcnJpZGV8cGFja2FnZXxwcml2YXRlfHByb3RlY3RlZHxyZXR1cm58c2VhbGVkfHNlbGZ8c3VwZXJ8dGhpc3x0aHJvd3x0cmFpdHx0cnl8dHlwZXx2YWx8dmFyfHdoaWxlfHdpdGh8eWllbGQpXFxiLyxzdHJpbmc6W3twYXR0ZXJuOi9cIlwiXCJbXFxzXFxTXSo/XCJcIlwiLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi8oXCJ8JykoPzpcXFxcLnwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITB9XSxidWlsdGluOi9cXGIoPzpTdHJpbmd8SW50fExvbmd8U2hvcnR8Qnl0ZXxCb29sZWFufERvdWJsZXxGbG9hdHxDaGFyfEFueXxBbnlSZWZ8QW55VmFsfFVuaXR8Tm90aGluZylcXGIvLG51bWJlcjovXFxiMHhbXFxkYS1mXSpcXC4/W1xcZGEtZl0rfCg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OmVcXGQrKT9bZGZsXT8vaSxzeW1ib2w6LydbXlxcZFxcc1xcXFxdXFx3Ki99KSxkZWxldGUgZS5sYW5ndWFnZXMuc2NhbGFbXCJjbGFzcy1uYW1lXCJdLGRlbGV0ZSBlLmxhbmd1YWdlcy5zY2FsYS5mdW5jdGlvbn1lLmV4cG9ydHM9byxvLmRpc3BsYXlOYW1lPVwic2NhbGFcIixvLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnNjaGVtZT17Y29tbWVudDovOy4qLyxzdHJpbmc6e3BhdHRlcm46L1wiKD86W15cIlxcXFxcXHJcXG5dfFxcXFwuKSpcInwnW14oJ1xcc10qLyxncmVlZHk6ITB9LGtleXdvcmQ6e3BhdHRlcm46LyhcXCgpKD86ZGVmaW5lKD86LXN5bnRheHwtbGlicmFyeXwtdmFsdWVzKT98KD86Y2FzZS0pP2xhbWJkYXxsZXQoPzpcXCp8cmVjKT8oPzotdmFsdWVzKT98ZWxzZXxpZnxjb25kfGJlZ2lufGRlbGF5KD86LWZvcmNlKT98cGFyYW1ldGVyaXplfGd1YXJkfHNldCF8KD86cXVhc2ktKT9xdW90ZXxzeW50YXgtcnVsZXMpLyxsb29rYmVoaW5kOiEwfSxidWlsdGluOntwYXR0ZXJuOi8oXFwoKSg/Oig/OmNvbnN8Y2FyfGNkcnxsaXN0fGNhbGwtd2l0aC1jdXJyZW50LWNvbnRpbnVhdGlvbnxjYWxsXFwvY2N8YXBwZW5kfGFic3xhcHBseXxldmFsKVxcYnxudWxsXFw/fHBhaXJcXD98Ym9vbGVhblxcP3xlb2Ytb2JqZWN0XFw/fGNoYXJcXD98cHJvY2VkdXJlXFw/fG51bWJlclxcP3xwb3J0XFw/fHN0cmluZ1xcP3x2ZWN0b3JcXD98c3ltYm9sXFw/fGJ5dGV2ZWN0b3JcXD8pLyxsb29rYmVoaW5kOiEwfSxudW1iZXI6e3BhdHRlcm46LyhcXHN8WygpXSlbLStdP1xcZCpcXC4/XFxkKyg/OlxccypbLStdXFxzKlxcZCpcXC4/XFxkK2kpP1xcYi8sbG9va2JlaGluZDohMH0sYm9vbGVhbjovI1t0Zl0vLG9wZXJhdG9yOntwYXR0ZXJuOi8oXFwoKSg/OlstKyolXFwvXXxbPD5dPT98PT4/KS8sbG9va2JlaGluZDohMH0sZnVuY3Rpb246e3BhdHRlcm46LyhcXCgpW15cXHMoKV0qKD89XFxzKS8sbG9va2JlaGluZDohMH0scHVuY3R1YXRpb246L1soKV0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwic2NoZW1lXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5zY3NzPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNzc1wiLHtjb21tZW50OntwYXR0ZXJuOi8oXnxbXlxcXFxdKSg/OlxcL1xcKltcXHNcXFNdKj9cXCpcXC98XFwvXFwvLiopLyxsb29rYmVoaW5kOiEwfSxhdHJ1bGU6e3BhdHRlcm46L0BbXFx3LV0rKD86XFwoW14oKV0rXFwpfFteKF0pKj8oPz1cXHMrW3s7XSkvLGluc2lkZTp7cnVsZTovQFtcXHctXSsvfX0sdXJsOi8oPzpbLWEtel0rLSkqdXJsKD89XFwoKS9pLHNlbGVjdG9yOntwYXR0ZXJuOi8oPz1cXFMpW15AO3t9KCldPyg/OlteQDt7fSgpXXwmfCNcXHtcXCRbLVxcd10rXFx9KSsoPz1cXHMqXFx7KD86XFx9fFxcc3xbXn1dK1s6e11bXn1dKykpL20saW5zaWRlOntwYXJlbnQ6e3BhdHRlcm46LyYvLGFsaWFzOlwiaW1wb3J0YW50XCJ9LHBsYWNlaG9sZGVyOi8lWy1cXHddKy8sdmFyaWFibGU6L1xcJFstXFx3XSt8I1xce1xcJFstXFx3XStcXH0vfX19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJzY3NzXCIsXCJhdHJ1bGVcIix7a2V5d29yZDpbL0AoPzppZnxlbHNlKD86IGlmKT98Zm9yfGVhY2h8d2hpbGV8aW1wb3J0fGV4dGVuZHxkZWJ1Z3x3YXJufG1peGlufGluY2x1ZGV8ZnVuY3Rpb258cmV0dXJufGNvbnRlbnQpL2kse3BhdHRlcm46LyggKykoPzpmcm9tfHRocm91Z2gpKD89ICkvLGxvb2tiZWhpbmQ6ITB9XX0pLGUubGFuZ3VhZ2VzLnNjc3MucHJvcGVydHk9e3BhdHRlcm46Lyg/OltcXHctXXxcXCRbLVxcd10rfCNcXHtcXCRbLVxcd10rXFx9KSsoPz1cXHMqOikvaSxpbnNpZGU6e3ZhcmlhYmxlOi9cXCRbLVxcd10rfCNcXHtcXCRbLVxcd10rXFx9L319LGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInNjc3NcIixcImltcG9ydGFudFwiLHt2YXJpYWJsZTovXFwkWy1cXHddK3wjXFx7XFwkWy1cXHddK1xcfS99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJzY3NzXCIsXCJmdW5jdGlvblwiLHtwbGFjZWhvbGRlcjp7cGF0dGVybjovJVstXFx3XSsvLGFsaWFzOlwic2VsZWN0b3JcIn0sc3RhdGVtZW50OntwYXR0ZXJuOi9cXEIhKD86ZGVmYXVsdHxvcHRpb25hbClcXGIvaSxhbGlhczpcImtleXdvcmRcIn0sYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvLG51bGw6L1xcYm51bGxcXGIvLG9wZXJhdG9yOntwYXR0ZXJuOi8oXFxzKSg/OlstKypcXC8lXXxbPSFdPXw8PT98Pj0/fGFuZHxvcnxub3QpKD89XFxzKS8sbG9va2JlaGluZDohMH19KSxlLmxhbmd1YWdlcy5zY3NzLmF0cnVsZS5pbnNpZGUucmVzdD1lLmxhbmd1YWdlcy5zY3NzfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJzY3NzXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5zbWFsbHRhbGs9e2NvbW1lbnQ6L1wiKD86XCJcInxbXlwiXSkrXCIvLHN0cmluZzovJyg/OicnfFteJ10pKycvLHN5bWJvbDovI1tcXGRhLXpdK3wjKD86LXwoWytcXC9cXFxcKn48Pj1AJXwmPyFdKVxcMT8pfCMoPz1cXCgpL2ksXCJibG9jay1hcmd1bWVudHNcIjp7cGF0dGVybjovKFxcW1xccyopOlteXFxbfF0qXFx8Lyxsb29rYmVoaW5kOiEwLGluc2lkZTp7dmFyaWFibGU6LzpbXFxkYS16XSsvaSxwdW5jdHVhdGlvbjovXFx8L319LFwidGVtcG9yYXJ5LXZhcmlhYmxlc1wiOntwYXR0ZXJuOi9cXHxbXnxdK1xcfC8saW5zaWRlOnt2YXJpYWJsZTovW1xcZGEtel0rL2kscHVuY3R1YXRpb246L1xcfC99fSxrZXl3b3JkOi9cXGIoPzpuaWx8dHJ1ZXxmYWxzZXxzZWxmfHN1cGVyfG5ldylcXGIvLGNoYXJhY3Rlcjp7cGF0dGVybjovXFwkLi8sYWxpYXM6XCJzdHJpbmdcIn0sbnVtYmVyOlsvXFxkK3ItP1tcXGRBLVpdKyg/OlxcLltcXGRBLVpdKyk/KD86ZS0/XFxkKyk/LywvXFxiXFxkKyg/OlxcLlxcZCspPyg/OmUtP1xcZCspPy9dLG9wZXJhdG9yOi9bPD1dPT98Oj18flt+PV18XFwvXFwvP3xcXFxcXFxcXHw+Wz49XT98WyFeK1xcLSomfCxAXS8scHVuY3R1YXRpb246L1suOzo/XFxbXFxdKCl7fV0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwic21hbGx0YWxrXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7ZS5sYW5ndWFnZXMuc21hcnR5PXtjb21tZW50Oi9cXHtcXCpbXFxzXFxTXSo/XFwqXFx9LyxkZWxpbWl0ZXI6e3BhdHRlcm46L15cXHt8XFx9JC9pLGFsaWFzOlwicHVuY3R1YXRpb25cIn0sc3RyaW5nOi8oW1wiJ10pKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sbnVtYmVyOi9cXGIweFtcXGRBLUZhLWZdK3woPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzpbRWVdWy0rXT9cXGQrKT8vLHZhcmlhYmxlOlsvXFwkKD8hXFxkKVxcdysvLC8jKD8hXFxkKVxcdysjLyx7cGF0dGVybjovKFxcLnwtPikoPyFcXGQpXFx3Ky8sbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhcXFspKD8hXFxkKVxcdysoPz1cXF0pLyxsb29rYmVoaW5kOiEwfV0sZnVuY3Rpb246W3twYXR0ZXJuOi8oXFx8XFxzKilAPyg/IVxcZClcXHcrLyxsb29rYmVoaW5kOiEwfSwvXlxcLz8oPyFcXGQpXFx3Ky8sLyg/IVxcZClcXHcrKD89XFwoKS9dLFwiYXR0ci1uYW1lXCI6e3BhdHRlcm46L1xcdytcXHMqPVxccyooPzooPyFcXGQpXFx3Kyk/LyxpbnNpZGU6e3ZhcmlhYmxlOntwYXR0ZXJuOi8oPVxccyopKD8hXFxkKVxcdysvLGxvb2tiZWhpbmQ6ITB9LG9wZXJhdG9yOi89L319LHB1bmN0dWF0aW9uOlsvW1xcW1xcXSgpLiw6YF18LT4vXSxvcGVyYXRvcjpbL1srXFwtKlxcLyVdfD09Pz0/fFshPD5dPT98JiZ8XFx8XFx8Py8sL1xcYmlzXFxzKyg/Om5vdFxccyspPyg/OmRpdnxldmVufG9kZCkoPzpcXHMrYnkpP1xcYi8sL1xcYig/OmVxfG5lcT98Z3R8bHR8Z3Q/ZXxsdD9lfG5vdHxtb2R8b3J8YW5kKVxcYi9dLGtleXdvcmQ6L1xcYig/OmZhbHNlfG9mZnxvbnxub3x0cnVlfHllcylcXGIvfSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJzbWFydHlcIixcInRhZ1wiLHtcInNtYXJ0eS1jb21tZW50XCI6e3BhdHRlcm46L1xce1xcKltcXHNcXFNdKj9cXCpcXH0vLGFsaWFzOltcInNtYXJ0eVwiLFwiY29tbWVudFwiXX19KSxlLmhvb2tzLmFkZChcImJlZm9yZS10b2tlbml6ZVwiLGZ1bmN0aW9uKHQpe3ZhciBuPSExO2UubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl0uYnVpbGRQbGFjZWhvbGRlcnModCxcInNtYXJ0eVwiLC9cXHtcXCpbXFxzXFxTXSo/XFwqXFx9fFxce1tcXHNcXFNdKz9cXH0vZyxmdW5jdGlvbihlKXtyZXR1cm5cInsvbGl0ZXJhbH1cIj09PWUmJihuPSExKSwhbiYmKFwie2xpdGVyYWx9XCI9PT1lJiYobj0hMCksITApfSl9KSxlLmhvb2tzLmFkZChcImFmdGVyLXRva2VuaXplXCIsZnVuY3Rpb24odCl7ZS5sYW5ndWFnZXNbXCJtYXJrdXAtdGVtcGxhdGluZ1wiXS50b2tlbml6ZVBsYWNlaG9sZGVycyh0LFwic21hcnR5XCIpfSl9KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJzbWFydHlcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXt2YXIgdD0vKFtcIiddKSg/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLG49L1xcYlxcZCsoPzpcXC5cXGQrKT8oPzpbZUVdWystXT9cXGQrKT9cXGJ8XFxiMHhbXFxkQS1GXStcXGIvO2UubGFuZ3VhZ2VzLnNveT17Y29tbWVudDpbL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vLHtwYXR0ZXJuOi8oXFxzKVxcL1xcLy4qLyxsb29rYmVoaW5kOiEwLGdyZWVkeTohMH1dLFwiY29tbWFuZC1hcmdcIjp7cGF0dGVybjovKHsrXFwvP1xccyooPzphbGlhc3xjYWxsfGRlbGNhbGx8ZGVscGFja2FnZXxkZWx0ZW1wbGF0ZXxuYW1lc3BhY2V8dGVtcGxhdGUpXFxzKylcXC4/W1xcdy5dKy8sbG9va2JlaGluZDohMCxhbGlhczpcInN0cmluZ1wiLGluc2lkZTp7cHVuY3R1YXRpb246L1xcLi99fSxwYXJhbWV0ZXI6e3BhdHRlcm46Lyh7K1xcLz9cXHMqQD9wYXJhbVxcPz9cXHMrKVxcLj9bXFx3Ll0rLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwidmFyaWFibGVcIn0sa2V5d29yZDpbe3BhdHRlcm46Lyh7K1xcLz9bXlxcU1xcclxcbl0qKSg/OlxcXFxbbnJ0XXxhbGlhc3xjYWxsfGNhc2V8Y3NzfGRlZmF1bHR8ZGVsY2FsbHxkZWxwYWNrYWdlfGRlbHRlbXBsYXRlfGVsc2UoPzppZik/fGZhbGxiYWNrbXNnfGZvcig/OmVhY2gpP3xpZig/OmVtcHR5KT98bGJ8bGV0fGxpdGVyYWx8bXNnfG5hbWVzcGFjZXxuaWx8QD9wYXJhbVxcPz98cmJ8c3B8c3dpdGNofHRlbXBsYXRlfHhpZCkvLGxvb2tiZWhpbmQ6ITB9LC9cXGIoPzphbnl8YXN8YXR0cmlidXRlc3xib29sfGNzc3xmbG9hdHxpbnxpbnR8anN8aHRtbHxsaXN0fG1hcHxudWxsfG51bWJlcnxzdHJpbmd8dXJpKVxcYi9dLGRlbGltaXRlcjp7cGF0dGVybjovXnsrXFwvP3xcXC8/fSskLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LHByb3BlcnR5Oi9cXHcrKD89PSkvLHZhcmlhYmxlOntwYXR0ZXJuOi9cXCRbXlxcV1xcZF1cXHcqKD86XFw/Pyg/OlxcLlxcdyt8XFxbW15cXF1dK10pKSovLGluc2lkZTp7c3RyaW5nOntwYXR0ZXJuOnQsZ3JlZWR5OiEwfSxudW1iZXI6bixwdW5jdHVhdGlvbjovW1xcW1xcXS4/XS99fSxzdHJpbmc6e3BhdHRlcm46dCxncmVlZHk6ITB9LGZ1bmN0aW9uOlsvXFx3Kyg/PVxcKCkvLHtwYXR0ZXJuOi8oXFx8W15cXFNcXHJcXG5dKilcXHcrLyxsb29rYmVoaW5kOiEwfV0sYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvLG51bWJlcjpuLG9wZXJhdG9yOi9cXD86P3w8PT98Pj0/fD09P3whPXxbKypcXC8lLV18XFxiKD86YW5kfG5vdHxvcilcXGIvLHB1bmN0dWF0aW9uOi9be30oKVxcW1xcXXwuLDpdL30sZS5ob29rcy5hZGQoXCJiZWZvcmUtdG9rZW5pemVcIixmdW5jdGlvbih0KXt2YXIgbj0hMTtlLmxhbmd1YWdlc1tcIm1hcmt1cC10ZW1wbGF0aW5nXCJdLmJ1aWxkUGxhY2Vob2xkZXJzKHQsXCJzb3lcIiwve3suKz99fXx7Lis/fXxcXHNcXC9cXC8uKnxcXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2csZnVuY3Rpb24oZSl7cmV0dXJuXCJ7L2xpdGVyYWx9XCI9PT1lJiYobj0hMSksIW4mJihcIntsaXRlcmFsfVwiPT09ZSYmKG49ITApLCEwKX0pfSksZS5ob29rcy5hZGQoXCJhZnRlci10b2tlbml6ZVwiLGZ1bmN0aW9uKHQpe2UubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl0udG9rZW5pemVQbGFjZWhvbGRlcnModCxcInNveVwiKX0pfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwic295XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7dmFyIHQ9e3VybDovdXJsXFwoKFtcIiddPykuKj9cXDFcXCkvaSxzdHJpbmc6e3BhdHRlcm46LyhcInwnKSg/Oig/IVxcMSlbXlxcXFxcXHJcXG5dfFxcXFwoPzpcXHJcXG58W1xcc1xcU10pKSpcXDEvLGdyZWVkeTohMH0saW50ZXJwb2xhdGlvbjpudWxsLGZ1bmM6bnVsbCxpbXBvcnRhbnQ6L1xcQiEoPzppbXBvcnRhbnR8b3B0aW9uYWwpXFxiL2ksa2V5d29yZDp7cGF0dGVybjovKF58XFxzKykoPzooPzppZnxlbHNlfGZvcnxyZXR1cm58dW5sZXNzKSg/PVxccyt8JCl8QFtcXHctXSspLyxsb29rYmVoaW5kOiEwfSxoZXhjb2RlOi8jW1xcZGEtZl17Myw2fS9pLG51bWJlcjovXFxiXFxkKyg/OlxcLlxcZCspPyU/Lyxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi8sb3BlcmF0b3I6Wy9+fFsrIVxcLyU8Pj89XT0/fFstOl09fFxcKlsqPV0/fFxcLit8JiZ8XFx8XFx8fFxcQi1cXEJ8XFxiKD86YW5kfGlufGlzKD86IGF8IGRlZmluZWR8IG5vdHxudCk/fG5vdHxvcilcXGIvXSxwdW5jdHVhdGlvbjovW3t9KClcXFtcXF07OixdL307dC5pbnRlcnBvbGF0aW9uPXtwYXR0ZXJuOi9cXHtbXlxcclxcbn06XStcXH0vLGFsaWFzOlwidmFyaWFibGVcIixpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXnt8fSQvLGFsaWFzOlwicHVuY3R1YXRpb25cIn0scmVzdDp0fX0sdC5mdW5jPXtwYXR0ZXJuOi9bXFx3LV0rXFwoW14pXSpcXCkuKi8saW5zaWRlOntmdW5jdGlvbjovXlteKF0rLyxyZXN0OnR9fSxlLmxhbmd1YWdlcy5zdHlsdXM9e2NvbW1lbnQ6e3BhdHRlcm46LyhefFteXFxcXF0pKFxcL1xcKltcXHNcXFNdKj9cXCpcXC98XFwvXFwvLiopLyxsb29rYmVoaW5kOiEwfSxcImF0cnVsZS1kZWNsYXJhdGlvblwiOntwYXR0ZXJuOi8oXlxccyopQC4rL20sbG9va2JlaGluZDohMCxpbnNpZGU6e2F0cnVsZTovXkBbXFx3LV0rLyxyZXN0OnR9fSxcInZhcmlhYmxlLWRlY2xhcmF0aW9uXCI6e3BhdHRlcm46LyheWyBcXHRdKilbXFx3JC1dK1xccyouPz1bIFxcdF0qKD86KD86XFx7W159XSpcXH18LispfCQpL20sbG9va2JlaGluZDohMCxpbnNpZGU6e3ZhcmlhYmxlOi9eXFxTKy8scmVzdDp0fX0sc3RhdGVtZW50OntwYXR0ZXJuOi8oXlsgXFx0XSopKD86aWZ8ZWxzZXxmb3J8cmV0dXJufHVubGVzcylbIFxcdF0rLisvbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7a2V5d29yZDovXlxcUysvLHJlc3Q6dH19LFwicHJvcGVydHktZGVjbGFyYXRpb25cIjp7cGF0dGVybjovKCg/Ol58XFx7KShbIFxcdF0qKSkoPzpbXFx3LV18XFx7W159XFxyXFxuXStcXH0pKyg/Olxccyo6XFxzKnxbIFxcdF0rKVtee1xcclxcbl0qKD86O3xbXntcXHJcXG4sXSg/PSQpKD8hKFxccj9cXG58XFxyKSg/Olxce3xcXDJbIFxcdF0rKSkpL20sbG9va2JlaGluZDohMCxpbnNpZGU6e3Byb3BlcnR5OntwYXR0ZXJuOi9eW15cXHM6XSsvLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp0LmludGVycG9sYXRpb259fSxyZXN0OnR9fSxzZWxlY3Rvcjp7cGF0dGVybjovKF5bIFxcdF0qKSg/Oig/PVxcUykoPzpbXnt9XFxyXFxuOigpXXw6Oj9bXFx3LV0rKD86XFwoW14pXFxyXFxuXSpcXCkpP3xcXHtbXn1cXHJcXG5dK1xcfSkrKSg/Oig/Olxccj9cXG58XFxyKSg/OlxcMSg/Oig/PVxcUykoPzpbXnt9XFxyXFxuOigpXXw6Oj9bXFx3LV0rKD86XFwoW14pXFxyXFxuXSpcXCkpP3xcXHtbXn1cXHJcXG5dK1xcfSkrKSkpKig/OiwkfFxce3woPz0oPzpcXHI/XFxufFxccikoPzpcXHt8XFwxWyBcXHRdKykpKS9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOnQuaW50ZXJwb2xhdGlvbixwdW5jdHVhdGlvbjovW3t9LF0vfX0sZnVuYzp0LmZ1bmMsc3RyaW5nOnQuc3RyaW5nLGludGVycG9sYXRpb246dC5pbnRlcnBvbGF0aW9uLHB1bmN0dWF0aW9uOi9be30oKVxcW1xcXTs6Ll0vfX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInN0eWx1c1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuc3dpZnQ9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7c3RyaW5nOntwYXR0ZXJuOi8oXCJ8JykoXFxcXCg/OlxcKCg/OlteKCldfFxcKFteKV0rXFwpKStcXCl8XFxyXFxufFtcXHNcXFNdKXwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOntwYXR0ZXJuOi9cXFxcXFwoKD86W14oKV18XFwoW14pXStcXCkpK1xcKS8saW5zaWRlOntkZWxpbWl0ZXI6e3BhdHRlcm46L15cXFxcXFwofFxcKSQvLGFsaWFzOlwidmFyaWFibGVcIn19fX19LGtleXdvcmQ6L1xcYig/OmFzfGFzc29jaWF0aXZpdHl8YnJlYWt8Y2FzZXxjYXRjaHxjbGFzc3xjb250aW51ZXxjb252ZW5pZW5jZXxkZWZhdWx0fGRlZmVyfGRlaW5pdHxkaWRTZXR8ZG98ZHluYW1pYyg/OlR5cGUpP3xlbHNlfGVudW18ZXh0ZW5zaW9ufGZhbGx0aHJvdWdofGZpbmFsfGZvcnxmdW5jfGdldHxndWFyZHxpZnxpbXBvcnR8aW58aW5maXh8aW5pdHxpbm91dHxpbnRlcm5hbHxpc3xsYXp5fGxlZnR8bGV0fG11dGF0aW5nfG5ld3xub25lfG5vbm11dGF0aW5nfG9wZXJhdG9yfG9wdGlvbmFsfG92ZXJyaWRlfHBvc3RmaXh8cHJlY2VkZW5jZXxwcmVmaXh8cHJpdmF0ZXxwcm90b2NvbHxwdWJsaWN8cmVwZWF0fHJlcXVpcmVkfHJldGhyb3dzfHJldHVybnxyaWdodHxzYWZlfHNlbGZ8U2VsZnxzZXR8c3RhdGljfHN0cnVjdHxzdWJzY3JpcHR8c3VwZXJ8c3dpdGNofHRocm93cz98dHJ5fFR5cGV8dHlwZWFsaWFzfHVub3duZWR8dW5zYWZlfHZhcnx3ZWFrfHdoZXJlfHdoaWxlfHdpbGxTZXR8X18oPzpDT0xVTU5fX3xGSUxFX198RlVOQ1RJT05fX3xMSU5FX18pKVxcYi8sbnVtYmVyOi9cXGIoPzpbXFxkX10rKD86XFwuW1xcZGVfXSspP3wweFthLWYwLTlfXSsoPzpcXC5bYS1mMC05cF9dKyk/fDBiWzAxX10rfDBvWzAtN19dKylcXGIvaSxjb25zdGFudDovXFxiKD86bmlsfFtBLVpfXXsyLH18a1tBLVpdW0EtWmEtel9dKylcXGIvLGF0cnVsZTovQFxcYig/OklCKD86T3V0bGV0fERlc2lnbmFibGV8QWN0aW9ufEluc3BlY3RhYmxlKXxjbGFzc19wcm90b2NvbHxleHBvcnRlZHxub3JldHVybnxOUyg/OkNvcHlpbmd8TWFuYWdlZCl8b2JqY3xVSUFwcGxpY2F0aW9uTWFpbnxhdXRvX2Nsb3N1cmUpXFxiLyxidWlsdGluOi9cXGIoPzpbQS1aXVxcUyt8YWJzfGFkdmFuY2V8YWxpZ25vZig/OlZhbHVlKT98YXNzZXJ0fGNvbnRhaW5zfGNvdW50KD86RWxlbWVudHMpP3xkZWJ1Z1ByaW50KD86bG4pP3xkaXN0YW5jZXxkcm9wKD86Rmlyc3R8TGFzdCl8ZHVtcHxlbnVtZXJhdGV8ZXF1YWx8ZmlsdGVyfGZpbmR8Zmlyc3R8Z2V0VmFMaXN0fGluZGljZXN8aXNFbXB0eXxqb2lufGxhc3R8bGV4aWNvZ3JhcGhpY2FsQ29tcGFyZXxtYXB8bWF4KD86RWxlbWVudCk/fG1pbig/OkVsZW1lbnQpP3xudW1lcmljQ2FzdHxvdmVybGFwc3xwYXJ0aXRpb258cHJpbnQoPzpsbik/fHJlZHVjZXxyZWZsZWN0fHJldmVyc2V8c2l6ZW9mKD86VmFsdWUpP3xzb3J0KD86ZWQpP3xzcGxpdHxzdGFydHNXaXRofHN0cmlkZSg/Om9mKD86VmFsdWUpPyk/fHN1ZmZpeHxzd2FwfHRvRGVidWdTdHJpbmd8dG9TdHJpbmd8dHJhbnNjb2RlfHVuZGVyZXN0aW1hdGVDb3VudHx1bnNhZmVCaXRDYXN0fHdpdGgoPzpFeHRlbmRlZExpZmV0aW1lfFVuc2FmZSg/Ok11dGFibGVQb2ludGVycz98UG9pbnRlcnM/KXxWYUxpc3QpKVxcYi99KSxlLmxhbmd1YWdlcy5zd2lmdC5zdHJpbmcuaW5zaWRlLmludGVycG9sYXRpb24uaW5zaWRlLnJlc3Q9ZS5sYW5ndWFnZXMuc3dpZnR9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInN3aWZ0XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy50YXA9e2ZhaWw6L25vdCBva1teI3tcXG5cXHJdKi8scGFzczovb2tbXiN7XFxuXFxyXSovLHByYWdtYTovcHJhZ21hIFsrLV1bYS16XSsvLGJhaWxvdXQ6L2JhaWwgb3V0IS4qL2ksdmVyc2lvbjovVEFQIHZlcnNpb24gXFxkKy9pLHBsYW46L1xcZCtcXC5cXC5cXGQrKD86ICsjLiopPy8sc3VidGVzdDp7cGF0dGVybjovIyBTdWJ0ZXN0KD86OiAuKik/LyxncmVlZHk6ITB9LHB1bmN0dWF0aW9uOi9be31dLyxkaXJlY3RpdmU6LyMuKi8seWFtbGlzaDp7cGF0dGVybjovKF5bXlxcU1xcclxcbl0qKS0tLSg/Olxcclxcbj98XFxuKSg/Oi4qKD86XFxyXFxuP3xcXG4pKSo/W15cXFNcXHJcXG5dKlxcLlxcLlxcLiQvbSxsb29rYmVoaW5kOiEwLGluc2lkZTplLmxhbmd1YWdlcy55YW1sLGFsaWFzOlwibGFuZ3VhZ2UteWFtbFwifX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInRhcFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMudGNsPXtjb21tZW50OntwYXR0ZXJuOi8oXnxbXlxcXFxdKSMuKi8sbG9va2JlaGluZDohMH0sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlteXCJcXFxcXFxyXFxuXXxcXFxcKD86XFxyXFxufFtcXHNcXFNdKSkqXCIvLGdyZWVkeTohMH0sdmFyaWFibGU6W3twYXR0ZXJuOi8oXFwkKSg/Ojo6KT8oPzpbYS16QS1aMC05XSs6OikqXFx3Ky8sbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhcXCQpe1tefV0rfS8sbG9va2JlaGluZDohMH0se3BhdHRlcm46LyheXFxzKnNldFsgXFx0XSspKD86OjopPyg/OlthLXpBLVowLTldKzo6KSpcXHcrL20sbG9va2JlaGluZDohMH1dLGZ1bmN0aW9uOntwYXR0ZXJuOi8oXlxccypwcm9jWyBcXHRdKylbXlxcc10rL20sbG9va2JlaGluZDohMH0sYnVpbHRpbjpbe3BhdHRlcm46LyheXFxzKikoPzpwcm9jfHJldHVybnxjbGFzc3xlcnJvcnxldmFsfGV4aXR8Zm9yfGZvcmVhY2h8aWZ8c3dpdGNofHdoaWxlfGJyZWFrfGNvbnRpbnVlKVxcYi9tLGxvb2tiZWhpbmQ6ITB9LC9cXGIoPzplbHNlaWZ8ZWxzZSlcXGIvXSxzY29wZTp7cGF0dGVybjovKF5cXHMqKSg/Omdsb2JhbHx1cHZhcnx2YXJpYWJsZSlcXGIvbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwiY29uc3RhbnRcIn0sa2V5d29yZDp7cGF0dGVybjovKF5cXHMqfFxcWykoPzphZnRlcnxhcHBlbmR8YXBwbHl8YXJyYXl8YXV0b18oPzpleGVjb2t8aW1wb3J0fGxvYWR8bWtpbmRleHxxdWFsaWZ5fHJlc2V0KXxhdXRvbWtpbmRleF9vbGR8YmdlcnJvcnxiaW5hcnl8Y2F0Y2h8Y2R8Y2hhbnxjbG9ja3xjbG9zZXxjb25jYXR8ZGRlfGRpY3R8ZW5jb2Rpbmd8ZW9mfGV4ZWN8ZXhwcnxmYmxvY2tlZHxmY29uZmlndXJlfGZjb3B5fGZpbGUoPzpldmVudHxuYW1lKT98Zmx1c2h8Z2V0c3xnbG9ifGhpc3Rvcnl8aHR0cHxpbmNyfGluZm98aW50ZXJwfGpvaW58bGFwcGVuZHxsYXNzaWdufGxpbmRleHxsaW5zZXJ0fGxpc3R8bGxlbmd0aHxsb2FkfGxyYW5nZXxscmVwZWF0fGxyZXBsYWNlfGxyZXZlcnNlfGxzZWFyY2h8bHNldHxsc29ydHxtYXRoKD86ZnVuY3xvcCl8bWVtb3J5fG1zZ2NhdHxuYW1lc3BhY2V8b3BlbnxwYWNrYWdlfHBhcnJheXxwaWR8cGtnX21rSW5kZXh8cGxhdGZvcm18cHV0c3xwd2R8cmVfc3ludGF4fHJlYWR8cmVmY2hhbnxyZWdleHB8cmVnaXN0cnl8cmVnc3VifHJlbmFtZXxTYWZlX0Jhc2V8c2NhbnxzZWVrfHNldHxzb2NrZXR8c291cmNlfHNwbGl0fHN0cmluZ3xzdWJzdHxUY2x8dGNsKD86X2VuZE9mV29yZHxfZmluZExpYnJhcnl8c3RhcnRPZig/Ok5leHR8UHJldmlvdXMpV29yZHx3b3JkQnJlYWsoPzpBZnRlcnxCZWZvcmUpfHRlc3R8dmFycyl8dGVsbHx0aW1lfHRtfHRyYWNlfHVua25vd258dW5sb2FkfHVuc2V0fHVwZGF0ZXx1cGxldmVsfHZ3YWl0KVxcYi9tLGxvb2tiZWhpbmQ6ITB9LG9wZXJhdG9yOi8hPT98XFwqXFwqP3w9PXwmJj98XFx8XFx8P3w8Wz08XT98Pls9Pl0/fFstK35cXC8lP15dfFxcYig/OmVxfG5lfGlufG5pKVxcYi8scHVuY3R1YXRpb246L1t7fSgpXFxbXFxdXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJ0Y2xcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXt2YXIgdD1cIig/OlxcXFwoW158KV0rXFxcXCl8XFxcXFtbXlxcXFxdXStcXFxcXXxcXFxce1tefV0rXFxcXH0pK1wiLG49e2Nzczp7cGF0dGVybjovXFx7W159XStcXH0vLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy5jc3N9fSxcImNsYXNzLWlkXCI6e3BhdHRlcm46LyhcXCgpW14pXSsoPz1cXCkpLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwiYXR0ci12YWx1ZVwifSxsYW5nOntwYXR0ZXJuOi8oXFxbKVteXFxdXSsoPz1cXF0pLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwiYXR0ci12YWx1ZVwifSxwdW5jdHVhdGlvbjovW1xcXFxcXC9dXFxkK3xcXFMvfTtlLmxhbmd1YWdlcy50ZXh0aWxlPWUubGFuZ3VhZ2VzLmV4dGVuZChcIm1hcmt1cFwiLHtwaHJhc2U6e3BhdHRlcm46LyhefFxccnxcXG4pXFxTW1xcc1xcU10qPyg/PSR8XFxyP1xcblxccj9cXG58XFxyXFxyKS8sbG9va2JlaGluZDohMCxpbnNpZGU6e1wiYmxvY2stdGFnXCI6e3BhdHRlcm46UmVnRXhwKFwiXlthLXpdXFxcXHcqKD86XCIrdCtcInxbPD49KCldKSpcXFxcLlwiKSxpbnNpZGU6e21vZGlmaWVyOntwYXR0ZXJuOlJlZ0V4cChcIiheW2Etel1cXFxcdyopKD86XCIrdCtcInxbPD49KCldKSsoPz1cXFxcLilcIiksbG9va2JlaGluZDohMCxpbnNpZGU6bn0sdGFnOi9eW2Etel1cXHcqLyxwdW5jdHVhdGlvbjovXFwuJC99fSxsaXN0OntwYXR0ZXJuOlJlZ0V4cChcIl5bKiNdKyg/OlwiK3QrXCIpP1xcXFxzKy4rXCIsXCJtXCIpLGluc2lkZTp7bW9kaWZpZXI6e3BhdHRlcm46UmVnRXhwKFwiKF5bKiNdKylcIit0KSxsb29rYmVoaW5kOiEwLGluc2lkZTpufSxwdW5jdHVhdGlvbjovXlsqI10rL319LHRhYmxlOntwYXR0ZXJuOlJlZ0V4cChcIl4oPzooPzpcIit0K1wifFs8Pj0oKV5+XSkrXFxcXC5cXFxccyopPyg/OlxcXFx8KD86KD86XCIrdCtcInxbPD49KClefl9dfFtcXFxcXFxcXC9dXFxcXGQrKStcXFxcLik/W158XSopK1xcXFx8XCIsXCJtXCIpLGluc2lkZTp7bW9kaWZpZXI6e3BhdHRlcm46UmVnRXhwKFwiKF58XFxcXHwoPzpcXFxccj9cXFxcbnxcXFxccik/KSg/OlwiK3QrXCJ8Wzw+PSgpXn5fXXxbXFxcXFxcXFwvXVxcXFxkKykrKD89XFxcXC4pXCIpLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOm59LHB1bmN0dWF0aW9uOi9cXHx8XlxcLi99fSxpbmxpbmU6e3BhdHRlcm46UmVnRXhwKFwiKFxcXFwqXFxcXCp8X198XFxcXD9cXFxcP3xbKl8lQCtcXFxcLV5+XSkoPzpcIit0K1wiKT8uKz9cXFxcMVwiKSxpbnNpZGU6e2JvbGQ6e3BhdHRlcm46UmVnRXhwKFwiKF4oXFxcXCpcXFxcKj8pKD86XCIrdCtcIik/KS4rPyg/PVxcXFwyKVwiKSxsb29rYmVoaW5kOiEwfSxpdGFsaWM6e3BhdHRlcm46UmVnRXhwKFwiKF4oX18/KSg/OlwiK3QrXCIpPykuKz8oPz1cXFxcMilcIiksbG9va2JlaGluZDohMH0sY2l0ZTp7cGF0dGVybjpSZWdFeHAoXCIoXlxcXFw/XFxcXD8oPzpcIit0K1wiKT8pLis/KD89XFxcXD9cXFxcPylcIiksbG9va2JlaGluZDohMCxhbGlhczpcInN0cmluZ1wifSxjb2RlOntwYXR0ZXJuOlJlZ0V4cChcIiheQCg/OlwiK3QrXCIpPykuKz8oPz1AKVwiKSxsb29rYmVoaW5kOiEwLGFsaWFzOlwia2V5d29yZFwifSxpbnNlcnRlZDp7cGF0dGVybjpSZWdFeHAoXCIoXlxcXFwrKD86XCIrdCtcIik/KS4rPyg/PVxcXFwrKVwiKSxsb29rYmVoaW5kOiEwfSxkZWxldGVkOntwYXR0ZXJuOlJlZ0V4cChcIiheLSg/OlwiK3QrXCIpPykuKz8oPz0tKVwiKSxsb29rYmVoaW5kOiEwfSxzcGFuOntwYXR0ZXJuOlJlZ0V4cChcIiheJSg/OlwiK3QrXCIpPykuKz8oPz0lKVwiKSxsb29rYmVoaW5kOiEwfSxtb2RpZmllcjp7cGF0dGVybjpSZWdFeHAoXCIoXlxcXFwqXFxcXCp8X198XFxcXD9cXFxcP3xbKl8lQCtcXFxcLV5+XSlcIit0KSxsb29rYmVoaW5kOiEwLGluc2lkZTpufSxwdW5jdHVhdGlvbjovWypfJT9AK1xcLV5+XSsvfX0sXCJsaW5rLXJlZlwiOntwYXR0ZXJuOi9eXFxbW15cXF1dK1xcXVxcUyskL20saW5zaWRlOntzdHJpbmc6e3BhdHRlcm46LyhcXFspW15cXF1dKyg/PVxcXSkvLGxvb2tiZWhpbmQ6ITB9LHVybDp7cGF0dGVybjovKFxcXSlcXFMrJC8sbG9va2JlaGluZDohMH0scHVuY3R1YXRpb246L1tcXFtcXF1dL319LGxpbms6e3BhdHRlcm46UmVnRXhwKCdcIig/OicrdCsnKT9bXlwiXStcIjouKz8oPz1bXlxcXFx3L10/KD86XFxcXHN8JCkpJyksaW5zaWRlOnt0ZXh0OntwYXR0ZXJuOlJlZ0V4cCgnKF5cIig/OicrdCsnKT8pW15cIl0rKD89XCIpJyksbG9va2JlaGluZDohMH0sbW9kaWZpZXI6e3BhdHRlcm46UmVnRXhwKCcoXlwiKScrdCksbG9va2JlaGluZDohMCxpbnNpZGU6bn0sdXJsOntwYXR0ZXJuOi8oOikuKy8sbG9va2JlaGluZDohMH0scHVuY3R1YXRpb246L1tcIjpdL319LGltYWdlOntwYXR0ZXJuOlJlZ0V4cChcIiEoPzpcIit0K1wifFs8Pj0oKV0pKlteIVxcXFxzKCldKyg/OlxcXFwoW14pXStcXFxcKSk/ISg/OjouKz8oPz1bXlxcXFx3L10/KD86XFxcXHN8JCkpKT9cIiksaW5zaWRlOntzb3VyY2U6e3BhdHRlcm46UmVnRXhwKFwiKF4hKD86XCIrdCtcInxbPD49KCldKSopW14hXFxcXHMoKV0rKD86XFxcXChbXildK1xcXFwpKT8oPz0hKVwiKSxsb29rYmVoaW5kOiEwLGFsaWFzOlwidXJsXCJ9LG1vZGlmaWVyOntwYXR0ZXJuOlJlZ0V4cChcIiheISkoPzpcIit0K1wifFs8Pj0oKV0pK1wiKSxsb29rYmVoaW5kOiEwLGluc2lkZTpufSx1cmw6e3BhdHRlcm46Lyg6KS4rLyxsb29rYmVoaW5kOiEwfSxwdW5jdHVhdGlvbjovWyE6XS99fSxmb290bm90ZTp7cGF0dGVybjovXFxiXFxbXFxkK1xcXS8sYWxpYXM6XCJjb21tZW50XCIsaW5zaWRlOntwdW5jdHVhdGlvbjovXFxbfFxcXS99fSxhY3JvbnltOntwYXR0ZXJuOi9cXGJbQS1aXFxkXStcXChbXildK1xcKS8saW5zaWRlOntjb21tZW50OntwYXR0ZXJuOi8oXFwoKVteKV0rKD89XFwpKS8sbG9va2JlaGluZDohMH0scHVuY3R1YXRpb246L1soKV0vfX0sbWFyazp7cGF0dGVybjovXFxiXFwoKD86VE18UnxDKVxcKS8sYWxpYXM6XCJjb21tZW50XCIsaW5zaWRlOntwdW5jdHVhdGlvbjovWygpXS99fX19fSk7dmFyIHI9e2lubGluZTplLmxhbmd1YWdlcy50ZXh0aWxlLnBocmFzZS5pbnNpZGUuaW5saW5lLGxpbms6ZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLmxpbmssaW1hZ2U6ZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLmltYWdlLGZvb3Rub3RlOmUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS5mb290bm90ZSxhY3JvbnltOmUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS5hY3JvbnltLG1hcms6ZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLm1hcmt9O2UubGFuZ3VhZ2VzLnRleHRpbGUudGFnLnBhdHRlcm49LzxcXC8/KD8hXFxkKVthLXowLTldKyg/OlxccytbXlxccz5cXC89XSsoPzo9KD86KFwifCcpKD86XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKSpcXDF8W15cXHMnXCI+PV0rKSk/KSpcXHMqXFwvPz4vaSxlLmxhbmd1YWdlcy50ZXh0aWxlLnBocmFzZS5pbnNpZGUuaW5saW5lLmluc2lkZS5ib2xkLmluc2lkZT1yLGUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS5pbmxpbmUuaW5zaWRlLml0YWxpYy5pbnNpZGU9cixlLmxhbmd1YWdlcy50ZXh0aWxlLnBocmFzZS5pbnNpZGUuaW5saW5lLmluc2lkZS5pbnNlcnRlZC5pbnNpZGU9cixlLmxhbmd1YWdlcy50ZXh0aWxlLnBocmFzZS5pbnNpZGUuaW5saW5lLmluc2lkZS5kZWxldGVkLmluc2lkZT1yLGUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS5pbmxpbmUuaW5zaWRlLnNwYW4uaW5zaWRlPXIsZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLnRhYmxlLmluc2lkZS5pbmxpbmU9ci5pbmxpbmUsZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLnRhYmxlLmluc2lkZS5saW5rPXIubGluayxlLmxhbmd1YWdlcy50ZXh0aWxlLnBocmFzZS5pbnNpZGUudGFibGUuaW5zaWRlLmltYWdlPXIuaW1hZ2UsZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLnRhYmxlLmluc2lkZS5mb290bm90ZT1yLmZvb3Rub3RlLGUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS50YWJsZS5pbnNpZGUuYWNyb255bT1yLmFjcm9ueW0sZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLnRhYmxlLmluc2lkZS5tYXJrPXIubWFya30oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInRleHRpbGVcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDE2NSksbz1uKDE2OCk7ZnVuY3Rpb24gYShlKXtlLnJlZ2lzdGVyKHIpLGUucmVnaXN0ZXIobyk7dmFyIHQ9ZS51dGlsLmNsb25lKGUubGFuZ3VhZ2VzLnR5cGVzY3JpcHQpO2UubGFuZ3VhZ2VzLnRzeD1lLmxhbmd1YWdlcy5leHRlbmQoXCJqc3hcIix0KX1lLmV4cG9ydHM9YSxhLmRpc3BsYXlOYW1lPVwidHN4XCIsYS5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7ZS5sYW5ndWFnZXMudHQyPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2NvbW1lbnQ6e3BhdHRlcm46LyMuKnxcXFslI1tcXHNcXFNdKj8lXFxdLyxsb29rYmVoaW5kOiEwfSxrZXl3b3JkOi9cXGIoPzpCTE9DS3xDQUxMfENBU0V8Q0FUQ0h8Q0xFQVJ8REVCVUd8REVGQVVMVHxFTFNFfEVMU0lGfEVORHxGSUxURVJ8RklOQUx8Rk9SRUFDSHxHRVR8SUZ8SU58SU5DTFVERXxJTlNFUlR8TEFTVHxNQUNST3xNRVRBfE5FWFR8UEVSTHxQUk9DRVNTfFJBV1BFUkx8UkVUVVJOfFNFVHxTVE9QfFRBR1N8VEhST1d8VFJZfFNXSVRDSHxVTkxFU1N8VVNFfFdISUxFfFdSQVBQRVIpXFxiLyxwdW5jdHVhdGlvbjovW1tcXF17fSwoKV0vfSksZGVsZXRlIGUubGFuZ3VhZ2VzLnR0Mi5vcGVyYXRvcixkZWxldGUgZS5sYW5ndWFnZXMudHQyLnZhcmlhYmxlLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInR0MlwiLFwibnVtYmVyXCIse29wZXJhdG9yOi89Wz49XT98IT0/fDw9P3w+PT98JiZ8XFx8XFx8P3xcXGIoPzphbmR8b3J8bm90KVxcYi8sdmFyaWFibGU6e3BhdHRlcm46L1thLXpdXFx3Kig/OlxccypcXC5cXHMqKD86XFxkK3xcXCQ/W2Etel1cXHcqKSkqL2l9fSksZGVsZXRlIGUubGFuZ3VhZ2VzLnR0Mi5kZWxpbWl0ZXIsZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwidHQyXCIsXCJrZXl3b3JkXCIse2RlbGltaXRlcjp7cGF0dGVybjovXig/OlxcWyV8JSUpLT98LT8lXSQvLGFsaWFzOlwicHVuY3R1YXRpb25cIn19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJ0dDJcIixcInN0cmluZ1wiLHtcInNpbmdsZS1xdW90ZWQtc3RyaW5nXCI6e3BhdHRlcm46LydbXlxcXFwnXSooPzpcXFxcW1xcc1xcU11bXlxcXFwnXSopKicvLGdyZWVkeTohMCxhbGlhczpcInN0cmluZ1wifSxcImRvdWJsZS1xdW90ZWQtc3RyaW5nXCI6e3BhdHRlcm46L1wiW15cXFxcXCJdKig/OlxcXFxbXFxzXFxTXVteXFxcXFwiXSopKlwiLyxncmVlZHk6ITAsYWxpYXM6XCJzdHJpbmdcIixpbnNpZGU6e3ZhcmlhYmxlOntwYXR0ZXJuOi9cXCQoPzpbYS16XVxcdyooPzpcXC4oPzpcXGQrfFxcJD9bYS16XVxcdyopKSopL2l9fX19KSxkZWxldGUgZS5sYW5ndWFnZXMudHQyLnN0cmluZyxlLmhvb2tzLmFkZChcImJlZm9yZS10b2tlbml6ZVwiLGZ1bmN0aW9uKHQpe2UubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl0uYnVpbGRQbGFjZWhvbGRlcnModCxcInR0MlwiLC9cXFslW1xcc1xcU10rPyVcXF0vZyl9KSxlLmhvb2tzLmFkZChcImFmdGVyLXRva2VuaXplXCIsZnVuY3Rpb24odCl7ZS5sYW5ndWFnZXNbXCJtYXJrdXAtdGVtcGxhdGluZ1wiXS50b2tlbml6ZVBsYWNlaG9sZGVycyh0LFwidHQyXCIpfSl9KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJ0dDJcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnR3aWc9e2NvbW1lbnQ6L1xceyNbXFxzXFxTXSo/I1xcfS8sdGFnOntwYXR0ZXJuOi9cXHtcXHtbXFxzXFxTXSo/XFx9XFx9fFxceyVbXFxzXFxTXSo/JVxcfS8saW5zaWRlOntsZDp7cGF0dGVybjovXig/Olxce1xcey0/fFxceyUtP1xccypcXHcrKS8saW5zaWRlOntwdW5jdHVhdGlvbjovXig/Olxce1xce3xcXHslKS0/LyxrZXl3b3JkOi9cXHcrL319LHJkOntwYXR0ZXJuOi8tPyg/OiVcXH18XFx9XFx9KSQvLGluc2lkZTp7cHVuY3R1YXRpb246Ly4qL319LHN0cmluZzp7cGF0dGVybjovKFwifCcpKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8saW5zaWRlOntwdW5jdHVhdGlvbjovXlsnXCJdfFsnXCJdJC99fSxrZXl3b3JkOi9cXGIoPzpldmVufGlmfG9kZClcXGIvLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2V8bnVsbClcXGIvLG51bWJlcjovXFxiMHhbXFxkQS1GYS1mXSt8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86W0VlXVstK10/XFxkKyk/LyxvcGVyYXRvcjpbe3BhdHRlcm46LyhcXHMpKD86YW5kfGItYW5kfGIteG9yfGItb3J8ZW5kcyB3aXRofGlufGlzfG1hdGNoZXN8bm90fG9yfHNhbWUgYXN8c3RhcnRzIHdpdGgpKD89XFxzKS8sbG9va2JlaGluZDohMH0sL1s9PD5dPT98IT18XFwqXFwqP3xcXC9cXC8/fFxcPzo/fFstK34lfF0vXSxwcm9wZXJ0eTovXFxiW2EtekEtWl9dXFx3KlxcYi8scHVuY3R1YXRpb246L1soKVxcW1xcXXt9Oi4sXS99fSxvdGhlcjp7cGF0dGVybjovXFxTKD86W1xcc1xcU10qXFxTKT8vLGluc2lkZTplLmxhbmd1YWdlcy5tYXJrdXB9fX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwidHdpZ1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMTYzKTtmdW5jdGlvbiBvKGUpe2UucmVnaXN0ZXIociksZS5sYW5ndWFnZXMudmJuZXQ9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiYmFzaWNcIix7a2V5d29yZDovKD86XFxiKD86QURESEFORExFUnxBRERSRVNTT0Z8QUxJQVN8QU5EfEFOREFMU098QVN8QkVFUHxCTE9BRHxCT09MRUFOfEJTQVZFfEJZUkVGfEJZVEV8QllWQUx8Q0FMTCg/OiBBQlNPTFVURSk/fENBU0V8Q0FUQ0h8Q0JPT0x8Q0JZVEV8Q0NIQVJ8Q0RBVEV8Q0RFQ3xDREJMfENIQUlOfENIQVJ8Q0hESVJ8Q0lOVHxDTEFTU3xDTEVBUnxDTE5HfENMT1NFfENMU3xDT0JKfENPTXxDT01NT058Q09OU1R8Q09OVElOVUV8Q1NCWVRFfENTSE9SVHxDU05HfENTVFJ8Q1RZUEV8Q1VJTlR8Q1VMTkd8Q1VTSE9SVHxEQVRBfERBVEV8REVDSU1BTHxERUNMQVJFfERFRkFVTFR8REVGKD86IEZOfCBTRUd8REJMfElOVHxMTkd8U05HfFNUUil8REVMRUdBVEV8RElNfERJUkVDVENBU1R8RE98RE9VQkxFfEVMU0V8RUxTRUlGfEVORHxFTlVNfEVOVklST058RVJBU0V8RVJST1J8RVZFTlR8RVhJVHxGQUxTRXxGSUVMRHxGSUxFU3xGSU5BTExZfEZPUig/OiBFQUNIKT98RlJJRU5EfEZVTkNUSU9OfEdFVHxHRVRUWVBFfEdFVFhNTE5BTUVTUEFDRXxHTE9CQUx8R09TVUJ8R09UT3xIQU5ETEVTfElGfElNUExFTUVOVFN8SU1QT1JUU3xJTnxJTkhFUklUU3xJTlBVVHxJTlRFR0VSfElOVEVSRkFDRXxJT0NUTHxJU3xJU05PVHxLRVl8S0lMTHxMSU5FIElOUFVUfExFVHxMSUJ8TElLRXxMT0NBVEV8TE9DS3xMT05HfExPT1B8TFNFVHxNRXxNS0RJUnxNT0R8TU9EVUxFfE1VU1RJTkhFUklUfE1VU1RPVkVSUklERXxNWUJBU0V8TVlDTEFTU3xOQU1FfE5BTUVTUEFDRXxOQVJST1dJTkd8TkVXfE5FWFR8Tk9UfE5PVEhJTkd8Tk9USU5IRVJJVEFCTEV8Tk9UT1ZFUlJJREFCTEV8T0JKRUNUfE9GfE9GRnxPTig/OiBDT018IEVSUk9SfCBLRVl8IFRJTUVSKT98T1BFUkFUT1J8T1BFTnxPUFRJT04oPzogQkFTRSk/fE9QVElPTkFMfE9SfE9SRUxTRXxPVVR8T1ZFUkxPQURTfE9WRVJSSURBQkxFfE9WRVJSSURFU3xQQVJBTUFSUkFZfFBBUlRJQUx8UE9LRXxQUklWQVRFfFBST1BFUlRZfFBST1RFQ1RFRHxQVUJMSUN8UFVUfFJBSVNFRVZFTlR8UkVBRHxSRUFET05MWXxSRURJTXxSRU18UkVNT1ZFSEFORExFUnxSRVNUT1JFfFJFU1VNRXxSRVRVUk58Uk1ESVJ8UlNFVHxSVU58U0JZVEV8U0VMRUNUKD86IENBU0UpP3xTRVR8U0hBRE9XU3xTSEFSRUR8U0hPUlR8U0lOR0xFfFNIRUxMfFNMRUVQfFNUQVRJQ3xTVEVQfFNUT1B8U1RSSU5HfFNUUlVDVFVSRXxTVUJ8U1lOQ0xPQ0t8U1dBUHxTWVNURU18VEhFTnxUSFJPV3xUSU1FUnxUT3xUUk9GRnxUUk9OfFRSVUV8VFJZfFRSWUNBU1R8VFlQRXxUWVBFT0Z8VUlOVEVHRVJ8VUxPTkd8VU5MT0NLfFVOVElMfFVTSE9SVHxVU0lOR3xWSUVXIFBSSU5UfFdBSVR8V0VORHxXSEVOfFdISUxFfFdJREVOSU5HfFdJVEh8V0lUSEVWRU5UU3xXUklURXxXUklURU9OTFl8WE9SKXxcXEIoPzojQ09OU1R8I0VMU0V8I0VMU0VJRnwjRU5EfCNJRikpKD86XFwkfFxcYikvaSxjb21tZW50Olt7cGF0dGVybjovKD86IXxSRU1cXGIpLisvaSxpbnNpZGU6e2tleXdvcmQ6L15SRU0vaX19LHtwYXR0ZXJuOi8oXnxbXlxcXFw6XSknLiovLGxvb2tiZWhpbmQ6ITB9XX0pfWUuZXhwb3J0cz1vLG8uZGlzcGxheU5hbWU9XCJ2Ym5ldFwiLG8uYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLnZlbG9jaXR5PWUubGFuZ3VhZ2VzLmV4dGVuZChcIm1hcmt1cFwiLHt9KTt2YXIgdD17dmFyaWFibGU6e3BhdHRlcm46LyhefFteXFxcXF0oPzpcXFxcXFxcXCkqKVxcJCE/KD86W2Etel1bXFx3LV0qKD86XFwoW14pXSpcXCkpPyg/OlxcLlthLXpdW1xcdy1dKig/OlxcKFteKV0qXFwpKT98XFxbW15cXF1dK10pKnx7W159XSt9KS9pLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOnt9fSxzdHJpbmc6e3BhdHRlcm46L1wiW15cIl0qXCJ8J1teJ10qJy8sZ3JlZWR5OiEwfSxudW1iZXI6L1xcYlxcZCtcXGIvLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2UpXFxiLyxvcGVyYXRvcjovWz0hPD5dPT98WysqXFwvJS1dfCYmfFxcfFxcfHxcXC5cXC58XFxiKD86ZXF8Z1tldF18bFtldF18big/OmV8b3QpKVxcYi8scHVuY3R1YXRpb246L1soKXt9W1xcXTosLl0vfTt0LnZhcmlhYmxlLmluc2lkZT17c3RyaW5nOnQuc3RyaW5nLGZ1bmN0aW9uOntwYXR0ZXJuOi8oW15cXHctXSlbYS16XVtcXHctXSooPz1cXCgpLyxsb29rYmVoaW5kOiEwfSxudW1iZXI6dC5udW1iZXIsYm9vbGVhbjp0LmJvb2xlYW4scHVuY3R1YXRpb246dC5wdW5jdHVhdGlvbn0sZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwidmVsb2NpdHlcIixcImNvbW1lbnRcIix7dW5wYXJzZWQ6e3BhdHRlcm46LyhefFteXFxcXF0pI1xcW1xcW1tcXHNcXFNdKj9dXSMvLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwLGluc2lkZTp7cHVuY3R1YXRpb246L14jXFxbXFxbfF1dIyQvfX0sXCJ2ZWxvY2l0eS1jb21tZW50XCI6W3twYXR0ZXJuOi8oXnxbXlxcXFxdKSNcXCpbXFxzXFxTXSo/XFwqIy8sbG9va2JlaGluZDohMCxncmVlZHk6ITAsYWxpYXM6XCJjb21tZW50XCJ9LHtwYXR0ZXJuOi8oXnxbXlxcXFxdKSMjLiovLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwLGFsaWFzOlwiY29tbWVudFwifV0sZGlyZWN0aXZlOntwYXR0ZXJuOi8oXnxbXlxcXFxdKD86XFxcXFxcXFwpKikjQD8oPzpbYS16XVtcXHctXSp8e1thLXpdW1xcdy1dKn0pKD86XFxzKlxcKCg/OlteKCldfFxcKFteKCldKlxcKSkqXFwpKT8vaSxsb29rYmVoaW5kOiEwLGluc2lkZTp7a2V5d29yZDp7cGF0dGVybjovXiNAPyg/OlthLXpdW1xcdy1dKnx7W2Etel1bXFx3LV0qfSl8XFxiaW5cXGIvLGluc2lkZTp7cHVuY3R1YXRpb246L1t7fV0vfX0scmVzdDp0fX0sdmFyaWFibGU6dC52YXJpYWJsZX0pLGUubGFuZ3VhZ2VzLnZlbG9jaXR5LnRhZy5pbnNpZGVbXCJhdHRyLXZhbHVlXCJdLmluc2lkZS5yZXN0PWUubGFuZ3VhZ2VzLnZlbG9jaXR5fShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwidmVsb2NpdHlcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnZlcmlsb2c9e2NvbW1lbnQ6L1xcL1xcLy4qfFxcL1xcKltcXHNcXFNdKj9cXCpcXC8vLHN0cmluZzp7cGF0dGVybjovXCIoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXxbXlwiXFxcXFxcclxcbl0pKlwiLyxncmVlZHk6ITB9LHByb3BlcnR5Oi9cXEJcXCRcXHcrXFxiLyxjb25zdGFudDovXFxCYFxcdytcXGIvLGZ1bmN0aW9uOi9cXHcrKD89XFwoKS8sa2V5d29yZDovXFxiKD86YWxpYXN8YW5kfGFzc2VydHxhc3NpZ258YXNzdW1lfGF1dG9tYXRpY3xiZWZvcmV8YmVnaW58YmluZHxiaW5zfGJpbnNvZnxiaXR8YnJlYWt8YnVmfGJ1ZmlmMHxidWZpZjF8Ynl0ZXxjbGFzc3xjYXNlfGNhc2V4fGNhc2V6fGNlbGx8Y2hhbmRsZXxjbG9ja2luZ3xjbW9zfGNvbmZpZ3xjb25zdHxjb25zdHJhaW50fGNvbnRleHR8Y29udGludWV8Y292ZXJ8Y292ZXJncm91cHxjb3ZlcnBvaW50fGNyb3NzfGRlYXNzaWdufGRlZmF1bHR8ZGVmcGFyYW18ZGVzaWdufGRpc2FibGV8ZGlzdHxkb3xlZGdlfGVsc2V8ZW5kfGVuZGNhc2V8ZW5kY2xhc3N8ZW5kY2xvY2tpbmd8ZW5kY29uZmlnfGVuZGZ1bmN0aW9ufGVuZGdlbmVyYXRlfGVuZGdyb3VwfGVuZGludGVyZmFjZXxlbmRtb2R1bGV8ZW5kcGFja2FnZXxlbmRwcmltaXRpdmV8ZW5kcHJvZ3JhbXxlbmRwcm9wZXJ0eXxlbmRzcGVjaWZ5fGVuZHNlcXVlbmNlfGVuZHRhYmxlfGVuZHRhc2t8ZW51bXxldmVudHxleHBlY3R8ZXhwb3J0fGV4dGVuZHN8ZXh0ZXJufGZpbmFsfGZpcnN0X21hdGNofGZvcnxmb3JjZXxmb3JlYWNofGZvcmV2ZXJ8Zm9ya3xmb3Jram9pbnxmdW5jdGlvbnxnZW5lcmF0ZXxnZW52YXJ8aGlnaHowfGhpZ2h6MXxpZnxpZmZ8aWZub25lfGlnbm9yZV9iaW5zfGlsbGVnYWxfYmluc3xpbXBvcnR8aW5jZGlyfGluY2x1ZGV8aW5pdGlhbHxpbm91dHxpbnB1dHxpbnNpZGV8aW5zdGFuY2V8aW50fGludGVnZXJ8aW50ZXJmYWNlfGludGVyc2VjdHxqb2lufGpvaW5fYW55fGpvaW5fbm9uZXxsYXJnZXxsaWJsaXN0fGxpYnJhcnl8bG9jYWx8bG9jYWxwYXJhbXxsb2dpY3xsb25naW50fG1hY3JvbW9kdWxlfG1hdGNoZXN8bWVkaXVtfG1vZHBvcnR8bW9kdWxlfG5hbmR8bmVnZWRnZXxuZXd8bm1vc3xub3J8bm9zaG93Y2FuY2VsbGVkfG5vdHxub3RpZjB8bm90aWYxfG51bGx8b3J8b3V0cHV0fHBhY2thZ2V8cGFja2VkfHBhcmFtZXRlcnxwbW9zfHBvc2VkZ2V8cHJpbWl0aXZlfHByaW9yaXR5fHByb2dyYW18cHJvcGVydHl8cHJvdGVjdGVkfHB1bGwwfHB1bGwxfHB1bGxkb3dufHB1bGx1cHxwdWxzZXN0eWxlX29uZXZlbnR8cHVsc2VzdHlsZV9vbmRldGVjdHxwdXJlfHJhbmR8cmFuZGN8cmFuZGNhc2V8cmFuZHNlcXVlbmNlfHJjbW9zfHJlYWx8cmVhbHRpbWV8cmVmfHJlZ3xyZWxlYXNlfHJlcGVhdHxyZXR1cm58cm5tb3N8cnBtb3N8cnRyYW58cnRyYW5pZjB8cnRyYW5pZjF8c2NhbGFyZWR8c2VxdWVuY2V8c2hvcnRpbnR8c2hvcnRyZWFsfHNob3djYW5jZWxsZWR8c2lnbmVkfHNtYWxsfHNvbHZlfHNwZWNpZnl8c3BlY3BhcmFtfHN0YXRpY3xzdHJpbmd8c3Ryb25nMHxzdHJvbmcxfHN0cnVjdHxzdXBlcnxzdXBwbHkwfHN1cHBseTF8dGFibGV8dGFnZ2VkfHRhc2t8dGhpc3x0aHJvdWdob3V0fHRpbWV8dGltZXByZWNpc2lvbnx0aW1ldW5pdHx0cmFufHRyYW5pZjB8dHJhbmlmMXx0cml8dHJpMHx0cmkxfHRyaWFuZHx0cmlvcnx0cmlyZWd8dHlwZXx0eXBlZGVmfHVuaW9ufHVuaXF1ZXx1bnNpZ25lZHx1c2V8dXdpcmV8dmFyfHZlY3RvcmVkfHZpcnR1YWx8dm9pZHx3YWl0fHdhaXRfb3JkZXJ8d2FuZHx3ZWFrMHx3ZWFrMXx3aGlsZXx3aWxkY2FyZHx3aXJlfHdpdGh8d2l0aGlufHdvcnx4bm9yfHhvcilcXGIvLGltcG9ydGFudDovXFxiKD86YWx3YXlzX2xhdGNofGFsd2F5c19jb21ifGFsd2F5c19mZnxhbHdheXMpXFxiID9APy8sbnVtYmVyOi9cXEIjIz9cXGQrfCg/OlxcYlxcZCspPydbb2RiaF0gP1tcXGRhLWZ6eF8/XSt8XFxiXFxkKlsuX10/XFxkKyg/OmVbLStdP1xcZCspPy9pLG9wZXJhdG9yOi9bLSt7fV5+JSpcXC8/PSE8PiZ8XSsvLHB1bmN0dWF0aW9uOi9bW1xcXTsoKSwuOl0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwidmVyaWxvZ1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMudmhkbD17Y29tbWVudDovLS0uKy8sXCJ2aGRsLXZlY3RvcnNcIjp7cGF0dGVybjovXFxiW294Yl1cIltcXGRhLWZfXStcInxcIlswMXV4endsaC1dK1wiL2ksYWxpYXM6XCJudW1iZXJcIn0sXCJxdW90ZWQtZnVuY3Rpb25cIjp7cGF0dGVybjovXCJcXFMrP1wiKD89XFwoKS8sYWxpYXM6XCJmdW5jdGlvblwifSxzdHJpbmc6L1wiKD86W15cXFxcXCJcXHJcXG5dfFxcXFwoPzpcXHJcXG58W1xcc1xcU10pKSpcIi8sY29uc3RhbnQ6L1xcYig/OnVzZXxsaWJyYXJ5KVxcYi9pLGtleXdvcmQ6L1xcYig/OidhY3RpdmV8J2FzY2VuZGluZ3wnYmFzZXwnZGVsYXllZHwnZHJpdmluZ3wnZHJpdmluZ192YWx1ZXwnZXZlbnR8J2hpZ2h8J2ltYWdlfCdpbnN0YW5jZV9uYW1lfCdsYXN0X2FjdGl2ZXwnbGFzdF9ldmVudHwnbGFzdF92YWx1ZXwnbGVmdHwnbGVmdG9mfCdsZW5ndGh8J2xvd3wncGF0aF9uYW1lfCdwb3N8J3ByZWR8J3F1aWV0fCdyYW5nZXwncmV2ZXJzZV9yYW5nZXwncmlnaHR8J3JpZ2h0b2Z8J3NpbXBsZV9uYW1lfCdzdGFibGV8J3N1Y2N8J3RyYW5zYWN0aW9ufCd2YWx8J3ZhbHVlfGFjY2Vzc3xhZnRlcnxhbGlhc3xhbGx8YXJjaGl0ZWN0dXJlfGFycmF5fGFzc2VydHxhdHRyaWJ1dGV8YmVnaW58YmxvY2t8Ym9keXxidWZmZXJ8YnVzfGNhc2V8Y29tcG9uZW50fGNvbmZpZ3VyYXRpb258Y29uc3RhbnR8ZGlzY29ubmVjdHxkb3dudG98ZWxzZXxlbHNpZnxlbmR8ZW50aXR5fGV4aXR8ZmlsZXxmb3J8ZnVuY3Rpb258Z2VuZXJhdGV8Z2VuZXJpY3xncm91cHxndWFyZGVkfGlmfGltcHVyZXxpbnxpbmVydGlhbHxpbm91dHxpc3xsYWJlbHxsaWJyYXJ5fGxpbmthZ2V8bGl0ZXJhbHxsb29wfG1hcHxuZXd8bmV4dHxudWxsfG9mfG9ufG9wZW58b3RoZXJzfG91dHxwYWNrYWdlfHBvcnR8cG9zdHBvbmVkfHByb2NlZHVyZXxwcm9jZXNzfHB1cmV8cmFuZ2V8cmVjb3JkfHJlZ2lzdGVyfHJlamVjdHxyZXBvcnR8cmV0dXJufHNlbGVjdHxzZXZlcml0eXxzaGFyZWR8c2lnbmFsfHN1YnR5cGV8dGhlbnx0b3x0cmFuc3BvcnR8dHlwZXx1bmFmZmVjdGVkfHVuaXRzfHVudGlsfHVzZXx2YXJpYWJsZXx3YWl0fHdoZW58d2hpbGV8d2l0aClcXGIvaSxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi9pLGZ1bmN0aW9uOi9cXHcrKD89XFwoKS8sbnVtYmVyOi8nWzAxdXh6d2xoLV0nfFxcYig/OlxcZCsjW1xcZGEtZl8uXSsjfFxcZFtcXGRfLl0qKSg/OmVbLStdP1xcZCspPy9pLG9wZXJhdG9yOi9bPD5dPT98Oj18Wy0rKlxcLyY9XXxcXGIoPzphYnN8bm90fG1vZHxyZW18c2xsfHNybHxzbGF8c3JhfHJvbHxyb3J8YW5kfG9yfG5hbmR8eG5vcnx4b3J8bm9yKVxcYi9pLHB1bmN0dWF0aW9uOi9be31bXFxdOygpLC46XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJ2aGRsXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy52aW09e3N0cmluZzovXCIoPzpbXlwiXFxcXFxcclxcbl18XFxcXC4pKlwifCcoPzpbXidcXHJcXG5dfCcnKSonLyxjb21tZW50Oi9cIi4qLyxmdW5jdGlvbjovXFx3Kyg/PVxcKCkvLGtleXdvcmQ6L1xcYig/OmFifGFiYnJldmlhdGV8YWJjfGFiY2xlYXJ8YWJvfGFib3ZlbGVmdHxhbHxhbGx8YXJnYXxhcmdhZGR8YXJnZHxhcmdkZWxldGV8YXJnZG98YXJnZXxhcmdlZGl0fGFyZ2d8YXJnZ2xvYmFsfGFyZ2x8YXJnbG9jYWx8YXJ8YXJnc3xhcmd1fGFyZ3VtZW50fGFzfGFzY2lpfGJhZHxiYWRkfGJhfGJhbGx8YmR8YmRlbGV0ZXxiZXxiZWx8YmVsb3dyaWdodHxiZnxiZmlyc3R8Ymx8Ymxhc3R8Ym18Ym1vZGlmaWVkfGJufGJuZXh0fGJOfGJOZXh0fGJvfGJvdHJpZ2h0fGJwfGJwcmV2aW91c3xicmVhfGJyZWFrfGJyZWFrYXxicmVha2FkZHxicmVha2R8YnJlYWtkZWx8YnJlYWtsfGJyZWFrbGlzdHxicnxicmV3aW5kfGJyb3xicm93c2V8YnVmZG98YnxidWZmZXJ8YnVmZmVyc3xidW58YnVubG9hZHxid3xid2lwZW91dHxjYXxjYWJicmV2fGNhYmN8Y2FiY2xlYXJ8Y2FkZGJ8Y2FkZGJ1ZmZlcnxjYWR8Y2FkZGV4cHJ8Y2FkZGZ8Y2FkZGZpbGV8Y2FsfGNhbGx8Y2F0fGNhdGNofGNifGNidWZmZXJ8Y2N8Y2NsfGNjbG9zZXxjZHxjZXxjZW50ZXJ8Y2V4fGNleHByfGNmfGNmaWxlfGNmaXJ8Y2ZpcnN0fGNnZXRifGNnZXRidWZmZXJ8Y2dldGV8Y2dldGV4cHJ8Y2d8Y2dldGZpbGV8Y3xjaGFuZ2V8Y2hhbmdlc3xjaGR8Y2hkaXJ8Y2hlfGNoZWNrcGF0aHxjaGVja3R8Y2hlY2t0aW1lfGNsYXxjbGFzdHxjbHxjbGlzdHxjbG98Y2xvc2V8Y21hcGN8Y21hcGNsZWFyfGNuZXd8Y25ld2VyfGNufGNuZXh0fGNOfGNOZXh0fGNuZnxjbmZpbGV8Y05mY05maWxlfGNub3JlYXxjbm9yZWFiYnJldnxjb2x8Y29sZGVyfGNvbG98Y29sb3JzY2hlbWV8Y29tY3xjb21jbGVhcnxjb21wfGNvbXBpbGVyfGNvbmZ8Y29uZmlybXxjb258Y29udGludWV8Y29wZXxjb3Blbnxjb3xjb3B5fGNwZnxjcGZpbGV8Y3B8Y3ByZXZpb3VzfGNxfGNxdWl0fGNyfGNyZXdpbmR8Y3VuYXxjdW5hYmJyZXZ8Y3V8Y3VubWFwfGN3fGN3aW5kb3d8ZGVidWdnfGRlYnVnZ3JlZWR5fGRlbGN8ZGVsY29tbWFuZHxkfGRlbGV0ZXxkZWxmfGRlbGZ1bmN0aW9ufGRlbG18ZGVsbWFya3N8ZGlmZmd8ZGlmZmdldHxkaWZmb2ZmfGRpZmZwYXRjaHxkaWZmcHV8ZGlmZnB1dHxkaWZmc3BsaXR8ZGlmZnRoaXN8ZGlmZnV8ZGlmZnVwZGF0ZXxkaWd8ZGlncmFwaHN8ZGl8ZGlzcGxheXxkanxkanVtcHxkbHxkbGlzdHxkcnxkcm9wfGRzfGRzZWFyY2h8ZHNwfGRzcGxpdHxlYXJsaWVyfGVjaG9lfGVjaG9lcnJ8ZWNob218ZWNob21zZ3xlY2hvbnxlfGVkaXR8ZWx8ZWxzZXxlbHNlaXxlbHNlaWZ8ZW18ZW1lbnV8ZW5kZm98ZW5kZm9yfGVuZGZ8ZW5kZnVuY3Rpb258ZW5kZnVufGVufGVuZGlmfGVuZHR8ZW5kdHJ5fGVuZHd8ZW5kd2hpbGV8ZW5lfGVuZXd8ZXh8ZXhpfGV4aXR8ZXh1fGV4dXNhZ2V8ZnxmaWxlfGZpbGVzfGZpbGV0eXBlfGZpbmF8ZmluYWxseXxmaW58ZmluZHxmaW5pfGZpbmlzaHxmaXJ8Zmlyc3R8Zml4fGZpeGRlbHxmb3xmb2xkfGZvbGRjfGZvbGRjbG9zZXxmb2xkZG9jfGZvbGRkb2Nsb3NlZHxmb2xkZHxmb2xkZG9vcGVufGZvbGRvfGZvbGRvcGVufGZvcnxmdXxmdW58ZnVuY3Rpb258Z298Z290b3xncnxncmVwfGdyZXBhfGdyZXBhZGR8aGF8aGFyZGNvcHl8aHxoZWxwfGhlbHBmfGhlbHBmaW5kfGhlbHBnfGhlbHBncmVwfGhlbHB0fGhlbHB0YWdzfGhpZHxoaWRlfGhpc3xoaXN0b3J5fGlhfGlhYmJyZXZ8aWFiY3xpYWJjbGVhcnxpZnxpanxpanVtcHxpbHxpbGlzdHxpbWFwY3xpbWFwY2xlYXJ8aW58aW5vcmVhfGlub3JlYWJicmV2fGlzZWFyY2h8aXNwfGlzcGxpdHxpdW5hfGl1bmFiYnJldnxpdXxpdW5tYXB8anxqb2lufGp1fGp1bXBzfGt8a2VlcGFsdHxrZWVwanxrZWVwanVtcHN8a2VlfGtlZXBtYXJrc3xsYWRkYnxsYWRkYnVmZmVyfGxhZHxsYWRkZXhwcnxsYWRkZnxsYWRkZmlsZXxsYW58bGFuZ3VhZ2V8bGF8bGFzdHxsYXRlcnxsYnxsYnVmZmVyfGxjfGxjZHxsY2h8bGNoZGlyfGxjbHxsY2xvc2V8bGV0fGxlZnR8bGVmdGF8bGVmdGFib3ZlfGxleHxsZXhwcnxsZnxsZmlsZXxsZmlyfGxmaXJzdHxsZ2V0YnxsZ2V0YnVmZmVyfGxnZXRlfGxnZXRleHByfGxnfGxnZXRmaWxlfGxncnxsZ3JlcHxsZ3JlcGF8bGdyZXBhZGR8bGh8bGhlbHBncmVwfGx8bGlzdHxsbHxsbGF8bGxhc3R8bGxpfGxsaXN0fGxtYWt8bG1ha2V8bG18bG1hcHxsbWFwY3xsbWFwY2xlYXJ8bG5ld3xsbmV3ZXJ8bG5lfGxuZXh0fGxOfGxOZXh0fGxuZnxsbmZpbGV8bE5mfGxOZmlsZXxsbnxsbm9yZW1hcHxsb3xsb2Fkdmlld3xsb2N8bG9ja21hcmtzfGxvY2t2fGxvY2t2YXJ8bG9sfGxvbGRlcnxsb3B8bG9wZW58bHBmfGxwZmlsZXxscHxscHJldmlvdXN8bHJ8bHJld2luZHxsc3xsdHxsdGFnfGx1fGx1bm1hcHxsdnxsdmltZ3JlcHxsdmltZ3JlcGF8bHZpbWdyZXBhZGR8bHd8bHdpbmRvd3xtYWt8bWFrZXxtYXxtYXJrfG1hcmtzfG1hdHxtYXRjaHxtZW51dHxtZW51dHJhbnNsYXRlfG1rfG1rZXhyY3xta3N8bWtzZXNzaW9ufG1rc3B8bWtzcGVsbHxta3ZpZXxta3ZpZXd8bWt2fG1rdmltcmN8bW9kfG1vZGV8bXxtb3ZlfG16ZnxtemZpbGV8bXp8bXpzY2hlbWV8bmJrZXl8bmV3fG58bmV4dHxOfE5leHR8bm1hcGN8bm1hcGNsZWFyfG5vaHxub2hsc2VhcmNofG5vcmVhfG5vcmVhYmJyZXZ8bnV8bnVtYmVyfG51bnxudW5tYXB8b21hcGN8b21hcGNsZWFyfG9ufG9ubHl8b3xvcGVufG9wdHxvcHRpb25zfG91fG91bm1hcHxwY3xwY2xvc2V8cGVkfHBlZGl0fHBlfHBlcmx8cGVybGR8cGVybGRvfHBvfHBvcHxwb3B1fHBvcHVwfHBwfHBwb3B8cHJlfHByZXNlcnZlfHByZXZ8cHJldmlvdXN8cHxwcmludHxQfFByaW50fHByb2ZkfHByb2ZkZWx8cHJvZnxwcm9maWxlfHByb21wdGZ8cHJvbXB0ZmluZHxwcm9tcHRyfHByb21wdHJlcGx8cHN8cHNlYXJjaHxwdGF8cHRhZ3xwdGZ8cHRmaXJzdHxwdGp8cHRqdW1wfHB0bHxwdGxhc3R8cHRufHB0bmV4dHxwdE58cHROZXh0fHB0cHxwdHByZXZpb3VzfHB0cnxwdHJld2luZHxwdHN8cHRzZWxlY3R8cHV8cHV0fHB3fHB3ZHxweWZ8cHlmaWxlfHB5fHB5dGhvbnxxYXxxYWxsfHF8cXVpdHxxdWl0YXxxdWl0YWxsfHJ8cmVhZHxyZWN8cmVjb3ZlcnxyZWRpfHJlZGlyfHJlZHxyZWRvfHJlZHJ8cmVkcmF3fHJlZHJhd3N8cmVkcmF3c3RhdHVzfHJlZ3xyZWdpc3RlcnN8cmVzfHJlc2l6ZXxyZXR8cmV0YWJ8cmV0dXxyZXR1cm58cmV3fHJld2luZHxyaXxyaWdodHxyaWdodGJ8cmlnaHRiZWxvd3xydWJ8cnVieXxydWJ5ZHxydWJ5ZG98cnVieWZ8cnVieWZpbGV8cnV8cnVudGltZXxydnxydmltaW5mb3xzYWx8c2FsbHxzYW58c2FuZGJveHxzYXxzYXJndW1lbnR8c2F2fHNhdmVhc3xzYmF8c2JhbGx8c2JmfHNiZmlyc3R8c2JsfHNibGFzdHxzYm18c2Jtb2RpZmllZHxzYm58c2JuZXh0fHNiTnxzYk5leHR8c2JwfHNicHJldmlvdXN8c2JyfHNicmV3aW5kfHNifHNidWZmZXJ8c2NyaXB0ZXxzY3JpcHRlbmNvZGluZ3xzY3JpcHxzY3JpcHRuYW1lc3xzZXxzZXR8c2V0ZnxzZXRmaWxldHlwZXxzZXRnfHNldGdsb2JhbHxzZXRsfHNldGxvY2FsfHNmfHNmaW5kfHNmaXJ8c2ZpcnN0fHNofHNoZWxsfHNpZ258c2lsfHNpbGVudHxzaW18c2ltYWx0fHNsYXxzbGFzdHxzbHxzbGVlcHxzbXxzbWFnaWN8c218c21hcHxzbWFwY3xzbWFwY2xlYXJ8c21lfHNtZW51fHNufHNuZXh0fHNOfHNOZXh0fHNuaXxzbmlmZnxzbm98c25vbWFnaWN8c25vcnxzbm9yZW1hcHxzbm9yZW1lfHNub3JlbWVudXxzb3J8c29ydHxzb3xzb3VyY2V8c3BlbGxkfHNwZWxsZHVtcHxzcGV8c3BlbGxnb29kfHNwZWxsaXxzcGVsbGluZm98c3BlbGxyfHNwZWxscmVwYWxsfHNwZWxsdXxzcGVsbHVuZG98c3BlbGx3fHNwZWxsd3Jvbmd8c3B8c3BsaXR8c3ByfHNwcmV2aW91c3xzcmV8c3Jld2luZHxzdGF8c3RhZ3xzdGFydGd8c3RhcnRncmVwbGFjZXxzdGFyfHN0YXJ0aW5zZXJ0fHN0YXJ0cnxzdGFydHJlcGxhY2V8c3RqfHN0anVtcHxzdHxzdG9wfHN0b3BpfHN0b3BpbnNlcnR8c3RzfHN0c2VsZWN0fHN1bnxzdW5oaWRlfHN1bm18c3VubWFwfHN1c3xzdXNwZW5kfHN2fHN2aWV3fHN5bmNiaW5kfHR8dGFifHRhYmN8dGFiY2xvc2V8dGFiZHx0YWJkb3x0YWJlfHRhYmVkaXR8dGFiZnx0YWJmaW5kfHRhYmZpcnx0YWJmaXJzdHx0YWJsfHRhYmxhc3R8dGFibXx0YWJtb3ZlfHRhYm5ld3x0YWJufHRhYm5leHR8dGFiTnx0YWJOZXh0fHRhYm98dGFib25seXx0YWJwfHRhYnByZXZpb3VzfHRhYnJ8dGFicmV3aW5kfHRhYnN8dGF8dGFnfHRhZ3N8dGN8dGNsfHRjbGR8dGNsZG98dGNsZnx0Y2xmaWxlfHRlfHRlYXJvZmZ8dGZ8dGZpcnN0fHRofHRocm93fHRqfHRqdW1wfHRsfHRsYXN0fHRtfHRtfHRtZW51fHRufHRuZXh0fHROfHROZXh0fHRvfHRvcGxlZnR8dHB8dHByZXZpb3VzfHRyfHRyZXdpbmR8dHJ5fHRzfHRzZWxlY3R8dHV8dHV8dHVubWVudXx1bmF8dW5hYmJyZXZpYXRlfHV8dW5kb3x1bmRvanx1bmRvam9pbnx1bmRvbHx1bmRvbGlzdHx1bmh8dW5oaWRlfHVubGV0fHVubG98dW5sb2NrdmFyfHVubXx1bm1hcHx1cHx1cGRhdGV8dmVyYnx2ZXJib3NlfHZlfHZlcnNpb258dmVydHx2ZXJ0aWNhbHx2aWV8dmlld3x2aW18dmltZ3JlcHx2aW1ncmVwYXx2aW1ncmVwYWRkfHZpfHZpc3VhbHx2aXV8dml1c2FnZXx2bWFwY3x2bWFwY2xlYXJ8dm5lfHZuZXd8dnN8dnNwbGl0fHZ1fHZ1bm1hcHx3YXx3YWxsfHdofHdoaWxlfHdpbmN8d2luY21kfHdpbmRvfHdpbnB8d2lucG9zfHdpbnx3aW5zaXplfHdufHduZXh0fHdOfHdOZXh0fHdwfHdwcmV2aW91c3x3cXx3cWF8d3FhbGx8d3x3cml0ZXx3c3x3c3ZlcmJ8d3Z8d3ZpbWluZm98WHx4YXx4YWxsfHh8eGl0fHhtfHhtYXB8eG1hcGN8eG1hcGNsZWFyfHhtZXx4bWVudXxYTUxlbnR8WE1MbnN8eG58eG5vcmVtYXB8eG5vcmVtZXx4bm9yZW1lbnV8eHV8eHVubWFwfHl8eWFuaylcXGIvLGJ1aWx0aW46L1xcYig/OmF1dG9jbWR8YWNkfGFpfGFrbXxhbGVwaHxhbGxvd3Jldmluc3xhbHRrZXltYXB8YW1iaXdpZHRofGFtYnd8YW50aXxhbnRpYWxpYXN8YXJhYnxhcmFiaWN8YXJhYmljc2hhcGV8YXJpfGFyc2hhcGV8YXV0b2NoZGlyfGF1dG9pbmRlbnR8YXV0b3JlYWR8YXV0b3dyaXRlfGF1dG93cml0ZWFsbHxhd3xhd2F8YmFja2dyb3VuZHxiYWNrc3BhY2V8YmFja3VwfGJhY2t1cGNvcHl8YmFja3VwZGlyfGJhY2t1cGV4dHxiYWNrdXBza2lwfGJhbGxvb25kZWxheXxiYWxsb29uZXZhbHxiYWxsb29uZXhwcnxiZGlyfGJkbGF5fGJldmFsfGJleHxiZXhwcnxiZ3xiaHxiaW58YmluYXJ5fGJpb3NrfGJpb3NrZXl8Ymt8YmtjfGJvbWJ8YnJlYWthdHxicmt8YnJvd3NlZGlyfGJzfGJzZGlyfGJza3xidHxidWZoaWRkZW58YnVmbGlzdGVkfGJ1ZnR5cGV8Y2FzZW1hcHxjY3Z8Y2RwYXRofGNlZGl0fGNmdXxjaHxjaGFyY29udmVydHxjaXxjaW58Y2luZGVudHxjaW5rfGNpbmtleXN8Y2lub3xjaW5vcHRpb25zfGNpbnd8Y2lud29yZHN8Y2xpcGJvYXJkfGNtZGhlaWdodHxjbWR3aW5oZWlnaHR8Y21wfGNtc3xjb2x1bW5zfGNvbXxjb21tZW50c3xjb21tZW50c3RyaW5nfGNvbXBhdGlibGV8Y29tcGxldGV8Y29tcGxldGVmdW5jfGNvbXBsZXRlb3B0fGNvbnNrfGNvbnNrZXl8Y29weWluZGVudHxjb3R8Y3BvfGNwb3B0aW9uc3xjcHR8Y3Njb3BlcGF0aGNvbXB8Y3Njb3BlcHJnfGNzY29wZXF1aWNrZml4fGNzY29wZXRhZ3xjc2NvcGV0YWdvcmRlcnxjc2NvcGV2ZXJib3NlfGNzcGN8Y3Nwcmd8Y3NxZnxjc3R8Y3N0b3xjc3ZlcmJ8Y3VjfGN1bHxjdXJzb3Jjb2x1bW58Y3Vyc29ybGluZXxjd2h8ZGVidWd8ZGVjb3xkZWZ8ZGVmaW5lfGRlbGNvbWJpbmV8ZGV4fGRnfGRpY3R8ZGljdGlvbmFyeXxkaWZmfGRpZmZleHByfGRpZmZvcHR8ZGlncmFwaHxkaXB8ZGlyfGRpcmVjdG9yeXxkeXxlYXxlYWR8ZWFkaXJlY3Rpb258ZWJ8ZWR8ZWRjb21wYXRpYmxlfGVmfGVmbXxlaXxla3xlbmN8ZW5jb2Rpbmd8ZW5kb2ZsaW5lfGVvbHxlcHxlcXVhbGFsd2F5c3xlcXVhbHByZ3xlcnJvcmJlbGxzfGVycm9yZmlsZXxlcnJvcmZvcm1hdHxlc2NrZXlzfGV0fGV2ZW50aWdub3JlfGV4cGFuZHRhYnxleHJjfGZjbHxmY3N8ZmRjfGZkZXxmZGl8ZmRsfGZkbHN8ZmRtfGZkbnxmZG98ZmR0fGZlbnxmZW5jfGZlbmNzfGZleHxmZnxmZnN8ZmlsZWVuY29kaW5nfGZpbGVlbmNvZGluZ3N8ZmlsZWZvcm1hdHxmaWxlZm9ybWF0c3xmaWxsY2hhcnN8Zmt8ZmttYXB8ZmxwfGZtbHxmbXJ8Zm9sZGNvbHVtbnxmb2xkZW5hYmxlfGZvbGRleHByfGZvbGRpZ25vcmV8Zm9sZGxldmVsfGZvbGRsZXZlbHN0YXJ0fGZvbGRtYXJrZXJ8Zm9sZG1ldGhvZHxmb2xkbWlubGluZXN8Zm9sZG5lc3RtYXh8Zm9sZHRleHR8Zm9ybWF0ZXhwcnxmb3JtYXRsaXN0cGF0fGZvcm1hdG9wdGlvbnN8Zm9ybWF0cHJnfGZwfGZzfGZzeW5jfGZ0fGdjcnxnZHxnZGVmYXVsdHxnZm18Z2ZufGdmc3xnZnd8Z2hyfGdwfGdyZXBmb3JtYXR8Z3JlcHByZ3xndGx8Z3R0fGd1aWN1cnNvcnxndWlmb250fGd1aWZvbnRzZXR8Z3VpZm9udHdpZGV8Z3VpaGVhZHJvb218Z3Vpb3B0aW9uc3xndWlwdHl8Z3VpdGFibGFiZWx8Z3VpdGFidG9vbHRpcHxoZWxwZmlsZXxoZWxwaGVpZ2h0fGhlbHBsYW5nfGhmfGhofGhpfGhpZGRlbnxoaWdobGlnaHR8aGt8aGttYXB8aGttYXBwfGhrcHxobHxobGd8aGxzfGhsc2VhcmNofGljfGljb258aWNvbnN0cmluZ3xpZ25vcmVjYXNlfGltfGltYWN0aXZhdGVrZXl8aW1ha3xpbWN8aW1jbWRsaW5lfGltZHxpbWRpc2FibGV8aW1pfGltaW5zZXJ0fGltc3xpbXNlYXJjaHxpbmN8aW5jbHVkZXxpbmNsdWRlZXhwcnxpbmNzZWFyY2h8aW5kZXxpbmRlbnRleHByfGluZGVudGtleXN8aW5ka3xpbmV4fGluZnxpbmZlcmNhc2V8aW5zZXJ0bW9kZXxpc2Z8aXNmbmFtZXxpc2l8aXNpZGVudHxpc2t8aXNrZXl3b3JkfGlzcHJpbnR8am9pbnNwYWNlc3xqc3xrZXl8a2V5bWFwfGtleW1vZGVsfGtleXdvcmRwcmd8a218a21wfGtwfGxhbmdtYXB8bGFuZ21lbnV8bGFzdHN0YXR1c3xsYXp5cmVkcmF3fGxicnxsY3N8bGluZWJyZWFrfGxpbmVzfGxpbmVzcGFjZXxsaXNwfGxpc3B3b3Jkc3xsaXN0Y2hhcnN8bG9hZHBsdWdpbnN8bHBsfGxzcHxsenxtYWNhdHN1aXxtYWdpY3xtYWtlZWZ8bWFrZXByZ3xtYXRjaHBhaXJzfG1hdGNodGltZXxtYXhjb21iaW5lfG1heGZ1bmNkZXB0aHxtYXhtYXBkZXB0aHxtYXhtZW18bWF4bWVtcGF0dGVybnxtYXhtZW10b3R8bWNvfG1lZnxtZW51aXRlbXN8bWZkfG1ofG1pc3xta3NwZWxsbWVtfG1sfG1sc3xtbXxtbWR8bW1wfG1tdHxtb2RlbGluZXxtb2RlbGluZXN8bW9kaWZpYWJsZXxtb2RpZmllZHxtb3JlfG1vdXNlfG1vdXNlZnxtb3VzZWZvY3VzfG1vdXNlaGlkZXxtb3VzZW18bW91c2Vtb2RlbHxtb3VzZXN8bW91c2VzaGFwZXxtb3VzZXR8bW91c2V0aW1lfG1wfG1wc3xtc218bXpxfG16cXVhbnR1bXxuZnxucmZvcm1hdHN8bnVtYmVyd2lkdGh8bnV3fG9kZXZ8b2Z0fG9mdXxvbW5pZnVuY3xvcGVuZGV2aWNlfG9wZXJhdG9yZnVuY3xvcGZ1bmN8b3NmaWxldHlwZXxwYXxwYXJhfHBhcmFncmFwaHN8cGFzdGV8cGFzdGV0b2dnbGV8cGF0Y2hleHByfHBhdGNobW9kZXxwYXRofHBkZXZ8cGVuY3xwZXh8cGV4cHJ8cGZufHBofHBoZWFkZXJ8cGl8cG18cG1iY3N8cG1iZm58cG9wdHxwcmVzZXJ2ZWluZGVudHxwcmV2aWV3aGVpZ2h0fHByZXZpZXd3aW5kb3d8cHJpbnRkZXZpY2V8cHJpbnRlbmNvZGluZ3xwcmludGV4cHJ8cHJpbnRmb250fHByaW50aGVhZGVyfHByaW50bWJjaGFyc2V0fHByaW50bWJmb250fHByaW50b3B0aW9uc3xwcm9tcHR8cHR8cHVtaGVpZ2h0fHB2aHxwdnd8cWV8cXVvdGVlc2NhcGV8cmVhZG9ubHl8cmVtYXB8cmVwb3J0fHJlc3RvcmVzY3JlZW58cmV2aW5zfHJpZ2h0bGVmdHxyaWdodGxlZnRjbWR8cmx8cmxjfHJvfHJzfHJ0cHxydWZ8cnVsZXJ8cnVsZXJmb3JtYXR8cnVudGltZXBhdGh8c2JvfHNjfHNjYnxzY3J8c2Nyb2xsfHNjcm9sbGJpbmR8c2Nyb2xsanVtcHxzY3JvbGxvZmZ8c2Nyb2xsb3B0fHNjc3xzZWN0fHNlY3Rpb25zfHNlY3VyZXxzZWx8c2VsZWN0aW9ufHNlbGVjdG1vZGV8c2Vzc2lvbm9wdGlvbnN8c2Z0fHNoY2Z8c2hlbGxjbWRmbGFnfHNoZWxscGlwZXxzaGVsbHF1b3RlfHNoZWxscmVkaXJ8c2hlbGxzbGFzaHxzaGVsbHRlbXB8c2hlbGx0eXBlfHNoZWxseHF1b3RlfHNoaWZ0cm91bmR8c2hpZnR3aWR0aHxzaG18c2hvcnRtZXNzfHNob3J0bmFtZXxzaG93YnJlYWt8c2hvd2NtZHxzaG93ZnVsbHRhZ3xzaG93bWF0Y2h8c2hvd21vZGV8c2hvd3RhYmxpbmV8c2hxfHNpfHNpZGVzY3JvbGx8c2lkZXNjcm9sbG9mZnxzaXNvfHNqfHNsbXxzbWFydGNhc2V8c21hcnRpbmRlbnR8c21hcnR0YWJ8c21jfHNtZHxzb2Z0dGFic3RvcHxzb2x8c3BjfHNwZWxsfHNwZWxsY2FwY2hlY2t8c3BlbGxmaWxlfHNwZWxsbGFuZ3xzcGVsbHN1Z2dlc3R8c3BmfHNwbHxzcGxpdGJlbG93fHNwbGl0cmlnaHR8c3BzfHNyfHNycnxzc3xzc2x8c3NvcHxzdGFsfHN0YXJ0b2ZsaW5lfHN0YXR1c2xpbmV8c3RsfHN0bXB8c3V8c3VhfHN1ZmZpeGVzfHN1ZmZpeGVzYWRkfHN3fHN3YXBmaWxlfHN3YXBzeW5jfHN3Ynxzd2Z8c3dpdGNoYnVmfHN3c3xzeHF8c3lufHN5bm1heGNvbHxzeW50YXh8dGFibGluZXx0YWJwYWdlbWF4fHRhYnN0b3B8dGFnYnNlYXJjaHx0YWdsZW5ndGh8dGFncmVsYXRpdmV8dGFnc3RhY2t8dGFsfHRifHRiaXx0YmlkaXx0YmlzfHRic3x0ZW5jfHRlcm18dGVybWJpZGl8dGVybWVuY29kaW5nfHRlcnNlfHRleHRhdXRvfHRleHRtb2RlfHRleHR3aWR0aHx0Z3N0fHRoZXNhdXJ1c3x0aWxkZW9wfHRpbWVvdXR8dGltZW91dGxlbnx0aXRsZXx0aXRsZWxlbnx0aXRsZW9sZHx0aXRsZXN0cmluZ3x0b29sYmFyfHRvb2xiYXJpY29uc2l6ZXx0b3B8dHBtfHRzbHx0c3J8dHRpbWVvdXR8dHRpbWVvdXRsZW58dHRtfHR0eXx0dHlidWlsdGlufHR0eWZhc3R8dHR5bXx0dHltb3VzZXx0dHlzY3JvbGx8dHR5dHlwZXx0d3x0eHx1Y3x1bHx1bmRvbGV2ZWxzfHVwZGF0ZWNvdW50fHVwZGF0ZXRpbWV8dXR8dmJ8dmJzfHZkaXJ8dmVyYm9zZWZpbGV8dmZpbGV8dmlld2Rpcnx2aWV3b3B0aW9uc3x2aW1pbmZvfHZpcnR1YWxlZGl0fHZpc3VhbGJlbGx8dm9wfHdha3x3YXJufHdifHdjfHdjbXx3ZHx3ZWlyZGludmVydHx3Zmh8d2Z3fHdoaWNod3JhcHx3aXx3aWd8d2lsZGNoYXJ8d2lsZGNoYXJtfHdpbGRpZ25vcmV8d2lsZG1lbnV8d2lsZG1vZGV8d2lsZG9wdGlvbnN8d2ltfHdpbmFsdGtleXN8d2luZG93fHdpbmZpeGhlaWdodHx3aW5maXh3aWR0aHx3aW5oZWlnaHR8d2lubWluaGVpZ2h0fHdpbm1pbndpZHRofHdpbndpZHRofHdpdnx3aXd8d218d21ofHdtbnV8d213fHdvcHx3cmFwfHdyYXBtYXJnaW58d3JhcHNjYW58d3JpdGVhbnl8d3JpdGViYWNrdXB8d3JpdGVkZWxheXx3d3xub2FjZHxub2FpfG5vYWttfG5vYWxsb3dyZXZpbnN8bm9hbHRrZXltYXB8bm9hbnRpfG5vYW50aWFsaWFzfG5vYXJ8bm9hcmFifG5vYXJhYmljfG5vYXJhYmljc2hhcGV8bm9hcml8bm9hcnNoYXBlfG5vYXV0b2NoZGlyfG5vYXV0b2luZGVudHxub2F1dG9yZWFkfG5vYXV0b3dyaXRlfG5vYXV0b3dyaXRlYWxsfG5vYXd8bm9hd2F8bm9iYWNrdXB8bm9iYWxsb29uZXZhbHxub2JldmFsfG5vYmlufG5vYmluYXJ5fG5vYmlvc2t8bm9iaW9za2V5fG5vYmt8bm9ibHxub2JvbWJ8bm9idWZsaXN0ZWR8bm9jZnxub2NpfG5vY2lufG5vY2luZGVudHxub2NvbXBhdGlibGV8bm9jb25maXJtfG5vY29uc2t8bm9jb25za2V5fG5vY29weWluZGVudHxub2NwfG5vY3Njb3BldGFnfG5vY3Njb3BldmVyYm9zZXxub2NzdHxub2NzdmVyYnxub2N1Y3xub2N1bHxub2N1cnNvcmNvbHVtbnxub2N1cnNvcmxpbmV8bm9kZWNvfG5vZGVsY29tYmluZXxub2RnfG5vZGlmZnxub2RpZ3JhcGh8bm9kaXNhYmxlfG5vZWF8bm9lYnxub2VkfG5vZWRjb21wYXRpYmxlfG5vZWt8bm9lbmRvZmxpbmV8bm9lb2x8bm9lcXVhbGFsd2F5c3xub2Vycm9yYmVsbHN8bm9lc2NrZXlzfG5vZXR8bm9leHxub2V4cGFuZHRhYnxub2V4cmN8bm9mZW58bm9ma3xub2ZrbWFwfG5vZm9sZGVuYWJsZXxub2dkfG5vZ2RlZmF1bHR8bm9ndWlwdHl8bm9oaWR8bm9oaWRkZW58bm9oa3xub2hrbWFwfG5vaGttYXBwfG5vaGtwfG5vaGxzfG5vaWN8bm9pY29ufG5vaWdub3JlY2FzZXxub2ltfG5vaW1jfG5vaW1jbWRsaW5lfG5vaW1kfG5vaW5jc2VhcmNofG5vaW5mfG5vaW5mZXJjYXNlfG5vaW5zZXJ0bW9kZXxub2lzfG5vam9pbnNwYWNlc3xub2pzfG5vbGF6eXJlZHJhd3xub2xicnxub2xpbmVicmVha3xub2xpc3B8bm9saXN0fG5vbG9hZHBsdWdpbnN8bm9scGx8bm9senxub21hfG5vbWFjYXRzdWl8bm9tYWdpY3xub21ofG5vbWx8bm9tb2R8bm9tb2RlbGluZXxub21vZGlmaWFibGV8bm9tb2RpZmllZHxub21vcmV8bm9tb3VzZWZ8bm9tb3VzZWZvY3VzfG5vbW91c2VoaWRlfG5vbnV8bm9udW1iZXJ8bm9vZGV2fG5vb3BlbmRldmljZXxub3Bhc3RlfG5vcGl8bm9wcmVzZXJ2ZWluZGVudHxub3ByZXZpZXd3aW5kb3d8bm9wcm9tcHR8bm9wdnd8bm9yZWFkb25seXxub3JlbWFwfG5vcmVzdG9yZXNjcmVlbnxub3Jldmluc3xub3JpfG5vcmlnaHRsZWZ0fG5vcmlnaHRsZWZ0Y21kfG5vcmx8bm9ybGN8bm9yb3xub3JzfG5vcnV8bm9ydWxlcnxub3NifG5vc2N8bm9zY2J8bm9zY3JvbGxiaW5kfG5vc2NzfG5vc2VjdXJlfG5vc2Z0fG5vc2hlbGxzbGFzaHxub3NoZWxsdGVtcHxub3NoaWZ0cm91bmR8bm9zaG9ydG5hbWV8bm9zaG93Y21kfG5vc2hvd2Z1bGx0YWd8bm9zaG93bWF0Y2h8bm9zaG93bW9kZXxub3NpfG5vc218bm9zbWFydGNhc2V8bm9zbWFydGluZGVudHxub3NtYXJ0dGFifG5vc21kfG5vc258bm9zb2x8bm9zcGVsbHxub3NwbGl0YmVsb3d8bm9zcGxpdHJpZ2h0fG5vc3ByfG5vc3J8bm9zc2x8bm9zdGF8bm9zdGFydG9mbGluZXxub3N0bXB8bm9zd2FwZmlsZXxub3N3Znxub3RhfG5vdGFnYnNlYXJjaHxub3RhZ3JlbGF0aXZlfG5vdGFnc3RhY2t8bm90Yml8bm90YmlkaXxub3Ric3xub3Rlcm1iaWRpfG5vdGVyc2V8bm90ZXh0YXV0b3xub3RleHRtb2RlfG5vdGZ8bm90Z3N0fG5vdGlsZGVvcHxub3RpbWVvdXR8bm90aXRsZXxub3RvfG5vdG9wfG5vdHJ8bm90dGltZW91dHxub3R0eWJ1aWx0aW58bm90dHlmYXN0fG5vdHh8bm92Ynxub3Zpc3VhbGJlbGx8bm93YXxub3dhcm58bm93Ynxub3dlaXJkaW52ZXJ0fG5vd2ZofG5vd2Z3fG5vd2lsZG1lbnV8bm93aW5maXhoZWlnaHR8bm93aW5maXh3aWR0aHxub3dpdnxub3dtbnV8bm93cmFwfG5vd3JhcHNjYW58bm93cml0ZXxub3dyaXRlYW55fG5vd3JpdGViYWNrdXB8bm93c3xpbnZhY2R8aW52YWl8aW52YWttfGludmFsbG93cmV2aW5zfGludmFsdGtleW1hcHxpbnZhbnRpfGludmFudGlhbGlhc3xpbnZhcnxpbnZhcmFifGludmFyYWJpY3xpbnZhcmFiaWNzaGFwZXxpbnZhcml8aW52YXJzaGFwZXxpbnZhdXRvY2hkaXJ8aW52YXV0b2luZGVudHxpbnZhdXRvcmVhZHxpbnZhdXRvd3JpdGV8aW52YXV0b3dyaXRlYWxsfGludmF3fGludmF3YXxpbnZiYWNrdXB8aW52YmFsbG9vbmV2YWx8aW52YmV2YWx8aW52YmlufGludmJpbmFyeXxpbnZiaW9za3xpbnZiaW9za2V5fGludmJrfGludmJsfGludmJvbWJ8aW52YnVmbGlzdGVkfGludmNmfGludmNpfGludmNpbnxpbnZjaW5kZW50fGludmNvbXBhdGlibGV8aW52Y29uZmlybXxpbnZjb25za3xpbnZjb25za2V5fGludmNvcHlpbmRlbnR8aW52Y3B8aW52Y3Njb3BldGFnfGludmNzY29wZXZlcmJvc2V8aW52Y3N0fGludmNzdmVyYnxpbnZjdWN8aW52Y3VsfGludmN1cnNvcmNvbHVtbnxpbnZjdXJzb3JsaW5lfGludmRlY298aW52ZGVsY29tYmluZXxpbnZkZ3xpbnZkaWZmfGludmRpZ3JhcGh8aW52ZGlzYWJsZXxpbnZlYXxpbnZlYnxpbnZlZHxpbnZlZGNvbXBhdGlibGV8aW52ZWt8aW52ZW5kb2ZsaW5lfGludmVvbHxpbnZlcXVhbGFsd2F5c3xpbnZlcnJvcmJlbGxzfGludmVzY2tleXN8aW52ZXR8aW52ZXh8aW52ZXhwYW5kdGFifGludmV4cmN8aW52ZmVufGludmZrfGludmZrbWFwfGludmZvbGRlbmFibGV8aW52Z2R8aW52Z2RlZmF1bHR8aW52Z3VpcHR5fGludmhpZHxpbnZoaWRkZW58aW52aGt8aW52aGttYXB8aW52aGttYXBwfGludmhrcHxpbnZobHN8aW52aGxzZWFyY2h8aW52aWN8aW52aWNvbnxpbnZpZ25vcmVjYXNlfGludmltfGludmltY3xpbnZpbWNtZGxpbmV8aW52aW1kfGludmluY3NlYXJjaHxpbnZpbmZ8aW52aW5mZXJjYXNlfGludmluc2VydG1vZGV8aW52aXN8aW52am9pbnNwYWNlc3xpbnZqc3xpbnZsYXp5cmVkcmF3fGludmxicnxpbnZsaW5lYnJlYWt8aW52bGlzcHxpbnZsaXN0fGludmxvYWRwbHVnaW5zfGludmxwbHxpbnZsenxpbnZtYXxpbnZtYWNhdHN1aXxpbnZtYWdpY3xpbnZtaHxpbnZtbHxpbnZtb2R8aW52bW9kZWxpbmV8aW52bW9kaWZpYWJsZXxpbnZtb2RpZmllZHxpbnZtb3JlfGludm1vdXNlZnxpbnZtb3VzZWZvY3VzfGludm1vdXNlaGlkZXxpbnZudXxpbnZudW1iZXJ8aW52b2RldnxpbnZvcGVuZGV2aWNlfGludnBhc3RlfGludnBpfGludnByZXNlcnZlaW5kZW50fGludnByZXZpZXd3aW5kb3d8aW52cHJvbXB0fGludnB2d3xpbnZyZWFkb25seXxpbnZyZW1hcHxpbnZyZXN0b3Jlc2NyZWVufGludnJldmluc3xpbnZyaXxpbnZyaWdodGxlZnR8aW52cmlnaHRsZWZ0Y21kfGludnJsfGludnJsY3xpbnZyb3xpbnZyc3xpbnZydXxpbnZydWxlcnxpbnZzYnxpbnZzY3xpbnZzY2J8aW52c2Nyb2xsYmluZHxpbnZzY3N8aW52c2VjdXJlfGludnNmdHxpbnZzaGVsbHNsYXNofGludnNoZWxsdGVtcHxpbnZzaGlmdHJvdW5kfGludnNob3J0bmFtZXxpbnZzaG93Y21kfGludnNob3dmdWxsdGFnfGludnNob3dtYXRjaHxpbnZzaG93bW9kZXxpbnZzaXxpbnZzbXxpbnZzbWFydGNhc2V8aW52c21hcnRpbmRlbnR8aW52c21hcnR0YWJ8aW52c21kfGludnNufGludnNvbHxpbnZzcGVsbHxpbnZzcGxpdGJlbG93fGludnNwbGl0cmlnaHR8aW52c3ByfGludnNyfGludnNzbHxpbnZzdGF8aW52c3RhcnRvZmxpbmV8aW52c3RtcHxpbnZzd2FwZmlsZXxpbnZzd2Z8aW52dGF8aW52dGFnYnNlYXJjaHxpbnZ0YWdyZWxhdGl2ZXxpbnZ0YWdzdGFja3xpbnZ0Yml8aW52dGJpZGl8aW52dGJzfGludnRlcm1iaWRpfGludnRlcnNlfGludnRleHRhdXRvfGludnRleHRtb2RlfGludnRmfGludnRnc3R8aW52dGlsZGVvcHxpbnZ0aW1lb3V0fGludnRpdGxlfGludnRvfGludnRvcHxpbnZ0cnxpbnZ0dGltZW91dHxpbnZ0dHlidWlsdGlufGludnR0eWZhc3R8aW52dHh8aW52dmJ8aW52dmlzdWFsYmVsbHxpbnZ3YXxpbnZ3YXJufGludndifGludndlaXJkaW52ZXJ0fGludndmaHxpbnZ3Znd8aW52d2lsZG1lbnV8aW52d2luZml4aGVpZ2h0fGludndpbmZpeHdpZHRofGludndpdnxpbnZ3bW51fGludndyYXB8aW52d3JhcHNjYW58aW52d3JpdGV8aW52d3JpdGVhbnl8aW52d3JpdGViYWNrdXB8aW52d3N8dF9BQnx0X0FGfHRfYWx8dF9BTHx0X2JjfHRfY2R8dF9jZXx0X0NlfHRfY2x8dF9jbXx0X0NvfHRfY3N8dF9Dc3x0X0NTfHRfQ1Z8dF9kYXx0X2RifHRfZGx8dF9ETHx0X0VJfHRfRjF8dF9GMnx0X0YzfHRfRjR8dF9GNXx0X0Y2fHRfRjd8dF9GOHx0X0Y5fHRfZnN8dF9JRXx0X0lTfHRfazF8dF9LMXx0X2syfHRfazN8dF9LM3x0X2s0fHRfSzR8dF9rNXx0X0s1fHRfazZ8dF9LNnx0X2s3fHRfSzd8dF9rOHx0X0s4fHRfazl8dF9LOXx0X0tBfHRfa2J8dF9rQnx0X0tCfHRfS0N8dF9rZHx0X2tEfHRfS0R8dF9rZXx0X0tFfHRfS0Z8dF9LR3x0X2tofHRfS0h8dF9rSXx0X0tJfHRfS0p8dF9LS3x0X2tsfHRfS0x8dF9rTnx0X2tQfHRfa3J8dF9rc3x0X2t1fHRfbGV8dF9tYnx0X21kfHRfbWV8dF9tcnx0X21zfHRfbmR8dF9vcHx0X1JJfHRfUlZ8dF9TYnx0X3NlfHRfU2Z8dF9TSXx0X3NvfHRfc3J8dF90ZXx0X3RpfHRfdHN8dF91ZXx0X3VzfHRfdXR8dF92Ynx0X3ZlfHRfdml8dF92c3x0X1dQfHRfV1N8dF94c3x0X1pIfHRfWlIpXFxiLyxudW1iZXI6L1xcYig/OjB4W1xcZGEtZl0rfFxcZCsoPzpcXC5cXGQrKT8pXFxiL2ksb3BlcmF0b3I6L1xcfFxcfHwmJnxbLSsuXT0/fFs9IV0oPzpbPX5dWyM/XT8pP3xbPD5dPT9bIz9dP3xbKlxcLyU/XXxcXGIoPzppcyg/Om5vdCk/KVxcYi8scHVuY3R1YXRpb246L1t7fVtcXF0oKSw7Ol0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwidmltXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlc1tcInZpc3VhbC1iYXNpY1wiXT17Y29tbWVudDp7cGF0dGVybjovKD86WyfigJjigJldfFJFTVxcYikuKi9pLGluc2lkZTp7a2V5d29yZDovXlJFTS9pfX0sZGlyZWN0aXZlOntwYXR0ZXJuOi8jKD86Q29uc3R8RWxzZXxFbHNlSWZ8RW5kfEV4dGVybmFsQ2hlY2tzdW18RXh0ZXJuYWxTb3VyY2V8SWZ8UmVnaW9uKSg/OlteXFxTXFxyXFxuXV9bXlxcU1xcclxcbl0qKD86XFxyXFxuP3xcXG4pfC4pKy9pLGFsaWFzOlwiY29tbWVudFwiLGdyZWVkeTohMH0sc3RyaW5nOntwYXR0ZXJuOi9bXCLigJzigJ1dKD86W1wi4oCc4oCdXXsyfXxbXlwi4oCc4oCdXSkqW1wi4oCc4oCdXUM/L2ksZ3JlZWR5OiEwfSxkYXRlOntwYXR0ZXJuOi8jW15cXFNcXHJcXG5dKig/OlxcZCsoW1xcLy1dKVxcZCtcXDFcXGQrKD86W15cXFNcXHJcXG5dKyg/OlxcZCtbXlxcU1xcclxcbl0qKD86QU18UE0pfFxcZCs6XFxkKyg/OjpcXGQrKT8oPzpbXlxcU1xcclxcbl0qKD86QU18UE0pKT8pKT98KD86XFxkK1teXFxTXFxyXFxuXSooPzpBTXxQTSl8XFxkKzpcXGQrKD86OlxcZCspPyg/OlteXFxTXFxyXFxuXSooPzpBTXxQTSkpPykpW15cXFNcXHJcXG5dKiMvaSxhbGlhczpcImJ1aWx0aW5cIn0sbnVtYmVyOi8oPzooPzpcXGJcXGQrKD86XFwuXFxkKyk/fFxcLlxcZCspKD86RVsrLV0/XFxkKyk/fCZbSE9dW1xcZEEtRl0rKSg/OlU/W0lMU118W0ZSRF0pPy9pLGJvb2xlYW46L1xcYig/OlRydWV8RmFsc2V8Tm90aGluZylcXGIvaSxrZXl3b3JkOi9cXGIoPzpBZGRIYW5kbGVyfEFkZHJlc3NPZnxBbGlhc3xBbmQoPzpBbHNvKT98QXN8Qm9vbGVhbnxCeVJlZnxCeXRlfEJ5VmFsfENhbGx8Q2FzZXxDYXRjaHxDKD86Qm9vbHxCeXRlfENoYXJ8RGF0ZXxEYmx8RGVjfEludHxMbmd8T2JqfFNCeXRlfFNob3J0fFNuZ3xTdHJ8VHlwZXxVSW50fFVMbmd8VVNob3J0KXxDaGFyfENsYXNzfENvbnN0fENvbnRpbnVlfERhdGV8RGVjaW1hbHxEZWNsYXJlfERlZmF1bHR8RGVsZWdhdGV8RGltfERpcmVjdENhc3R8RG98RG91YmxlfEVhY2h8RWxzZSg/OklmKT98RW5kKD86SWYpP3xFbnVtfEVyYXNlfEVycm9yfEV2ZW50fEV4aXR8RmluYWxseXxGb3J8RnJpZW5kfEZ1bmN0aW9ufEdldCg/OlR5cGV8WE1MTmFtZXNwYWNlKT98R2xvYmFsfEdvU3VifEdvVG98SGFuZGxlc3xJZnxJbXBsZW1lbnRzfEltcG9ydHN8SW58SW5oZXJpdHN8SW50ZWdlcnxJbnRlcmZhY2V8SXN8SXNOb3R8TGV0fExpYnxMaWtlfExvbmd8TG9vcHxNZXxNb2R8TW9kdWxlfE11c3QoPzpJbmhlcml0fE92ZXJyaWRlKXxNeSg/OkJhc2V8Q2xhc3MpfE5hbWVzcGFjZXxOYXJyb3dpbmd8TmV3fE5leHR8Tm90KD86SW5oZXJpdGFibGV8T3ZlcnJpZGFibGUpP3xPYmplY3R8T2Z8T258T3BlcmF0b3J8T3B0aW9uKD86YWwpP3xPcig/OkVsc2UpP3xPdXR8T3ZlcmxvYWRzfE92ZXJyaWRhYmxlfE92ZXJyaWRlc3xQYXJhbUFycmF5fFBhcnRpYWx8UHJpdmF0ZXxQcm9wZXJ0eXxQcm90ZWN0ZWR8UHVibGljfFJhaXNlRXZlbnR8UmVhZE9ubHl8UmVEaW18UmVtb3ZlSGFuZGxlcnxSZXN1bWV8UmV0dXJufFNCeXRlfFNlbGVjdHxTZXR8U2hhZG93c3xTaGFyZWR8c2hvcnR8U2luZ2xlfFN0YXRpY3xTdGVwfFN0b3B8U3RyaW5nfFN0cnVjdHVyZXxTdWJ8U3luY0xvY2t8VGhlbnxUaHJvd3xUb3xUcnl8VHJ5Q2FzdHxUeXBlT2Z8VSg/OkludGVnZXJ8TG9uZ3xTaG9ydCl8VXNpbmd8VmFyaWFudHxXZW5kfFdoZW58V2hpbGV8V2lkZW5pbmd8V2l0aCg/OkV2ZW50cyk/fFdyaXRlT25seXxYb3IpXFxiL2ksb3BlcmF0b3I6Wy9bK1xcLSpcXC9cXFxcXjw9PiYjQCQlIV0vLHtwYXR0ZXJuOi8oW15cXFNcXHJcXG5dKV8oPz1bXlxcU1xcclxcbl0qW1xcclxcbl0pLyxsb29rYmVoaW5kOiEwfV0scHVuY3R1YXRpb246L1t7fSgpLiw6P10vfSxlLmxhbmd1YWdlcy52Yj1lLmxhbmd1YWdlc1tcInZpc3VhbC1iYXNpY1wiXX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwidmlzdWFsQmFzaWNcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLndhc209e2NvbW1lbnQ6Wy9cXCg7W1xcc1xcU10qPztcXCkvLHtwYXR0ZXJuOi87Oy4qLyxncmVlZHk6ITB9XSxzdHJpbmc6e3BhdHRlcm46L1wiKD86XFxcXFtcXHNcXFNdfFteXCJcXFxcXSkqXCIvLGdyZWVkeTohMH0sa2V5d29yZDpbe3BhdHRlcm46L1xcYig/OmFsaWdufG9mZnNldCk9LyxpbnNpZGU6e29wZXJhdG9yOi89L319LHtwYXR0ZXJuOi9cXGIoPzooPzpmMzJ8ZjY0fGkzMnxpNjQpKD86XFwuKD86YWJzfGFkZHxhbmR8Y2VpbHxjbHp8Y29uc3R8Y29udmVydF9bc3VdXFwvaSg/OjMyfDY0KXxjb3B5c2lnbnxjdHp8ZGVtb3RlXFwvZjY0fGRpdig/Ol9bc3VdKT98ZXF6P3xleHRlbmRfW3N1XVxcL2kzMnxmbG9vcnxnZSg/Ol9bc3VdKT98Z3QoPzpfW3N1XSk/fGxlKD86X1tzdV0pP3xsb2FkKD86KD86OHwxNnwzMilfW3N1XSk/fGx0KD86X1tzdV0pP3xtYXh8bWlufG11bHxuZWFyZXN0fG5lZz98b3J8cG9wY250fHByb21vdGVcXC9mMzJ8cmVpbnRlcnByZXRcXC9bZmldKD86MzJ8NjQpfHJlbV9bc3VdfHJvdFtscl18c2hsfHNocl9bc3VdfHN0b3JlKD86OHwxNnwzMik/fHNxcnR8c3VifHRydW5jKD86X1tzdV1cXC9mKD86MzJ8NjQpKT98d3JhcFxcL2k2NHx4b3IpKT98bWVtb3J5XFwuKD86Z3Jvd3xzaXplKSlcXGIvLGluc2lkZTp7cHVuY3R1YXRpb246L1xcLi99fSwvXFxiKD86YW55ZnVuY3xibG9ja3xicig/Ol9pZnxfdGFibGUpP3xjYWxsKD86X2luZGlyZWN0KT98ZGF0YXxkcm9wfGVsZW18ZWxzZXxlbmR8ZXhwb3J0fGZ1bmN8Z2V0Xyg/Omdsb2JhbHxsb2NhbCl8Z2xvYmFsfGlmfGltcG9ydHxsb2NhbHxsb29wfG1lbW9yeXxtb2R1bGV8bXV0fG5vcHxvZmZzZXR8cGFyYW18cmVzdWx0fHJldHVybnxzZWxlY3R8c2V0Xyg/Omdsb2JhbHxsb2NhbCl8c3RhcnR8dGFibGV8dGVlX2xvY2FsfHRoZW58dHlwZXx1bnJlYWNoYWJsZSlcXGIvXSx2YXJpYWJsZTovXFwkW1xcdyEjJCUmJyorXFwtLlxcLzo8PT4/QFxcXFxeX2B8fl0rL2ksbnVtYmVyOi9bKy1dP1xcYig/OlxcZCg/Ol8/XFxkKSooPzpcXC5cXGQoPzpfP1xcZCkqKT8oPzpbZUVdWystXT9cXGQoPzpfP1xcZCkqKT98MHhbXFxkYS1mQS1GXSg/Ol8/W1xcZGEtZkEtRl0pKig/OlxcLltcXGRhLWZBLUZdKD86Xz9bXFxkYS1mQS1EXSkqKT8oPzpbcFBdWystXT9cXGQoPzpfP1xcZCkqKT8pXFxifFxcYmluZlxcYnxcXGJuYW4oPzo6MHhbXFxkYS1mQS1GXSg/Ol8/W1xcZGEtZkEtRF0pKik/XFxiLyxwdW5jdHVhdGlvbjovWygpXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJ3YXNtXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy53aWtpPWUubGFuZ3VhZ2VzLmV4dGVuZChcIm1hcmt1cFwiLHtcImJsb2NrLWNvbW1lbnRcIjp7cGF0dGVybjovKF58W15cXFxcXSlcXC9cXCpbXFxzXFxTXSo/XFwqXFwvLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwiY29tbWVudFwifSxoZWFkaW5nOntwYXR0ZXJuOi9eKD0rKS4rP1xcMS9tLGluc2lkZTp7cHVuY3R1YXRpb246L149K3w9KyQvLGltcG9ydGFudDovLisvfX0sZW1waGFzaXM6e3BhdHRlcm46LygnezIsNX0pLis/XFwxLyxpbnNpZGU6e1wiYm9sZCBpdGFsaWNcIjp7cGF0dGVybjovKCcnJycnKS4rPyg/PVxcMSkvLGxvb2tiZWhpbmQ6ITB9LGJvbGQ6e3BhdHRlcm46LygnJycpW14nXSg/Oi4qP1teJ10pPyg/PVxcMSkvLGxvb2tiZWhpbmQ6ITB9LGl0YWxpYzp7cGF0dGVybjovKCcnKVteJ10oPzouKj9bXiddKT8oPz1cXDEpLyxsb29rYmVoaW5kOiEwfSxwdW5jdHVhdGlvbjovXicnK3wnJyskL319LGhyOntwYXR0ZXJuOi9eLXs0LH0vbSxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LHVybDpbL0lTQk4gKyg/Ojk3Wzg5XVsgLV0/KT8oPzpcXGRbIC1dPyl7OX1bXFxkeF1cXGJ8KD86UkZDfFBNSUQpICtcXGQrL2ksL1xcW1xcWy4rP1xcXVxcXXxcXFsuKz9cXF0vXSx2YXJpYWJsZTpbL19fW0EtWl0rX18vLC9cXHt7M30uKz9cXH17M30vLC9cXHtcXHsuKz9cXH1cXH0vXSxzeW1ib2w6Wy9eI3JlZGlyZWN0L2ltLC9+ezMsNX0vXSxcInRhYmxlLXRhZ1wiOntwYXR0ZXJuOi8oKD86XnxbfCFdKVt8IV0pW158XFxyXFxuXStcXHwoPyFcXHwpL20sbG9va2JlaGluZDohMCxpbnNpZGU6e1widGFibGUtYmFyXCI6e3BhdHRlcm46L1xcfCQvLGFsaWFzOlwicHVuY3R1YXRpb25cIn0scmVzdDplLmxhbmd1YWdlcy5tYXJrdXAudGFnLmluc2lkZX19LHB1bmN0dWF0aW9uOi9eKD86XFx7XFx8fFxcfFxcfXxcXHwtfFsqIzo7IXxdKXxcXHxcXHx8ISEvbX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcIndpa2lcIixcInRhZ1wiLHtub3dpa2k6e3BhdHRlcm46Lzwobm93aWtpfHByZXxzb3VyY2UpXFxiW1xcc1xcU10qPz5bXFxzXFxTXSo/PFxcL1xcMT4vaSxpbnNpZGU6e3RhZzp7cGF0dGVybjovPCg/Om5vd2lraXxwcmV8c291cmNlKVxcYltcXHNcXFNdKj8+fDxcXC8oPzpub3dpa2l8cHJlfHNvdXJjZSk+L2ksaW5zaWRlOmUubGFuZ3VhZ2VzLm1hcmt1cC50YWcuaW5zaWRlfX19fSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIndpa2lcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy54ZW9yYT1lLmxhbmd1YWdlcy5leHRlbmQoXCJtYXJrdXBcIix7Y29uc3RhbnQ6e3BhdHRlcm46L1xcJCg/OkRvbWFpbkNvbnRlbnRzfFBhZ2VSZW5kZXJEdXJhdGlvbilcXCQvLGluc2lkZTp7cHVuY3R1YXRpb246e3BhdHRlcm46L1xcJC99fX0sdmFyaWFibGU6e3BhdHRlcm46L1xcJEA/KD86Iyt8Wy0rKn49Xl0pP1tcXHcuXStcXCQvLGluc2lkZTp7cHVuY3R1YXRpb246e3BhdHRlcm46L1skLl0vfSxvcGVyYXRvcjp7cGF0dGVybjovIyt8Wy0rKn49XkBdL319fSxcImZ1bmN0aW9uLWlubGluZVwiOntwYXR0ZXJuOi9cXCRGOlstXFx3Ll0rXFw/Wy1cXHcuXSsoPzosKD86XFx8Pyg/OlstIy5eKyp+XSooPzpbXFx3K11bXiRdKil8PSg/OltcXFMrXVteJF0qKXxAWy0jXSooPzpcXHcrLilbXFx3Ky5dKyk/KSopP1xcJC8saW5zaWRlOnt2YXJpYWJsZTp7cGF0dGVybjovKD86Wyx8XSlAPyg/OiMrfFstKyp+PV5dKT9bXFx3Ll0rLyxpbnNpZGU6e3B1bmN0dWF0aW9uOntwYXR0ZXJuOi9bLC58XS99LG9wZXJhdG9yOntwYXR0ZXJuOi8jK3xbLSsqfj1eQF0vfX19LHB1bmN0dWF0aW9uOntwYXR0ZXJuOi9cXCRcXHc6fFskOj8uLHxdL319LGFsaWFzOlwiZnVuY3Rpb25cIn0sXCJmdW5jdGlvbi1ibG9ja1wiOntwYXR0ZXJuOi9cXCRYRjp7Wy1cXHcuXStcXD9bLVxcdy5dKyg/OiwoPzpcXHw/KD86Wy0jLl4rKn5dKig/OltcXHcrXVteJF0qKXw9KD86W1xcUytdW14kXSopfEBbLSNdKig/OlxcdysuKVtcXHcrLl0rKT8pKik/fTpYRlxcJC8saW5zaWRlOntwdW5jdHVhdGlvbjp7cGF0dGVybjovWyQ6e30/Lix8XS99fSxhbGlhczpcImZ1bmN0aW9uXCJ9LFwiZGlyZWN0aXZlLWlubGluZVwiOntwYXR0ZXJuOi9cXCRcXHcoPzojXFxkK1xcKz8pPyg/OlxcW1stXFx3Ll0rXSk/OlstXFwvXFx3Ll0rXFwkLyxpbnNpZGU6e3B1bmN0dWF0aW9uOntwYXR0ZXJuOi9cXCQoPzpcXHc6fEMoPzpcXFt8I1xcZCkpP3xbOntbXFxdXS8saW5zaWRlOnt0YWc6e3BhdHRlcm46LyNcXGQvfX19fSxhbGlhczpcImZ1bmN0aW9uXCJ9LFwiZGlyZWN0aXZlLWJsb2NrLW9wZW5cIjp7cGF0dGVybjovXFwkXFx3Kzp7fFxcJFxcdyg/OiNcXGQrXFwrPyk/KD86XFxbWy1cXHcuXStdKT86Wy1cXHcuXSs6eyghW0EtWl0rKT8vLGluc2lkZTp7cHVuY3R1YXRpb246e3BhdHRlcm46L1xcJCg/Olxcdzp8Qyg/OlxcW3wjXFxkKSk/fFs6e1tcXF1dLyxpbnNpZGU6e3RhZzp7cGF0dGVybjovI1xcZC99fX0sYXR0cmlidXRlOntwYXR0ZXJuOi8hW0EtWl0rJC8saW5zaWRlOntwdW5jdHVhdGlvbjp7cGF0dGVybjovIS99fSxhbGlhczpcImtleXdvcmRcIn19LGFsaWFzOlwiZnVuY3Rpb25cIn0sXCJkaXJlY3RpdmUtYmxvY2stc2VwYXJhdG9yXCI6e3BhdHRlcm46L306Wy1cXHcuXSs6ey8saW5zaWRlOntwdW5jdHVhdGlvbjp7cGF0dGVybjovWzp7fV0vfX0sYWxpYXM6XCJmdW5jdGlvblwifSxcImRpcmVjdGl2ZS1ibG9jay1jbG9zZVwiOntwYXR0ZXJuOi99OlstXFx3Ll0rXFwkLyxpbnNpZGU6e3B1bmN0dWF0aW9uOntwYXR0ZXJuOi9bOnt9JF0vfX0sYWxpYXM6XCJmdW5jdGlvblwifX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImluc2lkZVwiLFwicHVuY3R1YXRpb25cIix7dmFyaWFibGU6ZS5sYW5ndWFnZXMueGVvcmFbXCJmdW5jdGlvbi1pbmxpbmVcIl0uaW5zaWRlLnZhcmlhYmxlfSxlLmxhbmd1YWdlcy54ZW9yYVtcImZ1bmN0aW9uLWJsb2NrXCJdKSxlLmxhbmd1YWdlcy54ZW9yYWN1YmU9ZS5sYW5ndWFnZXMueGVvcmF9KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJ4ZW9yYVwiLHIuYWxpYXNlcz1bXCJ4ZW9yYWN1YmVcIl19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnhvam89e2NvbW1lbnQ6e3BhdHRlcm46Lyg/Oid8XFwvXFwvfFJlbVxcYikuKy9pLGluc2lkZTp7a2V5d29yZDovXlJlbS9pfX0sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlwiXCJ8W15cIl0pKlwiLyxncmVlZHk6ITB9LG51bWJlcjpbLyg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OkVbKy1dP1xcZCspPy9pLC8mW2JjaG91XVthLXpcXGRdKy9pXSxzeW1ib2w6LyMoPzpJZnxFbHNlfEVsc2VJZnxFbmRpZnxQcmFnbWEpXFxiL2ksa2V5d29yZDovXFxiKD86QWRkSGFuZGxlcnxBcHB8QXJyYXl8QXMoPzpzaWducyk/fEJ5KD86UmVmfFZhbCl8QnJlYWt8Q2FsbHxDYXNlfENhdGNofENvbnN0fENvbnRpbnVlfEN1cnJlbnRNZXRob2ROYW1lfERlY2xhcmV8RGltfERvKD86d25Ubyk/fEVhY2h8RWxzZSg/OklmKT98RW5kfEV4aXR8RXh0ZW5kc3xGYWxzZXxGaW5hbGx5fEZvcnxHbG9iYWx8SWZ8SW58TGlifExvb3B8TWV8TmV4dHxOaWx8T3B0aW9uYWx8UGFyYW1BcnJheXxSYWlzZSg/OkV2ZW50KT98UmVEaW18UmVtfFJlbW92ZUhhbmRsZXJ8UmV0dXJufFNlbGVjdHxTZWxmfFNvZnR8U3RhdGljfFN0ZXB8U3VwZXJ8VGhlbnxUb3xUcnVlfFRyeXxVYm91bmR8VW50aWx8VXNpbmd8V2VuZHxXaGlsZSlcXGIvaSxvcGVyYXRvcjovPFs9Pl0/fD49P3xbK1xcLSpcXC9cXFxcXj1dfFxcYig/OkFkZHJlc3NPZnxBbmR8Q3R5cGV8SXNBP3xNb2R8TmV3fE5vdHxPcnxYb3J8V2Vha0FkZHJlc3NPZilcXGIvaSxwdW5jdHVhdGlvbjovWy4sOzooKV0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwieG9qb1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLnhxdWVyeT1lLmxhbmd1YWdlcy5leHRlbmQoXCJtYXJrdXBcIix7XCJ4cXVlcnktY29tbWVudFwiOntwYXR0ZXJuOi9cXCg6W1xcc1xcU10qPzpcXCkvLGdyZWVkeTohMCxhbGlhczpcImNvbW1lbnRcIn0sc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86XFwxXFwxfCg/IVxcMSlbXFxzXFxTXSkqXFwxLyxncmVlZHk6ITB9LGV4dGVuc2lvbjp7cGF0dGVybjovXFwoIy4rPyNcXCkvLGFsaWFzOlwic3ltYm9sXCJ9LHZhcmlhYmxlOi9cXCRbXFx3LTpdKy8sYXhpczp7cGF0dGVybjovKF58W14tXSkoPzphbmNlc3Rvcig/Oi1vci1zZWxmKT98YXR0cmlidXRlfGNoaWxkfGRlc2NlbmRhbnQoPzotb3Itc2VsZik/fGZvbGxvd2luZyg/Oi1zaWJsaW5nKT98cGFyZW50fHByZWNlZGluZyg/Oi1zaWJsaW5nKT98c2VsZikoPz06OikvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJvcGVyYXRvclwifSxcImtleXdvcmQtb3BlcmF0b3JcIjp7cGF0dGVybjovKF58W146LV0pXFxiKD86YW5kfGNhc3RhYmxlIGFzfGRpdnxlcXxleGNlcHR8Z2V8Z3R8aWRpdnxpbnN0YW5jZSBvZnxpbnRlcnNlY3R8aXN8bGV8bHR8bW9kfG5lfG9yfHVuaW9uKVxcYig/PSR8W146LV0pLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwib3BlcmF0b3JcIn0sa2V5d29yZDp7cGF0dGVybjovKF58W146LV0pXFxiKD86YXN8YXNjZW5kaW5nfGF0fGJhc2UtdXJpfGJvdW5kYXJ5LXNwYWNlfGNhc2V8Y2FzdCBhc3xjb2xsYXRpb258Y29uc3RydWN0aW9ufGNvcHktbmFtZXNwYWNlc3xkZWNsYXJlfGRlZmF1bHR8ZGVzY2VuZGluZ3xlbHNlfGVtcHR5ICg/OmdyZWF0ZXN0fGxlYXN0KXxlbmNvZGluZ3xldmVyeXxleHRlcm5hbHxmb3J8ZnVuY3Rpb258aWZ8aW1wb3J0fGlufGluaGVyaXR8bGF4fGxldHxtYXB8bW9kdWxlfG5hbWVzcGFjZXxuby1pbmhlcml0fG5vLXByZXNlcnZlfG9wdGlvbnxvcmRlcig/OiBieXxlZHxpbmcpP3xwcmVzZXJ2ZXxyZXR1cm58c2F0aXNmaWVzfHNjaGVtYXxzb21lfHN0YWJsZXxzdHJpY3R8c3RyaXB8dGhlbnx0b3x0cmVhdCBhc3x0eXBlc3dpdGNofHVub3JkZXJlZHx2YWxpZGF0ZXx2YXJpYWJsZXx2ZXJzaW9ufHdoZXJlfHhxdWVyeSlcXGIoPz0kfFteOi1dKS8sbG9va2JlaGluZDohMH0sZnVuY3Rpb246L1tcXHctXSsoPzo6W1xcdy1dKykqKD89XFxzKlxcKCkvLFwieHF1ZXJ5LWVsZW1lbnRcIjp7cGF0dGVybjovKGVsZW1lbnRcXHMrKVtcXHctXSsoPzo6W1xcdy1dKykqLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwidGFnXCJ9LFwieHF1ZXJ5LWF0dHJpYnV0ZVwiOntwYXR0ZXJuOi8oYXR0cmlidXRlXFxzKylbXFx3LV0rKD86OltcXHctXSspKi8sbG9va2JlaGluZDohMCxhbGlhczpcImF0dHItbmFtZVwifSxidWlsdGluOntwYXR0ZXJuOi8oXnxbXjotXSlcXGIoPzphdHRyaWJ1dGV8Y29tbWVudHxkb2N1bWVudHxlbGVtZW50fHByb2Nlc3NpbmctaW5zdHJ1Y3Rpb258dGV4dHx4czooPzphbnlBdG9taWNUeXBlfGFueVR5cGV8YW55VVJJfGJhc2U2NEJpbmFyeXxib29sZWFufGJ5dGV8ZGF0ZXxkYXRlVGltZXxkYXlUaW1lRHVyYXRpb258ZGVjaW1hbHxkb3VibGV8ZHVyYXRpb258RU5USVRJRVN8RU5USVRZfGZsb2F0fGdEYXl8Z01vbnRofGdNb250aERheXxnWWVhcnxnWWVhck1vbnRofGhleEJpbmFyeXxJRHxJRFJFRlM/fGludHxpbnRlZ2VyfGxhbmd1YWdlfGxvbmd8TmFtZXxOQ05hbWV8bmVnYXRpdmVJbnRlZ2VyfE5NVE9LRU5TP3xub25OZWdhdGl2ZUludGVnZXJ8bm9uUG9zaXRpdmVJbnRlZ2VyfG5vcm1hbGl6ZWRTdHJpbmd8Tk9UQVRJT058cG9zaXRpdmVJbnRlZ2VyfFFOYW1lfHNob3J0fHN0cmluZ3x0aW1lfHRva2VufHVuc2lnbmVkKD86Qnl0ZXxJbnR8TG9uZ3xTaG9ydCl8dW50eXBlZCg/OkF0b21pYyk/fHllYXJNb250aER1cmF0aW9uKSlcXGIoPz0kfFteOi1dKS8sbG9va2JlaGluZDohMH0sbnVtYmVyOi9cXGJcXGQrKD86XFwuXFxkKyk/KD86RVsrLV0/XFxkKyk/LyxvcGVyYXRvcjpbL1srKj0/fEBdfFxcLlxcLj98Oj18IT18PFs9PF0/fD5bPT5dPy8se3BhdHRlcm46LyhcXHMpLSg/PVxccykvLGxvb2tiZWhpbmQ6ITB9XSxwdW5jdHVhdGlvbjovW1tcXF0oKXt9LDs6XFwvXS99KSxlLmxhbmd1YWdlcy54cXVlcnkudGFnLnBhdHRlcm49LzxcXC8/KD8hXFxkKVteXFxzPlxcLz0kPCVdKyg/OlxccytbXlxccz5cXC89XSsoPzo9KD86KFwifCcpKD86XFxcXFtcXHNcXFNdfHsoPyF7KSg/OnsoPzp7W159XSp9fFtefV0pKn18W159XSkrfXwoPyFcXDEpW15cXFxcXSkqXFwxfFteXFxzJ1wiPj1dKykpPykqXFxzKlxcLz8+L2ksZS5sYW5ndWFnZXMueHF1ZXJ5LnRhZy5pbnNpZGVbXCJhdHRyLXZhbHVlXCJdLnBhdHRlcm49Lz0oPzooXCJ8JykoPzpcXFxcW1xcc1xcU118eyg/IXspKD86eyg/OntbXn1dKn18W159XSkqfXxbXn1dKSt9fCg/IVxcMSlbXlxcXFxdKSpcXDF8W15cXHMnXCI+PV0rKS9pLGUubGFuZ3VhZ2VzLnhxdWVyeS50YWcuaW5zaWRlW1wiYXR0ci12YWx1ZVwiXS5pbnNpZGUucHVuY3R1YXRpb249L149XCJ8XCIkLyxlLmxhbmd1YWdlcy54cXVlcnkudGFnLmluc2lkZVtcImF0dHItdmFsdWVcIl0uaW5zaWRlLmV4cHJlc3Npb249e3BhdHRlcm46L3soPyF7KSg/OnsoPzp7W159XSp9fFtefV0pKn18W159XSkrfS8saW5zaWRlOntyZXN0OmUubGFuZ3VhZ2VzLnhxdWVyeX0sYWxpYXM6XCJsYW5ndWFnZS14cXVlcnlcIn07dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpcInN0cmluZ1wiPT10eXBlb2YgZS5jb250ZW50P2UuY29udGVudDplLmNvbnRlbnQubWFwKHQpLmpvaW4oXCJcIil9LG49ZnVuY3Rpb24ocil7Zm9yKHZhciBvPVtdLGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIGk9clthXSxsPSExO2lmKFwic3RyaW5nXCIhPXR5cGVvZiBpJiYoXCJ0YWdcIj09PWkudHlwZSYmaS5jb250ZW50WzBdJiZcInRhZ1wiPT09aS5jb250ZW50WzBdLnR5cGU/XCI8L1wiPT09aS5jb250ZW50WzBdLmNvbnRlbnRbMF0uY29udGVudD9vLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdLnRhZ05hbWU9PT10KGkuY29udGVudFswXS5jb250ZW50WzFdKSYmby5wb3AoKTpcIi8+XCI9PT1pLmNvbnRlbnRbaS5jb250ZW50Lmxlbmd0aC0xXS5jb250ZW50fHxvLnB1c2goe3RhZ05hbWU6dChpLmNvbnRlbnRbMF0uY29udGVudFsxXSksb3BlbmVkQnJhY2VzOjB9KTohKG8ubGVuZ3RoPjAmJlwicHVuY3R1YXRpb25cIj09PWkudHlwZSYmXCJ7XCI9PT1pLmNvbnRlbnQpfHxyW2ErMV0mJlwicHVuY3R1YXRpb25cIj09PXJbYSsxXS50eXBlJiZcIntcIj09PXJbYSsxXS5jb250ZW50fHxyW2EtMV0mJlwicGxhaW4tdGV4dFwiPT09clthLTFdLnR5cGUmJlwie1wiPT09clthLTFdLmNvbnRlbnQ/by5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXS5vcGVuZWRCcmFjZXM+MCYmXCJwdW5jdHVhdGlvblwiPT09aS50eXBlJiZcIn1cIj09PWkuY29udGVudD9vW28ubGVuZ3RoLTFdLm9wZW5lZEJyYWNlcy0tOlwiY29tbWVudFwiIT09aS50eXBlJiYobD0hMCk6b1tvLmxlbmd0aC0xXS5vcGVuZWRCcmFjZXMrKyksKGx8fFwic3RyaW5nXCI9PXR5cGVvZiBpKSYmby5sZW5ndGg+MCYmMD09PW9bby5sZW5ndGgtMV0ub3BlbmVkQnJhY2VzKXt2YXIgcz10KGkpO2E8ci5sZW5ndGgtMSYmKFwic3RyaW5nXCI9PXR5cGVvZiByW2ErMV18fFwicGxhaW4tdGV4dFwiPT09clthKzFdLnR5cGUpJiYocys9dChyW2ErMV0pLHIuc3BsaWNlKGErMSwxKSksYT4wJiYoXCJzdHJpbmdcIj09dHlwZW9mIHJbYS0xXXx8XCJwbGFpbi10ZXh0XCI9PT1yW2EtMV0udHlwZSkmJihzPXQoclthLTFdKStzLHIuc3BsaWNlKGEtMSwxKSxhLS0pLC9eXFxzKyQvLnRlc3Qocyk/clthXT1zOnJbYV09bmV3IGUuVG9rZW4oXCJwbGFpbi10ZXh0XCIscyxudWxsLHMpfWkuY29udGVudCYmXCJzdHJpbmdcIiE9dHlwZW9mIGkuY29udGVudCYmbihpLmNvbnRlbnQpfX07ZS5ob29rcy5hZGQoXCJhZnRlci10b2tlbml6ZVwiLGZ1bmN0aW9uKGUpe1wieHF1ZXJ5XCI9PT1lLmxhbmd1YWdlJiZuKGUudG9rZW5zKX0pfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwieHF1ZXJ5XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy55YW1sPXtzY2FsYXI6e3BhdHRlcm46LyhbXFwtOl1cXHMqKD86IVteXFxzXSspP1sgXFx0XSpbfD5dKVsgXFx0XSooPzooKD86XFxyP1xcbnxcXHIpWyBcXHRdKylbXlxcclxcbl0rKD86XFwyW15cXHJcXG5dKykqKS8sbG9va2JlaGluZDohMCxhbGlhczpcInN0cmluZ1wifSxjb21tZW50Oi8jLiovLGtleTp7cGF0dGVybjovKFxccyooPzpefFs6XFwtLFt7XFxyXFxuP10pWyBcXHRdKig/OiFbXlxcc10rKT9bIFxcdF0qKVteXFxyXFxue1tcXF19LCNcXHNdKz8oPz1cXHMqOlxccykvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJhdHJ1bGVcIn0sZGlyZWN0aXZlOntwYXR0ZXJuOi8oXlsgXFx0XSopJS4rL20sbG9va2JlaGluZDohMCxhbGlhczpcImltcG9ydGFudFwifSxkYXRldGltZTp7cGF0dGVybjovKFs6XFwtLFt7XVxccyooPzohW15cXHNdKyk/WyBcXHRdKikoPzpcXGR7NH0tXFxkXFxkPy1cXGRcXGQ/KD86W3RUXXxbIFxcdF0rKVxcZFxcZD86XFxkezJ9OlxcZHsyfSg/OlxcLlxcZCopP1sgXFx0XSooPzpafFstK11cXGRcXGQ/KD86OlxcZHsyfSk/KT98XFxkezR9LVxcZHsyfS1cXGR7Mn18XFxkXFxkPzpcXGR7Mn0oPzo6XFxkezJ9KD86XFwuXFxkKik/KT8pKD89WyBcXHRdKig/OiR8LHxdfH0pKS9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJudW1iZXJcIn0sYm9vbGVhbjp7cGF0dGVybjovKFs6XFwtLFt7XVxccyooPzohW15cXHNdKyk/WyBcXHRdKikoPzp0cnVlfGZhbHNlKVsgXFx0XSooPz0kfCx8XXx9KS9pbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwiaW1wb3J0YW50XCJ9LG51bGw6e3BhdHRlcm46LyhbOlxcLSxbe11cXHMqKD86IVteXFxzXSspP1sgXFx0XSopKD86bnVsbHx+KVsgXFx0XSooPz0kfCx8XXx9KS9pbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwiaW1wb3J0YW50XCJ9LHN0cmluZzp7cGF0dGVybjovKFs6XFwtLFt7XVxccyooPzohW15cXHNdKyk/WyBcXHRdKikoXCJ8JykoPzooPyFcXDIpW15cXFxcXFxyXFxuXXxcXFxcLikqXFwyKD89WyBcXHRdKig/OiR8LHxdfH0pKS9tLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfSxudW1iZXI6e3BhdHRlcm46LyhbOlxcLSxbe11cXHMqKD86IVteXFxzXSspP1sgXFx0XSopWystXT8oPzoweFtcXGRhLWZdK3wwb1swLTddK3woPzpcXGQrXFwuP1xcZCp8XFwuP1xcZCspKD86ZVsrLV0/XFxkKyk/fFxcLmluZnxcXC5uYW4pWyBcXHRdKig/PSR8LHxdfH0pL2ltLGxvb2tiZWhpbmQ6ITB9LHRhZzovIVteXFxzXSsvLGltcG9ydGFudDovWyYqXVtcXHddKy8scHVuY3R1YXRpb246Ly0tLXxbOltcXF17fVxcLSx8Pj9dfFxcLlxcLlxcLi99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJ5YW1sXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcImJsYWNrXCIsYmFja2dyb3VuZDpcIm5vbmVcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCJibGFja1wiLGJhY2tncm91bmQ6XCJub25lXCIsZm9udEZhbWlseTpcIkNvbnNvbGFzLCBNb25hY28sICdBbmRhbGUgTW9ubycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZVwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLHBvc2l0aW9uOlwicmVsYXRpdmVcIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcInZpc2libGVcIixwYWRkaW5nOlwiMFwiLGJhY2tncm91bmRDb2xvcjpcIiNmZGZkZmRcIixXZWJraXRCb3hTaXppbmc6XCJib3JkZXItYm94XCIsTW96Qm94U2l6aW5nOlwiYm9yZGVyLWJveFwiLGJveFNpemluZzpcImJvcmRlci1ib3hcIixtYXJnaW5Cb3R0b206XCIxZW1cIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0+Y29kZSc6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIixib3JkZXJMZWZ0OlwiMTBweCBzb2xpZCAjMzU4Y2NiXCIsYm94U2hhZG93OlwiLTFweCAwcHggMHB4IDBweCAjMzU4Y2NiLCAwcHggMHB4IDBweCAxcHggI2RmZGZkZlwiLGJhY2tncm91bmRDb2xvcjpcIiNmZGZkZmRcIixiYWNrZ3JvdW5kSW1hZ2U6XCJsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQgNTAlLCByZ2JhKDY5LCAxNDIsIDIwOSwgMC4wNCkgNTAlKVwiLGJhY2tncm91bmRTaXplOlwiM2VtIDNlbVwiLGJhY2tncm91bmRPcmlnaW46XCJjb250ZW50LWJveFwiLGJhY2tncm91bmRBdHRhY2htZW50OlwibG9jYWxcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2VcIl0nOnttYXhIZWlnaHQ6XCJpbmhlcml0XCIsaGVpZ2h0OlwiaW5oZXJpdFwiLHBhZGRpbmc6XCIwIDFlbVwiLGRpc3BsYXk6XCJibG9ja1wiLG92ZXJmbG93OlwiYXV0b1wifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntiYWNrZ3JvdW5kQ29sb3I6XCIjZmRmZGZkXCIsV2Via2l0Qm94U2l6aW5nOlwiYm9yZGVyLWJveFwiLE1vekJveFNpemluZzpcImJvcmRlci1ib3hcIixib3hTaXppbmc6XCJib3JkZXItYm94XCIsbWFyZ2luQm90dG9tOlwiMWVtXCIscG9zaXRpb246XCJyZWxhdGl2ZVwiLHBhZGRpbmc6XCIuMmVtXCIsYm9yZGVyUmFkaXVzOlwiMC4zZW1cIixjb2xvcjpcIiNjOTJjMmNcIixib3JkZXI6XCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpXCIsZGlzcGxheTpcImlubGluZVwiLHdoaXRlU3BhY2U6XCJub3JtYWxcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06YmVmb3JlJzp7Y29udGVudDpcIicnXCIsekluZGV4OlwiLTJcIixkaXNwbGF5OlwiYmxvY2tcIixwb3NpdGlvbjpcImFic29sdXRlXCIsYm90dG9tOlwiMC43NWVtXCIsbGVmdDpcIjAuMThlbVwiLHdpZHRoOlwiNDAlXCIsaGVpZ2h0OlwiMjAlXCIsbWF4SGVpZ2h0OlwiMTNlbVwiLGJveFNoYWRvdzpcIjBweCAxM3B4IDhweCAjOTc5Nzk3XCIsV2Via2l0VHJhbnNmb3JtOlwicm90YXRlKC0yZGVnKVwiLE1velRyYW5zZm9ybTpcInJvdGF0ZSgtMmRlZylcIixtc1RyYW5zZm9ybTpcInJvdGF0ZSgtMmRlZylcIixPVHJhbnNmb3JtOlwicm90YXRlKC0yZGVnKVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMmRlZylcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06YWZ0ZXInOntjb250ZW50OlwiJydcIix6SW5kZXg6XCItMlwiLGRpc3BsYXk6XCJibG9ja1wiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIixib3R0b206XCIwLjc1ZW1cIixsZWZ0OlwiYXV0b1wiLHdpZHRoOlwiNDAlXCIsaGVpZ2h0OlwiMjAlXCIsbWF4SGVpZ2h0OlwiMTNlbVwiLGJveFNoYWRvdzpcIjBweCAxM3B4IDhweCAjOTc5Nzk3XCIsV2Via2l0VHJhbnNmb3JtOlwicm90YXRlKDJkZWcpXCIsTW96VHJhbnNmb3JtOlwicm90YXRlKDJkZWcpXCIsbXNUcmFuc2Zvcm06XCJyb3RhdGUoMmRlZylcIixPVHJhbnNmb3JtOlwicm90YXRlKDJkZWcpXCIsdHJhbnNmb3JtOlwicm90YXRlKDJkZWcpXCIscmlnaHQ6XCIwLjc1ZW1cIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOmFmdGVyJzp7cmlnaHQ6XCIwLjc1ZW1cIixsZWZ0OlwiYXV0b1wiLFdlYmtpdFRyYW5zZm9ybTpcInJvdGF0ZSgyZGVnKVwiLE1velRyYW5zZm9ybTpcInJvdGF0ZSgyZGVnKVwiLG1zVHJhbnNmb3JtOlwicm90YXRlKDJkZWcpXCIsT1RyYW5zZm9ybTpcInJvdGF0ZSgyZGVnKVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgyZGVnKVwifSxjb21tZW50Ontjb2xvcjpcIiM3RDhCOTlcIn0sXCJibG9jay1jb21tZW50XCI6e2NvbG9yOlwiIzdEOEI5OVwifSxwcm9sb2c6e2NvbG9yOlwiIzdEOEI5OVwifSxkb2N0eXBlOntjb2xvcjpcIiM3RDhCOTlcIn0sY2RhdGE6e2NvbG9yOlwiIzdEOEI5OVwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjNUY2MzY0XCJ9LHByb3BlcnR5Ontjb2xvcjpcIiNjOTJjMmNcIn0sdGFnOntjb2xvcjpcIiNjOTJjMmNcIn0sYm9vbGVhbjp7Y29sb3I6XCIjYzkyYzJjXCJ9LG51bWJlcjp7Y29sb3I6XCIjYzkyYzJjXCJ9LFwiZnVuY3Rpb24tbmFtZVwiOntjb2xvcjpcIiNjOTJjMmNcIn0sY29uc3RhbnQ6e2NvbG9yOlwiI2M5MmMyY1wifSxzeW1ib2w6e2NvbG9yOlwiI2M5MmMyY1wifSxkZWxldGVkOntjb2xvcjpcIiNjOTJjMmNcIn0sc2VsZWN0b3I6e2NvbG9yOlwiIzJmOWMwYVwifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiMyZjljMGFcIn0sc3RyaW5nOntjb2xvcjpcIiMyZjljMGFcIn0sY2hhcjp7Y29sb3I6XCIjMmY5YzBhXCJ9LGZ1bmN0aW9uOntjb2xvcjpcIiMyZjljMGFcIn0sYnVpbHRpbjp7Y29sb3I6XCIjMmY5YzBhXCJ9LGluc2VydGVkOntjb2xvcjpcIiMyZjljMGFcIn0sb3BlcmF0b3I6e2NvbG9yOlwiI2E2N2Y1OVwiLGJhY2tncm91bmQ6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSlcIn0sZW50aXR5Ontjb2xvcjpcIiNhNjdmNTlcIixiYWNrZ3JvdW5kOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpXCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiI2E2N2Y1OVwiLGJhY2tncm91bmQ6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSlcIn0sdmFyaWFibGU6e2NvbG9yOlwiI2E2N2Y1OVwiLGJhY2tncm91bmQ6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSlcIn0sYXRydWxlOntjb2xvcjpcIiMxOTkwYjhcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiIzE5OTBiOFwifSxrZXl3b3JkOntjb2xvcjpcIiMxOTkwYjhcIn0sXCJjbGFzcy1uYW1lXCI6e2NvbG9yOlwiIzE5OTBiOFwifSxyZWdleDp7Y29sb3I6XCIjZTkwXCJ9LGltcG9ydGFudDp7Y29sb3I6XCIjZTkwXCIsZm9udFdlaWdodDpcIm5vcm1hbFwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNhNjdmNTlcIixiYWNrZ3JvdW5kOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjYTY3ZjU5XCIsYmFja2dyb3VuZDpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KVwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifSxcIi5uYW1lc3BhY2VcIjp7T3BhY2l0eTpcIi43XCJ9LFwidGFiOm5vdCg6ZW1wdHkpOmJlZm9yZVwiOntjb2xvcjpcIiNlMGQ3ZDFcIn0sXCJjcjpiZWZvcmVcIjp7Y29sb3I6XCIjZTBkN2QxXCJ9LFwibGY6YmVmb3JlXCI6e2NvbG9yOlwiI2UwZDdkMVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXS5saW5lLW51bWJlcnMnOntwYWRkaW5nTGVmdDpcIjBcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0ubGluZS1udW1iZXJzIGNvZGUnOntwYWRkaW5nTGVmdDpcIjMuOGVtXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdLmxpbmUtbnVtYmVycyAubGluZS1udW1iZXJzLXJvd3MnOntsZWZ0OlwiMFwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXVtkYXRhLWxpbmVdJzp7cGFkZGluZ1RvcDpcIjBcIixwYWRkaW5nQm90dG9tOlwiMFwiLHBhZGRpbmdMZWZ0OlwiMFwifSxcInByZVtkYXRhLWxpbmVdIGNvZGVcIjp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHBhZGRpbmdMZWZ0OlwiNGVtXCJ9LFwicHJlIC5saW5lLWhpZ2hsaWdodFwiOnttYXJnaW5Ub3A6XCIwXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCJ3aGl0ZVwiLGJhY2tncm91bmQ6XCJub25lXCIsdGV4dFNoYWRvdzpcIjAgLS4xZW0gLjJlbSBibGFja1wiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIndoaXRlXCIsYmFja2dyb3VuZDpcImhzbCgzMCwgMjAlLCAyNSUpXCIsdGV4dFNoYWRvdzpcIjAgLS4xZW0gLjJlbSBibGFja1wiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCIsYm9yZGVyOlwiLjNlbSBzb2xpZCBoc2woMzAsIDIwJSwgNDAlKVwiLGJvcmRlclJhZGl1czpcIi41ZW1cIixib3hTaGFkb3c6XCIxcHggMXB4IC41ZW0gYmxhY2sgaW5zZXRcIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7YmFja2dyb3VuZDpcImhzbCgzMCwgMjAlLCAyNSUpXCIscGFkZGluZzpcIi4xNWVtIC4yZW0gLjA1ZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCIsYm9yZGVyOlwiLjEzZW0gc29saWQgaHNsKDMwLCAyMCUsIDQwJSlcIixib3hTaGFkb3c6XCIxcHggMXB4IC4zZW0gLS4xZW0gYmxhY2sgaW5zZXRcIix3aGl0ZVNwYWNlOlwibm9ybWFsXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiaHNsKDMwLCAyMCUsIDUwJSlcIn0scHJvbG9nOntjb2xvcjpcImhzbCgzMCwgMjAlLCA1MCUpXCJ9LGRvY3R5cGU6e2NvbG9yOlwiaHNsKDMwLCAyMCUsIDUwJSlcIn0sY2RhdGE6e2NvbG9yOlwiaHNsKDMwLCAyMCUsIDUwJSlcIn0scHVuY3R1YXRpb246e09wYWNpdHk6XCIuN1wifSxcIi5uYW1lc3BhY2VcIjp7T3BhY2l0eTpcIi43XCJ9LHByb3BlcnR5Ontjb2xvcjpcImhzbCgzNTAsIDQwJSwgNzAlKVwifSx0YWc6e2NvbG9yOlwiaHNsKDM1MCwgNDAlLCA3MCUpXCJ9LGJvb2xlYW46e2NvbG9yOlwiaHNsKDM1MCwgNDAlLCA3MCUpXCJ9LG51bWJlcjp7Y29sb3I6XCJoc2woMzUwLCA0MCUsIDcwJSlcIn0sY29uc3RhbnQ6e2NvbG9yOlwiaHNsKDM1MCwgNDAlLCA3MCUpXCJ9LHN5bWJvbDp7Y29sb3I6XCJoc2woMzUwLCA0MCUsIDcwJSlcIn0sc2VsZWN0b3I6e2NvbG9yOlwiaHNsKDc1LCA3MCUsIDYwJSlcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCJoc2woNzUsIDcwJSwgNjAlKVwifSxzdHJpbmc6e2NvbG9yOlwiaHNsKDc1LCA3MCUsIDYwJSlcIn0sY2hhcjp7Y29sb3I6XCJoc2woNzUsIDcwJSwgNjAlKVwifSxidWlsdGluOntjb2xvcjpcImhzbCg3NSwgNzAlLCA2MCUpXCJ9LGluc2VydGVkOntjb2xvcjpcImhzbCg3NSwgNzAlLCA2MCUpXCJ9LG9wZXJhdG9yOntjb2xvcjpcImhzbCg0MCwgOTAlLCA2MCUpXCJ9LGVudGl0eTp7Y29sb3I6XCJoc2woNDAsIDkwJSwgNjAlKVwiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcImhzbCg0MCwgOTAlLCA2MCUpXCJ9LFwiLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiaHNsKDQwLCA5MCUsIDYwJSlcIn0sXCIuc3R5bGUgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcImhzbCg0MCwgOTAlLCA2MCUpXCJ9LHZhcmlhYmxlOntjb2xvcjpcImhzbCg0MCwgOTAlLCA2MCUpXCJ9LGF0cnVsZTp7Y29sb3I6XCJoc2woMzUwLCA0MCUsIDcwJSlcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiaHNsKDM1MCwgNDAlLCA3MCUpXCJ9LGtleXdvcmQ6e2NvbG9yOlwiaHNsKDM1MCwgNDAlLCA3MCUpXCJ9LHJlZ2V4Ontjb2xvcjpcIiNlOTBcIn0saW1wb3J0YW50Ontjb2xvcjpcIiNlOTBcIixmb250V2VpZ2h0OlwiYm9sZFwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifSxkZWxldGVkOntjb2xvcjpcInJlZFwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2ZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiYmxhY2tcIixjb2xvcjpcIndoaXRlXCIsYm94U2hhZG93OlwiLS4zZW0gMCAwIC4zZW0gYmxhY2ssIC4zZW0gMCAwIC4zZW0gYmxhY2tcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIscGFkZGluZzpcIi40ZW0gLjhlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wiLGJhY2tncm91bmQ6J3VybChcXCdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnJTIwdmVyc2lvbiUzRFwiMS4xXCIlMjB4bWxucyUzRFwiaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnXCIlMjB3aWR0aCUzRFwiMTAwXCIlMjBoZWlnaHQlM0RcIjEwMFwiJTIwZmlsbCUzRFwicmdiYSgwJTJDMCUyQzAlMkMuMilcIj4lMEQlMEE8cG9seWdvbiUyMHBvaW50cyUzRFwiMCUyQzUwJTIwNTAlMkMwJTIwMCUyQzBcIiUyMCUyRj4lMEQlMEE8cG9seWdvbiUyMHBvaW50cyUzRFwiMCUyQzEwMCUyMDUwJTJDMTAwJTIwMTAwJTJDNTAlMjAxMDAlMkMwXCIlMjAlMkY+JTBEJTBBPCUyRnN2Zz5cXCcpJyxiYWNrZ3JvdW5kU2l6ZTpcIjFlbSAxZW1cIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7cGFkZGluZzpcIi4yZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCIsYm94U2hhZG93Olwibm9uZVwiLHdoaXRlU3BhY2U6XCJub3JtYWxcIn0sY29tbWVudDp7Y29sb3I6XCIjYWFhXCJ9LHByb2xvZzp7Y29sb3I6XCIjYWFhXCJ9LGRvY3R5cGU6e2NvbG9yOlwiI2FhYVwifSxjZGF0YTp7Y29sb3I6XCIjYWFhXCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiM5OTlcIn0sXCIubmFtZXNwYWNlXCI6e09wYWNpdHk6XCIuN1wifSxwcm9wZXJ0eTp7Y29sb3I6XCIjMGNmXCJ9LHRhZzp7Y29sb3I6XCIjMGNmXCJ9LGJvb2xlYW46e2NvbG9yOlwiIzBjZlwifSxudW1iZXI6e2NvbG9yOlwiIzBjZlwifSxjb25zdGFudDp7Y29sb3I6XCIjMGNmXCJ9LHN5bWJvbDp7Y29sb3I6XCIjMGNmXCJ9LHNlbGVjdG9yOntjb2xvcjpcInllbGxvd1wifSxcImF0dHItbmFtZVwiOntjb2xvcjpcInllbGxvd1wifSxzdHJpbmc6e2NvbG9yOlwieWVsbG93XCJ9LGNoYXI6e2NvbG9yOlwieWVsbG93XCJ9LGJ1aWx0aW46e2NvbG9yOlwieWVsbG93XCJ9LG9wZXJhdG9yOntjb2xvcjpcInllbGxvd2dyZWVuXCJ9LGVudGl0eTp7Y29sb3I6XCJ5ZWxsb3dncmVlblwiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcInllbGxvd2dyZWVuXCJ9LFwiLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwieWVsbG93Z3JlZW5cIn0sXCIudG9rZS52YXJpYWJsZVwiOntjb2xvcjpcInllbGxvd2dyZWVuXCJ9LGluc2VydGVkOntjb2xvcjpcInllbGxvd2dyZWVuXCJ9LGF0cnVsZTp7Y29sb3I6XCJkZWVwcGlua1wifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCJkZWVwcGlua1wifSxrZXl3b3JkOntjb2xvcjpcImRlZXBwaW5rXCJ9LHJlZ2V4Ontjb2xvcjpcIm9yYW5nZVwifSxpbXBvcnRhbnQ6e2NvbG9yOlwib3JhbmdlXCIsZm9udFdlaWdodDpcImJvbGRcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn0sZGVsZXRlZDp7Y29sb3I6XCJyZWRcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiNmOGY4ZjJcIixiYWNrZ3JvdW5kOlwibm9uZVwiLHRleHRTaGFkb3c6XCIwIDFweCByZ2JhKDAsIDAsIDAsIDAuMylcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjZjhmOGYyXCIsYmFja2dyb3VuZDpcIiMyNzI4MjJcIix0ZXh0U2hhZG93OlwiMCAxcHggcmdiYSgwLCAwLCAwLCAwLjMpXCIsZm9udEZhbWlseTpcIkNvbnNvbGFzLCBNb25hY28sICdBbmRhbGUgTW9ubycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZVwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLHBhZGRpbmc6XCIxZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIixib3JkZXJSYWRpdXM6XCIwLjNlbVwifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntiYWNrZ3JvdW5kOlwiIzI3MjgyMlwiLHBhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwiLHdoaXRlU3BhY2U6XCJub3JtYWxcIn0sY29tbWVudDp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0scHJvbG9nOntjb2xvcjpcInNsYXRlZ3JheVwifSxkb2N0eXBlOntjb2xvcjpcInNsYXRlZ3JheVwifSxjZGF0YTp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiI2Y4ZjhmMlwifSxcIi5uYW1lc3BhY2VcIjp7T3BhY2l0eTpcIi43XCJ9LHByb3BlcnR5Ontjb2xvcjpcIiNmOTI2NzJcIn0sdGFnOntjb2xvcjpcIiNmOTI2NzJcIn0sY29uc3RhbnQ6e2NvbG9yOlwiI2Y5MjY3MlwifSxzeW1ib2w6e2NvbG9yOlwiI2Y5MjY3MlwifSxkZWxldGVkOntjb2xvcjpcIiNmOTI2NzJcIn0sYm9vbGVhbjp7Y29sb3I6XCIjYWU4MWZmXCJ9LG51bWJlcjp7Y29sb3I6XCIjYWU4MWZmXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiNhNmUyMmVcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjYTZlMjJlXCJ9LHN0cmluZzp7Y29sb3I6XCIjYTZlMjJlXCJ9LGNoYXI6e2NvbG9yOlwiI2E2ZTIyZVwifSxidWlsdGluOntjb2xvcjpcIiNhNmUyMmVcIn0saW5zZXJ0ZWQ6e2NvbG9yOlwiI2E2ZTIyZVwifSxvcGVyYXRvcjp7Y29sb3I6XCIjZjhmOGYyXCJ9LGVudGl0eTp7Y29sb3I6XCIjZjhmOGYyXCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiI2Y4ZjhmMlwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNmOGY4ZjJcIn0sXCIuc3R5bGUgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNmOGY4ZjJcIn0sdmFyaWFibGU6e2NvbG9yOlwiI2Y4ZjhmMlwifSxhdHJ1bGU6e2NvbG9yOlwiI2U2ZGI3NFwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjZTZkYjc0XCJ9LGZ1bmN0aW9uOntjb2xvcjpcIiNlNmRiNzRcIn0sa2V5d29yZDp7Y29sb3I6XCIjNjZkOWVmXCJ9LHJlZ2V4Ontjb2xvcjpcIiNmZDk3MWZcIn0saW1wb3J0YW50Ontjb2xvcjpcIiNmZDk3MWZcIixmb250V2VpZ2h0OlwiYm9sZFwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiIzY1N2I4M1wiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiM2NTdiODNcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wiLGJvcmRlclJhZGl1czpcIjAuM2VtXCIsYmFja2dyb3VuZENvbG9yOlwiI2ZkZjZlM1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiIzA3MzY0MlwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiMwNzM2NDJcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjMDczNjQyXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiMwNzM2NDJcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjMDczNjQyXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiMwNzM2NDJcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiIzA3MzY0MlwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiIzA3MzY0MlwifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntiYWNrZ3JvdW5kQ29sb3I6XCIjZmRmNmUzXCIscGFkZGluZzpcIi4xZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiIzkzYTFhMVwifSxwcm9sb2c6e2NvbG9yOlwiIzkzYTFhMVwifSxkb2N0eXBlOntjb2xvcjpcIiM5M2ExYTFcIn0sY2RhdGE6e2NvbG9yOlwiIzkzYTFhMVwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjNTg2ZTc1XCJ9LFwiLm5hbWVzcGFjZVwiOntPcGFjaXR5OlwiLjdcIn0scHJvcGVydHk6e2NvbG9yOlwiIzI2OGJkMlwifSx0YWc6e2NvbG9yOlwiIzI2OGJkMlwifSxib29sZWFuOntjb2xvcjpcIiMyNjhiZDJcIn0sbnVtYmVyOntjb2xvcjpcIiMyNjhiZDJcIn0sY29uc3RhbnQ6e2NvbG9yOlwiIzI2OGJkMlwifSxzeW1ib2w6e2NvbG9yOlwiIzI2OGJkMlwifSxkZWxldGVkOntjb2xvcjpcIiMyNjhiZDJcIn0sc2VsZWN0b3I6e2NvbG9yOlwiIzJhYTE5OFwifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiMyYWExOThcIn0sc3RyaW5nOntjb2xvcjpcIiMyYWExOThcIn0sY2hhcjp7Y29sb3I6XCIjMmFhMTk4XCJ9LGJ1aWx0aW46e2NvbG9yOlwiIzJhYTE5OFwifSx1cmw6e2NvbG9yOlwiIzJhYTE5OFwifSxpbnNlcnRlZDp7Y29sb3I6XCIjMmFhMTk4XCJ9LGVudGl0eTp7Y29sb3I6XCIjNjU3YjgzXCIsYmFja2dyb3VuZDpcIiNlZWU4ZDVcIixjdXJzb3I6XCJoZWxwXCJ9LGF0cnVsZTp7Y29sb3I6XCIjODU5OTAwXCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiM4NTk5MDBcIn0sa2V5d29yZDp7Y29sb3I6XCIjODU5OTAwXCJ9LGZ1bmN0aW9uOntjb2xvcjpcIiNiNTg5MDBcIn0scmVnZXg6e2NvbG9yOlwiI2NiNGIxNlwifSxpbXBvcnRhbnQ6e2NvbG9yOlwiI2NiNGIxNlwiLGZvbnRXZWlnaHQ6XCJib2xkXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiNjYjRiMTZcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiNjY2NcIixiYWNrZ3JvdW5kOlwibm9uZVwiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiNjY2NcIixiYWNrZ3JvdW5kOlwiIzJkMmQyZFwiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2JhY2tncm91bmQ6XCIjMmQyZDJkXCIscGFkZGluZzpcIi4xZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCIsd2hpdGVTcGFjZTpcIm5vcm1hbFwifSxjb21tZW50Ontjb2xvcjpcIiM5OTlcIn0sXCJibG9jay1jb21tZW50XCI6e2NvbG9yOlwiIzk5OVwifSxwcm9sb2c6e2NvbG9yOlwiIzk5OVwifSxkb2N0eXBlOntjb2xvcjpcIiM5OTlcIn0sY2RhdGE6e2NvbG9yOlwiIzk5OVwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjY2NjXCJ9LHRhZzp7Y29sb3I6XCIjZTI3NzdhXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiI2UyNzc3YVwifSxuYW1lc3BhY2U6e2NvbG9yOlwiI2UyNzc3YVwifSxkZWxldGVkOntjb2xvcjpcIiNlMjc3N2FcIn0sXCJmdW5jdGlvbi1uYW1lXCI6e2NvbG9yOlwiIzYxOTZjY1wifSxib29sZWFuOntjb2xvcjpcIiNmMDhkNDlcIn0sbnVtYmVyOntjb2xvcjpcIiNmMDhkNDlcIn0sZnVuY3Rpb246e2NvbG9yOlwiI2YwOGQ0OVwifSxwcm9wZXJ0eTp7Y29sb3I6XCIjZjhjNTU1XCJ9LFwiY2xhc3MtbmFtZVwiOntjb2xvcjpcIiNmOGM1NTVcIn0sY29uc3RhbnQ6e2NvbG9yOlwiI2Y4YzU1NVwifSxzeW1ib2w6e2NvbG9yOlwiI2Y4YzU1NVwifSxzZWxlY3Rvcjp7Y29sb3I6XCIjY2M5OWNkXCJ9LGltcG9ydGFudDp7Y29sb3I6XCIjY2M5OWNkXCIsZm9udFdlaWdodDpcImJvbGRcIn0sYXRydWxlOntjb2xvcjpcIiNjYzk5Y2RcIn0sa2V5d29yZDp7Y29sb3I6XCIjY2M5OWNkXCJ9LGJ1aWx0aW46e2NvbG9yOlwiI2NjOTljZFwifSxzdHJpbmc6e2NvbG9yOlwiIzdlYzY5OVwifSxjaGFyOntjb2xvcjpcIiM3ZWM2OTlcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiIzdlYzY5OVwifSxyZWdleDp7Y29sb3I6XCIjN2VjNjk5XCJ9LHZhcmlhYmxlOntjb2xvcjpcIiM3ZWM2OTlcIn0sb3BlcmF0b3I6e2NvbG9yOlwiIzY3Y2RjY1wifSxlbnRpdHk6e2NvbG9yOlwiIzY3Y2RjY1wiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiM2N2NkY2NcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn0saW5zZXJ0ZWQ6e2NvbG9yOlwiZ3JlZW5cIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIndoaXRlXCIsYmFja2dyb3VuZDpcIm5vbmVcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHRleHRTaGFkb3c6XCIwIC0uMWVtIC4yZW0gYmxhY2tcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwid2hpdGVcIixiYWNrZ3JvdW5kOlwiaHNsKDAsIDAlLCA4JSlcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHRleHRTaGFkb3c6XCIwIC0uMWVtIC4yZW0gYmxhY2tcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLGJvcmRlclJhZGl1czpcIi41ZW1cIixib3JkZXI6XCIuM2VtIHNvbGlkIGhzbCgwLCAwJSwgMzMlKVwiLGJveFNoYWRvdzpcIjFweCAxcHggLjVlbSBibGFjayBpbnNldFwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wiLHBhZGRpbmc6XCIxZW1cIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7YmFja2dyb3VuZDpcImhzbCgwLCAwJSwgOCUpXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwiLGJvcmRlcjpcIi4xM2VtIHNvbGlkIGhzbCgwLCAwJSwgMzMlKVwiLGJveFNoYWRvdzpcIjFweCAxcHggLjNlbSAtLjFlbSBibGFjayBpbnNldFwiLHBhZGRpbmc6XCIuMTVlbSAuMmVtIC4wNWVtXCIsd2hpdGVTcGFjZTpcIm5vcm1hbFwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiaHNsYSgwLCAwJSwgOTMlLCAwLjE1KVwiLHRleHRTaGFkb3c6XCJub25lXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiaHNsYSgwLCAwJSwgOTMlLCAwLjE1KVwiLHRleHRTaGFkb3c6XCJub25lXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCA5MyUsIDAuMTUpXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCA5MyUsIDAuMTUpXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiaHNsYSgwLCAwJSwgOTMlLCAwLjE1KVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDkzJSwgMC4xNSlcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCA5MyUsIDAuMTUpXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDkzJSwgMC4xNSlcIn0sY29tbWVudDp7Y29sb3I6XCJoc2woMCwgMCUsIDQ3JSlcIn0scHJvbG9nOntjb2xvcjpcImhzbCgwLCAwJSwgNDclKVwifSxkb2N0eXBlOntjb2xvcjpcImhzbCgwLCAwJSwgNDclKVwifSxjZGF0YTp7Y29sb3I6XCJoc2woMCwgMCUsIDQ3JSlcIn0scHVuY3R1YXRpb246e09wYWNpdHk6XCIuN1wifSxcIi5uYW1lc3BhY2VcIjp7T3BhY2l0eTpcIi43XCJ9LHRhZzp7Y29sb3I6XCJoc2woMTQsIDU4JSwgNTUlKVwifSxib29sZWFuOntjb2xvcjpcImhzbCgxNCwgNTglLCA1NSUpXCJ9LG51bWJlcjp7Y29sb3I6XCJoc2woMTQsIDU4JSwgNTUlKVwifSxkZWxldGVkOntjb2xvcjpcImhzbCgxNCwgNTglLCA1NSUpXCJ9LGtleXdvcmQ6e2NvbG9yOlwiaHNsKDUzLCA4OSUsIDc5JSlcIn0scHJvcGVydHk6e2NvbG9yOlwiaHNsKDUzLCA4OSUsIDc5JSlcIn0sc2VsZWN0b3I6e2NvbG9yOlwiaHNsKDUzLCA4OSUsIDc5JSlcIn0sY29uc3RhbnQ6e2NvbG9yOlwiaHNsKDUzLCA4OSUsIDc5JSlcIn0sc3ltYm9sOntjb2xvcjpcImhzbCg1MywgODklLCA3OSUpXCJ9LGJ1aWx0aW46e2NvbG9yOlwiaHNsKDUzLCA4OSUsIDc5JSlcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCJoc2woNzYsIDIxJSwgNTIlKVwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCJoc2woNzYsIDIxJSwgNTIlKVwifSxzdHJpbmc6e2NvbG9yOlwiaHNsKDc2LCAyMSUsIDUyJSlcIn0sY2hhcjp7Y29sb3I6XCJoc2woNzYsIDIxJSwgNTIlKVwifSxvcGVyYXRvcjp7Y29sb3I6XCJoc2woNzYsIDIxJSwgNTIlKVwifSxlbnRpdHk6e2NvbG9yOlwiaHNsKDc2LCAyMSUsIDUyJSlcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCJoc2woNzYsIDIxJSwgNTIlKVwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcImhzbCg3NiwgMjElLCA1MiUpXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCJoc2woNzYsIDIxJSwgNTIlKVwifSx2YXJpYWJsZTp7Y29sb3I6XCJoc2woNzYsIDIxJSwgNTIlKVwifSxpbnNlcnRlZDp7Y29sb3I6XCJoc2woNzYsIDIxJSwgNTIlKVwifSxhdHJ1bGU6e2NvbG9yOlwiaHNsKDIxOCwgMjIlLCA1NSUpXCJ9LHJlZ2V4Ontjb2xvcjpcImhzbCg0MiwgNzUlLCA2NSUpXCJ9LGltcG9ydGFudDp7Y29sb3I6XCJoc2woNDIsIDc1JSwgNjUlKVwiLGZvbnRXZWlnaHQ6XCJib2xkXCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9LFwicHJlW2RhdGEtbGluZV1cIjp7cGFkZGluZzpcIjFlbSAwIDFlbSAzZW1cIixwb3NpdGlvbjpcInJlbGF0aXZlXCJ9LFwiLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4udGFnXCI6e2NvbG9yOlwiaHNsKDMzLCAzMyUsIDUyJSlcIn0sXCIubGFuZ3VhZ2UtbWFya3VwIC50b2tlbi5hdHRyLW5hbWVcIjp7Y29sb3I6XCJoc2woMzMsIDMzJSwgNTIlKVwifSxcIi5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLnB1bmN0dWF0aW9uXCI6e2NvbG9yOlwiaHNsKDMzLCAzMyUsIDUyJSlcIn0sXCJcIjp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHpJbmRleDpcIjFcIn0sXCIubGluZS1oaWdobGlnaHRcIjp7YmFja2dyb3VuZDpcImxpbmVhci1ncmFkaWVudCh0byByaWdodCwgaHNsYSgwLCAwJSwgMzMlLCAuMSkgNzAlLCBoc2xhKDAsIDAlLCAzMyUsIDApKVwiLGJvcmRlckJvdHRvbTpcIjFweCBkYXNoZWQgaHNsKDAsIDAlLCAzMyUpXCIsYm9yZGVyVG9wOlwiMXB4IGRhc2hlZCBoc2woMCwgMCUsIDMzJSlcIixsZWZ0OlwiMFwiLGxpbmVIZWlnaHQ6XCJpbmhlcml0XCIsbWFyZ2luVG9wOlwiMC43NWVtXCIscGFkZGluZzpcImluaGVyaXQgMFwiLHBvaW50ZXJFdmVudHM6XCJub25lXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLHJpZ2h0OlwiMFwiLHdoaXRlU3BhY2U6XCJwcmVcIix6SW5kZXg6XCIwXCJ9LFwiLmxpbmUtaGlnaGxpZ2h0OmJlZm9yZVwiOntiYWNrZ3JvdW5kQ29sb3I6XCJoc2woMjE1LCAxNSUsIDU5JSlcIixib3JkZXJSYWRpdXM6XCI5OTlweFwiLGJveFNoYWRvdzpcIjAgMXB4IHdoaXRlXCIsY29sb3I6XCJoc2woMjQsIDIwJSwgOTUlKVwiLGNvbnRlbnQ6XCJhdHRyKGRhdGEtc3RhcnQpXCIsZm9udDpcImJvbGQgNjUlLzEuNSBzYW5zLXNlcmlmXCIsbGVmdDpcIi42ZW1cIixtaW5XaWR0aDpcIjFlbVwiLHBhZGRpbmc6XCIwIC41ZW1cIixwb3NpdGlvbjpcImFic29sdXRlXCIsdGV4dEFsaWduOlwiY2VudGVyXCIsdGV4dFNoYWRvdzpcIm5vbmVcIix0b3A6XCIuNGVtXCIsdmVydGljYWxBbGlnbjpcIi4zZW1cIn0sXCIubGluZS1oaWdobGlnaHRbZGF0YS1lbmRdOmFmdGVyXCI6e2JhY2tncm91bmRDb2xvcjpcImhzbCgyMTUsIDE1JSwgNTklKVwiLGJvcmRlclJhZGl1czpcIjk5OXB4XCIsYm94U2hhZG93OlwiMCAxcHggd2hpdGVcIixjb2xvcjpcImhzbCgyNCwgMjAlLCA5NSUpXCIsY29udGVudDpcImF0dHIoZGF0YS1lbmQpXCIsZm9udDpcImJvbGQgNjUlLzEuNSBzYW5zLXNlcmlmXCIsbGVmdDpcIi42ZW1cIixtaW5XaWR0aDpcIjFlbVwiLHBhZGRpbmc6XCIwIC41ZW1cIixwb3NpdGlvbjpcImFic29sdXRlXCIsdGV4dEFsaWduOlwiY2VudGVyXCIsdGV4dFNoYWRvdzpcIm5vbmVcIix0b3A6XCJhdXRvXCIsdmVydGljYWxBbGlnbjpcIi4zZW1cIixib3R0b206XCIuNGVtXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCJibGFja1wiLGJhY2tncm91bmQ6XCJub25lXCIsdGV4dFNoYWRvdzpcIjAgMXB4IHdoaXRlXCIsZm9udEZhbWlseTpcIkNvbnNvbGFzLCBNb25hY28sICdBbmRhbGUgTW9ubycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZVwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiYmxhY2tcIixiYWNrZ3JvdW5kOlwiI2Y1ZjJmMFwiLHRleHRTaGFkb3c6XCIwIDFweCB3aGl0ZVwiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntiYWNrZ3JvdW5kOlwiI2Y1ZjJmMFwiLHBhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwiLHdoaXRlU3BhY2U6XCJub3JtYWxcIn0sY29tbWVudDp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0scHJvbG9nOntjb2xvcjpcInNsYXRlZ3JheVwifSxkb2N0eXBlOntjb2xvcjpcInNsYXRlZ3JheVwifSxjZGF0YTp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiIzk5OVwifSxcIi5uYW1lc3BhY2VcIjp7T3BhY2l0eTpcIi43XCJ9LHByb3BlcnR5Ontjb2xvcjpcIiM5MDVcIn0sdGFnOntjb2xvcjpcIiM5MDVcIn0sYm9vbGVhbjp7Y29sb3I6XCIjOTA1XCJ9LG51bWJlcjp7Y29sb3I6XCIjOTA1XCJ9LGNvbnN0YW50Ontjb2xvcjpcIiM5MDVcIn0sc3ltYm9sOntjb2xvcjpcIiM5MDVcIn0sZGVsZXRlZDp7Y29sb3I6XCIjOTA1XCJ9LHNlbGVjdG9yOntjb2xvcjpcIiM2OTBcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjNjkwXCJ9LHN0cmluZzp7Y29sb3I6XCIjNjkwXCJ9LGNoYXI6e2NvbG9yOlwiIzY5MFwifSxidWlsdGluOntjb2xvcjpcIiM2OTBcIn0saW5zZXJ0ZWQ6e2NvbG9yOlwiIzY5MFwifSxvcGVyYXRvcjp7Y29sb3I6XCIjOWE2ZTNhXCIsYmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwifSxlbnRpdHk6e2NvbG9yOlwiIzlhNmUzYVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCAxMDAlLCAuNSlcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCIjOWE2ZTNhXCIsYmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiM5YTZlM2FcIixiYWNrZ3JvdW5kOlwiaHNsYSgwLCAwJSwgMTAwJSwgLjUpXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjOWE2ZTNhXCIsYmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwifSxhdHJ1bGU6e2NvbG9yOlwiIzA3YVwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjMDdhXCJ9LGtleXdvcmQ6e2NvbG9yOlwiIzA3YVwifSxmdW5jdGlvbjp7Y29sb3I6XCIjREQ0QTY4XCJ9LFwiY2xhc3MtbmFtZVwiOntjb2xvcjpcIiNERDRBNjhcIn0scmVnZXg6e2NvbG9yOlwiI2U5MFwifSxpbXBvcnRhbnQ6e2NvbG9yOlwiI2U5MFwiLGZvbnRXZWlnaHQ6XCJib2xkXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiNlOTBcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiNjNWM4YzZcIix0ZXh0U2hhZG93OlwiMCAxcHggcmdiYSgwLCAwLCAwLCAwLjMpXCIsZm9udEZhbWlseTpcIkluY29uc29sYXRhLCBNb25hY28sIENvbnNvbGFzLCAnQ291cmllciBOZXcnLCBDb3VyaWVyLCBtb25vc3BhY2VcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjYzVjOGM2XCIsdGV4dFNoYWRvdzpcIjAgMXB4IHJnYmEoMCwgMCwgMCwgMC4zKVwiLGZvbnRGYW1pbHk6XCJJbmNvbnNvbGF0YSwgTW9uYWNvLCBDb25zb2xhcywgJ0NvdXJpZXIgTmV3JywgQ291cmllciwgbW9ub3NwYWNlXCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLHBhZGRpbmc6XCIxZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIixib3JkZXJSYWRpdXM6XCIwLjNlbVwiLGJhY2tncm91bmQ6XCIjMWQxZjIxXCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2JhY2tncm91bmQ6XCIjMWQxZjIxXCIscGFkZGluZzpcIi4xZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiIzdDN0M3Q1wifSxwcm9sb2c6e2NvbG9yOlwiIzdDN0M3Q1wifSxkb2N0eXBlOntjb2xvcjpcIiM3QzdDN0NcIn0sY2RhdGE6e2NvbG9yOlwiIzdDN0M3Q1wifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjYzVjOGM2XCJ9LFwiLm5hbWVzcGFjZVwiOntPcGFjaXR5OlwiLjdcIn0scHJvcGVydHk6e2NvbG9yOlwiIzk2Q0JGRVwifSxrZXl3b3JkOntjb2xvcjpcIiM5NkNCRkVcIn0sdGFnOntjb2xvcjpcIiM5NkNCRkVcIn0sXCJjbGFzcy1uYW1lXCI6e2NvbG9yOlwiI0ZGRkZCNlwiLHRleHREZWNvcmF0aW9uOlwidW5kZXJsaW5lXCJ9LGJvb2xlYW46e2NvbG9yOlwiIzk5Q0M5OVwifSxjb25zdGFudDp7Y29sb3I6XCIjOTlDQzk5XCJ9LHN5bWJvbDp7Y29sb3I6XCIjZjkyNjcyXCJ9LGRlbGV0ZWQ6e2NvbG9yOlwiI2Y5MjY3MlwifSxudW1iZXI6e2NvbG9yOlwiI0ZGNzNGRFwifSxzZWxlY3Rvcjp7Y29sb3I6XCIjQThGRjYwXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiI0E4RkY2MFwifSxzdHJpbmc6e2NvbG9yOlwiI0E4RkY2MFwifSxjaGFyOntjb2xvcjpcIiNBOEZGNjBcIn0sYnVpbHRpbjp7Y29sb3I6XCIjQThGRjYwXCJ9LGluc2VydGVkOntjb2xvcjpcIiNBOEZGNjBcIn0sdmFyaWFibGU6e2NvbG9yOlwiI0M2QzVGRVwifSxvcGVyYXRvcjp7Y29sb3I6XCIjRURFREVEXCJ9LGVudGl0eTp7Y29sb3I6XCIjRkZGRkI2XCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiIzk2Q0JGRVwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiM4N0MzOEFcIn0sXCIuc3R5bGUgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiM4N0MzOEFcIn0sYXRydWxlOntjb2xvcjpcIiNGOUVFOThcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiI0Y5RUU5OFwifSxmdW5jdGlvbjp7Y29sb3I6XCIjREFEMDg1XCJ9LHJlZ2V4Ontjb2xvcjpcIiNFOUMwNjJcIn0saW1wb3J0YW50Ontjb2xvcjpcIiNmZDk3MWZcIixmb250V2VpZ2h0OlwiYm9sZFwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2ZvbnRGYW1pbHk6J0NvbnNvbGFzLCBNZW5sbywgTW9uYWNvLCBcIkFuZGFsZSBNb25vIFdUXCIsIFwiQW5kYWxlIE1vbm9cIiwgXCJMdWNpZGEgQ29uc29sZVwiLCBcIkx1Y2lkYSBTYW5zIFR5cGV3cml0ZXJcIiwgXCJEZWphVnUgU2FucyBNb25vXCIsIFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiTmltYnVzIE1vbm8gTFwiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNHB4XCIsbGluZUhlaWdodDpcIjEuMzc1XCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsYmFja2dyb3VuZDpcIiNmNWY3ZmZcIixjb2xvcjpcIiM1ZTY2ODdcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OidDb25zb2xhcywgTWVubG8sIE1vbmFjbywgXCJBbmRhbGUgTW9ubyBXVFwiLCBcIkFuZGFsZSBNb25vXCIsIFwiTHVjaWRhIENvbnNvbGVcIiwgXCJMdWNpZGEgU2FucyBUeXBld3JpdGVyXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIk5pbWJ1cyBNb25vIExcIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTRweFwiLGxpbmVIZWlnaHQ6XCIxLjM3NVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLGJhY2tncm91bmQ6XCIjZjVmN2ZmXCIsY29sb3I6XCIjNWU2Njg3XCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZGZlMmYxXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZGZlMmYxXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZGZlMmYxXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2RmZTJmMVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2RmZTJmMVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNkZmUyZjFcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZGZlMmYxXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNkZmUyZjFcIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7cGFkZGluZzpcIi4xZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiIzg5OGVhNFwifSxwcm9sb2c6e2NvbG9yOlwiIzg5OGVhNFwifSxkb2N0eXBlOntjb2xvcjpcIiM4OThlYTRcIn0sY2RhdGE6e2NvbG9yOlwiIzg5OGVhNFwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjNWU2Njg3XCJ9LG5hbWVzcGFjZTp7T3BhY2l0eTpcIi43XCJ9LG9wZXJhdG9yOntjb2xvcjpcIiNjNzZiMjlcIn0sYm9vbGVhbjp7Y29sb3I6XCIjYzc2YjI5XCJ9LG51bWJlcjp7Y29sb3I6XCIjYzc2YjI5XCJ9LHByb3BlcnR5Ontjb2xvcjpcIiNjMDhiMzBcIn0sdGFnOntjb2xvcjpcIiMzZDhmZDFcIn0sc3RyaW5nOntjb2xvcjpcIiMyMmEyYzlcIn0sc2VsZWN0b3I6e2NvbG9yOlwiIzY2NzljY1wifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiNjNzZiMjlcIn0sZW50aXR5Ontjb2xvcjpcIiMyMmEyYzlcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCIjMjJhMmM5XCJ9LFwiLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiIzIyYTJjOVwifSxcIi5zdHlsZSAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiIzIyYTJjOVwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjYWM5NzM5XCJ9LGtleXdvcmQ6e2NvbG9yOlwiI2FjOTczOVwifSxjb250cm9sOntjb2xvcjpcIiNhYzk3MzlcIn0sZGlyZWN0aXZlOntjb2xvcjpcIiNhYzk3MzlcIn0sdW5pdDp7Y29sb3I6XCIjYWM5NzM5XCJ9LHN0YXRlbWVudDp7Y29sb3I6XCIjMjJhMmM5XCJ9LHJlZ2V4Ontjb2xvcjpcIiMyMmEyYzlcIn0sYXRydWxlOntjb2xvcjpcIiMyMmEyYzlcIn0scGxhY2Vob2xkZXI6e2NvbG9yOlwiIzNkOGZkMVwifSx2YXJpYWJsZTp7Y29sb3I6XCIjM2Q4ZmQxXCJ9LGRlbGV0ZWQ6e3RleHREZWNvcmF0aW9uOlwibGluZS10aHJvdWdoXCJ9LGluc2VydGVkOntib3JkZXJCb3R0b206XCIxcHggZG90dGVkICMyMDI3NDZcIix0ZXh0RGVjb3JhdGlvbjpcIm5vbmVcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn0saW1wb3J0YW50Ontmb250V2VpZ2h0OlwiYm9sZFwiLGNvbG9yOlwiI2M5NDkyMlwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxcInByZSA+IGNvZGUuaGlnaGxpZ2h0XCI6e091dGxpbmU6XCIwLjRlbSBzb2xpZCAjYzk0OTIyXCIsT3V0bGluZU9mZnNldDpcIi40ZW1cIn0sXCIubGluZS1udW1iZXJzIC5saW5lLW51bWJlcnMtcm93c1wiOntib3JkZXJSaWdodENvbG9yOlwiI2RmZTJmMVwifSxcIi5saW5lLW51bWJlcnMtcm93cyA+IHNwYW46YmVmb3JlXCI6e2NvbG9yOlwiIzk3OWRiNFwifSxcIi5saW5lLWhpZ2hsaWdodFwiOntiYWNrZ3JvdW5kOlwibGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDEwNywgMTE1LCAxNDgsIDAuMikgNzAlLCByZ2JhKDEwNywgMTE1LCAxNDgsIDApKVwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiI2ZmZlwiLHRleHRTaGFkb3c6XCIwIDFweCAxcHggIzAwMFwiLGZvbnRGYW1pbHk6J01lbmxvLCBNb25hY28sIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlJyxkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS40XCIsYmFja2dyb3VuZDpcIm5vbmVcIixib3JkZXI6XCIwXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiNmZmZcIix0ZXh0U2hhZG93OlwiMCAxcHggMXB4ICMwMDBcIixmb250RmFtaWx5OidNZW5sbywgTW9uYWNvLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZScsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNFwiLGJhY2tncm91bmQ6XCIjMjIyXCIsYm9yZGVyOlwiMFwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIscGFkZGluZzpcIjE1cHhcIixtYXJnaW46XCIxZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wiLE1vekJvcmRlclJhZGl1czpcIjhweFwiLFdlYmtpdEJvcmRlclJhZGl1czpcIjhweFwiLGJvcmRlclJhZGl1czpcIjhweFwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSBjb2RlJzp7ZmxvYXQ6XCJsZWZ0XCIscGFkZGluZzpcIjAgMTVweCAwIDBcIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7YmFja2dyb3VuZDpcIiMyMjJcIixwYWRkaW5nOlwiNXB4IDEwcHhcIixsaW5lSGVpZ2h0OlwiMVwiLE1vekJvcmRlclJhZGl1czpcIjNweFwiLFdlYmtpdEJvcmRlclJhZGl1czpcIjNweFwiLGJvcmRlclJhZGl1czpcIjNweFwifSxjb21tZW50Ontjb2xvcjpcIiM3OTc5NzlcIn0scHJvbG9nOntjb2xvcjpcIiM3OTc5NzlcIn0sZG9jdHlwZTp7Y29sb3I6XCIjNzk3OTc5XCJ9LGNkYXRhOntjb2xvcjpcIiM3OTc5NzlcIn0sc2VsZWN0b3I6e2NvbG9yOlwiI2ZmZlwifSxvcGVyYXRvcjp7Y29sb3I6XCIjZmZmXCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiNmZmZcIn0sbmFtZXNwYWNlOntPcGFjaXR5OlwiLjdcIn0sdGFnOntjb2xvcjpcIiNmZmQ4OTNcIn0sYm9vbGVhbjp7Y29sb3I6XCIjZmZkODkzXCJ9LGF0cnVsZTp7Y29sb3I6XCIjQjBDOTc1XCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiNCMEM5NzVcIn0saGV4Ontjb2xvcjpcIiNCMEM5NzVcIn0sc3RyaW5nOntjb2xvcjpcIiNCMEM5NzVcIn0scHJvcGVydHk6e2NvbG9yOlwiI2MyNzYyOFwifSxlbnRpdHk6e2NvbG9yOlwiI2MyNzYyOFwiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiNjMjc2MjhcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjYzI3NjI4XCJ9LGtleXdvcmQ6e2NvbG9yOlwiI2MyNzYyOFwifSxyZWdleDp7Y29sb3I6XCIjOUI3MUM2XCJ9LGZ1bmN0aW9uOntjb2xvcjpcIiNlNWE2MzhcIn0sY29uc3RhbnQ6e2NvbG9yOlwiI2U1YTYzOFwifSx2YXJpYWJsZTp7Y29sb3I6XCIjZmRmYmE4XCJ9LG51bWJlcjp7Y29sb3I6XCIjODc5OUIwXCJ9LGltcG9ydGFudDp7Y29sb3I6XCIjRTQ1NzM0XCJ9LGRlbGltaW5hdG9yOntjb2xvcjpcIiNFNDU3MzRcIn0sXCJwcmVbZGF0YS1saW5lXVwiOntwb3NpdGlvbjpcInJlbGF0aXZlXCIscGFkZGluZzpcIjFlbSAwIDFlbSAzZW1cIn0sXCIubGluZS1oaWdobGlnaHRcIjp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLGxlZnQ6XCIwXCIscmlnaHQ6XCIwXCIsbWFyZ2luVG9wOlwiMWVtXCIsYmFja2dyb3VuZDpcInJnYmEoMjU1LDI1NSwyNTUsLjIpXCIscG9pbnRlckV2ZW50czpcIm5vbmVcIixsaW5lSGVpZ2h0OlwiaW5oZXJpdFwiLHdoaXRlU3BhY2U6XCJwcmVcIn0sXCIubGluZS1oaWdobGlnaHQ6YmVmb3JlXCI6e2NvbnRlbnQ6XCJhdHRyKGRhdGEtc3RhcnQpXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLHRvcDpcIi4zZW1cIixsZWZ0OlwiLjZlbVwiLG1pbldpZHRoOlwiMWVtXCIscGFkZGluZzpcIjAgLjVlbVwiLGJhY2tncm91bmRDb2xvcjpcInJnYmEoMjU1LDI1NSwyNTUsLjMpXCIsY29sb3I6XCIjZmZmXCIsZm9udDpcImJvbGQgNjUlLzEuNSBzYW5zLXNlcmlmXCIsdGV4dEFsaWduOlwiY2VudGVyXCIsTW96Qm9yZGVyUmFkaXVzOlwiOHB4XCIsV2Via2l0Qm9yZGVyUmFkaXVzOlwiOHB4XCIsYm9yZGVyUmFkaXVzOlwiOHB4XCIsdGV4dFNoYWRvdzpcIm5vbmVcIn0sXCIubGluZS1oaWdobGlnaHRbZGF0YS1lbmRdOmFmdGVyXCI6e2NvbnRlbnQ6XCJhdHRyKGRhdGEtZW5kKVwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6XCJhdXRvXCIsbGVmdDpcIi42ZW1cIixtaW5XaWR0aDpcIjFlbVwiLHBhZGRpbmc6XCIwIC41ZW1cIixiYWNrZ3JvdW5kQ29sb3I6XCJyZ2JhKDI1NSwyNTUsMjU1LC4zKVwiLGNvbG9yOlwiI2ZmZlwiLGZvbnQ6XCJib2xkIDY1JS8xLjUgc2Fucy1zZXJpZlwiLHRleHRBbGlnbjpcImNlbnRlclwiLE1vekJvcmRlclJhZGl1czpcIjhweFwiLFdlYmtpdEJvcmRlclJhZGl1czpcIjhweFwiLGJvcmRlclJhZGl1czpcIjhweFwiLHRleHRTaGFkb3c6XCJub25lXCIsYm90dG9tOlwiLjRlbVwifSxcIi5saW5lLW51bWJlcnMtcm93c1wiOnttYXJnaW46XCIwXCJ9LFwiLmxpbmUtbnVtYmVycy1yb3dzIHNwYW5cIjp7cGFkZGluZ1JpZ2h0OlwiMTBweFwiLGJvcmRlclJpZ2h0OlwiM3B4ICNkOWQzMzYgc29saWRcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiNhOWI3YzZcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgbW9ub3NwYWNlXCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiI2E5YjdjNlwiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCBtb25vc3BhY2VcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wiLGJhY2tncm91bmQ6XCIjMmIyYjJiXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e2NvbG9yOlwiaW5oZXJpdFwiLGJhY2tncm91bmQ6XCJyZ2JhKDMzLDY2LDEzMSwuODUpXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOntjb2xvcjpcImluaGVyaXRcIixiYWNrZ3JvdW5kOlwicmdiYSgzMyw2NiwxMzEsLjg1KVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7Y29sb3I6XCJpbmhlcml0XCIsYmFja2dyb3VuZDpcInJnYmEoMzMsNjYsMTMxLC44NSlcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOntjb2xvcjpcImluaGVyaXRcIixiYWNrZ3JvdW5kOlwicmdiYSgzMyw2NiwxMzEsLjg1KVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7Y29sb3I6XCJpbmhlcml0XCIsYmFja2dyb3VuZDpcInJnYmEoMzMsNjYsMTMxLC44NSlcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOntjb2xvcjpcImluaGVyaXRcIixiYWNrZ3JvdW5kOlwicmdiYSgzMyw2NiwxMzEsLjg1KVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e2NvbG9yOlwiaW5oZXJpdFwiLGJhY2tncm91bmQ6XCJyZ2JhKDMzLDY2LDEzMSwuODUpXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e2NvbG9yOlwiaW5oZXJpdFwiLGJhY2tncm91bmQ6XCJyZ2JhKDMzLDY2LDEzMSwuODUpXCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2JhY2tncm91bmQ6XCIjMmIyYjJiXCIscGFkZGluZzpcIi4xZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiIzgwODA4MFwifSxwcm9sb2c6e2NvbG9yOlwiIzgwODA4MFwifSxjZGF0YTp7Y29sb3I6XCIjODA4MDgwXCJ9LGRlbGltaXRlcjp7Y29sb3I6XCIjY2M3ODMyXCJ9LGJvb2xlYW46e2NvbG9yOlwiI2NjNzgzMlwifSxrZXl3b3JkOntjb2xvcjpcIiNjYzc4MzJcIn0sc2VsZWN0b3I6e2NvbG9yOlwiI2NjNzgzMlwifSxpbXBvcnRhbnQ6e2NvbG9yOlwiI2NjNzgzMlwifSxhdHJ1bGU6e2NvbG9yOlwiI2NjNzgzMlwifSxvcGVyYXRvcjp7Y29sb3I6XCIjYTliN2M2XCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiNhOWI3YzZcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjYTliN2M2XCJ9LHRhZzp7Y29sb3I6XCIjZThiZjZhXCJ9LFwidGFnIC5wdW5jdHVhdGlvblwiOntjb2xvcjpcIiNlOGJmNmFcIn0sZG9jdHlwZTp7Y29sb3I6XCIjZThiZjZhXCJ9LGJ1aWx0aW46e2NvbG9yOlwiI2U4YmY2YVwifSxlbnRpdHk6e2NvbG9yOlwiIzY4OTdiYlwifSxudW1iZXI6e2NvbG9yOlwiIzY4OTdiYlwifSxzeW1ib2w6e2NvbG9yOlwiIzY4OTdiYlwifSxwcm9wZXJ0eTp7Y29sb3I6XCIjOTg3NmFhXCJ9LGNvbnN0YW50Ontjb2xvcjpcIiM5ODc2YWFcIn0sdmFyaWFibGU6e2NvbG9yOlwiIzk4NzZhYVwifSxzdHJpbmc6e2NvbG9yOlwiIzZhODc1OVwifSxjaGFyOntjb2xvcjpcIiM2YTg3NTlcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiI2E1YzI2MVwifSxcImF0dHItdmFsdWUgLnB1bmN0dWF0aW9uXCI6e2NvbG9yOlwiI2E1YzI2MVwifSxcImF0dHItdmFsdWUgLnB1bmN0dWF0aW9uOmZpcnN0LWNoaWxkXCI6e2NvbG9yOlwiI2E5YjdjNlwifSx1cmw6e2NvbG9yOlwiIzI4N2JkZVwiLHRleHREZWNvcmF0aW9uOlwidW5kZXJsaW5lXCJ9LGZ1bmN0aW9uOntjb2xvcjpcIiNmZmM2NmRcIn0scmVnZXg6e2JhY2tncm91bmQ6XCIjMzY0MTM1XCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9LGluc2VydGVkOntiYWNrZ3JvdW5kOlwiIzI5NDQzNlwifSxkZWxldGVkOntiYWNrZ3JvdW5kOlwiIzQ4NGE0YVwifSxcImNvZGUubGFuZ3VhZ2UtY3NzIC50b2tlbi5wcm9wZXJ0eVwiOntjb2xvcjpcIiNhOWI3YzZcIn0sXCJjb2RlLmxhbmd1YWdlLWNzcyAudG9rZW4ucHJvcGVydHkgKyAudG9rZW4ucHVuY3R1YXRpb25cIjp7Y29sb3I6XCIjYTliN2M2XCJ9LFwiY29kZS5sYW5ndWFnZS1jc3MgLnRva2VuLmlkXCI6e2NvbG9yOlwiI2ZmYzY2ZFwifSxcImNvZGUubGFuZ3VhZ2UtY3NzIC50b2tlbi5zZWxlY3RvciA+IC50b2tlbi5jbGFzc1wiOntjb2xvcjpcIiNmZmM2NmRcIn0sXCJjb2RlLmxhbmd1YWdlLWNzcyAudG9rZW4uc2VsZWN0b3IgPiAudG9rZW4uYXR0cmlidXRlXCI6e2NvbG9yOlwiI2ZmYzY2ZFwifSxcImNvZGUubGFuZ3VhZ2UtY3NzIC50b2tlbi5zZWxlY3RvciA+IC50b2tlbi5wc2V1ZG8tY2xhc3NcIjp7Y29sb3I6XCIjZmZjNjZkXCJ9LFwiY29kZS5sYW5ndWFnZS1jc3MgLnRva2VuLnNlbGVjdG9yID4gLnRva2VuLnBzZXVkby1lbGVtZW50XCI6e2NvbG9yOlwiI2ZmYzY2ZFwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2ZvbnRGYW1pbHk6J0NvbnNvbGFzLCBNZW5sbywgTW9uYWNvLCBcIkFuZGFsZSBNb25vIFdUXCIsIFwiQW5kYWxlIE1vbm9cIiwgXCJMdWNpZGEgQ29uc29sZVwiLCBcIkx1Y2lkYSBTYW5zIFR5cGV3cml0ZXJcIiwgXCJEZWphVnUgU2FucyBNb25vXCIsIFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiTmltYnVzIE1vbm8gTFwiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNHB4XCIsbGluZUhlaWdodDpcIjEuMzc1XCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsYmFja2dyb3VuZDpcIiMyYTI3MzRcIixjb2xvcjpcIiM5YTg2ZmRcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OidDb25zb2xhcywgTWVubG8sIE1vbmFjbywgXCJBbmRhbGUgTW9ubyBXVFwiLCBcIkFuZGFsZSBNb25vXCIsIFwiTHVjaWRhIENvbnNvbGVcIiwgXCJMdWNpZGEgU2FucyBUeXBld3JpdGVyXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIk5pbWJ1cyBNb25vIExcIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTRweFwiLGxpbmVIZWlnaHQ6XCIxLjM3NVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLGJhY2tncm91bmQ6XCIjMmEyNzM0XCIsY29sb3I6XCIjOWE4NmZkXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmE1MWU2XCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmE1MWU2XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmE1MWU2XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzZhNTFlNlwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzZhNTFlNlwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM2YTUxZTZcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmE1MWU2XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM2YTUxZTZcIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7cGFkZGluZzpcIi4xZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiIzZjNjc4M1wifSxwcm9sb2c6e2NvbG9yOlwiIzZjNjc4M1wifSxkb2N0eXBlOntjb2xvcjpcIiM2YzY3ODNcIn0sY2RhdGE6e2NvbG9yOlwiIzZjNjc4M1wifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjNmM2NzgzXCJ9LG5hbWVzcGFjZTp7T3BhY2l0eTpcIi43XCJ9LHRhZzp7Y29sb3I6XCIjZTA5MTQyXCJ9LG9wZXJhdG9yOntjb2xvcjpcIiNlMDkxNDJcIn0sbnVtYmVyOntjb2xvcjpcIiNlMDkxNDJcIn0scHJvcGVydHk6e2NvbG9yOlwiIzlhODZmZFwifSxmdW5jdGlvbjp7Y29sb3I6XCIjOWE4NmZkXCJ9LFwidGFnLWlkXCI6e2NvbG9yOlwiI2VlZWJmZlwifSxzZWxlY3Rvcjp7Y29sb3I6XCIjZWVlYmZmXCJ9LFwiYXRydWxlLWlkXCI6e2NvbG9yOlwiI2VlZWJmZlwifSxcImNvZGUubGFuZ3VhZ2UtamF2YXNjcmlwdFwiOntjb2xvcjpcIiNjNGI5ZmVcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjYzRiOWZlXCJ9LFwiY29kZS5sYW5ndWFnZS1jc3NcIjp7Y29sb3I6XCIjZmZjYzk5XCJ9LFwiY29kZS5sYW5ndWFnZS1zY3NzXCI6e2NvbG9yOlwiI2ZmY2M5OVwifSxib29sZWFuOntjb2xvcjpcIiNmZmNjOTlcIn0sc3RyaW5nOntjb2xvcjpcIiNmZmNjOTlcIn0sZW50aXR5Ontjb2xvcjpcIiNmZmNjOTlcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCIjZmZjYzk5XCJ9LFwiLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiI2ZmY2M5OVwifSxcIi5sYW5ndWFnZS1zY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZmZjYzk5XCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZmZjYzk5XCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiNmZmNjOTlcIn0sa2V5d29yZDp7Y29sb3I6XCIjZmZjYzk5XCJ9LGNvbnRyb2w6e2NvbG9yOlwiI2ZmY2M5OVwifSxkaXJlY3RpdmU6e2NvbG9yOlwiI2ZmY2M5OVwifSx1bml0Ontjb2xvcjpcIiNmZmNjOTlcIn0sc3RhdGVtZW50Ontjb2xvcjpcIiNmZmNjOTlcIn0scmVnZXg6e2NvbG9yOlwiI2ZmY2M5OVwifSxhdHJ1bGU6e2NvbG9yOlwiI2ZmY2M5OVwifSxwbGFjZWhvbGRlcjp7Y29sb3I6XCIjZmZjYzk5XCJ9LHZhcmlhYmxlOntjb2xvcjpcIiNmZmNjOTlcIn0sZGVsZXRlZDp7dGV4dERlY29yYXRpb246XCJsaW5lLXRocm91Z2hcIn0saW5zZXJ0ZWQ6e2JvcmRlckJvdHRvbTpcIjFweCBkb3R0ZWQgI2VlZWJmZlwiLHRleHREZWNvcmF0aW9uOlwibm9uZVwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifSxpbXBvcnRhbnQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCIsY29sb3I6XCIjYzRiOWZlXCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LFwicHJlID4gY29kZS5oaWdobGlnaHRcIjp7T3V0bGluZTpcIi40ZW0gc29saWQgIzhhNzVmNVwiLE91dGxpbmVPZmZzZXQ6XCIuNGVtXCJ9LFwiLmxpbmUtbnVtYmVycyAubGluZS1udW1iZXJzLXJvd3NcIjp7Ym9yZGVyUmlnaHRDb2xvcjpcIiMyYzI5MzdcIn0sXCIubGluZS1udW1iZXJzLXJvd3MgPiBzcGFuOmJlZm9yZVwiOntjb2xvcjpcIiMzYzM5NDlcIn0sXCIubGluZS1oaWdobGlnaHRcIjp7YmFja2dyb3VuZDpcImxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyMjQsIDE0NSwgNjYsIDAuMikgNzAlLCByZ2JhKDIyNCwgMTQ1LCA2NiwgMCkpXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Zm9udEZhbWlseTonQ29uc29sYXMsIE1lbmxvLCBNb25hY28sIFwiQW5kYWxlIE1vbm8gV1RcIiwgXCJBbmRhbGUgTW9ub1wiLCBcIkx1Y2lkYSBDb25zb2xlXCIsIFwiTHVjaWRhIFNhbnMgVHlwZXdyaXRlclwiLCBcIkRlamFWdSBTYW5zIE1vbm9cIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJOaW1idXMgTW9ubyBMXCIsIFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE0cHhcIixsaW5lSGVpZ2h0OlwiMS4zNzVcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzMyMmQyOVwiLGNvbG9yOlwiIzg4Nzg2ZFwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2ZvbnRGYW1pbHk6J0NvbnNvbGFzLCBNZW5sbywgTW9uYWNvLCBcIkFuZGFsZSBNb25vIFdUXCIsIFwiQW5kYWxlIE1vbm9cIiwgXCJMdWNpZGEgQ29uc29sZVwiLCBcIkx1Y2lkYSBTYW5zIFR5cGV3cml0ZXJcIiwgXCJEZWphVnUgU2FucyBNb25vXCIsIFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiTmltYnVzIE1vbm8gTFwiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNHB4XCIsbGluZUhlaWdodDpcIjEuMzc1XCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsYmFja2dyb3VuZDpcIiMzMjJkMjlcIixjb2xvcjpcIiM4ODc4NmRcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM2ZjU4NDlcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM2ZjU4NDlcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM2ZjU4NDlcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmY1ODQ5XCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmY1ODQ5XCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzZmNTg0OVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM2ZjU4NDlcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzZmNTg0OVwifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntwYWRkaW5nOlwiLjFlbVwiLGJvcmRlclJhZGl1czpcIi4zZW1cIn0sY29tbWVudDp7Y29sb3I6XCIjNmE1ZjU4XCJ9LHByb2xvZzp7Y29sb3I6XCIjNmE1ZjU4XCJ9LGRvY3R5cGU6e2NvbG9yOlwiIzZhNWY1OFwifSxjZGF0YTp7Y29sb3I6XCIjNmE1ZjU4XCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiM2YTVmNThcIn0sbmFtZXNwYWNlOntPcGFjaXR5OlwiLjdcIn0sdGFnOntjb2xvcjpcIiNiZmEwNWFcIn0sb3BlcmF0b3I6e2NvbG9yOlwiI2JmYTA1YVwifSxudW1iZXI6e2NvbG9yOlwiI2JmYTA1YVwifSxwcm9wZXJ0eTp7Y29sb3I6XCIjODg3ODZkXCJ9LGZ1bmN0aW9uOntjb2xvcjpcIiM4ODc4NmRcIn0sXCJ0YWctaWRcIjp7Y29sb3I6XCIjZmZmM2ViXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiNmZmYzZWJcIn0sXCJhdHJ1bGUtaWRcIjp7Y29sb3I6XCIjZmZmM2ViXCJ9LFwiY29kZS5sYW5ndWFnZS1qYXZhc2NyaXB0XCI6e2NvbG9yOlwiI2E0ODc3NFwifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiNhNDg3NzRcIn0sXCJjb2RlLmxhbmd1YWdlLWNzc1wiOntjb2xvcjpcIiNmY2M0NDBcIn0sXCJjb2RlLmxhbmd1YWdlLXNjc3NcIjp7Y29sb3I6XCIjZmNjNDQwXCJ9LGJvb2xlYW46e2NvbG9yOlwiI2ZjYzQ0MFwifSxzdHJpbmc6e2NvbG9yOlwiI2ZjYzQ0MFwifSxlbnRpdHk6e2NvbG9yOlwiI2ZjYzQ0MFwiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiNmY2M0NDBcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZmNjNDQwXCJ9LFwiLmxhbmd1YWdlLXNjc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNmY2M0NDBcIn0sXCIuc3R5bGUgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNmY2M0NDBcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiI2ZjYzQ0MFwifSxrZXl3b3JkOntjb2xvcjpcIiNmY2M0NDBcIn0sY29udHJvbDp7Y29sb3I6XCIjZmNjNDQwXCJ9LGRpcmVjdGl2ZTp7Y29sb3I6XCIjZmNjNDQwXCJ9LHVuaXQ6e2NvbG9yOlwiI2ZjYzQ0MFwifSxzdGF0ZW1lbnQ6e2NvbG9yOlwiI2ZjYzQ0MFwifSxyZWdleDp7Y29sb3I6XCIjZmNjNDQwXCJ9LGF0cnVsZTp7Y29sb3I6XCIjZmNjNDQwXCJ9LHBsYWNlaG9sZGVyOntjb2xvcjpcIiNmY2M0NDBcIn0sdmFyaWFibGU6e2NvbG9yOlwiI2ZjYzQ0MFwifSxkZWxldGVkOnt0ZXh0RGVjb3JhdGlvbjpcImxpbmUtdGhyb3VnaFwifSxpbnNlcnRlZDp7Ym9yZGVyQm90dG9tOlwiMXB4IGRvdHRlZCAjZmZmM2ViXCIsdGV4dERlY29yYXRpb246XCJub25lXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9LGltcG9ydGFudDp7Zm9udFdlaWdodDpcImJvbGRcIixjb2xvcjpcIiNhNDg3NzRcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0sXCJwcmUgPiBjb2RlLmhpZ2hsaWdodFwiOntPdXRsaW5lOlwiLjRlbSBzb2xpZCAjODE2ZDVmXCIsT3V0bGluZU9mZnNldDpcIi40ZW1cIn0sXCIubGluZS1udW1iZXJzIC5saW5lLW51bWJlcnMtcm93c1wiOntib3JkZXJSaWdodENvbG9yOlwiIzM1MzAyYlwifSxcIi5saW5lLW51bWJlcnMtcm93cyA+IHNwYW46YmVmb3JlXCI6e2NvbG9yOlwiIzQ2NDAzZFwifSxcIi5saW5lLWhpZ2hsaWdodFwiOntiYWNrZ3JvdW5kOlwibGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDE5MSwgMTYwLCA5MCwgMC4yKSA3MCUsIHJnYmEoMTkxLCAxNjAsIDkwLCAwKSlcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OidDb25zb2xhcywgTWVubG8sIE1vbmFjbywgXCJBbmRhbGUgTW9ubyBXVFwiLCBcIkFuZGFsZSBNb25vXCIsIFwiTHVjaWRhIENvbnNvbGVcIiwgXCJMdWNpZGEgU2FucyBUeXBld3JpdGVyXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIk5pbWJ1cyBNb25vIExcIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTRweFwiLGxpbmVIZWlnaHQ6XCIxLjM3NVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLGJhY2tncm91bmQ6XCIjMmEyZDJhXCIsY29sb3I6XCIjNjg3ZDY4XCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Zm9udEZhbWlseTonQ29uc29sYXMsIE1lbmxvLCBNb25hY28sIFwiQW5kYWxlIE1vbm8gV1RcIiwgXCJBbmRhbGUgTW9ub1wiLCBcIkx1Y2lkYSBDb25zb2xlXCIsIFwiTHVjaWRhIFNhbnMgVHlwZXdyaXRlclwiLCBcIkRlamFWdSBTYW5zIE1vbm9cIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJOaW1idXMgTW9ubyBMXCIsIFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE0cHhcIixsaW5lSGVpZ2h0OlwiMS4zNzVcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzJhMmQyYVwiLGNvbG9yOlwiIzY4N2Q2OFwiLHBhZGRpbmc6XCIxZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzQzNTY0M1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzQzNTY0M1wifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzQzNTY0M1wifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM0MzU2NDNcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM0MzU2NDNcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNDM1NjQzXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzQzNTY0M1wifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNDM1NjQzXCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e3BhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwifSxjb21tZW50Ontjb2xvcjpcIiM1MzVmNTNcIn0scHJvbG9nOntjb2xvcjpcIiM1MzVmNTNcIn0sZG9jdHlwZTp7Y29sb3I6XCIjNTM1ZjUzXCJ9LGNkYXRhOntjb2xvcjpcIiM1MzVmNTNcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiIzUzNWY1M1wifSxuYW1lc3BhY2U6e09wYWNpdHk6XCIuN1wifSx0YWc6e2NvbG9yOlwiI2EyYjM0ZFwifSxvcGVyYXRvcjp7Y29sb3I6XCIjYTJiMzRkXCJ9LG51bWJlcjp7Y29sb3I6XCIjYTJiMzRkXCJ9LHByb3BlcnR5Ontjb2xvcjpcIiM2ODdkNjhcIn0sZnVuY3Rpb246e2NvbG9yOlwiIzY4N2Q2OFwifSxcInRhZy1pZFwiOntjb2xvcjpcIiNmMGZmZjBcIn0sc2VsZWN0b3I6e2NvbG9yOlwiI2YwZmZmMFwifSxcImF0cnVsZS1pZFwiOntjb2xvcjpcIiNmMGZmZjBcIn0sXCJjb2RlLmxhbmd1YWdlLWphdmFzY3JpcHRcIjp7Y29sb3I6XCIjYjNkNmIzXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiI2IzZDZiM1wifSxcImNvZGUubGFuZ3VhZ2UtY3NzXCI6e2NvbG9yOlwiI2U1ZmI3OVwifSxcImNvZGUubGFuZ3VhZ2Utc2Nzc1wiOntjb2xvcjpcIiNlNWZiNzlcIn0sYm9vbGVhbjp7Y29sb3I6XCIjZTVmYjc5XCJ9LHN0cmluZzp7Y29sb3I6XCIjZTVmYjc5XCJ9LGVudGl0eTp7Y29sb3I6XCIjZTVmYjc5XCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiI2U1ZmI3OVwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNlNWZiNzlcIn0sXCIubGFuZ3VhZ2Utc2NzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiI2U1ZmI3OVwifSxcIi5zdHlsZSAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiI2U1ZmI3OVwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjZTVmYjc5XCJ9LGtleXdvcmQ6e2NvbG9yOlwiI2U1ZmI3OVwifSxjb250cm9sOntjb2xvcjpcIiNlNWZiNzlcIn0sZGlyZWN0aXZlOntjb2xvcjpcIiNlNWZiNzlcIn0sdW5pdDp7Y29sb3I6XCIjZTVmYjc5XCJ9LHN0YXRlbWVudDp7Y29sb3I6XCIjZTVmYjc5XCJ9LHJlZ2V4Ontjb2xvcjpcIiNlNWZiNzlcIn0sYXRydWxlOntjb2xvcjpcIiNlNWZiNzlcIn0scGxhY2Vob2xkZXI6e2NvbG9yOlwiI2U1ZmI3OVwifSx2YXJpYWJsZTp7Y29sb3I6XCIjZTVmYjc5XCJ9LGRlbGV0ZWQ6e3RleHREZWNvcmF0aW9uOlwibGluZS10aHJvdWdoXCJ9LGluc2VydGVkOntib3JkZXJCb3R0b206XCIxcHggZG90dGVkICNmMGZmZjBcIix0ZXh0RGVjb3JhdGlvbjpcIm5vbmVcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn0saW1wb3J0YW50Ontmb250V2VpZ2h0OlwiYm9sZFwiLGNvbG9yOlwiI2IzZDZiM1wifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxcInByZSA+IGNvZGUuaGlnaGxpZ2h0XCI6e091dGxpbmU6XCIuNGVtIHNvbGlkICM1YzcwNWNcIixPdXRsaW5lT2Zmc2V0OlwiLjRlbVwifSxcIi5saW5lLW51bWJlcnMgLmxpbmUtbnVtYmVycy1yb3dzXCI6e2JvcmRlclJpZ2h0Q29sb3I6XCIjMmMzMDJjXCJ9LFwiLmxpbmUtbnVtYmVycy1yb3dzID4gc3BhbjpiZWZvcmVcIjp7Y29sb3I6XCIjM2I0MjNiXCJ9LFwiLmxpbmUtaGlnaGxpZ2h0XCI6e2JhY2tncm91bmQ6XCJsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMTYyLCAxNzksIDc3LCAwLjIpIDcwJSwgcmdiYSgxNjIsIDE3OSwgNzcsIDApKVwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2ZvbnRGYW1pbHk6J0NvbnNvbGFzLCBNZW5sbywgTW9uYWNvLCBcIkFuZGFsZSBNb25vIFdUXCIsIFwiQW5kYWxlIE1vbm9cIiwgXCJMdWNpZGEgQ29uc29sZVwiLCBcIkx1Y2lkYSBTYW5zIFR5cGV3cml0ZXJcIiwgXCJEZWphVnUgU2FucyBNb25vXCIsIFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiTmltYnVzIE1vbm8gTFwiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNHB4XCIsbGluZUhlaWdodDpcIjEuMzc1XCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsYmFja2dyb3VuZDpcIiNmYWY4ZjVcIixjb2xvcjpcIiM3MjhmY2JcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OidDb25zb2xhcywgTWVubG8sIE1vbmFjbywgXCJBbmRhbGUgTW9ubyBXVFwiLCBcIkFuZGFsZSBNb25vXCIsIFwiTHVjaWRhIENvbnNvbGVcIiwgXCJMdWNpZGEgU2FucyBUeXBld3JpdGVyXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIk5pbWJ1cyBNb25vIExcIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTRweFwiLGxpbmVIZWlnaHQ6XCIxLjM3NVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLGJhY2tncm91bmQ6XCIjZmFmOGY1XCIsY29sb3I6XCIjNzI4ZmNiXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZmFmOGY1XCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZmFmOGY1XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZmFmOGY1XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2ZhZjhmNVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2ZhZjhmNVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNmYWY4ZjVcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZmFmOGY1XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNmYWY4ZjVcIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7cGFkZGluZzpcIi4xZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiI2I2YWQ5YVwifSxwcm9sb2c6e2NvbG9yOlwiI2I2YWQ5YVwifSxkb2N0eXBlOntjb2xvcjpcIiNiNmFkOWFcIn0sY2RhdGE6e2NvbG9yOlwiI2I2YWQ5YVwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjYjZhZDlhXCJ9LG5hbWVzcGFjZTp7T3BhY2l0eTpcIi43XCJ9LHRhZzp7Y29sb3I6XCIjMDYzMjg5XCJ9LG9wZXJhdG9yOntjb2xvcjpcIiMwNjMyODlcIn0sbnVtYmVyOntjb2xvcjpcIiMwNjMyODlcIn0scHJvcGVydHk6e2NvbG9yOlwiI2IyOTc2MlwifSxmdW5jdGlvbjp7Y29sb3I6XCIjYjI5NzYyXCJ9LFwidGFnLWlkXCI6e2NvbG9yOlwiIzJkMjAwNlwifSxzZWxlY3Rvcjp7Y29sb3I6XCIjMmQyMDA2XCJ9LFwiYXRydWxlLWlkXCI6e2NvbG9yOlwiIzJkMjAwNlwifSxcImNvZGUubGFuZ3VhZ2UtamF2YXNjcmlwdFwiOntjb2xvcjpcIiM4OTY3MjRcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjODk2NzI0XCJ9LFwiY29kZS5sYW5ndWFnZS1jc3NcIjp7Y29sb3I6XCIjNzI4ZmNiXCJ9LFwiY29kZS5sYW5ndWFnZS1zY3NzXCI6e2NvbG9yOlwiIzcyOGZjYlwifSxib29sZWFuOntjb2xvcjpcIiM3MjhmY2JcIn0sc3RyaW5nOntjb2xvcjpcIiM3MjhmY2JcIn0sZW50aXR5Ontjb2xvcjpcIiM3MjhmY2JcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCIjNzI4ZmNiXCJ9LFwiLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiIzcyOGZjYlwifSxcIi5sYW5ndWFnZS1zY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjNzI4ZmNiXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjNzI4ZmNiXCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiM3MjhmY2JcIn0sa2V5d29yZDp7Y29sb3I6XCIjNzI4ZmNiXCJ9LGNvbnRyb2w6e2NvbG9yOlwiIzcyOGZjYlwifSxkaXJlY3RpdmU6e2NvbG9yOlwiIzcyOGZjYlwifSx1bml0Ontjb2xvcjpcIiM3MjhmY2JcIn0sc3RhdGVtZW50Ontjb2xvcjpcIiM3MjhmY2JcIn0scmVnZXg6e2NvbG9yOlwiIzcyOGZjYlwifSxhdHJ1bGU6e2NvbG9yOlwiIzcyOGZjYlwifSxwbGFjZWhvbGRlcjp7Y29sb3I6XCIjOTNhYmRjXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiM5M2FiZGNcIn0sZGVsZXRlZDp7dGV4dERlY29yYXRpb246XCJsaW5lLXRocm91Z2hcIn0saW5zZXJ0ZWQ6e2JvcmRlckJvdHRvbTpcIjFweCBkb3R0ZWQgIzJkMjAwNlwiLHRleHREZWNvcmF0aW9uOlwibm9uZVwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifSxpbXBvcnRhbnQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCIsY29sb3I6XCIjODk2NzI0XCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LFwicHJlID4gY29kZS5oaWdobGlnaHRcIjp7T3V0bGluZTpcIi40ZW0gc29saWQgIzg5NjcyNFwiLE91dGxpbmVPZmZzZXQ6XCIuNGVtXCJ9LFwiLmxpbmUtbnVtYmVycyAubGluZS1udW1iZXJzLXJvd3NcIjp7Ym9yZGVyUmlnaHRDb2xvcjpcIiNlY2U4ZGVcIn0sXCIubGluZS1udW1iZXJzLXJvd3MgPiBzcGFuOmJlZm9yZVwiOntjb2xvcjpcIiNjZGM0YjFcIn0sXCIubGluZS1oaWdobGlnaHRcIjp7YmFja2dyb3VuZDpcImxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSg0NSwgMzIsIDYsIDAuMikgNzAlLCByZ2JhKDQ1LCAzMiwgNiwgMCkpXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Zm9udEZhbWlseTonQ29uc29sYXMsIE1lbmxvLCBNb25hY28sIFwiQW5kYWxlIE1vbm8gV1RcIiwgXCJBbmRhbGUgTW9ub1wiLCBcIkx1Y2lkYSBDb25zb2xlXCIsIFwiTHVjaWRhIFNhbnMgVHlwZXdyaXRlclwiLCBcIkRlamFWdSBTYW5zIE1vbm9cIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJOaW1idXMgTW9ubyBMXCIsIFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE0cHhcIixsaW5lSGVpZ2h0OlwiMS4zNzVcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzFkMjYyZlwiLGNvbG9yOlwiIzU3NzE4ZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2ZvbnRGYW1pbHk6J0NvbnNvbGFzLCBNZW5sbywgTW9uYWNvLCBcIkFuZGFsZSBNb25vIFdUXCIsIFwiQW5kYWxlIE1vbm9cIiwgXCJMdWNpZGEgQ29uc29sZVwiLCBcIkx1Y2lkYSBTYW5zIFR5cGV3cml0ZXJcIiwgXCJEZWphVnUgU2FucyBNb25vXCIsIFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiTmltYnVzIE1vbm8gTFwiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNHB4XCIsbGluZUhlaWdodDpcIjEuMzc1XCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsYmFja2dyb3VuZDpcIiMxZDI2MmZcIixjb2xvcjpcIiM1NzcxOGVcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiMwMDRhOWVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiMwMDRhOWVcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiMwMDRhOWVcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjMDA0YTllXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjMDA0YTllXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzAwNGE5ZVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiMwMDRhOWVcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzAwNGE5ZVwifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntwYWRkaW5nOlwiLjFlbVwiLGJvcmRlclJhZGl1czpcIi4zZW1cIn0sY29tbWVudDp7Y29sb3I6XCIjNGE1Zjc4XCJ9LHByb2xvZzp7Y29sb3I6XCIjNGE1Zjc4XCJ9LGRvY3R5cGU6e2NvbG9yOlwiIzRhNWY3OFwifSxjZGF0YTp7Y29sb3I6XCIjNGE1Zjc4XCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiM0YTVmNzhcIn0sbmFtZXNwYWNlOntPcGFjaXR5OlwiLjdcIn0sdGFnOntjb2xvcjpcIiMwYWEzNzBcIn0sb3BlcmF0b3I6e2NvbG9yOlwiIzBhYTM3MFwifSxudW1iZXI6e2NvbG9yOlwiIzBhYTM3MFwifSxwcm9wZXJ0eTp7Y29sb3I6XCIjNTc3MThlXCJ9LGZ1bmN0aW9uOntjb2xvcjpcIiM1NzcxOGVcIn0sXCJ0YWctaWRcIjp7Y29sb3I6XCIjZWJmNGZmXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiNlYmY0ZmZcIn0sXCJhdHJ1bGUtaWRcIjp7Y29sb3I6XCIjZWJmNGZmXCJ9LFwiY29kZS5sYW5ndWFnZS1qYXZhc2NyaXB0XCI6e2NvbG9yOlwiIzdlYjZmNlwifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiM3ZWI2ZjZcIn0sXCJjb2RlLmxhbmd1YWdlLWNzc1wiOntjb2xvcjpcIiM0N2ViYjRcIn0sXCJjb2RlLmxhbmd1YWdlLXNjc3NcIjp7Y29sb3I6XCIjNDdlYmI0XCJ9LGJvb2xlYW46e2NvbG9yOlwiIzQ3ZWJiNFwifSxzdHJpbmc6e2NvbG9yOlwiIzQ3ZWJiNFwifSxlbnRpdHk6e2NvbG9yOlwiIzQ3ZWJiNFwiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiM0N2ViYjRcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjNDdlYmI0XCJ9LFwiLmxhbmd1YWdlLXNjc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiM0N2ViYjRcIn0sXCIuc3R5bGUgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiM0N2ViYjRcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiIzQ3ZWJiNFwifSxrZXl3b3JkOntjb2xvcjpcIiM0N2ViYjRcIn0sY29udHJvbDp7Y29sb3I6XCIjNDdlYmI0XCJ9LGRpcmVjdGl2ZTp7Y29sb3I6XCIjNDdlYmI0XCJ9LHVuaXQ6e2NvbG9yOlwiIzQ3ZWJiNFwifSxzdGF0ZW1lbnQ6e2NvbG9yOlwiIzQ3ZWJiNFwifSxyZWdleDp7Y29sb3I6XCIjNDdlYmI0XCJ9LGF0cnVsZTp7Y29sb3I6XCIjNDdlYmI0XCJ9LHBsYWNlaG9sZGVyOntjb2xvcjpcIiM0N2ViYjRcIn0sdmFyaWFibGU6e2NvbG9yOlwiIzQ3ZWJiNFwifSxkZWxldGVkOnt0ZXh0RGVjb3JhdGlvbjpcImxpbmUtdGhyb3VnaFwifSxpbnNlcnRlZDp7Ym9yZGVyQm90dG9tOlwiMXB4IGRvdHRlZCAjZWJmNGZmXCIsdGV4dERlY29yYXRpb246XCJub25lXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9LGltcG9ydGFudDp7Zm9udFdlaWdodDpcImJvbGRcIixjb2xvcjpcIiM3ZWI2ZjZcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0sXCJwcmUgPiBjb2RlLmhpZ2hsaWdodFwiOntPdXRsaW5lOlwiLjRlbSBzb2xpZCAjMzQ2NTlkXCIsT3V0bGluZU9mZnNldDpcIi40ZW1cIn0sXCIubGluZS1udW1iZXJzIC5saW5lLW51bWJlcnMtcm93c1wiOntib3JkZXJSaWdodENvbG9yOlwiIzFmMjkzMlwifSxcIi5saW5lLW51bWJlcnMtcm93cyA+IHNwYW46YmVmb3JlXCI6e2NvbG9yOlwiIzJjMzg0N1wifSxcIi5saW5lLWhpZ2hsaWdodFwiOntiYWNrZ3JvdW5kOlwibGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDEwLCAxNjMsIDExMiwgMC4yKSA3MCUsIHJnYmEoMTAsIDE2MywgMTEyLCAwKSlcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OidDb25zb2xhcywgTWVubG8sIE1vbmFjbywgXCJBbmRhbGUgTW9ubyBXVFwiLCBcIkFuZGFsZSBNb25vXCIsIFwiTHVjaWRhIENvbnNvbGVcIiwgXCJMdWNpZGEgU2FucyBUeXBld3JpdGVyXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIk5pbWJ1cyBNb25vIExcIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTRweFwiLGxpbmVIZWlnaHQ6XCIxLjM3NVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLGJhY2tncm91bmQ6XCIjMjQyNDJlXCIsY29sb3I6XCIjNzY3NjkzXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Zm9udEZhbWlseTonQ29uc29sYXMsIE1lbmxvLCBNb25hY28sIFwiQW5kYWxlIE1vbm8gV1RcIiwgXCJBbmRhbGUgTW9ub1wiLCBcIkx1Y2lkYSBDb25zb2xlXCIsIFwiTHVjaWRhIFNhbnMgVHlwZXdyaXRlclwiLCBcIkRlamFWdSBTYW5zIE1vbm9cIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJOaW1idXMgTW9ubyBMXCIsIFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE0cHhcIixsaW5lSGVpZ2h0OlwiMS4zNzVcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzI0MjQyZVwiLGNvbG9yOlwiIzc2NzY5M1wiLHBhZGRpbmc6XCIxZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzUxNTFlNlwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzUxNTFlNlwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzUxNTFlNlwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM1MTUxZTZcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM1MTUxZTZcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNTE1MWU2XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzUxNTFlNlwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNTE1MWU2XCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e3BhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwifSxjb21tZW50Ontjb2xvcjpcIiM1YjViNzZcIn0scHJvbG9nOntjb2xvcjpcIiM1YjViNzZcIn0sZG9jdHlwZTp7Y29sb3I6XCIjNWI1Yjc2XCJ9LGNkYXRhOntjb2xvcjpcIiM1YjViNzZcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiIzViNWI3NlwifSxuYW1lc3BhY2U6e09wYWNpdHk6XCIuN1wifSx0YWc6e2NvbG9yOlwiI2RkNjcyY1wifSxvcGVyYXRvcjp7Y29sb3I6XCIjZGQ2NzJjXCJ9LG51bWJlcjp7Y29sb3I6XCIjZGQ2NzJjXCJ9LHByb3BlcnR5Ontjb2xvcjpcIiM3Njc2OTNcIn0sZnVuY3Rpb246e2NvbG9yOlwiIzc2NzY5M1wifSxcInRhZy1pZFwiOntjb2xvcjpcIiNlYmViZmZcIn0sc2VsZWN0b3I6e2NvbG9yOlwiI2ViZWJmZlwifSxcImF0cnVsZS1pZFwiOntjb2xvcjpcIiNlYmViZmZcIn0sXCJjb2RlLmxhbmd1YWdlLWphdmFzY3JpcHRcIjp7Y29sb3I6XCIjYWFhYWNhXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiI2FhYWFjYVwifSxcImNvZGUubGFuZ3VhZ2UtY3NzXCI6e2NvbG9yOlwiI2ZlOGM1MlwifSxcImNvZGUubGFuZ3VhZ2Utc2Nzc1wiOntjb2xvcjpcIiNmZThjNTJcIn0sYm9vbGVhbjp7Y29sb3I6XCIjZmU4YzUyXCJ9LHN0cmluZzp7Y29sb3I6XCIjZmU4YzUyXCJ9LGVudGl0eTp7Y29sb3I6XCIjZmU4YzUyXCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiI2ZlOGM1MlwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNmZThjNTJcIn0sXCIubGFuZ3VhZ2Utc2NzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiI2ZlOGM1MlwifSxcIi5zdHlsZSAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiI2ZlOGM1MlwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjZmU4YzUyXCJ9LGtleXdvcmQ6e2NvbG9yOlwiI2ZlOGM1MlwifSxjb250cm9sOntjb2xvcjpcIiNmZThjNTJcIn0sZGlyZWN0aXZlOntjb2xvcjpcIiNmZThjNTJcIn0sdW5pdDp7Y29sb3I6XCIjZmU4YzUyXCJ9LHN0YXRlbWVudDp7Y29sb3I6XCIjZmU4YzUyXCJ9LHJlZ2V4Ontjb2xvcjpcIiNmZThjNTJcIn0sYXRydWxlOntjb2xvcjpcIiNmZThjNTJcIn0scGxhY2Vob2xkZXI6e2NvbG9yOlwiI2ZlOGM1MlwifSx2YXJpYWJsZTp7Y29sb3I6XCIjZmU4YzUyXCJ9LGRlbGV0ZWQ6e3RleHREZWNvcmF0aW9uOlwibGluZS10aHJvdWdoXCJ9LGluc2VydGVkOntib3JkZXJCb3R0b206XCIxcHggZG90dGVkICNlYmViZmZcIix0ZXh0RGVjb3JhdGlvbjpcIm5vbmVcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn0saW1wb3J0YW50Ontmb250V2VpZ2h0OlwiYm9sZFwiLGNvbG9yOlwiI2FhYWFjYVwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxcInByZSA+IGNvZGUuaGlnaGxpZ2h0XCI6e091dGxpbmU6XCIuNGVtIHNvbGlkICM3Njc2ZjRcIixPdXRsaW5lT2Zmc2V0OlwiLjRlbVwifSxcIi5saW5lLW51bWJlcnMgLmxpbmUtbnVtYmVycy1yb3dzXCI6e2JvcmRlclJpZ2h0Q29sb3I6XCIjMjYyNjMxXCJ9LFwiLmxpbmUtbnVtYmVycy1yb3dzID4gc3BhbjpiZWZvcmVcIjp7Y29sb3I6XCIjMzkzOTQ5XCJ9LFwiLmxpbmUtaGlnaGxpZ2h0XCI6e2JhY2tncm91bmQ6XCJsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjIxLCAxMDMsIDQ0LCAwLjIpIDcwJSwgcmdiYSgyMjEsIDEwMywgNDQsIDApKVwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiIzM5M0EzNFwiLGZvbnRGYW1pbHk6J1wiQ29uc29sYXNcIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixmb250U2l6ZTpcIjAuOTVlbVwiLGxpbmVIZWlnaHQ6XCIxLjJlbVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjMzkzQTM0XCIsZm9udEZhbWlseTonXCJDb25zb2xhc1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLGZvbnRTaXplOlwiMC45NWVtXCIsbGluZUhlaWdodDpcIjEuMmVtXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCIsYm9yZGVyOlwiMXB4IHNvbGlkICNkZGRkZGRcIixiYWNrZ3JvdW5kQ29sb3I6XCJ3aGl0ZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntwYWRkaW5nOlwiLjJlbVwiLHBhZGRpbmdUb3A6XCIxcHhcIixwYWRkaW5nQm90dG9tOlwiMXB4XCIsYmFja2dyb3VuZDpcIiNmOGY4ZjhcIixib3JkZXI6XCIxcHggc29saWQgI2RkZGRkZFwifSxjb21tZW50Ontjb2xvcjpcIiM5OTk5ODhcIixmb250U3R5bGU6XCJpdGFsaWNcIn0scHJvbG9nOntjb2xvcjpcIiM5OTk5ODhcIixmb250U3R5bGU6XCJpdGFsaWNcIn0sZG9jdHlwZTp7Y29sb3I6XCIjOTk5OTg4XCIsZm9udFN0eWxlOlwiaXRhbGljXCJ9LGNkYXRhOntjb2xvcjpcIiM5OTk5ODhcIixmb250U3R5bGU6XCJpdGFsaWNcIn0sbmFtZXNwYWNlOntPcGFjaXR5OlwiLjdcIn0sc3RyaW5nOntjb2xvcjpcIiNlMzExNmNcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiI2UzMTE2Y1wifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjMzkzQTM0XCJ9LG9wZXJhdG9yOntjb2xvcjpcIiMzOTNBMzRcIn0sZW50aXR5Ontjb2xvcjpcIiMzNmFjYWFcIn0sdXJsOntjb2xvcjpcIiMzNmFjYWFcIn0sc3ltYm9sOntjb2xvcjpcIiMzNmFjYWFcIn0sbnVtYmVyOntjb2xvcjpcIiMzNmFjYWFcIn0sYm9vbGVhbjp7Y29sb3I6XCIjMzZhY2FhXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiMzNmFjYWFcIn0sY29uc3RhbnQ6e2NvbG9yOlwiIzM2YWNhYVwifSxwcm9wZXJ0eTp7Y29sb3I6XCIjMzZhY2FhXCJ9LHJlZ2V4Ontjb2xvcjpcIiMzNmFjYWFcIn0saW5zZXJ0ZWQ6e2NvbG9yOlwiIzM2YWNhYVwifSxhdHJ1bGU6e2NvbG9yOlwiIzAwYTRkYlwifSxrZXl3b3JkOntjb2xvcjpcIiMwMGE0ZGJcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjMDBhNGRiXCJ9LFwiLmxhbmd1YWdlLWF1dG9ob3RrZXkgLnRva2VuLnNlbGVjdG9yXCI6e2NvbG9yOlwiIzAwYTRkYlwifSxmdW5jdGlvbjp7Y29sb3I6XCIjOWEwNTBmXCIsZm9udFdlaWdodDpcImJvbGRcIn0sZGVsZXRlZDp7Y29sb3I6XCIjOWEwNTBmXCJ9LFwiLmxhbmd1YWdlLWF1dG9ob3RrZXkgLnRva2VuLnRhZ1wiOntjb2xvcjpcIiM5YTA1MGZcIn0sdGFnOntjb2xvcjpcIiMwMDAwOWZcIn0sc2VsZWN0b3I6e2NvbG9yOlwiIzAwMDA5ZlwifSxcIi5sYW5ndWFnZS1hdXRvaG90a2V5IC50b2tlbi5rZXl3b3JkXCI6e2NvbG9yOlwiIzAwMDA5ZlwifSxpbXBvcnRhbnQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjYjliNWI4XCIsZm9udEZhbWlseTonXCJGaXJhIE1vbm9cIiwgTWVubG8sIE1vbmFjbywgXCJMdWNpZGEgQ29uc29sZVwiLFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE2cHhcIixsaW5lSGVpZ2h0OlwiMS4zNzVcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLHdoaXRlU3BhY2U6XCJwcmUtd3JhcFwiLHdvcmRCcmVhazpcImJyZWFrLWFsbFwiLHdvcmRXcmFwOlwiYnJlYWstd29yZFwiLGJhY2tncm91bmQ6XCIjMzIyOTMxXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjYjliNWI4XCIsZm9udEZhbWlseTonXCJGaXJhIE1vbm9cIiwgTWVubG8sIE1vbmFjbywgXCJMdWNpZGEgQ29uc29sZVwiLFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE2cHhcIixsaW5lSGVpZ2h0OlwiMS4zNzVcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLHdoaXRlU3BhY2U6XCJwcmUtd3JhcFwiLHdvcmRCcmVhazpcImJyZWFrLWFsbFwiLHdvcmRXcmFwOlwiYnJlYWstd29yZFwiLGJhY2tncm91bmQ6XCIjMzIyOTMxXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntwYWRkaW5nOlwiLjFlbVwiLGJvcmRlclJhZGl1czpcIi4zZW1cIn0sY29tbWVudDp7Y29sb3I6XCIjNzk3Mzc5XCJ9LHByb2xvZzp7Y29sb3I6XCIjNzk3Mzc5XCJ9LGRvY3R5cGU6e2NvbG9yOlwiIzc5NzM3OVwifSxjZGF0YTp7Y29sb3I6XCIjNzk3Mzc5XCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiNiOWI1YjhcIn0sXCIubmFtZXNwYWNlXCI6e09wYWNpdHk6XCIuN1wifSxudWxsOntjb2xvcjpcIiNmZDhiMTlcIn0sb3BlcmF0b3I6e2NvbG9yOlwiI2ZkOGIxOVwifSxib29sZWFuOntjb2xvcjpcIiNmZDhiMTlcIn0sbnVtYmVyOntjb2xvcjpcIiNmZDhiMTlcIn0scHJvcGVydHk6e2NvbG9yOlwiI2ZkY2M1OVwifSx0YWc6e2NvbG9yOlwiIzEyOTBiZlwifSxzdHJpbmc6e2NvbG9yOlwiIzE0OWI5M1wifSxzZWxlY3Rvcjp7Y29sb3I6XCIjYzg1ZTdjXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiI2ZkOGIxOVwifSxlbnRpdHk6e2NvbG9yOlwiIzE0OWI5M1wiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiMxNDliOTNcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjMTQ5YjkzXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjMTQ5YjkzXCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiM4ZmMxM2VcIn0sa2V5d29yZDp7Y29sb3I6XCIjOGZjMTNlXCJ9LGNvbnRyb2w6e2NvbG9yOlwiIzhmYzEzZVwifSxkaXJlY3RpdmU6e2NvbG9yOlwiIzhmYzEzZVwifSx1bml0Ontjb2xvcjpcIiM4ZmMxM2VcIn0sc3RhdGVtZW50Ontjb2xvcjpcIiMxNDliOTNcIn0scmVnZXg6e2NvbG9yOlwiIzE0OWI5M1wifSxhdHJ1bGU6e2NvbG9yOlwiIzE0OWI5M1wifSxwbGFjZWhvbGRlcjp7Y29sb3I6XCIjMTI5MGJmXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiMxMjkwYmZcIn0saW1wb3J0YW50Ontjb2xvcjpcIiNkZDQ2NGNcIixmb250V2VpZ2h0OlwiYm9sZFwifSxcInByZSA+IGNvZGUuaGlnaGxpZ2h0XCI6e091dGxpbmU6XCIuNGVtIHNvbGlkIHJlZFwiLE91dGxpbmVPZmZzZXQ6XCIuNGVtXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7TW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIix3aGl0ZVNwYWNlOlwicHJlLXdyYXBcIix3b3JkQnJlYWs6XCJicmVhay1hbGxcIix3b3JkV3JhcDpcImJyZWFrLXdvcmRcIixmb250RmFtaWx5OidNZW5sbywgTW9uYWNvLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNXB4XCIsbGluZUhlaWdodDpcIjEuNVwiLGNvbG9yOlwiI2RjY2Y4ZlwiLHRleHRTaGFkb3c6XCIwXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7TW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIix3aGl0ZVNwYWNlOlwicHJlLXdyYXBcIix3b3JkQnJlYWs6XCJicmVhay1hbGxcIix3b3JkV3JhcDpcImJyZWFrLXdvcmRcIixmb250RmFtaWx5OidNZW5sbywgTW9uYWNvLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNXB4XCIsbGluZUhlaWdodDpcIjEuNVwiLGNvbG9yOlwiI0RDQ0Y4RlwiLHRleHRTaGFkb3c6XCIwXCIsYm9yZGVyUmFkaXVzOlwiNXB4XCIsYm9yZGVyOlwiMXB4IHNvbGlkICMwMDBcIixiYWNrZ3JvdW5kOlwiIzE4MTkxNCB1cmwoJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFnQUFaQUJrQUFELzdBQVJSSFZqYTNrQUFRQUVBQUFBTUFBQS8rNEFEa0ZrYjJKbEFHVEFBQUFBQWYvYkFJUUFDUVlHQmdjR0NRY0hDUTBJQndnTkR3c0pDUXNQRVE0T0R3NE9FUkVORGc0T0RnMFJFUlFVRmhRVUVSb2FIQndhR2lZbUppWW1LeXNyS3lzckt5c3JLd0VKQ0FnSkNna01DZ29NRHd3T0RBOFREZzRPRGhNVkRnNFBEZzRWR2hNUkVSRVJFeG9YR2hZV0Zob1hIUjBhR2gwZEpDUWpKQ1FyS3lzckt5c3JLeXNyLzhBQUVRZ0FqQUNNQXdFaUFBSVJBUU1SQWYvRUFGNEFBUUVCQUFBQUFBQUFBQUFBQUFBQUFBQUJCd0VCQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUlRQUFFREF3SUhBUUVBQUFBQUFBQUFBQUR3QVJFaFlhRXhrVUZSY1lHeHdkSGg4UkVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9hQUF3REFRQUNFUU1SQUQ4QXlHRkVqSGFCUzJmRERzMnpraEttQktrdGI3a20rWnd3Q25YUGtMVm1DVE1JdGo2QVhGeFJTNDY1L0JUbmtBSnZrTGtKZSs3QUtLb2kyQXRSUzJ6dUFXc0NiNUdPbEJOOGdLZm11R0haOE1GcUl0aDNBTG1Gb0Z3YndLV3lBbFRBcDE3dUtxQnZnQkQ4c000ZlRqaHZBaGt6aGFSa0JNS0JyZnM3akdQSXB6eTdnRnJBcW5DMEMwZ0IwRVd3QkRXMmNCVlF3bStRdFBwYTN3Qk8zc1Z2c3pDbkxBaGt6Z0w1L1JMZjEzY0xRZDgvQUdsdTBDYjVIVHg5S3VBRWllR0pFZGNlaFMzZVJUcDJBVGR0M0NwSW0rUXRad0FoUk9YRmViN3N3cC9haGFNM2tCRS9qU0lVQmMvQVdyZ0JOOHVORkFsK2I3c0FYRnhGbjJZTFVVNU5zN2dGWDhDNGliK2hOOGdGV1h3SzNiWmdseEVKbStnS2RjaUxQc0ZWL1RDbHNnSlV3S0o1RlZBN3R2SUZyZlpoVmZHSkRjc0NLYVlnQXF2NllSYkUrUldPV0J0dTcrQUwzeVJhbFhMeUtxQUlJZmsrekFSYkRnRnlFc25jWXdKdmxnRlJXK0dFV250SWkyUDBCb295RnhjTnI4RXAzK0FOTGJNTytReWh2YmlxZGdDMGtWdmdVVWlMWWdCUzJRdFBiaVZJMS9zZ09tRzl1TytZOERXKzdqUzJ6QU9uajZPMkJuZHd1SUFVdGtkUk44Z0ZvSzN3d1hNUXlad0hWYkNsc3VOTGQ0RTN5QVVSNkZWREJSK0JhZlFHdDkzTFZNeEpUdjhBQnRzNENWTGhjZllXc0NiNWtDOS9CSGRVOENMWUZZNWJNQWQrZVg5TUd0aGhwYkExdnU0QjcrUktrYVcyWXE0QVF0VkJCRnNBSlUvQXVJWEJoTjhnR1duc3RlZmhpWnlXdkxBRW5iWVMxdXpTRlA2SnZuNEJheHg3MEpLa1FvakxpYjVBVlRleTFqamdrS0pHTzBBS1d5T203TjdjU3BnU3BBZFBIMFRmZC9ncDF6NUMxWmdLcU45SjJ3RnhjVVV1QUZMWkFtK1FDMEZiNFlVVlJGc0FPdmo0S1cyZHd0WUUzeUFXay93Uy9QTE1LZm11R0haOE1BWEYvSmEzMllpNWhhQUtXejRZZG0yY1NwZ1U2OTNBdGI3a20rWnd3aCtXR2NQcHh3M2dBa3pDTFkraVlVRFcvWjNBZGMvZ3B6eUZyQXFuQUxrSmUrN0RvSXRnQXRSUzJ6dUtxR0UzeUF4MG9KdmtkdllyZlptQUxVUmJEdUw1L1JMZjEzY0F1RGVCUzJScGJ0QW0rUUZWQTN3UiszZlV0RkhvQkRKbkMwaklYSDBIV3NnTVk4aW5QTHVPa2Q5Y2hwNHoyMEFMUUxTQThjSTlqWUFJYTJ6anpqQmQ4Z1JhZlMxdmdpVWhvL2tBS2NzQ0dUT0dXdm9PcGtBdEIzejhIbTh4MkZmNUFEcDQrbFhBbEl2Y213SC8yUT09JykgcmVwZWF0IGxlZnQgdG9wXCIscGFkZGluZzpcIjEycHhcIixvdmVyZmxvdzpcImF1dG9cIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Ym9yZGVyUmFkaXVzOlwiNXB4XCIsYm9yZGVyOlwiMXB4IHNvbGlkICMwMDBcIixjb2xvcjpcIiNEQ0NGOEZcIixiYWNrZ3JvdW5kOlwiIzE4MTkxNCB1cmwoJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFnQUFaQUJrQUFELzdBQVJSSFZqYTNrQUFRQUVBQUFBTUFBQS8rNEFEa0ZrYjJKbEFHVEFBQUFBQWYvYkFJUUFDUVlHQmdjR0NRY0hDUTBJQndnTkR3c0pDUXNQRVE0T0R3NE9FUkVORGc0T0RnMFJFUlFVRmhRVUVSb2FIQndhR2lZbUppWW1LeXNyS3lzckt5c3JLd0VKQ0FnSkNna01DZ29NRHd3T0RBOFREZzRPRGhNVkRnNFBEZzRWR2hNUkVSRVJFeG9YR2hZV0Zob1hIUjBhR2gwZEpDUWpKQ1FyS3lzckt5c3JLeXNyLzhBQUVRZ0FqQUNNQXdFaUFBSVJBUU1SQWYvRUFGNEFBUUVCQUFBQUFBQUFBQUFBQUFBQUFBQUJCd0VCQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUlRQUFFREF3SUhBUUVBQUFBQUFBQUFBQUR3QVJFaFlhRXhrVUZSY1lHeHdkSGg4UkVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9hQUF3REFRQUNFUU1SQUQ4QXlHRkVqSGFCUzJmRERzMnpraEttQktrdGI3a20rWnd3Q25YUGtMVm1DVE1JdGo2QVhGeFJTNDY1L0JUbmtBSnZrTGtKZSs3QUtLb2kyQXRSUzJ6dUFXc0NiNUdPbEJOOGdLZm11R0haOE1GcUl0aDNBTG1Gb0Z3YndLV3lBbFRBcDE3dUtxQnZnQkQ4c000ZlRqaHZBaGt6aGFSa0JNS0JyZnM3akdQSXB6eTdnRnJBcW5DMEMwZ0IwRVd3QkRXMmNCVlF3bStRdFBwYTN3Qk8zc1Z2c3pDbkxBaGt6Z0w1L1JMZjEzY0xRZDgvQUdsdTBDYjVIVHg5S3VBRWllR0pFZGNlaFMzZVJUcDJBVGR0M0NwSW0rUXRad0FoUk9YRmViN3N3cC9haGFNM2tCRS9qU0lVQmMvQVdyZ0JOOHVORkFsK2I3c0FYRnhGbjJZTFVVNU5zN2dGWDhDNGliK2hOOGdGV1h3SzNiWmdseEVKbStnS2RjaUxQc0ZWL1RDbHNnSlV3S0o1RlZBN3R2SUZyZlpoVmZHSkRjc0NLYVlnQXF2NllSYkUrUldPV0J0dTcrQUwzeVJhbFhMeUtxQUlJZmsrekFSYkRnRnlFc25jWXdKdmxnRlJXK0dFV250SWkyUDBCb295RnhjTnI4RXAzK0FOTGJNTytReWh2YmlxZGdDMGtWdmdVVWlMWWdCUzJRdFBiaVZJMS9zZ09tRzl1TytZOERXKzdqUzJ6QU9uajZPMkJuZHd1SUFVdGtkUk44Z0ZvSzN3d1hNUXlad0hWYkNsc3VOTGQ0RTN5QVVSNkZWREJSK0JhZlFHdDkzTFZNeEpUdjhBQnRzNENWTGhjZllXc0NiNWtDOS9CSGRVOENMWUZZNWJNQWQrZVg5TUd0aGhwYkExdnU0QjcrUktrYVcyWXE0QVF0VkJCRnNBSlUvQXVJWEJoTjhnR1duc3RlZmhpWnlXdkxBRW5iWVMxdXpTRlA2SnZuNEJheHg3MEpLa1FvakxpYjVBVlRleTFqamdrS0pHTzBBS1d5T203TjdjU3BnU3BBZFBIMFRmZC9ncDF6NUMxWmdLcU45SjJ3RnhjVVV1QUZMWkFtK1FDMEZiNFlVVlJGc0FPdmo0S1cyZHd0WUUzeUFXay93Uy9QTE1LZm11R0haOE1BWEYvSmEzMllpNWhhQUtXejRZZG0yY1NwZ1U2OTNBdGI3a20rWnd3aCtXR2NQcHh3M2dBa3pDTFkraVlVRFcvWjNBZGMvZ3B6eUZyQXFuQUxrSmUrN0RvSXRnQXRSUzJ6dUtxR0UzeUF4MG9KdmtkdllyZlptQUxVUmJEdUw1L1JMZjEzY0F1RGVCUzJScGJ0QW0rUUZWQTN3UiszZlV0RkhvQkRKbkMwaklYSDBIV3NnTVk4aW5QTHVPa2Q5Y2hwNHoyMEFMUUxTQThjSTlqWUFJYTJ6anpqQmQ4Z1JhZlMxdmdpVWhvL2tBS2NzQ0dUT0dXdm9PcGtBdEIzejhIbTh4MkZmNUFEcDQrbFhBbEl2Y213SC8yUT09JykgcmVwZWF0IGxlZnQgdG9wXCIscGFkZGluZzpcIjJweCA2cHhcIn0sbmFtZXNwYWNlOntPcGFjaXR5OlwiLjdcIn0sY29tbWVudDp7Y29sb3I6XCIjNTg2ZTc1XCIsZm9udFN0eWxlOlwiaXRhbGljXCJ9LHByb2xvZzp7Y29sb3I6XCIjNTg2ZTc1XCIsZm9udFN0eWxlOlwiaXRhbGljXCJ9LGRvY3R5cGU6e2NvbG9yOlwiIzU4NmU3NVwiLGZvbnRTdHlsZTpcIml0YWxpY1wifSxjZGF0YTp7Y29sb3I6XCIjNTg2ZTc1XCIsZm9udFN0eWxlOlwiaXRhbGljXCJ9LG51bWJlcjp7Y29sb3I6XCIjYjg5ODU5XCJ9LHN0cmluZzp7Y29sb3I6XCIjNDY4OTY2XCJ9LGNoYXI6e2NvbG9yOlwiIzQ2ODk2NlwifSxidWlsdGluOntjb2xvcjpcIiM0Njg5NjZcIn0saW5zZXJ0ZWQ6e2NvbG9yOlwiIzQ2ODk2NlwifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiNiODk4NTlcIn0sb3BlcmF0b3I6e2NvbG9yOlwiI2RjY2Y4ZlwifSxlbnRpdHk6e2NvbG9yOlwiI2RjY2Y4ZlwiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiNkY2NmOGZcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZGNjZjhmXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZGNjZjhmXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiM4NTk5MDBcIn0scmVnZXg6e2NvbG9yOlwiIzg1OTkwMFwifSxhdHJ1bGU6e2NvbG9yOlwiI2NiNGIxNlwifSxrZXl3b3JkOntjb2xvcjpcIiNjYjRiMTZcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiIzQ2ODk2NlwifSxmdW5jdGlvbjp7Y29sb3I6XCIjYjU4OTAwXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiNiNTg5MDBcIn0scGxhY2Vob2xkZXI6e2NvbG9yOlwiI2I1ODkwMFwifSxwcm9wZXJ0eTp7Y29sb3I6XCIjYjg5ODU5XCJ9LHRhZzp7Y29sb3I6XCIjZmZiMDNiXCJ9LGJvb2xlYW46e2NvbG9yOlwiI2I4OTg1OVwifSxjb25zdGFudDp7Y29sb3I6XCIjYjg5ODU5XCJ9LHN5bWJvbDp7Y29sb3I6XCIjYjg5ODU5XCJ9LGltcG9ydGFudDp7Y29sb3I6XCIjZGMzMjJmXCJ9LHN0YXRlbWVudDp7Y29sb3I6XCIjZGMzMjJmXCJ9LGRlbGV0ZWQ6e2NvbG9yOlwiI2RjMzIyZlwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjZGNjZjhmXCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjMzkzQTM0XCIsZm9udEZhbWlseTonXCJDb25zb2xhc1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLGZvbnRTaXplOlwiMC45NWVtXCIsbGluZUhlaWdodDpcIjEuMmVtXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiMzOTNBMzRcIixmb250RmFtaWx5OidcIkNvbnNvbGFzXCIsIFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsZm9udFNpemU6XCIwLjk1ZW1cIixsaW5lSGVpZ2h0OlwiMS4yZW1cIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLHBhZGRpbmc6XCIxZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIixib3JkZXI6XCIxcHggc29saWQgI2RkZGRkZFwiLGJhY2tncm91bmRDb2xvcjpcIndoaXRlXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjQzFERUYxXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiI0MxREVGMVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiNDMURFRjFcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiI0MxREVGMVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiNDMURFRjFcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiI0MxREVGMVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjQzFERUYxXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjQzFERUYxXCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e3BhZGRpbmc6XCIuMmVtXCIscGFkZGluZ1RvcDpcIjFweFwiLHBhZGRpbmdCb3R0b206XCIxcHhcIixiYWNrZ3JvdW5kOlwiI2Y4ZjhmOFwiLGJvcmRlcjpcIjFweCBzb2xpZCAjZGRkZGRkXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiIzAwODAwMFwiLGZvbnRTdHlsZTpcIml0YWxpY1wifSxwcm9sb2c6e2NvbG9yOlwiIzAwODAwMFwiLGZvbnRTdHlsZTpcIml0YWxpY1wifSxkb2N0eXBlOntjb2xvcjpcIiMwMDgwMDBcIixmb250U3R5bGU6XCJpdGFsaWNcIn0sY2RhdGE6e2NvbG9yOlwiIzAwODAwMFwiLGZvbnRTdHlsZTpcIml0YWxpY1wifSxuYW1lc3BhY2U6e09wYWNpdHk6XCIuN1wifSxzdHJpbmc6e2NvbG9yOlwiI0EzMTUxNVwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjMzkzQTM0XCJ9LG9wZXJhdG9yOntjb2xvcjpcIiMzOTNBMzRcIn0sdXJsOntjb2xvcjpcIiMzNmFjYWFcIn0sc3ltYm9sOntjb2xvcjpcIiMzNmFjYWFcIn0sbnVtYmVyOntjb2xvcjpcIiMzNmFjYWFcIn0sYm9vbGVhbjp7Y29sb3I6XCIjMzZhY2FhXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiMzNmFjYWFcIn0sY29uc3RhbnQ6e2NvbG9yOlwiIzM2YWNhYVwifSxpbnNlcnRlZDp7Y29sb3I6XCIjMzZhY2FhXCJ9LGF0cnVsZTp7Y29sb3I6XCIjMDAwMGZmXCJ9LGtleXdvcmQ6e2NvbG9yOlwiIzAwMDBmZlwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjMDAwMGZmXCJ9LFwiLmxhbmd1YWdlLWF1dG9ob3RrZXkgLnRva2VuLnNlbGVjdG9yXCI6e2NvbG9yOlwiIzAwMDBmZlwifSxcIi5sYW5ndWFnZS1qc29uIC50b2tlbi5ib29sZWFuXCI6e2NvbG9yOlwiIzAwMDBmZlwifSxcIi5sYW5ndWFnZS1qc29uIC50b2tlbi5udW1iZXJcIjp7Y29sb3I6XCIjMDAwMGZmXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLWNzc1wiXSc6e2NvbG9yOlwiIzAwMDBmZlwifSxmdW5jdGlvbjp7Y29sb3I6XCIjMzkzQTM0XCJ9LGRlbGV0ZWQ6e2NvbG9yOlwiIzlhMDUwZlwifSxcIi5sYW5ndWFnZS1hdXRvaG90a2V5IC50b2tlbi50YWdcIjp7Y29sb3I6XCIjOWEwNTBmXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiM4MDAwMDBcIn0sXCIubGFuZ3VhZ2UtYXV0b2hvdGtleSAudG9rZW4ua2V5d29yZFwiOntjb2xvcjpcIiMwMDAwOWZcIn0saW1wb3J0YW50Ontmb250V2VpZ2h0OlwiYm9sZFwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifSxcImNsYXNzLW5hbWVcIjp7Y29sb3I6XCIjMkI5MUFGXCJ9LFwiLmxhbmd1YWdlLWpzb24gLnRva2VuLnByb3BlcnR5XCI6e2NvbG9yOlwiIzJCOTFBRlwifSx0YWc6e2NvbG9yOlwiIzgwMDAwMFwifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiNmZjAwMDBcIn0scHJvcGVydHk6e2NvbG9yOlwiI2ZmMDAwMFwifSxyZWdleDp7Y29sb3I6XCIjZmYwMDAwXCJ9LGVudGl0eTp7Y29sb3I6XCIjZmYwMDAwXCJ9LFwiZGlyZWN0aXZlLnRhZyAgLnRhZ1wiOntiYWNrZ3JvdW5kOlwiI2ZmZmYwMFwiLGNvbG9yOlwiIzM5M0EzNFwifSxcIi5saW5lLW51bWJlcnMgLmxpbmUtbnVtYmVycy1yb3dzXCI6e2JvcmRlclJpZ2h0Q29sb3I6XCIjYTVhNWE1XCJ9LFwiLmxpbmUtbnVtYmVycy1yb3dzID4gc3BhbjpiZWZvcmVcIjp7Y29sb3I6XCIjMkI5MUFGXCJ9LFwiLmxpbmUtaGlnaGxpZ2h0XCI6e2JhY2tncm91bmQ6XCJsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMTkzLCAyMjIsIDI0MSwgMC4yKSA3MCUsIHJnYmEoMjIxLCAyMjIsIDI0MSwgMCkpXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7TW96VGFiU2l6ZTpcIjJcIixPVGFiU2l6ZTpcIjJcIix0YWJTaXplOlwiMlwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIix3aGl0ZVNwYWNlOlwicHJlLXdyYXBcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGZvbnRGYW1pbHk6J01lbmxvLCBNb25hY28sIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE0cHhcIixjb2xvcjpcIiM3NmQ5ZTZcIix0ZXh0U2hhZG93Olwibm9uZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e01velRhYlNpemU6XCIyXCIsT1RhYlNpemU6XCIyXCIsdGFiU2l6ZTpcIjJcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsd2hpdGVTcGFjZTpcInByZS13cmFwXCIsd29yZFdyYXA6XCJub3JtYWxcIixmb250RmFtaWx5OidNZW5sbywgTW9uYWNvLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNHB4XCIsY29sb3I6XCIjNzZkOWU2XCIsdGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzJhMmEyYVwiLHBhZGRpbmc6XCIxNXB4XCIsYm9yZGVyUmFkaXVzOlwiNHB4XCIsYm9yZGVyOlwiMXB4IHNvbGlkICNlMWUxZThcIixvdmVyZmxvdzpcImF1dG9cIixwb3NpdGlvbjpcInJlbGF0aXZlXCJ9LCc6bm90KHByZSk+Y29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntiYWNrZ3JvdW5kOlwiIzJhMmEyYVwiLHBhZGRpbmc6XCIwLjE1ZW0gMC4yZW0gMC4wNWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwiLGJvcmRlcjpcIjAuMTNlbSBzb2xpZCAjN2E2NjUyXCIsYm94U2hhZG93OlwiMXB4IDFweCAwLjNlbSAtMC4xZW0gIzAwMCBpbnNldFwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSBjb2RlJzp7d2hpdGVTcGFjZTpcInByZVwiLGRpc3BsYXk6XCJibG9ja1wifSxuYW1lc3BhY2U6e09wYWNpdHk6XCIuN1wifSxjb21tZW50Ontjb2xvcjpcIiM2ZjcwNWVcIn0scHJvbG9nOntjb2xvcjpcIiM2ZjcwNWVcIn0sZG9jdHlwZTp7Y29sb3I6XCIjNmY3MDVlXCJ9LGNkYXRhOntjb2xvcjpcIiM2ZjcwNWVcIn0sb3BlcmF0b3I6e2NvbG9yOlwiI2E3N2FmZVwifSxib29sZWFuOntjb2xvcjpcIiNhNzdhZmVcIn0sbnVtYmVyOntjb2xvcjpcIiNhNzdhZmVcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjZTZkMDZjXCJ9LHN0cmluZzp7Y29sb3I6XCIjZTZkMDZjXCJ9LGVudGl0eTp7Y29sb3I6XCIjZTZkMDZjXCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiI2U2ZDA2Y1wifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNlNmQwNmNcIn0sXCIuc3R5bGUgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNlNmQwNmNcIn0sc2VsZWN0b3I6e2NvbG9yOlwiI2E2ZTIyZFwifSxpbnNlcnRlZDp7Y29sb3I6XCIjYTZlMjJkXCJ9LGF0cnVsZTp7Y29sb3I6XCIjZWYzYjdkXCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiNlZjNiN2RcIn0sa2V5d29yZDp7Y29sb3I6XCIjZWYzYjdkXCJ9LGltcG9ydGFudDp7Y29sb3I6XCIjZWYzYjdkXCIsZm9udFdlaWdodDpcImJvbGRcIn0sZGVsZXRlZDp7Y29sb3I6XCIjZWYzYjdkXCJ9LHJlZ2V4Ontjb2xvcjpcIiM3NmQ5ZTZcIn0sc3RhdGVtZW50Ontjb2xvcjpcIiM3NmQ5ZTZcIixmb250V2VpZ2h0OlwiYm9sZFwifSxwbGFjZWhvbGRlcjp7Y29sb3I6XCIjZmZmXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiNmZmZcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiI2JlYmVjNVwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifSxcImNvZGUubGFuZ3VhZ2UtbWFya3VwXCI6e2NvbG9yOlwiI2Y5ZjlmOVwifSxcImNvZGUubGFuZ3VhZ2UtbWFya3VwIC50b2tlbi50YWdcIjp7Y29sb3I6XCIjZWYzYjdkXCJ9LFwiY29kZS5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLmF0dHItbmFtZVwiOntjb2xvcjpcIiNhNmUyMmRcIn0sXCJjb2RlLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4uYXR0ci12YWx1ZVwiOntjb2xvcjpcIiNlNmQwNmNcIn0sXCJjb2RlLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4uc3R5bGVcIjp7Y29sb3I6XCIjNzZkOWU2XCJ9LFwiY29kZS5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLnNjcmlwdFwiOntjb2xvcjpcIiM3NmQ5ZTZcIn0sXCJjb2RlLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4uc2NyaXB0IC50b2tlbi5rZXl3b3JkXCI6e2NvbG9yOlwiIzc2ZDllNlwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXVtkYXRhLWxpbmVdJzp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHBhZGRpbmc6XCIxZW0gMCAxZW0gM2VtXCJ9LFwicHJlW2RhdGEtbGluZV0gLmxpbmUtaGlnaGxpZ2h0XCI6e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixsZWZ0OlwiMFwiLHJpZ2h0OlwiMFwiLHBhZGRpbmc6XCIwXCIsbWFyZ2luVG9wOlwiMWVtXCIsYmFja2dyb3VuZDpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOClcIixwb2ludGVyRXZlbnRzOlwibm9uZVwiLGxpbmVIZWlnaHQ6XCJpbmhlcml0XCIsd2hpdGVTcGFjZTpcInByZVwifSxcInByZVtkYXRhLWxpbmVdIC5saW5lLWhpZ2hsaWdodDpiZWZvcmVcIjp7Y29udGVudDpcImF0dHIoZGF0YS1zdGFydClcIixwb3NpdGlvbjpcImFic29sdXRlXCIsdG9wOlwiLjRlbVwiLGxlZnQ6XCIuNmVtXCIsbWluV2lkdGg6XCIxZW1cIixwYWRkaW5nOlwiMC4yZW0gMC41ZW1cIixiYWNrZ3JvdW5kQ29sb3I6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNClcIixjb2xvcjpcImJsYWNrXCIsZm9udDpcImJvbGQgNjUlLzEgc2Fucy1zZXJpZlwiLGhlaWdodDpcIjFlbVwiLGxpbmVIZWlnaHQ6XCIxZW1cIix0ZXh0QWxpZ246XCJjZW50ZXJcIixib3JkZXJSYWRpdXM6XCI5OTlweFwiLHRleHRTaGFkb3c6XCJub25lXCIsYm94U2hhZG93OlwiMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KVwifSxcInByZVtkYXRhLWxpbmVdIC5saW5lLWhpZ2hsaWdodFtkYXRhLWVuZF06YWZ0ZXJcIjp7Y29udGVudDpcImF0dHIoZGF0YS1lbmQpXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLHRvcDpcImF1dG9cIixsZWZ0OlwiLjZlbVwiLG1pbldpZHRoOlwiMWVtXCIscGFkZGluZzpcIjAuMmVtIDAuNWVtXCIsYmFja2dyb3VuZENvbG9yOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpXCIsY29sb3I6XCJibGFja1wiLGZvbnQ6XCJib2xkIDY1JS8xIHNhbnMtc2VyaWZcIixoZWlnaHQ6XCIxZW1cIixsaW5lSGVpZ2h0OlwiMWVtXCIsdGV4dEFsaWduOlwiY2VudGVyXCIsYm9yZGVyUmFkaXVzOlwiOTk5cHhcIix0ZXh0U2hhZG93Olwibm9uZVwiLGJveFNoYWRvdzpcIjAgMXB4IDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNylcIixib3R0b206XCIuNGVtXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImdldFN1Z2dlc3RlZEZydWl0U3luY1wiLGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiB1fSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBzKGUpe3JldHVybiBpLmEuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhlLnRvTG93ZXJDYXNlKCkpfSl9ZnVuY3Rpb24gdSgpe3ZhciBlPWwoT2JqZWN0KHIudXNlU3RhdGUpKFtdKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6cyxsYWJlbDpcIllvdXIgZmF2b3VyaXRlIGZydWl0XCIsZnVsbFdpZHRoOiEwfSl9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNjkpLG89big2NzApLGE9big2NzIpLGk9XCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCIsbD1NYXRoLm1heCxzPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHUsYyxkLHAsZixtLGc9MCxoPSExLGI9ITEseT0hMDtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoaSk7ZnVuY3Rpb24gdih0KXt2YXIgbj11LHI9YztyZXR1cm4gdT1jPXZvaWQgMCxnPXQscD1lLmFwcGx5KHIsbil9ZnVuY3Rpb24gUyhlKXt2YXIgbj1lLW07cmV0dXJuIHZvaWQgMD09PW18fG4+PXR8fG48MHx8YiYmZS1nPj1kfWZ1bmN0aW9uIEUoKXt2YXIgZT1vKCk7aWYoUyhlKSlyZXR1cm4geChlKTtmPXNldFRpbWVvdXQoRSxmdW5jdGlvbihlKXt2YXIgbj10LShlLW0pO3JldHVybiBiP3MobixkLShlLWcpKTpufShlKSl9ZnVuY3Rpb24geChlKXtyZXR1cm4gZj12b2lkIDAseSYmdT92KGUpOih1PWM9dm9pZCAwLHApfWZ1bmN0aW9uIHcoKXt2YXIgZT1vKCksbj1TKGUpO2lmKHU9YXJndW1lbnRzLGM9dGhpcyxtPWUsbil7aWYodm9pZCAwPT09ZilyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGc9ZSxmPXNldFRpbWVvdXQoRSx0KSxoP3YoZSk6cH0obSk7aWYoYilyZXR1cm4gZj1zZXRUaW1lb3V0KEUsdCksdihtKX1yZXR1cm4gdm9pZCAwPT09ZiYmKGY9c2V0VGltZW91dChFLHQpKSxwfXJldHVybiB0PWEodCl8fDAscihuKSYmKGg9ISFuLmxlYWRpbmcsZD0oYj1cIm1heFdhaXRcImluIG4pP2woYShuLm1heFdhaXQpfHwwLHQpOmQseT1cInRyYWlsaW5nXCJpbiBuPyEhbi50cmFpbGluZzp5KSx3LmNhbmNlbD1mdW5jdGlvbigpe3ZvaWQgMCE9PWYmJmNsZWFyVGltZW91dChmKSxnPTAsdT1tPWM9Zj12b2lkIDB9LHcuZmx1c2g9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09Zj9wOngobygpKX0sd319LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE3MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuRGF0ZS5ub3coKX19LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7dmFyIG49XCJvYmplY3RcIj09dHlwZW9mIHQmJnQmJnQuT2JqZWN0PT09T2JqZWN0JiZ0O2UuZXhwb3J0cz1ufSkuY2FsbCh0aGlzLG4oMjcpKX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTY5KSxvPW4oNjczKSxhPU5hTixpPS9eXFxzK3xcXHMrJC9nLGw9L15bLStdMHhbMC05YS1mXSskL2kscz0vXjBiWzAxXSskL2ksdT0vXjBvWzAtN10rJC9pLGM9cGFyc2VJbnQ7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBlO2lmKG8oZSkpcmV0dXJuIGE7aWYocihlKSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgZS52YWx1ZU9mP2UudmFsdWVPZigpOmU7ZT1yKHQpP3QrXCJcIjp0fWlmKFwic3RyaW5nXCIhPXR5cGVvZiBlKXJldHVybiAwPT09ZT9lOitlO2U9ZS5yZXBsYWNlKGksXCJcIik7dmFyIG49cy50ZXN0KGUpO3JldHVybiBufHx1LnRlc3QoZSk/YyhlLnNsaWNlKDIpLG4/Mjo4KTpsLnRlc3QoZSk/YTorZX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDY3NCksbz1uKDY3NyksYT1cIltvYmplY3QgU3ltYm9sXVwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgZXx8byhlKSYmcihlKT09YX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE3MSksbz1uKDY3NSksYT1uKDY3NiksaT1cIltvYmplY3QgTnVsbF1cIixsPVwiW29iamVjdCBVbmRlZmluZWRdXCIscz1yP3IudG9TdHJpbmdUYWc6dm9pZCAwO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA9PT1lP2w6aTpzJiZzIGluIE9iamVjdChlKT9vKGUpOmEoZSl9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNzEpLG89T2JqZWN0LnByb3RvdHlwZSxhPW8uaGFzT3duUHJvcGVydHksaT1vLnRvU3RyaW5nLGw9cj9yLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YS5jYWxsKGUsbCksbj1lW2xdO3RyeXtlW2xdPXZvaWQgMDt2YXIgcj0hMH1jYXRjaChlKXt9dmFyIG89aS5jYWxsKGUpO3JldHVybiByJiYodD9lW2xdPW46ZGVsZXRlIGVbbF0pLG99fSxmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuLmNhbGwoZSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmXCJvYmplY3RcIj09dHlwZW9mIGV9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LFwiZGVmYXVsdFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHN9KTt2YXIgcj1uKDApLG89bi5uKHIpLGE9bigxMSksaT1uKDEwKTtmdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPVtdLHI9ITAsbz0hMSxhPXZvaWQgMDt0cnl7Zm9yKHZhciBpLGw9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPShpPWwubmV4dCgpKS5kb25lKSYmKG4ucHVzaChpLnZhbHVlKSwhdHx8bi5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7bz0hMCxhPWV9ZmluYWxseXt0cnl7cnx8bnVsbD09bC5yZXR1cm58fGwucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IGF9fXJldHVybiBufShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfSgpfWZ1bmN0aW9uIHMoKXt2YXIgZT1sKE9iamVjdChyLnVzZVN0YXRlKShpLmEpLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczppLmIsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMH0pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiBzfSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBzKCl7dmFyIGU9bChPYmplY3Qoci51c2VTdGF0ZSkoaS5hLnNsaWNlKDAsMikpLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczppLmIsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMCxkaXNhYmxlZDohMH0pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiBzfSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBzKCl7dmFyIGU9bChPYmplY3Qoci51c2VTdGF0ZSkoaS5hLnNsaWNlKDAsMikpLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczppLmIsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMCxlcnJvcjohMH0pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiBkfSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCksbD1uKDE4KTtmdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPVtdLHI9ITAsbz0hMSxhPXZvaWQgMDt0cnl7Zm9yKHZhciBpLGw9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPShpPWwubmV4dCgpKS5kb25lKSYmKG4ucHVzaChpLnZhbHVlKSwhdHx8bi5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7bz0hMCxhPWV9ZmluYWxseXt0cnl7cnx8bnVsbD09bC5yZXR1cm58fGwucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IGF9fXJldHVybiBufShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfSgpfXZhciB1PTM7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZS5sZW5ndGg+PXU/T2JqZWN0KGkuYikoZSk6bC5ifWZ1bmN0aW9uIGQoKXt2YXIgZT1zKE9iamVjdChyLnVzZVN0YXRlKShbXSksMiksdD1lWzBdLG49ZVsxXTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoYS5hLHt2YWx1ZTp0LG9uQ2hhbmdlOm4saXRlbVRvU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWV9LGdldFN1Z2dlc3RlZEl0ZW1zOmMsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMH0pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiBzfSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBzKCl7dmFyIGU9bChPYmplY3Qoci51c2VTdGF0ZSkoW10pLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczppLmIsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMCxtYXhEcm9wZG93bkhlaWdodDoyNTB9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gY30pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9dmFyIHM9ODAwO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIGUubGVuZ3RoP25ldyBQcm9taXNlKGZ1bmN0aW9uKHQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gdChPYmplY3QoaS5iKShlKSl9LHMpfSk6UHJvbWlzZS5yZXNvbHZlKFtdKX1mdW5jdGlvbiBjKCl7dmFyIGU9bChPYmplY3Qoci51c2VTdGF0ZSkoW10pLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczp1LGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITB9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gZH0pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9dmFyIHM9ODAwLHU9NTAwO2Z1bmN0aW9uIGMoZSl7cmV0dXJuIGUubGVuZ3RoP25ldyBQcm9taXNlKGZ1bmN0aW9uKHQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gdChPYmplY3QoaS5iKShlKSl9LHMpfSk6UHJvbWlzZS5yZXNvbHZlKFtdKX1mdW5jdGlvbiBkKCl7dmFyIGU9bChPYmplY3Qoci51c2VTdGF0ZSkoW10pLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczpjLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmZXRjaERlbGF5OnUsZnVsbFdpZHRoOiEwfSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LFwiZGVmYXVsdFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHV9KTt2YXIgcj1uKDApLG89bi5uKHIpLGE9bigxMSk7ZnVuY3Rpb24gaShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX12YXIgbD04MDA7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZS5sZW5ndGg/bmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHQobmV3IEVycm9yKFwiU3VnZ2VzdGlvbiBmZXRjaCBmYWlsZWQhXCIpKX0sbCl9KTpQcm9taXNlLnJlc29sdmUoW10pfWZ1bmN0aW9uIHUoKXt2YXIgZT1pKE9iamVjdChyLnVzZVN0YXRlKShbXSksMiksdD1lWzBdLG49ZVsxXTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoYS5hLHt2YWx1ZTp0LG9uQ2hhbmdlOm4saXRlbVRvU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWV9LGdldFN1Z2dlc3RlZEl0ZW1zOnMsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMH0pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiBjfSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBzKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9MCxuPW5ldyBBcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspblt0XT1lW3RdO3JldHVybiBufX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSl8fFwiW29iamVjdCBBcmd1bWVudHNdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiB1KGUpe3ZhciB0PU9iamVjdChpLmIpKGUpO3JldHVybiB0Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSkuaW5jbHVkZXMoZSl8fDA9PT1lLmxlbmd0aD90OltdLmNvbmNhdChzKHQpLFt7bmFtZTplfV0pfWZ1bmN0aW9uIGMoKXt2YXIgZT1sKE9iamVjdChyLnVzZVN0YXRlKShbXSksMiksdD1lWzBdLG49ZVsxXTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoYS5hLHt2YWx1ZTp0LG9uQ2hhbmdlOm4saXRlbVRvU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWV9LGdldFN1Z2dlc3RlZEl0ZW1zOnUsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMH0pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiBzfSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBzKCl7dmFyIGU9bChPYmplY3Qoci51c2VTdGF0ZSkoW10pLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczppLmIsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMCxoZWxwZXJUZXh0OlwiVGVsbCB1cyB3aGF0IGZydWl0cyB5b3UgcmVhbGx5IGxpa2VcIn0pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiBzfSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBzKCl7dmFyIGU9bChPYmplY3Qoci51c2VTdGF0ZSkoW10pLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczppLmIsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMCxyZXF1aXJlZDohMH0pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiBzfSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBzKCl7dmFyIGU9bChPYmplY3Qoci51c2VTdGF0ZSkoW10pLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczppLmIsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMCx2YXJpYW50Olwib3V0bGluZWRcIn0pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiBmfSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMyksaT1uKDExKSxsPW4oMTApLHM9bigyMDEpLHU9bi5uKHMpLGM9bigxKTtmdW5jdGlvbiBkKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPVtdLHI9ITAsbz0hMSxhPXZvaWQgMDt0cnl7Zm9yKHZhciBpLGw9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPShpPWwubmV4dCgpKS5kb25lKSYmKG4ucHVzaChpLnZhbHVlKSwhdHx8bi5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7bz0hMCxhPWV9ZmluYWxseXt0cnl7cnx8bnVsbD09bC5yZXR1cm58fGwucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IGF9fXJldHVybiBufShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfSgpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9ZS5pdGVtLG49ZS5pc0hpZ2hsaWdodGVkLHI9ZS5pbnB1dFZhbHVlLGk9e2Rpc3BsYXk6XCJmbGV4XCIsYmFja2dyb3VuZENvbG9yOm4/XCIjYWFhXCI6XCIjZmZmXCIsd2lkdGg6XCIxMDAlXCJ9O3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTppfSxvLmEuY3JlYXRlRWxlbWVudChcImltZ1wiLHtzcmM6dC5pbWFnZSxzdHlsZTp7aGVpZ2h0OlwiNDJweFwiLHdpZHRoOlwiNDJweFwifX0pLG8uYS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0eWxlOntmbGV4OlwiMSAxIDBcIn19LG8uYS5jcmVhdGVFbGVtZW50KGEudyx7dmFyaWFudDpcImg2XCJ9LG8uYS5jcmVhdGVFbGVtZW50KHUuYSx7aGlnaGxpZ2h0U3R5bGU6e2JhY2tncm91bmRDb2xvcjpcIiNmZjJcIn0sc2VhcmNoV29yZHM6W3JdLHRleHRUb0hpZ2hsaWdodDp0Lm5hbWV9KSxvLmEuY3JlYXRlRWxlbWVudChcInNtYWxsXCIsbnVsbCxcIsKgKFwiLHQuc3RvY2ssXCIgaW4gc3RvY2spXCIpKSxvLmEuY3JlYXRlRWxlbWVudChhLncsbnVsbCx0LmRldGFpbCkpKX1mdW5jdGlvbiBmKCl7dmFyIGU9ZChPYmplY3Qoci51c2VTdGF0ZSkoW10pLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGkuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczpsLmIsU3VnZ2VzdGlvbkNvbXBvbmVudDpwLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITB9KX1wLnByb3BUeXBlcz17aXRlbTpjLm9iamVjdC5pc1JlcXVpcmVkLGlzSGlnaGxpZ2h0ZWQ6Yy5ib29sLGlucHV0VmFsdWU6Yy5zdHJpbmcuaXNSZXF1aXJlZH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gZn0pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDMpLGk9bigxMSksbD1uKDEwKTtmdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPVtdLHI9ITAsbz0hMSxhPXZvaWQgMDt0cnl7Zm9yKHZhciBpLGw9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPShpPWwubmV4dCgpKS5kb25lKSYmKG4ucHVzaChpLnZhbHVlKSwhdHx8bi5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7bz0hMCxhPWV9ZmluYWxseXt0cnl7cnx8bnVsbD09bC5yZXR1cm58fGwucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IGF9fXJldHVybiBufShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfSgpfXZhciB1PTMsYz1mdW5jdGlvbihlKXtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoYS5hLHthbHQ6ZS5uYW1lLHNyYzplLmltYWdlfSl9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0eWxlOntkaXNwbGF5OlwiZmxleFwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIixwYWRkaW5nOlwiNHB4IDhweFwifX0sby5hLmNyZWF0ZUVsZW1lbnQoXCJpbWdcIix7c3JjOmUuaW1hZ2Usc3R5bGU6e2hlaWdodDpcIjIwcHhcIix3aWR0aDpcIjIwcHhcIn19KSxvLmEuY3JlYXRlRWxlbWVudChhLncse3ZhcmlhbnQ6XCJzdWJ0aXRsZTFcIn0sZS5kZXRhaWwpKX0scD1mdW5jdGlvbihlKXtyZXR1cm5cIlwiLmNvbmNhdChlLm5hbWUsXCIgKFwiKS5jb25jYXQoZS5zdG9jayxcIilcIil9O2Z1bmN0aW9uIGYoKXt2YXIgZT1zKE9iamVjdChyLnVzZVN0YXRlKShsLmEuc2xpY2UoMCx1KSksMiksdD1lWzBdLG49ZVsxXTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoaS5hLHt2YWx1ZTp0LG9uQ2hhbmdlOm4saXRlbVRvU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWV9LGdldFN1Z2dlc3RlZEl0ZW1zOmwuYixjaGlwQ29sb3I6XCJwcmltYXJ5XCIsaXRlbVRvQXZhdGFyOmMsaXRlbVRvTGFiZWw6cCxpdGVtVG9Qb3BvdmVyOmQsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMH0pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiBjfSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX12YXIgcz0yZTM7ZnVuY3Rpb24gdShlKXtyZXR1cm4gZS5sZW5ndGg/bmV3IFByb21pc2UoZnVuY3Rpb24odCl7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB0KE9iamVjdChpLmIpKGUpKX0scyl9KTpQcm9taXNlLnJlc29sdmUoW10pfWZ1bmN0aW9uIGMoKXt2YXIgZT1sKE9iamVjdChyLnVzZVN0YXRlKShbXSksMiksdD1lWzBdLG49ZVsxXSxpPWwoT2JqZWN0KHIudXNlU3RhdGUpKFtdKSwyKSxzPWlbMF0sYz1pWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChvLmEuRnJhZ21lbnQsbnVsbCxvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6dSx1c2VHbG9iYWxDYWNoZTpcInNoYXJlZC1mcnVpdFwiLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXQgMVwiLGZ1bGxXaWR0aDohMH0pLG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6cyxvbkNoYW5nZTpjLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczp1LHVzZUdsb2JhbENhY2hlOlwic2hhcmVkLWZydWl0XCIsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdCAyXCIsZnVsbFdpZHRoOiEwfSkpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImdldFN1Z2dlc3RlZEZydWl0U3luY1wiLGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiB1fSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBzKGUpe3JldHVybiBpLmEuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhlLnRvTG93ZXJDYXNlKCkpfSl9ZnVuY3Rpb24gdSgpe3ZhciBlPWwoT2JqZWN0KHIudXNlU3RhdGUpKFtdKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6cyxsYWJlbDpcIllvdXIgZmF2b3VyaXRlIGZydWl0XCIsY2xlYXJJbnB1dE9uQmx1cjohMCxmdWxsV2lkdGg6ITB9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNmM2U1ZjVcIiwxMDA6XCIjZTFiZWU3XCIsMjAwOlwiI2NlOTNkOFwiLDMwMDpcIiNiYTY4YzhcIiw0MDA6XCIjYWI0N2JjXCIsNTAwOlwiIzljMjdiMFwiLDYwMDpcIiM4ZTI0YWFcIiw3MDA6XCIjN2IxZmEyXCIsODAwOlwiIzZhMWI5YVwiLDkwMDpcIiM0YTE0OGNcIixBMTAwOlwiI2VhODBmY1wiLEEyMDA6XCIjZTA0MGZiXCIsQTQwMDpcIiNkNTAwZjlcIixBNzAwOlwiI2FhMDBmZlwifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2VkZTdmNlwiLDEwMDpcIiNkMWM0ZTlcIiwyMDA6XCIjYjM5ZGRiXCIsMzAwOlwiIzk1NzVjZFwiLDQwMDpcIiM3ZTU3YzJcIiw1MDA6XCIjNjczYWI3XCIsNjAwOlwiIzVlMzViMVwiLDcwMDpcIiM1MTJkYThcIiw4MDA6XCIjNDUyN2EwXCIsOTAwOlwiIzMxMWI5MlwiLEExMDA6XCIjYjM4OGZmXCIsQTIwMDpcIiM3YzRkZmZcIixBNDAwOlwiIzY1MWZmZlwiLEE3MDA6XCIjNjIwMGVhXCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZTNmMmZkXCIsMTAwOlwiI2JiZGVmYlwiLDIwMDpcIiM5MGNhZjlcIiwzMDA6XCIjNjRiNWY2XCIsNDAwOlwiIzQyYTVmNVwiLDUwMDpcIiMyMTk2ZjNcIiw2MDA6XCIjMWU4OGU1XCIsNzAwOlwiIzE5NzZkMlwiLDgwMDpcIiMxNTY1YzBcIiw5MDA6XCIjMGQ0N2ExXCIsQTEwMDpcIiM4MmIxZmZcIixBMjAwOlwiIzQ0OGFmZlwiLEE0MDA6XCIjMjk3OWZmXCIsQTcwMDpcIiMyOTYyZmZcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNlMWY1ZmVcIiwxMDA6XCIjYjNlNWZjXCIsMjAwOlwiIzgxZDRmYVwiLDMwMDpcIiM0ZmMzZjdcIiw0MDA6XCIjMjliNmY2XCIsNTAwOlwiIzAzYTlmNFwiLDYwMDpcIiMwMzliZTVcIiw3MDA6XCIjMDI4OGQxXCIsODAwOlwiIzAyNzdiZFwiLDkwMDpcIiMwMTU3OWJcIixBMTAwOlwiIzgwZDhmZlwiLEEyMDA6XCIjNDBjNGZmXCIsQTQwMDpcIiMwMGIwZmZcIixBNzAwOlwiIzAwOTFlYVwifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2UwZjdmYVwiLDEwMDpcIiNiMmViZjJcIiwyMDA6XCIjODBkZWVhXCIsMzAwOlwiIzRkZDBlMVwiLDQwMDpcIiMyNmM2ZGFcIiw1MDA6XCIjMDBiY2Q0XCIsNjAwOlwiIzAwYWNjMVwiLDcwMDpcIiMwMDk3YTdcIiw4MDA6XCIjMDA4MzhmXCIsOTAwOlwiIzAwNjA2NFwiLEExMDA6XCIjODRmZmZmXCIsQTIwMDpcIiMxOGZmZmZcIixBNDAwOlwiIzAwZTVmZlwiLEE3MDA6XCIjMDBiOGQ0XCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZTBmMmYxXCIsMTAwOlwiI2IyZGZkYlwiLDIwMDpcIiM4MGNiYzRcIiwzMDA6XCIjNGRiNmFjXCIsNDAwOlwiIzI2YTY5YVwiLDUwMDpcIiMwMDk2ODhcIiw2MDA6XCIjMDA4OTdiXCIsNzAwOlwiIzAwNzk2YlwiLDgwMDpcIiMwMDY5NWNcIiw5MDA6XCIjMDA0ZDQwXCIsQTEwMDpcIiNhN2ZmZWJcIixBMjAwOlwiIzY0ZmZkYVwiLEE0MDA6XCIjMWRlOWI2XCIsQTcwMDpcIiMwMGJmYTVcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNlOGY1ZTlcIiwxMDA6XCIjYzhlNmM5XCIsMjAwOlwiI2E1ZDZhN1wiLDMwMDpcIiM4MWM3ODRcIiw0MDA6XCIjNjZiYjZhXCIsNTAwOlwiIzRjYWY1MFwiLDYwMDpcIiM0M2EwNDdcIiw3MDA6XCIjMzg4ZTNjXCIsODAwOlwiIzJlN2QzMlwiLDkwMDpcIiMxYjVlMjBcIixBMTAwOlwiI2I5ZjZjYVwiLEEyMDA6XCIjNjlmMGFlXCIsQTQwMDpcIiMwMGU2NzZcIixBNzAwOlwiIzAwYzg1M1wifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2YxZjhlOVwiLDEwMDpcIiNkY2VkYzhcIiwyMDA6XCIjYzVlMWE1XCIsMzAwOlwiI2FlZDU4MVwiLDQwMDpcIiM5Y2NjNjVcIiw1MDA6XCIjOGJjMzRhXCIsNjAwOlwiIzdjYjM0MlwiLDcwMDpcIiM2ODlmMzhcIiw4MDA6XCIjNTU4YjJmXCIsOTAwOlwiIzMzNjkxZVwiLEExMDA6XCIjY2NmZjkwXCIsQTIwMDpcIiNiMmZmNTlcIixBNDAwOlwiIzc2ZmYwM1wiLEE3MDA6XCIjNjRkZDE3XCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZjlmYmU3XCIsMTAwOlwiI2YwZjRjM1wiLDIwMDpcIiNlNmVlOWNcIiwzMDA6XCIjZGNlNzc1XCIsNDAwOlwiI2Q0ZTE1N1wiLDUwMDpcIiNjZGRjMzlcIiw2MDA6XCIjYzBjYTMzXCIsNzAwOlwiI2FmYjQyYlwiLDgwMDpcIiM5ZTlkMjRcIiw5MDA6XCIjODI3NzE3XCIsQTEwMDpcIiNmNGZmODFcIixBMjAwOlwiI2VlZmY0MVwiLEE0MDA6XCIjYzZmZjAwXCIsQTcwMDpcIiNhZWVhMDBcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNmZmZkZTdcIiwxMDA6XCIjZmZmOWM0XCIsMjAwOlwiI2ZmZjU5ZFwiLDMwMDpcIiNmZmYxNzZcIiw0MDA6XCIjZmZlZTU4XCIsNTAwOlwiI2ZmZWIzYlwiLDYwMDpcIiNmZGQ4MzVcIiw3MDA6XCIjZmJjMDJkXCIsODAwOlwiI2Y5YTgyNVwiLDkwMDpcIiNmNTdmMTdcIixBMTAwOlwiI2ZmZmY4ZFwiLEEyMDA6XCIjZmZmZjAwXCIsQTQwMDpcIiNmZmVhMDBcIixBNzAwOlwiI2ZmZDYwMFwifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2ZmZjhlMVwiLDEwMDpcIiNmZmVjYjNcIiwyMDA6XCIjZmZlMDgyXCIsMzAwOlwiI2ZmZDU0ZlwiLDQwMDpcIiNmZmNhMjhcIiw1MDA6XCIjZmZjMTA3XCIsNjAwOlwiI2ZmYjMwMFwiLDcwMDpcIiNmZmEwMDBcIiw4MDA6XCIjZmY4ZjAwXCIsOTAwOlwiI2ZmNmYwMFwiLEExMDA6XCIjZmZlNTdmXCIsQTIwMDpcIiNmZmQ3NDBcIixBNDAwOlwiI2ZmYzQwMFwiLEE3MDA6XCIjZmZhYjAwXCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZmZmM2UwXCIsMTAwOlwiI2ZmZTBiMlwiLDIwMDpcIiNmZmNjODBcIiwzMDA6XCIjZmZiNzRkXCIsNDAwOlwiI2ZmYTcyNlwiLDUwMDpcIiNmZjk4MDBcIiw2MDA6XCIjZmI4YzAwXCIsNzAwOlwiI2Y1N2MwMFwiLDgwMDpcIiNlZjZjMDBcIiw5MDA6XCIjZTY1MTAwXCIsQTEwMDpcIiNmZmQxODBcIixBMjAwOlwiI2ZmYWI0MFwiLEE0MDA6XCIjZmY5MTAwXCIsQTcwMDpcIiNmZjZkMDBcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNmYmU5ZTdcIiwxMDA6XCIjZmZjY2JjXCIsMjAwOlwiI2ZmYWI5MVwiLDMwMDpcIiNmZjhhNjVcIiw0MDA6XCIjZmY3MDQzXCIsNTAwOlwiI2ZmNTcyMlwiLDYwMDpcIiNmNDUxMWVcIiw3MDA6XCIjZTY0YTE5XCIsODAwOlwiI2Q4NDMxNVwiLDkwMDpcIiNiZjM2MGNcIixBMTAwOlwiI2ZmOWU4MFwiLEEyMDA6XCIjZmY2ZTQwXCIsQTQwMDpcIiNmZjNkMDBcIixBNzAwOlwiI2RkMmMwMFwifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2VmZWJlOVwiLDEwMDpcIiNkN2NjYzhcIiwyMDA6XCIjYmNhYWE0XCIsMzAwOlwiI2ExODg3ZlwiLDQwMDpcIiM4ZDZlNjNcIiw1MDA6XCIjNzk1NTQ4XCIsNjAwOlwiIzZkNGM0MVwiLDcwMDpcIiM1ZDQwMzdcIiw4MDA6XCIjNGUzNDJlXCIsOTAwOlwiIzNlMjcyM1wiLEExMDA6XCIjZDdjY2M4XCIsQTIwMDpcIiNiY2FhYTRcIixBNDAwOlwiIzhkNmU2M1wiLEE3MDA6XCIjNWQ0MDM3XCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZWNlZmYxXCIsMTAwOlwiI2NmZDhkY1wiLDIwMDpcIiNiMGJlYzVcIiwzMDA6XCIjOTBhNGFlXCIsNDAwOlwiIzc4OTA5Y1wiLDUwMDpcIiM2MDdkOGJcIiw2MDA6XCIjNTQ2ZTdhXCIsNzAwOlwiIzQ1NWE2NFwiLDgwMDpcIiMzNzQ3NGZcIiw5MDA6XCIjMjYzMjM4XCIsQTEwMDpcIiNjZmQ4ZGNcIixBMjAwOlwiI2IwYmVjNVwiLEE0MDA6XCIjNzg5MDljXCIsQTcwMDpcIiM0NTVhNjRcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMjIpLGk9bigxOSksbD1uKDMpLHM9big0MCksdT1uKDQxKSxjPW4oMTgzKSxkPW4ubihjKSxwPW4oNTcpLGY9e3RhYmxlOmwucSx0YWJsZUhlYWQ6bC50LHRhYmxlQm9keTpsLnIsdGFibGVSb3c6bC51LHRhYmxlQ2VsbDpPYmplY3QocC5jdXJyeUhhcmQpKG8uYS5jcmVhdGVFbGVtZW50KGwucyx7YWxpZ246XCJpbmhlcml0XCJ9KSkscGFyYWdyYXBoOk9iamVjdChwLmN1cnJ5SGFyZCkoby5hLmNyZWF0ZUVsZW1lbnQobC53LHt2YXJpYW50OlwiYm9keTFcIixjb21wb25lbnQ6XCJwXCJ9KSl9LG09T2JqZWN0KHAuY3VycnlIYXJkKShvLmEuY3JlYXRlRWxlbWVudChkLmEse3JlbmRlcmVyczpmfSkpLGc9big1KSxoPW4ubihnKSxiPW4oNCkseT1uLm4oYiksdj1uKDU4KSxTPW4ubih2KTtmdW5jdGlvbiBFKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO3JldHVybiBlLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBTKCkoe30sZSxuW3RdKX0sdCl9ZnVuY3Rpb24geChlKXt2YXIgdCxuPWUubm9kZSxyPWUuc3R5bGVzaGVldCxhPWUuc3R5bGUsaT12b2lkIDA9PT1hP3t9OmEsbD1lLnVzZUlubGluZVN0eWxlcyxzPWUua2V5LHU9bi5wcm9wZXJ0aWVzLGM9bi50eXBlLGQ9bi50YWdOYW1lLHA9bi52YWx1ZTtpZihcInRleHRcIj09PWMpcmV0dXJuIHA7aWYoZCl7dmFyIGY9ZnVuY3Rpb24oZSx0KXt2YXIgbj0wO3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbis9MSxyLm1hcChmdW5jdGlvbihyLG8pe3JldHVybiB4KHtub2RlOnIsc3R5bGVzaGVldDplLHVzZUlubGluZVN0eWxlczp0LGtleTpcImNvZGUtc2VnbWVudC1cIi5jb25jYXQobixcIi1cIikuY29uY2F0KG8pfSl9KX19KHIsbCksbT1sJiZ1LmNsYXNzTmFtZSYmdS5jbGFzc05hbWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFyW2VdfSksZz1tJiZtLmxlbmd0aD9tOnZvaWQgMCxoPWw/UygpKHt9LHUse2NsYXNzTmFtZTpnfSx7c3R5bGU6RSh1LmNsYXNzTmFtZSxPYmplY3QuYXNzaWduKHt9LHUuc3R5bGUsaSkscil9KTpTKCkoe30sdSx7Y2xhc3NOYW1lOih0PXUuY2xhc3NOYW1lLHQuam9pbihcIiBcIikpfSksYj1mKG4uY2hpbGRyZW4pO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChkLHkoKSh7a2V5OnN9LGgpLGIpfX12YXIgdz0vXFxuL2c7ZnVuY3Rpb24gayhlKXt2YXIgdD1lLmNvZGVTdHJpbmcsbj1lLmNvZGVTdHlsZSxyPWUuY29udGFpbmVyU3R5bGUsYT12b2lkIDA9PT1yP3tmbG9hdDpcImxlZnRcIixwYWRkaW5nUmlnaHQ6XCIxMHB4XCJ9OnIsaT1lLm51bWJlclN0eWxlLGw9dm9pZCAwPT09aT97fTppLHM9ZS5zdGFydGluZ0xpbmVOdW1iZXI7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KFwiY29kZVwiLHtzdHlsZTpPYmplY3QuYXNzaWduKHt9LG4sYSl9LGZ1bmN0aW9uKGUpe3ZhciB0PWUubGluZXMsbj1lLnN0YXJ0aW5nTGluZU51bWJlcixyPWUuc3R5bGU7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIGE9dCtuO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChcInNwYW5cIix7a2V5OlwibGluZS1cIi5jb25jYXQodCksY2xhc3NOYW1lOlwicmVhY3Qtc3ludGF4LWhpZ2hsaWdodGVyLWxpbmUtbnVtYmVyXCIsc3R5bGU6XCJmdW5jdGlvblwiPT10eXBlb2Ygcj9yKGEpOnJ9LFwiXCIuY29uY2F0KGEsXCJcXG5cIikpfSl9KHtsaW5lczp0LnJlcGxhY2UoL1xcbiQvLFwiXCIpLnNwbGl0KFwiXFxuXCIpLHN0eWxlOmwsc3RhcnRpbmdMaW5lTnVtYmVyOnN9KSl9ZnVuY3Rpb24gXyhlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5saW5lTnVtYmVyLHI9ZS5saW5lUHJvcHMsbz1lLmNsYXNzTmFtZSxhPXZvaWQgMD09PW8/W106byxpPShcImZ1bmN0aW9uXCI9PXR5cGVvZiByP3Iobik6cil8fHt9O3JldHVybiBpLmNsYXNzTmFtZT1pLmNsYXNzTmFtZT9hLmNvbmNhdChpLmNsYXNzTmFtZSk6YSx7dHlwZTpcImVsZW1lbnRcIix0YWdOYW1lOlwic3BhblwiLHByb3BlcnRpZXM6aSxjaGlsZHJlbjp0fX1mdW5jdGlvbiBUKGUsdCl7Zm9yKHZhciBuPWZ1bmN0aW9uIGUodCl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSxyPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpbXSxvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBhPXRbb107aWYoXCJ0ZXh0XCI9PT1hLnR5cGUpci5wdXNoKF8oe2NoaWxkcmVuOlthXSxjbGFzc05hbWU6bn0pKTtlbHNlIGlmKGEuY2hpbGRyZW4pe3ZhciBpPW4uY29uY2F0KGEucHJvcGVydGllcy5jbGFzc05hbWUpO3I9ci5jb25jYXQoZShhLmNoaWxkcmVuLGkpKX19cmV0dXJuIHJ9KGUudmFsdWUpLHI9W10sbz0tMSxhPTAsaT1mdW5jdGlvbigpe3ZhciBlPW5bYV0saT1lLmNoaWxkcmVuWzBdLnZhbHVlO2lmKGkubWF0Y2godykpe3ZhciBsPWkuc3BsaXQoXCJcXG5cIik7bC5mb3JFYWNoKGZ1bmN0aW9uKGkscyl7dmFyIHU9ci5sZW5ndGgrMSxjPXt0eXBlOlwidGV4dFwiLHZhbHVlOlwiXCIuY29uY2F0KGksXCJcXG5cIil9O2lmKDA9PT1zKXt2YXIgZD1uLnNsaWNlKG8rMSxhKS5jb25jYXQoXyh7Y2hpbGRyZW46W2NdLGNsYXNzTmFtZTplLnByb3BlcnRpZXMuY2xhc3NOYW1lfSkpO3IucHVzaChfKHtjaGlsZHJlbjpkLGxpbmVOdW1iZXI6dSxsaW5lUHJvcHM6dH0pKX1lbHNlIGlmKHM9PT1sLmxlbmd0aC0xKXtpZihuW2ErMV0mJm5bYSsxXS5jaGlsZHJlbiYmblthKzFdLmNoaWxkcmVuWzBdKXt2YXIgcD1fKHtjaGlsZHJlbjpbe3R5cGU6XCJ0ZXh0XCIsdmFsdWU6XCJcIi5jb25jYXQoaSl9XSxjbGFzc05hbWU6ZS5wcm9wZXJ0aWVzLmNsYXNzTmFtZX0pO24uc3BsaWNlKGErMSwwLHApfWVsc2Ugci5wdXNoKF8oe2NoaWxkcmVuOltjXSxsaW5lTnVtYmVyOnUsbGluZVByb3BzOnQsY2xhc3NOYW1lOmUucHJvcGVydGllcy5jbGFzc05hbWV9KSl9ZWxzZSByLnB1c2goXyh7Y2hpbGRyZW46W2NdLGxpbmVOdW1iZXI6dSxsaW5lUHJvcHM6dCxjbGFzc05hbWU6ZS5wcm9wZXJ0aWVzLmNsYXNzTmFtZX0pKX0pLG89YX1hKyt9O2E8bi5sZW5ndGg7KWkoKTtpZihvIT09bi5sZW5ndGgtMSl7dmFyIGw9bi5zbGljZShvKzEsbi5sZW5ndGgpO2wmJmwubGVuZ3RoJiZyLnB1c2goXyh7Y2hpbGRyZW46bCxsaW5lTnVtYmVyOnIubGVuZ3RoKzEsbGluZVByb3BzOnR9KSl9cmV0dXJuIHJ9ZnVuY3Rpb24gQShlKXt2YXIgdD1lLnJvd3Msbj1lLnN0eWxlc2hlZXQscj1lLnVzZUlubGluZVN0eWxlcztyZXR1cm4gdC5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh7bm9kZTplLHN0eWxlc2hlZXQ6bix1c2VJbmxpbmVTdHlsZXM6cixrZXk6XCJjb2RlLXNlZ2VtZW50XCIuY29uY2F0KHQpfSl9KX12YXIgQyxPLEk9bigxODUpLE49KEM9bi5uKEkpLmEsTz17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCJibGFja1wiLGJhY2tncm91bmQ6XCJub25lXCIsdGV4dFNoYWRvdzpcIjAgMXB4IHdoaXRlXCIsZm9udEZhbWlseTpcIkNvbnNvbGFzLCBNb25hY28sICdBbmRhbGUgTW9ubycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZVwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiYmxhY2tcIixiYWNrZ3JvdW5kOlwiI2Y1ZjJmMFwiLHRleHRTaGFkb3c6XCIwIDFweCB3aGl0ZVwiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntiYWNrZ3JvdW5kOlwiI2Y1ZjJmMFwiLHBhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwiLHdoaXRlU3BhY2U6XCJub3JtYWxcIn0sY29tbWVudDp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0scHJvbG9nOntjb2xvcjpcInNsYXRlZ3JheVwifSxkb2N0eXBlOntjb2xvcjpcInNsYXRlZ3JheVwifSxjZGF0YTp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiIzk5OVwifSxcIi5uYW1lc3BhY2VcIjp7T3BhY2l0eTpcIi43XCJ9LHByb3BlcnR5Ontjb2xvcjpcIiM5MDVcIn0sdGFnOntjb2xvcjpcIiM5MDVcIn0sYm9vbGVhbjp7Y29sb3I6XCIjOTA1XCJ9LG51bWJlcjp7Y29sb3I6XCIjOTA1XCJ9LGNvbnN0YW50Ontjb2xvcjpcIiM5MDVcIn0sc3ltYm9sOntjb2xvcjpcIiM5MDVcIn0sZGVsZXRlZDp7Y29sb3I6XCIjOTA1XCJ9LHNlbGVjdG9yOntjb2xvcjpcIiM2OTBcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjNjkwXCJ9LHN0cmluZzp7Y29sb3I6XCIjNjkwXCJ9LGNoYXI6e2NvbG9yOlwiIzY5MFwifSxidWlsdGluOntjb2xvcjpcIiM2OTBcIn0saW5zZXJ0ZWQ6e2NvbG9yOlwiIzY5MFwifSxvcGVyYXRvcjp7Y29sb3I6XCIjOWE2ZTNhXCIsYmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwifSxlbnRpdHk6e2NvbG9yOlwiIzlhNmUzYVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCAxMDAlLCAuNSlcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCIjOWE2ZTNhXCIsYmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiM5YTZlM2FcIixiYWNrZ3JvdW5kOlwiaHNsYSgwLCAwJSwgMTAwJSwgLjUpXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjOWE2ZTNhXCIsYmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwifSxhdHJ1bGU6e2NvbG9yOlwiIzA3YVwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjMDdhXCJ9LGtleXdvcmQ6e2NvbG9yOlwiIzA3YVwifSxmdW5jdGlvbjp7Y29sb3I6XCIjREQ0QTY4XCJ9LFwiY2xhc3MtbmFtZVwiOntjb2xvcjpcIiNERDRBNjhcIn0scmVnZXg6e2NvbG9yOlwiI2U5MFwifSxpbXBvcnRhbnQ6e2NvbG9yOlwiI2U5MFwiLGZvbnRXZWlnaHQ6XCJib2xkXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiNlOTBcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn19LGZ1bmN0aW9uKGUpe3ZhciB0PWUubGFuZ3VhZ2Usbj1lLmNoaWxkcmVuLHI9ZS5zdHlsZSxhPXZvaWQgMD09PXI/TzpyLGk9ZS5jdXN0b21TdHlsZSxsPXZvaWQgMD09PWk/e306aSxzPWUuY29kZVRhZ1Byb3BzLHU9dm9pZCAwPT09cz97c3R5bGU6YVsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nXX06cyxjPWUudXNlSW5saW5lU3R5bGVzLGQ9dm9pZCAwPT09Y3x8YyxwPWUuc2hvd0xpbmVOdW1iZXJzLGY9dm9pZCAwIT09cCYmcCxtPWUuc3RhcnRpbmdMaW5lTnVtYmVyLGc9dm9pZCAwPT09bT8xOm0sYj1lLmxpbmVOdW1iZXJDb250YWluZXJTdHlsZSx5PWUubGluZU51bWJlclN0eWxlLHY9ZS53cmFwTGluZXMsUz1lLmxpbmVQcm9wcyxFPXZvaWQgMD09PVM/e306Uyx4PWUucmVuZGVyZXIsdz1lLlByZVRhZyxfPXZvaWQgMD09PXc/XCJwcmVcIjp3LEk9ZS5Db2RlVGFnLE49dm9pZCAwPT09ST9cImNvZGVcIjpJLFI9ZS5jb2RlLFA9dm9pZCAwPT09Uj9BcnJheS5pc0FycmF5KG4pP25bMF06bjpSLE09ZS5hc3RHZW5lcmF0b3IsTD1oKCkoZSxbXCJsYW5ndWFnZVwiLFwiY2hpbGRyZW5cIixcInN0eWxlXCIsXCJjdXN0b21TdHlsZVwiLFwiY29kZVRhZ1Byb3BzXCIsXCJ1c2VJbmxpbmVTdHlsZXNcIixcInNob3dMaW5lTnVtYmVyc1wiLFwic3RhcnRpbmdMaW5lTnVtYmVyXCIsXCJsaW5lTnVtYmVyQ29udGFpbmVyU3R5bGVcIixcImxpbmVOdW1iZXJTdHlsZVwiLFwid3JhcExpbmVzXCIsXCJsaW5lUHJvcHNcIixcInJlbmRlcmVyXCIsXCJQcmVUYWdcIixcIkNvZGVUYWdcIixcImNvZGVcIixcImFzdEdlbmVyYXRvclwiXSk7TT1NfHxDO3ZhciBEPWY/by5hLmNyZWF0ZUVsZW1lbnQoayx7Y29udGFpbmVyU3R5bGU6Yixjb2RlU3R5bGU6dS5zdHlsZXx8e30sbnVtYmVyU3R5bGU6eSxzdGFydGluZ0xpbmVOdW1iZXI6Zyxjb2RlU3RyaW5nOlB9KTpudWxsLEY9YS5obGpzfHxhWydwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJ118fHtiYWNrZ3JvdW5kQ29sb3I6XCIjZmZmXCJ9LEI9ZD9PYmplY3QuYXNzaWduKHt9LEwse3N0eWxlOk9iamVjdC5hc3NpZ24oe30sRixsKX0pOk9iamVjdC5hc3NpZ24oe30sTCx7Y2xhc3NOYW1lOlwiaGxqc1wifSk7aWYoIU0pcmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KF8sQixELG8uYS5jcmVhdGVFbGVtZW50KE4sdSxQKSk7dj0hKCF4fHx2b2lkIDAhPT12KXx8dix4PXh8fEE7dmFyIGo9W3t0eXBlOlwidGV4dFwiLHZhbHVlOlB9XSxVPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYXN0R2VuZXJhdG9yLG49ZS5sYW5ndWFnZSxyPWUuY29kZSxvPWUuZGVmYXVsdENvZGVWYWx1ZTtpZih0LmdldExhbmd1YWdlKXt2YXIgYT1uJiZ0LmdldExhbmd1YWdlKG4pO3JldHVyblwidGV4dFwiPT09bj97dmFsdWU6byxsYW5ndWFnZTpcInRleHRcIn06YT90LmhpZ2hsaWdodChuLHIpOnQuaGlnaGxpZ2h0QXV0byhyKX10cnl7cmV0dXJuIG4mJlwidGV4dFwiIT09bj97dmFsdWU6dC5oaWdobGlnaHQocixuKX06e3ZhbHVlOm99fWNhdGNoKGUpe3JldHVybnt2YWx1ZTpvfX19KHthc3RHZW5lcmF0b3I6TSxsYW5ndWFnZTp0LGNvZGU6UCxkZWZhdWx0Q29kZVZhbHVlOmp9KTtudWxsPT09VS5sYW5ndWFnZSYmKFUudmFsdWU9aik7dmFyIHo9dj9UKFUsRSk6VS52YWx1ZTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoXyxCLEQsby5hLmNyZWF0ZUVsZW1lbnQoTix1LHgoe3Jvd3M6eixzdHlsZXNoZWV0OmEsdXNlSW5saW5lU3R5bGVzOmR9KSkpfSk7Ti5zdXBwb3J0ZWRMYW5ndWFnZXM9W1wiYWJhcFwiLFwiYWN0aW9uc2NyaXB0XCIsXCJhZGFcIixcImFwYWNoZWNvbmZcIixcImFwbFwiLFwiYXBwbGVzY3JpcHRcIixcImFyZHVpbm9cIixcImFyZmZcIixcImFzY2lpZG9jXCIsXCJhc202NTAyXCIsXCJhc3BuZXRcIixcImF1dG9ob3RrZXlcIixcImF1dG9pdFwiLFwiYmFzaFwiLFwiYmFzaWNcIixcImJhdGNoXCIsXCJiaXNvblwiLFwiYnJhaW5mdWNrXCIsXCJicm9cIixcImNcIixcImNsaWtlXCIsXCJjbG9qdXJlXCIsXCJjb2ZmZWVzY3JpcHRcIixcImNwcFwiLFwiY3J5c3RhbFwiLFwiY3NoYXJwXCIsXCJjc3BcIixcImNzcy1leHRyYXNcIixcImNzc1wiLFwiZFwiLFwiZGFydFwiLFwiZGlmZlwiLFwiZGphbmdvXCIsXCJkb2NrZXJcIixcImVpZmZlbFwiLFwiZWxpeGlyXCIsXCJlbG1cIixcImVyYlwiLFwiZXJsYW5nXCIsXCJmbG93XCIsXCJmb3J0cmFuXCIsXCJmc2hhcnBcIixcImdlZGNvbVwiLFwiZ2hlcmtpblwiLFwiZ2l0XCIsXCJnbHNsXCIsXCJnb1wiLFwiZ3JhcGhxbFwiLFwiZ3Jvb3Z5XCIsXCJoYW1sXCIsXCJoYW5kbGViYXJzXCIsXCJoYXNrZWxsXCIsXCJoYXhlXCIsXCJocGtwXCIsXCJoc3RzXCIsXCJodHRwXCIsXCJpY2hpZ29qYW1cIixcImljb25cIixcImluZm9ybTdcIixcImluaVwiLFwiaW9cIixcImpcIixcImphdmFcIixcImphdmFzY3JpcHRcIixcImpvbGllXCIsXCJqc29uXCIsXCJqc3hcIixcImp1bGlhXCIsXCJrZXltYW5cIixcImtvdGxpblwiLFwibGF0ZXhcIixcImxlc3NcIixcImxpcXVpZFwiLFwibGlzcFwiLFwibGl2ZXNjcmlwdFwiLFwibG9sY29kZVwiLFwibHVhXCIsXCJtYWtlZmlsZVwiLFwibWFya2Rvd25cIixcIm1hcmt1cC10ZW1wbGF0aW5nXCIsXCJtYXJrdXBcIixcIm1hdGxhYlwiLFwibWVsXCIsXCJtaXphclwiLFwibW9ua2V5XCIsXCJuNGpzXCIsXCJuYXNtXCIsXCJuZ2lueFwiLFwibmltXCIsXCJuaXhcIixcIm5zaXNcIixcIm9iamVjdGl2ZWNcIixcIm9jYW1sXCIsXCJvcGVuY2xcIixcIm96XCIsXCJwYXJpZ3BcIixcInBhcnNlclwiLFwicGFzY2FsXCIsXCJwZXJsXCIsXCJwaHAtZXh0cmFzXCIsXCJwaHBcIixcInBsc3FsXCIsXCJwb3dlcnNoZWxsXCIsXCJwcm9jZXNzaW5nXCIsXCJwcm9sb2dcIixcInByb3BlcnRpZXNcIixcInByb3RvYnVmXCIsXCJwdWdcIixcInB1cHBldFwiLFwicHVyZVwiLFwicHl0aG9uXCIsXCJxXCIsXCJxb3JlXCIsXCJyXCIsXCJyZWFzb25cIixcInJlbnB5XCIsXCJyZXN0XCIsXCJyaXBcIixcInJvYm9jb25mXCIsXCJydWJ5XCIsXCJydXN0XCIsXCJzYXNcIixcInNhc3NcIixcInNjYWxhXCIsXCJzY2hlbWVcIixcInNjc3NcIixcInNtYWxsdGFsa1wiLFwic21hcnR5XCIsXCJzb3lcIixcInNxbFwiLFwic3R5bHVzXCIsXCJzd2lmdFwiLFwidGFwXCIsXCJ0Y2xcIixcInRleHRpbGVcIixcInRzeFwiLFwidHQyXCIsXCJ0d2lnXCIsXCJ0eXBlc2NyaXB0XCIsXCJ2Ym5ldFwiLFwidmVsb2NpdHlcIixcInZlcmlsb2dcIixcInZoZGxcIixcInZpbVwiLFwidmlzdWFsLWJhc2ljXCIsXCJ3YXNtXCIsXCJ3aWtpXCIsXCJ4ZW9yYVwiLFwieG9qb1wiLFwieHF1ZXJ5XCIsXCJ5YW1sXCJdO3ZhciBSPU4sUD1uKDU2KSxNPW4oMSk7ZnVuY3Rpb24gTChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBEKGUpe3ZhciB0PWUuRGVtb0NvbXBvbmVudCxuPWUudGl0bGUsYT1MKE9iamVjdChyLnVzZVN0YXRlKSghMSksMiksaT1hWzBdLHM9YVsxXSx1PW8uYS5jcmVhdGVFbGVtZW50KGwucCx7Y2hlY2tlZDppLG9uQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHModCl9fSk7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KFwic2VjdGlvblwiLHtzdHlsZTp7bWFyZ2luOlwiNDhweCAwXCJ9fSxvLmEuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTp7ZGlzcGxheTpcImZsZXhcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCJ9fSxvLmEuY3JlYXRlRWxlbWVudChsLncse3ZhcmlhbnQ6XCJoNVwiLHN0eWxlOntmbGV4OlwiMSAxIDBcIn19LG4pLG8uYS5jcmVhdGVFbGVtZW50KGwuZix7Y29udHJvbDp1LGxhYmVsOlwiU291cmNlXCJ9KSksby5hLmNyZWF0ZUVsZW1lbnQobSx7c291cmNlOnQuX19tYXJrZG93bl9ffSksby5hLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6e3dpZHRoOlwiMTAwJVwiLG1hcmdpblRvcDpcIjhweFwifX0sby5hLmNyZWF0ZUVsZW1lbnQodCxudWxsKSxvLmEuY3JlYXRlRWxlbWVudChsLmMse2luOml9LG8uYS5jcmVhdGVFbGVtZW50KFIse2xhbmd1YWdlOlwianN4XCIsc3R5bGU6UC5hdG9tRGFya30sdC5fX3NvdXJjZV9fLnJlcGxhY2UoL2V4cG9ydCBkZWZhdWx0XFxzKi9nLFwiXCIpKSkpKX1ELnByb3BUeXBlcz17RGVtb0NvbXBvbmVudDpNLmFueS5pc1JlcXVpcmVkLHRpdGxlOk0uc3RyaW5nLmlzUmVxdWlyZWR9O3ZhciBGPW4oMTg2KSxCPW4ubihGKSxqPW4oMTg4KSxVPW4ubihqKSx6PW4oMTg5KSxIPW4ubih6KSxXPW4oMTkwKSxHPW4ubihXKSxWPW4oMTkxKSwkPW4ubihWKSxxPW4oMTkyKSxLPW4ubihxKSxZPW4oMTkzKSxYPW4ubihZKSxaPW4oMTk0KSxRPW4ubihaKSxKPW4oMTk1KSxlZT1uLm4oSiksdGU9bigxOTYpLG5lPW4ubih0ZSkscmU9bigxOTcpLG9lPW4ubihyZSksYWU9bigxOTgpLGllPW4ubihhZSksbGU9bigxOTkpLHNlPW4ubihsZSksdWU9bigyMDApLGNlPW4ubih1ZSksZGU9bigyMDIpLHBlPW4ubihkZSksZmU9bigyMDMpLG1lPW4ubihmZSksZ2U9bigyMDQpLGhlPW4ubihnZSksYmU9bigxMSkseWU9bigxMCk7ZnVuY3Rpb24gdmUoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFNlKGUpe3ZhciB0PWUuZmllbGRzLG49ZS52YWx1ZSxyPWUub25DaGFuZ2UsYT1mdW5jdGlvbihlLHQpe3JldHVybiByKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2ZShlLHQsblt0XSl9KX1yZXR1cm4gZX0oe30sbix2ZSh7fSxlLHQpKSl9O3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTp7cGFkZGluZzpcIjE2cHhcIixtaW5XaWR0aDpcIjI1MHB4XCJ9fSxvLmEuY3JlYXRlRWxlbWVudChsLncse3ZhcmlhbnQ6XCJoNlwifSxcIlByb3BzXCIpLHQubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChsLmcse2tleTplLnByb3BOYW1lfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5wcm9wTmFtZSxhPWUucHJvcFR5cGUsaT1lLmxhYmVsLHM9ZS5oZWxwZXJUZXh0LHU9ZS5vcHRpb25zO2lmKGE9PT1NLnN0cmluZylyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQobC52LHt2YWx1ZTp0W3JdLG9uQ2hhbmdlOmZ1bmN0aW9uKGUpe3JldHVybiBuKHIsZS50YXJnZXQudmFsdWUpfSxsYWJlbDppLGhlbHBlclRleHQ6c30pO2lmKGE9PT1NLmJvb2wpcmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGwuZix7Y29udHJvbDpvLmEuY3JlYXRlRWxlbWVudChsLnAse2NoZWNrZWQ6dFtyXSxvbkNoYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gbihyLGUudGFyZ2V0LmNoZWNrZWQpfX0pLGxhYmVsOml9KTtpZihhPT09TS5vbmVPZilyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQobC5lLG51bGwsby5hLmNyZWF0ZUVsZW1lbnQobC5pLG51bGwsaSksby5hLmNyZWF0ZUVsZW1lbnQobC5vLHt2YWx1ZTp0W3JdLG9uQ2hhbmdlOmZ1bmN0aW9uKGUpe3JldHVybiBuKHIsZS50YXJnZXQudmFsdWUpfX0sdS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGwubCx7a2V5OmUsdmFsdWU6ZX0sU3RyaW5nKGUpKX0pKSxvLmEuY3JlYXRlRWxlbWVudChsLmgsbnVsbCxzKSk7dGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBwcm9wIHR5cGUgXCIuY29uY2F0KGEpKX0oZSxuLGEpKX0pKX1mdW5jdGlvbiBFZSgpe3JldHVybihFZT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHhlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPVtdLHI9ITAsbz0hMSxhPXZvaWQgMDt0cnl7Zm9yKHZhciBpLGw9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPShpPWwubmV4dCgpKS5kb25lKSYmKG4ucHVzaChpLnZhbHVlKSwhdHx8bi5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7bz0hMCxhPWV9ZmluYWxseXt0cnl7cnx8bnVsbD09bC5yZXR1cm58fGwucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IGF9fXJldHVybiBufShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfSgpfVNlLnByb3BUeXBlcz17ZmllbGRzOk0uYXJyYXksdmFsdWU6TS5vYmplY3Qsb25DaGFuZ2U6TS5mdW5jfTt2YXIgd2U9W3twcm9wTmFtZTpcImxhYmVsXCIsbGFiZWw6XCJMYWJlbFwiLGRlZmF1bHRWYWx1ZTpcIllvdXIgZmF2b3VyaXRlIGZydWl0XCIscHJvcFR5cGU6TS5zdHJpbmd9LHtwcm9wTmFtZTpcInJlcXVpcmVkXCIsbGFiZWw6XCJSZXF1aXJlZFwiLGRlZmF1bHRWYWx1ZTohMSxwcm9wVHlwZTpNLmJvb2x9LHtwcm9wTmFtZTpcImVycm9yXCIsbGFiZWw6XCJFcnJvciBTdGF0ZVwiLGRlZmF1bHRWYWx1ZTohMSxwcm9wVHlwZTpNLmJvb2x9LHtwcm9wTmFtZTpcImRpc2FibGVkXCIsbGFiZWw6XCJEaXNhYmxlZFwiLGRlZmF1bHRWYWx1ZTohMSxwcm9wVHlwZTpNLmJvb2x9LHtwcm9wTmFtZTpcImZ1bGxXaWR0aFwiLGxhYmVsOlwiRnVsbCBXaWR0aFwiLGRlZmF1bHRWYWx1ZTohMCxwcm9wVHlwZTpNLmJvb2x9LHtwcm9wTmFtZTpcImNoaXBDb2xvclwiLGxhYmVsOlwiQ2hpcCBDb2xvclwiLGRlZmF1bHRWYWx1ZTpcImRlZmF1bHRcIixwcm9wVHlwZTpNLm9uZU9mLG9wdGlvbnM6W1wiZGVmYXVsdFwiLFwicHJpbWFyeVwiLFwic2Vjb25kYXJ5XCJdfSx7cHJvcE5hbWU6XCJjbGVhcklucHV0T25CbHVyXCIsbGFiZWw6XCJDbGVhciBJbnB1dCBvbiBCbHVyXCIsZGVmYXVsdFZhbHVlOiExLHByb3BUeXBlOk0uYm9vbH0se3Byb3BOYW1lOlwiZmV0Y2hEZWxheVwiLGxhYmVsOlwiRmV0Y2ggRGVsYXlcIixkZWZhdWx0VmFsdWU6MCxwcm9wVHlwZTpNLm9uZU9mLG9wdGlvbnM6WzAsMTAwLDUwMCwyZTNdfSx7cHJvcE5hbWU6XCJ2YXJpYW50XCIsbGFiZWw6XCJEaXNwbGF5IHZhcmlhbnRcIixkZWZhdWx0VmFsdWU6XCJzdGFuZGFyZFwiLHByb3BUeXBlOk0ub25lT2Ysb3B0aW9uczpbXCJzdGFuZGFyZFwiLFwiZmlsbGVkXCIsXCJvdXRsaW5lZFwiXX0se3Byb3BOYW1lOlwiaGVscGVyVGV4dFwiLGxhYmVsOlwiSGVscGVyVGV4dFwiLGRlZmF1bHRWYWx1ZTpcIlwiLHByb3BUeXBlOk0uc3RyaW5nfV0sa2U9d2UucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdC5wcm9wTmFtZV09dC5kZWZhdWx0VmFsdWUsZX0se30pLF9lPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lfTtmdW5jdGlvbiBUZSgpe3ZhciBlPXhlKE9iamVjdChyLnVzZVN0YXRlKSh5ZS5hLnNsaWNlKDAsMikpLDIpLHQ9ZVswXSxuPWVbMV0sYT14ZShPYmplY3Qoci51c2VTdGF0ZSkoa2UpLDIpLGk9YVswXSxzPWFbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGwubSxudWxsLG8uYS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0eWxlOntkaXNwbGF5OlwiZmxleFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCJ9fSxvLmEuY3JlYXRlRWxlbWVudChTZSx7ZmllbGRzOndlLHZhbHVlOmksb25DaGFuZ2U6c30pLG8uYS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0eWxlOntmbGV4OlwiMSAxIDBcIn19LG8uYS5jcmVhdGVFbGVtZW50KGwudyx7dmFyaWFudDpcImg2XCJ9LFwiU291cmNlXCIpLG8uYS5jcmVhdGVFbGVtZW50KFIse2xhbmd1YWdlOlwianN4XCIsc3R5bGU6UC5hdG9tRGFya30sZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmVudHJpZXMoZSkuZmlsdGVyKF9lKS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9eGUoZSwyKSxuPXRbMF0scj10WzFdO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiByP1wiICAgICAgICBcIi5jb25jYXQobiwnPVwiJykuY29uY2F0KHIsJ1wiJyk6XCIgICAgICAgIFwiLmNvbmNhdChuLFwiPXsgXCIpLmNvbmNhdChKU09OLnN0cmluZ2lmeShyKSxcIiB9XCIpfSkuam9pbihcIlxcblwiKTtyZXR1cm5cIlxcbmZ1bmN0aW9uIE15UGlja2VyKCkge1xcbiAgICAvL3JlcXVpcmVzIFJlYWN0IDE2LjgrXFxuICAgIGNvbnN0IFsgaXRlbXMsIHNldEl0ZW1zIF0gPSB1c2VTdGF0ZShBTExfRlJVSVRTLnNsaWNlKDAsIDIpKTtcXG4gICAgcmV0dXJuIDxNdWx0aVBpY2tlclxcbiAgICAgICAgdmFsdWU9eyBpdGVtcyB9XFxuICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXG4gICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcbiAgICAgICAgZ2V0U3VnZ2VzdGVkSXRlbXM9eyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfVxcblwiLmNvbmNhdCh0LFwiICAgICAgICBcXG4gICAgLz47XFxufVxcblwiKS50cmltKCl9KGkpKSkpLG8uYS5jcmVhdGVFbGVtZW50KGwuZCxudWxsKSxvLmEuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTp7cGFkZGluZzpcIjMycHhcIn19LG8uYS5jcmVhdGVFbGVtZW50KGwudyx7dmFyaWFudDpcImg2XCJ9LFwiUmVzdWx0XCIpLG8uYS5jcmVhdGVFbGVtZW50KGJlLmEsRWUoe3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6eWUuYn0saSkpKSl9dmFyIEFlPU9iamVjdChpLmNyZWF0ZU11aVRoZW1lKSh7cGFsZXR0ZTp7cHJpbWFyeTpzLmJsdWUsc2Vjb25kYXJ5OnMucmVkfSx0eXBvZ3JhcGh5Ont1c2VOZXh0VmFyaWFudHM6ITB9fSk7T2JqZWN0KGEucmVuZGVyKShvLmEuY3JlYXRlRWxlbWVudChmdW5jdGlvbigpe3ZhciBlPVwiaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvXCIuY29uY2F0KHUubmFtZSksdD11LnJlcG9zaXRvcnkudXJsLG49XCJcIi5jb25jYXQodCxcIi9ibG9iL21hc3Rlci9SRUFETUUubWRcIikscj1cIlwiLmNvbmNhdCh0LFwiL2Jsb2IvbWFzdGVyL0NIQU5HRUxPRy5tZFwiKTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoaS5NdWlUaGVtZVByb3ZpZGVyLHt0aGVtZTpBZX0sby5hLmNyZWF0ZUVsZW1lbnQobC53LHtjb21wb25lbnQ6XCJkaXZcIixzdHlsZTp7bWF4V2lkdGg6XCI3NTBweFwiLG1hcmdpbjpcIjAgYXV0b1wiLHBhZGRpbmdCb3R0b206XCI1MDBweFwifX0sby5hLmNyZWF0ZUVsZW1lbnQobC53LHt2YXJpYW50OlwiaDJcIn0sXCJNYXRlcmlhbCBNdWx0aSBQaWNrZXIgXCIsdS52ZXJzaW9uKSxvLmEuY3JlYXRlRWxlbWVudChcImRpdlwiLG51bGwsby5hLmNyZWF0ZUVsZW1lbnQobC5rLHtocmVmOnUucmVwb3NpdG9yeS51cmx9LFwiR2l0aHViXCIpLFwiwqDCt8KgXCIsby5hLmNyZWF0ZUVsZW1lbnQobC5rLHtocmVmOmV9LFwiTlBNXCIpLFwiwqDCt8KgXCIsby5hLmNyZWF0ZUVsZW1lbnQobC5rLHtocmVmOm59LFwiUmVhZG1lXCIpLFwiwqDCt8KgXCIsby5hLmNyZWF0ZUVsZW1lbnQobC5rLHtocmVmOnJ9LFwiQ2hhbmdlbG9nXCIpKSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIlNpbXBsZSBzeW5jaHJvbm91cyBzdWdnZXN0aW9uIGxpc3RcIixEZW1vQ29tcG9uZW50OkIuYX0pLG8uYS5jcmVhdGVFbGVtZW50KEQse3RpdGxlOlwiQ2hpcHMgd3JhcCBvbnRvIG11bHRpcGxlIGxpbmVzXCIsRGVtb0NvbXBvbmVudDpVLmF9KSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIkNhbiBiZSBkaXNhYmxlZFwiLERlbW9Db21wb25lbnQ6SC5hfSksby5hLmNyZWF0ZUVsZW1lbnQoRCx7dGl0bGU6XCJTaG93cyBlcnJvciBzdGF0ZVwiLERlbW9Db21wb25lbnQ6Ry5hfSksby5hLmNyZWF0ZUVsZW1lbnQoRCx7dGl0bGU6XCJDbGVhcmluZyB0aGUgaW5wdXQgZmllbGQgb24gYmx1clwiLERlbW9Db21wb25lbnQ6aGUuYX0pLG8uYS5jcmVhdGVFbGVtZW50KGwudyx7dmFyaWFudDpcImg0XCJ9LFwiUHJvdmlkaW5nIHN1Z2dlc3Rpb25zXCIpLG8uYS5jcmVhdGVFbGVtZW50KEQse3RpdGxlOlwiTWluaW11bSBpbnB1dCBsZW5ndGggZm9yIHN1Z2dlc3Rpb25zXCIsRGVtb0NvbXBvbmVudDokLmF9KSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIkFzeW5jaHJvbm91cyBzdWdnZXN0aW9uIGxpc3RcIixEZW1vQ29tcG9uZW50OlguYX0pLG8uYS5jcmVhdGVFbGVtZW50KEQse3RpdGxlOlwiVGhyb3R0bGluZyByZXF1ZXN0c1wiLERlbW9Db21wb25lbnQ6US5hfSksby5hLmNyZWF0ZUVsZW1lbnQoRCx7dGl0bGU6XCJIYW5kbGUgc3VnZ2VzdGlvbiBmZXRjaCBlcnJvcnNcIixEZW1vQ29tcG9uZW50OmVlLmF9KSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIkR5bmFtaWNhbGx5IGdlbmVyYXRlZCBzdWdnZXN0aW9uc1wiLERlbW9Db21wb25lbnQ6bmUuYX0pLG8uYS5jcmVhdGVFbGVtZW50KEQse3RpdGxlOlwiU2Nyb2xsYWJsZSBkcm9wZG93blwiLERlbW9Db21wb25lbnQ6Sy5hfSksby5hLmNyZWF0ZUVsZW1lbnQobC53LHt2YXJpYW50OlwiaDRcIn0sXCJDdXN0b21pc2luZyBwcmVzZW50YXRpb25cIiksby5hLmNyZWF0ZUVsZW1lbnQoRCx7dGl0bGU6XCJXaXRoIGhlbHBlciB0ZXh0XCIsRGVtb0NvbXBvbmVudDpvZS5hfSksby5hLmNyZWF0ZUVsZW1lbnQoRCx7dGl0bGU6XCJSZXF1aXJlZCBmaWVsZCBpbmRpY2F0b3JcIixEZW1vQ29tcG9uZW50OmllLmF9KSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIkN1c3RvbSBmaWVsZCBhcHBlYXJhbmNlXCIsRGVtb0NvbXBvbmVudDpzZS5hfSksby5hLmNyZWF0ZUVsZW1lbnQoRCx7dGl0bGU6XCJDdXN0b20gc3VnZ2VzdGlvbiBjb21wb25lbnRzXCIsRGVtb0NvbXBvbmVudDpjZS5hfSksby5hLmNyZWF0ZUVsZW1lbnQoRCx7dGl0bGU6XCJDdXN0b20gY2hpcCBhcHBlYXJhbmNlXCIsRGVtb0NvbXBvbmVudDpwZS5hfSksby5hLmNyZWF0ZUVsZW1lbnQobC53LHt2YXJpYW50OlwiaDRcIn0sXCJQZXJmb3JtYW5jZVwiKSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIkdsb2JhbCBjYWNoZVwiLERlbW9Db21wb25lbnQ6bWUuYX0pLG8uYS5jcmVhdGVFbGVtZW50KGwudyx7dmFyaWFudDpcImg0XCJ9LFwiU2FuZGJveFwiKSxvLmEuY3JlYXRlRWxlbWVudChUZSxudWxsKSkpfSxudWxsKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRvY3NcIikpfV0pOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file + */e.exports=function(e){return null!=e&&"object"==typeof e&&!1===Array.isArray(e)}},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.values,n=void 0===t?{xs:0,sm:600,md:960,lg:1280,xl:1920}:t,r=e.unit,l=void 0===r?"px":r,s=e.step,u=void 0===s?5:s,c=(0,a.default)(e,["values","unit","step"]);function d(e){var t="number"==typeof n[e]?n[e]:e;return"@media (min-width:".concat(t).concat(l,")")}function p(e,t){var r=i.indexOf(t)+1;return r===i.length?d(e):"@media (min-width:".concat(n[e]).concat(l,") and ")+"(max-width:".concat(n[i[r]]-u/100).concat(l,")")}return(0,o.default)({keys:i,values:n,up:d,down:function(e){var t=i.indexOf(e)+1,r=n[i[t]];if(t===i.length)return d("xs");return"@media (max-width:".concat(("number"==typeof r&&t>0?r:e)-u/100).concat(l,")")},between:p,only:function(e){return p(e,e)},width:function(e){return n[e]}},c)},t.keys=void 0;var o=r(n(4)),a=r(n(5)),i=["xs","sm","md","lg","xl"];t.keys=i},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r;return(0,a.default)({gutters:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,a.default)({paddingLeft:2*t.unit,paddingRight:2*t.unit},n,(0,o.default)({},e.up("sm"),(0,a.default)({paddingLeft:3*t.unit,paddingRight:3*t.unit},n[e.up("sm")])))},toolbar:(r={minHeight:56},(0,o.default)(r,"".concat(e.up("xs")," and (orientation: landscape)"),{minHeight:48}),(0,o.default)(r,e.up("sm"),{minHeight:64}),r)},n)};var o=r(n(9)),a=r(n(4))},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.primary,n=void 0===t?{light:l.default[300],main:l.default[500],dark:l.default[700]}:t,r=e.secondary,h=void 0===r?{light:s.default.A200,main:s.default.A400,dark:s.default.A700}:r,b=e.error,y=void 0===b?{light:c.default[300],main:c.default[500],dark:c.default[700]}:b,v=e.type,S=void 0===v?"light":v,E=e.contrastThreshold,x=void 0===E?3:E,w=e.tonalOffset,k=void 0===w?.2:w,_=(0,a.default)(e,["primary","secondary","error","type","contrastThreshold","tonalOffset"]);function T(e){var t=(0,p.getContrastRatio)(e,m.text.primary)>=x?m.text.primary:f.text.primary;return t}function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:700;return!e.main&&e[t]&&(e.main=e[t]),g(e,"light",n,k),g(e,"dark",r,k),e.contrastText||(e.contrastText=T(e.main)),e}A(n),A(h,"A400","A200","A700"),A(y);var C={dark:m,light:f};return(0,i.default)((0,o.default)({common:d.default,type:S,primary:n,secondary:h,error:y,grey:u.default,contrastThreshold:x,getContrastText:T,augmentColor:A,tonalOffset:k},C[S]),_,{clone:!1})},t.dark=t.light=void 0;var o=r(n(4)),a=r(n(5)),i=(r(n(17)),r(n(49))),l=r(n(122)),s=r(n(123)),u=r(n(124)),c=r(n(125)),d=r(n(126)),p=n(31),f={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.54)",disabled:"rgba(0, 0, 0, 0.38)",hint:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:d.default.white,default:u.default[50]},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.08)",hoverOpacity:.08,selected:"rgba(0, 0, 0, 0.14)",disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)"}};t.light=f;var m={text:{primary:d.default.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",hint:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:u.default[800],default:"#303030"},action:{active:d.default.white,hover:"rgba(255, 255, 255, 0.1)",hoverOpacity:.1,selected:"rgba(255, 255, 255, 0.2)",disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)"}};function g(e,t,n,r){e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=(0,p.lighten)(e.main,r):"dark"===t&&(e.dark=(0,p.darken)(e.main,1.5*r)))}t.dark=m},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n="function"==typeof t?t(e):t,r=n.fontFamily,d=void 0===r?c:r,p=n.fontSize,f=void 0===p?14:p,m=n.fontWeightLight,g=void 0===m?300:m,h=n.fontWeightRegular,b=void 0===h?400:h,y=n.fontWeightMedium,v=void 0===y?500:y,S=n.htmlFontSize,E=void 0===S?16:S,x=n.useNextVariants,w=void 0===x?Boolean(l.ponyfillGlobal.__MUI_USE_NEXT_TYPOGRAPHY_VARIANTS__):x,k=(n.suppressWarning,n.allVariants),_=(0,a.default)(n,["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","htmlFontSize","useNextVariants","suppressWarning","allVariants"]);var T=f/14,A=function(e){return"".concat(e/E*T,"rem")},C=function(t,n,r,a,i){return(0,o.default)({color:e.text.primary,fontFamily:d,fontWeight:t,fontSize:A(n),lineHeight:r},d===c?{letterSpacing:"".concat(s(a/n),"em")}:{},i,k)},O={h1:C(g,96,1,-1.5),h2:C(g,60,1,-.5),h3:C(b,48,1.04,0),h4:C(b,34,1.17,.25),h5:C(b,24,1.33,0),h6:C(v,20,1.6,.15),subtitle1:C(b,16,1.75,.15),subtitle2:C(v,14,1.57,.1),body1Next:C(b,16,1.5,.15),body2Next:C(b,14,1.5,.15),buttonNext:C(v,14,1.75,.4,u),captionNext:C(b,12,1.66,.4),overline:C(b,12,2.66,1,u)},I={display4:(0,o.default)({fontSize:A(112),fontWeight:g,fontFamily:d,letterSpacing:"-.04em",lineHeight:"".concat(s(128/112),"em"),marginLeft:"-.04em",color:e.text.secondary},k),display3:(0,o.default)({fontSize:A(56),fontWeight:b,fontFamily:d,letterSpacing:"-.02em",lineHeight:"".concat(s(73/56),"em"),marginLeft:"-.02em",color:e.text.secondary},k),display2:(0,o.default)({fontSize:A(45),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(51/45),"em"),marginLeft:"-.02em",color:e.text.secondary},k),display1:(0,o.default)({fontSize:A(34),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(41/34),"em"),color:e.text.secondary},k),headline:(0,o.default)({fontSize:A(24),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(32.5/24),"em"),color:e.text.primary},k),title:(0,o.default)({fontSize:A(21),fontWeight:v,fontFamily:d,lineHeight:"".concat(s(24.5/21),"em"),color:e.text.primary},k),subheading:(0,o.default)({fontSize:A(16),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(1.5),"em"),color:e.text.primary},k),body2:(0,o.default)({fontSize:A(14),fontWeight:v,fontFamily:d,lineHeight:"".concat(s(24/14),"em"),color:e.text.primary},k),body1:(0,o.default)({fontSize:A(14),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(20.5/14),"em"),color:e.text.primary},k),caption:(0,o.default)({fontSize:A(12),fontWeight:b,fontFamily:d,lineHeight:"".concat(s(1.375),"em"),color:e.text.secondary},k),button:(0,o.default)({fontSize:A(14),textTransform:"uppercase",fontWeight:v,fontFamily:d,color:e.text.primary},k)};return(0,i.default)((0,o.default)({pxToRem:A,round:s,fontFamily:d,fontSize:f,fontWeightLight:g,fontWeightRegular:b,fontWeightMedium:v},I,O,w?{body1:O.body1Next,body2:O.body2Next,button:O.buttonNext,caption:O.captionNext}:{},{useNextVariants:w}),_,{clone:!1})};var o=r(n(4)),a=r(n(5)),i=r(n(49)),l=(r(n(17)),n(7));function s(e){return Math.round(1e5*e)/1e5}var u={textTransform:"uppercase"},c='"Roboto", "Helvetica", "Arial", sans-serif'},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=.2,o=.14,a=.12;function i(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(r,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(o,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(a,")")].join(",")}var l=["none",i(0,1,3,0,0,1,1,0,0,2,1,-1),i(0,1,5,0,0,2,2,0,0,3,1,-2),i(0,1,8,0,0,3,4,0,0,3,3,-2),i(0,2,4,-1,0,4,5,0,0,1,10,0),i(0,3,5,-1,0,5,8,0,0,1,14,0),i(0,3,5,-1,0,6,10,0,0,1,18,0),i(0,4,5,-2,0,7,10,1,0,2,16,1),i(0,5,5,-3,0,8,10,1,0,3,14,2),i(0,5,6,-3,0,9,12,1,0,3,16,2),i(0,6,6,-3,0,10,14,1,0,4,18,3),i(0,6,7,-4,0,11,15,1,0,4,20,3),i(0,7,8,-4,0,12,17,2,0,5,22,4),i(0,7,8,-4,0,13,19,2,0,5,24,4),i(0,7,9,-4,0,14,21,2,0,5,26,4),i(0,8,9,-5,0,15,22,2,0,6,28,5),i(0,8,10,-5,0,16,24,2,0,6,30,5),i(0,8,11,-5,0,17,26,2,0,6,32,5),i(0,9,11,-5,0,18,28,2,0,7,34,6),i(0,9,12,-6,0,19,29,2,0,7,36,6),i(0,10,13,-6,0,20,31,3,0,8,38,7),i(0,10,13,-6,0,21,33,3,0,8,40,7),i(0,10,14,-6,0,22,35,3,0,8,42,7),i(0,11,14,-7,0,23,36,3,0,9,44,8),i(0,11,15,-7,0,24,38,3,0,9,46,8)];t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={borderRadius:4};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={unit:8};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={mobileStepper:1e3,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};t.default=r},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(4)),a=(r(n(29)),r(n(17)),r(n(49)));function i(e,t){return t}var l=function(e){var t="function"==typeof e;return{create:function(n,r){var l=t?e(n):e;if(!r||!n.overrides||!n.overrides[r])return l;var s=n.overrides[r],u=(0,o.default)({},l);return Object.keys(s).forEach(function(e){u[e]=(0,a.default)(u[e],s[e],{arrayMerge:i})}),u},options:{},themingEnabled:t}};t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){var t=e.theme,n=e.name,r=e.props;if(!t.props||!n||!t.props[n])return r;var o,a=t.props[n];for(o in a)void 0===r[o]&&(r[o]=a[o]);return r};t.default=r},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(9)),i=r(n(5)),l=r(n(12)),s=r(n(13)),u=r(n(14)),c=r(n(15)),d=r(n(16)),p=r(n(0)),f=(r(n(1)),r(n(6))),m=(r(n(17)),n(7),r(n(407))),g=r(n(8)),h=n(31),b=(r(n(415)),n(21));n(108);var y=function(e){var t="light"===e.palette.type?e.palette.grey[300]:e.palette.grey[700],n=(0,h.fade)(e.palette.text.primary,.26);return{root:{fontFamily:e.typography.fontFamily,fontSize:e.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,color:e.palette.getContrastText(t),backgroundColor:t,borderRadius:16,whiteSpace:"nowrap",transition:e.transitions.create(["background-color","box-shadow"]),cursor:"default",outline:"none",textDecoration:"none",border:"none",padding:0,verticalAlign:"middle",boxSizing:"border-box"},colorPrimary:{backgroundColor:e.palette.primary.main,color:e.palette.primary.contrastText},colorSecondary:{backgroundColor:e.palette.secondary.main,color:e.palette.secondary.contrastText},clickable:{WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover, &:focus":{backgroundColor:(0,h.emphasize)(t,.08)},"&:active":{boxShadow:e.shadows[1],backgroundColor:(0,h.emphasize)(t,.12)}},clickableColorPrimary:{"&:hover, &:focus":{backgroundColor:(0,h.emphasize)(e.palette.primary.main,.08)},"&:active":{backgroundColor:(0,h.emphasize)(e.palette.primary.main,.12)}},clickableColorSecondary:{"&:hover, &:focus":{backgroundColor:(0,h.emphasize)(e.palette.secondary.main,.08)},"&:active":{backgroundColor:(0,h.emphasize)(e.palette.secondary.main,.12)}},deletable:{"&:focus":{backgroundColor:(0,h.emphasize)(t,.08)}},deletableColorPrimary:{"&:focus":{backgroundColor:(0,h.emphasize)(e.palette.primary.main,.2)}},deletableColorSecondary:{"&:focus":{backgroundColor:(0,h.emphasize)(e.palette.secondary.main,.2)}},outlined:{backgroundColor:"transparent",border:"1px solid ".concat("light"===e.palette.type?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),"$clickable&:hover, $clickable&:focus, $deletable&:focus":{backgroundColor:(0,h.fade)(e.palette.text.primary,e.palette.action.hoverOpacity)},"& $avatar":{marginLeft:-1}},outlinedPrimary:{color:e.palette.primary.main,border:"1px solid ".concat(e.palette.primary.main),"$clickable&:hover, $clickable&:focus, $deletable&:focus":{backgroundColor:(0,h.fade)(e.palette.primary.main,e.palette.action.hoverOpacity)}},outlinedSecondary:{color:e.palette.secondary.main,border:"1px solid ".concat(e.palette.secondary.main),"$clickable&:hover, $clickable&:focus, $deletable&:focus":{backgroundColor:(0,h.fade)(e.palette.secondary.main,e.palette.action.hoverOpacity)}},avatar:{marginRight:-4,width:32,height:32,color:"light"===e.palette.type?e.palette.grey[700]:e.palette.grey[300],fontSize:e.typography.pxToRem(16)},avatarColorPrimary:{color:e.palette.primary.contrastText,backgroundColor:e.palette.primary.dark},avatarColorSecondary:{color:e.palette.secondary.contrastText,backgroundColor:e.palette.secondary.dark},avatarChildren:{width:19,height:19},icon:{color:"light"===e.palette.type?e.palette.grey[700]:e.palette.grey[300],marginLeft:4,marginRight:-8},iconColorPrimary:{color:"inherit"},iconColorSecondary:{color:"inherit"},label:{display:"flex",alignItems:"center",paddingLeft:12,paddingRight:12,userSelect:"none",whiteSpace:"nowrap",cursor:"inherit"},deleteIcon:{WebkitTapHighlightColor:"transparent",color:n,cursor:"pointer",height:"auto",margin:"0 4px 0 -8px","&:hover":{color:(0,h.fade)(n,.4)}},deleteIconColorPrimary:{color:(0,h.fade)(e.palette.primary.contrastText,.7),"&:hover, &:active":{color:e.palette.primary.contrastText}},deleteIconColorSecondary:{color:(0,h.fade)(e.palette.secondary.contrastText,.7),"&:hover, &:active":{color:e.palette.secondary.contrastText}},deleteIconOutlinedColorPrimary:{color:(0,h.fade)(e.palette.primary.main,.7),"&:hover, &:active":{color:e.palette.primary.main}},deleteIconOutlinedColorSecondary:{color:(0,h.fade)(e.palette.secondary.main,.7),"&:hover, &:active":{color:e.palette.secondary.main}}}};t.styles=y;var v=function(e){function t(){var e,n;(0,l.default)(this,t);for(var r=arguments.length,o=new Array(r),a=0;a3&&void 0!==arguments[3]?arguments[3]:1;t.focusVisibleTimeout=setTimeout(function(){var l=(0,o.default)(n),s=function(e){var t=e.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}(l);a.focusKeyPressed&&(s===n||n.contains(s))?r():i-1})(e)&&(a.focusKeyPressed=!0,clearTimeout(a.keyUpEventTimeout),a.keyUpEventTimeout=setTimeout(function(){a.focusKeyPressed=!1},500))}},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=t.DELAY_RIPPLE=void 0;var o=r(n(4)),a=r(n(5)),i=r(n(140)),l=r(n(12)),s=r(n(13)),u=r(n(14)),c=r(n(15)),d=r(n(16)),p=r(n(45)),f=r(n(0)),m=(r(n(1)),r(n(22))),g=r(n(437)),h=r(n(6)),b=r(n(8)),y=r(n(439)),v=550,S=80;t.DELAY_RIPPLE=S;var E=function(e){return{root:{display:"block",position:"absolute",overflow:"hidden",borderRadius:"inherit",width:"100%",height:"100%",left:0,top:0,pointerEvents:"none",zIndex:0},ripple:{width:50,height:50,left:0,top:0,opacity:0,position:"absolute"},rippleVisible:{opacity:.3,transform:"scale(1)",animation:"mui-ripple-enter ".concat(v,"ms ").concat(e.transitions.easing.easeInOut),animationName:"$mui-ripple-enter"},ripplePulsate:{animationDuration:"".concat(e.transitions.duration.shorter,"ms")},child:{opacity:1,display:"block",width:"100%",height:"100%",borderRadius:"50%",backgroundColor:"currentColor"},childLeaving:{opacity:0,animation:"mui-ripple-exit ".concat(v,"ms ").concat(e.transitions.easing.easeInOut),animationName:"$mui-ripple-exit"},childPulsate:{position:"absolute",left:0,top:0,animation:"mui-ripple-pulsate 2500ms ".concat(e.transitions.easing.easeInOut," 200ms infinite"),animationName:"$mui-ripple-pulsate"},"@keyframes mui-ripple-enter":{"0%":{transform:"scale(0)",opacity:.1},"100%":{transform:"scale(1)",opacity:.3}},"@keyframes mui-ripple-exit":{"0%":{opacity:1},"100%":{opacity:0}},"@keyframes mui-ripple-pulsate":{"0%":{transform:"scale(1)"},"50%":{transform:"scale(0.92)"},"100%":{transform:"scale(1)"}}}};t.styles=E;var x=function(e){function t(){var e,n;(0,l.default)(this,t);for(var r=arguments.length,o=new Array(r),a=0;a0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,o=t.pulsate,a=void 0!==o&&o,i=t.center,l=void 0===i?n.props.center||t.pulsate:i,s=t.fakeElement,u=void 0!==s&&s;if("mousedown"===e.type&&n.ignoringMouseDown)n.ignoringMouseDown=!1;else{"touchstart"===e.type&&(n.ignoringMouseDown=!0);var c,d,f,g=u?null:m.default.findDOMNode((0,p.default)((0,p.default)(n))),h=g?g.getBoundingClientRect():{width:0,height:0,left:0,top:0};if(l||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)c=Math.round(h.width/2),d=Math.round(h.height/2);else{var b=e.clientX?e.clientX:e.touches[0].clientX,y=e.clientY?e.clientY:e.touches[0].clientY;c=Math.round(b-h.left),d=Math.round(y-h.top)}if(l)(f=Math.sqrt((2*Math.pow(h.width,2)+Math.pow(h.height,2))/3))%2==0&&(f+=1);else{var v=2*Math.max(Math.abs((g?g.clientWidth:0)-c),c)+2,E=2*Math.max(Math.abs((g?g.clientHeight:0)-d),d)+2;f=Math.sqrt(Math.pow(v,2)+Math.pow(E,2))}e.touches?(n.startTimerCommit=function(){n.startCommit({pulsate:a,rippleX:c,rippleY:d,rippleSize:f,cb:r})},n.startTimer=setTimeout(function(){n.startTimerCommit&&(n.startTimerCommit(),n.startTimerCommit=null)},S)):n.startCommit({pulsate:a,rippleX:c,rippleY:d,rippleSize:f,cb:r})}},n.startCommit=function(e){var t=e.pulsate,r=e.rippleX,o=e.rippleY,a=e.rippleSize,l=e.cb;n.setState(function(e){return{nextKey:e.nextKey+1,ripples:[].concat((0,i.default)(e.ripples),[f.default.createElement(y.default,{key:e.nextKey,classes:n.props.classes,timeout:{exit:v,enter:v},pulsate:t,rippleX:r,rippleY:o,rippleSize:a})])}},l)},n.stop=function(e,t){clearTimeout(n.startTimer);var r=n.state.ripples;if("touchend"===e.type&&n.startTimerCommit)return e.persist(),n.startTimerCommit(),n.startTimerCommit=null,void(n.startTimer=setTimeout(function(){n.stop(e,t)}));n.startTimerCommit=null,r&&r.length&&n.setState({ripples:r.slice(1)},t)},n}return(0,d.default)(t,e),(0,s.default)(t,[{key:"componentWillUnmount",value:function(){clearTimeout(this.startTimer)}},{key:"render",value:function(){var e=this.props,t=(e.center,e.classes),n=e.className,r=(0,a.default)(e,["center","classes","className"]);return f.default.createElement(g.default,(0,o.default)({component:"span",enter:!0,exit:!0,className:(0,h.default)(t.root,n)},r),this.state.ripples)}}]),t}(f.default.PureComponent);x.defaultProps={center:!1};var w=(0,b.default)(E,{flip:!1,name:"MuiTouchRipple"})(x);t.default=w},function(e,t){e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t=0||(o[n]=e[n]);return o}(e,["component","childFactory"]),a=c(this.state.children).map(n);return delete r.appear,delete r.enter,delete r.exit,null===t?a:o.default.createElement(t,r,a)},r}(o.default.Component);d.childContextTypes={transitionGroup:r.default.object.isRequired},d.propTypes={},d.defaultProps={component:"div",childFactory:function(e){return e}};var p=(0,a.polyfill)(d);t.default=p,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.getChildMapping=o,t.mergeChildMappings=a,t.getInitialChildMapping=function(e,t){return o(e.children,function(n){return(0,r.cloneElement)(n,{onExited:t.bind(null,n),in:!0,appear:i(n,"appear",e),enter:i(n,"enter",e),exit:i(n,"exit",e)})})},t.getNextChildMapping=function(e,t,n){var l=o(e.children),s=a(t,l);return Object.keys(s).forEach(function(o){var a=s[o];if((0,r.isValidElement)(a)){var u=o in t,c=o in l,d=t[o],p=(0,r.isValidElement)(d)&&!d.props.in;!c||u&&!p?c||!u||p?c&&u&&(0,r.isValidElement)(d)&&(s[o]=(0,r.cloneElement)(a,{onExited:n.bind(null,a),in:d.props.in,exit:i(a,"exit",e),enter:i(a,"enter",e)})):s[o]=(0,r.cloneElement)(a,{in:!1}):s[o]=(0,r.cloneElement)(a,{onExited:n.bind(null,a),in:!0,exit:i(a,"exit",e),enter:i(a,"enter",e)})}}),s};var r=n(0);function o(e,t){var n=Object.create(null);return e&&r.Children.map(e,function(e){return e}).forEach(function(e){n[e.key]=function(e){return t&&(0,r.isValidElement)(e)?t(e):e}(e)}),n}function a(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,o=Object.create(null),a=[];for(var i in e)i in t?a.length&&(o[i]=a,a=[]):a.push(i);var l={};for(var s in t){if(o[s])for(r=0;rg){var v=p-g;c-=v,s.vertical+=v}if(db){var E=f-b;d-=E,s.horizontal+=E}return{top:"".concat(c,"px"),left:"".concat(d,"px"),transformOrigin:k(s)}},e.handleEntering=function(t){e.props.onEntering&&e.props.onEntering(t),e.setPositioningStyles(t)},"undefined"!=typeof window&&(e.handleResize=(0,f.default)(function(){e.props.open&&e.setPositioningStyles(e.paperRef)},166)),e}return(0,c.default)(t,e),(0,l.default)(t,[{key:"componentDidMount",value:function(){this.props.action&&this.props.action({updatePosition:this.handleResize})}},{key:"getAnchorOffset",value:function(e){var t=this.props,n=t.anchorEl,r=t.anchorOrigin,o=t.anchorReference,a=t.anchorPosition;if("anchorPosition"===o)return a;var i=(_(n)||(0,g.default)(this.paperRef).body).getBoundingClientRect(),l=0===e?r.vertical:"center";return{top:i.top+this.handleGetOffsetTop(i,l),left:i.left+this.handleGetOffsetLeft(i,r.horizontal)}}},{key:"getContentAnchorOffset",value:function(e){var t=this.props,n=t.getContentAnchorEl,r=t.anchorReference,o=0;if(n&&"anchorEl"===r){var a=n(e);if(a&&e.contains(a)){var i=function(e,t){for(var n=t,r=0;n&&n!==e;)r+=(n=n.parentNode).scrollTop;return r}(e,a);o=a.offsetTop+a.clientHeight/2-i||0}}return o}},{key:"getTransformOrigin",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.props.transformOrigin;return{vertical:this.handleGetOffsetTop(e,n.vertical)+t,horizontal:this.handleGetOffsetLeft(e,n.horizontal)}}},{key:"render",value:function(){var e=this,t=this.props,n=(t.action,t.anchorEl),r=(t.anchorOrigin,t.anchorPosition,t.anchorReference,t.children),i=t.classes,l=t.container,s=t.elevation,u=(t.getContentAnchorEl,t.marginThreshold,t.ModalClasses),c=t.onEnter,f=t.onEntered,h=(t.onEntering,t.onExit),y=t.onExited,S=t.onExiting,x=t.open,w=t.PaperProps,k=t.role,T=(t.transformOrigin,t.TransitionComponent),A=t.transitionDuration,C=t.TransitionProps,O=void 0===C?{}:C,I=(0,a.default)(t,["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","classes","container","elevation","getContentAnchorEl","marginThreshold","ModalClasses","onEnter","onEntered","onEntering","onExit","onExited","onExiting","open","PaperProps","role","transformOrigin","TransitionComponent","transitionDuration","TransitionProps"]),N=A;"auto"!==A||T.muiSupportAuto||(N=void 0);var R=l||(n?(0,g.default)(_(n)).body:void 0);return d.default.createElement(v.default,(0,o.default)({classes:u,container:R,open:x,BackdropProps:{invisible:!0}},I),d.default.createElement(T,(0,o.default)({appear:!0,in:x,onEnter:c,onEntered:f,onExit:h,onExited:y,onExiting:S,role:k,timeout:N},O,{onEntering:(0,b.createChainedFunction)(this.handleEntering,O.onEntering)}),d.default.createElement(E.default,(0,o.default)({className:i.paper,elevation:s,ref:function(t){e.paperRef=p.default.findDOMNode(t)}},w),d.default.createElement(m.default,{target:"window",onResize:this.handleResize}),r)))}}]),t}(d.default.Component);A.defaultProps={anchorReference:"anchorEl",anchorOrigin:{vertical:"top",horizontal:"left"},elevation:8,marginThreshold:16,transformOrigin:{vertical:"top",horizontal:"left"},TransitionComponent:S.default,transitionDuration:"auto"};var C=(0,y.default)(T,{name:"MuiPopover"})(A);t.default=C},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(9)),i=r(n(5)),l=r(n(12)),s=r(n(13)),u=r(n(14)),c=r(n(15)),d=r(n(16)),p=r(n(45)),f=r(n(0)),m=r(n(22)),g=(r(n(1)),r(n(6))),h=(r(n(17)),n(7),r(n(26))),b=r(n(82)),y=r(n(83)),v=n(21),S=r(n(8)),E=r(n(144)),x=r(n(84)),w=n(148);function k(e){return!!e.children&&e.children.props.hasOwnProperty("in")}var _=function(e){return{root:{position:"fixed",zIndex:e.zIndex.modal,right:0,bottom:0,top:0,left:0},hidden:{visibility:"hidden"}}};t.styles=_;var T=function(e){function t(e){var n;return(0,l.default)(this,t),(n=(0,u.default)(this,(0,c.default)(t).call(this))).mounted=!1,n.handleOpen=function(){var e=(0,h.default)(n.mountNode),t=function(e,t){return e="function"==typeof e?e():e,m.default.findDOMNode(e)||t}(n.props.container,e.body);n.props.manager.add((0,p.default)((0,p.default)(n)),t),e.addEventListener("focus",n.enforceFocus,!0),n.dialogRef&&n.handleOpened()},n.handleRendered=function(){n.props.onRendered&&n.props.onRendered(),n.props.open?n.handleOpened():(0,w.ariaHidden)(n.modalRef,!0)},n.handleOpened=function(){n.autoFocus(),n.props.manager.mount((0,p.default)((0,p.default)(n))),n.modalRef.scrollTop=0},n.handleClose=function(e){k(n.props)&&n.props.closeAfterTransition&&"unmount"!==e||n.props.manager.remove((0,p.default)((0,p.default)(n))),(0,h.default)(n.mountNode).removeEventListener("focus",n.enforceFocus,!0),n.restoreLastFocus()},n.handleExited=function(){n.props.closeAfterTransition&&n.props.manager.remove((0,p.default)((0,p.default)(n))),n.setState({exited:!0})},n.handleBackdropClick=function(e){e.target===e.currentTarget&&(n.props.onBackdropClick&&n.props.onBackdropClick(e),!n.props.disableBackdropClick&&n.props.onClose&&n.props.onClose(e,"backdropClick"))},n.handleKeyDown=function(e){"Escape"===e.key&&n.isTopModal()&&!e.defaultPrevented&&(e.stopPropagation(),n.props.onEscapeKeyDown&&n.props.onEscapeKeyDown(e),!n.props.disableEscapeKeyDown&&n.props.onClose&&n.props.onClose(e,"escapeKeyDown"))},n.enforceFocus=function(){if(n.isTopModal()&&!n.props.disableEnforceFocus&&n.mounted&&n.dialogRef){var e=(0,h.default)(n.mountNode).activeElement;n.dialogRef.contains(e)||n.dialogRef.focus()}},n.handlePortalRef=function(e){n.mountNode=e?e.getMountNode():e},n.handleModalRef=function(e){n.modalRef=e},n.onRootRef=function(e){n.dialogRef=e},n.state={exited:!e.open},n}return(0,d.default)(t,e),(0,s.default)(t,[{key:"componentDidMount",value:function(){this.mounted=!0,this.props.open&&this.handleOpen()}},{key:"componentDidUpdate",value:function(e){e.open&&!this.props.open?this.handleClose():!e.open&&this.props.open&&(this.lastFocus=(0,h.default)(this.mountNode).activeElement,this.handleOpen())}},{key:"componentWillUnmount",value:function(){this.mounted=!1,(this.props.open||k(this.props)&&!this.state.exited)&&this.handleClose("unmount")}},{key:"autoFocus",value:function(){if(!this.props.disableAutoFocus&&this.dialogRef){var e=(0,h.default)(this.mountNode).activeElement;this.dialogRef.contains(e)||(this.dialogRef.hasAttribute("tabIndex")||this.dialogRef.setAttribute("tabIndex",-1),this.lastFocus=e,this.dialogRef.focus())}}},{key:"restoreLastFocus",value:function(){!this.props.disableRestoreFocus&&this.lastFocus&&(this.lastFocus.focus&&this.lastFocus.focus(),this.lastFocus=null)}},{key:"isTopModal",value:function(){return this.props.manager.isTopModal(this)}},{key:"render",value:function(){var e=this.props,t=e.BackdropComponent,n=e.BackdropProps,r=e.children,l=e.classes,s=e.className,u=(e.closeAfterTransition,e.container),c=(e.disableAutoFocus,e.disableBackdropClick,e.disableEnforceFocus,e.disableEscapeKeyDown,e.disablePortal),d=(e.disableRestoreFocus,e.hideBackdrop),p=e.keepMounted,m=(e.manager,e.onBackdropClick,e.onClose,e.onEscapeKeyDown,e.onRendered,e.open),h=(0,i.default)(e,["BackdropComponent","BackdropProps","children","classes","className","closeAfterTransition","container","disableAutoFocus","disableBackdropClick","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","hideBackdrop","keepMounted","manager","onBackdropClick","onClose","onEscapeKeyDown","onRendered","open"]),S=this.state.exited,E=k(this.props);if(!p&&!m&&(!E||S))return null;var x={};return E&&(x.onExited=(0,v.createChainedFunction)(this.handleExited,r.props.onExited)),void 0===r.props.role&&(x.role=r.props.role||"document"),void 0===r.props.tabIndex&&(x.tabIndex=r.props.tabIndex||"-1"),f.default.createElement(y.default,{ref:this.handlePortalRef,container:u,disablePortal:c,onRendered:this.handleRendered},f.default.createElement("div",(0,o.default)({ref:this.handleModalRef,onKeyDown:this.handleKeyDown,role:"presentation",className:(0,g.default)(l.root,s,(0,a.default)({},l.hidden,S))},h),d?null:f.default.createElement(t,(0,o.default)({open:m,onClick:this.handleBackdropClick},n)),f.default.createElement(b.default,{rootRef:this.onRootRef},f.default.cloneElement(r,x))))}}],[{key:"getDerivedStateFromProps",value:function(e){return e.open?{exited:!1}:k(e)?null:{exited:!0}}}]),t}(f.default.Component);T.defaultProps={BackdropComponent:x.default,closeAfterTransition:!1,disableAutoFocus:!1,disableBackdropClick:!1,disableEnforceFocus:!1,disableEscapeKeyDown:!1,disablePortal:!1,disableRestoreFocus:!1,hideBackdrop:!1,keepMounted:!1,manager:new E.default};var A=(0,S.default)(_,{flip:!1,name:"MuiModal"})(T);t.default=A},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(12)),a=r(n(13)),i=r(n(14)),l=r(n(15)),s=r(n(16)),u=r(n(0)),c=r(n(22)),d=(r(n(1)),n(7),n(32));var p=function(e){function t(){return(0,o.default)(this,t),(0,i.default)(this,(0,l.default)(t).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"componentDidMount",value:function(){this.ref=c.default.findDOMNode(this),(0,d.setRef)(this.props.rootRef,this.ref)}},{key:"componentDidUpdate",value:function(e){var t=c.default.findDOMNode(this);e.rootRef===this.props.rootRef&&this.ref===t||(e.rootRef!==this.props.rootRef&&(0,d.setRef)(e.rootRef,null),this.ref=t,(0,d.setRef)(this.props.rootRef,this.ref))}},{key:"componentWillUnmount",value:function(){this.ref=null,(0,d.setRef)(this.props.rootRef,null)}},{key:"render",value:function(){return this.props.children}}]),t}(u.default.Component);t.default=p},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(12)),a=r(n(13)),i=r(n(14)),l=r(n(15)),s=r(n(16)),u=r(n(0)),c=r(n(22)),d=(r(n(1)),r(n(26)));n(7);var p=function(e){function t(){var e,n;(0,o.default)(this,t);for(var r=arguments.length,a=new Array(r),s=0;se.clientHeight;var r=n.getComputedStyle(t.body),s=parseInt(r.getPropertyValue("margin-left"),10),u=parseInt(r.getPropertyValue("margin-right"),10);return s+t.body.clientWidth+u=0?t.children[e].focus():t.firstChild.focus())}},{key:"resetTabIndex",value:function(){for(var e=this.listRef,t=(0,f.default)(e).activeElement,n=[],r=0;r=Number(e.rows)&&(n=Math.min(Number(e.rowsMax)*t,n)),n=Math.max(n,t),Math.abs(this.state.height-n)>1&&this.setState({height:n}))}}},{key:"render",value:function(){var e=this.props,t=e.classes,n=e.className,r=e.defaultValue,i=(e.onChange,e.rows),l=(e.rowsMax,e.style),s=(e.textareaRef,e.value),u=(0,a.default)(e,["classes","className","defaultValue","onChange","rows","rowsMax","style","textareaRef","value"]);return d.default.createElement("div",{className:t.root},d.default.createElement(m.default,{target:"window",onResize:this.handleResize}),d.default.createElement("textarea",{"aria-hidden":"true",className:(0,p.default)(t.textarea,t.shadow),readOnly:!0,ref:this.handleRefSinglelineShadow,rows:"1",tabIndex:-1,value:""}),d.default.createElement("textarea",{"aria-hidden":"true",className:(0,p.default)(t.textarea,t.shadow),defaultValue:r,readOnly:!0,ref:this.handleRefShadow,rows:i,tabIndex:-1,value:s}),d.default.createElement("textarea",(0,o.default)({rows:i,className:(0,p.default)(t.textarea,n),defaultValue:r,value:s,onChange:this.handleChange,ref:this.handleRefInput,style:(0,o.default)({height:this.state.height},l)},u)))}}]),t}(d.default.Component);v.defaultProps={rows:1};var S=(0,g.default)(y,{name:"MuiPrivateTextarea"})(v);t.default=S},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(5)),i=r(n(0)),l=(r(n(1)),n(7),r(n(150))),s=r(n(8)),u=r(n(33)),c=r(n(25)),d=r(n(149)),p=r(n(36)),f=function(e){return{root:{position:"relative",width:"100%"},select:{"-moz-appearance":"none","-webkit-appearance":"none",userSelect:"none",paddingRight:32,borderRadius:0,height:"1.1875em",width:"calc(100% - 32px)",minWidth:16,cursor:"pointer","&:focus":{backgroundColor:"light"===e.palette.type?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)",borderRadius:0},"&::-ms-expand":{display:"none"},"&$disabled":{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:e.palette.background.paper}},filled:{width:"calc(100% - 44px)"},outlined:{width:"calc(100% - 46px)",borderRadius:e.shape.borderRadius},selectMenu:{width:"auto",height:"auto",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",minHeight:"1.1875em"},disabled:{},icon:{position:"absolute",right:0,top:"calc(50% - 12px)",color:e.palette.action.active,"pointer-events":"none"}}};function m(e){var t=e.children,n=e.classes,r=e.IconComponent,s=e.input,c=e.inputProps,d=e.muiFormControl,p=(e.variant,(0,a.default)(e,["children","classes","IconComponent","input","inputProps","muiFormControl","variant"])),f=(0,u.default)({props:e,muiFormControl:d,states:["variant"]});return i.default.cloneElement(s,(0,o.default)({inputComponent:l.default,inputProps:(0,o.default)({children:t,classes:n,IconComponent:r,variant:f.variant,type:void 0},c,s?s.props.inputProps:{})},p))}t.styles=f,m.defaultProps={IconComponent:d.default,input:i.default.createElement(p.default,null)},m.muiName="Select";var g=(0,s.default)(f,{name:"MuiNativeSelect"})((0,c.default)(m));t.default=g},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(5)),i=r(n(0)),l=(r(n(1)),r(n(6))),s=r(n(8)),u=n(21),c=r(n(470)),d=function(e){return{root:{display:"inline-flex",width:62,position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle"},icon:{boxShadow:e.shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"},iconChecked:{boxShadow:e.shadows[2]},switchBase:{padding:0,height:48,width:48,color:"light"===e.palette.type?e.palette.grey[50]:e.palette.grey[400],transition:e.transitions.create("transform",{duration:e.transitions.duration.shortest})},checked:{transform:"translateX(14px)","& + $bar":{opacity:.5}},colorPrimary:{"&$checked":{color:e.palette.primary.main,"& + $bar":{backgroundColor:e.palette.primary.main}}},colorSecondary:{"&$checked":{color:e.palette.secondary.main,"& + $bar":{backgroundColor:e.palette.secondary.main}}},disabled:{"& + $bar":{opacity:"light"===e.palette.type?.12:.1},"& $icon":{boxShadow:e.shadows[1]},"&$switchBase":{color:"light"===e.palette.type?e.palette.grey[400]:e.palette.grey[800],"& + $bar":{backgroundColor:"light"===e.palette.type?e.palette.common.black:e.palette.common.white}}},bar:{borderRadius:7,display:"block",position:"absolute",zIndex:-1,width:34,height:14,top:"50%",left:"50%",marginTop:-7,marginLeft:-17,transition:e.transitions.create(["opacity","background-color"],{duration:e.transitions.duration.shortest}),backgroundColor:"light"===e.palette.type?e.palette.common.black:e.palette.common.white,opacity:"light"===e.palette.type?.38:.3}}};function p(e){var t=e.classes,n=e.className,r=e.color,s=(0,a.default)(e,["classes","className","color"]);return i.default.createElement("span",{className:(0,l.default)(t.root,n)},i.default.createElement(c.default,(0,o.default)({type:"checkbox",icon:i.default.createElement("span",{className:t.icon}),classes:{root:(0,l.default)(t.switchBase,t["color".concat((0,u.capitalize)(r))]),checked:t.checked,disabled:t.disabled},checkedIcon:i.default.createElement("span",{className:(0,l.default)(t.icon,t.iconChecked)})},s)),i.default.createElement("span",{className:t.bar}))}t.styles=d,p.defaultProps={color:"secondary"};var f=(0,s.default)(d,{name:"MuiSwitch"})(p);t.default=f},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(9)),i=r(n(5)),l=r(n(12)),s=r(n(13)),u=r(n(14)),c=r(n(15)),d=r(n(16)),p=r(n(0)),f=(r(n(1)),r(n(6))),m=r(n(25)),g=r(n(8)),h=r(n(91)),b={root:{display:"inline-flex",alignItems:"center",transition:"none","&:hover":{backgroundColor:"transparent"}},checked:{},disabled:{},input:{cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0}};t.styles=b;var y=function(e){function t(e){var n;return(0,l.default)(this,t),(n=(0,u.default)(this,(0,c.default)(t).call(this))).handleFocus=function(e){n.props.onFocus&&n.props.onFocus(e);var t=n.props.muiFormControl;t&&t.onFocus&&t.onFocus(e)},n.handleBlur=function(e){n.props.onBlur&&n.props.onBlur(e);var t=n.props.muiFormControl;t&&t.onBlur&&t.onBlur(e)},n.handleInputChange=function(e){var t=e.target.checked;n.isControlled||n.setState({checked:t}),n.props.onChange&&n.props.onChange(e,t)},n.isControlled=null!=e.checked,n.state={},n.isControlled||(n.state.checked=void 0!==e.defaultChecked&&e.defaultChecked),n}return(0,d.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){var e,t=this.props,n=t.autoFocus,r=t.checked,l=t.checkedIcon,s=t.classes,u=t.className,c=t.defaultChecked,d=t.disabled,m=t.icon,g=t.id,b=t.inputProps,y=t.inputRef,v=t.muiFormControl,S=t.name,E=(t.onBlur,t.onChange,t.onFocus,t.readOnly),x=t.required,w=t.tabIndex,k=t.type,_=t.value,T=(0,i.default)(t,["autoFocus","checked","checkedIcon","classes","className","defaultChecked","disabled","icon","id","inputProps","inputRef","muiFormControl","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"]),A=d;v&&void 0===A&&(A=v.disabled);var C=this.isControlled?r:this.state.checked,O="checkbox"===k||"radio"===k;return p.default.createElement(h.default,(0,o.default)({component:"span",className:(0,f.default)(s.root,(e={},(0,a.default)(e,s.checked,C),(0,a.default)(e,s.disabled,A),e),u),disabled:A,tabIndex:null,role:void 0,onFocus:this.handleFocus,onBlur:this.handleBlur},T),C?l:m,p.default.createElement("input",(0,o.default)({autoFocus:n,checked:r,defaultChecked:c,className:s.input,disabled:A,id:O&&g,name:S,onChange:this.handleInputChange,readOnly:E,ref:y,required:x,tabIndex:w,type:k,value:_},b)))}}]),t}(p.default.Component),v=(0,g.default)(b,{name:"MuiPrivateSwitchBase"})((0,m.default)(y));t.default=v},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(9)),i=r(n(5)),l=r(n(0)),s=(r(n(1)),r(n(6))),u=(n(7),r(n(8))),c=n(31),d=r(n(53)),p=n(21),f=function(e){return{root:{textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:12,borderRadius:"50%",overflow:"visible",color:e.palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{backgroundColor:(0,c.fade)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"},"&$disabled":{backgroundColor:"transparent"}},"&$disabled":{color:e.palette.action.disabled}},colorInherit:{color:"inherit"},colorPrimary:{color:e.palette.primary.main,"&:hover":{backgroundColor:(0,c.fade)(e.palette.primary.main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},colorSecondary:{color:e.palette.secondary.main,"&:hover":{backgroundColor:(0,c.fade)(e.palette.secondary.main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},disabled:{},label:{width:"100%",display:"flex",alignItems:"inherit",justifyContent:"inherit"}}};function m(e){var t,n=e.children,r=e.classes,u=e.className,c=e.color,f=e.disabled,m=(0,i.default)(e,["children","classes","className","color","disabled"]);return l.default.createElement(d.default,(0,o.default)({className:(0,s.default)(r.root,(t={},(0,a.default)(t,r["color".concat((0,p.capitalize)(c))],"default"!==c),(0,a.default)(t,r.disabled,f),t),u),centerRipple:!0,focusRipple:!0,disabled:f},m),l.default.createElement("span",{className:r.label},n))}t.styles=f,m.defaultProps={color:"default",disabled:!1};var g=(0,u.default)(f,{name:"MuiIconButton"})(m);t.default=g},function(e,t,n){"use strict";var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.styles=void 0;var o=r(n(4)),a=r(n(5)),i=r(n(12)),l=r(n(13)),s=r(n(14)),u=r(n(15)),c=r(n(16)),d=r(n(0)),p=(r(n(1)),r(n(6))),f=(n(7),r(n(8))),m=r(n(153)),g=function(e){return{root:{display:"table",fontFamily:e.typography.fontFamily,width:"100%",borderCollapse:"collapse",borderSpacing:0}}};t.styles=g;var h=function(e){function t(){var e,n;(0,i.default)(this,t);for(var r=arguments.length,o=new Array(r),a=0;a0?.75*r+8:0;return l.default.createElement("fieldset",(0,a.default)({"aria-hidden":!0,style:(0,a.default)((0,o.default)({},"padding".concat((0,c.capitalize)(m)),8+(u?0:g/2)),d),className:(0,s.default)(t.root,n)},f),l.default.createElement("legend",{className:t.legend,style:{width:u?g:.01}},l.default.createElement("span",{dangerouslySetInnerHTML:{__html:"​"}})))});t.default=p},function(e,t,n){"use strict";var r=n(483),o=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.MuiThemeProviderOld=void 0;var a=o(n(4)),i=o(n(9)),l=o(n(12)),s=o(n(13)),u=o(n(14)),c=o(n(15)),d=o(n(16)),p=o(n(0)),f=o(n(1)),m=(o(n(17)),o(n(484))),g=n(7),h=r(n(69)),b=function(e){function t(e,n){var r;return(0,l.default)(this,t),(r=(0,u.default)(this,(0,c.default)(t).call(this))).broadcast=(0,m.default)(),r.outerTheme=h.default.initial(n),r.broadcast.setState(r.mergeOuterLocalTheme(e.theme)),r}return(0,d.default)(t,e),(0,s.default)(t,[{key:"getChildContext",value:function(){var e,t=this.props,n=t.disableStylesGeneration,r=t.sheetsCache,o=t.sheetsManager,a=this.context.muiThemeProviderOptions||{};return void 0!==n&&(a.disableStylesGeneration=n),void 0!==r&&(a.sheetsCache=r),void 0!==o&&(a.sheetsManager=o),e={},(0,i.default)(e,h.CHANNEL,this.broadcast),(0,i.default)(e,"muiThemeProviderOptions",a),e}},{key:"componentDidMount",value:function(){var e=this;this.unsubscribeId=h.default.subscribe(this.context,function(t){e.outerTheme=t,e.broadcast.setState(e.mergeOuterLocalTheme(e.props.theme))})}},{key:"componentDidUpdate",value:function(e){this.props.theme!==e.theme&&this.broadcast.setState(this.mergeOuterLocalTheme(this.props.theme))}},{key:"componentWillUnmount",value:function(){null!==this.unsubscribeId&&h.default.unsubscribe(this.context,this.unsubscribeId)}},{key:"mergeOuterLocalTheme",value:function(e){return"function"==typeof e?e(this.outerTheme):this.outerTheme?(0,a.default)({},this.outerTheme,e):e}},{key:"render",value:function(){return this.props.children}}]),t}(p.default.Component);t.MuiThemeProviderOld=b,b.childContextTypes=(0,a.default)({},h.default.contextTypes,{muiThemeProviderOptions:f.default.object}),b.contextTypes=(0,a.default)({},h.default.contextTypes,{muiThemeProviderOptions:f.default.object}),g.ponyfillGlobal.__MUI_STYLES__||(g.ponyfillGlobal.__MUI_STYLES__={}),g.ponyfillGlobal.__MUI_STYLES__.MuiThemeProvider||(g.ponyfillGlobal.__MUI_STYLES__.MuiThemeProvider=b);var y=g.ponyfillGlobal.__MUI_STYLES__.MuiThemeProvider;t.default=y},function(e,t){e.exports=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}},function(e,t,n){"use strict";n.r(t),t.default=function(e){var t={},n=1,r=e;return{getState:function(){return r},setState:function(e){r=e;for(var n=Object.keys(t),o=0,a=n.length;o4&&n.slice(0,4)===i&&l.test(t)&&("-"===t.charAt(4)?p=function(e){var t=e.slice(5).replace(s,d);return i+t.charAt(0).toUpperCase()+t.slice(1)}(t):t=function(e){var t=e.slice(4);if(s.test(t))return e;"-"!==(t=t.replace(u,c)).charAt(0)&&(t="-"+t);return i+t}(t),f=o);return new f(p,t)};var l=/^data[-a-z0-9.:_]+$/i,s=/-[a-z]/g,u=/[A-Z]/g;function c(e){return"-"+e.toLowerCase()}function d(e){return e.charAt(1).toUpperCase()}},function(e,t,n){"use strict";e.exports=function(e,t){var n,a,i,l,s,u=e||"",c=t||"div",d={},p=-1,f=u.length;for(;++p<=f;)(i=u.charCodeAt(p))&&i!==r&&i!==o||((l=u.slice(s,p))&&(a===r?n?n.push(l):(n=[l],d.className=n):a===o?d.id=l:c=l),s=p+1,a=i);return{type:"element",tagName:c,properties:d,children:[]}};var r=".".charCodeAt(0),o="#".charCodeAt(0)},function(e,t,n){"use strict";var r=n(24);t.parse=function(e){var t=r(String(e||o));return t===o?[]:t.split(i)},t.stringify=function(e){return r(e.join(a))};var o="",a=" ",i=/[ \t\n\r\f]+/g},function(e,t,n){"use strict";t.parse=function(e){var t,n=[],a=String(e||i),l=a.indexOf(o),s=0,u=!1;for(;!u;)-1===l&&(l=a.length,u=!0),!(t=r(a.slice(s,l)))&&u||n.push(t),s=l+1,l=a.indexOf(o,s);return n},t.stringify=function(e,t){var n=t||{},l=!1===n.padLeft?i:a,s=n.padRight?a:i;e[e.length-1]===i&&(e=e.concat(i));return r(e.join(s+o+l))};var r=n(24),o=",",a=" ",i=""},function(e,t,n){(function(t){var n="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},r=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,r=n.Prism={manual:n.Prism&&n.Prism.manual,disableWorkerMessageHandler:n.Prism&&n.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof o?new o(e.type,r.util.encode(e.content),e.alias):"Array"===r.util.type(e)?e.map(r.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(E instanceof s)){if(g&&v!=t.length-1){if(p.lastIndex=S,!(A=p.exec(e)))break;for(var x=A.index+(m?A[1].length:0),w=A.index+A[0].length,k=v,_=S,T=t.length;k=(_+=t[k].length)&&(++v,S=_);if(t[v]instanceof s)continue;C=k-v,E=e.slice(S,_),A.index-=S}else{p.lastIndex=0;var A=p.exec(E),C=1}if(A){m&&(h=A[1]?A[1].length:0);w=(x=A.index+h)+(A=A[0].slice(h)).length;var O=E.slice(0,x),I=E.slice(w),N=[v,C];O&&(++v,S+=O.length,N.push(O));var R=new s(u,f?r.tokenize(A,f):A,b,A,g);if(N.push(R),I&&N.push(I),Array.prototype.splice.apply(t,N),1!=C&&r.matchGrammar(e,t,n,v,S,!0,u),i)break}else if(i)break}}}}},tokenize:function(e,t,n){var o=[e],a=t.rest;if(a){for(var i in a)t[i]=a[i];delete t.rest}return r.matchGrammar(e,o,t,0,0,!1),o},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var o,a=0;o=n[a++];)o(t)}}},o=r.Token=function(e,t,n,r,o){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!o};if(o.stringify=function(e,t,n){if("string"==typeof e)return e;if("Array"===r.util.type(e))return e.map(function(n){return o.stringify(n,t,e)}).join("");var a={type:e.type,content:o.stringify(e.content,t,n),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:n};if(e.alias){var i="Array"===r.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(a.classes,i)}r.hooks.run("wrap",a);var l=Object.keys(a.attributes).map(function(e){return e+'="'+(a.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+(l?" "+l:"")+">"+a.content+""},!n.document)return n.addEventListener?(r.disableWorkerMessageHandler||n.addEventListener("message",function(e){var t=JSON.parse(e.data),o=t.language,a=t.code,i=t.immediateClose;n.postMessage(r.highlight(a,r.languages[o],o)),i&&n.close()},!1),n.Prism):n.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(r.filename=a.src,r.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(r.highlightAll):window.setTimeout(r.highlightAll,16):document.addEventListener("DOMContentLoaded",r.highlightAll))),n.Prism}();e.exports&&(e.exports=r),void 0!==t&&(t.Prism=r)}).call(this,n(27))},function(e,t,n){"use strict";function r(e){e.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},e.languages.markup.tag.inside["attr-value"].inside.entity=e.languages.markup.entity,e.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.value.replace(/&/,"&"))}),e.languages.xml=e.languages.markup,e.languages.html=e.languages.markup,e.languages.mathml=e.languages.markup,e.languages.svg=e.languages.markup}e.exports=r,r.displayName="markup",r.aliases=["xml","html","mathml","svg"]},function(e,t,n){"use strict";function r(e){e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup&&(e.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:e.languages.css,alias:"language-css",greedy:!0}}),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:e.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:e.languages.css}},alias:"language-css"}},e.languages.markup.tag))}e.exports=r,r.displayName="css",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="clike",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.javascript=e.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),e.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),e.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}}}),e.languages.javascript["template-string"].inside.interpolation.inside.rest=e.languages.javascript,e.languages.markup&&e.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:e.languages.javascript,alias:"language-javascript",greedy:!0}}),e.languages.js=e.languages.javascript}e.exports=r,r.displayName="javascript",r.aliases=["js"]},function(e,t,n){"use strict";function r(e){e.languages.abap={comment:/^\*.*/m,string:/(`|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,"string-template":{pattern:/([|}])(?:\\.|[^\\|{\r\n])*(?=[|{])/,lookbehind:!0,alias:"string"},"eol-comment":{pattern:/(^|\s)".*/m,lookbehind:!0,alias:"comment"},keyword:{pattern:/(\s|\.|^)(?:SCIENTIFIC_WITH_LEADING_ZERO|SCALE_PRESERVING_SCIENTIFIC|RMC_COMMUNICATION_FAILURE|END-ENHANCEMENT-SECTION|MULTIPLY-CORRESPONDING|SUBTRACT-CORRESPONDING|VERIFICATION-MESSAGE|DIVIDE-CORRESPONDING|ENHANCEMENT-SECTION|CURRENCY_CONVERSION|RMC_SYSTEM_FAILURE|START-OF-SELECTION|MOVE-CORRESPONDING|RMC_INVALID_STATUS|CUSTOMER-FUNCTION|END-OF-DEFINITION|ENHANCEMENT-POINT|SYSTEM-EXCEPTIONS|ADD-CORRESPONDING|SCALE_PRESERVING|SELECTION-SCREEN|CURSOR-SELECTION|END-OF-SELECTION|LOAD-OF-PROGRAM|SCROLL-BOUNDARY|SELECTION-TABLE|EXCEPTION-TABLE|IMPLEMENTATIONS|PARAMETER-TABLE|RIGHT-JUSTIFIED|UNIT_CONVERSION|AUTHORITY-CHECK|LIST-PROCESSING|SIGN_AS_POSTFIX|COL_BACKGROUND|IMPLEMENTATION|INTERFACE-POOL|TRANSFORMATION|IDENTIFICATION|ENDENHANCEMENT|LINE-SELECTION|INITIALIZATION|LEFT-JUSTIFIED|SELECT-OPTIONS|SELECTION-SETS|COMMUNICATION|CORRESPONDING|DECIMAL_SHIFT|PRINT-CONTROL|VALUE-REQUEST|CHAIN-REQUEST|FUNCTION-POOL|FIELD-SYMBOLS|FUNCTIONALITY|INVERTED-DATE|SELECTION-SET|CLASS-METHODS|OUTPUT-LENGTH|CLASS-CODING|COL_NEGATIVE|ERRORMESSAGE|FIELD-GROUPS|HELP-REQUEST|NO-EXTENSION|NO-TOPOFPAGE|REDEFINITION|DISPLAY-MODE|ENDINTERFACE|EXIT-COMMAND|FIELD-SYMBOL|NO-SCROLLING|SHORTDUMP-ID|ACCESSPOLICY|CLASS-EVENTS|COL_POSITIVE|DECLARATIONS|ENHANCEMENTS|FILTER-TABLE|SWITCHSTATES|SYNTAX-CHECK|TRANSPORTING|ASYNCHRONOUS|SYNTAX-TRACE|TOKENIZATION|USER-COMMAND|WITH-HEADING|ABAP-SOURCE|BREAK-POINT|CHAIN-INPUT|COMPRESSION|FIXED-POINT|NEW-SECTION|NON-UNICODE|OCCURRENCES|RESPONSIBLE|SYSTEM-CALL|TRACE-TABLE|ABBREVIATED|CHAR-TO-HEX|END-OF-FILE|ENDFUNCTION|ENVIRONMENT|ASSOCIATION|COL_HEADING|EDITOR-CALL|END-OF-PAGE|ENGINEERING|IMPLEMENTED|INTENSIFIED|RADIOBUTTON|SYSTEM-EXIT|TOP-OF-PAGE|TRANSACTION|APPLICATION|CONCATENATE|DESTINATION|ENHANCEMENT|IMMEDIATELY|NO-GROUPING|PRECOMPILED|REPLACEMENT|TITLE-LINES|ACTIVATION|BYTE-ORDER|CLASS-POOL|CONNECTION|CONVERSION|DEFINITION|DEPARTMENT|EXPIRATION|INHERITING|MESSAGE-ID|NO-HEADING|PERFORMING|QUEUE-ONLY|RIGHTSPACE|SCIENTIFIC|STATUSINFO|STRUCTURES|SYNCPOINTS|WITH-TITLE|ATTRIBUTES|BOUNDARIES|CLASS-DATA|COL_NORMAL|DD\/MM\/YYYY|DESCENDING|INTERFACES|LINE-COUNT|MM\/DD\/YYYY|NON-UNIQUE|PRESERVING|SELECTIONS|STATEMENTS|SUBROUTINE|TRUNCATION|TYPE-POOLS|ARITHMETIC|BACKGROUND|ENDPROVIDE|EXCEPTIONS|IDENTIFIER|INDEX-LINE|OBLIGATORY|PARAMETERS|PERCENTAGE|PUSHBUTTON|RESOLUTION|COMPONENTS|DEALLOCATE|DISCONNECT|DUPLICATES|FIRST-LINE|HEAD-LINES|NO-DISPLAY|OCCURRENCE|RESPECTING|RETURNCODE|SUBMATCHES|TRACE-FILE|ASCENDING|BYPASSING|ENDMODULE|EXCEPTION|EXCLUDING|EXPORTING|INCREMENT|MATCHCODE|PARAMETER|PARTIALLY|PREFERRED|REFERENCE|REPLACING|RETURNING|SELECTION|SEPARATED|SPECIFIED|STATEMENT|TIMESTAMP|TYPE-POOL|ACCEPTING|APPENDAGE|ASSIGNING|COL_GROUP|COMPARING|CONSTANTS|DANGEROUS|IMPORTING|INSTANCES|LEFTSPACE|LOG-POINT|QUICKINFO|READ-ONLY|SCROLLING|SQLSCRIPT|STEP-LOOP|TOP-LINES|TRANSLATE|APPENDING|AUTHORITY|CHARACTER|COMPONENT|CONDITION|DIRECTORY|DUPLICATE|MESSAGING|RECEIVING|SUBSCREEN|ACCORDING|COL_TOTAL|END-LINES|ENDMETHOD|ENDSELECT|EXPANDING|EXTENSION|INCLUDING|INFOTYPES|INTERFACE|INTERVALS|LINE-SIZE|PF-STATUS|PROCEDURE|PROTECTED|REQUESTED|RESUMABLE|RIGHTPLUS|SAP-SPOOL|SECONDARY|STRUCTURE|SUBSTRING|TABLEVIEW|NUMOFCHAR|ADJACENT|ANALYSIS|ASSIGNED|BACKWARD|CHANNELS|CHECKBOX|CONTINUE|CRITICAL|DATAINFO|DD\/MM\/YY|DURATION|ENCODING|ENDCLASS|FUNCTION|LEFTPLUS|LINEFEED|MM\/DD\/YY|OVERFLOW|RECEIVED|SKIPPING|SORTABLE|STANDARD|SUBTRACT|SUPPRESS|TABSTRIP|TITLEBAR|TRUNCATE|UNASSIGN|WHENEVER|ANALYZER|COALESCE|COMMENTS|CONDENSE|DECIMALS|DEFERRED|ENDWHILE|EXPLICIT|KEYWORDS|MESSAGES|POSITION|PRIORITY|RECEIVER|RENAMING|TIMEZONE|TRAILING|ALLOCATE|CENTERED|CIRCULAR|CONTROLS|CURRENCY|DELETING|DESCRIBE|DISTANCE|ENDCATCH|EXPONENT|EXTENDED|GENERATE|IGNORING|INCLUDES|INTERNAL|MAJOR-ID|MODIFIER|NEW-LINE|OPTIONAL|PROPERTY|ROLLBACK|STARTING|SUPPLIED|ABSTRACT|CHANGING|CONTEXTS|CREATING|CUSTOMER|DATABASE|DAYLIGHT|DEFINING|DISTINCT|DIVISION|ENABLING|ENDCHAIN|ESCAPING|HARMLESS|IMPLICIT|INACTIVE|LANGUAGE|MINOR-ID|MULTIPLY|NEW-PAGE|NO-TITLE|POS_HIGH|SEPARATE|TEXTPOOL|TRANSFER|SELECTOR|DBMAXLEN|ITERATOR|SELECTOR|ARCHIVE|BIT-XOR|BYTE-CO|COLLECT|COMMENT|CURRENT|DEFAULT|DISPLAY|ENDFORM|EXTRACT|LEADING|LISTBOX|LOCATOR|MEMBERS|METHODS|NESTING|POS_LOW|PROCESS|PROVIDE|RAISING|RESERVE|SECONDS|SUMMARY|VISIBLE|BETWEEN|BIT-AND|BYTE-CS|CLEANUP|COMPUTE|CONTROL|CONVERT|DATASET|ENDCASE|FORWARD|HEADERS|HOTSPOT|INCLUDE|INVERSE|KEEPING|NO-ZERO|OBJECTS|OVERLAY|PADDING|PATTERN|PROGRAM|REFRESH|SECTION|SUMMING|TESTING|VERSION|WINDOWS|WITHOUT|BIT-NOT|BYTE-CA|BYTE-NA|CASTING|CONTEXT|COUNTRY|DYNAMIC|ENABLED|ENDLOOP|EXECUTE|FRIENDS|HANDLER|HEADING|INITIAL|\*-INPUT|LOGFILE|MAXIMUM|MINIMUM|NO-GAPS|NO-SIGN|PRAGMAS|PRIMARY|PRIVATE|REDUCED|REPLACE|REQUEST|RESULTS|UNICODE|WARNING|ALIASES|BYTE-CN|BYTE-NS|CALLING|COL_KEY|COLUMNS|CONNECT|ENDEXEC|ENTRIES|EXCLUDE|FILTERS|FURTHER|HELP-ID|LOGICAL|MAPPING|MESSAGE|NAMETAB|OPTIONS|PACKAGE|PERFORM|RECEIVE|STATICS|VARYING|BINDING|CHARLEN|GREATER|XSTRLEN|ACCEPT|APPEND|DETAIL|ELSEIF|ENDING|ENDTRY|FORMAT|FRAMES|GIVING|HASHED|HEADER|IMPORT|INSERT|MARGIN|MODULE|NATIVE|OBJECT|OFFSET|REMOTE|RESUME|SAVING|SIMPLE|SUBMIT|TABBED|TOKENS|UNIQUE|UNPACK|UPDATE|WINDOW|YELLOW|ACTUAL|ASPECT|CENTER|CURSOR|DELETE|DIALOG|DIVIDE|DURING|ERRORS|EVENTS|EXTEND|FILTER|HANDLE|HAVING|IGNORE|LITTLE|MEMORY|NO-GAP|OCCURS|OPTION|PERSON|PLACES|PUBLIC|REDUCE|REPORT|RESULT|SINGLE|SORTED|SWITCH|SYNTAX|TARGET|VALUES|WRITER|ASSERT|BLOCKS|BOUNDS|BUFFER|CHANGE|COLUMN|COMMIT|CONCAT|COPIES|CREATE|DDMMYY|DEFINE|ENDIAN|ESCAPE|EXPAND|KERNEL|LAYOUT|LEGACY|LEVELS|MMDDYY|NUMBER|OUTPUT|RANGES|READER|RETURN|SCREEN|SEARCH|SELECT|SHARED|SOURCE|STABLE|STATIC|SUBKEY|SUFFIX|TABLES|UNWIND|YYMMDD|ASSIGN|BACKUP|BEFORE|BINARY|BIT-OR|BLANKS|CLIENT|CODING|COMMON|DEMAND|DYNPRO|EXCEPT|EXISTS|EXPORT|FIELDS|GLOBAL|GROUPS|LENGTH|LOCALE|MEDIUM|METHOD|MODIFY|NESTED|OTHERS|REJECT|SCROLL|SUPPLY|SYMBOL|ENDFOR|STRLEN|ALIGN|BEGIN|BOUND|ENDAT|ENTRY|EVENT|FINAL|FLUSH|GRANT|INNER|SHORT|USING|WRITE|AFTER|BLACK|BLOCK|CLOCK|COLOR|COUNT|DUMMY|EMPTY|ENDDO|ENDON|GREEN|INDEX|INOUT|LEAVE|LEVEL|LINES|MODIF|ORDER|OUTER|RANGE|RESET|RETRY|RIGHT|SMART|SPLIT|STYLE|TABLE|THROW|UNDER|UNTIL|UPPER|UTF-8|WHERE|ALIAS|BLANK|CLEAR|CLOSE|EXACT|FETCH|FIRST|FOUND|GROUP|LLANG|LOCAL|OTHER|REGEX|SPOOL|TITLE|TYPES|VALID|WHILE|ALPHA|BOXED|CATCH|CHAIN|CHECK|CLASS|COVER|ENDIF|EQUIV|FIELD|FLOOR|FRAME|INPUT|LOWER|MATCH|NODES|PAGES|PRINT|RAISE|ROUND|SHIFT|SPACE|SPOTS|STAMP|STATE|TASKS|TIMES|TRMAC|ULINE|UNION|VALUE|WIDTH|EQUAL|LOG10|TRUNC|BLOB|CASE|CEIL|CLOB|COND|EXIT|FILE|GAPS|HOLD|INCL|INTO|KEEP|KEYS|LAST|LINE|LONG|LPAD|MAIL|MODE|OPEN|PINK|READ|ROWS|TEST|THEN|ZERO|AREA|BACK|BADI|BYTE|CAST|EDIT|EXEC|FAIL|FIND|FKEQ|FONT|FREE|GKEQ|HIDE|INIT|ITNO|LATE|LOOP|MAIN|MARK|MOVE|NEXT|NULL|RISK|ROLE|UNIT|WAIT|ZONE|BASE|CALL|CODE|DATA|DATE|FKGE|GKGE|HIGH|KIND|LEFT|LIST|MASK|MESH|NAME|NODE|PACK|PAGE|POOL|SEND|SIGN|SIZE|SOME|STOP|TASK|TEXT|TIME|USER|VARY|WITH|WORD|BLUE|CONV|COPY|DEEP|ELSE|FORM|FROM|HINT|ICON|JOIN|LIKE|LOAD|ONLY|PART|SCAN|SKIP|SORT|TYPE|UNIX|VIEW|WHEN|WORK|ACOS|ASIN|ATAN|COSH|EACH|FRAC|LESS|RTTI|SINH|SQRT|TANH|AVG|BIT|DIV|ISO|LET|OUT|PAD|SQL|ALL|CI_|CPI|END|LOB|LPI|MAX|MIN|NEW|OLE|RUN|SET|\?TO|YES|ABS|ADD|AND|BIG|FOR|HDB|JOB|LOW|NOT|SAP|TRY|VIA|XML|ANY|GET|IDS|KEY|MOD|OFF|PUT|RAW|RED|REF|SUM|TAB|XSD|CNT|COS|EXP|LOG|SIN|TAN|XOR|AT|CO|CP|DO|GT|ID|IF|NS|OR|BT|CA|CS|GE|NA|NB|EQ|IN|LT|NE|NO|OF|ON|PF|TO|AS|BY|CN|IS|LE|NP|UP|E|I|M|O|Z|C|X)\b/i,lookbehind:!0},number:/\b\d+\b/,operator:{pattern:/(\s)(?:\*\*?|<[=>]?|>=?|\?=|[-+\/=])(?=\s)/,lookbehind:!0},"string-operator":{pattern:/(\s)&&?(?=\s)/,lookbehind:!0,alias:"keyword"},"token-operator":[{pattern:/(\w)(?:->?|=>|[~|{}])(?=\w)/,lookbehind:!0,alias:"punctuation"},{pattern:/[|{}]/,alias:"punctuation"}],punctuation:/[,.:()]/}}e.exports=r,r.displayName="abap",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.actionscript=e.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),e.languages.actionscript["class-name"].alias="function",e.languages.markup&&e.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:{rest:e.languages.markup}}})}e.exports=r,r.displayName="actionscript",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.ada={comment:/--.*/,string:/"(?:""|[^"\r\f\n])*"/i,number:[{pattern:/\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i},{pattern:/\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i}],"attr-name":/\b'\w+/i,keyword:/\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|new|return|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|not|null|of|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i,boolean:/\b(?:true|false)\b/i,operator:/<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/,punctuation:/\.\.?|[,;():]/,char:/'.'/,variable:/\b[a-z](?:[_a-z\d])*\b/i}}e.exports=r,r.displayName="ada",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/^(\s*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|AddAlt|AddAltByEncoding|AddAltByType|AddCharset|AddDefaultCharset|AddDescription|AddEncoding|AddHandler|AddIcon|AddIconByEncoding|AddIconByType|AddInputFilter|AddLanguage|AddModuleInfo|AddOutputFilter|AddOutputFilterByType|AddType|Alias|AliasMatch|Allow|AllowCONNECT|AllowEncodedSlashes|AllowMethods|AllowOverride|AllowOverrideList|Anonymous|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail|AsyncRequestWorkerFactor|AuthBasicAuthoritative|AuthBasicFake|AuthBasicProvider|AuthBasicUseDigestAlgorithm|AuthDBDUserPWQuery|AuthDBDUserRealmQuery|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile|AuthDigestAlgorithm|AuthDigestDomain|AuthDigestNonceLifetime|AuthDigestProvider|AuthDigestQop|AuthDigestShmemSize|AuthFormAuthoritative|AuthFormBody|AuthFormDisableNoStore|AuthFormFakeBasicAuth|AuthFormLocation|AuthFormLoginRequiredLocation|AuthFormLoginSuccessLocation|AuthFormLogoutLocation|AuthFormMethod|AuthFormMimetype|AuthFormPassword|AuthFormProvider|AuthFormSitePassphrase|AuthFormSize|AuthFormUsername|AuthGroupFile|AuthLDAPAuthorizePrefix|AuthLDAPBindAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareAsUser|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPInitialBindAsUser|AuthLDAPInitialBindPattern|AuthLDAPMaxSubGroupDepth|AuthLDAPRemoteUserAttribute|AuthLDAPRemoteUserIsDN|AuthLDAPSearchAsUser|AuthLDAPSubGroupAttribute|AuthLDAPSubGroupClass|AuthLDAPUrl|AuthMerging|AuthName|AuthnCacheContext|AuthnCacheEnable|AuthnCacheProvideFor|AuthnCacheSOCache|AuthnCacheTimeout|AuthnzFcgiCheckAuthnProvider|AuthnzFcgiDefineProvider|AuthType|AuthUserFile|AuthzDBDLoginToReferer|AuthzDBDQuery|AuthzDBDRedirectQuery|AuthzDBMType|AuthzSendForbiddenOnFailure|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|CacheDefaultExpire|CacheDetailHeader|CacheDirLength|CacheDirLevels|CacheDisable|CacheEnable|CacheFile|CacheHeader|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheIgnoreQueryString|CacheIgnoreURLSessionIdentifiers|CacheKeyBaseURL|CacheLastModifiedFactor|CacheLock|CacheLockMaxAge|CacheLockPath|CacheMaxExpire|CacheMaxFileSize|CacheMinExpire|CacheMinFileSize|CacheNegotiatedDocs|CacheQuickHandler|CacheReadSize|CacheReadTime|CacheRoot|CacheSocache|CacheSocacheMaxSize|CacheSocacheMaxTime|CacheSocacheMinTime|CacheSocacheReadSize|CacheSocacheReadTime|CacheStaleOnError|CacheStoreExpired|CacheStoreNoStore|CacheStorePrivate|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateInflateLimitRequestBody|DeflateInflateRatioBurst|DeflateInflateRatioLimit|DeflateMemLevel|DeflateWindowSize|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|HeartbeatAddress|HeartbeatListen|HeartbeatMaxServers|HeartbeatStorage|HeartbeatStorage|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|IndexHeadInsert|IndexIgnore|IndexIgnoreReset|IndexOptions|IndexOrderDefault|IndexStyleSheet|InputSed|ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionPoolTTL|LDAPConnectionTimeout|LDAPLibraryDebug|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPReferralHopLimit|LDAPReferrals|LDAPRetries|LDAPRetryDelay|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTimeout|LDAPTrustedClientCert|LDAPTrustedGlobalCert|LDAPTrustedMode|LDAPVerifyServerCert|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|LuaHookAccessChecker|LuaHookAuthChecker|LuaHookCheckUserID|LuaHookFixups|LuaHookInsertFilter|LuaHookLog|LuaHookMapToStorage|LuaHookTranslateName|LuaHookTypeChecker|LuaInherit|LuaInputFilter|LuaMapHandler|LuaOutputFilter|LuaPackageCPath|LuaPackagePath|LuaQuickHandler|LuaRoot|LuaScope|MaxConnectionsPerChild|MaxKeepAliveRequests|MaxMemFree|MaxRangeOverlaps|MaxRangeReversals|MaxRanges|MaxRequestWorkers|MaxSpareServers|MaxSpareThreads|MaxThreads|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|ProxyAddHeaders|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyExpressDBMFile|ProxyExpressDBMType|ProxyExpressEnable|ProxyFtpDirCharset|ProxyFtpEscapeWildcards|ProxyFtpListOnWildcard|ProxyHTMLBufSize|ProxyHTMLCharsetOut|ProxyHTMLDocType|ProxyHTMLEnable|ProxyHTMLEvents|ProxyHTMLExtended|ProxyHTMLFixups|ProxyHTMLInterp|ProxyHTMLLinks|ProxyHTMLMeta|ProxyHTMLStripComments|ProxyHTMLURLMap|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassInherit|ProxyPassInterpolateEnv|ProxyPassMatch|ProxyPassReverse|ProxyPassReverseCookieDomain|ProxyPassReverseCookiePath|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxySCGIInternalRedirect|ProxySCGISendfile|ProxySet|ProxySourceAddress|ProxyStatus|ProxyTimeout|ProxyVia|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIPHeader|RemoteIPInternalProxy|RemoteIPInternalProxyList|RemoteIPProxiesHeader|RemoteIPTrustedProxy|RemoteIPTrustedProxyList|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|RewriteBase|RewriteCond|RewriteEngine|RewriteMap|RewriteOptions|RewriteRule|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script|ScriptAlias|ScriptAliasMatch|ScriptInterpreterSource|ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock|SecureListen|SeeRequestTail|SendBufferSize|ServerAdmin|ServerAlias|ServerLimit|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|Session|SessionCookieName|SessionCookieName2|SessionCookieRemove|SessionCryptoCipher|SessionCryptoDriver|SessionCryptoPassphrase|SessionCryptoPassphraseFile|SessionDBDCookieName|SessionDBDCookieName2|SessionDBDCookieRemove|SessionDBDDeleteLabel|SessionDBDInsertLabel|SessionDBDPerUser|SessionDBDSelectLabel|SessionDBDUpdateLabel|SessionEnv|SessionExclude|SessionHeader|SessionInclude|SessionMaxAge|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSLCACertificateFile|SSLCACertificatePath|SSLCADNRequestFile|SSLCADNRequestPath|SSLCARevocationCheck|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLCompression|SSLCryptoDevice|SSLEngine|SSLFIPS|SSLHonorCipherOrder|SSLInsecureRenegotiation|SSLOCSPDefaultResponder|SSLOCSPEnable|SSLOCSPOverrideResponder|SSLOCSPResponderTimeout|SSLOCSPResponseMaxAge|SSLOCSPResponseTimeSkew|SSLOCSPUseRequestNonce|SSLOpenSSLConfCmd|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationCheck|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCheckPeerCN|SSLProxyCheckPeerExpire|SSLProxyCheckPeerName|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateChainFile|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRenegBufferSize|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLSessionTicketKeyFile|SSLSRPUnknownUserSeed|SSLSRPVerifierFile|SSLStaplingCache|SSLStaplingErrorCacheTimeout|SSLStaplingFakeTryLater|SSLStaplingForceURL|SSLStaplingResponderTimeout|SSLStaplingResponseMaxAge|SSLStaplingResponseTimeSkew|SSLStaplingReturnResponderErrors|SSLStaplingStandardCacheTimeout|SSLStrictSNIVHostCheck|SSLUserName|SSLUseStapling|SSLVerifyClient|SSLVerifyDepth|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:"property"},"directive-block":{pattern:/<\/?\b(?:AuthnProviderAlias|AuthzProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|RequireAll|RequireAny|RequireNone|VirtualHost)\b *.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:"tag"},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:"attr-value"},punctuation:/>/},alias:"tag"},"directive-flags":{pattern:/\[(?:\w,?)+\]/,alias:"keyword"},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/}}e.exports=r,r.displayName="apacheconf",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.apl={comment:/(?:⍝|#[! ]).*$/m,string:{pattern:/'(?:[^'\r\n]|'')*'/,greedy:!0},number:/¯?(?:\d*\.?\d+(?:e[+¯]?\d+)?|¯|∞)(?:j¯?(?:\d*\.?\d+(?:e[+¯]?\d+)?|¯|∞))?/i,statement:/:[A-Z][a-z][A-Za-z]*\b/,"system-function":{pattern:/⎕[A-Z]+/i,alias:"function"},constant:/[⍬⌾#⎕⍞]/,function:/[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/,"monadic-operator":{pattern:/[\\\/⌿⍀¨⍨⌶&∥]/,alias:"operator"},"dyadic-operator":{pattern:/[.⍣⍠⍤∘⌸@⌺]/,alias:"operator"},assignment:{pattern:/←/,alias:"keyword"},punctuation:/[\[;\]()◇⋄]/,dfn:{pattern:/[{}⍺⍵⍶⍹∇⍫:]/,alias:"builtin"}}}e.exports=r,r.displayName="apl",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.applescript={comment:[/\(\*(?:\(\*[\s\S]*?\*\)|[\s\S])*?\*\)/,/--.+/,/#.+/],string:/"(?:\\.|[^"\\\r\n])*"/,number:/(?:\b\d+\.?\d*|\B\.\d+)(?:e-?\d+)?\b/i,operator:[/[&=≠≤≥*+\-\/÷^]|[<>]=?/,/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,class:{pattern:/\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,alias:"builtin"},punctuation:/[{}():,¬«»《》]/}}e.exports=r,r.displayName="applescript",r.aliases=[]},function(e,t,n){"use strict";var r=n(96);function o(e){e.register(r),e.languages.arduino=e.languages.extend("cpp",{keyword:/\b(?:setup|if|else|while|do|for|return|in|instanceof|default|function|loop|goto|switch|case|new|try|throw|catch|finally|null|break|continue|boolean|bool|void|byte|word|string|String|array|int|long|integer|double)\b/,builtin:/\b(?:KeyboardController|MouseController|SoftwareSerial|EthernetServer|EthernetClient|LiquidCrystal|LiquidCrystal_I2C|RobotControl|GSMVoiceCall|EthernetUDP|EsploraTFT|HttpClient|RobotMotor|WiFiClient|GSMScanner|FileSystem|Scheduler|GSMServer|YunClient|YunServer|IPAddress|GSMClient|GSMModem|Keyboard|Ethernet|Console|GSMBand|Esplora|Stepper|Process|WiFiUDP|GSM_SMS|Mailbox|USBHost|Firmata|PImage|Client|Server|GSMPIN|FileIO|Bridge|Serial|EEPROM|Stream|Mouse|Audio|Servo|File|Task|GPRS|WiFi|Wire|TFT|GSM|SPI|SD|runShellCommandAsynchronously|analogWriteResolution|retrieveCallingNumber|printFirmwareVersion|analogReadResolution|sendDigitalPortPair|noListenOnLocalhost|readJoystickButton|setFirmwareVersion|readJoystickSwitch|scrollDisplayRight|getVoiceCallStatus|scrollDisplayLeft|writeMicroseconds|delayMicroseconds|beginTransmission|getSignalStrength|runAsynchronously|getAsynchronously|listenOnLocalhost|getCurrentCarrier|readAccelerometer|messageAvailable|sendDigitalPorts|lineFollowConfig|countryNameWrite|runShellCommand|readStringUntil|rewindDirectory|readTemperature|setClockDivider|readLightSensor|endTransmission|analogReference|detachInterrupt|countryNameRead|attachInterrupt|encryptionType|readBytesUntil|robotNameWrite|readMicrophone|robotNameRead|cityNameWrite|userNameWrite|readJoystickY|readJoystickX|mouseReleased|openNextFile|scanNetworks|noInterrupts|digitalWrite|beginSpeaker|mousePressed|isActionDone|mouseDragged|displayLogos|noAutoscroll|addParameter|remoteNumber|getModifiers|keyboardRead|userNameRead|waitContinue|processInput|parseCommand|printVersion|readNetworks|writeMessage|blinkVersion|cityNameRead|readMessage|setDataMode|parsePacket|isListening|setBitOrder|beginPacket|isDirectory|motorsWrite|drawCompass|digitalRead|clearScreen|serialEvent|rightToLeft|setTextSize|leftToRight|requestFrom|keyReleased|compassRead|analogWrite|interrupts|WiFiServer|disconnect|playMelody|parseFloat|autoscroll|getPINUsed|setPINUsed|setTimeout|sendAnalog|readSlider|analogRead|beginWrite|createChar|motorsStop|keyPressed|tempoWrite|readButton|subnetMask|debugPrint|macAddress|writeGreen|randomSeed|attachGPRS|readString|sendString|remotePort|releaseAll|mouseMoved|background|getXChange|getYChange|answerCall|getResult|voiceCall|endPacket|constrain|getSocket|writeJSON|getButton|available|connected|findUntil|readBytes|exitValue|readGreen|writeBlue|startLoop|IPAddress|isPressed|sendSysex|pauseMode|gatewayIP|setCursor|getOemKey|tuneWrite|noDisplay|loadImage|switchPIN|onRequest|onReceive|changePIN|playFile|noBuffer|parseInt|overflow|checkPIN|knobRead|beginTFT|bitClear|updateIR|bitWrite|position|writeRGB|highByte|writeRed|setSpeed|readBlue|noStroke|remoteIP|transfer|shutdown|hangCall|beginSMS|endWrite|attached|maintain|noCursor|checkReg|checkPUK|shiftOut|isValid|shiftIn|pulseIn|connect|println|localIP|pinMode|getIMEI|display|noBlink|process|getBand|running|beginSD|drawBMP|lowByte|setBand|release|bitRead|prepare|pointTo|readRed|setMode|noFill|remove|listen|stroke|detach|attach|noTone|exists|buffer|height|bitSet|circle|config|cursor|random|IRread|setDNS|endSMS|getKey|micros|millis|begin|print|write|ready|flush|width|isPIN|blink|clear|press|mkdir|rmdir|close|point|yield|image|BSSID|click|delay|read|text|move|peek|beep|rect|line|open|seek|fill|size|turn|stop|home|find|step|tone|sqrt|RSSI|SSID|end|bit|tan|cos|sin|pow|map|abs|max|min|get|run|put)\b/,constant:/\b(?:DIGITAL_MESSAGE|FIRMATA_STRING|ANALOG_MESSAGE|REPORT_DIGITAL|REPORT_ANALOG|INPUT_PULLUP|SET_PIN_MODE|INTERNAL2V56|SYSTEM_RESET|LED_BUILTIN|INTERNAL1V1|SYSEX_START|INTERNAL|EXTERNAL|DEFAULT|OUTPUT|INPUT|HIGH|LOW)\b/})}e.exports=o,o.displayName="arduino",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.arff={comment:/%.*/,string:{pattern:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/@(?:attribute|data|end|relation)\b/i,number:/\b\d+(?:\.\d+)?\b/,punctuation:/[{},]/}}e.exports=r,r.displayName="arff",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t={pattern:/(^[ \t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\]\\]|\\.)*\]|[^\]\\]|\\.)*\]/m,lookbehind:!0,inside:{quoted:{pattern:/([$`])(?:(?!\1)[^\\]|\\.)*\1/,inside:{punctuation:/^[$`]|[$`]$/}},interpreted:{pattern:/'(?:[^'\\]|\\.)*'/,inside:{punctuation:/^'|'$/}},string:/"(?:[^"\\]|\\.)*"/,variable:/\w+(?==)/,punctuation:/^\[|\]$|,/,operator:/=/,"attr-value":/(?!^\s+$).+/}};e.languages.asciidoc={"comment-block":{pattern:/^(\/{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1/m,alias:"comment"},table:{pattern:/^\|={3,}(?:(?:\r?\n|\r).*)*?(?:\r?\n|\r)\|={3,}$/m,inside:{specifiers:{pattern:/(?!\|)(?:(?:(?:\d+(?:\.\d+)?|\.\d+)[+*])?(?:[<^>](?:\.[<^>])?|\.[<^>])?[a-z]*)(?=\|)/,alias:"attr-value"},punctuation:{pattern:/(^|[^\\])[|!]=*/,lookbehind:!0}}},"passthrough-block":{pattern:/^(\+{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^\++|\++$/}},"literal-block":{pattern:/^(-{4,}|\.{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^(?:-+|\.+)|(?:-+|\.+)$/}},"other-block":{pattern:/^(--|\*{4,}|_{4,}|={4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^(?:-+|\*+|_+|=+)|(?:-+|\*+|_+|=+)$/}},"list-punctuation":{pattern:/(^[ \t]*)(?:-|\*{1,5}|\.{1,5}|(?:[a-z]|\d+)\.|[xvi]+\))(?= )/im,lookbehind:!0,alias:"punctuation"},"list-label":{pattern:/(^[ \t]*)[a-z\d].+(?::{2,4}|;;)(?=\s)/im,lookbehind:!0,alias:"symbol"},"indented-block":{pattern:/((\r?\n|\r)\2)([ \t]+)\S.*(?:(?:\r?\n|\r)\3.+)*(?=\2{2}|$)/,lookbehind:!0},comment:/^\/\/.*/m,title:{pattern:/^.+(?:\r?\n|\r)(?:={3,}|-{3,}|~{3,}|\^{3,}|\+{3,})$|^={1,5} +.+|^\.(?![\s.]).*/m,alias:"important",inside:{punctuation:/^(?:\.|=+)|(?:=+|-+|~+|\^+|\++)$/}},"attribute-entry":{pattern:/^:[^:\r\n]+:(?: .*?(?: \+(?:\r?\n|\r).*?)*)?$/m,alias:"tag"},attributes:t,hr:{pattern:/^'{3,}$/m,alias:"punctuation"},"page-break":{pattern:/^<{3,}$/m,alias:"punctuation"},admonition:{pattern:/^(?:TIP|NOTE|IMPORTANT|WARNING|CAUTION):/m,alias:"keyword"},callout:[{pattern:/(^[ \t]*)/m,lookbehind:!0,alias:"symbol"},{pattern:/<\d+>/,alias:"symbol"}],macro:{pattern:/\b[a-z\d][a-z\d-]*::?(?:(?:\S+)??\[(?:[^\]\\"]|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:{function:/^[a-z\d-]+(?=:)/,punctuation:/^::?/,attributes:{pattern:/(?:\[(?:[^\]\\"]|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:t.inside}}},inline:{pattern:/(^|[^\\])(?:(?:\B\[(?:[^\]\\"]|(["'])(?:(?!\2)[^\\]|\\.)*\2|\\.)*\])?(?:\b_(?!\s)(?: _|[^_\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: _|[^_\\\r\n]|\\.)+)*_\b|\B``(?!\s).+?(?:(?:\r?\n|\r).+?)*''\B|\B`(?!\s)(?: ['`]|.)+?(?:(?:\r?\n|\r)(?: ['`]|.)+?)*['`]\B|\B(['*+#])(?!\s)(?: \3|(?!\3)[^\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: \3|(?!\3)[^\\\r\n]|\\.)+)*\3\B)|(?:\[(?:[^\]\\"]|(["'])(?:(?!\4)[^\\]|\\.)*\4|\\.)*\])?(?:(__|\*\*|\+\+\+?|##|\$\$|[~^]).+?(?:(?:\r?\n|\r).+?)*\5|\{[^}\r\n]+\}|\[\[\[?.+?(?:(?:\r?\n|\r).+?)*\]?\]\]|<<.+?(?:(?:\r?\n|\r).+?)*>>|\(\(\(?.+?(?:(?:\r?\n|\r).+?)*\)?\)\)))/m,lookbehind:!0,inside:{attributes:t,url:{pattern:/^(?:\[\[\[?.+?\]?\]\]|<<.+?>>)$/,inside:{punctuation:/^(?:\[\[\[?|<<)|(?:\]\]\]?|>>)$/}},"attribute-ref":{pattern:/^\{.+\}$/,inside:{variable:{pattern:/(^\{)[a-z\d,+_-]+/,lookbehind:!0},operator:/^[=?!#%@$]|!(?=[:}])/,punctuation:/^\{|\}$|::?/}},italic:{pattern:/^(['_])[\s\S]+\1$/,inside:{punctuation:/^(?:''?|__?)|(?:''?|__?)$/}},bold:{pattern:/^\*[\s\S]+\*$/,inside:{punctuation:/^\*\*?|\*\*?$/}},punctuation:/^(?:``?|\+{1,3}|##?|\$\$|[~^]|\(\(\(?)|(?:''?|\+{1,3}|##?|\$\$|[~^`]|\)?\)\))$/}},replacement:{pattern:/\((?:C|TM|R)\)/,alias:"builtin"},entity:/&#?[\da-z]{1,8};/i,"line-continuation":{pattern:/(^| )\+$/m,lookbehind:!0,alias:"punctuation"}},t.inside.interpreted.inside.rest={macro:e.languages.asciidoc.macro,inline:e.languages.asciidoc.inline,replacement:e.languages.asciidoc.replacement,entity:e.languages.asciidoc.entity},e.languages.asciidoc["passthrough-block"].inside.rest={macro:e.languages.asciidoc.macro},e.languages.asciidoc["literal-block"].inside.rest={callout:e.languages.asciidoc.callout},e.languages.asciidoc.table.inside.rest={"comment-block":e.languages.asciidoc["comment-block"],"passthrough-block":e.languages.asciidoc["passthrough-block"],"literal-block":e.languages.asciidoc["literal-block"],"other-block":e.languages.asciidoc["other-block"],"list-punctuation":e.languages.asciidoc["list-punctuation"],"indented-block":e.languages.asciidoc["indented-block"],comment:e.languages.asciidoc.comment,title:e.languages.asciidoc.title,"attribute-entry":e.languages.asciidoc["attribute-entry"],attributes:e.languages.asciidoc.attributes,hr:e.languages.asciidoc.hr,"page-break":e.languages.asciidoc["page-break"],admonition:e.languages.asciidoc.admonition,"list-label":e.languages.asciidoc["list-label"],callout:e.languages.asciidoc.callout,macro:e.languages.asciidoc.macro,inline:e.languages.asciidoc.inline,replacement:e.languages.asciidoc.replacement,entity:e.languages.asciidoc.entity,"line-continuation":e.languages.asciidoc["line-continuation"]},e.languages.asciidoc["other-block"].inside.rest={table:e.languages.asciidoc.table,"list-punctuation":e.languages.asciidoc["list-punctuation"],"indented-block":e.languages.asciidoc["indented-block"],comment:e.languages.asciidoc.comment,"attribute-entry":e.languages.asciidoc["attribute-entry"],attributes:e.languages.asciidoc.attributes,hr:e.languages.asciidoc.hr,"page-break":e.languages.asciidoc["page-break"],admonition:e.languages.asciidoc.admonition,"list-label":e.languages.asciidoc["list-label"],macro:e.languages.asciidoc.macro,inline:e.languages.asciidoc.inline,replacement:e.languages.asciidoc.replacement,entity:e.languages.asciidoc.entity,"line-continuation":e.languages.asciidoc["line-continuation"]},e.languages.asciidoc.title.inside.rest={macro:e.languages.asciidoc.macro,inline:e.languages.asciidoc.inline,replacement:e.languages.asciidoc.replacement,entity:e.languages.asciidoc.entity},e.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.value.replace(/&/,"&"))})}(e)}e.exports=r,r.displayName="asciidoc",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.asm6502={comment:/;.*/,directive:{pattern:/\.\w+(?= )/,alias:"keyword"},string:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,opcode:{pattern:/\b(?:adc|and|asl|bcc|bcs|beq|bit|bmi|bne|bpl|brk|bvc|bvs|clc|cld|cli|clv|cmp|cpx|cpy|dec|dex|dey|eor|inc|inx|iny|jmp|jsr|lda|ldx|ldy|lsr|nop|ora|pha|php|pla|plp|rol|ror|rti|rts|sbc|sec|sed|sei|sta|stx|sty|tax|tay|tsx|txa|txs|tya|ADC|AND|ASL|BCC|BCS|BEQ|BIT|BMI|BNE|BPL|BRK|BVC|BVS|CLC|CLD|CLI|CLV|CMP|CPX|CPY|DEC|DEX|DEY|EOR|INC|INX|INY|JMP|JSR|LDA|LDX|LDY|LSR|NOP|ORA|PHA|PHP|PLA|PLP|ROL|ROR|RTI|RTS|SBC|SEC|SED|SEI|STA|STX|STY|TAX|TAY|TSX|TXA|TXS|TYA)\b/,alias:"property"},hexnumber:{pattern:/#?\$[\da-f]{2,4}/i,alias:"string"},binarynumber:{pattern:/#?%[01]+/,alias:"string"},decimalnumber:{pattern:/#?\d+/,alias:"string"},register:{pattern:/\b[xya]\b/i,alias:"variable"}}}e.exports=r,r.displayName="asm6502",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.aspnet=e.languages.extend("markup",{"page-directive tag":{pattern:/<%\s*@.*%>/i,inside:{"page-directive tag":/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,rest:e.languages.markup.tag.inside}},"directive tag":{pattern:/<%.*%>/i,inside:{"directive tag":/<%\s*?[$=%#:]{0,2}|%>/i,rest:e.languages.csharp}}}),e.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,e.languages.insertBefore("inside","punctuation",{"directive tag":e.languages.aspnet["directive tag"]},e.languages.aspnet.tag.inside["attr-value"]),e.languages.insertBefore("aspnet","comment",{"asp comment":/<%--[\s\S]*?--%>/}),e.languages.insertBefore("aspnet",e.languages.javascript?"script":"tag",{"asp script":{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:e.languages.csharp||{}}})}e.exports=r,r.displayName="aspnet",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.autohotkey={comment:{pattern:/(^[^";\n]*("[^"\n]*?"[^"\n]*?)*)(?:;.*$|^\s*\/\*[\s\S]*\n\*\/)/m,lookbehind:!0},string:/"(?:[^"\n\r]|"")*"/m,function:/[^(); \t,\n+*\-=?>:\\\/<&%\[\]]+?(?=\()/m,tag:/^[ \t]*[^\s:]+?(?=:(?:[^:]|$))/m,variable:/%\w+%/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/\?|\/\/?=?|:=|\|[=|]?|&[=&]?|\+[=+]?|-[=-]?|\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\b(?:AND|NOT|OR)\b/,punctuation:/[{}[\]():,]/,boolean:/\b(?:true|false)\b/,selector:/\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/i,constant:/\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\b/i,builtin:/\b(?:abs|acos|asc|asin|atan|ceil|chr|class|cos|dllcall|exp|fileexist|Fileopen|floor|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|IsObject|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|strsplit|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__New|__Call|__Get|__Set)\b/i,symbol:/\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\b/i,important:/#\b(?:AllowSameLineComments|ClipboardTimeout|CommentFlag|ErrorStdOut|EscapeChar|HotkeyInterval|HotkeyModifierTimeout|Hotstring|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Include|IncludeAgain|InstallKeybdHook|InstallMouseHook|KeyHistory|LTrim|MaxHotkeysPerInterval|MaxMem|MaxThreads|MaxThreadsBuffer|MaxThreadsPerHotkey|NoEnv|NoTrayIcon|Persistent|SingleInstance|UseHook|WinActivateForce)\b/i,keyword:/\b(?:Abort|AboveNormal|Add|ahk_class|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Region|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|TryAgain|Type|UnCheck|underline|Unicode|Unlock|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\b/i}}e.exports=r,r.displayName="autohotkey",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.autoit={comment:[/;.*/,{pattern:/(^\s*)#(?:comments-start|cs)[\s\S]*?^\s*#(?:comments-end|ce)/m,lookbehind:!0}],url:{pattern:/(^\s*#include\s+)(?:<[^\r\n>]+>|"[^\r\n"]+")/m,lookbehind:!0},string:{pattern:/(["'])(?:\1\1|(?!\1)[^\r\n])*\1/,greedy:!0,inside:{variable:/([%$@])\w+\1/}},directive:{pattern:/(^\s*)#\w+/m,lookbehind:!0,alias:"keyword"},function:/\b\w+(?=\()/,variable:/[$@]\w+/,keyword:/\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\b/i,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,boolean:/\b(?:True|False)\b/i,operator:/<[=>]?|[-+*\/=&>]=?|[?^]|\b(?:And|Or|Not)\b/i,punctuation:/[\[\]().,:]/}}e.exports=r,r.displayName="autoit",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t={variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[\w#?*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/,greedy:!0,inside:t}],variable:t.variable,function:{pattern:/(^|[\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/,lookbehind:!0},boolean:{pattern:/(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var n=t.variable[1].inside;n.string=e.languages.bash.string,n.function=e.languages.bash.function,n.keyword=e.languages.bash.keyword,n.boolean=e.languages.bash.boolean,n.operator=e.languages.bash.operator,n.punctuation=e.languages.bash.punctuation,e.languages.shell=e.languages.bash}(e)}e.exports=r,r.displayName="bash",r.aliases=["shell"]},function(e,t,n){"use strict";function r(e){!function(e){var t=/%%?[~:\w]+%?|!\S+!/,n={pattern:/\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im,alias:"attr-name",inside:{punctuation:/:/}},r=/"[^"]*"/,o=/(?:\b|-)\d+\b/;e.languages.batch={comment:[/^::.*/m,{pattern:/((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0}],label:{pattern:/^:.*/m,alias:"property"},command:[{pattern:/((?:^|[&(])[ \t]*)for(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* \S+ in \([^)]+\) do/im,lookbehind:!0,inside:{keyword:/^for\b|\b(?:in|do)\b/i,string:r,parameter:n,variable:t,number:o,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*)if(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:"[^"]*"|\S+))/im,lookbehind:!0,inside:{keyword:/^if\b|\b(?:not|cmdextversion|defined|errorlevel|exist)\b/i,string:r,parameter:n,variable:t,number:o,operator:/\^|==|\b(?:equ|neq|lss|leq|gtr|geq)\b/i}},{pattern:/((?:^|[&()])[ \t]*)else\b/im,lookbehind:!0,inside:{keyword:/^else\b/i}},{pattern:/((?:^|[&(])[ \t]*)set(?: ?\/[a-z](?:[ :](?:"[^"]*"|\S+))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^set\b/i,string:r,parameter:n,variable:[t,/\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/],number:o,operator:/[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*@?)\w+\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^\w+\b/i,string:r,parameter:n,label:{pattern:/(^\s*):\S+/m,lookbehind:!0,alias:"property"},variable:t,number:o,operator:/\^/}}],operator:/[&@]/,punctuation:/[()']/}}(e)}e.exports=r,r.displayName="batch",r.aliases=[]},function(e,t,n){"use strict";var r=n(34);function o(e){e.register(r),e.languages.bison=e.languages.extend("c",{}),e.languages.insertBefore("bison","comment",{bison:{pattern:/^[\s\S]*?%%[\s\S]*?%%/,inside:{c:{pattern:/%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/,inside:{delimiter:{pattern:/^%?\{|%?\}$/,alias:"punctuation"},"bison-variable":{pattern:/[$@](?:<[^\s>]+>)?[\w$]+/,alias:"variable",inside:{punctuation:/<|>/}},rest:e.languages.c}},comment:e.languages.c.comment,string:e.languages.c.string,property:/\S+(?=:)/,keyword:/%\w+/,number:{pattern:/(^|[^@])\b(?:0x[\da-f]+|\d+)/i,lookbehind:!0},punctuation:/%[%?]|[|:;\[\]<>]/}}})}e.exports=o,o.displayName="bison",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.brainfuck={pointer:{pattern:/<|>/,alias:"keyword"},increment:{pattern:/\+/,alias:"inserted"},decrement:{pattern:/-/,alias:"deleted"},branching:{pattern:/\[|\]/,alias:"important"},operator:/[.,]/,comment:/\S+/}}e.exports=r,r.displayName="brainfuck",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.bro={comment:{pattern:/(^|[^\\$])#.*/,lookbehind:!0,inside:{italic:/\b(?:TODO|FIXME|XXX)\b/}},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},boolean:/\b[TF]\b/,function:{pattern:/(?:function|hook|event) \w+(?:::\w+)?/,inside:{keyword:/^(?:function|hook|event)/}},variable:{pattern:/(?:global|local) \w+/i,inside:{keyword:/(?:global|local)/}},builtin:/(?:@(?:load(?:-(?:sigs|plugin))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:redef|priority|log|optional|default|add_func|delete_func|expire_func|read_expire|write_expire|create_expire|synchronized|persistent|rotate_interval|rotate_size|encrypt|raw_output|mergeable|group|error_handler|type_column))/,constant:{pattern:/const \w+/i,inside:{keyword:/const/}},keyword:/\b(?:break|next|continue|alarm|using|of|add|delete|export|print|return|schedule|when|timeout|addr|any|bool|count|double|enum|file|int|interval|pattern|opaque|port|record|set|string|subnet|table|time|vector|for|if|else|in|module|function)\b/,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&|\|\|?|\?|\*|\/|~|\^|%/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="bro",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.clojure={comment:/;+.*/,string:/"(?:\\.|[^\\"\r\n])*"/,operator:/(?:::|[:|'])\b[a-z][\w*+!?-]*\b/i,keyword:{pattern:/([^\w+*'?-])(?:def|if|do|let|\.\.|quote|var|->>|->|fn|loop|recur|throw|try|monitor-enter|\.|new|set!|def\-|defn|defn\-|defmacro|defmulti|defmethod|defstruct|defonce|declare|definline|definterface|defprotocol|==|defrecord|>=|deftype|<=|defproject|ns|\*|\+|\-|\/|<|=|>|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|conj|cons|constantly|cond|if-not|construct-proxy|contains\?|count|create-ns|create-struct|cycle|dec|deref|difference|disj|dissoc|distinct|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\?|ensure|eval|every\?|false\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|for|fnseq|frest|gensym|get-proxy-class|get|hash-map|hash-set|identical\?|identity|if-let|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\?|last|lazy-cat|lazy-cons|left|lefts|line-seq|list\*|list|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|name|namespace|neg\?|new|newline|next|nil\?|node|not|not-any\?|not-every\?|not=|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\?|set|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\?|split-at|split-with|str|string\?|struct|struct-map|subs|subvec|symbol|symbol\?|sync|take|take-nth|take-while|test|time|to-array|to-array-2d|tree-seq|true\?|union|up|update-proxy|val|vals|var-get|var-set|var\?|vector|vector-zip|vector\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\?|zipmap|zipper)(?=[^\w+*'?-])/,lookbehind:!0},boolean:/\b(?:true|false|nil)\b/,number:/\b[0-9A-Fa-f]+\b/,punctuation:/[{}\[\](),]/}}e.exports=r,r.displayName="clojure",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"]}(e)}e.exports=r,r.displayName="coffeescript",r.aliases=[]},function(e,t,n){"use strict";var r=n(97);function o(e){e.register(r),function(e){e.languages.crystal=e.languages.extend("ruby",{keyword:[/\b(?:abstract|alias|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|rescue|return|require|select|self|sizeof|struct|super|then|type|typeof|uninitialized|union|unless|until|when|while|with|yield|__DIR__|__END_LINE__|__FILE__|__LINE__)\b/,{pattern:/(\.\s*)(?:is_a|responds_to)\?/,lookbehind:!0}],number:/\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\da-fA-F_]*[\da-fA-F]|(?:\d(?:[\d_]*\d)?)(?:\.[\d_]*\d)?(?:[eE][+-]?[\d_]*\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\b/}),e.languages.insertBefore("crystal","string",{attribute:{pattern:/@\[.+?\]/,alias:"attr-name",inside:{delimiter:{pattern:/^@\[|\]$/,alias:"tag"},rest:e.languages.crystal}},expansion:[{pattern:/\{\{.+?\}\}/,inside:{delimiter:{pattern:/^\{\{|\}\}$/,alias:"tag"},rest:e.languages.crystal}},{pattern:/\{%.+?%\}/,inside:{delimiter:{pattern:/^\{%|%\}$/,alias:"tag"},rest:e.languages.crystal}}]})}(e)}e.exports=o,o.displayName="crystal",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.csharp=e.languages.extend("clike",{keyword:/\b(?:abstract|add|alias|as|ascending|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|descending|do|double|dynamic|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|from|get|global|goto|group|if|implicit|in|int|interface|internal|into|is|join|let|lock|long|namespace|new|null|object|operator|orderby|out|override|params|partial|private|protected|public|readonly|ref|remove|return|sbyte|sealed|select|set|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|value|var|virtual|void|volatile|where|while|yield)\b/,string:[{pattern:/@("|')(?:\1\1|\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*?\1/,greedy:!0}],"class-name":[{pattern:/\b[A-Z]\w*(?:\.\w+)*\b(?=\s+\w+)/,inside:{punctuation:/\./}},{pattern:/(\[)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/(\b(?:class|interface)\s+[A-Z]\w*(?:\.\w+)*\s*:\s*)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/((?:\b(?:class|interface|new)\s+)|(?:catch\s+\())[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}}],number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)f?/i}),e.languages.insertBefore("csharp","class-name",{"generic-method":{pattern:/\w+\s*<[^>\r\n]+?>\s*(?=\()/,inside:{function:/^\w+/,"class-name":{pattern:/\b[A-Z]\w*(?:\.\w+)*\b/,inside:{punctuation:/\./}},keyword:e.languages.csharp.keyword,punctuation:/[<>(),.:]/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}}),e.languages.dotnet=e.languages.csharp}e.exports=r,r.displayName="csharp",r.aliases=["dotnet"]},function(e,t,n){"use strict";function r(e){e.languages.csp={directive:{pattern:/\b(?:(?:base-uri|form-action|frame-ancestors|plugin-types|referrer|reflected-xss|report-to|report-uri|require-sri-for|sandbox) |(?:block-all-mixed-content|disown-opener|upgrade-insecure-requests)(?: |;)|(?:child|connect|default|font|frame|img|manifest|media|object|script|style|worker)-src )/i,alias:"keyword"},safe:{pattern:/'(?:self|none|strict-dynamic|(?:nonce-|sha(?:256|384|512)-)[a-zA-Z\d+=\/]+)'/,alias:"selector"},unsafe:{pattern:/(?:'unsafe-inline'|'unsafe-eval'|'unsafe-hashed-attributes'|\*)/,alias:"function"}}}e.exports=r,r.displayName="csp",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.css.selector={pattern:/[^{}\s][^{}]*(?=\s*\{)/,inside:{"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+(?:\(.*\))?/,class:/\.[-:.\w]+/,id:/#[-:.\w]+/,attribute:/\[[^\]]+\]/}},e.languages.insertBefore("css","function",{hexcode:/#[\da-f]{3,8}/i,entity:/\\[\da-f]{1,8}/i,number:/[\d%.]+/})}e.exports=r,r.displayName="cssExtras",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.d=e.languages.extend("clike",{string:[/\b[rx]"(?:\\[\s\S]|[^\\"])*"[cwd]?/,/\bq"(?:\[[\s\S]*?\]|\([\s\S]*?\)|<[\s\S]*?>|\{[\s\S]*?\})"/,/\bq"([_a-zA-Z][_a-zA-Z\d]*)(?:\r?\n|\r)[\s\S]*?(?:\r?\n|\r)\1"/,/\bq"(.)[\s\S]*?\1"/,/'(?:\\'|\\?[^']+)'/,/(["`])(?:\\[\s\S]|(?!\1)[^\\])*\1[cwd]?/],number:[/\b0x\.?[a-f\d_]+(?:(?!\.\.)\.[a-f\d_]*)?(?:p[+-]?[a-f\d_]+)?[ulfi]*/i,{pattern:/((?:\.\.)?)(?:\b0b\.?|\b|\.)\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:e[+-]?\d[\d_]*)?[ulfi]*/i,lookbehind:!0}],keyword:/\$|\b(?:abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__(?:(?:FILE|MODULE|LINE|FUNCTION|PRETTY_FUNCTION|DATE|EOF|TIME|TIMESTAMP|VENDOR|VERSION)__|gshared|traits|vector|parameters)|string|wstring|dstring|size_t|ptrdiff_t)\b/,operator:/\|[|=]?|&[&=]?|\+[+=]?|-[-=]?|\.?\.\.|=[>=]?|!(?:i[ns]\b|<>?=?|>=?|=)?|\bi[ns]\b|(?:<[<>]?|>>?>?|\^\^|[*\/%^~])=?/}),e.languages.d.comment=[/^\s*#!.+/,{pattern:/(^|[^\\])\/\+(?:\/\+[\s\S]*?\+\/|[\s\S])*?\+\//,lookbehind:!0}].concat(e.languages.d.comment),e.languages.insertBefore("d","comment",{"token-string":{pattern:/\bq\{(?:\{[^}]*\}|[^}])*\}/,alias:"string"}}),e.languages.insertBefore("d","keyword",{property:/\B@\w*/}),e.languages.insertBefore("d","function",{register:{pattern:/\b(?:[ABCD][LHX]|E[ABCD]X|E?(?:BP|SP|DI|SI)|[ECSDGF]S|CR[0234]|DR[012367]|TR[3-7]|X?MM[0-7]|R[ABCD]X|[BS]PL|R[BS]P|[DS]IL|R[DS]I|R(?:[89]|1[0-5])[BWD]?|XMM(?:[89]|1[0-5])|YMM(?:1[0-5]|\d))\b|\bST(?:\([0-7]\)|\b)/,alias:"variable"}})}e.exports=r,r.displayName="d",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.dart=e.languages.extend("clike",{string:[{pattern:/r?("""|''')[\s\S]*?\1/,greedy:!0},{pattern:/r?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],keyword:[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|default|deferred|do|dynamic|else|enum|export|external|extends|factory|final|finally|for|get|if|implements|import|in|library|new|null|operator|part|rethrow|return|set|static|super|switch|this|throw|try|typedef|var|void|while|with|yield)\b/],operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","function",{metadata:{pattern:/@\w+/,alias:"symbol"}})}e.exports=r,r.displayName="dart",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d+.*$/m],deleted:/^[-<].*$/m,inserted:/^[+>].*$/m,diff:{pattern:/^!(?!!).+$/m,alias:"important"}}}e.exports=r,r.displayName="diff",r.aliases=[]},function(e,t,n){"use strict";function r(e){var t={property:{pattern:/(?:{{|{%)[\s\S]*?(?:%}|}})/g,greedy:!0,inside:{string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/\b(?:\||load|verbatim|widthratio|ssi|firstof|for|url|ifchanged|csrf_token|lorem|ifnotequal|autoescape|now|templatetag|debug|cycle|ifequal|regroup|comment|filter|endfilter|if|spaceless|with|extends|block|include|else|empty|endif|endfor|as|endblock|endautoescape|endverbatim|trans|endtrans|[Tt]rue|[Ff]alse|[Nn]one|in|is|static|macro|endmacro|call|endcall|set|endset|raw|endraw)\b/,operator:/[-+=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,function:/\b(?:_|abs|add|addslashes|attr|batch|callable|capfirst|capitalize|center|count|cut|d|date|default|default_if_none|defined|dictsort|dictsortreversed|divisibleby|e|equalto|escape|escaped|escapejs|even|filesizeformat|first|float|floatformat|force_escape|forceescape|format|get_digit|groupby|indent|int|iriencode|iterable|join|last|length|length_is|linebreaks|linebreaksbr|linenumbers|list|ljust|lower|make_list|map|mapping|number|odd|phone2numeric|pluralize|pprint|random|reject|rejectattr|removetags|replace|reverse|rjust|round|safe|safeseq|sameas|select|selectattr|sequence|slice|slugify|sort|string|stringformat|striptags|sum|time|timesince|timeuntil|title|trim|truncate|truncatechars|truncatechars_html|truncatewords|truncatewords_html|undefined|unordered_list|upper|urlencode|urlize|urlizetrunc|wordcount|wordwrap|xmlattr|yesno)\b/,important:/\b-?\d+(?:\.\d+)?\b/,variable:/\b\w+?\b/,punctuation:/[[\];(),.:]/}}};e.languages.django=e.languages.extend("markup",{comment:/(?:)/}),e.languages.django.tag.pattern=/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^>=]+))?)*\s*\/?>/i,e.languages.insertBefore("django","entity",t),e.languages.insertBefore("inside","tag",t,e.languages.django.tag),e.languages.javascript&&(e.languages.insertBefore("inside","string",t,e.languages.django.script),e.languages.django.script.inside.string.inside=t),e.languages.css&&(e.languages.insertBefore("inside","atrule",{tag:t.property},e.languages.django.style),e.languages.django.style.inside.string.inside=t),e.languages.jinja2=e.languages.django}e.exports=r,r.displayName="django",r.aliases=["jinja2"]},function(e,t,n){"use strict";function r(e){e.languages.docker={keyword:{pattern:/(^\s*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)/im,lookbehind:!0},string:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,comment:/#.*/,punctuation:/---|\.\.\.|[:[\]{}\-,|>?]/},e.languages.dockerfile=e.languages.docker}e.exports=r,r.displayName="docker",r.aliases=["dockerfile"]},function(e,t,n){"use strict";function r(e){e.languages.eiffel={comment:/--.*/,string:[{pattern:/"([^[]*)\[[\s\S]*?\]\1"/,greedy:!0},{pattern:/"([^{]*)\{[\s\S]*?\}\1"/,greedy:!0},{pattern:/"(?:%\s+%|%.|[^%"\r\n])*"/,greedy:!0}],char:/'(?:%.|[^%'\r\n])+'/,keyword:/\b(?:across|agent|alias|all|and|attached|as|assign|attribute|check|class|convert|create|Current|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|implies|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|or|Precursor|redefine|rename|require|rescue|Result|retry|select|separate|some|then|undefine|until|variant|Void|when|xor)\b/i,boolean:/\b(?:True|False)\b/i,"class-name":{pattern:/\b[A-Z][\dA-Z_]*\b/,alias:"builtin"},number:[/\b0[xcb][\da-f](?:_*[\da-f])*\b/i,/(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?e[+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/i],punctuation:/:=|<<|>>|\(\||\|\)|->|\.(?=\w)|[{}[\];(),:?]/,operator:/\\\\|\|\.\.\||\.\.|\/[~\/=]?|[><]=?|[-+*^=~]/}}e.exports=r,r.displayName="eiffel",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.elixir={comment:{pattern:/#.*/m,lookbehind:!0},regex:{pattern:/~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/,greedy:!0},string:[{pattern:/~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/,greedy:!0,inside:{}},{pattern:/("""|''')[\s\S]*?\1/,greedy:!0,inside:{}},{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{}}],atom:{pattern:/(^|[^:]):\w+/,lookbehind:!0,alias:"symbol"},"attr-name":/\w+:(?!:)/,capture:{pattern:/(^|[^&])&(?:[^&\s\d()][^\s()]*|(?=\())/,lookbehind:!0,alias:"function"},argument:{pattern:/(^|[^&])&\d+/,lookbehind:!0,alias:"variable"},attribute:{pattern:/@\w+/,alias:"variable"},number:/\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,keyword:/\b(?:after|alias|and|case|catch|cond|def(?:callback|exception|impl|module|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|require|rescue|try|unless|use|when)\b/,boolean:/\b(?:true|false|nil)\b/,operator:[/\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*\/^]/,{pattern:/([^<])<(?!<)/,lookbehind:!0},{pattern:/([^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,%\[\]{}()]/},e.languages.elixir.string.forEach(function(t){t.inside={interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:e.languages.elixir}}}})}e.exports=r,r.displayName="elixir",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.elm={comment:/--.*|{-[\s\S]*?-}/,char:{pattern:/'(?:[^\\'\r\n]|\\(?:[abfnrtv\\']|\d+|x[0-9a-fA-F]+))'/,greedy:!0},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:[^\\"\r\n]|\\(?:[abfnrtv\\"]|\d+|x[0-9a-fA-F]+))*"/,greedy:!0}],import_statement:{pattern:/^\s*import\s+[A-Z]\w*(?:\.[A-Z]\w*)*(?:\s+as\s+([A-Z]\w*)(?:\.[A-Z]\w*)*)?(?:\s+exposing\s+)?/m,inside:{keyword:/\b(?:import|as|exposing)\b/}},keyword:/\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\b/,builtin:/\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[+\-\/*=.$<>:&|^?%#@~!]{2,}|[+\-\/*=$<>:&|^?%#@~!]/,hvariable:/\b(?:[A-Z]\w*\.)*[a-z]\w*\b/,constant:/\b(?:[A-Z]\w*\.)*[A-Z]\w*\b/,punctuation:/[{}[\]|(),.:]/}}e.exports=r,r.displayName="elm",r.aliases=[]},function(e,t,n){"use strict";var r=n(97);function o(e){e.register(r),function(e){e.languages.erb=e.languages.extend("ruby",{}),e.languages.insertBefore("erb","comment",{delimiter:{pattern:/^<%=?|%>$/,alias:"punctuation"}}),e.hooks.add("before-tokenize",function(t){e.languages["markup-templating"].buildPlaceholders(t,"erb",/<%=?[\s\S]+?%>/g)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"erb")})}(e)}e.exports=o,o.displayName="erb",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.erlang={comment:/%.+/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},"quoted-function":{pattern:/'(?:\\.|[^\\'\r\n])+'(?=\()/,alias:"function"},"quoted-atom":{pattern:/'(?:\\.|[^\\'\r\n])+'/,alias:"atom"},boolean:/\b(?:true|false)\b/,keyword:/\b(?:fun|when|case|of|end|if|receive|after|try|catch)\b/,number:[/\$\\?./,/\d+#[a-z0-9]+/i,/(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i],function:/\b[a-z][\w@]*(?=\()/,variable:{pattern:/(^|[^@])(?:\b|\?)[A-Z_][\w@]*/,lookbehind:!0},operator:[/[=\/<>:]=|=[:\/]=|\+\+?|--?|[=*\/!]|\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\b/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],atom:/\b[a-z][\w@]*/,punctuation:/[()[\]{}:;,.#|]|<<|>>/}}e.exports=r,r.displayName="erlang",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\b/,alias:"tag"}]}),e.languages.flow["function-variable"].pattern=/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),"Array"!==e.util.type(e.languages.flow.keyword)&&(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:type|opaque|declare|Class)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\b(?!\$)/,lookbehind:!0})}(e)}e.exports=r,r.displayName="flow",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.fortran={"quoted-number":{pattern:/[BOZ](['"])[A-F0-9]+\1/i,alias:"number"},string:{pattern:/(?:\w+_)?(['"])(?:\1\1|&(?:\r\n?|\n)(?:\s*!.+(?:\r\n?|\n))?|(?!\1).)*(?:\1|&)/,inside:{comment:{pattern:/(&(?:\r\n?|\n)\s*)!.*/,lookbehind:!0}}},comment:{pattern:/!.*/,greedy:!0},boolean:/\.(?:TRUE|FALSE)\.(?:_\w+)?/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[ED][+-]?\d+)?(?:_\w+)?/i,keyword:[/\b(?:INTEGER|REAL|DOUBLE ?PRECISION|COMPLEX|CHARACTER|LOGICAL)\b/i,/\b(?:END ?)?(?:BLOCK ?DATA|DO|FILE|FORALL|FUNCTION|IF|INTERFACE|MODULE(?! PROCEDURE)|PROGRAM|SELECT|SUBROUTINE|TYPE|WHERE)\b/i,/\b(?:ALLOCATABLE|ALLOCATE|BACKSPACE|CALL|CASE|CLOSE|COMMON|CONTAINS|CONTINUE|CYCLE|DATA|DEALLOCATE|DIMENSION|DO|END|EQUIVALENCE|EXIT|EXTERNAL|FORMAT|GO ?TO|IMPLICIT(?: NONE)?|INQUIRE|INTENT|INTRINSIC|MODULE PROCEDURE|NAMELIST|NULLIFY|OPEN|OPTIONAL|PARAMETER|POINTER|PRINT|PRIVATE|PUBLIC|READ|RETURN|REWIND|SAVE|SELECT|STOP|TARGET|WHILE|WRITE)\b/i,/\b(?:ASSIGNMENT|DEFAULT|ELEMENTAL|ELSE|ELSEWHERE|ELSEIF|ENTRY|IN|INCLUDE|INOUT|KIND|NULL|ONLY|OPERATOR|OUT|PURE|RECURSIVE|RESULT|SEQUENCE|STAT|THEN|USE)\b/i],operator:[/\*\*|\/\/|=>|[=\/]=|[<>]=?|::|[+\-*=%]|\.(?:EQ|NE|LT|LE|GT|GE|NOT|AND|OR|EQV|NEQV)\.|\.[A-Z]+\./i,{pattern:/(^|(?!\().)\/(?!\))/,lookbehind:!0}],punctuation:/\(\/|\/\)|[(),;:&]/}}e.exports=r,r.displayName="fortran",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.fsharp=e.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*[\s\S]*?\*\)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\b/,string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1)B?/,greedy:!0},number:[/\b0x[\da-fA-F]+(?:un|lf|LF)?\b/,/\b0b[01]+(?:y|uy)?\b/,/(?:\b\d+\.?\d*|\B\.\d+)(?:[fm]|e[+-]?\d+)?\b/i,/\b\d+(?:[IlLsy]|u[lsy]?|UL)?\b/]}),e.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/^[^\r\n\S]*#.*/m,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}})}e.exports=r,r.displayName="fsharp",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.gedcom={"line-value":{pattern:/(^\s*\d+ +(?:@\w[\w!"$%&'()*+,\-.\/:;<=>?[\\\]^`{|}~\x80-\xfe #]*@ +)?\w+ +).+/m,lookbehind:!0,inside:{pointer:{pattern:/^@\w[\w!"$%&'()*+,\-.\/:;<=>?[\\\]^`{|}~\x80-\xfe #]*@$/,alias:"variable"}}},tag:{pattern:/(^\s*\d+ +(?:@\w[\w!"$%&'()*+,\-.\/:;<=>?[\\\]^`{|}~\x80-\xfe #]*@ +)?)\w+/m,lookbehind:!0,alias:"string"},level:{pattern:/(^\s*)\d+/m,lookbehind:!0,alias:"number"},pointer:{pattern:/@\w[\w!"$%&'()*+,\-.\/:;<=>?[\\\]^`{|}~\x80-\xfe #]*@/,alias:"variable"}}}e.exports=r,r.displayName="gedcom",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.gherkin={pystring:{pattern:/("""|''')[\s\S]+?\1/,alias:"string"},comment:{pattern:/((?:^|\r?\n|\r)[ \t]*)#.*/,lookbehind:!0},tag:{pattern:/((?:^|\r?\n|\r)[ \t]*)@\S*/,lookbehind:!0},feature:{pattern:/((?:^|\r?\n|\r)[ \t]*)(?:Ability|Ahoy matey!|Arwedd|Aspekt|Besigheid Behoefte|Business Need|Caracteristica|Característica|Egenskab|Egenskap|Eiginleiki|Feature|Fīča|Fitur|Fonctionnalité|Fonksyonalite|Funcionalidade|Funcionalitat|Functionalitate|Funcţionalitate|Funcționalitate|Functionaliteit|Fungsi|Funkcia|Funkcija|Funkcionalitāte|Funkcionalnost|Funkcja|Funksie|Funktionalität|Funktionalitéit|Funzionalità|Hwaet|Hwæt|Jellemző|Karakteristik|laH|Lastnost|Mak|Mogucnost|Mogućnost|Moznosti|Možnosti|OH HAI|Omadus|Ominaisuus|Osobina|Özellik|perbogh|poQbogh malja'|Potrzeba biznesowa|Požadavek|Požiadavka|Pretty much|Qap|Qu'meH 'ut|Savybė|Tính năng|Trajto|Vermoë|Vlastnosť|Właściwość|Značilnost|Δυνατότητα|Λειτουργία|Могућност|Мөмкинлек|Особина|Свойство|Үзенчәлеклелек|Функционал|Функционалност|Функция|Функціонал|תכונה|خاصية|خصوصیت|صلاحیت|کاروبار کی ضرورت|وِیژگی|रूप लेख|ਖਾਸੀਅਤ|ਨਕਸ਼ ਨੁਹਾਰ|ਮੁਹਾਂਦਰਾ|గుణము|ಹೆಚ್ಚಳ|ความต้องการทางธุรกิจ|ความสามารถ|โครงหลัก|기능|フィーチャ|功能|機能):(?:[^:]+(?:\r?\n|\r|$))*/,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]+/,lookbehind:!0},keyword:/[^:\r\n]+:/}},scenario:{pattern:/((?:^|\r?\n|\r)[ \t]*)(?:Abstract Scenario|Abstrakt Scenario|Achtergrond|Aer|Ær|Agtergrond|All y'all|Antecedentes|Antecedents|Atburðarás|Atburðarásir|Awww, look mate|B4|Background|Baggrund|Bakgrund|Bakgrunn|Bakgrunnur|Beispiele|Beispiller|Bối cảnh|Cefndir|Cenario|Cenário|Cenario de Fundo|Cenário de Fundo|Cenarios|Cenários|Contesto|Context|Contexte|Contexto|Conto|Contoh|Contone|Dæmi|Dasar|Dead men tell no tales|Delineacao do Cenario|Delineação do Cenário|Dis is what went down|Dữ liệu|Dyagram senaryo|Dyagram Senaryo|Egzanp|Ejemplos|Eksempler|Ekzemploj|Enghreifftiau|Esbozo do escenario|Escenari|Escenario|Esempi|Esquema de l'escenari|Esquema del escenario|Esquema do Cenario|Esquema do Cenário|Examples|EXAMPLZ|Exempel|Exemple|Exemples|Exemplos|First off|Fono|Forgatókönyv|Forgatókönyv vázlat|Fundo|Geçmiş|ghantoH|Grundlage|Hannergrond|Háttér|Heave to|Istorik|Juhtumid|Keadaan|Khung kịch bản|Khung tình huống|Kịch bản|Koncept|Konsep skenario|Kontèks|Kontekst|Kontekstas|Konteksts|Kontext|Konturo de la scenaro|Latar Belakang|lut|lut chovnatlh|lutmey|Lýsing Atburðarásar|Lýsing Dæma|Menggariskan Senario|MISHUN|MISHUN SRSLY|mo'|Náčrt Scenára|Náčrt Scénáře|Náčrt Scenáru|Oris scenarija|Örnekler|Osnova|Osnova Scenára|Osnova scénáře|Osnutek|Ozadje|Paraugs|Pavyzdžiai|Példák|Piemēri|Plan du scénario|Plan du Scénario|Plan senaryo|Plan Senaryo|Plang vum Szenario|Pozadí|Pozadie|Pozadina|Príklady|Příklady|Primer|Primeri|Primjeri|Przykłady|Raamstsenaarium|Reckon it's like|Rerefons|Scenár|Scénář|Scenarie|Scenarij|Scenarijai|Scenarijaus šablonas|Scenariji|Scenārijs|Scenārijs pēc parauga|Scenarijus|Scenario|Scénario|Scenario Amlinellol|Scenario Outline|Scenario Template|Scenariomal|Scenariomall|Scenarios|Scenariu|Scenariusz|Scenaro|Schema dello scenario|Se ðe|Se the|Se þe|Senario|Senaryo|Senaryo deskripsyon|Senaryo Deskripsyon|Senaryo taslağı|Shiver me timbers|Situācija|Situai|Situasie|Situasie Uiteensetting|Skenario|Skenario konsep|Skica|Structura scenariu|Structură scenariu|Struktura scenarija|Stsenaarium|Swa|Swa hwaer swa|Swa hwær swa|Szablon scenariusza|Szenario|Szenariogrundriss|Tapaukset|Tapaus|Tapausaihio|Taust|Tausta|Template Keadaan|Template Senario|Template Situai|The thing of it is|Tình huống|Variantai|Voorbeelde|Voorbeelden|Wharrimean is|Yo\-ho\-ho|You'll wanna|Założenia|Παραδείγματα|Περιγραφή Σεναρίου|Σενάρια|Σενάριο|Υπόβαθρο|Кереш|Контекст|Концепт|Мисаллар|Мисоллар|Основа|Передумова|Позадина|Предистория|Предыстория|Приклади|Пример|Примери|Примеры|Рамка на сценарий|Скица|Структура сценарија|Структура сценария|Структура сценарію|Сценарий|Сценарий структураси|Сценарийның төзелеше|Сценарији|Сценарио|Сценарій|Тарих|Үрнәкләр|דוגמאות|רקע|תבנית תרחיש|תרחיש|الخلفية|الگوی سناریو|امثلة|پس منظر|زمینه|سناریو|سيناريو|سيناريو مخطط|مثالیں|منظر نامے کا خاکہ|منظرنامہ|نمونه ها|उदाहरण|परिदृश्य|परिदृश्य रूपरेखा|पृष्ठभूमि|ਉਦਾਹਰਨਾਂ|ਪਟਕਥਾ|ਪਟਕਥਾ ਢਾਂਚਾ|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਿਛੋਕੜ|ఉదాహరణలు|కథనం|నేపథ్యం|సన్నివేశం|ಉದಾಹರಣೆಗಳು|ಕಥಾಸಾರಾಂಶ|ವಿವರಣೆ|ಹಿನ್ನೆಲೆ|โครงสร้างของเหตุการณ์|ชุดของตัวอย่าง|ชุดของเหตุการณ์|แนวคิด|สรุปเหตุการณ์|เหตุการณ์|배경|시나리오|시나리오 개요|예|サンプル|シナリオ|シナリオアウトライン|シナリオテンプレ|シナリオテンプレート|テンプレ|例|例子|剧本|剧本大纲|劇本|劇本大綱|场景|场景大纲|場景|場景大綱|背景):[^:\r\n]*/,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]*/,lookbehind:!0},keyword:/[^:\r\n]+:/}},"table-body":{pattern:/((?:\r?\n|\r)[ \t]*\|.+\|[^\r\n]*)+/,lookbehind:!0,inside:{outline:{pattern:/<[^>]+?>/,alias:"variable"},td:{pattern:/\s*[^\s|][^|]*/,alias:"string"},punctuation:/\|/}},"table-head":{pattern:/(?:\r?\n|\r)[ \t]*\|.+\|[^\r\n]*/,inside:{th:{pattern:/\s*[^\s|][^|]*/,alias:"variable"},punctuation:/\|/}},atrule:{pattern:/((?:\r?\n|\r)[ \t]+)(?:'ach|'a|'ej|7|a|A také|A taktiež|A tiež|A zároveň|Aber|Ac|Adott|Akkor|Ak|Aleshores|Ale|Ali|Allora|Alors|Als|Ama|Amennyiben|Amikor|Ampak|an|AN|Ananging|And y'all|And|Angenommen|Anrhegedig a|An|Apabila|Atès|Atesa|Atunci|Avast!|Aye|A|awer|Bagi|Banjur|Bet|Biết|Blimey!|Buh|But at the end of the day I reckon|But y'all|But|BUT|Cal|Când|Cando|Cand|Ce|Cuando|Če|Ða ðe|Ða|Dadas|Dada|Dados|Dado|DaH ghu' bejlu'|dann|Dann|Dano|Dan|Dar|Dat fiind|Data|Date fiind|Date|Dati fiind|Dati|Daţi fiind|Dați fiind|Dato|DEN|Den youse gotta|Dengan|De|Diberi|Diyelim ki|Donada|Donat|Donitaĵo|Do|Dun|Duota|Ðurh|Eeldades|Ef|Eğer ki|Entao|Então|Entón|Entonces|En|Epi|E|És|Etant donnée|Etant donné|Et|Étant données|Étant donnée|Étant donné|Etant données|Etant donnés|Étant donnés|Fakat|Gangway!|Gdy|Gegeben seien|Gegeben sei|Gegeven|Gegewe|ghu' noblu'|Gitt|Given y'all|Given|Givet|Givun|Ha|Cho|I CAN HAZ|In|Ir|It's just unbelievable|I|Ja|Jeśli|Jeżeli|Kadar|Kada|Kad|Kai|Kaj|Když|Keď|Kemudian|Ketika|Khi|Kiedy|Ko|Kuid|Kui|Kun|Lan|latlh|Le sa a|Let go and haul|Le|Lè sa a|Lè|Logo|Lorsqu'<|Lorsque|mä|Maar|Mais|Mając|Majd|Maka|Manawa|Mas|Ma|Menawa|Men|Mutta|Nalikaning|Nalika|Nanging|Når|När|Nato|Nhưng|Niin|Njuk|O zaman|Og|Och|Oletetaan|Onda|Ond|Oraz|Pak|Pero|Però|Podano|Pokiaľ|Pokud|Potem|Potom|Privzeto|Pryd|qaSDI'|Quando|Quand|Quan|Så|Sed|Se|Siis|Sipoze ke|Sipoze Ke|Sipoze|Si|Şi|Și|Soit|Stel|Tada|Tad|Takrat|Tak|Tapi|Ter|Tetapi|Tha the|Tha|Then y'all|Then|Thì|Thurh|Toda|Too right|ugeholl|Und|Un|Và|vaj|Vendar|Ve|wann|Wanneer|WEN|Wenn|When y'all|When|Wtedy|Wun|Y'know|Yeah nah|Yna|Youse know like when|Youse know when youse got|Y|Za predpokladu|Za předpokladu|Zadani|Zadano|Zadan|Zadate|Zadato|Zakładając|Zaradi|Zatati|Þa þe|Þa|Þá|Þegar|Þurh|Αλλά|Δεδομένου|Και|Όταν|Τότε|А також|Агар|Але|Али|Аммо|А|Әгәр|Әйтик|Әмма|Бирок|Ва|Вә|Дадено|Дано|Допустим|Если|Задате|Задати|Задато|И|І|К тому же|Када|Кад|Когато|Когда|Коли|Ләкин|Лекин|Нәтиҗәдә|Нехай|Но|Онда|Припустимо, що|Припустимо|Пусть|Также|Та|Тогда|Тоді|То|Унда|Һәм|Якщо|אבל|אזי|אז|בהינתן|וגם|כאשר|آنگاه|اذاً|اگر|اما|اور|با فرض|بالفرض|بفرض|پھر|تب|ثم|جب|عندما|فرض کیا|لكن|لیکن|متى|هنگامی|و|अगर|और|कदा|किन्तु|चूंकि|जब|तथा|तदा|तब|परन्तु|पर|यदि|ਅਤੇ|ਜਦੋਂ|ਜਿਵੇਂ ਕਿ|ਜੇਕਰ|ਤਦ|ਪਰ|అప్పుడు|ఈ పరిస్థితిలో|కాని|చెప్పబడినది|మరియు|ಆದರೆ|ನಂತರ|ನೀಡಿದ|ಮತ್ತು|ಸ್ಥಿತಿಯನ್ನು|กำหนดให้|ดังนั้น|แต่|เมื่อ|และ|그러면<|그리고<|단<|만약<|만일<|먼저<|조건<|하지만<|かつ<|しかし<|ただし<|ならば<|もし<|並且<|但し<|但是<|假如<|假定<|假設<|假设<|前提<|同时<|同時<|并且<|当<|當<|而且<|那么<|那麼<)(?=[ \t]+)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\\r\n])*"|'(?:\\.|[^'\\\r\n])*'/,inside:{outline:{pattern:/<[^>]+?>/,alias:"variable"}}},outline:{pattern:/<[^>]+?>/,alias:"variable"}}}e.exports=r,r.displayName="gherkin",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,commit_sha1:/^commit \w{40}$/m}}e.exports=r,r.displayName="git",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.glsl=e.languages.extend("clike",{comment:[/\/\*[\s\S]*?\*\//,/\/\/(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/],number:/(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ulf]*/i,keyword:/\b(?:attribute|const|uniform|varying|buffer|shared|coherent|volatile|restrict|readonly|writeonly|atomic_uint|layout|centroid|flat|smooth|noperspective|patch|sample|break|continue|do|for|while|switch|case|default|if|else|subroutine|in|out|inout|float|double|int|void|bool|true|false|invariant|precise|discard|return|d?mat[234](?:x[234])?|[ibdu]?vec[234]|uint|lowp|mediump|highp|precision|[iu]?sampler[123]D|[iu]?samplerCube|sampler[12]DShadow|samplerCubeShadow|[iu]?sampler[12]DArray|sampler[12]DArrayShadow|[iu]?sampler2DRect|sampler2DRectShadow|[iu]?samplerBuffer|[iu]?sampler2DMS(?:Array)?|[iu]?samplerCubeArray|samplerCubeArrayShadow|[iu]?image[123]D|[iu]?image2DRect|[iu]?imageCube|[iu]?imageBuffer|[iu]?image[12]DArray|[iu]?imageCubeArray|[iu]?image2DMS(?:Array)?|struct|common|partition|active|asm|class|union|enum|typedef|template|this|resource|goto|inline|noinline|public|static|extern|external|interface|long|short|half|fixed|unsigned|superp|input|output|hvec[234]|fvec[234]|sampler3DRect|filter|sizeof|cast|namespace|using)\b/}),e.languages.insertBefore("glsl","comment",{preprocessor:{pattern:/(^[ \t]*)#(?:(?:define|undef|if|ifdef|ifndef|else|elif|endif|error|pragma|extension|version|line)\b)?/m,lookbehind:!0,alias:"builtin"}})}e.exports=r,r.displayName="glsl",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.go=e.languages.extend("clike",{keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,number:/(?:\b0x[a-f\d]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[-+]?\d+)?)i?/i,string:{pattern:/(["'`])(\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0}}),delete e.languages.go["class-name"]}e.exports=r,r.displayName="go",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.graphql={comment:/#.*/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":/[a-z_]\w*(?=\s*:)/i,keyword:[{pattern:/(fragment\s+(?!on)[a-z_]\w*\s+|\.{3}\s*)on\b/,lookbehind:!0},/\b(?:query|fragment|mutation)\b/],operator:/!|=|\.{3}/,punctuation:/[!(){}\[\]:=,]/}}e.exports=r,r.displayName="graphql",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.groovy=e.languages.extend("clike",{keyword:/\b(?:as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\b/,string:[{pattern:/("""|''')[\s\S]*?\1|(?:\$\/)(?:\$\/\$|[\s\S])*?\/\$/,greedy:!0},{pattern:/(["'\/])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],number:/\b(?:0b[01_]+|0x[\da-f_]+(?:\.[\da-f_p\-]+)?|[\d_]+(?:\.[\d_]+)?(?:e[+-]?[\d]+)?)[glidf]?\b/i,operator:{pattern:/(^|[^.])(?:~|==?~?|\?[.:]?|\*(?:[.=]|\*=?)?|\.[@&]|\.\.<|\.{1,2}(?!\.)|-[-=>]?|\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\|[|=]?|\/=?|\^=?|%=?)/,lookbehind:!0},punctuation:/\.+|[{}[\];(),:$]/}),e.languages.insertBefore("groovy","string",{shebang:{pattern:/#!.+/,alias:"comment"}}),e.languages.insertBefore("groovy","punctuation",{"spock-block":/\b(?:setup|given|when|then|and|cleanup|expect|where):/}),e.languages.insertBefore("groovy","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}}),e.hooks.add("wrap",function(t){if("groovy"===t.language&&"string"===t.type){var n=t.content.value[0];if("'"!=n){var r=/([^\\])(?:\$(?:\{.*?\}|[\w.]+))/;"$"===n&&(r=/([^\$])(?:\$(?:\{.*?\}|[\w.]+))/),t.content.value=t.content.value.replace(/</g,"<").replace(/&/g,"&"),t.content=e.highlight(t.content.value,{expression:{pattern:r,lookbehind:!0,inside:e.languages.groovy}}),t.classes.push("/"===n?"regex":"gstring")}}})}e.exports=r,r.displayName="groovy",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.haml={"multiline-comment":{pattern:/((?:^|\r?\n|\r)([\t ]*))(?:\/|-#).*(?:(?:\r?\n|\r)\2[\t ]+.+)*/,lookbehind:!0,alias:"comment"},"multiline-code":[{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*,[\t ]*(?:(?:\r?\n|\r)\2[\t ]+.*,[\t ]*)*(?:(?:\r?\n|\r)\2[\t ]+.+)/,lookbehind:!0,inside:{rest:e.languages.ruby}},{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*\|[\t ]*(?:(?:\r?\n|\r)\2[\t ]+.*\|[\t ]*)*/,lookbehind:!0,inside:{rest:e.languages.ruby}}],filter:{pattern:/((?:^|\r?\n|\r)([\t ]*)):[\w-]+(?:(?:\r?\n|\r)(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},markup:{pattern:/((?:^|\r?\n|\r)[\t ]*)<.+/,lookbehind:!0,inside:{rest:e.languages.markup}},doctype:{pattern:/((?:^|\r?\n|\r)[\t ]*)!!!(?: .+)?/,lookbehind:!0},tag:{pattern:/((?:^|\r?\n|\r)[\t ]*)[%.#][\w\-#.]*[\w\-](?:\([^)]+\)|\{(?:\{[^}]+\}|[^}])+\}|\[[^\]]+\])*[\/<>]*/,lookbehind:!0,inside:{attributes:[{pattern:/(^|[^#])\{(?:\{[^}]+\}|[^}])+\}/,lookbehind:!0,inside:{rest:e.languages.ruby}},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:"(?:\\.|[^\\"\r\n])*"|[^)\s]+)/,lookbehind:!0},"attr-name":/[\w:-]+(?=\s*!?=|\s*[,)])/,punctuation:/[=(),]/}},{pattern:/\[[^\]]+\]/,inside:{rest:e.languages.ruby}}],punctuation:/[<>]/}},code:{pattern:/((?:^|\r?\n|\r)[\t ]*(?:[~-]|[&!]?=)).+/,lookbehind:!0,inside:{rest:e.languages.ruby}},interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:e.languages.ruby}},punctuation:{pattern:/((?:^|\r?\n|\r)[\t ]*)[~=\-&!]+/,lookbehind:!0}};for(var t=["css",{filter:"coffee",language:"coffeescript"},"erb","javascript","less","markdown","ruby","scss","textile"],n={},r=0,o=t.length;r@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})}(e)}e.exports=r,r.displayName="handlebars",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\\/])(?:--[^-!#$%*+=?&@|~.:<>^\\\/].*|{-[\s\S]*?-})/m,lookbehind:!0},char:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,string:{pattern:/"(?:[^\\"]|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+)|\\\s+\\)*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,import_statement:{pattern:/((?:\r?\n|\r|^)\s*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][_a-zA-Z0-9']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:import|qualified|as|hiding)\b/}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[-!#$%*+=?&@|~.:<>^\\\/]*\.[-!#$%*+=?&@|~.:<>^\\\/]+|[-!#$%*+=?&@|~.:<>^\\\/]+\.[-!#$%*+=?&@|~.:<>^\\\/]*|[-!#$%*+=?&@|~:<>^\\\/]+|`([A-Z][\w']*\.)*[_a-z][\w']*`/,hvariable:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*\b/,constant:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*\b/,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="haskell",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.haxe=e.languages.extend("clike",{string:{pattern:/(["'])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{interpolation:{pattern:/(^|[^\\])\$(?:\w+|\{[^}]+\})/,lookbehind:!0,inside:{interpolation:{pattern:/^\$\w*/,alias:"variable"}}}}},keyword:/\bthis\b|\b(?:abstract|as|break|case|cast|catch|class|continue|default|do|dynamic|else|enum|extends|extern|from|for|function|if|implements|import|in|inline|interface|macro|new|null|override|public|private|return|static|super|switch|throw|to|try|typedef|using|var|while)(?!\.)\b/,operator:/\.{3}|\+\+?|-[->]?|[=!]=?|&&?|\|\|?|<[<=]?|>[>=]?|[*\/%~^]/}),e.languages.insertBefore("haxe","class-name",{regex:{pattern:/~\/(?:[^\/\\\r\n]|\\.)+\/[igmsu]*/,greedy:!0}}),e.languages.insertBefore("haxe","keyword",{preprocessor:{pattern:/#\w+/,alias:"builtin"},metadata:{pattern:/@:?\w+/,alias:"symbol"},reification:{pattern:/\$(?:\w+|(?=\{))/,alias:"variable"}}),e.languages.haxe.string.inside.interpolation.inside.rest=e.languages.haxe,delete e.languages.haxe["class-name"]}e.exports=r,r.displayName="haxe",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.hpkp={directive:{pattern:/\b(?:(?:includeSubDomains|preload|strict)(?: |;)|pin-sha256="[a-zA-Z\d+=\/]+"|(?:max-age|report-uri)=|report-to )/,alias:"keyword"},safe:{pattern:/\d{7,}/,alias:"selector"},unsafe:{pattern:/\d{0,6}/,alias:"function"}}}e.exports=r,r.displayName="hpkp",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.hsts={directive:{pattern:/\b(?:max-age=|includeSubDomains|preload)/,alias:"keyword"},safe:{pattern:/\d{8,}/,alias:"selector"},unsafe:{pattern:/\d{0,7}/,alias:"function"}}}e.exports=r,r.displayName="hsts",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.http={"request-line":{pattern:/^(?:POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\s(?:https?:\/\/|\/)\S+\sHTTP\/[0-9.]+/m,inside:{property:/^(?:POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b/,"attr-name":/:\w+/}},"response-status":{pattern:/^HTTP\/1.[01] \d+.*/m,inside:{property:{pattern:/(^HTTP\/1.[01] )\d+.*/i,lookbehind:!0}}},"header-name":{pattern:/^[\w-]+:(?=.)/m,alias:"keyword"}};var t={"application/json":e.languages.javascript,"application/xml":e.languages.markup,"text/xml":e.languages.markup,"text/html":e.languages.markup};for(var n in t)if(t[n]){var r={};r[n]={pattern:new RegExp("(content-type:\\s*"+n+"[\\w\\W]*?)(?:\\r?\\n|\\r){2}[\\w\\W]*","i"),lookbehind:!0,inside:{rest:t[n]}},e.languages.insertBefore("http","header-name",r)}}e.exports=r,r.displayName="http",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.ichigojam={comment:/(?:\B'|REM)(?:[^\n\r]*)/i,string:{pattern:/"(?:""|[!#$%&'()*,\/:;<=>?^_ +\-.A-Z\d])*"/i,greedy:!0},number:/\B#[0-9A-F]+|\B`[01]+|(?:\b\d+\.?\d*|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:BEEP|BPS|CASE|CLEAR|CLK|CLO|CLP|CLS|CLT|CLV|CONT|COPY|ELSE|END|FILE|FILES|FOR|GOSUB|GSB|GOTO|IF|INPUT|KBD|LED|LET|LIST|LOAD|LOCATE|LRUN|NEW|NEXT|OUT|RIGHT|PLAY|POKE|PRINT|PWM|REM|RENUM|RESET|RETURN|RTN|RUN|SAVE|SCROLL|SLEEP|SRND|STEP|STOP|SUB|TEMPO|THEN|TO|UART|VIDEO|WAIT)(?:\$|\b)/i,function:/\b(?:ABS|ANA|ASC|BIN|BTN|DEC|END|FREE|HELP|HEX|I2CR|I2CW|IN|INKEY|LEN|LINE|PEEK|RND|SCR|SOUND|STR|TICK|USR|VER|VPEEK|ZER)(?:\$|\b)/i,label:/(?:\B@[^\s]+)/i,operator:/<[=>]?|>=?|\|\||&&|[+\-*\/=|&^~!]|\b(?:AND|NOT|OR)\b/i,punctuation:/[\[,;:()\]]/}}e.exports=r,r.displayName="ichigojam",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.icon={comment:/#.*/,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n_]|\\.|_(?!\1)(?:\r\n|[\s\S]))*\1/,greedy:!0},number:/\b(?:\d+r[a-z\d]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b|\.\d+\b/i,"builtin-keyword":{pattern:/&(?:allocated|ascii|clock|collections|cset|current|date|dateline|digits|dump|e|error(?:number|text|value)?|errout|fail|features|file|host|input|lcase|letters|level|line|main|null|output|phi|pi|pos|progname|random|regions|source|storage|subject|time|trace|ucase|version)\b/,alias:"variable"},directive:{pattern:/\$\w+/,alias:"builtin"},keyword:/\b(?:break|by|case|create|default|do|else|end|every|fail|global|if|initial|invocable|link|local|next|not|of|procedure|record|repeat|return|static|suspend|then|to|until|while)\b/,function:/(?!\d)\w+(?=\s*[({]|\s*!\s*\[)/,operator:/[+-]:(?!=)|(?:[\/?@^%&]|\+\+?|--?|==?=?|~==?=?|\*\*?|\|\|\|?|<(?:->?|>?=?)(?::=)?|:(?:=:?)?|[!.\\|~]/,punctuation:/[\[\](){},;]/}}e.exports=r,r.displayName="icon",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.inform7={string:{pattern:/"[^"]*"/,inside:{substitution:{pattern:/\[[^\]]+\]/,inside:{delimiter:{pattern:/\[|\]/,alias:"punctuation"}}}}},comment:{pattern:/\[[^\]]+\]/,greedy:!0},title:{pattern:/^[ \t]*(?:volume|book|part(?! of)|chapter|section|table)\b.+/im,alias:"important"},number:{pattern:/(^|[^-])(?:\b\d+(?:\.\d+)?(?:\^\d+)?\w*|\b(?:one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve))\b(?!-)/i,lookbehind:!0},verb:{pattern:/(^|[^-])\b(?:applying to|are|attacking|answering|asking|be(?:ing)?|burning|buying|called|carries|carry(?! out)|carrying|climbing|closing|conceal(?:s|ing)?|consulting|contain(?:s|ing)?|cutting|drinking|dropping|eating|enclos(?:es?|ing)|entering|examining|exiting|getting|giving|going|ha(?:ve|s|ving)|hold(?:s|ing)?|impl(?:y|ies)|incorporat(?:es?|ing)|inserting|is|jumping|kissing|listening|locking|looking|mean(?:s|ing)?|opening|provid(?:es?|ing)|pulling|pushing|putting|relat(?:es?|ing)|removing|searching|see(?:s|ing)?|setting|showing|singing|sleeping|smelling|squeezing|switching|support(?:s|ing)?|swearing|taking|tasting|telling|thinking|throwing|touching|turning|tying|unlock(?:s|ing)?|var(?:y|ies|ying)|waiting|waking|waving|wear(?:s|ing)?)\b(?!-)/i,lookbehind:!0,alias:"operator"},keyword:{pattern:/(^|[^-])\b(?:after|before|carry out|check|continue the action|definition(?= *:)|do nothing|else|end (?:if|unless|the story)|every turn|if|include|instead(?: of)?|let|move|no|now|otherwise|repeat|report|resume the story|rule for|running through|say(?:ing)?|stop the action|test|try(?:ing)?|understand|unless|use|when|while|yes)\b(?!-)/i,lookbehind:!0},property:{pattern:/(^|[^-])\b(?:adjacent(?! to)|carried|closed|concealed|contained|dark|described|edible|empty|enclosed|enterable|even|female|fixed in place|full|handled|held|improper-named|incorporated|inedible|invisible|lighted|lit|lock(?:able|ed)|male|marked for listing|mentioned|negative|neuter|non-(?:empty|full|recurring)|odd|opaque|open(?:able)?|plural-named|portable|positive|privately-named|proper-named|provided|publically-named|pushable between rooms|recurring|related|rubbing|scenery|seen|singular-named|supported|swinging|switch(?:able|ed(?: on| off)?)|touch(?:able|ed)|transparent|unconcealed|undescribed|unlit|unlocked|unmarked for listing|unmentioned|unopenable|untouchable|unvisited|variable|visible|visited|wearable|worn)\b(?!-)/i,lookbehind:!0,alias:"symbol"},position:{pattern:/(^|[^-])\b(?:above|adjacent to|back side of|below|between|down|east|everywhere|front side|here|in|inside(?: from)?|north(?:east|west)?|nowhere|on(?: top of)?|other side|outside(?: from)?|parts? of|regionally in|south(?:east|west)?|through|up|west|within)\b(?!-)/i,lookbehind:!0,alias:"keyword"},type:{pattern:/(^|[^-])\b(?:actions?|activit(?:y|ies)|actors?|animals?|backdrops?|containers?|devices?|directions?|doors?|holders?|kinds?|lists?|m[ae]n|nobody|nothing|nouns?|numbers?|objects?|people|persons?|player(?:'s holdall)?|regions?|relations?|rooms?|rule(?:book)?s?|scenes?|someone|something|supporters?|tables?|texts?|things?|time|vehicles?|wom[ae]n)\b(?!-)/i,lookbehind:!0,alias:"variable"},punctuation:/[.,:;(){}]/},e.languages.inform7.string.inside.substitution.inside.rest=e.languages.inform7,e.languages.inform7.string.inside.substitution.inside.rest.text={pattern:/\S(?:\s*\S)*/,alias:"comment"}}e.exports=r,r.displayName="inform7",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.ini={comment:/^[ \t]*;.*$/m,selector:/^[ \t]*\[.*?\]/m,constant:/^[ \t]*[^\s=]+?(?=[ \t]*=)/m,"attr-value":{pattern:/=.*/,inside:{punctuation:/^[=]/}}}}e.exports=r,r.displayName="ini",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.io={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0},{pattern:/(^|[^\\])#.*/,lookbehind:!0}],"triple-quoted-string":{pattern:/"""(?:\\[\s\S]|(?!""")[^\\])*"""/,greedy:!0,alias:"string"},string:{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},keyword:/\b(?:activate|activeCoroCount|asString|block|break|catch|clone|collectGarbage|compileString|continue|do|doFile|doMessage|doString|else|elseif|exit|for|foreach|forward|getSlot|getEnvironmentVariable|hasSlot|if|ifFalse|ifNil|ifNilEval|ifTrue|isActive|isNil|isResumable|list|message|method|parent|pass|pause|perform|performWithArgList|print|println|proto|raise|raiseResumable|removeSlot|resend|resume|schedulerSleepSeconds|self|sender|setSchedulerSleepSeconds|setSlot|shallowCopy|slotNames|super|system|then|thisBlock|thisContext|call|try|type|uniqueId|updateSlot|wait|while|write|yield)\b/,builtin:/\b(?:Array|AudioDevice|AudioMixer|Block|Box|Buffer|CFunction|CGI|Color|Curses|DBM|DNSResolver|DOConnection|DOProxy|DOServer|Date|Directory|Duration|DynLib|Error|Exception|FFT|File|Fnmatch|Font|Future|GL|GLE|GLScissor|GLU|GLUCylinder|GLUQuadric|GLUSphere|GLUT|Host|Image|Importer|LinkList|List|Lobby|Locals|MD5|MP3Decoder|MP3Encoder|Map|Message|Movie|Notification|Number|Object|OpenGL|Point|Protos|Regex|SGML|SGMLElement|SGMLParser|SQLite|Server|Sequence|ShowMessage|SleepyCat|SleepyCatCursor|Socket|SocketManager|Sound|Soup|Store|String|Tree|UDPSender|UPDReceiver|URL|User|Warning|WeakLink|Random|BigNum|Sequence)\b/,boolean:/\b(?:true|false|nil)\b/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e-?\d+)?/i,operator:/[=!*\/%+-^&|]=|>>?=?|<+*\-%$|,#][.:]?|[?^]\.?|[;\[]:?|[~}"i][.:]|[ACeEIjLor]\.|(?:[_\/\\qsux]|_?\d):)/,alias:"keyword"},number:/\b_?(?:(?!\d:)\d+(?:\.\d+)?(?:(?:[ejpx]|ad|ar)_?\d+(?:\.\d+)?)*(?:b_?[\da-z]+(?:\.[\da-z]+)?)?|_(?!\.))/,adverb:{pattern:/[~}]|[\/\\]\.?|[bfM]\.|t[.:]/,alias:"builtin"},operator:/[=a][.:]|_\./,conjunction:{pattern:/&(?:\.:?|:)?|[.:@][.:]?|[!D][.:]|[;dHT]\.|`:?|[\^LS]:|"/,alias:"variable"},punctuation:/[()]/}}e.exports=r,r.displayName="j",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.jolie=e.languages.extend("clike",{keyword:/\b(?:include|define|is_defined|undef|main|init|outputPort|inputPort|Location|Protocol|Interfaces|RequestResponse|OneWay|type|interface|extender|throws|cset|csets|forward|Aggregates|Redirects|embedded|courier|execution|sequential|concurrent|single|scope|install|throw|comp|cH|default|global|linkIn|linkOut|synchronized|this|new|for|if|else|while|in|Jolie|Java|Javascript|nullProcess|spawn|constants|with|provide|until|exit|foreach|instanceof|over|service)\b/,builtin:/\b(?:undefined|string|int|void|long|Byte|bool|double|float|char|any)\b/,number:/(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?l?/i,operator:/-[-=>]?|\+[+=]?|<[<=]?|[>=*!]=?|&&|\|\||[:?\/%^]/,symbol:/[|;@]/,punctuation:/[,.]/,string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0}}),delete e.languages.jolie["class-name"],delete e.languages.jolie.function,e.languages.insertBefore("jolie","keyword",{function:{pattern:/((?:\b(?:outputPort|inputPort|in|service|courier)\b|@)\s*)\w+/,lookbehind:!0},aggregates:{pattern:/(\bAggregates\s*:\s*)(?:\w+(?:\s+with\s+\w+)?\s*,\s*)*\w+(?:\s+with\s+\w+)?/,lookbehind:!0,inside:{withExtension:{pattern:/\bwith\s+\w+/,inside:{keyword:/\bwith\b/}},function:{pattern:/\w+/},punctuation:{pattern:/,/}}},redirects:{pattern:/(\bRedirects\s*:\s*)(?:\w+\s*=>\s*\w+\s*,\s*)*(?:\w+\s*=>\s*\w+)/,lookbehind:!0,inside:{punctuation:{pattern:/,/},function:{pattern:/\w+/},symbol:{pattern:/=>/}}}})}e.exports=r,r.displayName="jolie",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.json={property:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/i,string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,punctuation:/[{}[\]);,]/,operator:/:/g,boolean:/\b(?:true|false)\b/i,null:/\bnull\b/i},e.languages.jsonp=e.languages.json}e.exports=r,r.displayName="json",r.aliases=["jsonp"]},function(e,t,n){"use strict";function r(e){e.languages.julia={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2/,keyword:/\b(?:abstract|baremodule|begin|bitstype|break|catch|ccall|const|continue|do|else|elseif|end|export|finally|for|function|global|if|immutable|import|importall|let|local|macro|module|print|println|quote|return|try|type|typealias|using|while)\b/,boolean:/\b(?:true|false)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[box])?(?:[\da-f]+\.?\d*|\.\d+)(?:[efp][+-]?\d+)?j?/i,operator:/[-+*^%÷&$\\]=?|\/[\/=]?|!=?=?|\|[=>]?|<(?:<=?|[=:])?|>(?:=|>>?=?)?|==?=?|[~≠≤≥]/,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="julia",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.keyman={comment:/\bc\s.*/i,function:/\[\s*(?:(?:CTRL|SHIFT|ALT|LCTRL|RCTRL|LALT|RALT|CAPS|NCAPS)\s+)*(?:[TKU]_[\w?]+|".+?"|'.+?')\s*\]/i,string:/("|').*?\1/,bold:[/&(?:baselayout|bitmap|capsononly|capsalwaysoff|shiftfreescaps|copyright|ethnologuecode|hotkey|includecodes|keyboardversion|kmw_embedcss|kmw_embedjs|kmw_helpfile|kmw_helptext|kmw_rtl|language|layer|layoutfile|message|mnemoniclayout|name|oldcharposmatching|platform|targets|version|visualkeyboard|windowslanguages)\b/i,/\b(?:bitmap|bitmaps|caps on only|caps always off|shift frees caps|copyright|hotkey|language|layout|message|name|version)\b/i],keyword:/\b(?:any|baselayout|beep|call|context|deadkey|dk|if|index|layer|notany|nul|outs|platform|return|reset|save|set|store|use)\b/i,atrule:/\b(?:ansi|begin|unicode|group|using keys|match|nomatch)\b/i,number:/\b(?:U\+[\dA-F]+|d\d+|x[\da-f]+|\d+)\b/i,operator:/[+>\\,()]/,tag:/\$(?:keyman|kmfl|weaver|keymanweb|keymanonly):/i}}e.exports=r,r.displayName="keyman",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[/\w+(?=\s*\()/,{pattern:/(\.)\w+(?=\s*\{)/,lookbehind:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"],e.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/("""|''')[\s\S]*?\1/,alias:"string"}}),e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\w+@|@\w+/,alias:"symbol"}});var t=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:e.languages.kotlin}},{pattern:/\$\w+/,alias:"variable"}];e.languages.kotlin.string.inside=e.languages.kotlin["raw-string"].inside={interpolation:t}}(e)}e.exports=r,r.displayName="kotlin",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t=/\\(?:[^a-z()[\]]|[a-z*]+)/i,n={"equation-command":{pattern:t,alias:"regex"}};e.languages.latex={comment:/%.*/m,cdata:{pattern:/(\\begin\{((?:verbatim|lstlisting)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0},equation:[{pattern:/\$(?:\\[\s\S]|[^\\$])*\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]/,inside:n,alias:"string"},{pattern:/(\\begin\{((?:equation|math|eqnarray|align|multline|gather)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0,inside:n,alias:"string"}],keyword:{pattern:/(\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0},url:{pattern:/(\\url\{)[^}]+(?=\})/,lookbehind:!0},headline:{pattern:/(\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\}(?:\[[^\]]+\])?)/,lookbehind:!0,alias:"class-name"},function:{pattern:t,alias:"selector"},punctuation:/[[\]{}&]/}}(e)}e.exports=r,r.displayName="latex",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.less=e.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-]+?(?:\([^{}]+\)|[^(){};])*?(?=\s*\{)/i,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\([^{}]*\)|[^{};@])*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,punctuation:/[{}();:,]/,operator:/[+\-*\/]/}),e.languages.insertBefore("less","punctuation",{function:e.languages.less.function}),e.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/,lookbehind:!0,alias:"function"}})}e.exports=r,r.displayName="less",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.liquid={keyword:/\b(?:comment|endcomment|if|elsif|else|endif|unless|endunless|for|endfor|case|endcase|when|in|break|assign|continue|limit|offset|range|reversed|raw|endraw|capture|endcapture|tablerow|endtablerow)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp-]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?[df]?/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0},function:{pattern:/(^|[\s;|&])(?:append|prepend|capitalize|cycle|cols|increment|decrement|abs|at_least|at_most|ceil|compact|concat|date|default|divided_by|downcase|escape|escape_once|first|floor|join|last|lstrip|map|minus|modulo|newline_to_br|plus|remove|remove_first|replace|replace_first|reverse|round|rstrip|size|slice|sort|sort_natural|split|strip|strip_html|strip_newlines|times|truncate|truncatewords|uniq|upcase|url_decode|url_encode|include|paginate)(?=$|[\s;|&])/,lookbehind:!0}}}e.exports=r,r.displayName="liquid",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){function t(e){return new RegExp("(\\()"+e+"(?=[\\s\\)])")}function n(e){return new RegExp("([\\s([])"+e+"(?=[\\s)])")}var r="[-+*/_~!@$%^=<>{}\\w]+",o="(\\()",a={heading:{pattern:/;;;.*/,alias:["comment","title"]},comment:/;.*/,string:{pattern:/"(?:[^"\\]*|\\.)*"/,greedy:!0,inside:{argument:/[-A-Z]+(?=[.,\s])/,symbol:new RegExp("`"+r+"'")}},"quoted-symbol":{pattern:new RegExp("#?'"+r),alias:["variable","symbol"]},"lisp-property":{pattern:new RegExp(":"+r),alias:"property"},splice:{pattern:new RegExp(",@?"+r),alias:["symbol","variable"]},keyword:[{pattern:new RegExp(o+"(?:(?:lexical-)?let\\*?|(?:cl-)?letf|if|when|while|unless|cons|cl-loop|and|or|not|cond|setq|error|message|null|require|provide|use-package)(?=\\s)"),lookbehind:!0},{pattern:new RegExp(o+"(?:for|do|collect|return|finally|append|concat|in|by)(?=\\s)"),lookbehind:!0}],declare:{pattern:t("declare"),lookbehind:!0,alias:"keyword"},interactive:{pattern:t("interactive"),lookbehind:!0,alias:"keyword"},boolean:{pattern:n("(?:t|nil)"),lookbehind:!0},number:{pattern:n("[-+]?\\d+(?:\\.\\d*)?"),lookbehind:!0},defvar:{pattern:new RegExp(o+"def(?:var|const|custom|group)\\s+"+r),lookbehind:!0,inside:{keyword:/^def[a-z]+/,variable:new RegExp(r)}},defun:{pattern:new RegExp(o+"(?:cl-)?(?:defun\\*?|defmacro)\\s+"+r+"\\s+\\([\\s\\S]*?\\)"),lookbehind:!0,inside:{keyword:/^(?:cl-)?def\S+/,arguments:null,function:{pattern:new RegExp("(^\\s)"+r),lookbehind:!0},punctuation:/[()]/}},lambda:{pattern:new RegExp(o+"lambda\\s+\\((?:&?"+r+"\\s*)*\\)"),lookbehind:!0,inside:{keyword:/^lambda/,arguments:null,punctuation:/[()]/}},car:{pattern:new RegExp(o+r),lookbehind:!0},punctuation:[/(['`,]?\(|[)\[\]])/,{pattern:/(\s)\.(?=\s)/,lookbehind:!0}]},i={"lisp-marker":new RegExp("&[-+*/_~!@$%^=<>{}\\w]+"),rest:{argument:{pattern:new RegExp(r),alias:"variable"},varform:{pattern:new RegExp(o+r+"\\s+\\S[\\s\\S]*(?=\\))"),lookbehind:!0,inside:{string:a.string,boolean:a.boolean,number:a.number,symbol:a.symbol,punctuation:/[()]/}}}},l="\\S+(?:\\s+\\S+)*",s={pattern:new RegExp(o+"[\\s\\S]*(?=\\))"),lookbehind:!0,inside:{"rest-vars":{pattern:new RegExp("&(?:rest|body)\\s+"+l),inside:i},"other-marker-vars":{pattern:new RegExp("&(?:optional|aux)\\s+"+l),inside:i},keys:{pattern:new RegExp("&key\\s+"+l+"(?:\\s+&allow-other-keys)?"),inside:i},argument:{pattern:new RegExp(r),alias:"variable"},punctuation:/[()]/}};a.lambda.inside.arguments=s,a.defun.inside.arguments=e.util.clone(s),a.defun.inside.arguments.inside.sublist=s,e.languages.lisp=a,e.languages.elisp=a,e.languages.emacs=a,e.languages["emacs-lisp"]=a}(e)}e.exports=r,r.displayName="lisp",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.livescript={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\])#.*/,lookbehind:!0}],"interpolated-string":{pattern:/(^|[^"])("""|")(?:\\[\s\S]|(?!\2)[^\\])*\2(?!")/,lookbehind:!0,greedy:!0,inside:{variable:{pattern:/(^|[^\\])#[a-z_](?:-?[a-z]|[\d_])*/m,lookbehind:!0},interpolation:{pattern:/(^|[^\\])#\{[^}]+\}/m,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^#\{|\}$/,alias:"variable"}}},string:/[\s\S]+/}},string:[{pattern:/('''|')(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/<\[[\s\S]*?\]>/,greedy:!0},/\\[^\s,;\])}]+/],regex:[{pattern:/\/\/(\[.+?]|\\.|(?!\/\/)[^\\])+\/\/[gimyu]{0,5}/,greedy:!0,inside:{comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0}}},{pattern:/\/(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}/,greedy:!0}],keyword:{pattern:/(^|(?!-).)\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\b/m,lookbehind:!0},"keyword-operator":{pattern:/(^|[^-])\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?:nt| not)?|not|of|or|til|to|typeof|with|xor)(?!-)\b)/m,lookbehind:!0,alias:"operator"},boolean:{pattern:/(^|[^-])\b(?:false|no|off|on|true|yes)(?!-)\b/m,lookbehind:!0},argument:{pattern:/(^|(?!\.&\.)[^&])&(?!&)\d*/m,lookbehind:!0,alias:"variable"},number:/\b(?:\d+~[\da-z]+|\d[\d_]*(?:\.\d[\d_]*)?(?:[a-z]\w*)?)/i,identifier:/[a-z_](?:-?[a-z]|[\d_])*/i,operator:[{pattern:/( )\.(?= )/,lookbehind:!0},/\.(?:[=~]|\.\.?)|\.(?:[&|^]|<<|>>>?)\.|:(?:=|:=?)|&&|\|[|>]|<(?:<[>=?]?|-(?:->?|>)?|\+\+?|@@?|%%?|\*\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\^\^?|[\/?]/],punctuation:/[(){}\[\]|.,:;`]/},e.languages.livescript["interpolated-string"].inside.interpolation.inside.rest=e.languages.livescript}e.exports=r,r.displayName="livescript",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.lolcode={comment:[/\bOBTW\s+[\s\S]*?\s+TLDR\b/,/\bBTW.+/],string:{pattern:/"(?::.|[^"])*"/,inside:{variable:/:\{[^}]+\}/,symbol:[/:\([a-f\d]+\)/i,/:\[[^\]]+\]/,/:[)>o":]/]},greedy:!0},number:/(?:\B-)?(?:\b\d+\.?\d*|\B\.\d+)/,symbol:{pattern:/(^|\s)(?:A )?(?:YARN|NUMBR|NUMBAR|TROOF|BUKKIT|NOOB)(?=\s|,|$)/,lookbehind:!0,inside:{keyword:/A(?=\s)/}},label:{pattern:/((?:^|\s)(?:IM IN YR|IM OUTTA YR) )[a-zA-Z]\w*/,lookbehind:!0,alias:"string"},function:{pattern:/((?:^|\s)(?:I IZ|HOW IZ I|IZ) )[a-zA-Z]\w*/,lookbehind:!0},keyword:[{pattern:/(^|\s)(?:O HAI IM|KTHX|HAI|KTHXBYE|I HAS A|ITZ(?: A)?|R|AN|MKAY|SMOOSH|MAEK|IS NOW(?: A)?|VISIBLE|GIMMEH|O RLY\?|YA RLY|NO WAI|OIC|MEBBE|WTF\?|OMG|OMGWTF|GTFO|IM IN YR|IM OUTTA YR|FOUND YR|YR|TIL|WILE|UPPIN|NERFIN|I IZ|HOW IZ I|IF U SAY SO|SRS|HAS A|LIEK(?: A)?|IZ)(?=\s|,|$)/,lookbehind:!0},/'Z(?=\s|,|$)/],boolean:{pattern:/(^|\s)(?:WIN|FAIL)(?=\s|,|$)/,lookbehind:!0},variable:{pattern:/(^|\s)IT(?=\s|,|$)/,lookbehind:!0},operator:{pattern:/(^|\s)(?:NOT|BOTH SAEM|DIFFRINT|(?:SUM|DIFF|PRODUKT|QUOSHUNT|MOD|BIGGR|SMALLR|BOTH|EITHER|WON|ALL|ANY) OF)(?=\s|,|$)/,lookbehind:!0},punctuation:/\.{3}|…|,|!/}}e.exports=r,r.displayName="lolcode",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.lua={comment:/^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,greedy:!0},number:/\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,keyword:/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,function:/(?!\d)\w+(?=\s*(?:[({]))/,operator:[/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/}}e.exports=r,r.displayName="lua",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^[^:=\r\n]+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/}}e.exports=r,r.displayName="makefile",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},code:[{pattern:/^(?: {4}|\t).+/m,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*(?:\r?\n|\r)(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*$|__$/}},italic:{pattern:/(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),e.languages.markdown.bold.inside.url=e.languages.markdown.url,e.languages.markdown.italic.inside.url=e.languages.markdown.url,e.languages.markdown.bold.inside.italic=e.languages.markdown.italic,e.languages.markdown.italic.inside.bold=e.languages.markdown.bold}e.exports=r,r.displayName="markdown",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages["markup-templating"]={},Object.defineProperties(e.languages["markup-templating"],{buildPlaceholders:{value:function(t,n,r,o){t.language===n&&(t.tokenStack=[],t.code=t.code.replace(r,function(e){if("function"==typeof o&&!o(e))return e;for(var r=t.tokenStack.length;-1!==t.code.indexOf("___"+n.toUpperCase()+r+"___");)++r;return t.tokenStack[r]=e,"___"+n.toUpperCase()+r+"___"}),t.grammar=e.languages.markup)}},tokenizePlaceholders:{value:function(t,n){if(t.language===n&&t.tokenStack){t.grammar=e.languages[n];var r=0,o=Object.keys(t.tokenStack),a=function(i){if(!(r>=o.length))for(var l=0;l-1){++r;var f,m=d.substring(0,p),g=new e.Token(n,e.tokenize(c,t.grammar,n),"language-"+n,c),h=d.substring(p+("___"+n.toUpperCase()+u+"___").length);if(m||h?(f=[m,g,h].filter(function(e){return!!e}),a(f)):f=g,"string"==typeof s?Array.prototype.splice.apply(i,[l,1].concat(f)):s.content=f,r>=o.length)break}}else s.content&&"string"!=typeof s.content&&a(s.content)}};a(t.tokens)}}}})}e.exports=r,r.displayName="markupTemplating",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.matlab={comment:[/%\{[\s\S]*?\}%/,/%.+/],string:{pattern:/\B'(?:''|[^'\r\n])*'/,greedy:!0},number:/(?:\b\d+\.?\d*|\B\.\d+)(?:[eE][+-]?\d+)?(?:[ij])?|\b[ij]\b/,keyword:/\b(?:break|case|catch|continue|else|elseif|end|for|function|if|inf|NaN|otherwise|parfor|pause|pi|return|switch|try|while)\b/,function:/(?!\d)\w+(?=\s*\()/,operator:/\.?[*^\/\\']|[+\-:@]|[<>=~]=?|&&?|\|\|?/,punctuation:/\.{3}|[.,;\[\](){}!]/}}e.exports=r,r.displayName="matlab",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.mel={comment:/\/\/.*/,code:{pattern:/`(?:\\.|[^\\`\r\n])*`/,greedy:!0,alias:"italic",inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"}}},string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},variable:/\$\w+/,number:/\b0x[\da-fA-F]+\b|\b\d+\.?\d*|\B\.\d+/,flag:{pattern:/-[^\d\W]\w*/,alias:"operator"},keyword:/\b(?:break|case|continue|default|do|else|float|for|global|if|in|int|matrix|proc|return|string|switch|vector|while)\b/,function:/\w+(?=\()|\b(?:about|abs|addAttr|addAttributeEditorNodeHelp|addDynamic|addNewShelfTab|addPP|addPanelCategory|addPrefixToName|advanceToNextDrivenKey|affectedNet|affects|aimConstraint|air|alias|aliasAttr|align|alignCtx|alignCurve|alignSurface|allViewFit|ambientLight|angle|angleBetween|animCone|animCurveEditor|animDisplay|animView|annotate|appendStringArray|applicationName|applyAttrPreset|applyTake|arcLenDimContext|arcLengthDimension|arclen|arrayMapper|art3dPaintCtx|artAttrCtx|artAttrPaintVertexCtx|artAttrSkinPaintCtx|artAttrTool|artBuildPaintMenu|artFluidAttrCtx|artPuttyCtx|artSelectCtx|artSetPaintCtx|artUserPaintCtx|assignCommand|assignInputDevice|assignViewportFactories|attachCurve|attachDeviceAttr|attachSurface|attrColorSliderGrp|attrCompatibility|attrControlGrp|attrEnumOptionMenu|attrEnumOptionMenuGrp|attrFieldGrp|attrFieldSliderGrp|attrNavigationControlGrp|attrPresetEditWin|attributeExists|attributeInfo|attributeMenu|attributeQuery|autoKeyframe|autoPlace|bakeClip|bakeFluidShading|bakePartialHistory|bakeResults|bakeSimulation|basename|basenameEx|batchRender|bessel|bevel|bevelPlus|binMembership|bindSkin|blend2|blendShape|blendShapeEditor|blendShapePanel|blendTwoAttr|blindDataType|boneLattice|boundary|boxDollyCtx|boxZoomCtx|bufferCurve|buildBookmarkMenu|buildKeyframeMenu|button|buttonManip|CBG|cacheFile|cacheFileCombine|cacheFileMerge|cacheFileTrack|camera|cameraView|canCreateManip|canvas|capitalizeString|catch|catchQuiet|ceil|changeSubdivComponentDisplayLevel|changeSubdivRegion|channelBox|character|characterMap|characterOutlineEditor|characterize|chdir|checkBox|checkBoxGrp|checkDefaultRenderGlobals|choice|circle|circularFillet|clamp|clear|clearCache|clip|clipEditor|clipEditorCurrentTimeCtx|clipSchedule|clipSchedulerOutliner|clipTrimBefore|closeCurve|closeSurface|cluster|cmdFileOutput|cmdScrollFieldExecuter|cmdScrollFieldReporter|cmdShell|coarsenSubdivSelectionList|collision|color|colorAtPoint|colorEditor|colorIndex|colorIndexSliderGrp|colorSliderButtonGrp|colorSliderGrp|columnLayout|commandEcho|commandLine|commandPort|compactHairSystem|componentEditor|compositingInterop|computePolysetVolume|condition|cone|confirmDialog|connectAttr|connectControl|connectDynamic|connectJoint|connectionInfo|constrain|constrainValue|constructionHistory|container|containsMultibyte|contextInfo|control|convertFromOldLayers|convertIffToPsd|convertLightmap|convertSolidTx|convertTessellation|convertUnit|copyArray|copyFlexor|copyKey|copySkinWeights|cos|cpButton|cpCache|cpClothSet|cpCollision|cpConstraint|cpConvClothToMesh|cpForces|cpGetSolverAttr|cpPanel|cpProperty|cpRigidCollisionFilter|cpSeam|cpSetEdit|cpSetSolverAttr|cpSolver|cpSolverTypes|cpTool|cpUpdateClothUVs|createDisplayLayer|createDrawCtx|createEditor|createLayeredPsdFile|createMotionField|createNewShelf|createNode|createRenderLayer|createSubdivRegion|cross|crossProduct|ctxAbort|ctxCompletion|ctxEditMode|ctxTraverse|currentCtx|currentTime|currentTimeCtx|currentUnit|curve|curveAddPtCtx|curveCVCtx|curveEPCtx|curveEditorCtx|curveIntersect|curveMoveEPCtx|curveOnSurface|curveSketchCtx|cutKey|cycleCheck|cylinder|dagPose|date|defaultLightListCheckBox|defaultNavigation|defineDataServer|defineVirtualDevice|deformer|deg_to_rad|delete|deleteAttr|deleteShadingGroupsAndMaterials|deleteShelfTab|deleteUI|deleteUnusedBrushes|delrandstr|detachCurve|detachDeviceAttr|detachSurface|deviceEditor|devicePanel|dgInfo|dgdirty|dgeval|dgtimer|dimWhen|directKeyCtx|directionalLight|dirmap|dirname|disable|disconnectAttr|disconnectJoint|diskCache|displacementToPoly|displayAffected|displayColor|displayCull|displayLevelOfDetail|displayPref|displayRGBColor|displaySmoothness|displayStats|displayString|displaySurface|distanceDimContext|distanceDimension|doBlur|dolly|dollyCtx|dopeSheetEditor|dot|dotProduct|doubleProfileBirailSurface|drag|dragAttrContext|draggerContext|dropoffLocator|duplicate|duplicateCurve|duplicateSurface|dynCache|dynControl|dynExport|dynExpression|dynGlobals|dynPaintEditor|dynParticleCtx|dynPref|dynRelEdPanel|dynRelEditor|dynamicLoad|editAttrLimits|editDisplayLayerGlobals|editDisplayLayerMembers|editRenderLayerAdjustment|editRenderLayerGlobals|editRenderLayerMembers|editor|editorTemplate|effector|emit|emitter|enableDevice|encodeString|endString|endsWith|env|equivalent|equivalentTol|erf|error|eval|evalDeferred|evalEcho|event|exactWorldBoundingBox|exclusiveLightCheckBox|exec|executeForEachObject|exists|exp|expression|expressionEditorListen|extendCurve|extendSurface|extrude|fcheck|fclose|feof|fflush|fgetline|fgetword|file|fileBrowserDialog|fileDialog|fileExtension|fileInfo|filetest|filletCurve|filter|filterCurve|filterExpand|filterStudioImport|findAllIntersections|findAnimCurves|findKeyframe|findMenuItem|findRelatedSkinCluster|finder|firstParentOf|fitBspline|flexor|floatEq|floatField|floatFieldGrp|floatScrollBar|floatSlider|floatSlider2|floatSliderButtonGrp|floatSliderGrp|floor|flow|fluidCacheInfo|fluidEmitter|fluidVoxelInfo|flushUndo|fmod|fontDialog|fopen|formLayout|format|fprint|frameLayout|fread|freeFormFillet|frewind|fromNativePath|fwrite|gamma|gauss|geometryConstraint|getApplicationVersionAsFloat|getAttr|getClassification|getDefaultBrush|getFileList|getFluidAttr|getInputDeviceRange|getMayaPanelTypes|getModifiers|getPanel|getParticleAttr|getPluginResource|getenv|getpid|glRender|glRenderEditor|globalStitch|gmatch|goal|gotoBindPose|grabColor|gradientControl|gradientControlNoAttr|graphDollyCtx|graphSelectContext|graphTrackCtx|gravity|grid|gridLayout|group|groupObjectsByName|HfAddAttractorToAS|HfAssignAS|HfBuildEqualMap|HfBuildFurFiles|HfBuildFurImages|HfCancelAFR|HfConnectASToHF|HfCreateAttractor|HfDeleteAS|HfEditAS|HfPerformCreateAS|HfRemoveAttractorFromAS|HfSelectAttached|HfSelectAttractors|HfUnAssignAS|hardenPointCurve|hardware|hardwareRenderPanel|headsUpDisplay|headsUpMessage|help|helpLine|hermite|hide|hilite|hitTest|hotBox|hotkey|hotkeyCheck|hsv_to_rgb|hudButton|hudSlider|hudSliderButton|hwReflectionMap|hwRender|hwRenderLoad|hyperGraph|hyperPanel|hyperShade|hypot|iconTextButton|iconTextCheckBox|iconTextRadioButton|iconTextRadioCollection|iconTextScrollList|iconTextStaticLabel|ikHandle|ikHandleCtx|ikHandleDisplayScale|ikSolver|ikSplineHandleCtx|ikSystem|ikSystemInfo|ikfkDisplayMethod|illustratorCurves|image|imfPlugins|inheritTransform|insertJoint|insertJointCtx|insertKeyCtx|insertKnotCurve|insertKnotSurface|instance|instanceable|instancer|intField|intFieldGrp|intScrollBar|intSlider|intSliderGrp|interToUI|internalVar|intersect|iprEngine|isAnimCurve|isConnected|isDirty|isParentOf|isSameObject|isTrue|isValidObjectName|isValidString|isValidUiName|isolateSelect|itemFilter|itemFilterAttr|itemFilterRender|itemFilterType|joint|jointCluster|jointCtx|jointDisplayScale|jointLattice|keyTangent|keyframe|keyframeOutliner|keyframeRegionCurrentTimeCtx|keyframeRegionDirectKeyCtx|keyframeRegionDollyCtx|keyframeRegionInsertKeyCtx|keyframeRegionMoveKeyCtx|keyframeRegionScaleKeyCtx|keyframeRegionSelectKeyCtx|keyframeRegionSetKeyCtx|keyframeRegionTrackCtx|keyframeStats|lassoContext|lattice|latticeDeformKeyCtx|launch|launchImageEditor|layerButton|layeredShaderPort|layeredTexturePort|layout|layoutDialog|lightList|lightListEditor|lightListPanel|lightlink|lineIntersection|linearPrecision|linstep|listAnimatable|listAttr|listCameras|listConnections|listDeviceAttachments|listHistory|listInputDeviceAxes|listInputDeviceButtons|listInputDevices|listMenuAnnotation|listNodeTypes|listPanelCategories|listRelatives|listSets|listTransforms|listUnselected|listerEditor|loadFluid|loadNewShelf|loadPlugin|loadPluginLanguageResources|loadPrefObjects|localizedPanelLabel|lockNode|loft|log|longNameOf|lookThru|ls|lsThroughFilter|lsType|lsUI|Mayatomr|mag|makeIdentity|makeLive|makePaintable|makeRoll|makeSingleSurface|makeTubeOn|makebot|manipMoveContext|manipMoveLimitsCtx|manipOptions|manipRotateContext|manipRotateLimitsCtx|manipScaleContext|manipScaleLimitsCtx|marker|match|max|memory|menu|menuBarLayout|menuEditor|menuItem|menuItemToShelf|menuSet|menuSetPref|messageLine|min|minimizeApp|mirrorJoint|modelCurrentTimeCtx|modelEditor|modelPanel|mouse|movIn|movOut|move|moveIKtoFK|moveKeyCtx|moveVertexAlongDirection|multiProfileBirailSurface|mute|nParticle|nameCommand|nameField|namespace|namespaceInfo|newPanelItems|newton|nodeCast|nodeIconButton|nodeOutliner|nodePreset|nodeType|noise|nonLinear|normalConstraint|normalize|nurbsBoolean|nurbsCopyUVSet|nurbsCube|nurbsEditUV|nurbsPlane|nurbsSelect|nurbsSquare|nurbsToPoly|nurbsToPolygonsPref|nurbsToSubdiv|nurbsToSubdivPref|nurbsUVSet|nurbsViewDirectionVector|objExists|objectCenter|objectLayer|objectType|objectTypeUI|obsoleteProc|oceanNurbsPreviewPlane|offsetCurve|offsetCurveOnSurface|offsetSurface|openGLExtension|openMayaPref|optionMenu|optionMenuGrp|optionVar|orbit|orbitCtx|orientConstraint|outlinerEditor|outlinerPanel|overrideModifier|paintEffectsDisplay|pairBlend|palettePort|paneLayout|panel|panelConfiguration|panelHistory|paramDimContext|paramDimension|paramLocator|parent|parentConstraint|particle|particleExists|particleInstancer|particleRenderInfo|partition|pasteKey|pathAnimation|pause|pclose|percent|performanceOptions|pfxstrokes|pickWalk|picture|pixelMove|planarSrf|plane|play|playbackOptions|playblast|plugAttr|plugNode|pluginInfo|pluginResourceUtil|pointConstraint|pointCurveConstraint|pointLight|pointMatrixMult|pointOnCurve|pointOnSurface|pointPosition|poleVectorConstraint|polyAppend|polyAppendFacetCtx|polyAppendVertex|polyAutoProjection|polyAverageNormal|polyAverageVertex|polyBevel|polyBlendColor|polyBlindData|polyBoolOp|polyBridgeEdge|polyCacheMonitor|polyCheck|polyChipOff|polyClipboard|polyCloseBorder|polyCollapseEdge|polyCollapseFacet|polyColorBlindData|polyColorDel|polyColorPerVertex|polyColorSet|polyCompare|polyCone|polyCopyUV|polyCrease|polyCreaseCtx|polyCreateFacet|polyCreateFacetCtx|polyCube|polyCut|polyCutCtx|polyCylinder|polyCylindricalProjection|polyDelEdge|polyDelFacet|polyDelVertex|polyDuplicateAndConnect|polyDuplicateEdge|polyEditUV|polyEditUVShell|polyEvaluate|polyExtrudeEdge|polyExtrudeFacet|polyExtrudeVertex|polyFlipEdge|polyFlipUV|polyForceUV|polyGeoSampler|polyHelix|polyInfo|polyInstallAction|polyLayoutUV|polyListComponentConversion|polyMapCut|polyMapDel|polyMapSew|polyMapSewMove|polyMergeEdge|polyMergeEdgeCtx|polyMergeFacet|polyMergeFacetCtx|polyMergeUV|polyMergeVertex|polyMirrorFace|polyMoveEdge|polyMoveFacet|polyMoveFacetUV|polyMoveUV|polyMoveVertex|polyNormal|polyNormalPerVertex|polyNormalizeUV|polyOptUvs|polyOptions|polyOutput|polyPipe|polyPlanarProjection|polyPlane|polyPlatonicSolid|polyPoke|polyPrimitive|polyPrism|polyProjection|polyPyramid|polyQuad|polyQueryBlindData|polyReduce|polySelect|polySelectConstraint|polySelectConstraintMonitor|polySelectCtx|polySelectEditCtx|polySeparate|polySetToFaceNormal|polySewEdge|polyShortestPathCtx|polySmooth|polySoftEdge|polySphere|polySphericalProjection|polySplit|polySplitCtx|polySplitEdge|polySplitRing|polySplitVertex|polyStraightenUVBorder|polySubdivideEdge|polySubdivideFacet|polyToSubdiv|polyTorus|polyTransfer|polyTriangulate|polyUVSet|polyUnite|polyWedgeFace|popen|popupMenu|pose|pow|preloadRefEd|print|progressBar|progressWindow|projFileViewer|projectCurve|projectTangent|projectionContext|projectionManip|promptDialog|propModCtx|propMove|psdChannelOutliner|psdEditTextureFile|psdExport|psdTextureFile|putenv|pwd|python|querySubdiv|quit|rad_to_deg|radial|radioButton|radioButtonGrp|radioCollection|radioMenuItemCollection|rampColorPort|rand|randomizeFollicles|randstate|rangeControl|readTake|rebuildCurve|rebuildSurface|recordAttr|recordDevice|redo|reference|referenceEdit|referenceQuery|refineSubdivSelectionList|refresh|refreshAE|registerPluginResource|rehash|reloadImage|removeJoint|removeMultiInstance|removePanelCategory|rename|renameAttr|renameSelectionList|renameUI|render|renderGlobalsNode|renderInfo|renderLayerButton|renderLayerParent|renderLayerPostProcess|renderLayerUnparent|renderManip|renderPartition|renderQualityNode|renderSettings|renderThumbnailUpdate|renderWindowEditor|renderWindowSelectContext|renderer|reorder|reorderDeformers|requires|reroot|resampleFluid|resetAE|resetPfxToPolyCamera|resetTool|resolutionNode|retarget|reverseCurve|reverseSurface|revolve|rgb_to_hsv|rigidBody|rigidSolver|roll|rollCtx|rootOf|rot|rotate|rotationInterpolation|roundConstantRadius|rowColumnLayout|rowLayout|runTimeCommand|runup|sampleImage|saveAllShelves|saveAttrPreset|saveFluid|saveImage|saveInitialState|saveMenu|savePrefObjects|savePrefs|saveShelf|saveToolSettings|scale|scaleBrushBrightness|scaleComponents|scaleConstraint|scaleKey|scaleKeyCtx|sceneEditor|sceneUIReplacement|scmh|scriptCtx|scriptEditorInfo|scriptJob|scriptNode|scriptTable|scriptToShelf|scriptedPanel|scriptedPanelType|scrollField|scrollLayout|sculpt|searchPathArray|seed|selLoadSettings|select|selectContext|selectCurveCV|selectKey|selectKeyCtx|selectKeyframeRegionCtx|selectMode|selectPref|selectPriority|selectType|selectedNodes|selectionConnection|separator|setAttr|setAttrEnumResource|setAttrMapping|setAttrNiceNameResource|setConstraintRestPosition|setDefaultShadingGroup|setDrivenKeyframe|setDynamic|setEditCtx|setEditor|setFluidAttr|setFocus|setInfinity|setInputDeviceMapping|setKeyCtx|setKeyPath|setKeyframe|setKeyframeBlendshapeTargetWts|setMenuMode|setNodeNiceNameResource|setNodeTypeFlag|setParent|setParticleAttr|setPfxToPolyCamera|setPluginResource|setProject|setStampDensity|setStartupMessage|setState|setToolTo|setUITemplate|setXformManip|sets|shadingConnection|shadingGeometryRelCtx|shadingLightRelCtx|shadingNetworkCompare|shadingNode|shapeCompare|shelfButton|shelfLayout|shelfTabLayout|shellField|shortNameOf|showHelp|showHidden|showManipCtx|showSelectionInTitle|showShadingGroupAttrEditor|showWindow|sign|simplify|sin|singleProfileBirailSurface|size|sizeBytes|skinCluster|skinPercent|smoothCurve|smoothTangentSurface|smoothstep|snap2to2|snapKey|snapMode|snapTogetherCtx|snapshot|soft|softMod|softModCtx|sort|sound|soundControl|source|spaceLocator|sphere|sphrand|spotLight|spotLightPreviewPort|spreadSheetEditor|spring|sqrt|squareSurface|srtContext|stackTrace|startString|startsWith|stitchAndExplodeShell|stitchSurface|stitchSurfacePoints|strcmp|stringArrayCatenate|stringArrayContains|stringArrayCount|stringArrayInsertAtIndex|stringArrayIntersector|stringArrayRemove|stringArrayRemoveAtIndex|stringArrayRemoveDuplicates|stringArrayRemoveExact|stringArrayToString|stringToStringArray|strip|stripPrefixFromName|stroke|subdAutoProjection|subdCleanTopology|subdCollapse|subdDuplicateAndConnect|subdEditUV|subdListComponentConversion|subdMapCut|subdMapSewMove|subdMatchTopology|subdMirror|subdToBlind|subdToPoly|subdTransferUVsToCache|subdiv|subdivCrease|subdivDisplaySmoothness|substitute|substituteAllString|substituteGeometry|substring|surface|surfaceSampler|surfaceShaderList|swatchDisplayPort|switchTable|symbolButton|symbolCheckBox|sysFile|system|tabLayout|tan|tangentConstraint|texLatticeDeformContext|texManipContext|texMoveContext|texMoveUVShellContext|texRotateContext|texScaleContext|texSelectContext|texSelectShortestPathCtx|texSmudgeUVContext|texWinToolCtx|text|textCurves|textField|textFieldButtonGrp|textFieldGrp|textManip|textScrollList|textToShelf|textureDisplacePlane|textureHairColor|texturePlacementContext|textureWindow|threadCount|threePointArcCtx|timeControl|timePort|timerX|toNativePath|toggle|toggleAxis|toggleWindowVisibility|tokenize|tokenizeList|tolerance|tolower|toolButton|toolCollection|toolDropped|toolHasOptions|toolPropertyWindow|torus|toupper|trace|track|trackCtx|transferAttributes|transformCompare|transformLimits|translator|trim|trunc|truncateFluidCache|truncateHairCache|tumble|tumbleCtx|turbulence|twoPointArcCtx|uiRes|uiTemplate|unassignInputDevice|undo|undoInfo|ungroup|uniform|unit|unloadPlugin|untangleUV|untitledFileName|untrim|upAxis|updateAE|userCtx|uvLink|uvSnapshot|validateShelfName|vectorize|view2dToolCtx|viewCamera|viewClipPlane|viewFit|viewHeadOn|viewLookAt|viewManip|viewPlace|viewSet|visor|volumeAxis|vortex|waitCursor|warning|webBrowser|webBrowserPrefs|whatIs|window|windowPref|wire|wireContext|workspace|wrinkle|wrinkleContext|writeTake|xbmLangPathList|xform)\b/,operator:[/\+[+=]?|-[-=]?|&&|\|\||[<>]=|[*\/!=]=?|[%^]/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,:;?\[\](){}]/},e.languages.mel.code.inside.rest=e.languages.mel}e.exports=r,r.displayName="mel",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.mizar={comment:/::.+/,keyword:/@proof\b|\b(?:according|aggregate|all|and|antonym|are|as|associativity|assume|asymmetry|attr|be|begin|being|by|canceled|case|cases|clusters?|coherence|commutativity|compatibility|connectedness|consider|consistency|constructors|contradiction|correctness|def|deffunc|define|definitions?|defpred|do|does|equals|end|environ|ex|exactly|existence|for|from|func|given|hence|hereby|holds|idempotence|identity|iff?|implies|involutiveness|irreflexivity|is|it|let|means|mode|non|not|notations?|now|of|or|otherwise|over|per|pred|prefix|projectivity|proof|provided|qua|reconsider|redefine|reduce|reducibility|reflexivity|registrations?|requirements|reserve|sch|schemes?|section|selector|set|sethood|st|struct|such|suppose|symmetry|synonym|take|that|the|then|theorems?|thesis|thus|to|transitivity|uniqueness|vocabular(?:y|ies)|when|where|with|wrt)\b/,parameter:{pattern:/\$(?:10|\d)/,alias:"variable"},variable:/\w+(?=:)/,number:/(?:\b|-)\d+\b/,operator:/\.\.\.|->|&|\.?=/,punctuation:/\(#|#\)|[,:;\[\](){}]/}}e.exports=r,r.displayName="mizar",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.monkey={string:/"[^"\r\n]*"/,comment:[{pattern:/^#Rem\s+[\s\S]*?^#End/im,greedy:!0},{pattern:/'.+/,greedy:!0}],preprocessor:{pattern:/(^[ \t]*)#.+/m,lookbehind:!0,alias:"comment"},function:/\w+(?=\()/,"type-char":{pattern:/(\w)[?%#$]/,lookbehind:!0,alias:"variable"},number:{pattern:/((?:\.\.)?)(?:(?:\b|\B-\.?|\B\.)\d+(?:(?!\.\.)\.\d*)?|\$[\da-f]+)/i,lookbehind:!0},keyword:/\b(?:Void|Strict|Public|Private|Property|Bool|Int|Float|String|Array|Object|Continue|Exit|Import|Extern|New|Self|Super|Try|Catch|Eachin|True|False|Extends|Abstract|Final|Select|Case|Default|Const|Local|Global|Field|Method|Function|Class|End|If|Then|Else|ElseIf|EndIf|While|Wend|Repeat|Until|Forever|For|To|Step|Next|Return|Module|Interface|Implements|Inline|Throw|Null)\b/i,operator:/\.\.|<[=>]?|>=?|:?=|(?:[+\-*\/&~|]|\b(?:Mod|Shl|Shr)\b)=?|\b(?:And|Not|Or)\b/i,punctuation:/[.,:;()\[\]]/}}e.exports=r,r.displayName="monkey",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.n4js=e.languages.extend("javascript",{keyword:/\b(?:any|Array|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),e.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),e.languages.n4jsd=e.languages.n4js}e.exports=r,r.displayName="n4js",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.nasm={comment:/;.*$/m,string:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,label:{pattern:/(^\s*)[A-Za-z._?$][\w.?$@~#]*:/m,lookbehind:!0,alias:"function"},keyword:[/\[?BITS (?:16|32|64)\]?/,{pattern:/(^\s*)section\s*[a-zA-Z.]+:?/im,lookbehind:!0},/(?:extern|global)[^;\r\n]*/i,/(?:CPU|FLOAT|DEFAULT).*$/m],register:{pattern:/\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|sp|si|di)|[cdefgs]s)\b/i,alias:"variable"},number:/(?:\b|(?=\$))(?:0[hx][\da-f]*\.?[\da-f]+(?:p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|\d*\.?\d+(?:\.?e[+-]?\d+)?[dt]?)\b/i,operator:/[\[\]*+\-\/%<>=&|$!]/}}e.exports=r,r.displayName="nasm",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.nginx=e.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},keyword:/\b(?:CONTENT_|DOCUMENT_|GATEWAY_|HTTP_|HTTPS|if_not_empty|PATH_|QUERY_|REDIRECT_|REMOTE_|REQUEST_|SCGI|SCRIPT_|SERVER_|http|events|accept_mutex|accept_mutex_delay|access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth|auth_basic|auth_basic_user_file|auth_http|auth_http_header|auth_http_timeout|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|debug_connection|debug_points|default_type|deny|devpoll_changes|devpoll_events|directio|directio_alignment|disable_symlinks|empty_gif|env|epoll_events|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_redirect_errors|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|google_perftools_profiles|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|imap_capabilities|imap_client_buffer|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|kqueue_changes|kqueue_events|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|lock_file|log_format|log_format_combined|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|multi_accept|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|pop3_auth|pop3_capabilities|port_in_redirect|post_action|postpone_output|protocol|proxy|proxy_buffer|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_error_message|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_redirect_errors|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|proxy_timeout|proxy_upstream_fail_timeout|proxy_upstream_max_fails|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|rtsig_overflow_events|rtsig_overflow_test|rtsig_overflow_threshold|rtsig_signo|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|smtp_auth|smtp_capabilities|so_keepalive|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|starttls|stub_status|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timeout|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|use|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_rlimit_sigpending|working_directory|xclient|xml_entities|xslt_entities|xslt_stylesheet|xslt_types)\b/i}),e.languages.insertBefore("nginx","keyword",{variable:/\$[a-z_]+/i})}e.exports=r,r.displayName="nginx",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.nim={comment:/#.*/,string:{pattern:/(?:(?:\b(?!\d)(?:\w|\\x[8-9a-fA-F][0-9a-fA-F])+)?(?:"""[\s\S]*?"""(?!")|"(?:\\[\s\S]|""|[^"\\])*")|'(?:\\(?:\d+|x[\da-fA-F]{2}|.)|[^'])')/,greedy:!0},number:/\b(?:0[xXoObB][\da-fA-F_]+|\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:[eE][+-]?\d[\d_]*)?)(?:'?[iuf]\d*)?/,keyword:/\b(?:addr|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|include|interface|iterator|let|macro|method|mixin|nil|object|out|proc|ptr|raise|ref|return|static|template|try|tuple|type|using|var|when|while|with|without|yield)\b/,function:{pattern:/(?:(?!\d)(?:\w|\\x[8-9a-fA-F][0-9a-fA-F])+|`[^`\r\n]+`)\*?(?:\[[^\]]+\])?(?=\s*\()/,inside:{operator:/\*$/}},ignore:{pattern:/`[^`\r\n]+`/,inside:{punctuation:/`/}},operator:{pattern:/(^|[({\[](?=\.\.)|(?![({\[]\.).)(?:(?:[=+\-*\/<>@$~&%|!?^:\\]|\.\.|\.(?![)}\]]))+|\b(?:and|div|of|or|in|is|isnot|mod|not|notin|shl|shr|xor)\b)/m,lookbehind:!0},punctuation:/[({\[]\.|\.[)}\]]|[`(){}\[\],:]/}}e.exports=r,r.displayName="nim",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.nix={comment:/\/\*[\s\S]*?\*\/|#.*/,string:{pattern:/"(?:[^"\\]|\\[\s\S])*"|''(?:(?!'')[\s\S]|''(?:'|\\|\$\{))*''/,greedy:!0,inside:{interpolation:{pattern:/(^|(?:^|(?!'').)[^\\])\$\{(?:[^}]|\{[^}]*\})*}/,lookbehind:!0,inside:{antiquotation:{pattern:/^\$(?=\{)/,alias:"variable"}}}}},url:[/\b(?:[a-z]{3,7}:\/\/)[\w\-+%~\/.:#=?&]+/,{pattern:/([^\/])(?:[\w\-+%~.:#=?&]*(?!\/\/)[\w\-+%~\/.:#=?&])?(?!\/\/)\/[\w\-+%~\/.:#=?&]*/,lookbehind:!0}],antiquotation:{pattern:/\$(?=\{)/,alias:"variable"},number:/\b\d+\b/,keyword:/\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\b/,function:/\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:url|Tarball)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\b|\bfoldl'\B/,boolean:/\b(?:true|false)\b/,operator:/[=!<>]=?|\+\+?|\|\||&&|\/\/|->?|[?@]/,punctuation:/[{}()[\].,:;]/},e.languages.nix.string.inside.interpolation.inside.rest=e.languages.nix}e.exports=r,r.displayName="nix",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.nsis={comment:{pattern:/(^|[^\\])(\/\*[\s\S]*?\*\/|[#;].*)/,lookbehind:!0},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:{pattern:/(^\s*)(?:Abort|Add(?:BrandingImage|Size)|AdvSplash|Allow(?:RootDirInstall|SkipFiles)|AutoCloseWindow|Banner|BG(?:Font|Gradient|Image)|BrandingText|BringToFront|Call(?:InstDLL)?|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|Create(?:Directory|Font|ShortCut)|Delete(?:INISec|INIStr|RegKey|RegValue)?|Detail(?:Print|sButtonText)|Dialer|Dir(?:Text|Var|Verify)|EnableWindow|Enum(?:RegKey|RegValue)|Exch|Exec(?:Shell(?:Wait)?|Wait)?|ExpandEnvStrings|File(?:BufSize|Close|ErrorText|Open|Read|ReadByte|ReadUTF16LE|ReadWord|WriteUTF16LE|Seek|Write|WriteByte|WriteWord)?|Find(?:Close|First|Next|Window)|FlushINI|Get(?:CurInstType|CurrentAddress|DlgItem|DLLVersion(?:Local)?|ErrorLevel|FileTime(?:Local)?|FullPathName|Function(?:Address|End)?|InstDirError|LabelAddress|TempFileName)|Goto|HideWindow|Icon|If(?:Abort|Errors|FileExists|RebootFlag|Silent)|InitPluginsDir|Install(?:ButtonText|Colors|Dir(?:RegKey)?)|InstProgressFlags|Inst(?:Type(?:GetText|SetText)?)|Int(?:64|Ptr)?CmpU?|Int(?:64)?Fmt|Int(?:Ptr)?Op|IsWindow|Lang(?:DLL|String)|License(?:BkColor|Data|ForceSelection|LangString|Text)|LoadLanguageFile|LockWindow|Log(?:Set|Text)|Manifest(?:DPIAware|SupportedOS)|Math|MessageBox|MiscButtonText|Name|Nop|ns(?:Dialogs|Exec)|NSISdl|OutFile|Page(?:Callbacks)?|PE(?:DllCharacteristics|SubsysVer)|Pop|Push|Quit|Read(?:EnvStr|INIStr|RegDWORD|RegStr)|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|Section(?:End|GetFlags|GetInstTypes|GetSize|GetText|Group|In|SetFlags|SetInstTypes|SetSize|SetText)?|SendMessage|Set(?:AutoClose|BrandingImage|Compress|Compressor(?:DictSize)?|CtlColors|CurInstType|DatablockOptimize|DateSave|Details(?:Print|View)|ErrorLevel|Errors|FileAttributes|Font|OutPath|Overwrite|PluginUnload|RebootFlag|RegView|ShellVarContext|Silent)|Show(?:InstDetails|UninstDetails|Window)|Silent(?:Install|UnInstall)|Sleep|SpaceTexts|Splash|StartMenu|Str(?:CmpS?|Cpy|Len)|SubCaption|System|Unicode|Uninstall(?:ButtonText|Caption|Icon|SubCaption|Text)|UninstPage|UnRegDLL|UserInfo|Var|VI(?:AddVersionKey|FileVersion|ProductVersion)|VPatch|WindowIcon|Write(?:INIStr|Reg(?:Bin|DWORD|ExpandStr|MultiStr|None|Str)|Uninstaller)|XPStyle)\b/m,lookbehind:!0},property:/\b(?:admin|all|auto|both|colored|false|force|hide|highest|lastused|leave|listonly|none|normal|notset|off|on|open|print|show|silent|silentlog|smooth|textonly|true|user|ARCHIVE|FILE_(ATTRIBUTE_ARCHIVE|ATTRIBUTE_NORMAL|ATTRIBUTE_OFFLINE|ATTRIBUTE_READONLY|ATTRIBUTE_SYSTEM|ATTRIBUTE_TEMPORARY)|HK((CR|CU|LM)(32|64)?|DD|PD|U)|HKEY_(CLASSES_ROOT|CURRENT_CONFIG|CURRENT_USER|DYN_DATA|LOCAL_MACHINE|PERFORMANCE_DATA|USERS)|ID(ABORT|CANCEL|IGNORE|NO|OK|RETRY|YES)|MB_(ABORTRETRYIGNORE|DEFBUTTON1|DEFBUTTON2|DEFBUTTON3|DEFBUTTON4|ICONEXCLAMATION|ICONINFORMATION|ICONQUESTION|ICONSTOP|OK|OKCANCEL|RETRYCANCEL|RIGHT|RTLREADING|SETFOREGROUND|TOPMOST|USERICON|YESNO)|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)\b/,constant:/\${[\w\.:\^-]+}|\$\([\w\.:\^-]+\)/i,variable:/\$\w+/i,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|\+\+?|<=?|>=?|==?=?|&&?|\|\|?|[?*\/~^%]/,punctuation:/[{}[\];(),.:]/,important:{pattern:/(^\s*)!(?:addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|ifdef|ifmacrodef|ifmacrondef|ifndef|if|include|insertmacro|macroend|macro|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|verbose|warning)\b/im,lookbehind:!0}}}e.exports=r,r.displayName="nsis",r.aliases=[]},function(e,t,n){"use strict";var r=n(34);function o(e){e.register(r),e.languages.objectivec=e.languages.extend("c",{keyword:/\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,string:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/})}e.exports=o,o.displayName="objectivec",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*\.?[\d_]*(?:e[+-]?[\d_]+)?)/i,type:{pattern:/\B['`]\w*/,alias:"variable"},directive:{pattern:/\B#\w+/,alias:"function"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|prefix|private|rec|then|sig|struct|to|try|type|val|value|virtual|where|while|with)\b/,boolean:/\b(?:false|true)\b/,operator:/:=|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lxor|lsl|lsr|mod|nor|or)\b/,punctuation:/[(){}\[\]|_.,:;]/}}e.exports=r,r.displayName="ocaml",r.aliases=[]},function(e,t,n){"use strict";var r=n(34),o=n(96);function a(e){e.register(r),e.register(o),function(e){e.languages.opencl=e.languages.extend("c",{keyword:/\b(?:__attribute__|(?:__)?(?:constant|global|kernel|local|private|read_only|read_write|write_only)|_cl_(?:command_queue|context|device_id|event|kernel|mem|platform_id|program|sampler)|auto|break|case|cl_(?:image_format|mem_fence_flags)|clk_event_t|complex|const|continue|default|do|(?:float|double)(?:16(?:x(?:1|16|2|4|8))?|1x(?:1|16|2|4|8)|2(?:x(?:1|16|2|4|8))?|3|4(?:x(?:1|16|2|4|8))?|8(?:x(?:1|16|2|4|8))?)?|else|enum|event_t|extern|for|goto|(?:u?(?:char|short|int|long)|half|quad|bool)(?:2|3|4|8|16)?|if|image(?:1d_(?:array_|buffer_)?t|2d_(?:array_(?:depth_|msaa_depth_|msaa_)?|depth_|msaa_depth_|msaa_)?t|3d_t)|imaginary|inline|intptr_t|ndrange_t|packed|pipe|ptrdiff_t|queue_t|register|reserve_id_t|restrict|return|sampler_t|signed|size_t|sizeof|static|struct|switch|typedef|uintptr_t|uniform|union|unsigned|void|volatile|while)\b/,"function-opencl-kernel":{pattern:/\b(?:abs(?:_diff)?|a?(?:cos|sin)(?:h|pi)?|add_sat|aligned|all|and|any|async(?:_work_group_copy|_work_group_strided_copy)?|atan(?:2?(?:pi)?|h)?|atom_(?:add|and|cmpxchg|dec|inc|max|min|or|sub|xchg|xor)|barrier|bitselect|cbrt|ceil|clamp|clz|copies|copysign|cross|degrees|distance|dot|endian|erf|erfc|exp(?:2|10)?|expm1|fabs|fast_(?:distance|length|normalize)|fdim|floor|fma|fmax|fmin|fract|frexp|fro|from|get_(?:global_(?:id|offset|size)|group_id|image_(?:channel_data_type|channel_order|depth|dim|height|width)|local(?:_id|_size)|num_groups|work_dim)|hadd|(?:half|native)_(?:cos|divide|exp(?:2|10)?|log(?:2|10)?|powr|recip|r?sqrt|sin|tan)|hypot|ilogb|is(?:equal|finite|greater(?:equal)?|inf|less(?:equal|greater)?|nan|normal|notequal|(?:un)?ordered)|ldexp|length|lgamma|lgamma_r|log(?:b|1p|2|10)?|mad(?:24|_hi|_sat)?|max|mem(?:_fence)?|min|mix|modf|mul24|mul_hi|nan|nextafter|normalize|pow[nr]?|prefetch|radians|read_(?:image)(?:f|h|u?i)|read_mem_fence|remainder|remquo|reqd_work_group_size|rhadd|rint|rootn|rotate|round|rsqrt|select|shuffle2?|sign|signbit|sincos|smoothstep|sqrt|step|sub_sat|tan|tanh|tanpi|tgamma|to|trunc|upsample|vec_(?:step|type_hint)|v(?:load|store)(?:_half)?(?:2|3|4|8|16)?|v(?:loada_half|storea?(?:_half)?)(?:2|3|4|8|16)?(?:_(?:rte|rtn|rtp|rtz))?|wait_group_events|work_group_size_hint|write_image(?:f|h|u?i)|write_mem_fence)\b/,alias:"function"},"constant-opencl-kernel":{pattern:/\b(?:CHAR_(?:BIT|MAX|MIN)|CLK_(?:ADDRESS_(?:CLAMP(?:_TO_EDGE)?|NONE|REPEAT)|FILTER_(?:LINEAR|NEAREST)|(?:LOCAL|GLOBAL)_MEM_FENCE|NORMALIZED_COORDS_(?:FALSE|TRUE))|CL_(?:BGRA|(?:HALF_)?FLOAT|INTENSITY|LUMINANCE|A?R?G?B?[Ax]?|(?:(?:UN)?SIGNED|[US]NORM)_(?:INT(?:8|16|32))|UNORM_(?:INT_101010|SHORT_(?:555|565)))|(?:DBL|FLT)_(?:DIG|EPSILON|MANT_DIG|(?:MIN|MAX)(?:(?:_10)?_EXP)?)|FLT_RADIX|HUGE_VALF|INFINITY|(?:INT|LONG|SCHAR|SHRT|UCHAR|UINT|ULONG)_(?:MAX|MIN)|MAXFLOAT|M_(?:[12]_PI|2_SQRTPI|E|LN(?:2|10)|LOG(?:10|2)E?|PI[24]?|SQRT(?:1_2|2))|NAN)\b/,alias:"constant"}});var t={"type-opencl-host":{pattern:/\b(?:cl_(?:GLenum|GLint|GLuin|addressing_mode|bitfield|bool|buffer_create_type|build_status|channel_(?:order|type)|(?:u?(?:char|short|int|long)|float|double)(?:2|3|4|8|16)?|command_(?:queue(?:_info|_properties)?|type)|context(?:_info|_properties)?|device_(?:exec_capabilities|fp_config|id|info|local_mem_type|mem_cache_type|type)|(?:event|sampler)(?:_info)?|filter_mode|half|image_info|kernel(?:_info|_work_group_info)?|map_flags|mem(?:_flags|_info|_object_type)?|platform_(?:id|info)|profiling_info|program(?:_build_info|_info)?))\b/,alias:"keyword"},"boolean-opencl-host":{pattern:/\bCL_(?:TRUE|FALSE)\b/,alias:"boolean"},"constant-opencl-host":{pattern:/\bCL_(?:A|ABGR|ADDRESS_(?:CLAMP(?:_TO_EDGE)?|MIRRORED_REPEAT|NONE|REPEAT)|ARGB|BGRA|BLOCKING|BUFFER_CREATE_TYPE_REGION|BUILD_(?:ERROR|IN_PROGRESS|NONE|PROGRAM_FAILURE|SUCCESS)|COMMAND_(?:ACQUIRE_GL_OBJECTS|BARRIER|COPY_(?:BUFFER(?:_RECT|_TO_IMAGE)?|IMAGE(?:_TO_BUFFER)?)|FILL_(?:BUFFER|IMAGE)|MAP(?:_BUFFER|_IMAGE)|MARKER|MIGRATE(?:_SVM)?_MEM_OBJECTS|NATIVE_KERNEL|NDRANGE_KERNEL|READ_(?:BUFFER(?:_RECT)?|IMAGE)|RELEASE_GL_OBJECTS|SVM_(?:FREE|MAP|MEMCPY|MEMFILL|UNMAP)|TASK|UNMAP_MEM_OBJECT|USER|WRITE_(?:BUFFER(?:_RECT)?|IMAGE))|COMPILER_NOT_AVAILABLE|COMPILE_PROGRAM_FAILURE|COMPLETE|CONTEXT_(?:DEVICES|INTEROP_USER_SYNC|NUM_DEVICES|PLATFORM|PROPERTIES|REFERENCE_COUNT)|DEPTH(?:_STENCIL)?|DEVICE_(?:ADDRESS_BITS|AFFINITY_DOMAIN_(?:L[1-4]_CACHE|NEXT_PARTITIONABLE|NUMA)|AVAILABLE|BUILT_IN_KERNELS|COMPILER_AVAILABLE|DOUBLE_FP_CONFIG|ENDIAN_LITTLE|ERROR_CORRECTION_SUPPORT|EXECUTION_CAPABILITIES|EXTENSIONS|GLOBAL_(?:MEM_(?:CACHELINE_SIZE|CACHE_SIZE|CACHE_TYPE|SIZE)|VARIABLE_PREFERRED_TOTAL_SIZE)|HOST_UNIFIED_MEMORY|IL_VERSION|IMAGE(?:2D_MAX_(?:HEIGHT|WIDTH)|3D_MAX_(?:DEPTH|HEIGHT|WIDTH)|_BASE_ADDRESS_ALIGNMENT|_MAX_ARRAY_SIZE|_MAX_BUFFER_SIZE|_PITCH_ALIGNMENT|_SUPPORT)|LINKER_AVAILABLE|LOCAL_MEM_SIZE|LOCAL_MEM_TYPE|MAX_(?:CLOCK_FREQUENCY|COMPUTE_UNITS|CONSTANT_ARGS|CONSTANT_BUFFER_SIZE|GLOBAL_VARIABLE_SIZE|MEM_ALLOC_SIZE|NUM_SUB_GROUPS|ON_DEVICE_(?:EVENTS|QUEUES)|PARAMETER_SIZE|PIPE_ARGS|READ_IMAGE_ARGS|READ_WRITE_IMAGE_ARGS|SAMPLERS|WORK_GROUP_SIZE|WORK_ITEM_DIMENSIONS|WORK_ITEM_SIZES|WRITE_IMAGE_ARGS)|MEM_BASE_ADDR_ALIGN|MIN_DATA_TYPE_ALIGN_SIZE|NAME|NATIVE_VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT)|NOT_(?:AVAILABLE|FOUND)|OPENCL_C_VERSION|PARENT_DEVICE|PARTITION_(?:AFFINITY_DOMAIN|BY_AFFINITY_DOMAIN|BY_COUNTS|BY_COUNTS_LIST_END|EQUALLY|FAILED|MAX_SUB_DEVICES|PROPERTIES|TYPE)|PIPE_MAX_(?:ACTIVE_RESERVATIONS|PACKET_SIZE)|PLATFORM|PREFERRED_(?:GLOBAL_ATOMIC_ALIGNMENT|INTEROP_USER_SYNC|LOCAL_ATOMIC_ALIGNMENT|PLATFORM_ATOMIC_ALIGNMENT|VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT))|PRINTF_BUFFER_SIZE|PROFILE|PROFILING_TIMER_RESOLUTION|QUEUE_(?:ON_(?:DEVICE_(?:MAX_SIZE|PREFERRED_SIZE|PROPERTIES)|HOST_PROPERTIES)|PROPERTIES)|REFERENCE_COUNT|SINGLE_FP_CONFIG|SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS|SVM_(?:ATOMICS|CAPABILITIES|COARSE_GRAIN_BUFFER|FINE_GRAIN_BUFFER|FINE_GRAIN_SYSTEM)|TYPE(?:_ACCELERATOR|_ALL|_CPU|_CUSTOM|_DEFAULT|_GPU)?|VENDOR(?:_ID)?|VERSION)|DRIVER_VERSION|EVENT_(?:COMMAND_(?:EXECUTION_STATUS|QUEUE|TYPE)|CONTEXT|REFERENCE_COUNT)|EXEC_(?:KERNEL|NATIVE_KERNEL|STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST)|FILTER_(?:LINEAR|NEAREST)|FLOAT|FP_(?:CORRECTLY_ROUNDED_DIVIDE_SQRT|DENORM|FMA|INF_NAN|ROUND_TO_INF|ROUND_TO_NEAREST|ROUND_TO_ZERO|SOFT_FLOAT)|GLOBAL|HALF_FLOAT|IMAGE_(?:ARRAY_SIZE|BUFFER|DEPTH|ELEMENT_SIZE|FORMAT|FORMAT_MISMATCH|FORMAT_NOT_SUPPORTED|HEIGHT|NUM_MIP_LEVELS|NUM_SAMPLES|ROW_PITCH|SLICE_PITCH|WIDTH)|INTENSITY|INVALID_(?:ARG_INDEX|ARG_SIZE|ARG_VALUE|BINARY|BUFFER_SIZE|BUILD_OPTIONS|COMMAND_QUEUE|COMPILER_OPTIONS|CONTEXT|DEVICE|DEVICE_PARTITION_COUNT|DEVICE_QUEUE|DEVICE_TYPE|EVENT|EVENT_WAIT_LIST|GLOBAL_OFFSET|GLOBAL_WORK_SIZE|GL_OBJECT|HOST_PTR|IMAGE_DESCRIPTOR|IMAGE_FORMAT_DESCRIPTOR|IMAGE_SIZE|KERNEL|KERNEL_ARGS|KERNEL_DEFINITION|KERNEL_NAME|LINKER_OPTIONS|MEM_OBJECT|MIP_LEVEL|OPERATION|PIPE_SIZE|PLATFORM|PROGRAM|PROGRAM_EXECUTABLE|PROPERTY|QUEUE_PROPERTIES|SAMPLER|VALUE|WORK_DIMENSION|WORK_GROUP_SIZE|WORK_ITEM_SIZE)|KERNEL_(?:ARG_(?:ACCESS_(?:NONE|QUALIFIER|READ_ONLY|READ_WRITE|WRITE_ONLY)|ADDRESS_(?:CONSTANT|GLOBAL|LOCAL|PRIVATE|QUALIFIER)|INFO_NOT_AVAILABLE|NAME|TYPE_(?:CONST|NAME|NONE|PIPE|QUALIFIER|RESTRICT|VOLATILE))|ATTRIBUTES|COMPILE_NUM_SUB_GROUPS|COMPILE_WORK_GROUP_SIZE|CONTEXT|EXEC_INFO_SVM_FINE_GRAIN_SYSTEM|EXEC_INFO_SVM_PTRS|FUNCTION_NAME|GLOBAL_WORK_SIZE|LOCAL_MEM_SIZE|LOCAL_SIZE_FOR_SUB_GROUP_COUNT|MAX_NUM_SUB_GROUPS|MAX_SUB_GROUP_SIZE_FOR_NDRANGE|NUM_ARGS|PREFERRED_WORK_GROUP_SIZE_MULTIPLE|PRIVATE_MEM_SIZE|PROGRAM|REFERENCE_COUNT|SUB_GROUP_COUNT_FOR_NDRANGE|WORK_GROUP_SIZE)|LINKER_NOT_AVAILABLE|LINK_PROGRAM_FAILURE|LOCAL|LUMINANCE|MAP_(?:FAILURE|READ|WRITE|WRITE_INVALIDATE_REGION)|MEM_(?:ALLOC_HOST_PTR|ASSOCIATED_MEMOBJECT|CONTEXT|COPY_HOST_PTR|COPY_OVERLAP|FLAGS|HOST_NO_ACCESS|HOST_PTR|HOST_READ_ONLY|HOST_WRITE_ONLY|KERNEL_READ_AND_WRITE|MAP_COUNT|OBJECT_(?:ALLOCATION_FAILURE|BUFFER|IMAGE1D|IMAGE1D_ARRAY|IMAGE1D_BUFFER|IMAGE2D|IMAGE2D_ARRAY|IMAGE3D|PIPE)|OFFSET|READ_ONLY|READ_WRITE|REFERENCE_COUNT|SIZE|SVM_ATOMICS|SVM_FINE_GRAIN_BUFFER|TYPE|USES_SVM_POINTER|USE_HOST_PTR|WRITE_ONLY)|MIGRATE_MEM_OBJECT_(?:CONTENT_UNDEFINED|HOST)|MISALIGNED_SUB_BUFFER_OFFSET|NONE|NON_BLOCKING|OUT_OF_(?:HOST_MEMORY|RESOURCES)|PIPE_(?:MAX_PACKETS|PACKET_SIZE)|PLATFORM_(?:EXTENSIONS|HOST_TIMER_RESOLUTION|NAME|PROFILE|VENDOR|VERSION)|PROFILING_(?:COMMAND_(?:COMPLETE|END|QUEUED|START|SUBMIT)|INFO_NOT_AVAILABLE)|PROGRAM_(?:BINARIES|BINARY_SIZES|BINARY_TYPE(?:_COMPILED_OBJECT|_EXECUTABLE|_LIBRARY|_NONE)?|BUILD_(?:GLOBAL_VARIABLE_TOTAL_SIZE|LOG|OPTIONS|STATUS)|CONTEXT|DEVICES|IL|KERNEL_NAMES|NUM_DEVICES|NUM_KERNELS|REFERENCE_COUNT|SOURCE)|QUEUED|QUEUE_(?:CONTEXT|DEVICE|DEVICE_DEFAULT|ON_DEVICE|ON_DEVICE_DEFAULT|OUT_OF_ORDER_EXEC_MODE_ENABLE|PROFILING_ENABLE|PROPERTIES|REFERENCE_COUNT|SIZE)|R|RA|READ_(?:ONLY|WRITE)_CACHE|RG|RGB|RGBA|RGBx|RGx|RUNNING|Rx|SAMPLER_(?:ADDRESSING_MODE|CONTEXT|FILTER_MODE|LOD_MAX|LOD_MIN|MIP_FILTER_MODE|NORMALIZED_COORDS|REFERENCE_COUNT)|(?:UN)?SIGNED_INT(?:8|16|32)|SNORM_INT(?:8|16)|SUBMITTED|SUCCESS|UNORM_INT(?:16|24|8|_101010|_101010_2)|UNORM_SHORT_(?:555|565)|VERSION_(?:1_0|1_1|1_2|2_0|2_1)|sBGRA|sRGB|sRGBA|sRGBx)\b/,alias:"constant"},"function-opencl-host":{pattern:/\bcl(?:BuildProgram|CloneKernel|CompileProgram|Create(?:Buffer|CommandQueue(?:WithProperties)?|Context|ContextFromType|Image|Image2D|Image3D|Kernel|KernelsInProgram|Pipe|ProgramWith(?:Binary|BuiltInKernels|IL|Source)|Sampler|SamplerWithProperties|SubBuffer|SubDevices|UserEvent)|Enqueue(?:(?:Barrier|Marker)(?:WithWaitList)?|Copy(?:Buffer(?:Rect|ToImage)?|Image(?:ToBuffer)?)|(?:Fill|Map)(?:Buffer|Image)|MigrateMemObjects|NDRangeKernel|NativeKernel|(?:Read|Write)(?:Buffer(?:Rect)?|Image)|SVM(?:Free|Map|MemFill|Memcpy|MigrateMem|Unmap)|Task|UnmapMemObject|WaitForEvents)|Finish|Flush|Get(?:CommandQueueInfo|ContextInfo|Device(?:AndHostTimer|IDs|Info)|Event(?:Profiling)?Info|ExtensionFunctionAddress(?:ForPlatform)?|HostTimer|ImageInfo|Kernel(?:ArgInfo|Info|SubGroupInfo|WorkGroupInfo)|MemObjectInfo|PipeInfo|Platform(?:IDs|Info)|Program(?:Build)?Info|SamplerInfo|SupportedImageFormats)|LinkProgram|(?:Release|Retain)(?:CommandQueue|Context|Device|Event|Kernel|MemObject|Program|Sampler)|SVM(?:Alloc|Free)|Set(?:CommandQueueProperty|DefaultDeviceCommandQueue|EventCallback|Kernel(?:Arg(?:SVMPointer)?|ExecInfo)|Kernel|MemObjectDestructorCallback|UserEventStatus)|Unload(?:Platform)?Compiler|WaitForEvents)\b/,alias:"function"}};e.languages.insertBefore("c","keyword",t),t["type-opencl-host-c++"]={pattern:/\b(?:Buffer|BufferGL|BufferRenderGL|CommandQueue|Context|Device|DeviceCommandQueue|EnqueueArgs|Event|Image|Image1D|Image1DArray|Image1DBuffer|Image2D|Image2DArray|Image2DGL|Image3D|Image3DGL|ImageFormat|ImageGL|Kernel|KernelFunctor|LocalSpaceArg|Memory|NDRange|Pipe|Platform|Program|Sampler|SVMAllocator|SVMTraitAtomic|SVMTraitCoarse|SVMTraitFine|SVMTraitReadOnly|SVMTraitReadWrite|SVMTraitWriteOnly|UserEvent)\b/,alias:"keyword"},e.languages.insertBefore("cpp","keyword",t)}(e)}e.exports=a,a.displayName="opencl",a.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.oz={comment:/\/\*[\s\S]*?\*\/|%.*/,string:{pattern:/"(?:[^"\\]|\\[\s\S])*"/,greedy:!0},atom:{pattern:/'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,alias:"builtin"},keyword:/[$_]|\[\]|\b(?:at|attr|case|catch|choice|class|cond|declare|define|dis|else(?:case|if)?|end|export|fail|false|feat|finally|from|fun|functor|if|import|in|local|lock|meth|nil|not|of|or|prepare|proc|prop|raise|require|self|skip|then|thread|true|try|unit)\b/,function:[/[a-z][A-Za-z\d]*(?=\()/,{pattern:/(\{)[A-Z][A-Za-z\d]*/,lookbehind:!0}],number:/\b(?:0[bx][\da-f]+|\d+\.?\d*(?:e~?\d+)?\b)|&(?:[^\\]|\\(?:\d{3}|.))/i,variable:/\b[A-Z][A-Za-z\d]*|`(?:[^`\\]|\\.)+`/,"attr-name":/\w+(?=:)/,operator:/:(?:=|::?)|<[-:=]?|=(?:=|=?:?|\\=:?|!!?|[|#+\-*\/,~^@]|\b(?:andthen|div|mod|orelse)\b/,punctuation:/[\[\](){}.:;?]/}}e.exports=r,r.displayName="oz",r.aliases=[]},function(e,t,n){"use strict";function r(e){var t;e.languages.parigp={comment:/\/\*[\s\S]*?\*\/|\\\\.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"/,greedy:!0},keyword:(t=["breakpoint","break","dbg_down","dbg_err","dbg_up","dbg_x","forcomposite","fordiv","forell","forpart","forprime","forstep","forsubgroup","forvec","for","iferr","if","local","my","next","return","until","while"],t=t.map(function(e){return e.split("").join(" *")}).join("|"),RegExp("\\b(?:"+t+")\\b")),function:/\w[\w ]*?(?= *\()/,number:{pattern:/((?:\. *\. *)?)(?:\d(?: *\d)*(?: *(?!\. *\.)\.(?: *\d)*)?|\. *\d(?: *\d)*)(?: *e *[+-]? *\d(?: *\d)*)?/i,lookbehind:!0},operator:/\. *\.|[*\/!](?: *=)?|%(?: *=|(?: *#)?(?: *')*)?|\+(?: *[+=])?|-(?: *[-=>])?|<(?:(?: *<)?(?: *=)?| *>)?|>(?: *>)?(?: *=)?|=(?: *=){0,2}|\\(?: *\/)?(?: *=)?|&(?: *&)?|\| *\||['#~^]/,punctuation:/[\[\]{}().,:;|]/}}e.exports=r,r.displayName="parigp",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.parser=e.languages.extend("markup",{keyword:{pattern:/(^|[^^])(?:\^(?:case|eval|for|if|switch|throw)\b|@(?:BASE|CLASS|GET(?:_DEFAULT)?|OPTIONS|SET_DEFAULT|USE)\b)/,lookbehind:!0},variable:{pattern:/(^|[^^])\B\$(?:\w+|(?=[.{]))(?:(?:\.|::?)\w+)*(?:\.|::?)?/,lookbehind:!0,inside:{punctuation:/\.|:+/}},function:{pattern:/(^|[^^])\B[@^]\w+(?:(?:\.|::?)\w+)*(?:\.|::?)?/,lookbehind:!0,inside:{keyword:{pattern:/(^@)(?:GET_|SET_)/,lookbehind:!0},punctuation:/\.|:+/}},escape:{pattern:/\^(?:[$^;@()\[\]{}"':]|#[a-f\d]*)/i,alias:"builtin"},punctuation:/[\[\](){};]/}),e.languages.insertBefore("parser","keyword",{"parser-comment":{pattern:/(\s)#.*/,lookbehind:!0,alias:"comment"},expression:{pattern:/(^|[^^])\((?:[^()]|\((?:[^()]|\((?:[^()])*\))*\))*\)/,greedy:!0,lookbehind:!0,inside:{string:{pattern:/(^|[^^])(["'])(?:(?!\2)[^^]|\^[\s\S])*\2/,lookbehind:!0},keyword:e.languages.parser.keyword,variable:e.languages.parser.variable,function:e.languages.parser.function,boolean:/\b(?:true|false)\b/,number:/\b(?:0x[a-f\d]+|\d+\.?\d*(?:e[+-]?\d+)?)\b/i,escape:e.languages.parser.escape,operator:/[~+*\/\\%]|!(?:\|\|?|=)?|&&?|\|\|?|==|<[<=]?|>[>=]?|-[fd]?|\b(?:def|eq|ge|gt|in|is|le|lt|ne)\b/,punctuation:e.languages.parser.punctuation}}}),e.languages.insertBefore("inside","punctuation",{expression:e.languages.parser.expression,keyword:e.languages.parser.keyword,variable:e.languages.parser.variable,function:e.languages.parser.function,escape:e.languages.parser.escape,"parser-punctuation":{pattern:e.languages.parser.punctuation,alias:"punctuation"}},e.languages.parser.tag.inside["attr-value"])}e.exports=r,r.displayName="parser",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.pascal={comment:[/\(\*[\s\S]+?\*\)/,/\{[\s\S]+?\}/,/\/\/.*/],string:{pattern:/(?:'(?:''|[^'\r\n])*'|#[&$%]?[a-f\d]+)+|\^[a-z]/i,greedy:!0},keyword:[{pattern:/(^|[^&])\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:dispose|exit|false|new|true)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\b/i,lookbehind:!0}],number:[/(?:[&%]\d+|\$[a-f\d]+)/i,/\b\d+(?:\.\d+)?(?:e[+-]?\d+)?/i],operator:[/\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=]/i,{pattern:/(^|[^&])\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\b/,lookbehind:!0}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/},e.languages.objectpascal=e.languages.pascal}e.exports=r,r.displayName="pascal",r.aliases=["objectpascal"]},function(e,t,n){"use strict";function r(e){e.languages.perl={comment:[{pattern:/(^\s*)=\w+[\s\S]*?=cut.*/m,lookbehind:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0}],string:[{pattern:/\b(?:q|qq|qx|qw)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\{(?:[^{}\\]|\\[\s\S])*\}/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\[(?:[^[\]\\]|\\[\s\S])*\]/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:/\b(?:m|qr)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngc]*/,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s+([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\((?:[^()\\]|\\[\s\S])*\)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\{(?:[^{}\\]|\\[\s\S])*\}\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\[(?:[^[\]\\]|\\[\s\S])*\]\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*<(?:[^<>\\]|\\[\s\S])*>\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+)+(?:::)*/i,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*>|\b_\b/,alias:"symbol"},vstring:{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:"string"},function:{pattern:/sub [a-z0-9_]+/i,inside:{keyword:/sub/}},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:\d(?:_?\d)*)?\.?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\b/,punctuation:/[{}[\];(),:]/}}e.exports=r,r.displayName="perl",r.aliases=[]},function(e,t,n){"use strict";var r=n(166);function o(e){e.register(r),e.languages.insertBefore("php","variable",{this:/\$this\b/,global:/\$(?:_(?:SERVER|GET|POST|FILES|REQUEST|SESSION|ENV|COOKIE)|GLOBALS|HTTP_RAW_POST_DATA|argc|argv|php_errormsg|http_response_header)\b/,scope:{pattern:/\b[\w\\]+::/,inside:{keyword:/static|self|parent/,punctuation:/::|\\/}}})}e.exports=o,o.displayName="phpExtras",o.aliases=[]},function(e,t,n){"use strict";var r=n(167);function o(e){e.register(r),e.languages.plsql=e.languages.extend("sql",{comment:[/\/\*[\s\S]*?\*\//,/--.*/]}),"Array"!==e.util.type(e.languages.plsql.keyword)&&(e.languages.plsql.keyword=[e.languages.plsql.keyword]),e.languages.plsql.keyword.unshift(/\b(?:ACCESS|AGENT|AGGREGATE|ARRAY|ARROW|AT|ATTRIBUTE|AUDIT|AUTHID|BFILE_BASE|BLOB_BASE|BLOCK|BODY|BOTH|BOUND|BYTE|CALLING|CHAR_BASE|CHARSET(?:FORM|ID)|CLOB_BASE|COLAUTH|COLLECT|CLUSTERS?|COMPILED|COMPRESS|CONSTANT|CONSTRUCTOR|CONTEXT|CRASH|CUSTOMDATUM|DANGLING|DATE_BASE|DEFINE|DETERMINISTIC|DURATION|ELEMENT|EMPTY|EXCEPTIONS?|EXCLUSIVE|EXTERNAL|FINAL|FORALL|FORM|FOUND|GENERAL|HEAP|HIDDEN|IDENTIFIED|IMMEDIATE|INCLUDING|INCREMENT|INDICATOR|INDEXES|INDICES|INFINITE|INITIAL|ISOPEN|INSTANTIABLE|INTERFACE|INVALIDATE|JAVA|LARGE|LEADING|LENGTH|LIBRARY|LIKE[24C]|LIMITED|LONG|LOOP|MAP|MAXEXTENTS|MAXLEN|MEMBER|MINUS|MLSLABEL|MULTISET|NAME|NAN|NATIVE|NEW|NOAUDIT|NOCOMPRESS|NOCOPY|NOTFOUND|NOWAIT|NUMBER(?:_BASE)?|OBJECT|OCI(?:COLL|DATE|DATETIME|DURATION|INTERVAL|LOBLOCATOR|NUMBER|RAW|REF|REFCURSOR|ROWID|STRING|TYPE)|OFFLINE|ONLINE|ONLY|OPAQUE|OPERATOR|ORACLE|ORADATA|ORGANIZATION|ORL(?:ANY|VARY)|OTHERS|OVERLAPS|OVERRIDING|PACKAGE|PARALLEL_ENABLE|PARAMETERS?|PASCAL|PCTFREE|PIPE(?:LINED)?|PRAGMA|PRIOR|PRIVATE|RAISE|RANGE|RAW|RECORD|REF|REFERENCE|REM|REMAINDER|RESULT|RESOURCE|RETURNING|REVERSE|ROW(?:ID|NUM|TYPE)|SAMPLE|SB[124]|SEGMENT|SELF|SEPARATE|SEQUENCE|SHORT|SIZE(?:_T)?|SPARSE|SQL(?:CODE|DATA|NAME|STATE)|STANDARD|STATIC|STDDEV|STORED|STRING|STRUCT|STYLE|SUBMULTISET|SUBPARTITION|SUBSTITUTABLE|SUBTYPE|SUCCESSFUL|SYNONYM|SYSDATE|TABAUTH|TDO|THE|TIMEZONE_(?:ABBR|HOUR|MINUTE|REGION)|TRAILING|TRANSAC(?:TIONAL)?|TRUSTED|UB[124]|UID|UNDER|UNTRUSTED|VALIDATE|VALIST|VARCHAR2|VARIABLE|VARIANCE|VARRAY|VIEWS|VOID|WHENEVER|WRAPPED|ZONE)\b/i),"Array"!==e.util.type(e.languages.plsql.operator)&&(e.languages.plsql.operator=[e.languages.plsql.operator]),e.languages.plsql.operator.unshift(/:=/)}e.exports=o,o.displayName="plsql",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{function:{pattern:/(^|[^`])\$\((?:\$\(.*?\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*]|[^\[\]])*]|[^\[\]])*]/i,boolean:/\$(?:true|false)\b/i,variable:/\$\w+\b/i,function:[/\b(?:Add-(?:Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(?:Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(?:Csv|Json|StringData)|Convert-Path|ConvertTo-(?:Csv|Html|Json|Xml)|Copy-(?:Item|ItemProperty)|Debug-Process|Disable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(?:Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(?:Custom|List|Table|Wide)|Get-(?:Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(?:Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(?:Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(?:Command|Object)|Move-(?:Item|ItemProperty)|New-(?:Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(?:Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(?:Job|PSSession)|Register-(?:EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(?:Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(?:Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(?:Computer|Service)|Restore-Computer|Resume-(?:Job|Service)|Save-Help|Select-(?:Object|String|Xml)|Send-MailMessage|Set-(?:Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(?:Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(?:Job|Process|Service|Sleep|Transaction)|Stop-(?:Computer|Job|Process|Service)|Suspend-(?:Job|Service)|Tee-Object|Test-(?:ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(?:Event|PSSessionConfiguration)|Update-(?:FormatData|Help|List|TypeData)|Use-Transaction|Wait-(?:Event|Job|Process)|Where-Object|Write-(?:Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},e.languages.powershell.string[0].inside.boolean=e.languages.powershell.boolean,e.languages.powershell.string[0].inside.variable=e.languages.powershell.variable,e.languages.powershell.string[0].inside.function.inside=e.languages.powershell}e.exports=r,r.displayName="powershell",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.processing=e.languages.extend("clike",{keyword:/\b(?:break|catch|case|class|continue|default|else|extends|final|for|if|implements|import|new|null|private|public|return|static|super|switch|this|try|void|while)\b/,operator:/<[<=]?|>[>=]?|&&?|\|\|?|[%?]|[!=+\-*\/]=?/}),e.languages.insertBefore("processing","number",{constant:/\b(?!XML\b)[A-Z][A-Z\d_]+\b/,type:{pattern:/\b(?:boolean|byte|char|color|double|float|int|XML|[A-Z]\w*)\b/,alias:"variable"}}),e.languages.processing.function.pattern=/\w+(?=\s*\()/,e.languages.processing["class-name"].alias="variable"}e.exports=r,r.displayName="processing",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.prolog={comment:[/%.+/,/\/\*[\s\S]*?\*\//],string:{pattern:/(["'])(?:\1\1|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\b(?:fx|fy|xf[xy]?|yfx?)\b/,variable:/\b[A-Z_]\w*/,function:/\b[a-z]\w*(?:(?=\()|\/\d+)/,number:/\b\d+\.?\d*/,operator:/[:\\=><\-?*@\/;+^|!$.]+|\b(?:is|mod|not|xor)\b/,punctuation:/[(){}\[\],]/}}e.exports=r,r.displayName="prolog",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.properties={comment:/^[ \t]*[#!].*$/m,"attr-value":{pattern:/(^[ \t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+?(?: *[=:] *| ))(?:\\(?:\r\n|[\s\S])|[^\\\r\n])+/m,lookbehind:!0},"attr-name":/^[ \t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+?(?= *[=:] *| )/m,punctuation:/[=:]/}}e.exports=r,r.displayName="properties",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.protobuf=e.languages.extend("clike",{keyword:/\b(?:package|import|message|enum)\b/,builtin:/\b(?:required|repeated|optional|reserved)\b/,primitive:{pattern:/\b(?:double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes)\b/,alias:"symbol"}})}e.exports=r,r.displayName="protobuf",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.pug={comment:{pattern:/(^([\t ]*))\/\/.*(?:(?:\r?\n|\r)\2[\t ]+.+)*/m,lookbehind:!0},"multiline-script":{pattern:/(^([\t ]*)script\b.*\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{rest:e.languages.javascript}},filter:{pattern:/(^([\t ]*)):.+(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},"multiline-plain-text":{pattern:/(^([\t ]*)[\w\-#.]+\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0},markup:{pattern:/(^[\t ]*)<.+/m,lookbehind:!0,inside:{rest:e.languages.markup}},doctype:{pattern:/((?:^|\n)[\t ]*)doctype(?: .+)?/,lookbehind:!0},"flow-control":{pattern:/(^[\t ]*)(?:if|unless|else|case|when|default|each|while)\b(?: .+)?/m,lookbehind:!0,inside:{each:{pattern:/^each .+? in\b/,inside:{keyword:/\b(?:each|in)\b/,punctuation:/,/}},branch:{pattern:/^(?:if|unless|else|case|when|default|while)\b/,alias:"keyword"},rest:e.languages.javascript}},keyword:{pattern:/(^[\t ]*)(?:block|extends|include|append|prepend)\b.+/m,lookbehind:!0},mixin:[{pattern:/(^[\t ]*)mixin .+/m,lookbehind:!0,inside:{keyword:/^mixin/,function:/\w+(?=\s*\(|\s*$)/,punctuation:/[(),.]/}},{pattern:/(^[\t ]*)\+.+/m,lookbehind:!0,inside:{name:{pattern:/^\+\w+/,alias:"function"},rest:e.languages.javascript}}],script:{pattern:/(^[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*[\t ]+).+/m,lookbehind:!0,inside:{rest:e.languages.javascript}},"plain-text":{pattern:/(^[\t ]*(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?[\t ]+).+/m,lookbehind:!0},tag:{pattern:/(^[\t ]*)(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?:?/m,lookbehind:!0,inside:{attributes:[{pattern:/&[^(]+\([^)]+\)/,inside:{rest:e.languages.javascript}},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:\{[^}]*\}|[^,)\r\n]+)/,lookbehind:!0,inside:{rest:e.languages.javascript}},"attr-name":/[\w-]+(?=\s*!?=|\s*[,)])/,punctuation:/[!=(),]+/}}],punctuation:/:/}},code:[{pattern:/(^[\t ]*(?:-|!?=)).+/m,lookbehind:!0,inside:{rest:e.languages.javascript}}],punctuation:/[.\-!=|]+/};for(var t=[{filter:"atpl",language:"twig"},{filter:"coffee",language:"coffeescript"},"ejs","handlebars","hogan","less","livescript","markdown","mustache","plates",{filter:"sass",language:"scss"},"stylus","swig"],n={},r=0,o=t.length;r\s*|^\s*))\/(?:[^\/\\]|\\[\s\S])+\/(?:[imx]+\b|\B)/,lookbehind:!0,greedy:!0,inside:{"extended-regex":{pattern:/^\/(?:[^\/\\]|\\[\s\S])+\/[im]*x[im]*$/,inside:{comment:/#.*/}}}},comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},string:{pattern:/(["'])(?:\$\{(?:[^'"}]|(["'])(?:(?!\2)[^\\]|\\[\s\S])*\2)+\}|(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{"double-quoted":{pattern:/^"[\s\S]*"$/,inside:{}}}},variable:{pattern:/\$(?:::)?\w+(?:::\w+)*/,inside:{punctuation:/::/}},"attr-name":/(?:\w+|\*)(?=\s*=>)/,function:[{pattern:/(\.)(?!\d)\w+/,lookbehind:!0},/\b(?:contain|debug|err|fail|include|info|notice|realize|require|tag|warning)\b|\b(?!\d)\w+(?=\()/],number:/\b(?:0x[a-f\d]+|\d+(?:\.\d+)?(?:e-?\d+)?)\b/i,boolean:/\b(?:true|false)\b/,keyword:/\b(?:application|attr|case|class|consumes|default|define|else|elsif|function|if|import|inherits|node|private|produces|type|undef|unless)\b/,datatype:{pattern:/\b(?:Any|Array|Boolean|Callable|Catalogentry|Class|Collection|Data|Default|Enum|Float|Hash|Integer|NotUndef|Numeric|Optional|Pattern|Regexp|Resource|Runtime|Scalar|String|Struct|Tuple|Type|Undef|Variant)\b/,alias:"symbol"},operator:/=[=~>]?|![=~]?|<(?:<\|?|[=~|-])?|>[>=]?|->?|~>|\|>?>?|[*\/%+?]|\b(?:and|in|or)\b/,punctuation:/[\[\]{}().,;]|:+/};var t=[{pattern:/(^|[^\\])\$\{(?:[^'"{}]|\{[^}]*\}|(["'])(?:(?!\2)[^\\]|\\[\s\S])*\2)+\}/,lookbehind:!0,inside:{"short-variable":{pattern:/(^\$\{)(?!\w+\()(?:::)?\w+(?:::\w+)*/,lookbehind:!0,alias:"variable",inside:{punctuation:/::/}},delimiter:{pattern:/^\$/,alias:"variable"},rest:e.languages.puppet}},{pattern:/(^|[^\\])\$(?:::)?\w+(?:::\w+)*/,lookbehind:!0,alias:"variable",inside:{punctuation:/::/}}];e.languages.puppet.heredoc[0].inside.interpolation=t,e.languages.puppet.string.inside["double-quoted"].inside.interpolation=t}(e)}e.exports=r,r.displayName="puppet",r.aliases=[]},function(e,t,n){"use strict";var r=n(34);function o(e){e.register(r),function(e){e.languages.pure={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0},/#!.+/],"inline-lang":{pattern:/%<[\s\S]+?%>/,greedy:!0,inside:{lang:{pattern:/(^%< *)-\*-.+?-\*-/,lookbehind:!0,alias:"comment"},delimiter:{pattern:/^%<.*|%>$/,alias:"punctuation"}}},string:{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0},number:{pattern:/((?:\.\.)?)(?:\b(?:inf|nan)\b|\b0x[\da-f]+|(?:\b(?:0b)?\d+(?:\.\d)?|\B\.\d)\d*(?:e[+-]?\d+)?L?)/i,lookbehind:!0},keyword:/\b(?:ans|break|bt|case|catch|cd|clear|const|def|del|dump|else|end|exit|extern|false|force|help|if|infix[lr]?|interface|let|ls|mem|namespace|nonfix|NULL|of|otherwise|outfix|override|postfix|prefix|private|public|pwd|quit|run|save|show|stats|then|throw|trace|true|type|underride|using|when|with)\b/,function:/\b(?:abs|add_(?:(?:fundef|interface|macdef|typedef)(?:_at)?|addr|constdef|vardef)|all|any|applp?|arity|bigintp?|blob(?:_crc|_size|p)?|boolp?|byte_(?:matrix|pointer)|byte_c?string(?:_pointer)?|calloc|cat|catmap|ceil|char[ps]?|check_ptrtag|chr|clear_sentry|clearsym|closurep?|cmatrixp?|cols?|colcat(?:map)?|colmap|colrev|colvector(?:p|seq)?|complex(?:_float_(?:matrix|pointer)|_matrix(?:_view)?|_pointer|p)?|conj|cookedp?|cst|cstring(?:_(?:dup|list|vector))?|curry3?|cyclen?|del_(?:constdef|fundef|interface|macdef|typedef|vardef)|delete|diag(?:mat)?|dim|dmatrixp?|do|double(?:_matrix(?:_view)?|_pointer|p)?|dowith3?|drop|dropwhile|eval(?:cmd)?|exactp|filter|fix|fixity|flip|float(?:_matrix|_pointer)|floor|fold[lr]1?|frac|free|funp?|functionp?|gcd|get(?:_(?:byte|constdef|double|float|fundef|int(?:64)?|interface(?:_typedef)?|long|macdef|pointer|ptrtag|short|sentry|string|typedef|vardef))?|globsym|hash|head|id|im|imatrixp?|index|inexactp|infp|init|insert|int(?:_matrix(?:_view)?|_pointer|p)?|int64_(?:matrix|pointer)|integerp?|iteraten?|iterwhile|join|keys?|lambdap?|last(?:err(?:pos)?)?|lcd|list[2p]?|listmap|make_ptrtag|malloc|map|matcat|matrixp?|max|member|min|nanp|nargs|nmatrixp?|null|numberp?|ord|pack(?:ed)?|pointer(?:_cast|_tag|_type|p)?|pow|pred|ptrtag|put(?:_(?:byte|double|float|int(?:64)?|long|pointer|short|string))?|rationalp?|re|realp?|realloc|recordp?|redim|reduce(?:_with)?|refp?|repeatn?|reverse|rlistp?|round|rows?|rowcat(?:map)?|rowmap|rowrev|rowvector(?:p|seq)?|same|scan[lr]1?|sentry|sgn|short_(?:matrix|pointer)|slice|smatrixp?|sort|split|str|strcat|stream|stride|string(?:_(?:dup|list|vector)|p)?|subdiag(?:mat)?|submat|subseq2?|substr|succ|supdiag(?:mat)?|symbolp?|tail|take|takewhile|thunkp?|transpose|trunc|tuplep?|typep|ubyte|uint(?:64)?|ulong|uncurry3?|unref|unzip3?|update|ushort|vals?|varp?|vector(?:p|seq)?|void|zip3?|zipwith3?)\b/,special:{pattern:/\b__[a-z]+__\b/i,alias:"builtin"},operator:/(?=\b_|[^_])[!"#$%&'*+,\-.\/:<=>?@\\^_`|~\u00a1-\u00bf\u00d7-\u00f7\u20d0-\u2bff]+|\b(?:and|div|mod|not|or)\b/,punctuation:/[(){}\[\];,|]/};["c",{lang:"c++",alias:"cpp"},"fortran","ats","dsp"].forEach(function(t){var n=t;if("string"!=typeof t&&(n=t.alias,t=t.lang),e.languages[n]){var r={};r["inline-lang-"+n]={pattern:RegExp("%< *-\\*- *{lang}\\d* *-\\*-[\\s\\S]+?%>".replace("{lang}",t.replace(/([.+*?\/\\(){}\[\]])/g,"\\$1")),"i"),inside:e.util.clone(e.languages.pure["inline-lang"].inside)},r["inline-lang-"+n].inside.rest=e.util.clone(e.languages[n]),e.languages.insertBefore("pure","inline-lang",r)}}),e.languages.c&&(e.languages.pure["inline-lang"].inside.rest=e.util.clone(e.languages.c))}(e)}e.exports=o,o.displayName="pure",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"triple-quoted-string":{pattern:/("""|''')[\s\S]+?\1/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="python",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.q={string:/"(?:\\.|[^"\\\r\n])*"/,comment:[{pattern:/([\t )\]}])\/.*/,lookbehind:!0,greedy:!0},{pattern:/(^|\r?\n|\r)\/[\t ]*(?:(?:\r?\n|\r)(?:.*(?:\r?\n|\r))*?(?:\\(?=[\t ]*(?:\r?\n|\r))|$)|\S.*)/,lookbehind:!0,greedy:!0},{pattern:/^\\[\t ]*(?:\r?\n|\r)[\s\S]+/m,greedy:!0},{pattern:/^#!.+/m,greedy:!0}],symbol:/`(?::\S+|[\w.]*)/,datetime:{pattern:/0N[mdzuvt]|0W[dtz]|\d{4}\.\d\d(?:m|\.\d\d(?:T(?:\d\d(?::\d\d(?::\d\d(?:[.:]\d\d\d)?)?)?)?)?[dz]?)|\d\d:\d\d(?::\d\d(?:[.:]\d\d\d)?)?[uvt]?/,alias:"number"},number:/\b(?![01]:)(?:0[wn]|0W[hj]?|0N[hje]?|0x[\da-fA-F]+|\d+\.?\d*(?:e[+-]?\d+)?[hjfeb]?)/,keyword:/\\\w+\b|\b(?:abs|acos|aj0?|all|and|any|asc|asin|asof|atan|attr|avgs?|binr?|by|ceiling|cols|cor|cos|count|cov|cross|csv|cut|delete|deltas|desc|dev|differ|distinct|div|do|dsave|ej|enlist|eval|except|exec|exit|exp|fby|fills|first|fkeys|flip|floor|from|get|getenv|group|gtime|hclose|hcount|hdel|hopen|hsym|iasc|identity|idesc|if|ij|in|insert|inter|inv|keys?|last|like|list|ljf?|load|log|lower|lsq|ltime|ltrim|mavg|maxs?|mcount|md5|mdev|med|meta|mins?|mmax|mmin|mmu|mod|msum|neg|next|not|null|or|over|parse|peach|pj|plist|prds?|prev|prior|rand|rank|ratios|raze|read0|read1|reciprocal|reval|reverse|rload|rotate|rsave|rtrim|save|scan|scov|sdev|select|set|setenv|show|signum|sin|sqrt|ssr?|string|sublist|sums?|sv|svar|system|tables|tan|til|trim|txf|type|uj|ungroup|union|update|upper|upsert|value|var|views?|vs|wavg|where|while|within|wj1?|wsum|ww|xasc|xbar|xcols?|xdesc|xexp|xgroup|xkey|xlog|xprev|xrank)\b/,adverb:{pattern:/['\/\\]:?|\beach\b/,alias:"function"},verb:{pattern:/(?:\B\.\B|\b[01]:|<[=>]?|>=?|[:+\-*%,!?_~=|$&#@^]):?/,alias:"operator"},punctuation:/[(){}\[\];.]/}}e.exports=r,r.displayName="q",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.qore=e.languages.extend("clike",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:\/\/|#).*)/,lookbehind:!0},string:{pattern:/("|')(\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},variable:/\$(?!\d)\w+\b/,keyword:/\b(?:abstract|any|assert|binary|bool|boolean|break|byte|case|catch|char|class|code|const|continue|data|default|do|double|else|enum|extends|final|finally|float|for|goto|hash|if|implements|import|inherits|instanceof|int|interface|long|my|native|new|nothing|null|object|our|own|private|reference|rethrow|return|short|soft(?:int|float|number|bool|string|date|list)|static|strictfp|string|sub|super|switch|synchronized|this|throw|throws|transient|try|void|volatile|while)\b/,number:/\b(?:0b[01]+|0x[\da-f]*\.?[\da-fp\-]+|\d*\.?\d+e?\d*[df]|\d*\.?\d+)\b/i,boolean:/\b(?:true|false)\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|[!=](?:==?|~)?|>>?=?|<(?:=>?|<=?)?|&[&=]?|\|[|=]?|[*\/%^]=?|[~?])/,lookbehind:!0},function:/\$?\b(?!\d)\w+(?=\()/})}e.exports=r,r.displayName="qore",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.r={comment:/#.*/,string:{pattern:/(['"])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"percent-operator":{pattern:/%[^%\s]*%/,alias:"operator"},boolean:/\b(?:TRUE|FALSE)\b/,ellipsis:/\.\.(?:\.|\d+)/,number:[/\b(?:NaN|Inf)\b/,/(?:\b0x[\dA-Fa-f]+(?:\.\d*)?|\b\d+\.?\d*|\B\.\d+)(?:[EePp][+-]?\d+)?[iL]?/],keyword:/\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\b/,operator:/->?>?|<(?:=|=!]=?|::?|&&?|\|\|?|[+*\/^$@~]/,punctuation:/[(){}\[\],;]/}}e.exports=r,r.displayName="r",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.reason=e.languages.extend("clike",{comment:{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/}),e.languages.insertBefore("reason","class-name",{character:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,alias:"string"},constructor:{pattern:/\b[A-Z]\w*\b(?!\s*\.)/,alias:"variable"},label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete e.languages.reason.function}e.exports=r,r.displayName="reason",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.renpy={comment:{pattern:/(^|[^\\])#.+/,lookbehind:!0},string:{pattern:/("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2|(?:^#?(?:(?:[0-9a-fA-F]{2}){3}|(?:[0-9a-fA-F]){3})$)/m,greedy:!0},function:/[a-z_]\w*(?=\()/i,property:/\b(?:insensitive|idle|hover|selected_idle|selected_hover|background|position|alt|xpos|ypos|pos|xanchor|yanchor|anchor|xalign|yalign|align|xcenter|ycenter|xofsset|yoffset|ymaximum|maximum|xmaximum|xminimum|yminimum|minimum|xsize|ysizexysize|xfill|yfill|area|antialias|black_color|bold|caret|color|first_indent|font|size|italic|justify|kerning|language|layout|line_leading|line_overlap_split|line_spacing|min_width|newline_indent|outlines|rest_indent|ruby_style|slow_cps|slow_cps_multiplier|strikethrough|text_align|underline|hyperlink_functions|vertical|hinting|foreground|left_margin|xmargin|top_margin|bottom_margin|ymargin|left_padding|right_padding|xpadding|top_padding|bottom_padding|ypadding|size_group|child|hover_sound|activate_sound|mouse|focus_mask|keyboard_focus|bar_vertical|bar_invert|bar_resizing|left_gutter|right_gutter|top_gutter|bottom_gutter|left_bar|right_bar|top_bar|bottom_bar|thumb|thumb_shadow|thumb_offset|unscrollable|spacing|first_spacing|box_reverse|box_wrap|order_reverse|fit_first|ysize|thumbnail_width|thumbnail_height|help|text_ypos|text_xpos|idle_color|hover_color|selected_idle_color|selected_hover_color|insensitive_color|alpha|insensitive_background|hover_background|zorder|value|width|xadjustment|xanchoraround|xaround|xinitial|xoffset|xzoom|yadjustment|yanchoraround|yaround|yinitial|yzoom|zoom|ground|height|text_style|text_y_fudge|selected_insensitive|has_sound|has_music|has_voice|focus|hovered|image_style|length|minwidth|mousewheel|offset|prefix|radius|range|right_margin|rotate|rotate_pad|developer|screen_width|screen_height|window_title|name|version|windows_icon|default_fullscreen|default_text_cps|default_afm_time|main_menu_music|sample_sound|enter_sound|exit_sound|save_directory|enter_transition|exit_transition|intra_transition|main_game_transition|game_main_transition|end_splash_transition|end_game_transition|after_load_transition|window_show_transition|window_hide_transition|adv_nvl_transition|nvl_adv_transition|enter_yesno_transition|exit_yesno_transition|enter_replay_transition|exit_replay_transition|say_attribute_transition|directory_name|executable_name|include_update|window_icon|modal|google_play_key|google_play_salt|drag_name|drag_handle|draggable|dragged|droppable|dropped|narrator_menu|action|default_afm_enable|version_name|version_tuple|inside|fadeout|fadein|layers|layer_clipping|linear|scrollbars|side_xpos|side_ypos|side_spacing|edgescroll|drag_joined|drag_raise|drop_shadow|drop_shadow_color|subpixel|easein|easeout|time|crop|auto|update|get_installed_packages|can_update|UpdateVersion|Update|overlay_functions|translations|window_left_padding|show_side_image|show_two_window)\b/,tag:/\b(?:label|image|menu|[hv]box|frame|text|imagemap|imagebutton|bar|vbar|screen|textbutton|buttoscreenn|fixed|grid|input|key|mousearea|side|timer|viewport|window|hotspot|hotbar|self|button|drag|draggroup|tag|mm_menu_frame|nvl|block|parallel)\b|\$/,keyword:/\b(?:as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|yield|adjustment|alignaround|allow|angle|around|box_layout|cache|changed|child_size|clicked|clipping|corner1|corner2|default|delay|exclude|scope|slow|slow_abortable|slow_done|sound|style_group|substitute|suffix|transform_anchor|transpose|unhovered|config|theme|mm_root|gm_root|rounded_window|build|disabled_text|disabled|widget_selected|widget_text|widget_hover|widget|updater|behind|call|expression|hide|init|jump|onlayer|python|renpy|scene|set|show|transform|play|queue|stop|pause|define|window|repeat|contains|choice|on|function|event|animation|clockwise|counterclockwise|circles|knot|null|None|random|has|add|use|fade|dissolve|style|store|id|voice|center|left|right|less_rounded|music|movie|clear|persistent|ui)\b/,boolean:/\b(?:[Tt]rue|[Ff]alse)\b/,number:/(?:\b(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*)|\B\.\d+)(?:e[+-]?\d+)?j?/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not|with|at)\b/,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="renpy",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.rest={table:[{pattern:/(\s*)(?:\+[=-]+)+\+(?:\r?\n|\r)(?:\1(?:[+|].+)+[+|](?:\r?\n|\r))+\1(?:\+[=-]+)+\+/,lookbehind:!0,inside:{punctuation:/\||(?:\+[=-]+)+\+/}},{pattern:/(\s*)(?:=+ +)+=+(?:(?:\r?\n|\r)\1.+)+(?:\r?\n|\r)\1(?:=+ +)+=+(?=(?:\r?\n|\r){2}|\s*$)/,lookbehind:!0,inside:{punctuation:/[=-]+/}}],"substitution-def":{pattern:/(^\s*\.\. )\|(?:[^|\s](?:[^|]*[^|\s])?)\| [^:]+::/m,lookbehind:!0,inside:{substitution:{pattern:/^\|(?:[^|\s]|[^|\s][^|]*[^|\s])\|/,alias:"attr-value",inside:{punctuation:/^\||\|$/}},directive:{pattern:/( +)[^:]+::/,lookbehind:!0,alias:"function",inside:{punctuation:/::$/}}}},"link-target":[{pattern:/(^\s*\.\. )\[[^\]]+\]/m,lookbehind:!0,alias:"string",inside:{punctuation:/^\[|\]$/}},{pattern:/(^\s*\.\. )_(?:`[^`]+`|(?:[^:\\]|\\.)+):/m,lookbehind:!0,alias:"string",inside:{punctuation:/^_|:$/}}],directive:{pattern:/(^\s*\.\. )[^:]+::/m,lookbehind:!0,alias:"function",inside:{punctuation:/::$/}},comment:{pattern:/(^\s*\.\.)(?:(?: .+)?(?:(?:\r?\n|\r).+)+| .+)(?=(?:\r?\n|\r){2}|$)/m,lookbehind:!0},title:[{pattern:/^(([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2+)(?:\r?\n|\r).+(?:\r?\n|\r)\1$/m,inside:{punctuation:/^[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+|[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,important:/.+/}},{pattern:/(^|(?:\r?\n|\r){2}).+(?:\r?\n|\r)([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2+(?=\r?\n|\r|$)/,lookbehind:!0,inside:{punctuation:/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,important:/.+/}}],hr:{pattern:/((?:\r?\n|\r){2})([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2{3,}(?=(?:\r?\n|\r){2})/,lookbehind:!0,alias:"punctuation"},field:{pattern:/(^\s*):[^:\r\n]+:(?= )/m,lookbehind:!0,alias:"attr-name"},"command-line-option":{pattern:/(^\s*)(?:[+-][a-z\d]|(?:--|\/)[a-z\d-]+)(?:[ =](?:[a-z][\w-]*|<[^<>]+>))?(?:, (?:[+-][a-z\d]|(?:--|\/)[a-z\d-]+)(?:[ =](?:[a-z][\w-]*|<[^<>]+>))?)*(?=(?:\r?\n|\r)? {2,}\S)/im,lookbehind:!0,alias:"symbol"},"literal-block":{pattern:/::(?:\r?\n|\r){2}([ \t]+).+(?:(?:\r?\n|\r)\1.+)*/,inside:{"literal-block-punctuation":{pattern:/^::/,alias:"punctuation"}}},"quoted-literal-block":{pattern:/::(?:\r?\n|\r){2}([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]).*(?:(?:\r?\n|\r)\1.*)*/,inside:{"literal-block-punctuation":{pattern:/^(?:::|([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\1*)/m,alias:"punctuation"}}},"list-bullet":{pattern:/(^\s*)(?:[*+\-•‣⁃]|\(?(?:\d+|[a-z]|[ivxdclm]+)\)|(?:\d+|[a-z]|[ivxdclm]+)\.)(?= )/im,lookbehind:!0,alias:"punctuation"},"doctest-block":{pattern:/(^\s*)>>> .+(?:(?:\r?\n|\r).+)*/m,lookbehind:!0,inside:{punctuation:/^>>>/}},inline:[{pattern:/(^|[\s\-:\/'"<(\[{])(?::[^:]+:`.*?`|`.*?`:[^:]+:|(\*\*?|``?|\|)(?!\s).*?[^\s]\2(?=[\s\-.,:;!?\\\/'")\]}]|$))/m,lookbehind:!0,inside:{bold:{pattern:/(^\*\*).+(?=\*\*$)/,lookbehind:!0},italic:{pattern:/(^\*).+(?=\*$)/,lookbehind:!0},"inline-literal":{pattern:/(^``).+(?=``$)/,lookbehind:!0,alias:"symbol"},role:{pattern:/^:[^:]+:|:[^:]+:$/,alias:"function",inside:{punctuation:/^:|:$/}},"interpreted-text":{pattern:/(^`).+(?=`$)/,lookbehind:!0,alias:"attr-value"},substitution:{pattern:/(^\|).+(?=\|$)/,lookbehind:!0,alias:"attr-value"},punctuation:/\*\*?|``?|\|/}}],link:[{pattern:/\[[^\]]+\]_(?=[\s\-.,:;!?\\\/'")\]}]|$)/,alias:"string",inside:{punctuation:/^\[|\]_$/}},{pattern:/(?:\b[a-z\d](?:[_.:+]?[a-z\d]+)*_?_|`[^`]+`_?_|_`[^`]+`)(?=[\s\-.,:;!?\\\/'")\]}]|$)/i,alias:"string",inside:{punctuation:/^_?`|`$|`?_?_$/}}],punctuation:{pattern:/(^\s*)(?:\|(?= |$)|(?:---?|—|\.\.|__)(?= )|\.\.$)/m,lookbehind:!0}}}e.exports=r,r.displayName="rest",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.rip={comment:/#.*/,keyword:/(?:=>|->)|\b(?:class|if|else|switch|case|return|exit|try|catch|finally|raise)\b/,builtin:/@|\bSystem\b/,boolean:/\b(?:true|false)\b/,date:/\b\d{4}-\d{2}-\d{2}\b/,time:/\b\d{2}:\d{2}:\d{2}\b/,datetime:/\b\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\b/,character:/\B`[^\s`'",.:;#\/\\()<>\[\]{}]\b/,regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},symbol:/:[^\d\s`'",.:;#\/\\()<>\[\]{}][^\s`'",.:;#\/\\()<>\[\]{}]*/,string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},number:/[+-]?(?:(?:\d+\.\d+)|(?:\d+))/,punctuation:/(?:\.{2,3})|[`,.:;=\/\\()<>\[\]{}]/,reference:/[^\d\s`'",.:;#\/\\()<>\[\]{}][^\s`'",.:;#\/\\()<>\[\]{}]*/}}e.exports=r,r.displayName="rip",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.roboconf={comment:/#.*/,keyword:{pattern:/(^|\s)(?:(?:facet|instance of)(?=[ \t]+[\w-]+[ \t]*\{)|(?:external|import)\b)/,lookbehind:!0},component:{pattern:/[\w-]+(?=[ \t]*\{)/,alias:"variable"},property:/[\w.-]+(?=[ \t]*:)/,value:{pattern:/(=[ \t]*)[^,;]+/,lookbehind:!0,alias:"attr-value"},optional:{pattern:/\(optional\)/,alias:"builtin"},wildcard:{pattern:/(\.)\*/,lookbehind:!0,alias:"operator"},punctuation:/[{},.;:=]/}}e.exports=r,r.displayName="roboconf",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.rust={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:[{pattern:/b?r(#*)"(?:\\.|(?!"\1)[^\\\r\n])*"\1/,greedy:!0},{pattern:/b?"(?:\\.|[^\\\r\n"])*"/,greedy:!0}],char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u{(?:[\da-fA-F]_*){1,6}|.)|[^\\\r\n\t'])'/,alias:"string"},"lifetime-annotation":{pattern:/'[^\s>']+/,alias:"symbol"},keyword:/\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/,attribute:{pattern:/#!?\[.+?\]/,greedy:!0,alias:"attr-name"},function:[/\w+(?=\s*\()/,/\w+!(?=\s*\(|\[)/],"macro-rules":{pattern:/\w+!/,alias:"function"},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\d(?:_?\d)*)?\.?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\b/,"closure-params":{pattern:/\|[^|]*\|(?=\s*[{-])/,inside:{punctuation:/[|:,]/,operator:/[&*]/}},punctuation:/[{}[\];(),:]|\.+|->/,operator:/[-+*\/%!^]=?|=[=>]?|@|&[&=]?|\|[|=]?|<>?=?/}}e.exports=r,r.displayName="rust",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.sas={datalines:{pattern:/^\s*(?:(?:data)?lines|cards);[\s\S]+?(?:\r?\n|\r);/im,alias:"string",inside:{keyword:{pattern:/^(\s*)(?:(?:data)?lines|cards)/i,lookbehind:!0},punctuation:/;/}},comment:[{pattern:/(^\s*|;\s*)\*.*;/m,lookbehind:!0},/\/\*[\s\S]+?\*\//],datetime:{pattern:/'[^']+'(?:dt?|t)\b/i,alias:"number"},string:{pattern:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,greedy:!0},keyword:/\b(?:data|else|format|if|input|proc\s\w+|quit|run|then)\b/i,number:/\b(?:[\da-f]+x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,operator:/\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?|\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,punctuation:/[$%@.(){}\[\];,\\]/}}e.exports=r,r.displayName="sas",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,delete e.languages.sass.selector,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,lookbehind:!0}})}(e)}e.exports=r,r.displayName="sass",r.aliases=[]},function(e,t,n){"use strict";var r=n(164);function o(e){e.register(r),e.languages.scala=e.languages.extend("java",{keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],builtin:/\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,number:/\b0x[\da-f]*\.?[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e\d+)?[dfl]?/i,symbol:/'[^\d\s\\]\w*/}),delete e.languages.scala["class-name"],delete e.languages.scala.function}e.exports=o,o.displayName="scala",o.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"|'[^('\s]*/,greedy:!0},keyword:{pattern:/(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)/,lookbehind:!0},number:{pattern:/(\s|[()])[-+]?\d*\.?\d+(?:\s*[-+]\s*\d*\.?\d+i)?\b/,lookbehind:!0},boolean:/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)/,lookbehind:!0},function:{pattern:/(\()[^\s()]*(?=\s)/,lookbehind:!0},punctuation:/[()]/}}e.exports=r,r.displayName="scheme",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.scss=e.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)*url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()]|&|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}]+[:{][^}]+))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),e.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),e.languages.scss.property={pattern:/(?:[\w-]|\$[-\w]+|#\{\$[-\w]+\})+(?=\s*:)/i,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}},e.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),e.languages.insertBefore("scss","function",{placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:/\bnull\b/,operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),e.languages.scss.atrule.inside.rest=e.languages.scss}e.exports=r,r.displayName="scss",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.smalltalk={comment:/"(?:""|[^"])+"/,string:/'(?:''|[^'])+'/,symbol:/#[\da-z]+|#(?:-|([+\/\\*~<>=@%|&?!])\1?)|#(?=\()/i,"block-arguments":{pattern:/(\[\s*):[^\[|]*\|/,lookbehind:!0,inside:{variable:/:[\da-z]+/i,punctuation:/\|/}},"temporary-variables":{pattern:/\|[^|]+\|/,inside:{variable:/[\da-z]+/i,punctuation:/\|/}},keyword:/\b(?:nil|true|false|self|super|new)\b/,character:{pattern:/\$./,alias:"string"},number:[/\d+r-?[\dA-Z]+(?:\.[\dA-Z]+)?(?:e-?\d+)?/,/\b\d+(?:\.\d+)?(?:e-?\d+)?/],operator:/[<=]=?|:=|~[~=]|\/\/?|\\\\|>[>=]?|[!^+\-*&|,@]/,punctuation:/[.;:?\[\](){}]/}}e.exports=r,r.displayName="smalltalk",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.smarty={comment:/\{\*[\s\S]*?\*\}/,delimiter:{pattern:/^\{|\}$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][-+]?\d+)?/,variable:[/\$(?!\d)\w+/,/#(?!\d)\w+#/,{pattern:/(\.|->)(?!\d)\w+/,lookbehind:!0},{pattern:/(\[)(?!\d)\w+(?=\])/,lookbehind:!0}],function:[{pattern:/(\|\s*)@?(?!\d)\w+/,lookbehind:!0},/^\/?(?!\d)\w+/,/(?!\d)\w+(?=\()/],"attr-name":{pattern:/\w+\s*=\s*(?:(?!\d)\w+)?/,inside:{variable:{pattern:/(=\s*)(?!\d)\w+/,lookbehind:!0},operator:/=/}},punctuation:[/[\[\]().,:`]|->/],operator:[/[+\-*\/%]|==?=?|[!<>]=?|&&|\|\|?/,/\bis\s+(?:not\s+)?(?:div|even|odd)(?:\s+by)?\b/,/\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\b/],keyword:/\b(?:false|off|on|no|true|yes)\b/},e.languages.insertBefore("smarty","tag",{"smarty-comment":{pattern:/\{\*[\s\S]*?\*\}/,alias:["smarty","comment"]}}),e.hooks.add("before-tokenize",function(t){var n=!1;e.languages["markup-templating"].buildPlaceholders(t,"smarty",/\{\*[\s\S]*?\*\}|\{[\s\S]+?\}/g,function(e){return"{/literal}"===e&&(n=!1),!n&&("{literal}"===e&&(n=!0),!0)})}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"smarty")})}(e)}e.exports=r,r.displayName="smarty",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t=/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=/\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0x[\dA-F]+\b/;e.languages.soy={comment:[/\/\*[\s\S]*?\*\//,{pattern:/(\s)\/\/.*/,lookbehind:!0,greedy:!0}],"command-arg":{pattern:/({+\/?\s*(?:alias|call|delcall|delpackage|deltemplate|namespace|template)\s+)\.?[\w.]+/,lookbehind:!0,alias:"string",inside:{punctuation:/\./}},parameter:{pattern:/({+\/?\s*@?param\??\s+)\.?[\w.]+/,lookbehind:!0,alias:"variable"},keyword:[{pattern:/({+\/?[^\S\r\n]*)(?:\\[nrt]|alias|call|case|css|default|delcall|delpackage|deltemplate|else(?:if)?|fallbackmsg|for(?:each)?|if(?:empty)?|lb|let|literal|msg|namespace|nil|@?param\??|rb|sp|switch|template|xid)/,lookbehind:!0},/\b(?:any|as|attributes|bool|css|float|in|int|js|html|list|map|null|number|string|uri)\b/],delimiter:{pattern:/^{+\/?|\/?}+$/,alias:"punctuation"},property:/\w+(?==)/,variable:{pattern:/\$[^\W\d]\w*(?:\??(?:\.\w+|\[[^\]]+]))*/,inside:{string:{pattern:t,greedy:!0},number:n,punctuation:/[\[\].?]/}},string:{pattern:t,greedy:!0},function:[/\w+(?=\()/,{pattern:/(\|[^\S\r\n]*)\w+/,lookbehind:!0}],boolean:/\b(?:true|false)\b/,number:n,operator:/\?:?|<=?|>=?|==?|!=|[+*\/%-]|\b(?:and|not|or)\b/,punctuation:/[{}()\[\]|.,:]/},e.hooks.add("before-tokenize",function(t){var n=!1;e.languages["markup-templating"].buildPlaceholders(t,"soy",/{{.+?}}|{.+?}|\s\/\/.*|\/\*[\s\S]*?\*\//g,function(e){return"{/literal}"===e&&(n=!1),!n&&("{literal}"===e&&(n=!0),!0)})}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"soy")})}(e)}e.exports=r,r.displayName="soy",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t={url:/url\((["']?).*?\1\)/i,string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,number:/\b\d+(?:\.\d+)?%?/,boolean:/\b(?:true|false)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.+|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],punctuation:/[{}()\[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^{|}$/,alias:"punctuation"},rest:t}},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:t}},e.languages.stylus={comment:{pattern:/(^|[^\\])(\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},"atrule-declaration":{pattern:/(^\s*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:(?:\{[^}]*\}|.+)|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t]+.+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(\r?\n|\r)(?:\{|\2[ \t]+)))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,lookbehind:!0,inside:{interpolation:t.interpolation,punctuation:/[{},]/}},func:t.func,string:t.string,interpolation:t.interpolation,punctuation:/[{}()\[\];:.]/}}(e)}e.exports=r,r.displayName="stylus",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.swift=e.languages.extend("clike",{string:{pattern:/("|')(\\(?:\((?:[^()]|\([^)]+\))+\)|\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/\\\((?:[^()]|\([^)]+\))+\)/,inside:{delimiter:{pattern:/^\\\(|\)$/,alias:"variable"}}}}},keyword:/\b(?:as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\b/,number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,constant:/\b(?:nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,atrule:/@\b(?:IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\b/,builtin:/\b(?:[A-Z]\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\b/}),e.languages.swift.string.inside.interpolation.inside.rest=e.languages.swift}e.exports=r,r.displayName="swift",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.tap={fail:/not ok[^#{\n\r]*/,pass:/ok[^#{\n\r]*/,pragma:/pragma [+-][a-z]+/,bailout:/bail out!.*/i,version:/TAP version \d+/i,plan:/\d+\.\.\d+(?: +#.*)?/,subtest:{pattern:/# Subtest(?:: .*)?/,greedy:!0},punctuation:/[{}]/,directive:/#.*/,yamlish:{pattern:/(^[^\S\r\n]*)---(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?[^\S\r\n]*\.\.\.$/m,lookbehind:!0,inside:e.languages.yaml,alias:"language-yaml"}}}e.exports=r,r.displayName="tap",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.tcl={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:{pattern:/"(?:[^"\\\r\n]|\\(?:\r\n|[\s\S]))*"/,greedy:!0},variable:[{pattern:/(\$)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/,lookbehind:!0},{pattern:/(\$){[^}]+}/,lookbehind:!0},{pattern:/(^\s*set[ \t]+)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/m,lookbehind:!0}],function:{pattern:/(^\s*proc[ \t]+)[^\s]+/m,lookbehind:!0},builtin:[{pattern:/(^\s*)(?:proc|return|class|error|eval|exit|for|foreach|if|switch|while|break|continue)\b/m,lookbehind:!0},/\b(?:elseif|else)\b/],scope:{pattern:/(^\s*)(?:global|upvar|variable)\b/m,lookbehind:!0,alias:"constant"},keyword:{pattern:/(^\s*|\[)(?:after|append|apply|array|auto_(?:execok|import|load|mkindex|qualify|reset)|automkindex_old|bgerror|binary|catch|cd|chan|clock|close|concat|dde|dict|encoding|eof|exec|expr|fblocked|fconfigure|fcopy|file(?:event|name)?|flush|gets|glob|history|http|incr|info|interp|join|lappend|lassign|lindex|linsert|list|llength|load|lrange|lrepeat|lreplace|lreverse|lsearch|lset|lsort|math(?:func|op)|memory|msgcat|namespace|open|package|parray|pid|pkg_mkIndex|platform|puts|pwd|re_syntax|read|refchan|regexp|registry|regsub|rename|Safe_Base|scan|seek|set|socket|source|split|string|subst|Tcl|tcl(?:_endOfWord|_findLibrary|startOf(?:Next|Previous)Word|wordBreak(?:After|Before)|test|vars)|tell|time|tm|trace|unknown|unload|unset|update|uplevel|vwait)\b/m,lookbehind:!0},operator:/!=?|\*\*?|==|&&?|\|\|?|<[=<]?|>[=>]?|[-+~\/%?^]|\b(?:eq|ne|in|ni)\b/,punctuation:/[{}()\[\]]/}}e.exports=r,r.displayName="tcl",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){var t="(?:\\([^|)]+\\)|\\[[^\\]]+\\]|\\{[^}]+\\})+",n={css:{pattern:/\{[^}]+\}/,inside:{rest:e.languages.css}},"class-id":{pattern:/(\()[^)]+(?=\))/,lookbehind:!0,alias:"attr-value"},lang:{pattern:/(\[)[^\]]+(?=\])/,lookbehind:!0,alias:"attr-value"},punctuation:/[\\\/]\d+|\S/};e.languages.textile=e.languages.extend("markup",{phrase:{pattern:/(^|\r|\n)\S[\s\S]*?(?=$|\r?\n\r?\n|\r\r)/,lookbehind:!0,inside:{"block-tag":{pattern:RegExp("^[a-z]\\w*(?:"+t+"|[<>=()])*\\."),inside:{modifier:{pattern:RegExp("(^[a-z]\\w*)(?:"+t+"|[<>=()])+(?=\\.)"),lookbehind:!0,inside:n},tag:/^[a-z]\w*/,punctuation:/\.$/}},list:{pattern:RegExp("^[*#]+(?:"+t+")?\\s+.+","m"),inside:{modifier:{pattern:RegExp("(^[*#]+)"+t),lookbehind:!0,inside:n},punctuation:/^[*#]+/}},table:{pattern:RegExp("^(?:(?:"+t+"|[<>=()^~])+\\.\\s*)?(?:\\|(?:(?:"+t+"|[<>=()^~_]|[\\\\/]\\d+)+\\.)?[^|]*)+\\|","m"),inside:{modifier:{pattern:RegExp("(^|\\|(?:\\r?\\n|\\r)?)(?:"+t+"|[<>=()^~_]|[\\\\/]\\d+)+(?=\\.)"),lookbehind:!0,inside:n},punctuation:/\||^\./}},inline:{pattern:RegExp("(\\*\\*|__|\\?\\?|[*_%@+\\-^~])(?:"+t+")?.+?\\1"),inside:{bold:{pattern:RegExp("(^(\\*\\*?)(?:"+t+")?).+?(?=\\2)"),lookbehind:!0},italic:{pattern:RegExp("(^(__?)(?:"+t+")?).+?(?=\\2)"),lookbehind:!0},cite:{pattern:RegExp("(^\\?\\?(?:"+t+")?).+?(?=\\?\\?)"),lookbehind:!0,alias:"string"},code:{pattern:RegExp("(^@(?:"+t+")?).+?(?=@)"),lookbehind:!0,alias:"keyword"},inserted:{pattern:RegExp("(^\\+(?:"+t+")?).+?(?=\\+)"),lookbehind:!0},deleted:{pattern:RegExp("(^-(?:"+t+")?).+?(?=-)"),lookbehind:!0},span:{pattern:RegExp("(^%(?:"+t+")?).+?(?=%)"),lookbehind:!0},modifier:{pattern:RegExp("(^\\*\\*|__|\\?\\?|[*_%@+\\-^~])"+t),lookbehind:!0,inside:n},punctuation:/[*_%?@+\-^~]+/}},"link-ref":{pattern:/^\[[^\]]+\]\S+$/m,inside:{string:{pattern:/(\[)[^\]]+(?=\])/,lookbehind:!0},url:{pattern:/(\])\S+$/,lookbehind:!0},punctuation:/[\[\]]/}},link:{pattern:RegExp('"(?:'+t+')?[^"]+":.+?(?=[^\\w/]?(?:\\s|$))'),inside:{text:{pattern:RegExp('(^"(?:'+t+')?)[^"]+(?=")'),lookbehind:!0},modifier:{pattern:RegExp('(^")'+t),lookbehind:!0,inside:n},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[":]/}},image:{pattern:RegExp("!(?:"+t+"|[<>=()])*[^!\\s()]+(?:\\([^)]+\\))?!(?::.+?(?=[^\\w/]?(?:\\s|$)))?"),inside:{source:{pattern:RegExp("(^!(?:"+t+"|[<>=()])*)[^!\\s()]+(?:\\([^)]+\\))?(?=!)"),lookbehind:!0,alias:"url"},modifier:{pattern:RegExp("(^!)(?:"+t+"|[<>=()])+"),lookbehind:!0,inside:n},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[!:]/}},footnote:{pattern:/\b\[\d+\]/,alias:"comment",inside:{punctuation:/\[|\]/}},acronym:{pattern:/\b[A-Z\d]+\([^)]+\)/,inside:{comment:{pattern:/(\()[^)]+(?=\))/,lookbehind:!0},punctuation:/[()]/}},mark:{pattern:/\b\((?:TM|R|C)\)/,alias:"comment",inside:{punctuation:/[()]/}}}}});var r={inline:e.languages.textile.phrase.inside.inline,link:e.languages.textile.phrase.inside.link,image:e.languages.textile.phrase.inside.image,footnote:e.languages.textile.phrase.inside.footnote,acronym:e.languages.textile.phrase.inside.acronym,mark:e.languages.textile.phrase.inside.mark};e.languages.textile.tag.pattern=/<\/?(?!\d)[a-z0-9]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,e.languages.textile.phrase.inside.inline.inside.bold.inside=r,e.languages.textile.phrase.inside.inline.inside.italic.inside=r,e.languages.textile.phrase.inside.inline.inside.inserted.inside=r,e.languages.textile.phrase.inside.inline.inside.deleted.inside=r,e.languages.textile.phrase.inside.inline.inside.span.inside=r,e.languages.textile.phrase.inside.table.inside.inline=r.inline,e.languages.textile.phrase.inside.table.inside.link=r.link,e.languages.textile.phrase.inside.table.inside.image=r.image,e.languages.textile.phrase.inside.table.inside.footnote=r.footnote,e.languages.textile.phrase.inside.table.inside.acronym=r.acronym,e.languages.textile.phrase.inside.table.inside.mark=r.mark}(e)}e.exports=r,r.displayName="textile",r.aliases=[]},function(e,t,n){"use strict";var r=n(165),o=n(168);function a(e){e.register(r),e.register(o);var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t)}e.exports=a,a.displayName="tsx",a.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.tt2=e.languages.extend("clike",{comment:{pattern:/#.*|\[%#[\s\S]*?%\]/,lookbehind:!0},keyword:/\b(?:BLOCK|CALL|CASE|CATCH|CLEAR|DEBUG|DEFAULT|ELSE|ELSIF|END|FILTER|FINAL|FOREACH|GET|IF|IN|INCLUDE|INSERT|LAST|MACRO|META|NEXT|PERL|PROCESS|RAWPERL|RETURN|SET|STOP|TAGS|THROW|TRY|SWITCH|UNLESS|USE|WHILE|WRAPPER)\b/,punctuation:/[[\]{},()]/}),delete e.languages.tt2.operator,delete e.languages.tt2.variable,e.languages.insertBefore("tt2","number",{operator:/=[>=]?|!=?|<=?|>=?|&&|\|\|?|\b(?:and|or|not)\b/,variable:{pattern:/[a-z]\w*(?:\s*\.\s*(?:\d+|\$?[a-z]\w*))*/i}}),delete e.languages.tt2.delimiter,e.languages.insertBefore("tt2","keyword",{delimiter:{pattern:/^(?:\[%|%%)-?|-?%]$/,alias:"punctuation"}}),e.languages.insertBefore("tt2","string",{"single-quoted-string":{pattern:/'[^\\']*(?:\\[\s\S][^\\']*)*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"[^\\"]*(?:\\[\s\S][^\\"]*)*"/,greedy:!0,alias:"string",inside:{variable:{pattern:/\$(?:[a-z]\w*(?:\.(?:\d+|\$?[a-z]\w*))*)/i}}}}),delete e.languages.tt2.string,e.hooks.add("before-tokenize",function(t){e.languages["markup-templating"].buildPlaceholders(t,"tt2",/\[%[\s\S]+?%\]/g)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"tt2")})}(e)}e.exports=r,r.displayName="tt2",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.twig={comment:/\{#[\s\S]*?#\}/,tag:{pattern:/\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}/,inside:{ld:{pattern:/^(?:\{\{-?|\{%-?\s*\w+)/,inside:{punctuation:/^(?:\{\{|\{%)-?/,keyword:/\w+/}},rd:{pattern:/-?(?:%\}|\}\})$/,inside:{punctuation:/.*/}},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,inside:{punctuation:/^['"]|['"]$/}},keyword:/\b(?:even|if|odd)\b/,boolean:/\b(?:true|false|null)\b/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][-+]?\d+)?/,operator:[{pattern:/(\s)(?:and|b-and|b-xor|b-or|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,lookbehind:!0},/[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/],property:/\b[a-zA-Z_]\w*\b/,punctuation:/[()\[\]{}:.,]/}},other:{pattern:/\S(?:[\s\S]*\S)?/,inside:e.languages.markup}}}e.exports=r,r.displayName="twig",r.aliases=[]},function(e,t,n){"use strict";var r=n(163);function o(e){e.register(r),e.languages.vbnet=e.languages.extend("basic",{keyword:/(?:\b(?:ADDHANDLER|ADDRESSOF|ALIAS|AND|ANDALSO|AS|BEEP|BLOAD|BOOLEAN|BSAVE|BYREF|BYTE|BYVAL|CALL(?: ABSOLUTE)?|CASE|CATCH|CBOOL|CBYTE|CCHAR|CDATE|CDEC|CDBL|CHAIN|CHAR|CHDIR|CINT|CLASS|CLEAR|CLNG|CLOSE|CLS|COBJ|COM|COMMON|CONST|CONTINUE|CSBYTE|CSHORT|CSNG|CSTR|CTYPE|CUINT|CULNG|CUSHORT|DATA|DATE|DECIMAL|DECLARE|DEFAULT|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DELEGATE|DIM|DIRECTCAST|DO|DOUBLE|ELSE|ELSEIF|END|ENUM|ENVIRON|ERASE|ERROR|EVENT|EXIT|FALSE|FIELD|FILES|FINALLY|FOR(?: EACH)?|FRIEND|FUNCTION|GET|GETTYPE|GETXMLNAMESPACE|GLOBAL|GOSUB|GOTO|HANDLES|IF|IMPLEMENTS|IMPORTS|IN|INHERITS|INPUT|INTEGER|INTERFACE|IOCTL|IS|ISNOT|KEY|KILL|LINE INPUT|LET|LIB|LIKE|LOCATE|LOCK|LONG|LOOP|LSET|ME|MKDIR|MOD|MODULE|MUSTINHERIT|MUSTOVERRIDE|MYBASE|MYCLASS|NAME|NAMESPACE|NARROWING|NEW|NEXT|NOT|NOTHING|NOTINHERITABLE|NOTOVERRIDABLE|OBJECT|OF|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPERATOR|OPEN|OPTION(?: BASE)?|OPTIONAL|OR|ORELSE|OUT|OVERLOADS|OVERRIDABLE|OVERRIDES|PARAMARRAY|PARTIAL|POKE|PRIVATE|PROPERTY|PROTECTED|PUBLIC|PUT|RAISEEVENT|READ|READONLY|REDIM|REM|REMOVEHANDLER|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SBYTE|SELECT(?: CASE)?|SET|SHADOWS|SHARED|SHORT|SINGLE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|STRUCTURE|SUB|SYNCLOCK|SWAP|SYSTEM|THEN|THROW|TIMER|TO|TROFF|TRON|TRUE|TRY|TRYCAST|TYPE|TYPEOF|UINTEGER|ULONG|UNLOCK|UNTIL|USHORT|USING|VIEW PRINT|WAIT|WEND|WHEN|WHILE|WIDENING|WITH|WITHEVENTS|WRITE|WRITEONLY|XOR)|\B(?:#CONST|#ELSE|#ELSEIF|#END|#IF))(?:\$|\b)/i,comment:[{pattern:/(?:!|REM\b).+/i,inside:{keyword:/^REM/i}},{pattern:/(^|[^\\:])'.*/,lookbehind:!0}]})}e.exports=o,o.displayName="vbnet",o.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.velocity=e.languages.extend("markup",{});var t={variable:{pattern:/(^|[^\\](?:\\\\)*)\$!?(?:[a-z][\w-]*(?:\([^)]*\))?(?:\.[a-z][\w-]*(?:\([^)]*\))?|\[[^\]]+])*|{[^}]+})/i,lookbehind:!0,inside:{}},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},number:/\b\d+\b/,boolean:/\b(?:true|false)\b/,operator:/[=!<>]=?|[+*\/%-]|&&|\|\||\.\.|\b(?:eq|g[et]|l[et]|n(?:e|ot))\b/,punctuation:/[(){}[\]:,.]/};t.variable.inside={string:t.string,function:{pattern:/([^\w-])[a-z][\w-]*(?=\()/,lookbehind:!0},number:t.number,boolean:t.boolean,punctuation:t.punctuation},e.languages.insertBefore("velocity","comment",{unparsed:{pattern:/(^|[^\\])#\[\[[\s\S]*?]]#/,lookbehind:!0,greedy:!0,inside:{punctuation:/^#\[\[|]]#$/}},"velocity-comment":[{pattern:/(^|[^\\])#\*[\s\S]*?\*#/,lookbehind:!0,greedy:!0,alias:"comment"},{pattern:/(^|[^\\])##.*/,lookbehind:!0,greedy:!0,alias:"comment"}],directive:{pattern:/(^|[^\\](?:\\\\)*)#@?(?:[a-z][\w-]*|{[a-z][\w-]*})(?:\s*\((?:[^()]|\([^()]*\))*\))?/i,lookbehind:!0,inside:{keyword:{pattern:/^#@?(?:[a-z][\w-]*|{[a-z][\w-]*})|\bin\b/,inside:{punctuation:/[{}]/}},rest:t}},variable:t.variable}),e.languages.velocity.tag.inside["attr-value"].inside.rest=e.languages.velocity}(e)}e.exports=r,r.displayName="velocity",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.verilog={comment:/\/\/.*|\/\*[\s\S]*?\*\//,string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},property:/\B\$\w+\b/,constant:/\B`\w+\b/,function:/\w+(?=\()/,keyword:/\b(?:alias|and|assert|assign|assume|automatic|before|begin|bind|bins|binsof|bit|break|buf|bufif0|bufif1|byte|class|case|casex|casez|cell|chandle|clocking|cmos|config|const|constraint|context|continue|cover|covergroup|coverpoint|cross|deassign|default|defparam|design|disable|dist|do|edge|else|end|endcase|endclass|endclocking|endconfig|endfunction|endgenerate|endgroup|endinterface|endmodule|endpackage|endprimitive|endprogram|endproperty|endspecify|endsequence|endtable|endtask|enum|event|expect|export|extends|extern|final|first_match|for|force|foreach|forever|fork|forkjoin|function|generate|genvar|highz0|highz1|if|iff|ifnone|ignore_bins|illegal_bins|import|incdir|include|initial|inout|input|inside|instance|int|integer|interface|intersect|join|join_any|join_none|large|liblist|library|local|localparam|logic|longint|macromodule|matches|medium|modport|module|nand|negedge|new|nmos|nor|noshowcancelled|not|notif0|notif1|null|or|output|package|packed|parameter|pmos|posedge|primitive|priority|program|property|protected|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|pure|rand|randc|randcase|randsequence|rcmos|real|realtime|ref|reg|release|repeat|return|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|sequence|shortint|shortreal|showcancelled|signed|small|solve|specify|specparam|static|string|strong0|strong1|struct|super|supply0|supply1|table|tagged|task|this|throughout|time|timeprecision|timeunit|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|type|typedef|union|unique|unsigned|use|uwire|var|vectored|virtual|void|wait|wait_order|wand|weak0|weak1|while|wildcard|wire|with|within|wor|xnor|xor)\b/,important:/\b(?:always_latch|always_comb|always_ff|always)\b ?@?/,number:/\B##?\d+|(?:\b\d+)?'[odbh] ?[\da-fzx_?]+|\b\d*[._]?\d+(?:e[-+]?\d+)?/i,operator:/[-+{}^~%*\/?=!<>&|]+/,punctuation:/[[\];(),.:]/}}e.exports=r,r.displayName="verilog",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.vhdl={comment:/--.+/,"vhdl-vectors":{pattern:/\b[oxb]"[\da-f_]+"|"[01uxzwlh-]+"/i,alias:"number"},"quoted-function":{pattern:/"\S+?"(?=\()/,alias:"function"},string:/"(?:[^\\"\r\n]|\\(?:\r\n|[\s\S]))*"/,constant:/\b(?:use|library)\b/i,keyword:/\b(?:'active|'ascending|'base|'delayed|'driving|'driving_value|'event|'high|'image|'instance_name|'last_active|'last_event|'last_value|'left|'leftof|'length|'low|'path_name|'pos|'pred|'quiet|'range|'reverse_range|'right|'rightof|'simple_name|'stable|'succ|'transaction|'val|'value|access|after|alias|all|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|new|next|null|of|on|open|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with)\b/i,boolean:/\b(?:true|false)\b/i,function:/\w+(?=\()/,number:/'[01uxzwlh-]'|\b(?:\d+#[\da-f_.]+#|\d[\d_.]*)(?:e[-+]?\d+)?/i,operator:/[<>]=?|:=|[-+*\/&=]|\b(?:abs|not|mod|rem|sll|srl|sla|sra|rol|ror|and|or|nand|xnor|xor|nor)\b/i,punctuation:/[{}[\];(),.:]/}}e.exports=r,r.displayName="vhdl",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,function:/\w+(?=\()/,keyword:/\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|sm|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/}}e.exports=r,r.displayName="vim",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages["visual-basic"]={comment:{pattern:/(?:['‘’]|REM\b).*/i,inside:{keyword:/^REM/i}},directive:{pattern:/#(?:Const|Else|ElseIf|End|ExternalChecksum|ExternalSource|If|Region)(?:[^\S\r\n]_[^\S\r\n]*(?:\r\n?|\n)|.)+/i,alias:"comment",greedy:!0},string:{pattern:/["“”](?:["“”]{2}|[^"“”])*["“”]C?/i,greedy:!0},date:{pattern:/#[^\S\r\n]*(?:\d+([\/-])\d+\1\d+(?:[^\S\r\n]+(?:\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?))?|(?:\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?))[^\S\r\n]*#/i,alias:"builtin"},number:/(?:(?:\b\d+(?:\.\d+)?|\.\d+)(?:E[+-]?\d+)?|&[HO][\dA-F]+)(?:U?[ILS]|[FRD])?/i,boolean:/\b(?:True|False|Nothing)\b/i,keyword:/\b(?:AddHandler|AddressOf|Alias|And(?:Also)?|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|C(?:Bool|Byte|Char|Date|Dbl|Dec|Int|Lng|Obj|SByte|Short|Sng|Str|Type|UInt|ULng|UShort)|Char|Class|Const|Continue|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else(?:If)?|End(?:If)?|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get(?:Type|XMLNamespace)?|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|Must(?:Inherit|Override)|My(?:Base|Class)|Namespace|Narrowing|New|Next|Not(?:Inheritable|Overridable)?|Object|Of|On|Operator|Option(?:al)?|Or(?:Else)?|Out|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TryCast|TypeOf|U(?:Integer|Long|Short)|Using|Variant|Wend|When|While|Widening|With(?:Events)?|WriteOnly|Xor)\b/i,operator:[/[+\-*\/\\^<=>&#@$%!]/,{pattern:/([^\S\r\n])_(?=[^\S\r\n]*[\r\n])/,lookbehind:!0}],punctuation:/[{}().,:?]/},e.languages.vb=e.languages["visual-basic"]}e.exports=r,r.displayName="visualBasic",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-.\/:<=>?@\\^_`|~]+/i,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/}}e.exports=r,r.displayName="wasm",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.wiki=e.languages.extend("markup",{"block-comment":{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0,alias:"comment"},heading:{pattern:/^(=+).+?\1/m,inside:{punctuation:/^=+|=+$/,important:/.+/}},emphasis:{pattern:/('{2,5}).+?\1/,inside:{"bold italic":{pattern:/(''''').+?(?=\1)/,lookbehind:!0},bold:{pattern:/(''')[^'](?:.*?[^'])?(?=\1)/,lookbehind:!0},italic:{pattern:/('')[^'](?:.*?[^'])?(?=\1)/,lookbehind:!0},punctuation:/^''+|''+$/}},hr:{pattern:/^-{4,}/m,alias:"punctuation"},url:[/ISBN +(?:97[89][ -]?)?(?:\d[ -]?){9}[\dx]\b|(?:RFC|PMID) +\d+/i,/\[\[.+?\]\]|\[.+?\]/],variable:[/__[A-Z]+__/,/\{{3}.+?\}{3}/,/\{\{.+?\}\}/],symbol:[/^#redirect/im,/~{3,5}/],"table-tag":{pattern:/((?:^|[|!])[|!])[^|\r\n]+\|(?!\|)/m,lookbehind:!0,inside:{"table-bar":{pattern:/\|$/,alias:"punctuation"},rest:e.languages.markup.tag.inside}},punctuation:/^(?:\{\||\|\}|\|-|[*#:;!|])|\|\||!!/m}),e.languages.insertBefore("wiki","tag",{nowiki:{pattern:/<(nowiki|pre|source)\b[\s\S]*?>[\s\S]*?<\/\1>/i,inside:{tag:{pattern:/<(?:nowiki|pre|source)\b[\s\S]*?>|<\/(?:nowiki|pre|source)>/i,inside:e.languages.markup.tag.inside}}}})}e.exports=r,r.displayName="wiki",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.xeora=e.languages.extend("markup",{constant:{pattern:/\$(?:DomainContents|PageRenderDuration)\$/,inside:{punctuation:{pattern:/\$/}}},variable:{pattern:/\$@?(?:#+|[-+*~=^])?[\w.]+\$/,inside:{punctuation:{pattern:/[$.]/},operator:{pattern:/#+|[-+*~=^@]/}}},"function-inline":{pattern:/\$F:[-\w.]+\?[-\w.]+(?:,(?:\|?(?:[-#.^+*~]*(?:[\w+][^$]*)|=(?:[\S+][^$]*)|@[-#]*(?:\w+.)[\w+.]+)?)*)?\$/,inside:{variable:{pattern:/(?:[,|])@?(?:#+|[-+*~=^])?[\w.]+/,inside:{punctuation:{pattern:/[,.|]/},operator:{pattern:/#+|[-+*~=^@]/}}},punctuation:{pattern:/\$\w:|[$:?.,|]/}},alias:"function"},"function-block":{pattern:/\$XF:{[-\w.]+\?[-\w.]+(?:,(?:\|?(?:[-#.^+*~]*(?:[\w+][^$]*)|=(?:[\S+][^$]*)|@[-#]*(?:\w+.)[\w+.]+)?)*)?}:XF\$/,inside:{punctuation:{pattern:/[$:{}?.,|]/}},alias:"function"},"directive-inline":{pattern:/\$\w(?:#\d+\+?)?(?:\[[-\w.]+])?:[-\/\w.]+\$/,inside:{punctuation:{pattern:/\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,inside:{tag:{pattern:/#\d/}}}},alias:"function"},"directive-block-open":{pattern:/\$\w+:{|\$\w(?:#\d+\+?)?(?:\[[-\w.]+])?:[-\w.]+:{(![A-Z]+)?/,inside:{punctuation:{pattern:/\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,inside:{tag:{pattern:/#\d/}}},attribute:{pattern:/![A-Z]+$/,inside:{punctuation:{pattern:/!/}},alias:"keyword"}},alias:"function"},"directive-block-separator":{pattern:/}:[-\w.]+:{/,inside:{punctuation:{pattern:/[:{}]/}},alias:"function"},"directive-block-close":{pattern:/}:[-\w.]+\$/,inside:{punctuation:{pattern:/[:{}$]/}},alias:"function"}}),e.languages.insertBefore("inside","punctuation",{variable:e.languages.xeora["function-inline"].inside.variable},e.languages.xeora["function-block"]),e.languages.xeoracube=e.languages.xeora}(e)}e.exports=r,r.displayName="xeora",r.aliases=["xeoracube"]},function(e,t,n){"use strict";function r(e){e.languages.xojo={comment:{pattern:/(?:'|\/\/|Rem\b).+/i,inside:{keyword:/^Rem/i}},string:{pattern:/"(?:""|[^"])*"/,greedy:!0},number:[/(?:\b\d+\.?\d*|\B\.\d+)(?:E[+-]?\d+)?/i,/&[bchou][a-z\d]+/i],symbol:/#(?:If|Else|ElseIf|Endif|Pragma)\b/i,keyword:/\b(?:AddHandler|App|Array|As(?:signs)?|By(?:Ref|Val)|Break|Call|Case|Catch|Const|Continue|CurrentMethodName|Declare|Dim|Do(?:wnTo)?|Each|Else(?:If)?|End|Exit|Extends|False|Finally|For|Global|If|In|Lib|Loop|Me|Next|Nil|Optional|ParamArray|Raise(?:Event)?|ReDim|Rem|RemoveHandler|Return|Select|Self|Soft|Static|Step|Super|Then|To|True|Try|Ubound|Until|Using|Wend|While)\b/i,operator:/<[=>]?|>=?|[+\-*\/\\^=]|\b(?:AddressOf|And|Ctype|IsA?|Mod|New|Not|Or|Xor|WeakAddressOf)\b/i,punctuation:/[.,;:()]/}}e.exports=r,r.displayName="xojo",r.aliases=[]},function(e,t,n){"use strict";function r(e){!function(e){e.languages.xquery=e.languages.extend("markup",{"xquery-comment":{pattern:/\(:[\s\S]*?:\)/,greedy:!0,alias:"comment"},string:{pattern:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,greedy:!0},extension:{pattern:/\(#.+?#\)/,alias:"symbol"},variable:/\$[\w-:]+/,axis:{pattern:/(^|[^-])(?:ancestor(?:-or-self)?|attribute|child|descendant(?:-or-self)?|following(?:-sibling)?|parent|preceding(?:-sibling)?|self)(?=::)/,lookbehind:!0,alias:"operator"},"keyword-operator":{pattern:/(^|[^:-])\b(?:and|castable as|div|eq|except|ge|gt|idiv|instance of|intersect|is|le|lt|mod|ne|or|union)\b(?=$|[^:-])/,lookbehind:!0,alias:"operator"},keyword:{pattern:/(^|[^:-])\b(?:as|ascending|at|base-uri|boundary-space|case|cast as|collation|construction|copy-namespaces|declare|default|descending|else|empty (?:greatest|least)|encoding|every|external|for|function|if|import|in|inherit|lax|let|map|module|namespace|no-inherit|no-preserve|option|order(?: by|ed|ing)?|preserve|return|satisfies|schema|some|stable|strict|strip|then|to|treat as|typeswitch|unordered|validate|variable|version|where|xquery)\b(?=$|[^:-])/,lookbehind:!0},function:/[\w-]+(?::[\w-]+)*(?=\s*\()/,"xquery-element":{pattern:/(element\s+)[\w-]+(?::[\w-]+)*/,lookbehind:!0,alias:"tag"},"xquery-attribute":{pattern:/(attribute\s+)[\w-]+(?::[\w-]+)*/,lookbehind:!0,alias:"attr-name"},builtin:{pattern:/(^|[^:-])\b(?:attribute|comment|document|element|processing-instruction|text|xs:(?:anyAtomicType|anyType|anyURI|base64Binary|boolean|byte|date|dateTime|dayTimeDuration|decimal|double|duration|ENTITIES|ENTITY|float|gDay|gMonth|gMonthDay|gYear|gYearMonth|hexBinary|ID|IDREFS?|int|integer|language|long|Name|NCName|negativeInteger|NMTOKENS?|nonNegativeInteger|nonPositiveInteger|normalizedString|NOTATION|positiveInteger|QName|short|string|time|token|unsigned(?:Byte|Int|Long|Short)|untyped(?:Atomic)?|yearMonthDuration))\b(?=$|[^:-])/,lookbehind:!0},number:/\b\d+(?:\.\d+)?(?:E[+-]?\d+)?/,operator:[/[+*=?|@]|\.\.?|:=|!=|<[=<]?|>[=>]?/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}],punctuation:/[[\](){},;:\/]/}),e.languages.xquery.tag.pattern=/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|{(?!{)(?:{(?:{[^}]*}|[^}])*}|[^}])+}|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,e.languages.xquery.tag.inside["attr-value"].pattern=/=(?:("|')(?:\\[\s\S]|{(?!{)(?:{(?:{[^}]*}|[^}])*}|[^}])+}|(?!\1)[^\\])*\1|[^\s'">=]+)/i,e.languages.xquery.tag.inside["attr-value"].inside.punctuation=/^="|"$/,e.languages.xquery.tag.inside["attr-value"].inside.expression={pattern:/{(?!{)(?:{(?:{[^}]*}|[^}])*}|[^}])+}/,inside:{rest:e.languages.xquery},alias:"language-xquery"};var t=function(e){return"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(t).join("")},n=function(r){for(var o=[],a=0;a0&&o[o.length-1].tagName===t(i.content[0].content[1])&&o.pop():"/>"===i.content[i.content.length-1].content||o.push({tagName:t(i.content[0].content[1]),openedBraces:0}):!(o.length>0&&"punctuation"===i.type&&"{"===i.content)||r[a+1]&&"punctuation"===r[a+1].type&&"{"===r[a+1].content||r[a-1]&&"plain-text"===r[a-1].type&&"{"===r[a-1].content?o.length>0&&o[o.length-1].openedBraces>0&&"punctuation"===i.type&&"}"===i.content?o[o.length-1].openedBraces--:"comment"!==i.type&&(l=!0):o[o.length-1].openedBraces++),(l||"string"==typeof i)&&o.length>0&&0===o[o.length-1].openedBraces){var s=t(i);a0&&("string"==typeof r[a-1]||"plain-text"===r[a-1].type)&&(s=t(r[a-1])+s,r.splice(a-1,1),a--),/^\s+$/.test(s)?r[a]=s:r[a]=new e.Token("plain-text",s,null,s)}i.content&&"string"!=typeof i.content&&n(i.content)}};e.hooks.add("after-tokenize",function(e){"xquery"===e.language&&n(e.tokens)})}(e)}e.exports=r,r.displayName="xquery",r.aliases=[]},function(e,t,n){"use strict";function r(e){e.languages.yaml={scalar:{pattern:/([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,alias:"number"},boolean:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},null:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./}}e.exports=r,r.displayName="yaml",r.aliases=[]},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"black",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"black",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",position:"relative",margin:".5em 0",overflow:"visible",padding:"0",backgroundColor:"#fdfdfd",WebkitBoxSizing:"border-box",MozBoxSizing:"border-box",boxSizing:"border-box",marginBottom:"1em"},'pre[class*="language-"]>code':{position:"relative",borderLeft:"10px solid #358ccb",boxShadow:"-1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf",backgroundColor:"#fdfdfd",backgroundImage:"linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%)",backgroundSize:"3em 3em",backgroundOrigin:"content-box",backgroundAttachment:"local"},'code[class*="language"]':{maxHeight:"inherit",height:"inherit",padding:"0 1em",display:"block",overflow:"auto"},':not(pre) > code[class*="language-"]':{backgroundColor:"#fdfdfd",WebkitBoxSizing:"border-box",MozBoxSizing:"border-box",boxSizing:"border-box",marginBottom:"1em",position:"relative",padding:".2em",borderRadius:"0.3em",color:"#c92c2c",border:"1px solid rgba(0, 0, 0, 0.1)",display:"inline",whiteSpace:"normal"},'pre[class*="language-"]:before':{content:"''",zIndex:"-2",display:"block",position:"absolute",bottom:"0.75em",left:"0.18em",width:"40%",height:"20%",maxHeight:"13em",boxShadow:"0px 13px 8px #979797",WebkitTransform:"rotate(-2deg)",MozTransform:"rotate(-2deg)",msTransform:"rotate(-2deg)",OTransform:"rotate(-2deg)",transform:"rotate(-2deg)"},'pre[class*="language-"]:after':{content:"''",zIndex:"-2",display:"block",position:"absolute",bottom:"0.75em",left:"auto",width:"40%",height:"20%",maxHeight:"13em",boxShadow:"0px 13px 8px #979797",WebkitTransform:"rotate(2deg)",MozTransform:"rotate(2deg)",msTransform:"rotate(2deg)",OTransform:"rotate(2deg)",transform:"rotate(2deg)",right:"0.75em"},':not(pre) > code[class*="language-"]:after':{right:"0.75em",left:"auto",WebkitTransform:"rotate(2deg)",MozTransform:"rotate(2deg)",msTransform:"rotate(2deg)",OTransform:"rotate(2deg)",transform:"rotate(2deg)"},comment:{color:"#7D8B99"},"block-comment":{color:"#7D8B99"},prolog:{color:"#7D8B99"},doctype:{color:"#7D8B99"},cdata:{color:"#7D8B99"},punctuation:{color:"#5F6364"},property:{color:"#c92c2c"},tag:{color:"#c92c2c"},boolean:{color:"#c92c2c"},number:{color:"#c92c2c"},"function-name":{color:"#c92c2c"},constant:{color:"#c92c2c"},symbol:{color:"#c92c2c"},deleted:{color:"#c92c2c"},selector:{color:"#2f9c0a"},"attr-name":{color:"#2f9c0a"},string:{color:"#2f9c0a"},char:{color:"#2f9c0a"},function:{color:"#2f9c0a"},builtin:{color:"#2f9c0a"},inserted:{color:"#2f9c0a"},operator:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},entity:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)",cursor:"help"},url:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},variable:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},atrule:{color:"#1990b8"},"attr-value":{color:"#1990b8"},keyword:{color:"#1990b8"},"class-name":{color:"#1990b8"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"normal"},".language-css .token.string":{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},".style .token.string":{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},".namespace":{Opacity:".7"},"tab:not(:empty):before":{color:"#e0d7d1"},"cr:before":{color:"#e0d7d1"},"lf:before":{color:"#e0d7d1"},'pre[class*="language-"].line-numbers':{paddingLeft:"0"},'pre[class*="language-"].line-numbers code':{paddingLeft:"3.8em"},'pre[class*="language-"].line-numbers .line-numbers-rows':{left:"0"},'pre[class*="language-"][data-line]':{paddingTop:"0",paddingBottom:"0",paddingLeft:"0"},"pre[data-line] code":{position:"relative",paddingLeft:"4em"},"pre .line-highlight":{marginTop:"0"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"white",background:"none",textShadow:"0 -.1em .2em black",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"white",background:"hsl(30, 20%, 25%)",textShadow:"0 -.1em .2em black",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",border:".3em solid hsl(30, 20%, 40%)",borderRadius:".5em",boxShadow:"1px 1px .5em black inset"},':not(pre) > code[class*="language-"]':{background:"hsl(30, 20%, 25%)",padding:".15em .2em .05em",borderRadius:".3em",border:".13em solid hsl(30, 20%, 40%)",boxShadow:"1px 1px .3em -.1em black inset",whiteSpace:"normal"},comment:{color:"hsl(30, 20%, 50%)"},prolog:{color:"hsl(30, 20%, 50%)"},doctype:{color:"hsl(30, 20%, 50%)"},cdata:{color:"hsl(30, 20%, 50%)"},punctuation:{Opacity:".7"},".namespace":{Opacity:".7"},property:{color:"hsl(350, 40%, 70%)"},tag:{color:"hsl(350, 40%, 70%)"},boolean:{color:"hsl(350, 40%, 70%)"},number:{color:"hsl(350, 40%, 70%)"},constant:{color:"hsl(350, 40%, 70%)"},symbol:{color:"hsl(350, 40%, 70%)"},selector:{color:"hsl(75, 70%, 60%)"},"attr-name":{color:"hsl(75, 70%, 60%)"},string:{color:"hsl(75, 70%, 60%)"},char:{color:"hsl(75, 70%, 60%)"},builtin:{color:"hsl(75, 70%, 60%)"},inserted:{color:"hsl(75, 70%, 60%)"},operator:{color:"hsl(40, 90%, 60%)"},entity:{color:"hsl(40, 90%, 60%)",cursor:"help"},url:{color:"hsl(40, 90%, 60%)"},".language-css .token.string":{color:"hsl(40, 90%, 60%)"},".style .token.string":{color:"hsl(40, 90%, 60%)"},variable:{color:"hsl(40, 90%, 60%)"},atrule:{color:"hsl(350, 40%, 70%)"},"attr-value":{color:"hsl(350, 40%, 70%)"},keyword:{color:"hsl(350, 40%, 70%)"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},deleted:{color:"red"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"black",color:"white",boxShadow:"-.3em 0 0 .3em black, .3em 0 0 .3em black"},'pre[class*="language-"]':{fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:".4em .8em",margin:".5em 0",overflow:"auto",background:'url(\'data:image/svg+xml;charset=utf-8,%0D%0A%0D%0A%0D%0A<%2Fsvg>\')',backgroundSize:"1em 1em"},':not(pre) > code[class*="language-"]':{padding:".2em",borderRadius:".3em",boxShadow:"none",whiteSpace:"normal"},comment:{color:"#aaa"},prolog:{color:"#aaa"},doctype:{color:"#aaa"},cdata:{color:"#aaa"},punctuation:{color:"#999"},".namespace":{Opacity:".7"},property:{color:"#0cf"},tag:{color:"#0cf"},boolean:{color:"#0cf"},number:{color:"#0cf"},constant:{color:"#0cf"},symbol:{color:"#0cf"},selector:{color:"yellow"},"attr-name":{color:"yellow"},string:{color:"yellow"},char:{color:"yellow"},builtin:{color:"yellow"},operator:{color:"yellowgreen"},entity:{color:"yellowgreen",cursor:"help"},url:{color:"yellowgreen"},".language-css .token.string":{color:"yellowgreen"},".toke.variable":{color:"yellowgreen"},inserted:{color:"yellowgreen"},atrule:{color:"deeppink"},"attr-value":{color:"deeppink"},keyword:{color:"deeppink"},regex:{color:"orange"},important:{color:"orange",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},deleted:{color:"red"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#f8f8f2",background:"none",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#f8f8f2",background:"#272822",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em"},':not(pre) > code[class*="language-"]':{background:"#272822",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"slategray"},prolog:{color:"slategray"},doctype:{color:"slategray"},cdata:{color:"slategray"},punctuation:{color:"#f8f8f2"},".namespace":{Opacity:".7"},property:{color:"#f92672"},tag:{color:"#f92672"},constant:{color:"#f92672"},symbol:{color:"#f92672"},deleted:{color:"#f92672"},boolean:{color:"#ae81ff"},number:{color:"#ae81ff"},selector:{color:"#a6e22e"},"attr-name":{color:"#a6e22e"},string:{color:"#a6e22e"},char:{color:"#a6e22e"},builtin:{color:"#a6e22e"},inserted:{color:"#a6e22e"},operator:{color:"#f8f8f2"},entity:{color:"#f8f8f2",cursor:"help"},url:{color:"#f8f8f2"},".language-css .token.string":{color:"#f8f8f2"},".style .token.string":{color:"#f8f8f2"},variable:{color:"#f8f8f2"},atrule:{color:"#e6db74"},"attr-value":{color:"#e6db74"},function:{color:"#e6db74"},keyword:{color:"#66d9ef"},regex:{color:"#fd971f"},important:{color:"#fd971f",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#657b83",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#657b83",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em",backgroundColor:"#fdf6e3"},'pre[class*="language-"]::-moz-selection':{background:"#073642"},'pre[class*="language-"] ::-moz-selection':{background:"#073642"},'code[class*="language-"]::-moz-selection':{background:"#073642"},'code[class*="language-"] ::-moz-selection':{background:"#073642"},'pre[class*="language-"]::selection':{background:"#073642"},'pre[class*="language-"] ::selection':{background:"#073642"},'code[class*="language-"]::selection':{background:"#073642"},'code[class*="language-"] ::selection':{background:"#073642"},':not(pre) > code[class*="language-"]':{backgroundColor:"#fdf6e3",padding:".1em",borderRadius:".3em"},comment:{color:"#93a1a1"},prolog:{color:"#93a1a1"},doctype:{color:"#93a1a1"},cdata:{color:"#93a1a1"},punctuation:{color:"#586e75"},".namespace":{Opacity:".7"},property:{color:"#268bd2"},tag:{color:"#268bd2"},boolean:{color:"#268bd2"},number:{color:"#268bd2"},constant:{color:"#268bd2"},symbol:{color:"#268bd2"},deleted:{color:"#268bd2"},selector:{color:"#2aa198"},"attr-name":{color:"#2aa198"},string:{color:"#2aa198"},char:{color:"#2aa198"},builtin:{color:"#2aa198"},url:{color:"#2aa198"},inserted:{color:"#2aa198"},entity:{color:"#657b83",background:"#eee8d5",cursor:"help"},atrule:{color:"#859900"},"attr-value":{color:"#859900"},keyword:{color:"#859900"},function:{color:"#b58900"},regex:{color:"#cb4b16"},important:{color:"#cb4b16",fontWeight:"bold"},variable:{color:"#cb4b16"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#ccc",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#ccc",background:"#2d2d2d",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto"},':not(pre) > code[class*="language-"]':{background:"#2d2d2d",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"#999"},"block-comment":{color:"#999"},prolog:{color:"#999"},doctype:{color:"#999"},cdata:{color:"#999"},punctuation:{color:"#ccc"},tag:{color:"#e2777a"},"attr-name":{color:"#e2777a"},namespace:{color:"#e2777a"},deleted:{color:"#e2777a"},"function-name":{color:"#6196cc"},boolean:{color:"#f08d49"},number:{color:"#f08d49"},function:{color:"#f08d49"},property:{color:"#f8c555"},"class-name":{color:"#f8c555"},constant:{color:"#f8c555"},symbol:{color:"#f8c555"},selector:{color:"#cc99cd"},important:{color:"#cc99cd",fontWeight:"bold"},atrule:{color:"#cc99cd"},keyword:{color:"#cc99cd"},builtin:{color:"#cc99cd"},string:{color:"#7ec699"},char:{color:"#7ec699"},"attr-value":{color:"#7ec699"},regex:{color:"#7ec699"},variable:{color:"#7ec699"},operator:{color:"#67cdcc"},entity:{color:"#67cdcc",cursor:"help"},url:{color:"#67cdcc"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},inserted:{color:"green"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"white",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",textShadow:"0 -.1em .2em black",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"white",background:"hsl(0, 0%, 8%)",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",textShadow:"0 -.1em .2em black",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",borderRadius:".5em",border:".3em solid hsl(0, 0%, 33%)",boxShadow:"1px 1px .5em black inset",margin:".5em 0",overflow:"auto",padding:"1em"},':not(pre) > code[class*="language-"]':{background:"hsl(0, 0%, 8%)",borderRadius:".3em",border:".13em solid hsl(0, 0%, 33%)",boxShadow:"1px 1px .3em -.1em black inset",padding:".15em .2em .05em",whiteSpace:"normal"},'pre[class*="language-"]::-moz-selection':{background:"hsla(0, 0%, 93%, 0.15)",textShadow:"none"},'pre[class*="language-"]::selection':{background:"hsla(0, 0%, 93%, 0.15)",textShadow:"none"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"]::selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"] ::selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},comment:{color:"hsl(0, 0%, 47%)"},prolog:{color:"hsl(0, 0%, 47%)"},doctype:{color:"hsl(0, 0%, 47%)"},cdata:{color:"hsl(0, 0%, 47%)"},punctuation:{Opacity:".7"},".namespace":{Opacity:".7"},tag:{color:"hsl(14, 58%, 55%)"},boolean:{color:"hsl(14, 58%, 55%)"},number:{color:"hsl(14, 58%, 55%)"},deleted:{color:"hsl(14, 58%, 55%)"},keyword:{color:"hsl(53, 89%, 79%)"},property:{color:"hsl(53, 89%, 79%)"},selector:{color:"hsl(53, 89%, 79%)"},constant:{color:"hsl(53, 89%, 79%)"},symbol:{color:"hsl(53, 89%, 79%)"},builtin:{color:"hsl(53, 89%, 79%)"},"attr-name":{color:"hsl(76, 21%, 52%)"},"attr-value":{color:"hsl(76, 21%, 52%)"},string:{color:"hsl(76, 21%, 52%)"},char:{color:"hsl(76, 21%, 52%)"},operator:{color:"hsl(76, 21%, 52%)"},entity:{color:"hsl(76, 21%, 52%)",cursor:"help"},url:{color:"hsl(76, 21%, 52%)"},".language-css .token.string":{color:"hsl(76, 21%, 52%)"},".style .token.string":{color:"hsl(76, 21%, 52%)"},variable:{color:"hsl(76, 21%, 52%)"},inserted:{color:"hsl(76, 21%, 52%)"},atrule:{color:"hsl(218, 22%, 55%)"},regex:{color:"hsl(42, 75%, 65%)"},important:{color:"hsl(42, 75%, 65%)",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},"pre[data-line]":{padding:"1em 0 1em 3em",position:"relative"},".language-markup .token.tag":{color:"hsl(33, 33%, 52%)"},".language-markup .token.attr-name":{color:"hsl(33, 33%, 52%)"},".language-markup .token.punctuation":{color:"hsl(33, 33%, 52%)"},"":{position:"relative",zIndex:"1"},".line-highlight":{background:"linear-gradient(to right, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0))",borderBottom:"1px dashed hsl(0, 0%, 33%)",borderTop:"1px dashed hsl(0, 0%, 33%)",left:"0",lineHeight:"inherit",marginTop:"0.75em",padding:"inherit 0",pointerEvents:"none",position:"absolute",right:"0",whiteSpace:"pre",zIndex:"0"},".line-highlight:before":{backgroundColor:"hsl(215, 15%, 59%)",borderRadius:"999px",boxShadow:"0 1px white",color:"hsl(24, 20%, 95%)",content:"attr(data-start)",font:"bold 65%/1.5 sans-serif",left:".6em",minWidth:"1em",padding:"0 .5em",position:"absolute",textAlign:"center",textShadow:"none",top:".4em",verticalAlign:".3em"},".line-highlight[data-end]:after":{backgroundColor:"hsl(215, 15%, 59%)",borderRadius:"999px",boxShadow:"0 1px white",color:"hsl(24, 20%, 95%)",content:"attr(data-end)",font:"bold 65%/1.5 sans-serif",left:".6em",minWidth:"1em",padding:"0 .5em",position:"absolute",textAlign:"center",textShadow:"none",top:"auto",verticalAlign:".3em",bottom:".4em"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"black",background:"none",textShadow:"0 1px white",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"black",background:"#f5f2f0",textShadow:"0 1px white",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"]::selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#b3d4fc"},':not(pre) > code[class*="language-"]':{background:"#f5f2f0",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"slategray"},prolog:{color:"slategray"},doctype:{color:"slategray"},cdata:{color:"slategray"},punctuation:{color:"#999"},".namespace":{Opacity:".7"},property:{color:"#905"},tag:{color:"#905"},boolean:{color:"#905"},number:{color:"#905"},constant:{color:"#905"},symbol:{color:"#905"},deleted:{color:"#905"},selector:{color:"#690"},"attr-name":{color:"#690"},string:{color:"#690"},char:{color:"#690"},builtin:{color:"#690"},inserted:{color:"#690"},operator:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},entity:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)",cursor:"help"},url:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".language-css .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".style .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},atrule:{color:"#07a"},"attr-value":{color:"#07a"},keyword:{color:"#07a"},function:{color:"#DD4A68"},"class-name":{color:"#DD4A68"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"bold"},variable:{color:"#e90"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#c5c8c6",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#c5c8c6",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em",background:"#1d1f21"},':not(pre) > code[class*="language-"]':{background:"#1d1f21",padding:".1em",borderRadius:".3em"},comment:{color:"#7C7C7C"},prolog:{color:"#7C7C7C"},doctype:{color:"#7C7C7C"},cdata:{color:"#7C7C7C"},punctuation:{color:"#c5c8c6"},".namespace":{Opacity:".7"},property:{color:"#96CBFE"},keyword:{color:"#96CBFE"},tag:{color:"#96CBFE"},"class-name":{color:"#FFFFB6",textDecoration:"underline"},boolean:{color:"#99CC99"},constant:{color:"#99CC99"},symbol:{color:"#f92672"},deleted:{color:"#f92672"},number:{color:"#FF73FD"},selector:{color:"#A8FF60"},"attr-name":{color:"#A8FF60"},string:{color:"#A8FF60"},char:{color:"#A8FF60"},builtin:{color:"#A8FF60"},inserted:{color:"#A8FF60"},variable:{color:"#C6C5FE"},operator:{color:"#EDEDED"},entity:{color:"#FFFFB6",cursor:"help"},url:{color:"#96CBFE"},".language-css .token.string":{color:"#87C38A"},".style .token.string":{color:"#87C38A"},atrule:{color:"#F9EE98"},"attr-value":{color:"#F9EE98"},function:{color:"#DAD085"},regex:{color:"#E9C062"},important:{color:"#fd971f",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#f5f7ff",color:"#5e6687"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#f5f7ff",color:"#5e6687",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#dfe2f1"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"]::selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#dfe2f1"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#898ea4"},prolog:{color:"#898ea4"},doctype:{color:"#898ea4"},cdata:{color:"#898ea4"},punctuation:{color:"#5e6687"},namespace:{Opacity:".7"},operator:{color:"#c76b29"},boolean:{color:"#c76b29"},number:{color:"#c76b29"},property:{color:"#c08b30"},tag:{color:"#3d8fd1"},string:{color:"#22a2c9"},selector:{color:"#6679cc"},"attr-name":{color:"#c76b29"},entity:{color:"#22a2c9",cursor:"help"},url:{color:"#22a2c9"},".language-css .token.string":{color:"#22a2c9"},".style .token.string":{color:"#22a2c9"},"attr-value":{color:"#ac9739"},keyword:{color:"#ac9739"},control:{color:"#ac9739"},directive:{color:"#ac9739"},unit:{color:"#ac9739"},statement:{color:"#22a2c9"},regex:{color:"#22a2c9"},atrule:{color:"#22a2c9"},placeholder:{color:"#3d8fd1"},variable:{color:"#3d8fd1"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #202746",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#c94922"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:"0.4em solid #c94922",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#dfe2f1"},".line-numbers-rows > span:before":{color:"#979db4"},".line-highlight":{background:"linear-gradient(to right, rgba(107, 115, 148, 0.2) 70%, rgba(107, 115, 148, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#fff",textShadow:"0 1px 1px #000",fontFamily:'Menlo, Monaco, "Courier New", monospace',direction:"ltr",textAlign:"left",wordSpacing:"normal",whiteSpace:"pre",wordWrap:"normal",lineHeight:"1.4",background:"none",border:"0",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#fff",textShadow:"0 1px 1px #000",fontFamily:'Menlo, Monaco, "Courier New", monospace',direction:"ltr",textAlign:"left",wordSpacing:"normal",whiteSpace:"pre",wordWrap:"normal",lineHeight:"1.4",background:"#222",border:"0",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"15px",margin:"1em 0",overflow:"auto",MozBorderRadius:"8px",WebkitBorderRadius:"8px",borderRadius:"8px"},'pre[class*="language-"] code':{float:"left",padding:"0 15px 0 0"},':not(pre) > code[class*="language-"]':{background:"#222",padding:"5px 10px",lineHeight:"1",MozBorderRadius:"3px",WebkitBorderRadius:"3px",borderRadius:"3px"},comment:{color:"#797979"},prolog:{color:"#797979"},doctype:{color:"#797979"},cdata:{color:"#797979"},selector:{color:"#fff"},operator:{color:"#fff"},punctuation:{color:"#fff"},namespace:{Opacity:".7"},tag:{color:"#ffd893"},boolean:{color:"#ffd893"},atrule:{color:"#B0C975"},"attr-value":{color:"#B0C975"},hex:{color:"#B0C975"},string:{color:"#B0C975"},property:{color:"#c27628"},entity:{color:"#c27628",cursor:"help"},url:{color:"#c27628"},"attr-name":{color:"#c27628"},keyword:{color:"#c27628"},regex:{color:"#9B71C6"},function:{color:"#e5a638"},constant:{color:"#e5a638"},variable:{color:"#fdfba8"},number:{color:"#8799B0"},important:{color:"#E45734"},deliminator:{color:"#E45734"},"pre[data-line]":{position:"relative",padding:"1em 0 1em 3em"},".line-highlight":{position:"absolute",left:"0",right:"0",marginTop:"1em",background:"rgba(255,255,255,.2)",pointerEvents:"none",lineHeight:"inherit",whiteSpace:"pre"},".line-highlight:before":{content:"attr(data-start)",position:"absolute",top:".3em",left:".6em",minWidth:"1em",padding:"0 .5em",backgroundColor:"rgba(255,255,255,.3)",color:"#fff",font:"bold 65%/1.5 sans-serif",textAlign:"center",MozBorderRadius:"8px",WebkitBorderRadius:"8px",borderRadius:"8px",textShadow:"none"},".line-highlight[data-end]:after":{content:"attr(data-end)",position:"absolute",top:"auto",left:".6em",minWidth:"1em",padding:"0 .5em",backgroundColor:"rgba(255,255,255,.3)",color:"#fff",font:"bold 65%/1.5 sans-serif",textAlign:"center",MozBorderRadius:"8px",WebkitBorderRadius:"8px",borderRadius:"8px",textShadow:"none",bottom:".4em"},".line-numbers-rows":{margin:"0"},".line-numbers-rows span":{paddingRight:"10px",borderRight:"3px #d9d336 solid"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#a9b7c6",fontFamily:"Consolas, Monaco, 'Andale Mono', monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#a9b7c6",fontFamily:"Consolas, Monaco, 'Andale Mono', monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",background:"#2b2b2b"},'pre[class*="language-"]::-moz-selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'pre[class*="language-"] ::-moz-selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'code[class*="language-"]::-moz-selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'code[class*="language-"] ::-moz-selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'pre[class*="language-"]::selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'pre[class*="language-"] ::selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'code[class*="language-"]::selection':{color:"inherit",background:"rgba(33,66,131,.85)"},'code[class*="language-"] ::selection':{color:"inherit",background:"rgba(33,66,131,.85)"},':not(pre) > code[class*="language-"]':{background:"#2b2b2b",padding:".1em",borderRadius:".3em"},comment:{color:"#808080"},prolog:{color:"#808080"},cdata:{color:"#808080"},delimiter:{color:"#cc7832"},boolean:{color:"#cc7832"},keyword:{color:"#cc7832"},selector:{color:"#cc7832"},important:{color:"#cc7832"},atrule:{color:"#cc7832"},operator:{color:"#a9b7c6"},punctuation:{color:"#a9b7c6"},"attr-name":{color:"#a9b7c6"},tag:{color:"#e8bf6a"},"tag .punctuation":{color:"#e8bf6a"},doctype:{color:"#e8bf6a"},builtin:{color:"#e8bf6a"},entity:{color:"#6897bb"},number:{color:"#6897bb"},symbol:{color:"#6897bb"},property:{color:"#9876aa"},constant:{color:"#9876aa"},variable:{color:"#9876aa"},string:{color:"#6a8759"},char:{color:"#6a8759"},"attr-value":{color:"#a5c261"},"attr-value .punctuation":{color:"#a5c261"},"attr-value .punctuation:first-child":{color:"#a9b7c6"},url:{color:"#287bde",textDecoration:"underline"},function:{color:"#ffc66d"},regex:{background:"#364135"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},inserted:{background:"#294436"},deleted:{background:"#484a4a"},"code.language-css .token.property":{color:"#a9b7c6"},"code.language-css .token.property + .token.punctuation":{color:"#a9b7c6"},"code.language-css .token.id":{color:"#ffc66d"},"code.language-css .token.selector > .token.class":{color:"#ffc66d"},"code.language-css .token.selector > .token.attribute":{color:"#ffc66d"},"code.language-css .token.selector > .token.pseudo-class":{color:"#ffc66d"},"code.language-css .token.selector > .token.pseudo-element":{color:"#ffc66d"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2734",color:"#9a86fd"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2734",color:"#9a86fd",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6a51e6"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6a51e6"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#6a51e6"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"]::selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#6a51e6"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#6c6783"},prolog:{color:"#6c6783"},doctype:{color:"#6c6783"},cdata:{color:"#6c6783"},punctuation:{color:"#6c6783"},namespace:{Opacity:".7"},tag:{color:"#e09142"},operator:{color:"#e09142"},number:{color:"#e09142"},property:{color:"#9a86fd"},function:{color:"#9a86fd"},"tag-id":{color:"#eeebff"},selector:{color:"#eeebff"},"atrule-id":{color:"#eeebff"},"code.language-javascript":{color:"#c4b9fe"},"attr-name":{color:"#c4b9fe"},"code.language-css":{color:"#ffcc99"},"code.language-scss":{color:"#ffcc99"},boolean:{color:"#ffcc99"},string:{color:"#ffcc99"},entity:{color:"#ffcc99",cursor:"help"},url:{color:"#ffcc99"},".language-css .token.string":{color:"#ffcc99"},".language-scss .token.string":{color:"#ffcc99"},".style .token.string":{color:"#ffcc99"},"attr-value":{color:"#ffcc99"},keyword:{color:"#ffcc99"},control:{color:"#ffcc99"},directive:{color:"#ffcc99"},unit:{color:"#ffcc99"},statement:{color:"#ffcc99"},regex:{color:"#ffcc99"},atrule:{color:"#ffcc99"},placeholder:{color:"#ffcc99"},variable:{color:"#ffcc99"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #eeebff",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#c4b9fe"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #8a75f5",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#2c2937"},".line-numbers-rows > span:before":{color:"#3c3949"},".line-highlight":{background:"linear-gradient(to right, rgba(224, 145, 66, 0.2) 70%, rgba(224, 145, 66, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#322d29",color:"#88786d"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#322d29",color:"#88786d",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6f5849"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6f5849"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#6f5849"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"]::selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#6f5849"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#6a5f58"},prolog:{color:"#6a5f58"},doctype:{color:"#6a5f58"},cdata:{color:"#6a5f58"},punctuation:{color:"#6a5f58"},namespace:{Opacity:".7"},tag:{color:"#bfa05a"},operator:{color:"#bfa05a"},number:{color:"#bfa05a"},property:{color:"#88786d"},function:{color:"#88786d"},"tag-id":{color:"#fff3eb"},selector:{color:"#fff3eb"},"atrule-id":{color:"#fff3eb"},"code.language-javascript":{color:"#a48774"},"attr-name":{color:"#a48774"},"code.language-css":{color:"#fcc440"},"code.language-scss":{color:"#fcc440"},boolean:{color:"#fcc440"},string:{color:"#fcc440"},entity:{color:"#fcc440",cursor:"help"},url:{color:"#fcc440"},".language-css .token.string":{color:"#fcc440"},".language-scss .token.string":{color:"#fcc440"},".style .token.string":{color:"#fcc440"},"attr-value":{color:"#fcc440"},keyword:{color:"#fcc440"},control:{color:"#fcc440"},directive:{color:"#fcc440"},unit:{color:"#fcc440"},statement:{color:"#fcc440"},regex:{color:"#fcc440"},atrule:{color:"#fcc440"},placeholder:{color:"#fcc440"},variable:{color:"#fcc440"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #fff3eb",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#a48774"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #816d5f",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#35302b"},".line-numbers-rows > span:before":{color:"#46403d"},".line-highlight":{background:"linear-gradient(to right, rgba(191, 160, 90, 0.2) 70%, rgba(191, 160, 90, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2d2a",color:"#687d68"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2d2a",color:"#687d68",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#435643"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#435643"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#435643"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#435643"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#435643"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#435643"},'code[class*="language-"]::selection':{textShadow:"none",background:"#435643"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#435643"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#535f53"},prolog:{color:"#535f53"},doctype:{color:"#535f53"},cdata:{color:"#535f53"},punctuation:{color:"#535f53"},namespace:{Opacity:".7"},tag:{color:"#a2b34d"},operator:{color:"#a2b34d"},number:{color:"#a2b34d"},property:{color:"#687d68"},function:{color:"#687d68"},"tag-id":{color:"#f0fff0"},selector:{color:"#f0fff0"},"atrule-id":{color:"#f0fff0"},"code.language-javascript":{color:"#b3d6b3"},"attr-name":{color:"#b3d6b3"},"code.language-css":{color:"#e5fb79"},"code.language-scss":{color:"#e5fb79"},boolean:{color:"#e5fb79"},string:{color:"#e5fb79"},entity:{color:"#e5fb79",cursor:"help"},url:{color:"#e5fb79"},".language-css .token.string":{color:"#e5fb79"},".language-scss .token.string":{color:"#e5fb79"},".style .token.string":{color:"#e5fb79"},"attr-value":{color:"#e5fb79"},keyword:{color:"#e5fb79"},control:{color:"#e5fb79"},directive:{color:"#e5fb79"},unit:{color:"#e5fb79"},statement:{color:"#e5fb79"},regex:{color:"#e5fb79"},atrule:{color:"#e5fb79"},placeholder:{color:"#e5fb79"},variable:{color:"#e5fb79"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #f0fff0",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#b3d6b3"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #5c705c",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#2c302c"},".line-numbers-rows > span:before":{color:"#3b423b"},".line-highlight":{background:"linear-gradient(to right, rgba(162, 179, 77, 0.2) 70%, rgba(162, 179, 77, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#faf8f5",color:"#728fcb"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#faf8f5",color:"#728fcb",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#faf8f5"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#faf8f5"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#faf8f5"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"]::selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#faf8f5"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#b6ad9a"},prolog:{color:"#b6ad9a"},doctype:{color:"#b6ad9a"},cdata:{color:"#b6ad9a"},punctuation:{color:"#b6ad9a"},namespace:{Opacity:".7"},tag:{color:"#063289"},operator:{color:"#063289"},number:{color:"#063289"},property:{color:"#b29762"},function:{color:"#b29762"},"tag-id":{color:"#2d2006"},selector:{color:"#2d2006"},"atrule-id":{color:"#2d2006"},"code.language-javascript":{color:"#896724"},"attr-name":{color:"#896724"},"code.language-css":{color:"#728fcb"},"code.language-scss":{color:"#728fcb"},boolean:{color:"#728fcb"},string:{color:"#728fcb"},entity:{color:"#728fcb",cursor:"help"},url:{color:"#728fcb"},".language-css .token.string":{color:"#728fcb"},".language-scss .token.string":{color:"#728fcb"},".style .token.string":{color:"#728fcb"},"attr-value":{color:"#728fcb"},keyword:{color:"#728fcb"},control:{color:"#728fcb"},directive:{color:"#728fcb"},unit:{color:"#728fcb"},statement:{color:"#728fcb"},regex:{color:"#728fcb"},atrule:{color:"#728fcb"},placeholder:{color:"#93abdc"},variable:{color:"#93abdc"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #2d2006",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#896724"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #896724",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#ece8de"},".line-numbers-rows > span:before":{color:"#cdc4b1"},".line-highlight":{background:"linear-gradient(to right, rgba(45, 32, 6, 0.2) 70%, rgba(45, 32, 6, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#1d262f",color:"#57718e"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#1d262f",color:"#57718e",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#004a9e"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#004a9e"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#004a9e"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"]::selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#004a9e"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#4a5f78"},prolog:{color:"#4a5f78"},doctype:{color:"#4a5f78"},cdata:{color:"#4a5f78"},punctuation:{color:"#4a5f78"},namespace:{Opacity:".7"},tag:{color:"#0aa370"},operator:{color:"#0aa370"},number:{color:"#0aa370"},property:{color:"#57718e"},function:{color:"#57718e"},"tag-id":{color:"#ebf4ff"},selector:{color:"#ebf4ff"},"atrule-id":{color:"#ebf4ff"},"code.language-javascript":{color:"#7eb6f6"},"attr-name":{color:"#7eb6f6"},"code.language-css":{color:"#47ebb4"},"code.language-scss":{color:"#47ebb4"},boolean:{color:"#47ebb4"},string:{color:"#47ebb4"},entity:{color:"#47ebb4",cursor:"help"},url:{color:"#47ebb4"},".language-css .token.string":{color:"#47ebb4"},".language-scss .token.string":{color:"#47ebb4"},".style .token.string":{color:"#47ebb4"},"attr-value":{color:"#47ebb4"},keyword:{color:"#47ebb4"},control:{color:"#47ebb4"},directive:{color:"#47ebb4"},unit:{color:"#47ebb4"},statement:{color:"#47ebb4"},regex:{color:"#47ebb4"},atrule:{color:"#47ebb4"},placeholder:{color:"#47ebb4"},variable:{color:"#47ebb4"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #ebf4ff",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#7eb6f6"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #34659d",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#1f2932"},".line-numbers-rows > span:before":{color:"#2c3847"},".line-highlight":{background:"linear-gradient(to right, rgba(10, 163, 112, 0.2) 70%, rgba(10, 163, 112, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#24242e",color:"#767693"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#24242e",color:"#767693",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#5151e6"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#5151e6"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#5151e6"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"]::selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#5151e6"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#5b5b76"},prolog:{color:"#5b5b76"},doctype:{color:"#5b5b76"},cdata:{color:"#5b5b76"},punctuation:{color:"#5b5b76"},namespace:{Opacity:".7"},tag:{color:"#dd672c"},operator:{color:"#dd672c"},number:{color:"#dd672c"},property:{color:"#767693"},function:{color:"#767693"},"tag-id":{color:"#ebebff"},selector:{color:"#ebebff"},"atrule-id":{color:"#ebebff"},"code.language-javascript":{color:"#aaaaca"},"attr-name":{color:"#aaaaca"},"code.language-css":{color:"#fe8c52"},"code.language-scss":{color:"#fe8c52"},boolean:{color:"#fe8c52"},string:{color:"#fe8c52"},entity:{color:"#fe8c52",cursor:"help"},url:{color:"#fe8c52"},".language-css .token.string":{color:"#fe8c52"},".language-scss .token.string":{color:"#fe8c52"},".style .token.string":{color:"#fe8c52"},"attr-value":{color:"#fe8c52"},keyword:{color:"#fe8c52"},control:{color:"#fe8c52"},directive:{color:"#fe8c52"},unit:{color:"#fe8c52"},statement:{color:"#fe8c52"},regex:{color:"#fe8c52"},atrule:{color:"#fe8c52"},placeholder:{color:"#fe8c52"},variable:{color:"#fe8c52"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #ebebff",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#aaaaca"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #7676f4",OutlineOffset:".4em"},".line-numbers .line-numbers-rows":{borderRightColor:"#262631"},".line-numbers-rows > span:before":{color:"#393949"},".line-highlight":{background:"linear-gradient(to right, rgba(221, 103, 44, 0.2) 70%, rgba(221, 103, 44, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:"0.95em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:"0.95em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",border:"1px solid #dddddd",backgroundColor:"white"},'pre[class*="language-"]::-moz-selection':{background:"#b3d4fc"},'pre[class*="language-"] ::-moz-selection':{background:"#b3d4fc"},'code[class*="language-"]::-moz-selection':{background:"#b3d4fc"},'code[class*="language-"] ::-moz-selection':{background:"#b3d4fc"},'pre[class*="language-"]::selection':{background:"#b3d4fc"},'pre[class*="language-"] ::selection':{background:"#b3d4fc"},'code[class*="language-"]::selection':{background:"#b3d4fc"},'code[class*="language-"] ::selection':{background:"#b3d4fc"},':not(pre) > code[class*="language-"]':{padding:".2em",paddingTop:"1px",paddingBottom:"1px",background:"#f8f8f8",border:"1px solid #dddddd"},comment:{color:"#999988",fontStyle:"italic"},prolog:{color:"#999988",fontStyle:"italic"},doctype:{color:"#999988",fontStyle:"italic"},cdata:{color:"#999988",fontStyle:"italic"},namespace:{Opacity:".7"},string:{color:"#e3116c"},"attr-value":{color:"#e3116c"},punctuation:{color:"#393A34"},operator:{color:"#393A34"},entity:{color:"#36acaa"},url:{color:"#36acaa"},symbol:{color:"#36acaa"},number:{color:"#36acaa"},boolean:{color:"#36acaa"},variable:{color:"#36acaa"},constant:{color:"#36acaa"},property:{color:"#36acaa"},regex:{color:"#36acaa"},inserted:{color:"#36acaa"},atrule:{color:"#00a4db"},keyword:{color:"#00a4db"},"attr-name":{color:"#00a4db"},".language-autohotkey .token.selector":{color:"#00a4db"},function:{color:"#9a050f",fontWeight:"bold"},deleted:{color:"#9a050f"},".language-autohotkey .token.tag":{color:"#9a050f"},tag:{color:"#00009f"},selector:{color:"#00009f"},".language-autohotkey .token.keyword":{color:"#00009f"},important:{fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#b9b5b8",fontFamily:'"Fira Mono", Menlo, Monaco, "Lucida Console","Courier New", Courier, monospace',fontSize:"16px",lineHeight:"1.375",direction:"ltr",textAlign:"left",wordSpacing:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",background:"#322931"},'pre[class*="language-"]':{color:"#b9b5b8",fontFamily:'"Fira Mono", Menlo, Monaco, "Lucida Console","Courier New", Courier, monospace',fontSize:"16px",lineHeight:"1.375",direction:"ltr",textAlign:"left",wordSpacing:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",background:"#322931",padding:"1em",margin:".5em 0",overflow:"auto"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#797379"},prolog:{color:"#797379"},doctype:{color:"#797379"},cdata:{color:"#797379"},punctuation:{color:"#b9b5b8"},".namespace":{Opacity:".7"},null:{color:"#fd8b19"},operator:{color:"#fd8b19"},boolean:{color:"#fd8b19"},number:{color:"#fd8b19"},property:{color:"#fdcc59"},tag:{color:"#1290bf"},string:{color:"#149b93"},selector:{color:"#c85e7c"},"attr-name":{color:"#fd8b19"},entity:{color:"#149b93",cursor:"help"},url:{color:"#149b93"},".language-css .token.string":{color:"#149b93"},".style .token.string":{color:"#149b93"},"attr-value":{color:"#8fc13e"},keyword:{color:"#8fc13e"},control:{color:"#8fc13e"},directive:{color:"#8fc13e"},unit:{color:"#8fc13e"},statement:{color:"#149b93"},regex:{color:"#149b93"},atrule:{color:"#149b93"},placeholder:{color:"#1290bf"},variable:{color:"#1290bf"},important:{color:"#dd464c",fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid red",OutlineOffset:".4em"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"15px",lineHeight:"1.5",color:"#dccf8f",textShadow:"0"},'pre[class*="language-"]':{MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"15px",lineHeight:"1.5",color:"#DCCF8F",textShadow:"0",borderRadius:"5px",border:"1px solid #000",background:"#181914 url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAMAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQACQYGBgcGCQcHCQ0IBwgNDwsJCQsPEQ4ODw4OERENDg4ODg0RERQUFhQUERoaHBwaGiYmJiYmKysrKysrKysrKwEJCAgJCgkMCgoMDwwODA8TDg4ODhMVDg4PDg4VGhMRERERExoXGhYWFhoXHR0aGh0dJCQjJCQrKysrKysrKysr/8AAEQgAjACMAwEiAAIRAQMRAf/EAF4AAQEBAAAAAAAAAAAAAAAAAAABBwEBAQAAAAAAAAAAAAAAAAAAAAIQAAEDAwIHAQEAAAAAAAAAAADwAREhYaExkUFRcYGxwdHh8REBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AyGFEjHaBS2fDDs2zkhKmBKktb7km+ZwwCnXPkLVmCTMItj6AXFxRS465/BTnkAJvkLkJe+7AKKoi2AtRS2zuAWsCb5GOlBN8gKfmuGHZ8MFqIth3ALmFoFwbwKWyAlTAp17uKqBvgBD8sM4fTjhvAhkzhaRkBMKBrfs7jGPIpzy7gFrAqnC0C0gB0EWwBDW2cBVQwm+QtPpa3wBO3sVvszCnLAhkzgL5/RLf13cLQd8/AGlu0Cb5HTx9KuAEieGJEdcehS3eRTp2ATdt3CpIm+QtZwAhROXFeb7swp/ahaM3kBE/jSIUBc/AWrgBN8uNFAl+b7sAXFxFn2YLUU5Ns7gFX8C4ib+hN8gFWXwK3bZglxEJm+gKdciLPsFV/TClsgJUwKJ5FVA7tvIFrfZhVfGJDcsCKaYgAqv6YRbE+RWOWBtu7+AL3yRalXLyKqAIIfk+zARbDgFyEsncYwJvlgFRW+GEWntIi2P0BooyFxcNr8Ep3+ANLbMO+QyhvbiqdgC0kVvgUUiLYgBS2QtPbiVI1/sgOmG9uO+Y8DW+7jS2zAOnj6O2BndwuIAUtkdRN8gFoK3wwXMQyZwHVbClsuNLd4E3yAUR6FVDBR+BafQGt93LVMxJTv8ABts4CVLhcfYWsCb5kC9/BHdU8CLYFY5bMAd+eX9MGthhpbA1vu4B7+RKkaW2Yq4AQtVBBFsAJU/AuIXBhN8gGWnstefhiZyWvLAEnbYS1uzSFP6Jvn4Baxx70JKkQojLib5AVTey1jjgkKJGO0AKWyOm7N7cSpgSpAdPH0Tfd/gp1z5C1ZgKqN9J2wFxcUUuAFLZAm+QC0Fb4YUVRFsAOvj4KW2dwtYE3yAWk/wS/PLMKfmuGHZ8MAXF/Ja32Yi5haAKWz4Ydm2cSpgU693Atb7km+Zwwh+WGcPpxw3gAkzCLY+iYUDW/Z3Adc/gpzyFrAqnALkJe+7DoItgAtRS2zuKqGE3yAx0oJvkdvYrfZmALURbDuL5/RLf13cAuDeBS2RpbtAm+QFVA3wR+3fUtFHoBDJnC0jIXH0HWsgMY8inPLuOkd9chp4z20ALQLSA8cI9jYAIa2zjzjBd8gRafS1vgiUho/kAKcsCGTOGWvoOpkAtB3z8Hm8x2Ff5ADp4+lXAlIvcmwH/2Q==') repeat left top",padding:"12px",overflow:"auto"},':not(pre) > code[class*="language-"]':{borderRadius:"5px",border:"1px solid #000",color:"#DCCF8F",background:"#181914 url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAMAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQACQYGBgcGCQcHCQ0IBwgNDwsJCQsPEQ4ODw4OERENDg4ODg0RERQUFhQUERoaHBwaGiYmJiYmKysrKysrKysrKwEJCAgJCgkMCgoMDwwODA8TDg4ODhMVDg4PDg4VGhMRERERExoXGhYWFhoXHR0aGh0dJCQjJCQrKysrKysrKysr/8AAEQgAjACMAwEiAAIRAQMRAf/EAF4AAQEBAAAAAAAAAAAAAAAAAAABBwEBAQAAAAAAAAAAAAAAAAAAAAIQAAEDAwIHAQEAAAAAAAAAAADwAREhYaExkUFRcYGxwdHh8REBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AyGFEjHaBS2fDDs2zkhKmBKktb7km+ZwwCnXPkLVmCTMItj6AXFxRS465/BTnkAJvkLkJe+7AKKoi2AtRS2zuAWsCb5GOlBN8gKfmuGHZ8MFqIth3ALmFoFwbwKWyAlTAp17uKqBvgBD8sM4fTjhvAhkzhaRkBMKBrfs7jGPIpzy7gFrAqnC0C0gB0EWwBDW2cBVQwm+QtPpa3wBO3sVvszCnLAhkzgL5/RLf13cLQd8/AGlu0Cb5HTx9KuAEieGJEdcehS3eRTp2ATdt3CpIm+QtZwAhROXFeb7swp/ahaM3kBE/jSIUBc/AWrgBN8uNFAl+b7sAXFxFn2YLUU5Ns7gFX8C4ib+hN8gFWXwK3bZglxEJm+gKdciLPsFV/TClsgJUwKJ5FVA7tvIFrfZhVfGJDcsCKaYgAqv6YRbE+RWOWBtu7+AL3yRalXLyKqAIIfk+zARbDgFyEsncYwJvlgFRW+GEWntIi2P0BooyFxcNr8Ep3+ANLbMO+QyhvbiqdgC0kVvgUUiLYgBS2QtPbiVI1/sgOmG9uO+Y8DW+7jS2zAOnj6O2BndwuIAUtkdRN8gFoK3wwXMQyZwHVbClsuNLd4E3yAUR6FVDBR+BafQGt93LVMxJTv8ABts4CVLhcfYWsCb5kC9/BHdU8CLYFY5bMAd+eX9MGthhpbA1vu4B7+RKkaW2Yq4AQtVBBFsAJU/AuIXBhN8gGWnstefhiZyWvLAEnbYS1uzSFP6Jvn4Baxx70JKkQojLib5AVTey1jjgkKJGO0AKWyOm7N7cSpgSpAdPH0Tfd/gp1z5C1ZgKqN9J2wFxcUUuAFLZAm+QC0Fb4YUVRFsAOvj4KW2dwtYE3yAWk/wS/PLMKfmuGHZ8MAXF/Ja32Yi5haAKWz4Ydm2cSpgU693Atb7km+Zwwh+WGcPpxw3gAkzCLY+iYUDW/Z3Adc/gpzyFrAqnALkJe+7DoItgAtRS2zuKqGE3yAx0oJvkdvYrfZmALURbDuL5/RLf13cAuDeBS2RpbtAm+QFVA3wR+3fUtFHoBDJnC0jIXH0HWsgMY8inPLuOkd9chp4z20ALQLSA8cI9jYAIa2zjzjBd8gRafS1vgiUho/kAKcsCGTOGWvoOpkAtB3z8Hm8x2Ff5ADp4+lXAlIvcmwH/2Q==') repeat left top",padding:"2px 6px"},namespace:{Opacity:".7"},comment:{color:"#586e75",fontStyle:"italic"},prolog:{color:"#586e75",fontStyle:"italic"},doctype:{color:"#586e75",fontStyle:"italic"},cdata:{color:"#586e75",fontStyle:"italic"},number:{color:"#b89859"},string:{color:"#468966"},char:{color:"#468966"},builtin:{color:"#468966"},inserted:{color:"#468966"},"attr-name":{color:"#b89859"},operator:{color:"#dccf8f"},entity:{color:"#dccf8f",cursor:"help"},url:{color:"#dccf8f"},".language-css .token.string":{color:"#dccf8f"},".style .token.string":{color:"#dccf8f"},selector:{color:"#859900"},regex:{color:"#859900"},atrule:{color:"#cb4b16"},keyword:{color:"#cb4b16"},"attr-value":{color:"#468966"},function:{color:"#b58900"},variable:{color:"#b58900"},placeholder:{color:"#b58900"},property:{color:"#b89859"},tag:{color:"#ffb03b"},boolean:{color:"#b89859"},constant:{color:"#b89859"},symbol:{color:"#b89859"},important:{color:"#dc322f"},statement:{color:"#dc322f"},deleted:{color:"#dc322f"},punctuation:{color:"#dccf8f"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:"0.95em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:"0.95em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",border:"1px solid #dddddd",backgroundColor:"white"},'pre[class*="language-"]::-moz-selection':{background:"#C1DEF1"},'pre[class*="language-"] ::-moz-selection':{background:"#C1DEF1"},'code[class*="language-"]::-moz-selection':{background:"#C1DEF1"},'code[class*="language-"] ::-moz-selection':{background:"#C1DEF1"},'pre[class*="language-"]::selection':{background:"#C1DEF1"},'pre[class*="language-"] ::selection':{background:"#C1DEF1"},'code[class*="language-"]::selection':{background:"#C1DEF1"},'code[class*="language-"] ::selection':{background:"#C1DEF1"},':not(pre) > code[class*="language-"]':{padding:".2em",paddingTop:"1px",paddingBottom:"1px",background:"#f8f8f8",border:"1px solid #dddddd"},comment:{color:"#008000",fontStyle:"italic"},prolog:{color:"#008000",fontStyle:"italic"},doctype:{color:"#008000",fontStyle:"italic"},cdata:{color:"#008000",fontStyle:"italic"},namespace:{Opacity:".7"},string:{color:"#A31515"},punctuation:{color:"#393A34"},operator:{color:"#393A34"},url:{color:"#36acaa"},symbol:{color:"#36acaa"},number:{color:"#36acaa"},boolean:{color:"#36acaa"},variable:{color:"#36acaa"},constant:{color:"#36acaa"},inserted:{color:"#36acaa"},atrule:{color:"#0000ff"},keyword:{color:"#0000ff"},"attr-value":{color:"#0000ff"},".language-autohotkey .token.selector":{color:"#0000ff"},".language-json .token.boolean":{color:"#0000ff"},".language-json .token.number":{color:"#0000ff"},'code[class*="language-css"]':{color:"#0000ff"},function:{color:"#393A34"},deleted:{color:"#9a050f"},".language-autohotkey .token.tag":{color:"#9a050f"},selector:{color:"#800000"},".language-autohotkey .token.keyword":{color:"#00009f"},important:{fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},"class-name":{color:"#2B91AF"},".language-json .token.property":{color:"#2B91AF"},tag:{color:"#800000"},"attr-name":{color:"#ff0000"},property:{color:"#ff0000"},regex:{color:"#ff0000"},entity:{color:"#ff0000"},"directive.tag .tag":{background:"#ffff00",color:"#393A34"},".line-numbers .line-numbers-rows":{borderRightColor:"#a5a5a5"},".line-numbers-rows > span:before":{color:"#2B91AF"},".line-highlight":{background:"linear-gradient(to right, rgba(193, 222, 241, 0.2) 70%, rgba(221, 222, 241, 0))"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={'code[class*="language-"]':{MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordWrap:"normal",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"14px",color:"#76d9e6",textShadow:"none"},'pre[class*="language-"]':{MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordWrap:"normal",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"14px",color:"#76d9e6",textShadow:"none",background:"#2a2a2a",padding:"15px",borderRadius:"4px",border:"1px solid #e1e1e8",overflow:"auto",position:"relative"},':not(pre)>code[class*="language-"]':{background:"#2a2a2a",padding:"0.15em 0.2em 0.05em",borderRadius:".3em",border:"0.13em solid #7a6652",boxShadow:"1px 1px 0.3em -0.1em #000 inset"},'pre[class*="language-"] code':{whiteSpace:"pre",display:"block"},namespace:{Opacity:".7"},comment:{color:"#6f705e"},prolog:{color:"#6f705e"},doctype:{color:"#6f705e"},cdata:{color:"#6f705e"},operator:{color:"#a77afe"},boolean:{color:"#a77afe"},number:{color:"#a77afe"},"attr-name":{color:"#e6d06c"},string:{color:"#e6d06c"},entity:{color:"#e6d06c",cursor:"help"},url:{color:"#e6d06c"},".language-css .token.string":{color:"#e6d06c"},".style .token.string":{color:"#e6d06c"},selector:{color:"#a6e22d"},inserted:{color:"#a6e22d"},atrule:{color:"#ef3b7d"},"attr-value":{color:"#ef3b7d"},keyword:{color:"#ef3b7d"},important:{color:"#ef3b7d",fontWeight:"bold"},deleted:{color:"#ef3b7d"},regex:{color:"#76d9e6"},statement:{color:"#76d9e6",fontWeight:"bold"},placeholder:{color:"#fff"},variable:{color:"#fff"},bold:{fontWeight:"bold"},punctuation:{color:"#bebec5"},italic:{fontStyle:"italic"},"code.language-markup":{color:"#f9f9f9"},"code.language-markup .token.tag":{color:"#ef3b7d"},"code.language-markup .token.attr-name":{color:"#a6e22d"},"code.language-markup .token.attr-value":{color:"#e6d06c"},"code.language-markup .token.style":{color:"#76d9e6"},"code.language-markup .token.script":{color:"#76d9e6"},"code.language-markup .token.script .token.keyword":{color:"#76d9e6"},'pre[class*="language-"][data-line]':{position:"relative",padding:"1em 0 1em 3em"},"pre[data-line] .line-highlight":{position:"absolute",left:"0",right:"0",padding:"0",marginTop:"1em",background:"rgba(255, 255, 255, 0.08)",pointerEvents:"none",lineHeight:"inherit",whiteSpace:"pre"},"pre[data-line] .line-highlight:before":{content:"attr(data-start)",position:"absolute",top:".4em",left:".6em",minWidth:"1em",padding:"0.2em 0.5em",backgroundColor:"rgba(255, 255, 255, 0.4)",color:"black",font:"bold 65%/1 sans-serif",height:"1em",lineHeight:"1em",textAlign:"center",borderRadius:"999px",textShadow:"none",boxShadow:"0 1px 1px rgba(255, 255, 255, 0.7)"},"pre[data-line] .line-highlight[data-end]:after":{content:"attr(data-end)",position:"absolute",top:"auto",left:".6em",minWidth:"1em",padding:"0.2em 0.5em",backgroundColor:"rgba(255, 255, 255, 0.4)",color:"black",font:"bold 65%/1 sans-serif",height:"1em",lineHeight:"1em",textAlign:"center",borderRadius:"999px",textShadow:"none",boxShadow:"0 1px 1px rgba(255, 255, 255, 0.7)",bottom:".4em"}}},function(e,t,n){"use strict";n.r(t),n.d(t,"getSuggestedFruitSync",function(){return s}),n.d(t,"default",function(){return u});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(e){return i.a.filter(function(t){return t.name.toLowerCase().includes(e.toLowerCase())})}function u(){var e=l(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:s,label:"Your favourite fruit",fullWidth:!0})}},function(e,t,n){var r=n(169),o=n(670),a=n(672),i="Expected a function",l=Math.max,s=Math.min;e.exports=function(e,t,n){var u,c,d,p,f,m,g=0,h=!1,b=!1,y=!0;if("function"!=typeof e)throw new TypeError(i);function v(t){var n=u,r=c;return u=c=void 0,g=t,p=e.apply(r,n)}function S(e){var n=e-m;return void 0===m||n>=t||n<0||b&&e-g>=d}function E(){var e=o();if(S(e))return x(e);f=setTimeout(E,function(e){var n=t-(e-m);return b?s(n,d-(e-g)):n}(e))}function x(e){return f=void 0,y&&u?v(e):(u=c=void 0,p)}function w(){var e=o(),n=S(e);if(u=arguments,c=this,m=e,n){if(void 0===f)return function(e){return g=e,f=setTimeout(E,t),h?v(e):p}(m);if(b)return f=setTimeout(E,t),v(m)}return void 0===f&&(f=setTimeout(E,t)),p}return t=a(t)||0,r(n)&&(h=!!n.leading,d=(b="maxWait"in n)?l(a(n.maxWait)||0,t):d,y="trailing"in n?!!n.trailing:y),w.cancel=function(){void 0!==f&&clearTimeout(f),g=0,u=m=c=f=void 0},w.flush=function(){return void 0===f?p:x(o())},w}},function(e,t,n){var r=n(170);e.exports=function(){return r.Date.now()}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(27))},function(e,t,n){var r=n(169),o=n(673),a=NaN,i=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,u=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return a;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(i,"");var n=s.test(e);return n||u.test(e)?c(e.slice(2),n?2:8):l.test(e)?a:+e}},function(e,t,n){var r=n(674),o=n(677),a="[object Symbol]";e.exports=function(e){return"symbol"==typeof e||o(e)&&r(e)==a}},function(e,t,n){var r=n(171),o=n(675),a=n(676),i="[object Null]",l="[object Undefined]",s=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?l:i:s&&s in Object(e)?o(e):a(e)}},function(e,t,n){var r=n(171),o=Object.prototype,a=o.hasOwnProperty,i=o.toString,l=r?r.toStringTag:void 0;e.exports=function(e){var t=a.call(e,l),n=e[l];try{e[l]=void 0;var r=!0}catch(e){}var o=i.call(e);return r&&(t?e[l]=n:delete e[l]),o}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return s});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(){var e=l(Object(r.useState)(i.a),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:i.b,label:"Your favourite fruit",fullWidth:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return s});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(){var e=l(Object(r.useState)(i.a.slice(0,2)),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:i.b,label:"Your favourite fruit",fullWidth:!0,disabled:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return s});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(){var e=l(Object(r.useState)(i.a.slice(0,2)),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:i.b,label:"Your favourite fruit",fullWidth:!0,error:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return d});var r=n(0),o=n.n(r),a=n(11),i=n(10),l=n(18);function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var u=3;function c(e){return e.length>=u?Object(i.b)(e):l.b}function d(){var e=s(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:c,label:"Your favourite fruit",fullWidth:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return s});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(){var e=l(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:i.b,label:"Your favourite fruit",fullWidth:!0,maxDropdownHeight:250})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return c});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var s=800;function u(e){return e.length?new Promise(function(t){setTimeout(function(){return t(Object(i.b)(e))},s)}):Promise.resolve([])}function c(){var e=l(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:u,label:"Your favourite fruit",fullWidth:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return d});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var s=800,u=500;function c(e){return e.length?new Promise(function(t){setTimeout(function(){return t(Object(i.b)(e))},s)}):Promise.resolve([])}function d(){var e=l(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:c,label:"Your favourite fruit",fetchDelay:u,fullWidth:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return u});var r=n(0),o=n.n(r),a=n(11);function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var l=800;function s(e){return e.length?new Promise(function(e,t){setTimeout(function(){return t(new Error("Suggestion fetch failed!"))},l)}):Promise.resolve([])}function u(){var e=i(Object(r.useState)([]),2),t=e[0],n=e[1];return o.a.createElement(a.a,{value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:s,label:"Your favourite fruit",fullWidth:!0})}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",function(){return c});var r=n(0),o=n.n(r),a=n(11),i=n(10);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return e.reduce(function(e,t){return S()({},e,n[t])},t)}function x(e){var t,n=e.node,r=e.stylesheet,a=e.style,i=void 0===a?{}:a,l=e.useInlineStyles,s=e.key,u=n.properties,c=n.type,d=n.tagName,p=n.value;if("text"===c)return p;if(d){var f=function(e,t){var n=0;return function(r){return n+=1,r.map(function(r,o){return x({node:r,stylesheet:e,useInlineStyles:t,key:"code-segment-".concat(n,"-").concat(o)})})}}(r,l),m=l&&u.className&&u.className.filter(function(e){return!r[e]}),g=m&&m.length?m:void 0,h=l?S()({},u,{className:g},{style:E(u.className,Object.assign({},u.style,i),r)}):S()({},u,{className:(t=u.className,t.join(" "))}),b=f(n.children);return o.a.createElement(d,y()({key:s},h),b)}}var w=/\n/g;function k(e){var t=e.codeString,n=e.codeStyle,r=e.containerStyle,a=void 0===r?{float:"left",paddingRight:"10px"}:r,i=e.numberStyle,l=void 0===i?{}:i,s=e.startingLineNumber;return o.a.createElement("code",{style:Object.assign({},n,a)},function(e){var t=e.lines,n=e.startingLineNumber,r=e.style;return t.map(function(e,t){var a=t+n;return o.a.createElement("span",{key:"line-".concat(t),className:"react-syntax-highlighter-line-number",style:"function"==typeof r?r(a):r},"".concat(a,"\n"))})}({lines:t.replace(/\n$/,"").split("\n"),style:l,startingLineNumber:s}))}function _(e){var t=e.children,n=e.lineNumber,r=e.lineProps,o=e.className,a=void 0===o?[]:o,i=("function"==typeof r?r(n):r)||{};return i.className=i.className?a.concat(i.className):a,{type:"element",tagName:"span",properties:i,children:t}}function T(e,t){for(var n=function e(t){for(var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=0;o code[class*="language-"]':{background:"#f5f2f0",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"slategray"},prolog:{color:"slategray"},doctype:{color:"slategray"},cdata:{color:"slategray"},punctuation:{color:"#999"},".namespace":{Opacity:".7"},property:{color:"#905"},tag:{color:"#905"},boolean:{color:"#905"},number:{color:"#905"},constant:{color:"#905"},symbol:{color:"#905"},deleted:{color:"#905"},selector:{color:"#690"},"attr-name":{color:"#690"},string:{color:"#690"},char:{color:"#690"},builtin:{color:"#690"},inserted:{color:"#690"},operator:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},entity:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)",cursor:"help"},url:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".language-css .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".style .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},atrule:{color:"#07a"},"attr-value":{color:"#07a"},keyword:{color:"#07a"},function:{color:"#DD4A68"},"class-name":{color:"#DD4A68"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"bold"},variable:{color:"#e90"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}},function(e){var t=e.language,n=e.children,r=e.style,a=void 0===r?O:r,i=e.customStyle,l=void 0===i?{}:i,s=e.codeTagProps,u=void 0===s?{style:a['code[class*="language-"]']}:s,c=e.useInlineStyles,d=void 0===c||c,p=e.showLineNumbers,f=void 0!==p&&p,m=e.startingLineNumber,g=void 0===m?1:m,b=e.lineNumberContainerStyle,y=e.lineNumberStyle,v=e.wrapLines,S=e.lineProps,E=void 0===S?{}:S,x=e.renderer,w=e.PreTag,_=void 0===w?"pre":w,I=e.CodeTag,N=void 0===I?"code":I,R=e.code,P=void 0===R?Array.isArray(n)?n[0]:n:R,M=e.astGenerator,L=h()(e,["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"]);M=M||C;var D=f?o.a.createElement(k,{containerStyle:b,codeStyle:u.style||{},numberStyle:y,startingLineNumber:g,codeString:P}):null,F=a.hljs||a['pre[class*="language-"]']||{backgroundColor:"#fff"},B=d?Object.assign({},L,{style:Object.assign({},F,l)}):Object.assign({},L,{className:"hljs"});if(!M)return o.a.createElement(_,B,D,o.a.createElement(N,u,P));v=!(!x||void 0!==v)||v,x=x||A;var j=[{type:"text",value:P}],U=function(e){var t=e.astGenerator,n=e.language,r=e.code,o=e.defaultCodeValue;if(t.getLanguage){var a=n&&t.getLanguage(n);return"text"===n?{value:o,language:"text"}:a?t.highlight(n,r):t.highlightAuto(r)}try{return n&&"text"!==n?{value:t.highlight(r,n)}:{value:o}}catch(e){return{value:o}}}({astGenerator:M,language:t,code:P,defaultCodeValue:j});null===U.language&&(U.value=j);var z=v?T(U,E):U.value;return o.a.createElement(_,B,D,o.a.createElement(N,u,x({rows:z,stylesheet:a,useInlineStyles:d})))});N.supportedLanguages=["abap","actionscript","ada","apacheconf","apl","applescript","arduino","arff","asciidoc","asm6502","aspnet","autohotkey","autoit","bash","basic","batch","bison","brainfuck","bro","c","clike","clojure","coffeescript","cpp","crystal","csharp","csp","css-extras","css","d","dart","diff","django","docker","eiffel","elixir","elm","erb","erlang","flow","fortran","fsharp","gedcom","gherkin","git","glsl","go","graphql","groovy","haml","handlebars","haskell","haxe","hpkp","hsts","http","ichigojam","icon","inform7","ini","io","j","java","javascript","jolie","json","jsx","julia","keyman","kotlin","latex","less","liquid","lisp","livescript","lolcode","lua","makefile","markdown","markup-templating","markup","matlab","mel","mizar","monkey","n4js","nasm","nginx","nim","nix","nsis","objectivec","ocaml","opencl","oz","parigp","parser","pascal","perl","php-extras","php","plsql","powershell","processing","prolog","properties","protobuf","pug","puppet","pure","python","q","qore","r","reason","renpy","rest","rip","roboconf","ruby","rust","sas","sass","scala","scheme","scss","smalltalk","smarty","soy","sql","stylus","swift","tap","tcl","textile","tsx","tt2","twig","typescript","vbnet","velocity","verilog","vhdl","vim","visual-basic","wasm","wiki","xeora","xojo","xquery","yaml"];var R=N,P=n(56),M=n(1);function L(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function D(e){var t=e.DemoComponent,n=e.title,a=L(Object(r.useState)(!1),2),i=a[0],s=a[1],u=o.a.createElement(l.p,{checked:i,onChange:function(e,t){return s(t)}});return o.a.createElement("section",{style:{margin:"48px 0"}},o.a.createElement("div",{style:{display:"flex",alignItems:"center"}},o.a.createElement(l.w,{variant:"h5",style:{flex:"1 1 0"}},n),o.a.createElement(l.f,{control:u,label:"Source"})),o.a.createElement(m,{source:t.__markdown__}),o.a.createElement("div",{style:{width:"100%",marginTop:"8px"}},o.a.createElement(t,null),o.a.createElement(l.c,{in:i},o.a.createElement(R,{language:"jsx",style:P.atomDark},t.__source__.replace(/export default\s*/g,"")))))}D.propTypes={DemoComponent:M.any.isRequired,title:M.string.isRequired};var F=n(186),B=n.n(F),j=n(188),U=n.n(j),z=n(189),H=n.n(z),W=n(190),G=n.n(W),V=n(191),$=n.n(V),q=n(192),K=n.n(q),Y=n(193),X=n.n(Y),Z=n(194),Q=n.n(Z),J=n(195),ee=n.n(J),te=n(196),ne=n.n(te),re=n(197),oe=n.n(re),ae=n(198),ie=n.n(ae),le=n(199),se=n.n(le),ue=n(200),ce=n.n(ue),de=n(202),pe=n.n(de),fe=n(203),me=n.n(fe),ge=n(204),he=n.n(ge),be=n(11),ye=n(10);function ve(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Se(e){var t=e.fields,n=e.value,r=e.onChange,a=function(e,t){return r(function(e){for(var t=1;t fruit.name }\n getSuggestedItems={ getSuggestedFruitSync }\n".concat(t," \n />;\n}\n").trim()}(i)))),o.a.createElement(l.d,null),o.a.createElement("div",{style:{padding:"32px"}},o.a.createElement(l.w,{variant:"h6"},"Result"),o.a.createElement(be.a,Ee({value:t,onChange:n,itemToString:function(e){return e.name},getSuggestedItems:ye.b},i))))}var Ae=Object(i.createMuiTheme)({palette:{primary:s.blue,secondary:s.red},typography:{useNextVariants:!0}});Object(a.render)(o.a.createElement(function(){var e="https://www.npmjs.com/package/".concat(u.name),t=u.repository.url,n="".concat(t,"/blob/master/README.md"),r="".concat(t,"/blob/master/CHANGELOG.md");return o.a.createElement(i.MuiThemeProvider,{theme:Ae},o.a.createElement(l.w,{component:"div",style:{maxWidth:"850px",margin:"0 auto",paddingBottom:"500px"}},o.a.createElement(l.w,{variant:"h2"},"Material Multi Picker ",u.version),o.a.createElement("div",null,o.a.createElement(l.k,{href:u.repository.url},"Github")," · ",o.a.createElement(l.k,{href:e},"NPM")," · ",o.a.createElement(l.k,{href:n},"Readme")," · ",o.a.createElement(l.k,{href:r},"Changelog")),o.a.createElement(D,{title:"Simple synchronous suggestion list",DemoComponent:B.a}),o.a.createElement(D,{title:"Chips wrap onto multiple lines",DemoComponent:U.a}),o.a.createElement(D,{title:"Can be disabled",DemoComponent:H.a}),o.a.createElement(D,{title:"Shows error state",DemoComponent:G.a}),o.a.createElement(D,{title:"Clearing the input field on blur",DemoComponent:he.a}),o.a.createElement(l.w,{variant:"h4"},"Providing suggestions"),o.a.createElement(D,{title:"Minimum input length for suggestions",DemoComponent:$.a}),o.a.createElement(D,{title:"Asynchronous suggestion list",DemoComponent:X.a}),o.a.createElement(D,{title:"Throttling requests",DemoComponent:Q.a}),o.a.createElement(D,{title:"Handle suggestion fetch errors",DemoComponent:ee.a}),o.a.createElement(D,{title:"Dynamically generated suggestions",DemoComponent:ne.a}),o.a.createElement(D,{title:"Scrollable dropdown",DemoComponent:K.a}),o.a.createElement(l.w,{variant:"h4"},"Customising presentation"),o.a.createElement(D,{title:"With helper text",DemoComponent:oe.a}),o.a.createElement(D,{title:"Required field indicator",DemoComponent:ie.a}),o.a.createElement(D,{title:"Custom field appearance",DemoComponent:se.a}),o.a.createElement(D,{title:"Custom suggestion components",DemoComponent:ce.a}),o.a.createElement(D,{title:"Custom chip appearance",DemoComponent:pe.a}),o.a.createElement(l.w,{variant:"h4"},"Performance"),o.a.createElement(D,{title:"Global cache",DemoComponent:me.a}),o.a.createElement(l.w,{variant:"h4"},"Sandbox"),o.a.createElement(Te,null)))},null),document.getElementById("docs"))}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy1idW5kbGUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZG9jcy1idW5kbGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9bi5tPWUsbi5jPXQsbi5kPWZ1bmN0aW9uKGUsdCxyKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLnI9ZnVuY3Rpb24oZSl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sbi50PWZ1bmN0aW9uKGUsdCl7aWYoMSZ0JiYoZT1uKGUpKSw4JnQpcmV0dXJuIGU7aWYoNCZ0JiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciByPU9iamVjdC5jcmVhdGUobnVsbCk7aWYobi5yKHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJnQmJlwic3RyaW5nXCIhPXR5cGVvZiBlKWZvcih2YXIgbyBpbiBlKW4uZChyLG8sZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19LmJpbmQobnVsbCxvKSk7cmV0dXJuIHJ9LG4ubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbi5kKHQsXCJhXCIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9XCJcIixuKG4ucz03MDkpfShbZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uKDI3MSl9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigzNDQpKCl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDEwNyksbz1uLm4ocik7bi5kKHQsXCJhXCIsZnVuY3Rpb24oKXtyZXR1cm4gby5hfSk7dmFyIGE9bigxMjgpLGk9bi5uKGEpO24uZCh0LFwiYlwiLGZ1bmN0aW9uKCl7cmV0dXJuIGkuYX0pO3ZhciBsPW4oMTMyKSxzPW4ubihsKTtuLmQodCxcImNcIixmdW5jdGlvbigpe3JldHVybiBzLmF9KTt2YXIgdT1uKDEzNCksYz1uLm4odSk7bi5kKHQsXCJkXCIsZnVuY3Rpb24oKXtyZXR1cm4gYy5hfSk7dmFyIGQ9big3MSkscD1uLm4oZCk7bi5kKHQsXCJlXCIsZnVuY3Rpb24oKXtyZXR1cm4gcC5hfSk7dmFyIGY9bigxMzUpLG09bi5uKGYpO24uZCh0LFwiZlwiLGZ1bmN0aW9uKCl7cmV0dXJuIG0uYX0pO3ZhciBnPW4oMTM2KSxoPW4ubihnKTtuLmQodCxcImdcIixmdW5jdGlvbigpe3JldHVybiBoLmF9KTt2YXIgYj1uKDc0KSx5PW4ubihiKTtuLmQodCxcImhcIixmdW5jdGlvbigpe3JldHVybiB5LmF9KTt2YXIgdj1uKDc1KSxTPW4ubih2KTtuLmQodCxcImlcIixmdW5jdGlvbigpe3JldHVybiBTLmF9KTt2YXIgRT1uKDEzNykseD1uLm4oRSk7bi5kKHQsXCJqXCIsZnVuY3Rpb24oKXtyZXR1cm4geC5hfSk7dmFyIHc9bigxMzgpLGs9bi5uKHcpO24uZCh0LFwia1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGsuYX0pO3ZhciBfPW4oMTM5KSxUPW4ubihfKTtuLmQodCxcImxcIixmdW5jdGlvbigpe3JldHVybiBULmF9KTt2YXIgQT1uKDgwKSxDPW4ubihBKTtuLmQodCxcIm1cIixmdW5jdGlvbigpe3JldHVybiBDLmF9KTt2YXIgTz1uKDgxKSxJPW4ubihPKTtuLmQodCxcIm5cIixmdW5jdGlvbigpe3JldHVybiBJLmF9KTt2YXIgTj1uKDg4KSxSPW4ubihOKTtuLmQodCxcIm9cIixmdW5jdGlvbigpe3JldHVybiBSLmF9KTt2YXIgUD1uKDE1MSksTT1uLm4oUCk7bi5kKHQsXCJwXCIsZnVuY3Rpb24oKXtyZXR1cm4gTS5hfSk7dmFyIEw9bigxNTIpLEQ9bi5uKEwpO24uZCh0LFwicVwiLGZ1bmN0aW9uKCl7cmV0dXJuIEQuYX0pO3ZhciBGPW4oMTU0KSxCPW4ubihGKTtuLmQodCxcInJcIixmdW5jdGlvbigpe3JldHVybiBCLmF9KTt2YXIgaj1uKDE1NSksVT1uLm4oaik7bi5kKHQsXCJzXCIsZnVuY3Rpb24oKXtyZXR1cm4gVS5hfSk7dmFyIHo9bigxNTYpLEg9bi5uKHopO24uZCh0LFwidFwiLGZ1bmN0aW9uKCl7cmV0dXJuIEguYX0pO3ZhciBXPW4oMTU3KSxHPW4ubihXKTtuLmQodCxcInVcIixmdW5jdGlvbigpe3JldHVybiBHLmF9KTt2YXIgVj1uKDE1OCksJD1uLm4oVik7bi5kKHQsXCJ2XCIsZnVuY3Rpb24oKXtyZXR1cm4gJC5hfSk7dmFyIHE9big1MiksSz1uLm4ocSk7bi5kKHQsXCJ3XCIsZnVuY3Rpb24oKXtyZXR1cm4gSy5hfSl9LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3JldHVybiBlLmV4cG9ydHM9bj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMzU4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLG8sYT1yKGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iobz0wO288aS5sZW5ndGg7bysrKW49aVtvXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYoYVtuXT1lW25dKX1yZXR1cm4gYX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtcbi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTcgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTcgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbiFmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBuPXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIG8oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtpZihyKXt2YXIgYT10eXBlb2YgcjtpZihcInN0cmluZ1wiPT09YXx8XCJudW1iZXJcIj09PWEpZS5wdXNoKHIpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShyKSYmci5sZW5ndGgpe3ZhciBpPW8uYXBwbHkobnVsbCxyKTtpJiZlLnB1c2goaSl9ZWxzZSBpZihcIm9iamVjdFwiPT09YSlmb3IodmFyIGwgaW4gciluLmNhbGwocixsKSYmcltsXSYmZS5wdXNoKGwpfX1yZXR1cm4gZS5qb2luKFwiIFwiKX1lLmV4cG9ydHM/KG8uZGVmYXVsdD1vLGUuZXhwb3J0cz1vKTp2b2lkIDA9PT0ocj1mdW5jdGlvbigpe3JldHVybiBvfS5hcHBseSh0LFtdKSl8fChlLmV4cG9ydHM9cil9KCl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCk7dmFyIHI9bigxMDkpLG89bi5uKHIpO24uZCh0LFwiY29tcG9uZW50UHJvcFR5cGVcIixmdW5jdGlvbigpe3JldHVybiBvLmF9KTt2YXIgYT1uKDExMCksaT1uLm4oYSk7bi5kKHQsXCJjaGFpblByb3BUeXBlc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGkuYX0pO3ZhciBsPW4oMTExKSxzPW4ubihsKTtuLmQodCxcImV4YWN0UHJvcFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHMuYX0pO3ZhciB1PW4oMTEyKSxjPW4ubih1KTtuLmQodCxcImdldERpc3BsYXlOYW1lXCIsZnVuY3Rpb24oKXtyZXR1cm4gYy5hfSk7dmFyIGQ9bigxMTMpLHA9bi5uKGQpO24uZCh0LFwicG9ueWZpbGxHbG9iYWxcIixmdW5jdGlvbigpe3JldHVybiBwLmF9KX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc2hlZXRzTWFuYWdlcj12b2lkIDA7dmFyIG89cihuKDkpKSxhPXIobig0KSksaT1yKG4oMTIpKSxsPXIobigxMykpLHM9cihuKDE0KSksdT1yKG4oMTUpKSxjPXIobigxNikpLGQ9cihuKDUpKSxwPXIobigwKSksZj1yKG4oMSkpLG09KHIobigxNykpLHIobig2MykpKSxnPW4oNyksaD1uKDExNCksYj1yKG4oMzgwKSkseT1yKG4oMTIwKSksdj1yKG4oMTIxKSksUz1yKG4oMzkzKSksRT1yKG4oNjcpKSx4PXIobig2OSkpLHc9cihuKDEyNykpLGs9cihuKDQwNCkpLF89cihuKDQwNSkpLFQ9KDAsaC5jcmVhdGUpKCgwLHkuZGVmYXVsdCkoKSksQT0oMCx3LmRlZmF1bHQpKCksQz0tMWUxMSxPPW5ldyBNYXA7dC5zaGVldHNNYW5hZ2VyPU87dmFyIEk9e30sTj0oMCxFLmRlZmF1bHQpKHt0eXBvZ3JhcGh5OntzdXBwcmVzc1dhcm5pbmc6ITB9fSk7Zy5wb255ZmlsbEdsb2JhbC5fX01VSV9TVFlMRVNfX3x8KGcucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX189e30pLGcucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX18ud2l0aFN0eWxlc3x8KGcucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX18ud2l0aFN0eWxlcz1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLGc9dC53aXRoVGhlbWUsaD12b2lkIDAhPT1nJiZnLHk9dC5mbGlwLEU9dm9pZCAwPT09eT9udWxsOnksdz10Lm5hbWUsUj0oMCxkLmRlZmF1bHQpKHQsW1wid2l0aFRoZW1lXCIsXCJmbGlwXCIsXCJuYW1lXCJdKSxQPSgwLGsuZGVmYXVsdCkoZSksTT1QLnRoZW1pbmdFbmFibGVkfHxcInN0cmluZ1wiPT10eXBlb2Ygd3x8aDtDKz0xLFAub3B0aW9ucy5pbmRleD1DO3ZhciBMPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSxuKXt2YXIgcjsoMCxpLmRlZmF1bHQpKHRoaXMsdCksKHI9KDAscy5kZWZhdWx0KSh0aGlzLCgwLHUuZGVmYXVsdCkodCkuY2FsbCh0aGlzLGUsbikpKS5qc3M9bltiLmRlZmF1bHQuanNzXXx8VCxyLnNoZWV0c01hbmFnZXI9TyxyLnVuc3Vic2NyaWJlSWQ9bnVsbDt2YXIgbz1uLm11aVRoZW1lUHJvdmlkZXJPcHRpb25zO3JldHVybiBvJiYoby5zaGVldHNNYW5hZ2VyJiYoci5zaGVldHNNYW5hZ2VyPW8uc2hlZXRzTWFuYWdlciksci5zaGVldHNDYWNoZT1vLnNoZWV0c0NhY2hlLHIuZGlzYWJsZVN0eWxlc0dlbmVyYXRpb249by5kaXNhYmxlU3R5bGVzR2VuZXJhdGlvbiksci5zdHlsZXNDcmVhdG9yU2F2ZWQ9UCxyLnNoZWV0T3B0aW9ucz0oMCxhLmRlZmF1bHQpKHtnZW5lcmF0ZUNsYXNzTmFtZTpBfSxuW2IuZGVmYXVsdC5zaGVldE9wdGlvbnNdKSxyLnRoZW1lPU0/eC5kZWZhdWx0LmluaXRpYWwobil8fE46SSxyLmF0dGFjaChyLnRoZW1lKSxyLmNhY2hlQ2xhc3Nlcz17dmFsdWU6bnVsbCxsYXN0UHJvcDpudWxsLGxhc3RKU1M6e319LHJ9cmV0dXJuKDAsYy5kZWZhdWx0KSh0LGUpLCgwLGwuZGVmYXVsdCkodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO00mJih0aGlzLnVuc3Vic2NyaWJlSWQ9eC5kZWZhdWx0LnN1YnNjcmliZSh0aGlzLmNvbnRleHQsZnVuY3Rpb24odCl7dmFyIG49ZS50aGVtZTtlLnRoZW1lPXQsZS5hdHRhY2goZS50aGVtZSksZS5zZXRTdGF0ZSh7fSxmdW5jdGlvbigpe2UuZGV0YWNoKG4pfSl9KSl9fSx7a2V5OlwiY29tcG9uZW50RGlkVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlc0NyZWF0b3JTYXZlZH19LHtrZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kZXRhY2godGhpcy50aGVtZSksbnVsbCE9PXRoaXMudW5zdWJzY3JpYmVJZCYmeC5kZWZhdWx0LnVuc3Vic2NyaWJlKHRoaXMuY29udGV4dCx0aGlzLnVuc3Vic2NyaWJlSWQpfX0se2tleTpcImdldENsYXNzZXNcIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuZGlzYWJsZVN0eWxlc0dlbmVyYXRpb24pcmV0dXJuIHRoaXMucHJvcHMuY2xhc3Nlc3x8e307dmFyIGU9ITEsdD1TLmRlZmF1bHQuZ2V0KHRoaXMuc2hlZXRzTWFuYWdlcix0aGlzLnN0eWxlc0NyZWF0b3JTYXZlZCx0aGlzLnRoZW1lKTtyZXR1cm4gdC5zaGVldC5jbGFzc2VzIT09dGhpcy5jYWNoZUNsYXNzZXMubGFzdEpTUyYmKHRoaXMuY2FjaGVDbGFzc2VzLmxhc3RKU1M9dC5zaGVldC5jbGFzc2VzLGU9ITApLHRoaXMucHJvcHMuY2xhc3NlcyE9PXRoaXMuY2FjaGVDbGFzc2VzLmxhc3RQcm9wJiYodGhpcy5jYWNoZUNsYXNzZXMubGFzdFByb3A9dGhpcy5wcm9wcy5jbGFzc2VzLGU9ITApLGUmJih0aGlzLmNhY2hlQ2xhc3Nlcy52YWx1ZT0oMCx2LmRlZmF1bHQpKHtiYXNlQ2xhc3Nlczp0aGlzLmNhY2hlQ2xhc3Nlcy5sYXN0SlNTLG5ld0NsYXNzZXM6dGhpcy5wcm9wcy5jbGFzc2VzLENvbXBvbmVudDpufSkpLHRoaXMuY2FjaGVDbGFzc2VzLnZhbHVlfX0se2tleTpcImF0dGFjaFwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLmRpc2FibGVTdHlsZXNHZW5lcmF0aW9uKXt2YXIgdD10aGlzLnN0eWxlc0NyZWF0b3JTYXZlZCxuPVMuZGVmYXVsdC5nZXQodGhpcy5zaGVldHNNYW5hZ2VyLHQsZSk7aWYobnx8KG49e3JlZnM6MCxzaGVldDpudWxsfSxTLmRlZmF1bHQuc2V0KHRoaXMuc2hlZXRzTWFuYWdlcix0LGUsbikpLDA9PT1uLnJlZnMpe3ZhciByO3RoaXMuc2hlZXRzQ2FjaGUmJihyPVMuZGVmYXVsdC5nZXQodGhpcy5zaGVldHNDYWNoZSx0LGUpKSxyfHwoKHI9dGhpcy5jcmVhdGVTaGVldChlKSkuYXR0YWNoKCksdGhpcy5zaGVldHNDYWNoZSYmUy5kZWZhdWx0LnNldCh0aGlzLnNoZWV0c0NhY2hlLHQsZSxyKSksbi5zaGVldD1yO3ZhciBvPXRoaXMuY29udGV4dFtiLmRlZmF1bHQuc2hlZXRzUmVnaXN0cnldO28mJm8uYWRkKHIpfW4ucmVmcys9MX19fSx7a2V5OlwiY3JlYXRlU2hlZXRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0eWxlc0NyZWF0b3JTYXZlZC5jcmVhdGUoZSx3KSxyPXc7cmV0dXJuIHRoaXMuanNzLmNyZWF0ZVN0eWxlU2hlZXQodCwoMCxhLmRlZmF1bHQpKHttZXRhOnIsY2xhc3NOYW1lUHJlZml4OnIsZmxpcDpcImJvb2xlYW5cIj09dHlwZW9mIEU/RTpcInJ0bFwiPT09ZS5kaXJlY3Rpb24sbGluazohMX0sdGhpcy5zaGVldE9wdGlvbnMsdGhpcy5zdHlsZXNDcmVhdG9yU2F2ZWQub3B0aW9ucyx7bmFtZTp3fHxuLmRpc3BsYXlOYW1lfSxSKSl9fSx7a2V5OlwiZGV0YWNoXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZGlzYWJsZVN0eWxlc0dlbmVyYXRpb24pe3ZhciB0PVMuZGVmYXVsdC5nZXQodGhpcy5zaGVldHNNYW5hZ2VyLHRoaXMuc3R5bGVzQ3JlYXRvclNhdmVkLGUpO2lmKHQucmVmcy09MSwwPT09dC5yZWZzKXtTLmRlZmF1bHQuZGVsZXRlKHRoaXMuc2hlZXRzTWFuYWdlcix0aGlzLnN0eWxlc0NyZWF0b3JTYXZlZCxlKSx0aGlzLmpzcy5yZW1vdmVTdHlsZVNoZWV0KHQuc2hlZXQpO3ZhciBuPXRoaXMuY29udGV4dFtiLmRlZmF1bHQuc2hlZXRzUmVnaXN0cnldO24mJm4ucmVtb3ZlKHQuc2hlZXQpfX19fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9KGUuY2xhc3NlcyxlLmlubmVyUmVmKSxyPSgwLGQuZGVmYXVsdCkoZSxbXCJjbGFzc2VzXCIsXCJpbm5lclJlZlwiXSksbz0oMCxfLmRlZmF1bHQpKHt0aGVtZTp0aGlzLnRoZW1lLG5hbWU6dyxwcm9wczpyfSk7cmV0dXJuIGgmJiFvLnRoZW1lJiYoby50aGVtZT10aGlzLnRoZW1lKSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChuLCgwLGEuZGVmYXVsdCkoe30sbyx7Y2xhc3Nlczp0aGlzLmdldENsYXNzZXMoKSxyZWY6dH0pKX19XSksdH0ocC5kZWZhdWx0LkNvbXBvbmVudCk7cmV0dXJuIEwuY29udGV4dFR5cGVzPSgwLGEuZGVmYXVsdCkoKHI9e211aVRoZW1lUHJvdmlkZXJPcHRpb25zOmYuZGVmYXVsdC5vYmplY3R9LCgwLG8uZGVmYXVsdCkocixiLmRlZmF1bHQuanNzLGYuZGVmYXVsdC5vYmplY3QpLCgwLG8uZGVmYXVsdCkocixiLmRlZmF1bHQuc2hlZXRPcHRpb25zLGYuZGVmYXVsdC5vYmplY3QpLCgwLG8uZGVmYXVsdCkocixiLmRlZmF1bHQuc2hlZXRzUmVnaXN0cnksZi5kZWZhdWx0Lm9iamVjdCksciksTT94LmRlZmF1bHQuY29udGV4dFR5cGVzOnt9KSwoMCxtLmRlZmF1bHQpKEwsbiksTH19KTt0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZy5wb255ZmlsbEdsb2JhbC5fX01VSV9TVFlMRVNfXy53aXRoU3R5bGVzKGUsKDAsYS5kZWZhdWx0KSh7ZGVmYXVsdFRoZW1lOk59LHQpKX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDE3Miksbz1uLm4ociksYT1uKDE3MyksaT1uLm4oYSksbD1uKDE3NCkscz1uLm4obCksdT1uKDE3NSksYz1uLm4odSksZD1uKDE3NikscD1uLm4oZCksZj1uKDE3NyksbT1uLm4oZiksZz1uKDE3OCksaD1uLm4oZyksYj1uKDE3OSkseT1uLm4oYiksdj1uKDE4MCksUz1uLm4odiksRT1uKDE4MSkseD1uLm4oRSksdz1uKDE4Miksaz1uLm4odyk7bi5kKHQsXCJhXCIsZnVuY3Rpb24oKXtyZXR1cm4gX30pLG4uZCh0LFwiYlwiLGZ1bmN0aW9uKCl7cmV0dXJuIFR9KTt2YXIgXz1be25hbWU6XCJhcHBsZVwiLHN0b2NrOjAsaW1hZ2U6by5hLGRldGFpbDpcIktlZXBzIHRoZSBkb2N0b3IgYXdheVwifSx7bmFtZTpcInBlYXJcIixzdG9jazoxNCxpbWFnZTppLmEsZGV0YWlsOlwiVGhlIHRhc3RpZXN0IGZydWl0IGluIHRoZSB3b3JsZFwifSx7bmFtZTpcImJhbmFuYVwiLHN0b2NrOjI4MixpbWFnZTpzLmEsZGV0YWlsOlwiRnVsbCBvZiBsb3ZlbHkgcG90YXNzaXVtIVwifSx7bmFtZTpcIm1lbG9uXCIsc3RvY2s6ODEsaW1hZ2U6cC5hLGRldGFpbDpcIkF2YWlsYWJsZSBpbiBtYW55IGRpZmZlcmVudCBmbGF2b3Vyc1wifSx7bmFtZTpcInJhc3BiZXJyeVwiLHN0b2NrOjQyMixpbWFnZTpjLmEsZGV0YWlsOlwiVGVjaG5pY2FsbHkgbm90IGEgYmVycnksIGJ1dCB3aGF0ZXZzXCJ9LHtuYW1lOlwiZ3JhcGVzXCIsc3RvY2s6MTA5LGltYWdlOm0uYSxkZXRhaWw6XCJZb3UgY291bGQgdGhlb3JldGljYWxseSBtYWtlIHdpbmVcIn0se25hbWU6XCJwb21lZ3JhbmF0ZVwiLHN0b2NrOjc1LGltYWdlOnkuYSxkZXRhaWw6XCJOby1vbmUga25vd3Mgd2hhdCB0aGVzZSBhcmVcIn0se25hbWU6XCJ0b21hdG9cIixzdG9jazo1LGltYWdlOnguYSxkZXRhaWw6XCJUaGlzIGlzIGRlZmluaXRlbHkgYSBmcnVpdCwgZ2V0IG9mZiBteSBjYXNlXCJ9LHtuYW1lOlwibGVtb25cIixzdG9jazo3NSxpbWFnZTprLmEsZGV0YWlsOlwiV2hlbiBsaWZlIGdpdmUgeW91IGxlbW9ucywgc29tZXRoaW5nIHNvbWV0aGluZyBncmVuYWRlXCJ9LHtuYW1lOlwicGx1bVwiLHN0b2NrOjIsaW1hZ2U6aC5hLGRldGFpbDpcIk5vdCBhcyBnb29kIGFzIGEgbmVjdGFyaW5lLCBkZWFsIHdpdGggaXRcIn0se25hbWU6XCJ3YXRlcm1lbG9uXCIsc3RvY2s6MTA0NSxpbWFnZTpTLmEsZGV0YWlsOlwiU29vb28gcmVmcmVzaGluZyBvbiBhIGhvdCBkYXlcIn1dO2Z1bmN0aW9uIFQoZSl7cmV0dXJuIF8uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhlLnRvTG93ZXJDYXNlKCkpfSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigwKSxvPW4ubihyKTtmdW5jdGlvbiBhKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfWZ1bmN0aW9uIGkoKXtyZXR1cm4oaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGwoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9dmFyIHM9bigxKTtuKDM5KTtmdW5jdGlvbiB1KGUpe3JldHVybiBudWxsIT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmMT09PWUubm9kZVR5cGV9ZnVuY3Rpb24gYyhlLHQpe3JldHVybighdHx8XCJoaWRkZW5cIiE9PWUpJiYoXCJ2aXNpYmxlXCIhPT1lJiZcImNsaXBcIiE9PWUpfWZ1bmN0aW9uIGQoZSx0KXtpZihlLmNsaWVudEhlaWdodDxlLnNjcm9sbEhlaWdodHx8ZS5jbGllbnRXaWR0aDxlLnNjcm9sbFdpZHRoKXt2YXIgbj1nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCk7cmV0dXJuIGMobi5vdmVyZmxvd1ksdCl8fGMobi5vdmVyZmxvd1gsdCl9cmV0dXJuITF9ZnVuY3Rpb24gcChlLHQsbixyLG8sYSxpLGwpe3JldHVybiBhPGUmJmk+dHx8YT5lJiZpPHQ/MDphPD1lJiZsPD1ufHxpPj10JiZsPj1uP2EtZS1yOmk+dCYmbDxufHxhPGUmJmw+bj9pLXQrbzowfXZhciBmPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zY3JvbGxNb2RlLHI9dC5ibG9jayxvPXQuaW5saW5lLGE9dC5ib3VuZGFyeSxpPXQuc2tpcE92ZXJmbG93SGlkZGVuRWxlbWVudHMsbD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBhP2E6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT1hfTtpZighdShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCB0YXJnZXRcIik7Zm9yKHZhciBzPWRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxjPVtdLGY9ZTt1KGYpJiZsKGYpOyl7aWYoKGY9Zi5wYXJlbnROb2RlKT09PXMpe2MucHVzaChmKTticmVha31mPT09ZG9jdW1lbnQuYm9keSYmZChmKSYmIWQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KXx8ZChmLGkpJiZjLnB1c2goZil9Zm9yKHZhciBtPXdpbmRvdy52aXN1YWxWaWV3cG9ydD92aXN1YWxWaWV3cG9ydC53aWR0aDppbm5lcldpZHRoLGc9d2luZG93LnZpc3VhbFZpZXdwb3J0P3Zpc3VhbFZpZXdwb3J0LmhlaWdodDppbm5lckhlaWdodCxoPXdpbmRvdy5zY3JvbGxYfHxwYWdlWE9mZnNldCxiPXdpbmRvdy5zY3JvbGxZfHxwYWdlWU9mZnNldCx5PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdj15LmhlaWdodCxTPXkud2lkdGgsRT15LnRvcCx4PXkucmlnaHQsdz15LmJvdHRvbSxrPXkubGVmdCxfPVwic3RhcnRcIj09PXJ8fFwibmVhcmVzdFwiPT09cj9FOlwiZW5kXCI9PT1yP3c6RSt2LzIsVD1cImNlbnRlclwiPT09bz9rK1MvMjpcImVuZFwiPT09bz94OmssQT1bXSxDPTA7QzxjLmxlbmd0aDtDKyspe3ZhciBPPWNbQ10sST1PLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLE49SS5oZWlnaHQsUj1JLndpZHRoLFA9SS50b3AsTT1JLnJpZ2h0LEw9SS5ib3R0b20sRD1JLmxlZnQ7aWYoXCJpZi1uZWVkZWRcIj09PW4mJkU+PTAmJms+PTAmJnc8PWcmJng8PW0mJkU+PVAmJnc8PUwmJms+PUQmJng8PU0pcmV0dXJuIEE7dmFyIEY9Z2V0Q29tcHV0ZWRTdHlsZShPKSxCPXBhcnNlSW50KEYuYm9yZGVyTGVmdFdpZHRoLDEwKSxqPXBhcnNlSW50KEYuYm9yZGVyVG9wV2lkdGgsMTApLFU9cGFyc2VJbnQoRi5ib3JkZXJSaWdodFdpZHRoLDEwKSx6PXBhcnNlSW50KEYuYm9yZGVyQm90dG9tV2lkdGgsMTApLEg9MCxXPTAsRz1cIm9mZnNldFdpZHRoXCJpbiBPP08ub2Zmc2V0V2lkdGgtTy5jbGllbnRXaWR0aC1CLVU6MCxWPVwib2Zmc2V0SGVpZ2h0XCJpbiBPP08ub2Zmc2V0SGVpZ2h0LU8uY2xpZW50SGVpZ2h0LWotejowO2lmKHM9PT1PKUg9XCJzdGFydFwiPT09cj9fOlwiZW5kXCI9PT1yP18tZzpcIm5lYXJlc3RcIj09PXI/cChiLGIrZyxnLGoseixiK18sYitfK3Ysdik6Xy1nLzIsVz1cInN0YXJ0XCI9PT1vP1Q6XCJjZW50ZXJcIj09PW8/VC1tLzI6XCJlbmRcIj09PW8/VC1tOnAoaCxoK20sbSxCLFUsaCtULGgrVCtTLFMpLEg9TWF0aC5tYXgoMCxIK2IpLFc9TWF0aC5tYXgoMCxXK2gpO2Vsc2V7SD1cInN0YXJ0XCI9PT1yP18tUC1qOlwiZW5kXCI9PT1yP18tTCt6K1Y6XCJuZWFyZXN0XCI9PT1yP3AoUCxMLE4saix6K1YsXyxfK3Ysdik6Xy0oUCtOLzIpK1YvMixXPVwic3RhcnRcIj09PW8/VC1ELUI6XCJjZW50ZXJcIj09PW8/VC0oRCtSLzIpK0cvMjpcImVuZFwiPT09bz9ULU0rVStHOnAoRCxNLFIsQixVK0csVCxUK1MsUyk7dmFyICQ9Ty5zY3JvbGxMZWZ0LHE9Ty5zY3JvbGxUb3A7Xys9cS0oSD1NYXRoLm1heCgwLE1hdGgubWluKHErSCxPLnNjcm9sbEhlaWdodC1OK1YpKSksVCs9JC0oVz1NYXRoLm1heCgwLE1hdGgubWluKCQrVyxPLnNjcm9sbFdpZHRoLVIrRykpKX1BLnB1c2goe2VsOk8sdG9wOkgsbGVmdDpXfSl9cmV0dXJuIEF9LG09XCJ1bmRlZmluZWRcIj09dHlwZW9mIGRvY3VtZW50P251bGw6ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhMTF5LXN0YXR1cy1tZXNzYWdlXCIpLGc9W107ZnVuY3Rpb24gaChlKXt2YXIgdD1nW2cubGVuZ3RoLTFdPT09ZTtnPXQ/W10uY29uY2F0KGcsW2VdKTpbZV07Zm9yKHZhciBuPWZ1bmN0aW9uKCl7aWYobSlyZXR1cm4gbTtyZXR1cm4obT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiYTExeS1zdGF0dXMtbWVzc2FnZVwiKSxtLnNldEF0dHJpYnV0ZShcInJvbGVcIixcInN0YXR1c1wiKSxtLnNldEF0dHJpYnV0ZShcImFyaWEtbGl2ZVwiLFwicG9saXRlXCIpLG0uc2V0QXR0cmlidXRlKFwiYXJpYS1yZWxldmFudFwiLFwiYWRkaXRpb25zIHRleHRcIiksT2JqZWN0LmFzc2lnbihtLnN0eWxlLHtib3JkZXI6XCIwXCIsY2xpcDpcInJlY3QoMCAwIDAgMClcIixoZWlnaHQ6XCIxcHhcIixtYXJnaW46XCItMXB4XCIsb3ZlcmZsb3c6XCJoaWRkZW5cIixwYWRkaW5nOlwiMFwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIix3aWR0aDpcIjFweFwifSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtKSxtfSgpO24ubGFzdENoaWxkOyluLnJlbW92ZUNoaWxkKG4uZmlyc3RDaGlsZCk7Zy5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChmdW5jdGlvbihlLHQpe24uYXBwZW5kQ2hpbGQoZnVuY3Rpb24oZSx0KXt2YXIgbj10PT09Zy5sZW5ndGgtMT9cImJsb2NrXCI6XCJub25lXCIscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3JldHVybiByLnN0eWxlLmRpc3BsYXk9bixyLnRleHRDb250ZW50PWUscn0oZSx0KSl9KX12YXIgYj0wLHk9Mix2PTMsUz00LEU9NSx4PTYsdz03LGs9OCxfPTksVD0xMCxBPTExLEM9MTIsTz0xMyxJPTE0LE49T2JqZWN0LmZyZWV6ZSh7dW5rbm93bjpiLG1vdXNlVXA6MSxpdGVtTW91c2VFbnRlcjp5LGtleURvd25BcnJvd1VwOnYsa2V5RG93bkFycm93RG93bjpTLGtleURvd25Fc2NhcGU6RSxrZXlEb3duRW50ZXI6eCxrZXlEb3duSG9tZTp3LGtleURvd25FbmQ6ayxjbGlja0l0ZW06XyxibHVySW5wdXQ6VCxjaGFuZ2VJbnB1dDpBLGtleURvd25TcGFjZUJ1dHRvbjpDLGNsaWNrQnV0dG9uOk8sYmx1ckJ1dHRvbjpJLGNvbnRyb2xsZWRQcm9wVXBkYXRlZFNlbGVjdGVkSXRlbToxNSx0b3VjaEVuZDoxNn0pLFI9MDtmdW5jdGlvbiBQKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZTpNfWZ1bmN0aW9uIE0oKXt9ZnVuY3Rpb24gTChlLHQpe3JldHVybiBlPT09dHx8ZS5jb250YWlucyYmZS5jb250YWlucyh0KX1mdW5jdGlvbiBEKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4+MT9uLTE6MCksbz0xO288bjtvKyspcltvLTFdPWFyZ3VtZW50c1tvXTtyZXR1cm4gdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0LmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KHIpKSxlLnByZXZlbnREb3duc2hpZnREZWZhdWx0fHxlLmhhc093blByb3BlcnR5KFwibmF0aXZlRXZlbnRcIikmJmUubmF0aXZlRXZlbnQucHJldmVudERvd25zaGlmdERlZmF1bHR9KX19ZnVuY3Rpb24gRihlLHQpe3JldHVybiEoZT1BcnJheS5pc0FycmF5KGUpP2VbMF06ZSkmJnQ/dDplfWZ1bmN0aW9uIEIoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUudHlwZX1mdW5jdGlvbiBqKGUpe3JldHVybiBlLnByb3BzfXZhciBVPVtcImhpZ2hsaWdodGVkSW5kZXhcIixcImlucHV0VmFsdWVcIixcImlzT3BlblwiLFwic2VsZWN0ZWRJdGVtXCIsXCJ0eXBlXCJdO2Z1bmN0aW9uIHooZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciB0PXt9O3JldHVybiBVLmZvckVhY2goZnVuY3Rpb24obil7ZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9KSx0fWZ1bmN0aW9uIEgoZSl7dmFyIHQ9ZS5rZXksbj1lLmtleUNvZGU7cmV0dXJuIG4+PTM3JiZuPD00MCYmMCE9PXQuaW5kZXhPZihcIkFycm93XCIpP1wiQXJyb3dcIit0OnR9ZnVuY3Rpb24gVyhlLHQsbil7dmFyIHI9bi0xOyhcIm51bWJlclwiIT10eXBlb2YgdHx8dDwwfHx0Pj1uKSYmKHQ9ZT4wPy0xOnIrMSk7dmFyIG89dCtlO3JldHVybiBvPDA/bz1yOm8+ciYmKG89MCksb312YXIgRz1mdW5jdGlvbihlKXt2YXIgdCxuO2Z1bmN0aW9uIHIodCl7dmFyIG49ZS5jYWxsKHRoaXMsdCl8fHRoaXM7bi5pZD1uLnByb3BzLmlkfHxcImRvd25zaGlmdC1cIitTdHJpbmcoUisrKSxuLm1lbnVJZD1uLnByb3BzLm1lbnVJZHx8bi5pZCtcIi1tZW51XCIsbi5sYWJlbElkPW4ucHJvcHMubGFiZWxJZHx8bi5pZCtcIi1sYWJlbFwiLG4uaW5wdXRJZD1uLnByb3BzLmlucHV0SWR8fG4uaWQrXCItaW5wdXRcIixuLmdldEl0ZW1JZD1uLnByb3BzLmdldEl0ZW1JZHx8ZnVuY3Rpb24oZSl7cmV0dXJuIG4uaWQrXCItaXRlbS1cIitlfSxuLmlucHV0PW51bGwsbi5pdGVtcz1bXSxuLml0ZW1Db3VudD1udWxsLG4ucHJldmlvdXNSZXN1bHRDb3VudD0wLG4udGltZW91dElkcz1bXSxuLmludGVybmFsU2V0VGltZW91dD1mdW5jdGlvbihlLHQpe3ZhciByPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLnRpbWVvdXRJZHM9bi50aW1lb3V0SWRzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9PXJ9KSxlKCl9LHQpO24udGltZW91dElkcy5wdXNoKHIpfSxuLnNldEl0ZW1Db3VudD1mdW5jdGlvbihlKXtuLml0ZW1Db3VudD1lfSxuLnVuc2V0SXRlbUNvdW50PWZ1bmN0aW9uKCl7bi5pdGVtQ291bnQ9bnVsbH0sbi5zZXRIaWdobGlnaHRlZEluZGV4PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09ZSYmKGU9bi5wcm9wcy5kZWZhdWx0SGlnaGxpZ2h0ZWRJbmRleCksdm9pZCAwPT09dCYmKHQ9e30pLHQ9eih0KSxuLmludGVybmFsU2V0U3RhdGUoaSh7aGlnaGxpZ2h0ZWRJbmRleDplfSx0KSl9LG4uY2xlYXJTZWxlY3Rpb249ZnVuY3Rpb24oZSl7bi5pbnRlcm5hbFNldFN0YXRlKHtzZWxlY3RlZEl0ZW06bnVsbCxpbnB1dFZhbHVlOlwiXCIsaGlnaGxpZ2h0ZWRJbmRleDpuLnByb3BzLmRlZmF1bHRIaWdobGlnaHRlZEluZGV4LGlzT3BlbjpuLnByb3BzLmRlZmF1bHRJc09wZW59LGUpfSxuLnNlbGVjdEl0ZW09ZnVuY3Rpb24oZSx0LHIpe3Q9eih0KSxuLmludGVybmFsU2V0U3RhdGUoaSh7aXNPcGVuOm4ucHJvcHMuZGVmYXVsdElzT3BlbixoaWdobGlnaHRlZEluZGV4Om4ucHJvcHMuZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXgsc2VsZWN0ZWRJdGVtOmUsaW5wdXRWYWx1ZTpuLnByb3BzLml0ZW1Ub1N0cmluZyhlKX0sdCkscil9LG4uc2VsZWN0SXRlbUF0SW5kZXg9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPW4uaXRlbXNbZV07bnVsbCE9byYmbi5zZWxlY3RJdGVtKG8sdCxyKX0sbi5zZWxlY3RIaWdobGlnaHRlZEl0ZW09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5zZWxlY3RJdGVtQXRJbmRleChuLmdldFN0YXRlKCkuaGlnaGxpZ2h0ZWRJbmRleCxlLHQpfSxuLmludGVybmFsU2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgcixvLGE9e30sbD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlO3JldHVybiFsJiZlLmhhc093blByb3BlcnR5KFwiaW5wdXRWYWx1ZVwiKSYmbi5wcm9wcy5vbklucHV0VmFsdWVDaGFuZ2UoZS5pbnB1dFZhbHVlLGkoe30sbi5nZXRTdGF0ZUFuZEhlbHBlcnMoKSxlKSksbi5zZXRTdGF0ZShmdW5jdGlvbih0KXt0PW4uZ2V0U3RhdGUodCk7dmFyIHM9bD9lKHQpOmU7cz1uLnByb3BzLnN0YXRlUmVkdWNlcih0LHMpLHI9cy5oYXNPd25Qcm9wZXJ0eShcInNlbGVjdGVkSXRlbVwiKTt2YXIgdT17fSxjPXt9O3JldHVybiByJiZzLnNlbGVjdGVkSXRlbSE9PXQuc2VsZWN0ZWRJdGVtJiYobz1zLnNlbGVjdGVkSXRlbSkscy50eXBlPXMudHlwZXx8YixPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV0hPT1zW2VdJiYoYVtlXT1zW2VdKSxcInR5cGVcIiE9PWUmJihjW2VdPXNbZV0sbi5pc0NvbnRyb2xsZWRQcm9wKGUpfHwodVtlXT1zW2VdKSl9KSxsJiZzLmhhc093blByb3BlcnR5KFwiaW5wdXRWYWx1ZVwiKSYmbi5wcm9wcy5vbklucHV0VmFsdWVDaGFuZ2Uocy5pbnB1dFZhbHVlLGkoe30sbi5nZXRTdGF0ZUFuZEhlbHBlcnMoKSxzKSksdX0sZnVuY3Rpb24oKXtQKHQpKCksT2JqZWN0LmtleXMoYSkubGVuZ3RoPjEmJm4ucHJvcHMub25TdGF0ZUNoYW5nZShhLG4uZ2V0U3RhdGVBbmRIZWxwZXJzKCkpLHImJm4ucHJvcHMub25TZWxlY3QoZS5zZWxlY3RlZEl0ZW0sbi5nZXRTdGF0ZUFuZEhlbHBlcnMoKSksdm9pZCAwIT09byYmbi5wcm9wcy5vbkNoYW5nZShvLG4uZ2V0U3RhdGVBbmRIZWxwZXJzKCkpLG4ucHJvcHMub25Vc2VyQWN0aW9uKGEsbi5nZXRTdGF0ZUFuZEhlbHBlcnMoKSl9KX0sbi5yb290UmVmPWZ1bmN0aW9uKGUpe3JldHVybiBuLl9yb290Tm9kZT1lfSxuLmdldFJvb3RQcm9wcz1mdW5jdGlvbihlLHQpe3ZhciByLG89dm9pZCAwPT09ZT97fTplLGw9by5yZWZLZXkscz12b2lkIDA9PT1sP1wicmVmXCI6bCx1PWEobyxbXCJyZWZLZXlcIl0pLGM9KHZvaWQgMD09PXQ/e306dCkuc3VwcHJlc3NSZWZFcnJvcixkPXZvaWQgMCE9PWMmJmM7bi5nZXRSb290UHJvcHMuY2FsbGVkPSEwLG4uZ2V0Um9vdFByb3BzLnJlZktleT1zLG4uZ2V0Um9vdFByb3BzLnN1cHByZXNzUmVmRXJyb3I9ZDt2YXIgcD1uLmdldFN0YXRlKCkuaXNPcGVuO3JldHVybiBpKCgocj17fSlbc109bi5yb290UmVmLHIucm9sZT1cImNvbWJvYm94XCIscltcImFyaWEtZXhwYW5kZWRcIl09cCxyW1wiYXJpYS1oYXNwb3B1cFwiXT1cImxpc3Rib3hcIixyW1wiYXJpYS1vd25zXCJdPXA/bi5tZW51SWQ6bnVsbCxyW1wiYXJpYS1sYWJlbGxlZGJ5XCJdPW4ubGFiZWxJZCxyKSx1KX0sbi5rZXlEb3duSGFuZGxlcnM9e0Fycm93RG93bjpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKGUucHJldmVudERlZmF1bHQoKSx0aGlzLmdldFN0YXRlKCkuaXNPcGVuKXt2YXIgbj1lLnNoaWZ0S2V5PzU6MTt0aGlzLm1vdmVIaWdobGlnaHRlZEluZGV4KG4se3R5cGU6U30pfWVsc2UgdGhpcy5pbnRlcm5hbFNldFN0YXRlKHtpc09wZW46ITAsdHlwZTpTfSxmdW5jdGlvbigpe3ZhciBlPXQuZ2V0SXRlbUNvdW50KCk7ZT4wJiZ0LnNldEhpZ2hsaWdodGVkSW5kZXgoVygxLHQuZ2V0U3RhdGUoKS5oaWdobGlnaHRlZEluZGV4LGUpLHt0eXBlOlN9KX0pfSxBcnJvd1VwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZ2V0U3RhdGUoKS5pc09wZW4pe3ZhciBuPWUuc2hpZnRLZXk/LTU6LTE7dGhpcy5tb3ZlSGlnaGxpZ2h0ZWRJbmRleChuLHt0eXBlOnZ9KX1lbHNlIHRoaXMuaW50ZXJuYWxTZXRTdGF0ZSh7aXNPcGVuOiEwLHR5cGU6dn0sZnVuY3Rpb24oKXt2YXIgZT10LmdldEl0ZW1Db3VudCgpO2U+MCYmdC5zZXRIaWdobGlnaHRlZEluZGV4KFcoLTEsdC5nZXRTdGF0ZSgpLmhpZ2hsaWdodGVkSW5kZXgsZSkse3R5cGU6U30pfSl9LEVudGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0U3RhdGUoKSxuPXQuaXNPcGVuLHI9dC5oaWdobGlnaHRlZEluZGV4O2lmKG4mJm51bGwhPXIpe2UucHJldmVudERlZmF1bHQoKTt2YXIgbz10aGlzLml0ZW1zW3JdLGE9dGhpcy5nZXRJdGVtTm9kZUZyb21JbmRleChyKTtpZihudWxsPT1vfHxhJiZhLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpKXJldHVybjt0aGlzLnNlbGVjdEhpZ2hsaWdodGVkSXRlbSh7dHlwZTp4fSl9fSxFc2NhcGU6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucmVzZXQoe3R5cGU6RX0pfX0sbi5idXR0b25LZXlEb3duSGFuZGxlcnM9aSh7fSxuLmtleURvd25IYW5kbGVycyx7XCIgXCI6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMudG9nZ2xlTWVudSh7dHlwZTpDfSl9fSksbi5pbnB1dEtleURvd25IYW5kbGVycz1pKHt9LG4ua2V5RG93bkhhbmRsZXJzLHtIb21lOmZ1bmN0aW9uKGUpe3RoaXMuaGlnaGxpZ2h0Rmlyc3RPckxhc3RJbmRleChlLCEwLHt0eXBlOnd9KX0sRW5kOmZ1bmN0aW9uKGUpe3RoaXMuaGlnaGxpZ2h0Rmlyc3RPckxhc3RJbmRleChlLCExLHt0eXBlOmt9KX19KSxuLmdldFRvZ2dsZUJ1dHRvblByb3BzPWZ1bmN0aW9uKGUpe3ZhciB0PXZvaWQgMD09PWU/e306ZSxyPXQub25DbGljayxvPSh0Lm9uUHJlc3MsdC5vbktleURvd24pLGw9dC5vbktleVVwLHM9dC5vbkJsdXIsdT1hKHQsW1wib25DbGlja1wiLFwib25QcmVzc1wiLFwib25LZXlEb3duXCIsXCJvbktleVVwXCIsXCJvbkJsdXJcIl0pLGM9bi5nZXRTdGF0ZSgpLmlzT3BlbixkPXtvbkNsaWNrOkQocixuLmJ1dHRvbkhhbmRsZUNsaWNrKSxvbktleURvd246RChvLG4uYnV0dG9uSGFuZGxlS2V5RG93biksb25LZXlVcDpEKGwsbi5idXR0b25IYW5kbGVLZXlVcCksb25CbHVyOkQocyxuLmJ1dHRvbkhhbmRsZUJsdXIpfTtyZXR1cm4gaSh7dHlwZTpcImJ1dHRvblwiLHJvbGU6XCJidXR0b25cIixcImFyaWEtbGFiZWxcIjpjP1wiY2xvc2UgbWVudVwiOlwib3BlbiBtZW51XCIsXCJhcmlhLWhhc3BvcHVwXCI6ITAsXCJkYXRhLXRvZ2dsZVwiOiEwfSx1LmRpc2FibGVkP3t9OmQsdSl9LG4uYnV0dG9uSGFuZGxlS2V5VXA9ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpfSxuLmJ1dHRvbkhhbmRsZUtleURvd249ZnVuY3Rpb24oZSl7dmFyIHQ9SChlKTtuLmJ1dHRvbktleURvd25IYW5kbGVyc1t0XSYmbi5idXR0b25LZXlEb3duSGFuZGxlcnNbdF0uY2FsbChsKG4pLGUpfSxuLmJ1dHRvbkhhbmRsZUNsaWNrPWZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxuLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1uLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmJvZHkmJmUudGFyZ2V0LmZvY3VzKCksbi5pbnRlcm5hbFNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gbi50b2dnbGVNZW51KHt0eXBlOk99KX0pfSxuLmJ1dHRvbkhhbmRsZUJsdXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7bi5pbnRlcm5hbFNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLmlzTW91c2VEb3dufHxudWxsIT1uLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJm4ucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pZD09PW4uaW5wdXRJZHx8bi5wcm9wcy5lbnZpcm9ubWVudC5kb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dHx8bi5yZXNldCh7dHlwZTpJfSl9KX0sbi5nZXRMYWJlbFByb3BzPWZ1bmN0aW9uKGUpe3JldHVybiBpKHtodG1sRm9yOm4uaW5wdXRJZCxpZDpuLmxhYmVsSWR9LGUpfSxuLmdldElucHV0UHJvcHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dm9pZCAwPT09ZT97fTplLHI9dC5vbktleURvd24sbz10Lm9uQmx1cixsPXQub25DaGFuZ2Uscz10Lm9uSW5wdXQsdT0odC5vbkNoYW5nZVRleHQsYSh0LFtcIm9uS2V5RG93blwiLFwib25CbHVyXCIsXCJvbkNoYW5nZVwiLFwib25JbnB1dFwiLFwib25DaGFuZ2VUZXh0XCJdKSksYz17fTt2YXIgZCxwPW4uZ2V0U3RhdGUoKSxmPXAuaW5wdXRWYWx1ZSxtPXAuaXNPcGVuLGc9cC5oaWdobGlnaHRlZEluZGV4O3UuZGlzYWJsZWR8fCgoZD17fSkub25DaGFuZ2U9RChsLHMsbi5pbnB1dEhhbmRsZUNoYW5nZSksZC5vbktleURvd249RChyLG4uaW5wdXRIYW5kbGVLZXlEb3duKSxkLm9uQmx1cj1EKG8sbi5pbnB1dEhhbmRsZUJsdXIpLGM9ZCk7cmV0dXJuIGkoe1wiYXJpYS1hdXRvY29tcGxldGVcIjpcImxpc3RcIixcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOm0mJlwibnVtYmVyXCI9PXR5cGVvZiBnJiZnPj0wP24uZ2V0SXRlbUlkKGcpOm51bGwsXCJhcmlhLWNvbnRyb2xzXCI6bT9uLm1lbnVJZDpudWxsLFwiYXJpYS1sYWJlbGxlZGJ5XCI6bi5sYWJlbElkLGF1dG9Db21wbGV0ZTpcIm9mZlwiLHZhbHVlOmYsaWQ6bi5pbnB1dElkfSxjLHUpfSxuLmlucHV0SGFuZGxlS2V5RG93bj1mdW5jdGlvbihlKXt2YXIgdD1IKGUpO3QmJm4uaW5wdXRLZXlEb3duSGFuZGxlcnNbdF0mJm4uaW5wdXRLZXlEb3duSGFuZGxlcnNbdF0uY2FsbChsKG4pLGUpfSxuLmlucHV0SGFuZGxlQ2hhbmdlPWZ1bmN0aW9uKGUpe24uaW50ZXJuYWxTZXRTdGF0ZSh7dHlwZTpBLGlzT3BlbjohMCxpbnB1dFZhbHVlOmUudGFyZ2V0LnZhbHVlfSl9LG4uaW5wdXRIYW5kbGVUZXh0Q2hhbmdlPWZ1bmN0aW9uKGUpe24uaW50ZXJuYWxTZXRTdGF0ZSh7dHlwZTpBLGlzT3BlbjohMCxpbnB1dFZhbHVlOmV9KX0sbi5pbnB1dEhhbmRsZUJsdXI9ZnVuY3Rpb24oKXtuLmludGVybmFsU2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPW4ucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQmJiEhbi5wcm9wcy5lbnZpcm9ubWVudC5kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYhIW4ucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5kYXRhc2V0JiZuLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZGF0YXNldC50b2dnbGUmJm4uX3Jvb3ROb2RlJiZuLl9yb290Tm9kZS5jb250YWlucyhuLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO24uaXNNb3VzZURvd258fGV8fG4ucmVzZXQoe3R5cGU6VH0pfSl9LG4ubWVudVJlZj1mdW5jdGlvbihlKXtuLl9tZW51Tm9kZT1lfSxuLmdldE1lbnVQcm9wcz1mdW5jdGlvbihlLHQpe3ZhciByLG89dm9pZCAwPT09ZT97fTplLGw9by5yZWZLZXkscz12b2lkIDA9PT1sP1wicmVmXCI6bCx1PW8ucmVmLGM9YShvLFtcInJlZktleVwiLFwicmVmXCJdKSxkPSh2b2lkIDA9PT10P3t9OnQpLnN1cHByZXNzUmVmRXJyb3IscD12b2lkIDAhPT1kJiZkO3JldHVybiBuLmdldE1lbnVQcm9wcy5jYWxsZWQ9ITAsbi5nZXRNZW51UHJvcHMucmVmS2V5PXMsbi5nZXRNZW51UHJvcHMuc3VwcHJlc3NSZWZFcnJvcj1wLGkoKChyPXt9KVtzXT1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09YXJndW1lbnRzW3JdO3QuZm9yRWFjaChmdW5jdGlvbihlKXtlJiZlLmFwcGx5KHZvaWQgMCxuKX0pfX0odSxuLm1lbnVSZWYpLHIucm9sZT1cImxpc3Rib3hcIixyW1wiYXJpYS1sYWJlbGxlZGJ5XCJdPWMmJmNbXCJhcmlhLWxhYmVsXCJdP251bGw6bi5sYWJlbElkLHIuaWQ9bi5tZW51SWQsciksYyl9LG4uZ2V0SXRlbVByb3BzPWZ1bmN0aW9uKGUpe3ZhciB0LHI9dm9pZCAwPT09ZT97fTplLG89ci5vbk1vdXNlTW92ZSxsPXIub25Nb3VzZURvd24scz1yLm9uQ2xpY2ssdT0oci5vblByZXNzLHIuaW5kZXgpLGM9ci5pdGVtLGQ9dm9pZCAwPT09Yz92b2lkIDA6YyxwPWEocixbXCJvbk1vdXNlTW92ZVwiLFwib25Nb3VzZURvd25cIixcIm9uQ2xpY2tcIixcIm9uUHJlc3NcIixcImluZGV4XCIsXCJpdGVtXCJdKTt2b2lkIDA9PT11PyhuLml0ZW1zLnB1c2goZCksdT1uLml0ZW1zLmluZGV4T2YoZCkpOm4uaXRlbXNbdV09ZDt2YXIgZj1zLG09KCh0PXtvbk1vdXNlTW92ZTpEKG8sZnVuY3Rpb24oKXt1IT09bi5nZXRTdGF0ZSgpLmhpZ2hsaWdodGVkSW5kZXgmJihuLnNldEhpZ2hsaWdodGVkSW5kZXgodSx7dHlwZTp5fSksbi5hdm9pZFNjcm9sbGluZz0hMCxuLmludGVybmFsU2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBuLmF2b2lkU2Nyb2xsaW5nPSExfSwyNTApKX0pLG9uTW91c2VEb3duOkQobCxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCl9KX0pLm9uQ2xpY2s9RChmLGZ1bmN0aW9uKCl7bi5zZWxlY3RJdGVtQXRJbmRleCh1LHt0eXBlOl99KX0pLHQpLGc9cC5kaXNhYmxlZD97b25Nb3VzZURvd246bS5vbk1vdXNlRG93bn06bTtyZXR1cm4gaSh7aWQ6bi5nZXRJdGVtSWQodSkscm9sZTpcIm9wdGlvblwiLFwiYXJpYS1zZWxlY3RlZFwiOm4uZ2V0U3RhdGUoKS5oaWdobGlnaHRlZEluZGV4PT09dX0sZyxwKX0sbi5jbGVhckl0ZW1zPWZ1bmN0aW9uKCl7bi5pdGVtcz1bXX0sbi5yZXNldD1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PWUmJihlPXt9KSxlPXooZSksbi5pbnRlcm5hbFNldFN0YXRlKGZ1bmN0aW9uKHQpe3ZhciByPXQuc2VsZWN0ZWRJdGVtO3JldHVybiBpKHtpc09wZW46bi5wcm9wcy5kZWZhdWx0SXNPcGVuLGhpZ2hsaWdodGVkSW5kZXg6bi5wcm9wcy5kZWZhdWx0SGlnaGxpZ2h0ZWRJbmRleCxpbnB1dFZhbHVlOm4ucHJvcHMuaXRlbVRvU3RyaW5nKHIpfSxlKX0sdCl9LG4udG9nZ2xlTWVudT1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PWUmJihlPXt9KSxlPXooZSksbi5pbnRlcm5hbFNldFN0YXRlKGZ1bmN0aW9uKHQpe3ZhciByPXQuaXNPcGVuO3JldHVybiBpKHtpc09wZW46IXJ9LHImJntoaWdobGlnaHRlZEluZGV4Om4ucHJvcHMuZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXh9LGUpfSxmdW5jdGlvbigpe3ZhciByPW4uZ2V0U3RhdGUoKSxvPXIuaXNPcGVuLGE9ci5oaWdobGlnaHRlZEluZGV4O28mJm4uZ2V0SXRlbUNvdW50KCk+MCYmXCJudW1iZXJcIj09dHlwZW9mIGEmJm4uc2V0SGlnaGxpZ2h0ZWRJbmRleChhLGUpLFAodCkoKX0pfSxuLm9wZW5NZW51PWZ1bmN0aW9uKGUpe24uaW50ZXJuYWxTZXRTdGF0ZSh7aXNPcGVuOiEwfSxlKX0sbi5jbG9zZU1lbnU9ZnVuY3Rpb24oZSl7bi5pbnRlcm5hbFNldFN0YXRlKHtpc09wZW46ITF9LGUpfSxuLnVwZGF0ZVN0YXR1cz1mdW5jdGlvbihlLHQpe3ZhciBuO2Z1bmN0aW9uIHIoKXtuJiZjbGVhclRpbWVvdXQobil9ZnVuY3Rpb24gbygpe2Zvcih2YXIgbz1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KG8pLGk9MDtpPG87aSsrKWFbaV09YXJndW1lbnRzW2ldO3IoKSxuPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtuPW51bGwsZS5hcHBseSh2b2lkIDAsYSl9LHQpfXJldHVybiBvLmNhbmNlbD1yLG99KGZ1bmN0aW9uKCl7dmFyIGU9bi5nZXRTdGF0ZSgpLHQ9bi5pdGVtc1tlLmhpZ2hsaWdodGVkSW5kZXhdLHI9bi5nZXRJdGVtQ291bnQoKSxvPW4ucHJvcHMuZ2V0QTExeVN0YXR1c01lc3NhZ2UoaSh7aXRlbVRvU3RyaW5nOm4ucHJvcHMuaXRlbVRvU3RyaW5nLHByZXZpb3VzUmVzdWx0Q291bnQ6bi5wcmV2aW91c1Jlc3VsdENvdW50LHJlc3VsdENvdW50OnIsaGlnaGxpZ2h0ZWRJdGVtOnR9LGUpKTtuLnByZXZpb3VzUmVzdWx0Q291bnQ9cixoKG8pfSwyMDApO3ZhciByPW4ucHJvcHMsbz1yLmRlZmF1bHRIaWdobGlnaHRlZEluZGV4LHM9ci5pbml0aWFsSGlnaGxpZ2h0ZWRJbmRleCx1PXZvaWQgMD09PXM/bzpzLGM9ci5kZWZhdWx0SXNPcGVuLGQ9ci5pbml0aWFsSXNPcGVuLHA9dm9pZCAwPT09ZD9jOmQsZj1yLmluaXRpYWxJbnB1dFZhbHVlLG09dm9pZCAwPT09Zj9cIlwiOmYsZz1yLmluaXRpYWxTZWxlY3RlZEl0ZW0sTj12b2lkIDA9PT1nP251bGw6ZyxNPW4uZ2V0U3RhdGUoe2hpZ2hsaWdodGVkSW5kZXg6dSxpc09wZW46cCxpbnB1dFZhbHVlOm0sc2VsZWN0ZWRJdGVtOk59KTtyZXR1cm4gbnVsbCE9TS5zZWxlY3RlZEl0ZW0mJnZvaWQgMD09PW4ucHJvcHMuaW5pdGlhbElucHV0VmFsdWUmJihNLmlucHV0VmFsdWU9bi5wcm9wcy5pdGVtVG9TdHJpbmcoTS5zZWxlY3RlZEl0ZW0pKSxuLnN0YXRlPU0sbn1uPWUsKHQ9cikucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5fX3Byb3RvX189bjt2YXIgcz1yLnByb3RvdHlwZTtyZXR1cm4gcy5pbnRlcm5hbENsZWFyVGltZW91dHM9ZnVuY3Rpb24oKXt0aGlzLnRpbWVvdXRJZHMuZm9yRWFjaChmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQoZSl9KSx0aGlzLnRpbWVvdXRJZHM9W119LHMuZ2V0U3RhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dGhpcy5zdGF0ZSksT2JqZWN0LmtleXMoZSkucmVkdWNlKGZ1bmN0aW9uKG4scil7cmV0dXJuIG5bcl09dC5pc0NvbnRyb2xsZWRQcm9wKHIpP3QucHJvcHNbcl06ZVtyXSxufSx7fSl9LHMuaXNDb250cm9sbGVkUHJvcD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5wcm9wc1tlXX0scy5nZXRJdGVtQ291bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLml0ZW1zLmxlbmd0aDtyZXR1cm4gbnVsbCE9dGhpcy5pdGVtQ291bnQ/ZT10aGlzLml0ZW1Db3VudDp2b2lkIDAhPT10aGlzLnByb3BzLml0ZW1Db3VudCYmKGU9dGhpcy5wcm9wcy5pdGVtQ291bnQpLGV9LHMuZ2V0SXRlbU5vZGVGcm9tSW5kZXg9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5nZXRJdGVtSWQoZSkpfSxzLnNjcm9sbEhpZ2hsaWdodGVkSXRlbUludG9WaWV3PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRJdGVtTm9kZUZyb21JbmRleCh0aGlzLmdldFN0YXRlKCkuaGlnaGxpZ2h0ZWRJbmRleCk7dGhpcy5wcm9wcy5zY3JvbGxJbnRvVmlldyhlLHRoaXMuX21lbnVOb2RlKX0scy5tb3ZlSGlnaGxpZ2h0ZWRJbmRleD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0SXRlbUNvdW50KCk7aWYobj4wKXt2YXIgcj1XKGUsdGhpcy5nZXRTdGF0ZSgpLmhpZ2hsaWdodGVkSW5kZXgsbik7dGhpcy5zZXRIaWdobGlnaHRlZEluZGV4KHIsdCl9fSxzLmhpZ2hsaWdodEZpcnN0T3JMYXN0SW5kZXg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZ2V0SXRlbUNvdW50KCktMTtyPDB8fCF0aGlzLmdldFN0YXRlKCkuaXNPcGVufHwoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2V0SGlnaGxpZ2h0ZWRJbmRleCh0PzA6cixuKSl9LHMuZ2V0U3RhdGVBbmRIZWxwZXJzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRTdGF0ZSgpLHQ9ZS5oaWdobGlnaHRlZEluZGV4LG49ZS5pbnB1dFZhbHVlLHI9ZS5zZWxlY3RlZEl0ZW0sbz1lLmlzT3BlbixhPXRoaXMucHJvcHMuaXRlbVRvU3RyaW5nLGk9dGhpcy5pZCxsPXRoaXMuZ2V0Um9vdFByb3BzLHM9dGhpcy5nZXRUb2dnbGVCdXR0b25Qcm9wcyx1PXRoaXMuZ2V0TGFiZWxQcm9wcyxjPXRoaXMuZ2V0TWVudVByb3BzLGQ9dGhpcy5nZXRJbnB1dFByb3BzLHA9dGhpcy5nZXRJdGVtUHJvcHMsZj10aGlzLm9wZW5NZW51LG09dGhpcy5jbG9zZU1lbnUsZz10aGlzLnRvZ2dsZU1lbnUsaD10aGlzLnNlbGVjdEl0ZW0sYj10aGlzLnNlbGVjdEl0ZW1BdEluZGV4LHk9dGhpcy5zZWxlY3RIaWdobGlnaHRlZEl0ZW0sdj10aGlzLnNldEhpZ2hsaWdodGVkSW5kZXgsUz10aGlzLmNsZWFyU2VsZWN0aW9uLEU9dGhpcy5jbGVhckl0ZW1zO3JldHVybntnZXRSb290UHJvcHM6bCxnZXRUb2dnbGVCdXR0b25Qcm9wczpzLGdldExhYmVsUHJvcHM6dSxnZXRNZW51UHJvcHM6YyxnZXRJbnB1dFByb3BzOmQsZ2V0SXRlbVByb3BzOnAscmVzZXQ6dGhpcy5yZXNldCxvcGVuTWVudTpmLGNsb3NlTWVudTptLHRvZ2dsZU1lbnU6ZyxzZWxlY3RJdGVtOmgsc2VsZWN0SXRlbUF0SW5kZXg6YixzZWxlY3RIaWdobGlnaHRlZEl0ZW06eSxzZXRIaWdobGlnaHRlZEluZGV4OnYsY2xlYXJTZWxlY3Rpb246UyxjbGVhckl0ZW1zOkUsc2V0SXRlbUNvdW50OnRoaXMuc2V0SXRlbUNvdW50LHVuc2V0SXRlbUNvdW50OnRoaXMudW5zZXRJdGVtQ291bnQsc2V0U3RhdGU6dGhpcy5pbnRlcm5hbFNldFN0YXRlLGl0ZW1Ub1N0cmluZzphLGlkOmksaGlnaGxpZ2h0ZWRJbmRleDp0LGlucHV0VmFsdWU6bixpc09wZW46byxzZWxlY3RlZEl0ZW06cn19LHMuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3ZhciB0PWZ1bmN0aW9uKHQsbil7dm9pZCAwPT09biYmKG49ITApO3ZhciByPWUucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQ7cmV0dXJuW2UuX3Jvb3ROb2RlLGUuX21lbnVOb2RlXS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBlJiYoTChlLHQpfHxuJiZMKGUsci5hY3RpdmVFbGVtZW50KSl9KX0sbj1mdW5jdGlvbigpe2UuaXNNb3VzZURvd249ITB9LHI9ZnVuY3Rpb24obil7ZS5pc01vdXNlRG93bj0hMSwhdChuLnRhcmdldCkmJmUuZ2V0U3RhdGUoKS5pc09wZW4mJmUucmVzZXQoe3R5cGU6MX0sZnVuY3Rpb24oKXtyZXR1cm4gZS5wcm9wcy5vbk91dGVyQ2xpY2soZS5nZXRTdGF0ZUFuZEhlbHBlcnMoKSl9KX0sbz1mdW5jdGlvbigpe2UuaXNUb3VjaE1vdmU9ITF9LGE9ZnVuY3Rpb24oKXtlLmlzVG91Y2hNb3ZlPSEwfSxpPWZ1bmN0aW9uKG4pe3ZhciByPXQobi50YXJnZXQsITEpO2UuaXNUb3VjaE1vdmV8fHJ8fCFlLmdldFN0YXRlKCkuaXNPcGVufHxlLnJlc2V0KHt0eXBlOjE2fSxmdW5jdGlvbigpe3JldHVybiBlLnByb3BzLm9uT3V0ZXJDbGljayhlLmdldFN0YXRlQW5kSGVscGVycygpKX0pfTt0aGlzLnByb3BzLmVudmlyb25tZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixuKSx0aGlzLnByb3BzLmVudmlyb25tZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsciksdGhpcy5wcm9wcy5lbnZpcm9ubWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLG8pLHRoaXMucHJvcHMuZW52aXJvbm1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLGEpLHRoaXMucHJvcHMuZW52aXJvbm1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsaSksdGhpcy5jbGVhbnVwPWZ1bmN0aW9uKCl7ZS5pbnRlcm5hbENsZWFyVGltZW91dHMoKSxlLnVwZGF0ZVN0YXR1cy5jYW5jZWwoKSxlLnByb3BzLmVudmlyb25tZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixuKSxlLnByb3BzLmVudmlyb25tZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsciksZS5wcm9wcy5lbnZpcm9ubWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLG8pLGUucHJvcHMuZW52aXJvbm1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLGEpLGUucHJvcHMuZW52aXJvbm1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsaSl9fSxzLnNob3VsZFNjcm9sbD1mdW5jdGlvbihlLHQpe3ZhciBuPSh2b2lkIDA9PT10aGlzLnByb3BzLmhpZ2hsaWdodGVkSW5kZXg/dGhpcy5nZXRTdGF0ZSgpOnRoaXMucHJvcHMpLmhpZ2hsaWdodGVkSW5kZXgscj0odm9pZCAwPT09dC5oaWdobGlnaHRlZEluZGV4P2U6dCkuaGlnaGxpZ2h0ZWRJbmRleDtyZXR1cm4gbiYmdGhpcy5nZXRTdGF0ZSgpLmlzT3BlbiYmIWUuaXNPcGVufHxuIT09cn0scy5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzQ29udHJvbGxlZFByb3AoXCJzZWxlY3RlZEl0ZW1cIikmJnRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtQ2hhbmdlZChlLnNlbGVjdGVkSXRlbSx0aGlzLnByb3BzLnNlbGVjdGVkSXRlbSkmJnRoaXMuaW50ZXJuYWxTZXRTdGF0ZSh7dHlwZToxNSxpbnB1dFZhbHVlOnRoaXMucHJvcHMuaXRlbVRvU3RyaW5nKHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtKX0pLCF0aGlzLmF2b2lkU2Nyb2xsaW5nJiZ0aGlzLnNob3VsZFNjcm9sbCh0LGUpJiZ0aGlzLnNjcm9sbEhpZ2hsaWdodGVkSXRlbUludG9WaWV3KCksdGhpcy51cGRhdGVTdGF0dXMoKX0scy5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuY2xlYW51cCgpfSxzLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPUYodGhpcy5wcm9wcy5jaGlsZHJlbixNKTt0aGlzLmNsZWFySXRlbXMoKSx0aGlzLmdldFJvb3RQcm9wcy5jYWxsZWQ9ITEsdGhpcy5nZXRSb290UHJvcHMucmVmS2V5PXZvaWQgMCx0aGlzLmdldFJvb3RQcm9wcy5zdXBwcmVzc1JlZkVycm9yPXZvaWQgMCx0aGlzLmdldE1lbnVQcm9wcy5jYWxsZWQ9ITEsdGhpcy5nZXRNZW51UHJvcHMucmVmS2V5PXZvaWQgMCx0aGlzLmdldE1lbnVQcm9wcy5zdXBwcmVzc1JlZkVycm9yPXZvaWQgMCx0aGlzLmdldExhYmVsUHJvcHMuY2FsbGVkPSExLHRoaXMuZ2V0SW5wdXRQcm9wcy5jYWxsZWQ9ITE7dmFyIHQ9RihlKHRoaXMuZ2V0U3RhdGVBbmRIZWxwZXJzKCkpKTtyZXR1cm4gdD90aGlzLmdldFJvb3RQcm9wcy5jYWxsZWR8fHRoaXMucHJvcHMuc3VwcHJlc3NSZWZFcnJvcj90OkIodCk/by5hLmNsb25lRWxlbWVudCh0LHRoaXMuZ2V0Um9vdFByb3BzKGoodCkpKTp2b2lkIDA6bnVsbH0scn0oci5Db21wb25lbnQpO0cuZGVmYXVsdFByb3BzPXtkZWZhdWx0SGlnaGxpZ2h0ZWRJbmRleDpudWxsLGRlZmF1bHRJc09wZW46ITEsZ2V0QTExeVN0YXR1c01lc3NhZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pc09wZW4sbj1lLnNlbGVjdGVkSXRlbSxyPWUucmVzdWx0Q291bnQsbz1lLnByZXZpb3VzUmVzdWx0Q291bnQsYT1lLml0ZW1Ub1N0cmluZztyZXR1cm4gdD9yP3IhPT1vP3IrXCIgcmVzdWx0XCIrKDE9PT1yP1wiIGlzXCI6XCJzIGFyZVwiKStcIiBhdmFpbGFibGUsIHVzZSB1cCBhbmQgZG93biBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlLiBQcmVzcyBFbnRlciBrZXkgdG8gc2VsZWN0LlwiOlwiXCI6XCJObyByZXN1bHRzIGFyZSBhdmFpbGFibGUuXCI6bj9hKG4pOlwiXCJ9LGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9cIlwiOlN0cmluZyhlKX0sb25TdGF0ZUNoYW5nZTpNLG9uSW5wdXRWYWx1ZUNoYW5nZTpNLG9uVXNlckFjdGlvbjpNLG9uQ2hhbmdlOk0sb25TZWxlY3Q6TSxvbk91dGVyQ2xpY2s6TSxzZWxlY3RlZEl0ZW1DaGFuZ2VkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUhPT10fSxlbnZpcm9ubWVudDpcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93P3t9OndpbmRvdyxzdGF0ZVJlZHVjZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0sc3VwcHJlc3NSZWZFcnJvcjohMSxzY3JvbGxJbnRvVmlldzpmdW5jdGlvbihlLHQpe251bGwhPT1lJiZmKGUse2JvdW5kYXJ5OnQsYmxvY2s6XCJuZWFyZXN0XCIsc2Nyb2xsTW9kZTpcImlmLW5lZWRlZFwifSkuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLmVsLG49ZS50b3Ascj1lLmxlZnQ7dC5zY3JvbGxUb3A9bix0LnNjcm9sbExlZnQ9cn0pfX0sRy5zdGF0ZUNoYW5nZVR5cGVzPU47dmFyIFY9RywkPW4oMykscT1uKDE5KTtmdW5jdGlvbiBLKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXtZKGUsdCxuW3RdKX0pfXJldHVybiBlfWZ1bmN0aW9uIFkoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFgoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfXZhciBaPWZ1bmN0aW9uKGUpe3JldHVybltcImZpbGxlZFwiLFwib3V0bGluZWRcIl0uaW5jbHVkZXMoZSl9O2Z1bmN0aW9uIFEoZSl7cmV0dXJuXCJvdXRsaW5lZFwiPT09ZT97cGFkZGluZzpcIjE4LjVweCAxNHB4XCJ9OlwiZmlsbGVkXCI9PT1lP3twYWRkaW5nOlwiMjdweCAxMnB4IDEwcHhcIn06dm9pZCAwfWZ1bmN0aW9uIEooZSl7dmFyIHQ9ZS52YWx1ZSxuPWUub25DaGFuZ2Uscj1lLnN0YXJ0QWRvcm5tZW50LGE9ZS5jbGFzc2VzLGk9ZS5mdWxsV2lkdGgsbD1lLmxhYmVsLHM9ZS5vbkJsdXIsdT1lLm9uS2V5RG93bixjPWUuZGlzYWJsZWQsZD1lLmVycm9yLHA9ZS52YXJpYW50LGY9ZS5oZWxwZXJUZXh0LG09ZS5yZXF1aXJlZCxnPWUubmFtZSxoPXtpbnB1dFByb3BzOksoe30sWChlLFtcInZhbHVlXCIsXCJvbkNoYW5nZVwiLFwic3RhcnRBZG9ybm1lbnRcIixcImNsYXNzZXNcIixcImZ1bGxXaWR0aFwiLFwibGFiZWxcIixcIm9uQmx1clwiLFwib25LZXlEb3duXCIsXCJkaXNhYmxlZFwiLFwiZXJyb3JcIixcInZhcmlhbnRcIixcImhlbHBlclRleHRcIixcInJlcXVpcmVkXCIsXCJuYW1lXCJdKSx7Y2xhc3NOYW1lOmEuaW5wdXRSb290LHN0eWxlOloocCk/e3BhZGRpbmc6XCI2LjVweCAwXCJ9OnZvaWQgMH0pLHN0eWxlOlEocCksc3RhcnRBZG9ybm1lbnQ6cixjbGFzc2VzOntyb290OmEuSW5wdXRSb290fX0sYj17c2hyaW5rOkJvb2xlYW4odC5sZW5ndGh8fHIpLGNsYXNzZXM6e3Jvb3Q6YS5JbnB1dExhYmVsUm9vdCxzaHJpbms6YS5JbnB1dExhYmVsU2hyaW5rLGZpbGxlZDphLklucHV0TGFiZWxGaWxsZWR9fTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoJC52LHtsYWJlbDpsLHZhbHVlOnQsb25DaGFuZ2U6bixvbkJsdXI6cyxvbktleURvd246dSxJbnB1dFByb3BzOmgsSW5wdXRMYWJlbFByb3BzOmIsZnVsbFdpZHRoOmksZGlzYWJsZWQ6YyxlcnJvcjpkLHZhcmlhbnQ6cCxoZWxwZXJUZXh0OmYscmVxdWlyZWQ6bSxuYW1lOmd9KX1KLnByb3BUeXBlcz17ZGlzYWJsZWQ6cy5ib29sLGVycm9yOnMuYm9vbCxsYWJlbDpzLnN0cmluZyx2YWx1ZTpzLnN0cmluZy5pc1JlcXVpcmVkLG9uQ2hhbmdlOnMuZnVuYyxvbkJsdXI6cy5mdW5jLG9uS2V5RG93bjpzLmZ1bmMsZnVsbFdpZHRoOnMuYm9vbCxzdGFydEFkb3JubWVudDpzLm5vZGUsdmFyaWFudDpzLnN0cmluZyxjbGFzc2VzOnMub2JqZWN0LGhlbHBlclRleHQ6cy5ub2RlLHJlcXVpcmVkOnMuYm9vbCxuYW1lOnMuc3RyaW5nfSxKLmRlZmF1bHRQcm9wcz17bGFiZWw6XCJcIixmdWxsV2lkdGg6ITEsc3RhcnRBZG9ybm1lbnQ6ITF9O3ZhciBlZT1PYmplY3QocS53aXRoU3R5bGVzKShmdW5jdGlvbihlKXtyZXR1cm57SW5wdXRSb290OntkaXNwbGF5OlwiZmxleFwiLGZsZXhXcmFwOlwid3JhcFwiLHBhZGRpbmc6XCJcIi5jb25jYXQoLjUqZS5zcGFjaW5nLnVuaXQsXCJweCAwXCIpLGJveFNpemluZzpcImJvcmRlci1ib3hcIn0sSW5wdXRMYWJlbFJvb3Q6e3RvcDplLnNwYWNpbmcudW5pdH0sSW5wdXRMYWJlbEZpbGxlZDp7dG9wOjIqZS5zcGFjaW5nLnVuaXR9LElucHV0TGFiZWxTaHJpbms6e3RvcDowfSxpbnB1dFJvb3Q6e2ZsZXg6XCIxIDEgYXV0b1wiLG1hcmdpblRvcDouMjUqZS5zcGFjaW5nLnVuaXQsbWluV2lkdGg6XCIyMDBweFwiLHdpZHRoOlwiYXV0b1wifX19KShKKSx0ZT1uKDE4KTtmdW5jdGlvbiBuZShlKXt2YXIgdD1lLmNsYXNzZXMsbj1cIlwiLmNvbmNhdCh0LnJvb3QsXCIgc3VnZ2VzdGlvbi1lcnJvci1tZXNzYWdlXCIpO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudCgkLncse3ZhcmlhbnQ6XCJoNlwiLGFsaWduOlwiY2VudGVyXCIsY2xhc3NOYW1lOm59LFwiQW4gZXJyb3Igb2NjdXJyZWQhXCIpfW5lLnByb3BUeXBlcz17Y2xhc3NlczpzLm9iamVjdH07dmFyIHJlPU9iamVjdChxLndpdGhTdHlsZXMpKGZ1bmN0aW9uKGUpe3JldHVybntyb290Ontjb2xvcjplLnBhbGV0dGUuZXJyb3IubWFpbn19fSkobmUpO2Z1bmN0aW9uIG9lKGUpe3ZhciB0PWUuaXRlbUlkO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudCgkLncse3N0eWxlOntwYWRkaW5nOlwiMTFweCAxNnB4XCJ9fSx0KX1vZS5wcm9wVHlwZXM9e2l0ZW1JZDpzLnN0cmluZy5pc1JlcXVpcmVkfTt2YXIgYWU9b2U7ZnVuY3Rpb24gaWUoZSl7dmFyIHQ9ZS5pbnB1dFZhbHVlO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudCgkLncse3ZhcmlhbnQ6XCJzdWJ0aXRsZTFcIixhbGlnbjpcImNlbnRlclwiLGNsYXNzTmFtZTpcIm5vLXN1Z2dlc3Rpb25zLW1lc3NhZ2VcIn0sXCJObyBzdWdnZXN0aW9ucyBmb3VuZCBmb3IgXCIsby5hLmNyZWF0ZUVsZW1lbnQoXCJzdHJvbmdcIixudWxsLHQpKX1pZS5wcm9wVHlwZXM9e2lucHV0VmFsdWU6cy5zdHJpbmcuaXNSZXF1aXJlZH07dmFyIGxlPWllO2Z1bmN0aW9uIHNlKGUpe3ZhciB0PWUuaW5wdXRWYWx1ZTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoby5hLkZyYWdtZW50LG51bGwsby5hLmNyZWF0ZUVsZW1lbnQoJC53LHt2YXJpYW50OlwiaDZcIixhbGlnbjpcImNlbnRlclwiLGd1dHRlckJvdHRvbTohMH0sXCJMb2FkaW5nIHN1Z2dlc3Rpb25zIGZvciBcIixvLmEuY3JlYXRlRWxlbWVudChcInN0cm9uZ1wiLG51bGwsdCksXCLigKZcIiksby5hLmNyZWF0ZUVsZW1lbnQoJC5qLG51bGwpKX1zZS5wcm9wVHlwZXM9e2lucHV0VmFsdWU6cy5zdHJpbmd9O3ZhciB1ZT1zZTt2YXIgY2U9ZnVuY3Rpb24oKXtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoJC53LHt2YXJpYW50Olwic3VidGl0bGUxXCIsYWxpZ246XCJjZW50ZXJcIixjbGFzc05hbWU6XCJtb3JlLWNoYXJhY3RlcnMtbWVzc2FnZVwifSxcIlR5cGUgbW9yZSBjaGFyYWN0ZXJzIHRvIHNlZSBzdWdnZXN0aW9uc1wiKX07ZnVuY3Rpb24gZGUoKXtyZXR1cm4oZGU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBwZShlKXt2YXIgdD1lLnN1Z2dlc3Rpb25zLG49ZS5nZXRJdGVtUHJvcHMscj1lLmhpZ2hsaWdodGVkSW5kZXgsYT1lLml0ZW1Ub1N0cmluZyxpPWUuaW5wdXRWYWx1ZSxsPWUuU3VnZ2VzdGlvbkNvbXBvbmVudCxzPXZvaWQgMD09PWw/YWU6bCx1PWUuRXJyb3JDb21wb25lbnQsYz12b2lkIDA9PT11P3JlOnUsZD1lLmNsYXNzZXM7aWYoT2JqZWN0KHRlLmcpKHQpKXJldHVybiBvLmEuY3JlYXRlRWxlbWVudChjLHtlcnJvcjp0LGlucHV0VmFsdWU6aX0pO2lmKHQ9PT10ZS5iKXJldHVybiBvLmEuY3JlYXRlRWxlbWVudChjZSxudWxsKTtpZih0PT09dGUuYSlyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQodWUse2lucHV0VmFsdWU6aX0pO2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQubGVuZ3RoP28uYS5jcmVhdGVFbGVtZW50KG8uYS5GcmFnbWVudCxudWxsLHQubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIGw9YShlKSx1PXI9PT10LGM9bih7aW5kZXg6dCxpdGVtOmUsY2xhc3NOYW1lOnU/ZC5oaWdobGlnaHRlZDpcIlwiLHN0eWxlOntwYWRkaW5nOjAsaGVpZ2h0OlwiYXV0b1wifX0pO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudCgkLmwsZGUoe2NsYXNzTmFtZTpcInN1Z2dlc3Rpb25cIixrZXk6bH0sYyksby5hLmNyZWF0ZUVsZW1lbnQocyx7aXRlbUlkOmwsaXRlbTplLGlzSGlnaGxpZ2h0ZWQ6dSxpbnB1dFZhbHVlOml9KSl9KSk6ISFpLmxlbmd0aCYmby5hLmNyZWF0ZUVsZW1lbnQobGUse2lucHV0VmFsdWU6aX0pO3Rocm93IGNvbnNvbGUuZXJyb3IodCksbmV3IEVycm9yKFwic2hvdWxkIG5ldmVyIGhhcHBlbiFcIil9cGUucHJvcFR5cGVzPXtzdWdnZXN0aW9uczp0ZS5pLGdldEl0ZW1Qcm9wczpzLmZ1bmMuaXNSZXF1aXJlZCxoaWdobGlnaHRlZEluZGV4OnMubnVtYmVyLGl0ZW1Ub1N0cmluZzpzLmZ1bmMuaXNSZXF1aXJlZCxpbnB1dFZhbHVlOnMuc3RyaW5nLmlzUmVxdWlyZWQsU3VnZ2VzdGlvbkNvbXBvbmVudDpzLmFueSxFcnJvckNvbXBvbmVudDpzLmFueSxjbGFzc2VzOnMub2JqZWN0fTt2YXIgZmU9T2JqZWN0KHEud2l0aFN0eWxlcykoZnVuY3Rpb24oZSl7cmV0dXJue2hpZ2hsaWdodGVkOntiYWNrZ3JvdW5kQ29sb3I6ZS5wYWxldHRlLmdyZXlbMzAwXX19fSkocGUpLG1lPW4oMTg3KSxnZT1uLm4obWUpO2Z1bmN0aW9uIGhlKCl7cmV0dXJuKGhlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYmUoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHllKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb312YXIgdmU9e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix6SW5kZXg6MjAsd2lkdGg6XCIxMDAlXCIsb3ZlcmZsb3dZOlwiYXV0b1wifTtmdW5jdGlvbiBTZShlKXt2YXIgdD1lLmlzT3BlbixuPWUuc3VnZ2VzdGlvbnMscj1lLm1heEhlaWdodCxhPXllKGUsW1wiaXNPcGVuXCIsXCJzdWdnZXN0aW9uc1wiLFwibWF4SGVpZ2h0XCJdKTtpZih0JiZuKXt2YXIgaT1yP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXtiZShlLHQsblt0XSl9KX1yZXR1cm4gZX0oe30sdmUse21heEhlaWdodDpyfSk6dmU7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCQubSx7c3F1YXJlOiEwLHN0eWxlOml9LG8uYS5jcmVhdGVFbGVtZW50KGZlLGhlKHtzdWdnZXN0aW9uczpufSxhKSkpfXJldHVybiExfVNlLnByb3BUeXBlcz17aXNPcGVuOnMuYm9vbCxzdWdnZXN0aW9uczp0ZS5pLG1heEhlaWdodDpzLm51bWJlcn07dmFyIEVlPWdlKCkoU2UsNTApO2Z1bmN0aW9uIHhlKGUpe3JldHVybih4ZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gd2UoKXtyZXR1cm4od2U9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBrZShlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99ZnVuY3Rpb24gX2UoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIFRlKGUsdCl7cmV0dXJuIXR8fFwib2JqZWN0XCIhPT14ZSh0KSYmXCJmdW5jdGlvblwiIT10eXBlb2YgdD9mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gZX0oZSk6dH1mdW5jdGlvbiBBZShlKXtyZXR1cm4oQWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfWZ1bmN0aW9uIENlKGUsdCl7cmV0dXJuKENlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX12YXIgT2U9e3ZlcnRpY2FsOlwidG9wXCIsaG9yaXpvbnRhbDpcImNlbnRlclwifSxJZT17dmVydGljYWw6XCJib3R0b21cIixob3Jpem9udGFsOlwiY2VudGVyXCJ9LE5lPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIG47cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyx0KSwobj1UZSh0aGlzLEFlKHQpLmNhbGwodGhpcyxlKSkpLnN0YXRlPXt0YXJnZXRFbGVtZW50OnZvaWQgMH0sbn12YXIgbixhLGk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiZDZShlLHQpfSh0LHJbXCJQdXJlQ29tcG9uZW50XCJdKSxuPXQsKGE9W3trZXk6XCJoYW5kbGVNb3VzZU92ZXJcIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnNldFN0YXRlKHt0YXJnZXRFbGVtZW50OmUuY3VycmVudFRhcmdldH0pfX0se2tleTpcImNsb3NlUG9wb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRTdGF0ZSh7dGFyZ2V0RWxlbWVudDp2b2lkIDB9KX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnN0YXRlLnRhcmdldEVsZW1lbnQsbj10aGlzLnByb3BzLHI9bi5nZXRQb3BvdmVyQ29udGVudCxhPWtlKG4sW1wiZ2V0UG9wb3ZlckNvbnRlbnRcIl0pO2lmKHIpe3ZhciBpPUJvb2xlYW4odCkmJnIoKSxsPUJvb2xlYW4oaSk7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KG8uYS5GcmFnbWVudCxudWxsLG8uYS5jcmVhdGVFbGVtZW50KCQuYix3ZSh7b25Nb3VzZUVudGVyOmZ1bmN0aW9uKHQpe3JldHVybiBlLmhhbmRsZU1vdXNlT3Zlcih0KX0sb25Nb3VzZUxlYXZlOmZ1bmN0aW9uKCl7cmV0dXJuIGUuY2xvc2VQb3BvdmVyKCl9fSxhLHtcImFyaWEtb3duc1wiOmw/XCJtYXRlcmlhbC1tdWx0aS1waWNrZXItbW91c2UtcG9wb3ZlclwiOnZvaWQgMCxcImFyaWEtaGFzcG9wdXBcIjpcInRydWVcIn0pKSxvLmEuY3JlYXRlRWxlbWVudCgkLm4se2lkOlwibWF0ZXJpYWwtbXVsdGktcGlja2VyLW1vdXNlLXBvcG92ZXJcIixzdHlsZTp7cG9pbnRlckV2ZW50czpcIm5vbmVcIn0sb25DbG9zZTpmdW5jdGlvbigpe3JldHVybiBlLmNsb3NlUG9wb3ZlcigpfSxhbmNob3JPcmlnaW46T2UsdHJhbnNmb3JtT3JpZ2luOkllLGFuY2hvckVsOnQsb3BlbjpsLGRpc2FibGVSZXN0b3JlRm9jdXM6ITB9LGkpKX1yZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoJC5iLGEpfX1dKSYmX2Uobi5wcm90b3R5cGUsYSksaSYmX2UobixpKSx0fSgpO05lLnByb3BUeXBlcz17Z2V0UG9wb3ZlckNvbnRlbnQ6cy5mdW5jfTt2YXIgUmU9TmUsUGU9ZnVuY3Rpb24oKXt9O2Z1bmN0aW9uIE1lKGUpe3ZhciB0PWUuc2VsZWN0ZWRJdGVtcyxuPWUuZGlzYWJsZWQscj1lLmNvbG9yLGE9ZS5vbkRlbGV0ZSxpPWUuaXRlbVRvU3RyaW5nLGw9ZS5pdGVtVG9MYWJlbCxzPWUuaXRlbVRvUG9wb3Zlcix1PWUuaXRlbVRvQXZhdGFyLGM9dm9pZCAwPT09dT9QZTp1LGQ9ZS52YXJpYW50LHA9ZS5jbGFzc2VzO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChvLmEuRnJhZ21lbnQsbnVsbCx0Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoUmUse2dldFBvcG92ZXJDb250ZW50OnM/ZnVuY3Rpb24oKXtyZXR1cm4gcyhlKX06dm9pZCAwLGtleTppKGUpLHRhYkluZGV4Oi0xLGNsYXNzTmFtZTpwLnBpY2tlckNoaXAsbGFiZWw6bD9sKGUpOmkoZSksb25EZWxldGU6bj92b2lkIDA6ZnVuY3Rpb24oKXtyZXR1cm4gYShlKX0sYXZhdGFyOmMoZSksY29sb3I6cix2YXJpYW50OlwiZmlsbGVkXCI9PT1kP1wib3V0bGluZWRcIjpcImRlZmF1bHRcIn0pfSkpfU1lLnByb3BUeXBlcz17ZGlzYWJsZWQ6cy5ib29sLHNlbGVjdGVkSXRlbXM6cy5hcnJheSxjb2xvcjp0ZS5oLG9uRGVsZXRlOnMuZnVuYyxpdGVtVG9TdHJpbmc6cy5mdW5jLmlzUmVxdWlyZWQsaXRlbVRvTGFiZWw6cy5mdW5jLGl0ZW1Ub0F2YXRhcjpzLmZ1bmMsaXRlbVRvUG9wb3ZlcjpzLmZ1bmMsY2xhc3NlczpzLm9iamVjdCx2YXJpYW50OnMuc3RyaW5nfTt2YXIgTGU9TWUsRGU9e307ZnVuY3Rpb24gRmUoKXt2YXIgZT17fSx0PVtdO3JldHVybntnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0sc2V0VmFsdWU6ZnVuY3Rpb24obixyKXtlW25dPXIsdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RyeXtlKCl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX19KX0sc3Vic2NyaWJlVG9VcGRhdGVzOmZ1bmN0aW9uKGUpe3JldHVybiB0LnB1c2goZSksZnVuY3Rpb24oKXtyZXR1cm4gbj1lLHZvaWQoKHI9dC5pbmRleE9mKG4pKT49MCYmdC5zcGxpY2UociwxKSk7dmFyIG4scn19LGdldExpc3RlbmVyQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5sZW5ndGh9fX1mdW5jdGlvbiBCZShlKXtyZXR1cm4gRGVbZV18fChEZVtlXT1GZSgpKSxEZVtlXX12YXIgamU9LjI1LFVlPS41O2Z1bmN0aW9uIHplKGUpe3JldHVybih6ZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gSGUoKXtyZXR1cm4oSGU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBXZShlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99ZnVuY3Rpb24gR2UoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLG49bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07cmV0dXJuIG59fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8XCJbb2JqZWN0IEFyZ3VtZW50c11cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfSgpfWZ1bmN0aW9uIFZlKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiAkZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gcWUoZSx0KXtyZXR1cm4hdHx8XCJvYmplY3RcIiE9PXplKHQpJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0P2Z1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfShlKTp0fWZ1bmN0aW9uIEtlKGUpe3JldHVybihLZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gWWUoZSx0KXtyZXR1cm4oWWU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfXZhciBYZT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBuOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsdCksKG49cWUodGhpcyxLZSh0KS5jYWxsKHRoaXMsZSkpKS5zdGF0ZT17aW5wdXRWYWx1ZTpcIlwiLGFsbFN1Z2dlc3Rpb25zOnt9fTt2YXIgcj1lLnVzZUdsb2JhbENhY2hlO3JldHVybiByJiYobi51bnN1YnNjcmliZUdsb2JhbENhY2hlPUJlKHIpLnN1YnNjcmliZVRvVXBkYXRlcyhmdW5jdGlvbigpe3JldHVybiBuLmZvcmNlVXBkYXRlKCl9KSksbn12YXIgbixhLGk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiZZZShlLHQpfSh0LHJbXCJQdXJlQ29tcG9uZW50XCJdKSxuPXQsKGE9W3trZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZExvb2t1cCksdGhpcy51bnN1YnNjcmliZUdsb2JhbENhY2hlKCl9fSx7a2V5OlwiaGFuZGxlSW5wdXRDaGFuZ2VcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy5wcm9wcy5mZXRjaERlbGF5LHI9dm9pZCAwPT09bj8wOm4sbz1lLnRhcmdldC52YWx1ZTt0aGlzLnNldFN0YXRlKHtpbnB1dFZhbHVlOm99LGZ1bmN0aW9uKCl7dC5nZXRTdWdnZXN0aW9ucygpfHwoY2xlYXJUaW1lb3V0KHQuZGVsYXllZExvb2t1cCksdC5kZWxheWVkTG9va3VwPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gdC5mZXRjaFN1Z2dlc3Rpb25zRm9yKG8pfSxyKSl9KX19LHtrZXk6XCJmZXRjaFN1Z2dlc3Rpb25zRm9yXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMucHJvcHMscj1uLmdldFN1Z2dlc3RlZEl0ZW1zLG89bi52YWx1ZTt0aGlzLnVwZGF0ZVN1Z2dlc3Rpb25zKGUsdGUuYSksT2JqZWN0KHRlLmMpKGZ1bmN0aW9uKCl7cmV0dXJuIHIoZSxvKX0pLnRoZW4oZnVuY3Rpb24obil7cmV0dXJuIE9iamVjdCh0ZS5kKShuKSx0LnVwZGF0ZVN1Z2dlc3Rpb25zKGUsbiksITB9KS5jYXRjaChmdW5jdGlvbihuKXt0LnVwZGF0ZVN1Z2dlc3Rpb25zKGUsbiksY29uc29sZS5lcnJvcihuKX0pfX0se2tleTpcInNhZmVJdGVtVG9TdHJpbmdcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmdGhpcy5wcm9wcy5pdGVtVG9TdHJpbmcoZSl9fSx7a2V5OlwidXBkYXRlU3VnZ2VzdGlvbnNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucHJvcHMudXNlR2xvYmFsQ2FjaGU7bj9CZShuKS5zZXRWYWx1ZShlLHQpOnRoaXMuc2V0U3RhdGUoZnVuY3Rpb24obil7cmV0dXJue2FsbFN1Z2dlc3Rpb25zOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXtWZShlLHQsblt0XSl9KX1yZXR1cm4gZX0oe30sbi5hbGxTdWdnZXN0aW9ucyxWZSh7fSxlLHQpKX19KX19LHtrZXk6XCJoYW5kbGVLZXlEb3duXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuc3RhdGUuaW5wdXRWYWx1ZS5sZW5ndGgmJk9iamVjdCh0ZS5mKShlKSl7dmFyIHQ9dGhpcy5wcm9wcy52YWx1ZSxuPU9iamVjdCh0ZS5lKSh0KTtuJiZ0aGlzLmhhbmRsZURlbGV0ZUl0ZW0obil9fX0se2tleTpcImhhbmRsZUJsdXJcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJvcHMuY2xlYXJJbnB1dE9uQmx1ciYmdGhpcy5zZXRTdGF0ZSh7aW5wdXRWYWx1ZTpcIlwifSl9fSx7a2V5OlwiaGFuZGxlQWRkSXRlbVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LnZhbHVlOygwLHQub25DaGFuZ2UpKFtdLmNvbmNhdChHZShuKSxbZV0pKSx0aGlzLnNldFN0YXRlKHtpbnB1dFZhbHVlOlwiXCJ9KX19LHtrZXk6XCJoYW5kbGVEZWxldGVJdGVtXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMucHJvcHMscj1uLnZhbHVlOygwLG4ub25DaGFuZ2UpKHIuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiB0LnNhZmVJdGVtVG9TdHJpbmcobikhPT10LnNhZmVJdGVtVG9TdHJpbmcoZSl9KSl9fSx7a2V5OlwiZ2V0U3VnZ2VzdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLnVzZUdsb2JhbENhY2hlLG49dGhpcy5zdGF0ZSxyPW4uaW5wdXRWYWx1ZSxvPW4uYWxsU3VnZ2VzdGlvbnMsYT10P0JlKHQpLmdldFZhbHVlKHIpOm9bcl07aWYoQXJyYXkuaXNBcnJheShhKSl7dmFyIGk9dGhpcy5wcm9wcy52YWx1ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGUuc2FmZUl0ZW1Ub1N0cmluZyh0KX0pO3JldHVybiBhLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4haS5pbmNsdWRlcyhlLnNhZmVJdGVtVG9TdHJpbmcodCkpfSl9cmV0dXJuIGF9fSx7a2V5OlwicmVuZGVySW5wdXRBZG9ybm1lbnRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5kaXNhYmxlZCxyPXQudmFsdWUsYT10Lml0ZW1Ub0xhYmVsLGk9dC5pdGVtVG9BdmF0YXIsbD10Lml0ZW1Ub1BvcG92ZXIscz10LmNoaXBDb2xvcix1PXQudmFyaWFudCxjPXQuY2xhc3NlcztyZXR1cm4hIXIubGVuZ3RoJiZvLmEuY3JlYXRlRWxlbWVudChMZSx7a2V5OlwicGlja2VyLWNoaXBzXCIsc2VsZWN0ZWRJdGVtczpyLGNvbG9yOnMsY2xhc3NlczpjLG9uRGVsZXRlOmZ1bmN0aW9uKHQpe3JldHVybiBlLmhhbmRsZURlbGV0ZUl0ZW0odCl9LGl0ZW1Ub1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4gZS5zYWZlSXRlbVRvU3RyaW5nKHQpfSxpdGVtVG9MYWJlbDphLGl0ZW1Ub0F2YXRhcjppLGl0ZW1Ub1BvcG92ZXI6bCxkaXNhYmxlZDpuLHZhcmlhbnQ6dX0pfX0se2tleTpcInJlbmRlckRvd25zaGlmdFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1lLmdldElucHV0UHJvcHMscj1XZShlLFtcImdldElucHV0UHJvcHNcIl0pLGE9dGhpcy5wcm9wcyxpPWEuZGlzYWJsZWQsbD1hLmVycm9yLHM9YS5mdWxsV2lkdGgsdT1hLmxhYmVsLGM9YS5TdWdnZXN0aW9uQ29tcG9uZW50LGQ9YS5FcnJvckNvbXBvbmVudCxwPWEudmFyaWFudCxmPWEuaGVscGVyVGV4dCxtPWEucmVxdWlyZWQsZz1hLm5hbWUsaD1hLm1heERyb3Bkb3duSGVpZ2h0O3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTp7cG9zaXRpb246XCJyZWxhdGl2ZVwifX0sby5hLmNyZWF0ZUVsZW1lbnQoZWUsSGUoe30sbih7c3RhcnRBZG9ybm1lbnQ6dGhpcy5yZW5kZXJJbnB1dEFkb3JubWVudCgpLG9uQ2hhbmdlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmhhbmRsZUlucHV0Q2hhbmdlKGUpfSxvbktleURvd246ZnVuY3Rpb24oZSl7cmV0dXJuIHQuaGFuZGxlS2V5RG93bihlKX0sb25CbHVyOmZ1bmN0aW9uKGUpe3JldHVybiB0LmhhbmRsZUJsdXIoZSl9LGVycm9yOmwsZGlzYWJsZWQ6aX0pLHtmdWxsV2lkdGg6cyxsYWJlbDp1LHZhcmlhbnQ6cCxoZWxwZXJUZXh0OmYscmVxdWlyZWQ6bSxuYW1lOmd9KSksby5hLmNyZWF0ZUVsZW1lbnQoRWUsSGUoe3N1Z2dlc3Rpb25zOnRoaXMuZ2V0U3VnZ2VzdGlvbnMoKSxTdWdnZXN0aW9uQ29tcG9uZW50OmMsRXJyb3JDb21wb25lbnQ6ZCxtYXhIZWlnaHQ6aH0scikpKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnN0YXRlLmlucHV0VmFsdWU7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KFYse2lucHV0VmFsdWU6dCxvblNlbGVjdDpmdW5jdGlvbih0KXtyZXR1cm4gZS5oYW5kbGVBZGRJdGVtKHQpfSxpdGVtVG9TdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuIGUuc2FmZUl0ZW1Ub1N0cmluZyh0KX0sZnVsbFdpZHRoOiEwfSxmdW5jdGlvbigpe3JldHVybiBlLnJlbmRlckRvd25zaGlmdC5hcHBseShlLGFyZ3VtZW50cyl9KX19XSkmJiRlKG4ucHJvdG90eXBlLGEpLGkmJiRlKG4saSksdH0oKTtYZS5wcm9wVHlwZXM9e3ZhbHVlOnMuYXJyYXkuaXNSZXF1aXJlZCxvbkNoYW5nZTpzLmZ1bmMuaXNSZXF1aXJlZCxnZXRTdWdnZXN0ZWRJdGVtczpzLmZ1bmMuaXNSZXF1aXJlZCxpdGVtVG9MYWJlbDpzLmZ1bmMsaXRlbVRvU3RyaW5nOnMuZnVuYy5pc1JlcXVpcmVkLGl0ZW1Ub0F2YXRhcjpzLmZ1bmMsaXRlbVRvUG9wb3ZlcjpzLmZ1bmMsZnVsbFdpZHRoOnMuYm9vbCxlcnJvcjpzLmJvb2wsbGFiZWw6cy5zdHJpbmcsZmV0Y2hEZWxheTpzLm51bWJlcixTdWdnZXN0aW9uQ29tcG9uZW50OnMuYW55LEVycm9yQ29tcG9uZW50OnMuYW55LGNoaXBDb2xvcjp0ZS5oLHVzZUdsb2JhbENhY2hlOnMuc3RyaW5nLGNsYXNzZXM6cy5vYmplY3QsZGlzYWJsZWQ6cy5ib29sLGNsZWFySW5wdXRPbkJsdXI6cy5ib29sLHZhcmlhbnQ6cy5zdHJpbmcsaGVscGVyVGV4dDpzLm5vZGUscmVxdWlyZWQ6cy5ib29sLG5hbWU6cy5zdHJpbmcsbWF4RHJvcGRvd25IZWlnaHQ6cy5udW1iZXJ9O3QuYT1PYmplY3QocS53aXRoU3R5bGVzKShmdW5jdGlvbihlKXtyZXR1cm57cGlja2VyQ2hpcDp7bWFyZ2luUmlnaHQ6ZS5zcGFjaW5nLnVuaXQqVWUsbWFyZ2luVG9wOmUuc3BhY2luZy51bml0KmplfX19KShYZSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX19LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdCYmbihlLnByb3RvdHlwZSx0KSxyJiZuKGUsciksZX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDI5KSxvPW4oNDUpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiF0fHxcIm9iamVjdFwiIT09cih0KSYmXCJmdW5jdGlvblwiIT10eXBlb2YgdD9vKGUpOnR9fSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGUuZXhwb3J0cz1uPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LG4odCl9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDM2MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiZyKGUsdCl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZnVuY3Rpb24oKXt9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQsXCJnXCIsZnVuY3Rpb24oKXtyZXR1cm4gb30pLG4uZCh0LFwiZlwiLGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSxuLmQodCxcImVcIixmdW5jdGlvbigpe3JldHVybiBpfSksbi5kKHQsXCJjXCIsZnVuY3Rpb24oKXtyZXR1cm4gbH0pLG4uZCh0LFwiYVwiLGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSxuLmQodCxcImJcIixmdW5jdGlvbigpe3JldHVybiB1fSksbi5kKHQsXCJkXCIsZnVuY3Rpb24oKXtyZXR1cm4gY30pLG4uZCh0LFwiaVwiLGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSxuLmQodCxcImhcIixmdW5jdGlvbigpe3JldHVybiBwfSk7dmFyIHI9bigxKSxvPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRXJyb3J9LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIDg9PT1lLmtleUNvZGV9O2Z1bmN0aW9uIGkoZSl7aWYoZS5sZW5ndGgpcmV0dXJuIGVbZS5sZW5ndGgtMV19ZnVuY3Rpb24gbChlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxuKXt0cnl7dChlKCkpfWNhdGNoKGUpe24oZSl9fSl9dmFyIHM9U3ltYm9sKFwibG9hZGluZ1wiKSx1PVN5bWJvbChcIm5vdCBlbm91Z2ggY2hhcmFjdGVyc1wiKTtmdW5jdGlvbiBjKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoZT09PXUpcmV0dXJuITA7dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdWdnZXN0aW9ucyByZXR1cm5lZCAtIGV4cGVjdGVkIGFuIGFycmF5LCBidXQgaW5zdGVhZCBnb3QgXCIuY29uY2F0KGUpKX12YXIgZD1PYmplY3Qoci5vbmVPZlR5cGUpKFtyLmFycmF5LE9iamVjdChyLmluc3RhbmNlT2YpKEVycm9yKSxPYmplY3Qoci5vbmVPZikoW3MsdV0pXSkscD1PYmplY3Qoci5vbmVPZikoW1wiZGVmYXVsdFwiLFwicHJpbWFyeVwiLFwic2Vjb25kYXJ5XCJdKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjcmVhdGVHZW5lcmF0ZUNsYXNzTmFtZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjcmVhdGVNdWlUaGVtZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJqc3NQcmVzZXRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiTXVpVGhlbWVQcm92aWRlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjcmVhdGVTdHlsZXNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwid2l0aFN0eWxlc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB1LmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJ3aXRoVGhlbWVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWZhdWx0fX0pO3ZhciBvPXIobigxMjcpKSxhPXIobig2NykpLGk9cihuKDEyMCkpLGw9cihuKDQ4MikpLHM9cihuKDQ4NSkpLHU9cihuKDgpKSxjPXIobig4NikpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBvLnRlc3QoXCJudW1iZXJcIj09dHlwZW9mIGU/cihlKTplLmNoYXJBdCgwKSl9O3ZhciByPVN0cmluZy5mcm9tQ2hhckNvZGUsbz0vXFxzL30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jYXBpdGFsaXplPWZ1bmN0aW9uKGUpezA7cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0sdC5jb250YWlucz1hLHQuZmluZEluZGV4PWksdC5maW5kPWZ1bmN0aW9uKGUsdCl7dmFyIG49aShlLHQpO3JldHVybiBuPi0xP2Vbbl06dm9pZCAwfSx0LmNyZWF0ZUNoYWluZWRGdW5jdGlvbj1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiB0LnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT10P2U6ZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKylyW29dPWFyZ3VtZW50c1tvXTtlLmFwcGx5KHRoaXMsciksdC5hcHBseSh0aGlzLHIpfX0sZnVuY3Rpb24oKXt9KX07dmFyIG89cihuKDI5KSk7cihuKDE3KSk7ZnVuY3Rpb24gYShlLHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5ldmVyeShmdW5jdGlvbihuKXtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eShuKSYmZVtuXT09PXRbbl19KX1mdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciBuPSgwLG8uZGVmYXVsdCkodCkscj0wO3I8ZS5sZW5ndGg7cis9MSl7aWYoXCJmdW5jdGlvblwiPT09biYmITA9PSEhdChlW3JdLHIsZSkpcmV0dXJuIHI7aWYoXCJvYmplY3RcIj09PW4mJmEoZVtyXSx0KSlyZXR1cm4gcjtpZigtMSE9PVtcInN0cmluZ1wiLFwibnVtYmVyXCIsXCJib29sZWFuXCJdLmluZGV4T2YobikpcmV0dXJuIGUuaW5kZXhPZih0KX1yZXR1cm4tMX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjshZnVuY3Rpb24gZSgpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18mJlwiZnVuY3Rpb25cIj09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSl0cnl7X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGUpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fSgpLGUuZXhwb3J0cz1uKDI3Mil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXt9LHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07Zm9yKHZhciBvIGluIHIpbi5jYWxsKHIsbykmJihlW29dPXJbb10pfXJldHVybiBlfTt2YXIgbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5fSxmdW5jdGlvbihlLHQpeyh0PWUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9eXFxzKnxcXHMqJC9nLFwiXCIpfSkubGVmdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9eXFxzKi8sXCJcIil9LHQucmlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFxzKiQvLFwiXCIpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKHQpe3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsLmRlZmF1bHQuQ29uc3VtZXIsbnVsbCxmdW5jdGlvbihuKXtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZSwoMCxvLmRlZmF1bHQpKHttdWlGb3JtQ29udHJvbDpufSx0KSl9KX07MDtyZXR1cm4oMCxpLmRlZmF1bHQpKHQsZSksdH07dmFyIG89cihuKDQpKSxhPXIobigwKSksaT1yKG4oNjMpKSxsPXIobig3MykpO24oNyl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50fTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0KXt2YXIgbjtuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCk7dHJ5e249bnx8bmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKX1jYXRjaChlKXtcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93JiYobj13aW5kb3cpfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3JldHVybihuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiByKHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09PW4oU3ltYm9sLml0ZXJhdG9yKT9lLmV4cG9ydHM9cj1mdW5jdGlvbihlKXtyZXR1cm4gbihlKX06ZS5leHBvcnRzPXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjpuKGUpfSxyKHQpfWUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksaT11KG4oMjgpKSxsPXUobig2NCkpLHM9dShuKDQ2KSk7ZnVuY3Rpb24gdShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbixyKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpLHRoaXMudHlwZT1cInN0eWxlXCIsdGhpcy5pc1Byb2Nlc3NlZD0hMTt2YXIgbz1yLnNoZWV0LGE9ci5SZW5kZXJlcixpPXIuc2VsZWN0b3I7dGhpcy5rZXk9dCx0aGlzLm9wdGlvbnM9cix0aGlzLnN0eWxlPW4saSYmKHRoaXMuc2VsZWN0b3JUZXh0PWkpLHRoaXMucmVuZGVyZXI9bz9vLnJlbmRlcmVyOm5ldyBhfXJldHVybiBhKGUsW3trZXk6XCJwcm9wXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10KXJldHVybiB0aGlzLnN0eWxlW2VdO2lmKHRoaXMuc3R5bGVbZV09PT10KXJldHVybiB0aGlzO3ZhciBuPW51bGw9PSh0PXRoaXMub3B0aW9ucy5qc3MucGx1Z2lucy5vbkNoYW5nZVZhbHVlKHQsZSx0aGlzKSl8fCExPT09dCxyPWUgaW4gdGhpcy5zdHlsZTtpZihuJiYhcilyZXR1cm4gdGhpczt2YXIgbz1uJiZyO2lmKG8/ZGVsZXRlIHRoaXMuc3R5bGVbZV06dGhpcy5zdHlsZVtlXT10LHRoaXMucmVuZGVyYWJsZSlyZXR1cm4gbz90aGlzLnJlbmRlcmVyLnJlbW92ZVByb3BlcnR5KHRoaXMucmVuZGVyYWJsZSxlKTp0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMucmVuZGVyYWJsZSxlLHQpLHRoaXM7dmFyIGE9dGhpcy5vcHRpb25zLnNoZWV0O3JldHVybiBhJiZhLmF0dGFjaGVkJiYoMCxpLmRlZmF1bHQpKCExLCdSdWxlIGlzIG5vdCBsaW5rZWQuIE1pc3Npbmcgc2hlZXQgb3B0aW9uIFwibGluazogdHJ1ZVwiLicpLHRoaXN9fSx7a2V5OlwiYXBwbHlUb1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudG9KU09OKCk7Zm9yKHZhciBuIGluIHQpdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShlLG4sdFtuXSk7cmV0dXJuIHRoaXN9fSx7a2V5OlwidG9KU09OXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT17fTtmb3IodmFyIHQgaW4gdGhpcy5zdHlsZSl7dmFyIG49dGhpcy5zdHlsZVt0XTtcIm9iamVjdFwiIT09KHZvaWQgMD09PW4/XCJ1bmRlZmluZWRcIjpvKG4pKT9lW3RdPW46QXJyYXkuaXNBcnJheShuKSYmKGVbdF09KDAscy5kZWZhdWx0KShuKSl9cmV0dXJuIGV9fSx7a2V5OlwidG9TdHJpbmdcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm9wdGlvbnMuc2hlZXQsbj0hIXQmJnQub3B0aW9ucy5saW5rP3Ioe30sZSx7YWxsb3dFbXB0eTohMH0pOmU7cmV0dXJuKDAsbC5kZWZhdWx0KSh0aGlzLnNlbGVjdG9yLHRoaXMuc3R5bGUsbil9fSx7a2V5Olwic2VsZWN0b3JcIixzZXQ6ZnVuY3Rpb24oZSl7aWYoZSE9PXRoaXMuc2VsZWN0b3JUZXh0JiYodGhpcy5zZWxlY3RvclRleHQ9ZSx0aGlzLnJlbmRlcmFibGUmJiF0aGlzLnJlbmRlcmVyLnNldFNlbGVjdG9yKHRoaXMucmVuZGVyYWJsZSxlKSYmdGhpcy5yZW5kZXJhYmxlKSl7dmFyIHQ9dGhpcy5yZW5kZXJlci5yZXBsYWNlUnVsZSh0aGlzLnJlbmRlcmFibGUsdGhpcyk7dCYmKHRoaXMucmVuZGVyYWJsZT10KX19LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdG9yVGV4dH19XSksZX0oKTt0LmRlZmF1bHQ9Y30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jb252ZXJ0SGV4VG9SR0I9YSx0LnJnYlRvSGV4PWZ1bmN0aW9uKGUpe2lmKDA9PT1lLmluZGV4T2YoXCIjXCIpKXJldHVybiBlO3ZhciB0PWkoZSkudmFsdWVzO3JldHVybiB0PXQubWFwKGZ1bmN0aW9uKGUpe3JldHVybiAxPT09KHQ9ZS50b1N0cmluZygxNikpLmxlbmd0aD9cIjBcIi5jb25jYXQodCk6dDt2YXIgdH0pLFwiI1wiLmNvbmNhdCh0LmpvaW4oXCJcIikpfSx0LmRlY29tcG9zZUNvbG9yPWksdC5yZWNvbXBvc2VDb2xvcj1sLHQuZ2V0Q29udHJhc3RSYXRpbz1mdW5jdGlvbihlLHQpe3ZhciBuPXMoZSkscj1zKHQpO3JldHVybihNYXRoLm1heChuLHIpKy4wNSkvKE1hdGgubWluKG4scikrLjA1KX0sdC5nZXRMdW1pbmFuY2U9cyx0LmVtcGhhc2l6ZT1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06LjE1O3JldHVybiBzKGUpPi41P3UoZSx0KTpjKGUsdCl9LHQuZmFkZT1mdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybiBlO2U9aShlKSx0PW8odCksKFwicmdiXCI9PT1lLnR5cGV8fFwiaHNsXCI9PT1lLnR5cGUpJiYoZS50eXBlKz1cImFcIik7cmV0dXJuIGUudmFsdWVzWzNdPXQsbChlKX0sdC5kYXJrZW49dSx0LmxpZ2h0ZW49YztyKG4oMTcpKTtmdW5jdGlvbiBvKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjE7cmV0dXJuIGU8dD90OmU+bj9uOmV9ZnVuY3Rpb24gYShlKXtlPWUuc3Vic3RyKDEpO3ZhciB0PW5ldyBSZWdFeHAoXCIuezEsXCIuY29uY2F0KGUubGVuZ3RoLzMsXCJ9XCIpLFwiZ1wiKSxuPWUubWF0Y2godCk7cmV0dXJuIG4mJjE9PT1uWzBdLmxlbmd0aCYmKG49bi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUrZX0pKSxuP1wicmdiKFwiLmNvbmNhdChuLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gcGFyc2VJbnQoZSwxNil9KS5qb2luKFwiLCBcIiksXCIpXCIpOlwiXCJ9ZnVuY3Rpb24gaShlKXtpZihcIiNcIj09PWUuY2hhckF0KDApKXJldHVybiBpKGEoZSkpO3ZhciB0PWUuaW5kZXhPZihcIihcIiksbj1lLnN1YnN0cmluZygwLHQpLHI9ZS5zdWJzdHJpbmcodCsxLGUubGVuZ3RoLTEpLnNwbGl0KFwiLFwiKTtyZXR1cm57dHlwZTpuLHZhbHVlczpyPXIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUZsb2F0KGUpfSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ9ZS50eXBlLG49ZS52YWx1ZXM7cmV0dXJuLTEhPT10LmluZGV4T2YoXCJyZ2JcIikmJihuPW4ubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ8Mz9wYXJzZUludChlLDEwKTplfSkpLC0xIT09dC5pbmRleE9mKFwiaHNsXCIpJiYoblsxXT1cIlwiLmNvbmNhdChuWzFdLFwiJVwiKSxuWzJdPVwiXCIuY29uY2F0KG5bMl0sXCIlXCIpKSxcIlwiLmNvbmNhdChlLnR5cGUsXCIoXCIpLmNvbmNhdChuLmpvaW4oXCIsIFwiKSxcIilcIil9ZnVuY3Rpb24gcyhlKXt2YXIgdD1pKGUpO2lmKC0xIT09dC50eXBlLmluZGV4T2YoXCJyZ2JcIikpe3ZhciBuPXQudmFsdWVzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4oZS89MjU1KTw9LjAzOTI4P2UvMTIuOTI6TWF0aC5wb3coKGUrLjA1NSkvMS4wNTUsMi40KX0pO3JldHVybiBOdW1iZXIoKC4yMTI2Km5bMF0rLjcxNTIqblsxXSsuMDcyMipuWzJdKS50b0ZpeGVkKDMpKX1yZXR1cm4gdC52YWx1ZXNbMl0vMTAwfWZ1bmN0aW9uIHUoZSx0KXtpZighZSlyZXR1cm4gZTtpZihlPWkoZSksdD1vKHQpLC0xIT09ZS50eXBlLmluZGV4T2YoXCJoc2xcIikpZS52YWx1ZXNbMl0qPTEtdDtlbHNlIGlmKC0xIT09ZS50eXBlLmluZGV4T2YoXCJyZ2JcIikpZm9yKHZhciBuPTA7bjwzO24rPTEpZS52YWx1ZXNbbl0qPTEtdDtyZXR1cm4gbChlKX1mdW5jdGlvbiBjKGUsdCl7aWYoIWUpcmV0dXJuIGU7aWYoZT1pKGUpLHQ9byh0KSwtMSE9PWUudHlwZS5pbmRleE9mKFwiaHNsXCIpKWUudmFsdWVzWzJdKz0oMTAwLWUudmFsdWVzWzJdKSp0O2Vsc2UgaWYoLTEhPT1lLnR5cGUuaW5kZXhPZihcInJnYlwiKSlmb3IodmFyIG49MDtuPDM7bis9MSllLnZhbHVlc1tuXSs9KDI1NS1lLnZhbHVlc1tuXSkqdDtyZXR1cm4gbChlKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY2xvbmVFbGVtZW50V2l0aENsYXNzTmFtZT1pLHQuY2xvbmVDaGlsZHJlbldpdGhDbGFzc05hbWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gby5kZWZhdWx0LkNoaWxkcmVuLm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybiBvLmRlZmF1bHQuaXNWYWxpZEVsZW1lbnQoZSkmJmkoZSx0KX0pfSx0LmlzTXVpRWxlbWVudD1mdW5jdGlvbihlLHQpe3JldHVybiBvLmRlZmF1bHQuaXNWYWxpZEVsZW1lbnQoZSkmJi0xIT09dC5pbmRleE9mKGUudHlwZS5tdWlOYW1lKX0sdC5zZXRSZWY9ZnVuY3Rpb24oZSx0KXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2UodCk6ZSYmKGUuY3VycmVudD10KX07dmFyIG89cihuKDApKSxhPXIobig2KSk7ZnVuY3Rpb24gaShlLHQpe3JldHVybiBvLmRlZmF1bHQuY2xvbmVFbGVtZW50KGUse2NsYXNzTmFtZTooMCxhLmRlZmF1bHQpKGUucHJvcHMuY2xhc3NOYW1lLHQpfSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PWUucHJvcHMsbj1lLnN0YXRlcyxyPWUubXVpRm9ybUNvbnRyb2w7cmV0dXJuIG4ucmVkdWNlKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGVbbl09dFtuXSxyJiZ2b2lkIDA9PT10W25dJiYoZVtuXT1yW25dKSxlfSx7fSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5jPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2tleXdvcmQ6L1xcYig/Ol9BbGlnbmFzfF9BbGlnbm9mfF9BdG9taWN8X0Jvb2x8X0NvbXBsZXh8X0dlbmVyaWN8X0ltYWdpbmFyeXxfTm9yZXR1cm58X1N0YXRpY19hc3NlcnR8X1RocmVhZF9sb2NhbHxhc218dHlwZW9mfGlubGluZXxhdXRvfGJyZWFrfGNhc2V8Y2hhcnxjb25zdHxjb250aW51ZXxkZWZhdWx0fGRvfGRvdWJsZXxlbHNlfGVudW18ZXh0ZXJufGZsb2F0fGZvcnxnb3RvfGlmfGludHxsb25nfHJlZ2lzdGVyfHJldHVybnxzaG9ydHxzaWduZWR8c2l6ZW9mfHN0YXRpY3xzdHJ1Y3R8c3dpdGNofHR5cGVkZWZ8dW5pb258dW5zaWduZWR8dm9pZHx2b2xhdGlsZXx3aGlsZSlcXGIvLG9wZXJhdG9yOi8tWz4tXT98XFwrXFwrP3whPT98PDw/PT98Pj4/PT98PT0/fCYmP3xcXHxcXHw/fFt+XiU/KlxcL10vLG51bWJlcjovKD86XFxiMHhbXFxkYS1mXSt8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86ZVsrLV0/XFxkKyk/KVtmdWxdKi9pfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiY1wiLFwic3RyaW5nXCIse21hY3JvOntwYXR0ZXJuOi8oXlxccyopI1xccypbYS16XSsoPzpbXlxcclxcblxcXFxdfFxcXFwoPzpcXHJcXG58W1xcc1xcU10pKSovaW0sbG9va2JlaGluZDohMCxhbGlhczpcInByb3BlcnR5XCIsaW5zaWRlOntzdHJpbmc6e3BhdHRlcm46LygjXFxzKmluY2x1ZGVcXHMqKSg/OjwuKz8+fChcInwnKSg/OlxcXFw/LikrP1xcMikvLGxvb2tiZWhpbmQ6ITB9LGRpcmVjdGl2ZTp7cGF0dGVybjovKCNcXHMqKVxcYig/OmRlZmluZXxkZWZpbmVkfGVsaWZ8ZWxzZXxlbmRpZnxlcnJvcnxpZmRlZnxpZm5kZWZ8aWZ8aW1wb3J0fGluY2x1ZGV8bGluZXxwcmFnbWF8dW5kZWZ8dXNpbmcpXFxiLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwia2V5d29yZFwifX19LGNvbnN0YW50Oi9cXGIoPzpfX0ZJTEVfX3xfX0xJTkVfX3xfX0RBVEVfX3xfX1RJTUVfX3xfX1RJTUVTVEFNUF9ffF9fZnVuY19ffEVPRnxOVUxMfFNFRUtfQ1VSfFNFRUtfRU5EfFNFRUtfU0VUfHN0ZGlufHN0ZG91dHxzdGRlcnIpXFxiL30pLGRlbGV0ZSBlLmxhbmd1YWdlcy5jW1wiY2xhc3MtbmFtZVwiXSxkZWxldGUgZS5sYW5ndWFnZXMuYy5ib29sZWFufWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJjXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9dShuKDQ3KSksaT11KG4oMTE3KSksbD11KG4oMzApKSxzPXUobigzNjYpKTtmdW5jdGlvbiB1KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dmFyIG49dGhpczshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpLHRoaXMubWFwPXt9LHRoaXMucmF3PXt9LHRoaXMuaW5kZXg9W10sdGhpcy51cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uLm9wdGlvbnMsbz1yLmpzcy5wbHVnaW5zLGE9ci5zaGVldDtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlvLm9uVXBkYXRlKHQsbi5nZXQoZSksYSk7ZWxzZSBmb3IodmFyIGk9MDtpPG4uaW5kZXgubGVuZ3RoO2krKylvLm9uVXBkYXRlKGUsbi5pbmRleFtpXSxhKX0sdGhpcy5vcHRpb25zPXQsdGhpcy5jbGFzc2VzPXQuY2xhc3Nlc31yZXR1cm4gbyhlLFt7a2V5OlwiYWRkXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPXRoaXMub3B0aW9ucyxpPW8ucGFyZW50LHU9by5zaGVldCxjPW8uanNzLGQ9by5SZW5kZXJlcixwPW8uZ2VuZXJhdGVDbGFzc05hbWU7IShuPXIoe2NsYXNzZXM6dGhpcy5jbGFzc2VzLHBhcmVudDppLHNoZWV0OnUsanNzOmMsUmVuZGVyZXI6ZCxnZW5lcmF0ZUNsYXNzTmFtZTpwfSxuKSkuc2VsZWN0b3ImJnRoaXMuY2xhc3Nlc1tlXSYmKG4uc2VsZWN0b3I9XCIuXCIrKDAscy5kZWZhdWx0KSh0aGlzLmNsYXNzZXNbZV0pKSx0aGlzLnJhd1tlXT10O3ZhciBmPSgwLGEuZGVmYXVsdCkoZSx0LG4pLG09dm9pZCAwOyFuLnNlbGVjdG9yJiZmIGluc3RhbmNlb2YgbC5kZWZhdWx0JiYobT1wKGYsdSksZi5zZWxlY3Rvcj1cIi5cIisoMCxzLmRlZmF1bHQpKG0pKSx0aGlzLnJlZ2lzdGVyKGYsbSk7dmFyIGc9dm9pZCAwPT09bi5pbmRleD90aGlzLmluZGV4Lmxlbmd0aDpuLmluZGV4O3JldHVybiB0aGlzLmluZGV4LnNwbGljZShnLDAsZiksZn19LHtrZXk6XCJnZXRcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5tYXBbZV19fSx7a2V5OlwicmVtb3ZlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy51bnJlZ2lzdGVyKGUpLHRoaXMuaW5kZXguc3BsaWNlKHRoaXMuaW5kZXhPZihlKSwxKX19LHtrZXk6XCJpbmRleE9mXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW5kZXguaW5kZXhPZihlKX19LHtrZXk6XCJwcm9jZXNzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMuanNzLnBsdWdpbnM7dGhpcy5pbmRleC5zbGljZSgwKS5mb3JFYWNoKGUub25Qcm9jZXNzUnVsZSxlKX19LHtrZXk6XCJyZWdpc3RlclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5tYXBbZS5rZXldPWUsZSBpbnN0YW5jZW9mIGwuZGVmYXVsdCYmKHRoaXMubWFwW2Uuc2VsZWN0b3JdPWUsdCYmKHRoaXMuY2xhc3Nlc1tlLmtleV09dCkpfX0se2tleTpcInVucmVnaXN0ZXJcIix2YWx1ZTpmdW5jdGlvbihlKXtkZWxldGUgdGhpcy5tYXBbZS5rZXldLGUgaW5zdGFuY2VvZiBsLmRlZmF1bHQmJihkZWxldGUgdGhpcy5tYXBbZS5zZWxlY3Rvcl0sZGVsZXRlIHRoaXMuY2xhc3Nlc1tlLmtleV0pfX0se2tleTpcImxpbmtcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5vcHRpb25zLnNoZWV0LnJlbmRlcmVyLmdldFVuZXNjYXBlZEtleXNNYXAodGhpcy5pbmRleCksbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dLG89dGhpcy5vcHRpb25zLnNoZWV0LnJlbmRlcmVyLmdldEtleShyKTt0W29dJiYobz10W29dKTt2YXIgYT10aGlzLm1hcFtvXTthJiYoMCxpLmRlZmF1bHQpKGEscil9fX0se2tleTpcInRvU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVwiXCIsbj10aGlzLm9wdGlvbnMuc2hlZXQscj0hIW4mJm4ub3B0aW9ucy5saW5rLG89MDtvPHRoaXMuaW5kZXgubGVuZ3RoO28rKyl7dmFyIGE9dGhpcy5pbmRleFtvXS50b1N0cmluZyhlKTsoYXx8cikmJih0JiYodCs9XCJcXG5cIiksdCs9YSl9cmV0dXJuIHR9fV0pLGV9KCk7dC5kZWZhdWx0PWN9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ2NSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NjYpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oOTQpLG89bigxNTkpLGE9bigxNjApO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxuLGk9ZS5zcGFjZSxsPWUubXVzdFVzZVByb3BlcnR5fHxbXSxzPWUuYXR0cmlidXRlc3x8e30sdT1lLnByb3BlcnRpZXMsYz1lLnRyYW5zZm9ybSxkPXt9LHA9e307Zm9yKHQgaW4gdSluPW5ldyBhKHQsYyhzLHQpLHVbdF0saSksLTEhPT1sLmluZGV4T2YodCkmJihuLm11c3RVc2VQcm9wZXJ0eT0hMCksZFt0XT1uLHBbcih0KV09dCxwW3Iobi5hdHRyaWJ1dGUpXT10O3JldHVybiBuZXcgbyhkLHAsaSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oMzU5KX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjb21tb25cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicmVkXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInBpbmtcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicHVycGxlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZXBQdXJwbGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiaW5kaWdvXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHUuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImJsdWVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwibGlnaHRCbHVlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGQuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImN5YW5cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcC5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwidGVhbFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBmLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJncmVlblwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBtLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJsaWdodEdyZWVuXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGcuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImxpbWVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaC5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwieWVsbG93XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGIuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImFtYmVyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHkuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIm9yYW5nZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB2LmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWVwT3JhbmdlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFMuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImJyb3duXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImdyZXlcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geC5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiYmx1ZUdyZXlcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5kZWZhdWx0fX0pO3ZhciBvPXIobigxMjYpKSxhPXIobigxMjUpKSxpPXIobigxMjMpKSxsPXIobig2OTQpKSxzPXIobig2OTUpKSx1PXIobigxMjIpKSxjPXIobig2OTYpKSxkPXIobig2OTcpKSxwPXIobig2OTgpKSxmPXIobig2OTkpKSxtPXIobig3MDApKSxnPXIobig3MDEpKSxoPXIobig3MDIpKSxiPXIobig3MDMpKSx5PXIobig3MDQpKSx2PXIobig3MDUpKSxTPXIobig3MDYpKSxFPXIobig3MDcpKSx4PXIobigxMjQpKSx3PXIobig3MDgpKX0sZnVuY3Rpb24oZSl7ZS5leHBvcnRzPXtuYW1lOlwibWF0ZXJpYWwtbXVsdGktcGlja2VyXCIsdmVyc2lvbjpcIjEuNS4xXCIsZGVzY3JpcHRpb246XCJBIHR5cGVhaGVhZCBtdWx0aXNlbGVjdCBjb21wb25lbnQgZm9yIFJlYWN0IGFuZCBNYXRlcmlhbCBVSVwiLG1haW46XCJsaWIvaW5kZXguanNcIixyZXBvc2l0b3J5Ont0eXBlOlwiZ2l0XCIsdXJsOlwiaHR0cHM6Ly9naXRodWIuY29tL2F0cm9wb3MtdGVjaC9tYXRlcmlhbC1tdWx0aS1waWNrZXJcIn0saG9tZXBhZ2U6XCJodHRwczovL2F0cm9wb3MtdGVjaC5naXRodWIuaW8vbWF0ZXJpYWwtbXVsdGktcGlja2VyL2luZGV4Lmh0bWxcIixidWdzOnt1cmw6XCJodHRwczovL2dpdGh1Yi5jb20vYXRyb3Bvcy10ZWNoL21hdGVyaWFsLW11bHRpLXBpY2tlci9pc3N1ZXNcIn0sc2NyaXB0czp7dGVzdDpcImplc3QgLS13YXRjaCAtLWNvdmVyYWdlIC0tbm8tY2FjaGUgLS1ydW5JbkJhbmRcIixcInRlc3QtY2lcIjpcImplc3QgLS1jb3ZlcmFnZSAtLWNpIC0tbm8tY2FjaGUgLS1ydW5JbkJhbmQgLS1yZXBvcnRlcnM9amVzdC1qdW5pdCAmJiBjb2RlY292XCIsXCJkZXYtZG9jc1wiOlwid2VicGFjay1kZXYtc2VydmVyIC0tY29uZmlnIHdlYnBhY2suY29uZmlnLmpzIC0taG90IC0taW5saW5lIC0tY29sb3IgLS1wcm9ncmVzcyAtLW9wZW4gLS1tb2RlIGRldmVsb3BtZW50XCIsdHJhbnNwaWxlOidiYWJlbCBzcmMgLS1vdXQtZGlyIGxpYiAtLWlnbm9yZSBcInNyYy8qKi8qLnNwZWMuanNcIicsXCJidWlsZC1kb2NzXCI6XCJyaW1yYWYgLi9kb2NzICYmIHdlYnBhY2sgLS1jb25maWcgd2VicGFjay5jb25maWcuanMgLS1tb2RlPXByb2R1Y3Rpb24gJiYgY29weWZpbGVzIC11IDEgLi9wdWJsaWMvKiAuL2RvY3NcIixsaW50OlwiZXNsaW50IHNyY1wiLHN0YXJ0OlwibnBtIHJ1biBkZXYtZG9jc1wifSxrZXl3b3JkczpbXCJyZWFjdC1jb21wb25lbnRcIixcInJlYWN0XCIsXCJkb3duc2hpZnRcIixcInBpY2tlclwiLFwibWF0ZXJpYWwtdWlcIl0sYXV0aG9yOlwiRHVuY2FuIFRoYWNrZXIgKGR1bmNhbi50aGFja2VyQGF0cm9wb3MuY28udWspXCIsbGljZW5zZTpcIk1JVFwiLGRlcGVuZGVuY2llczp7ZG93bnNoaWZ0OlwiXjMuMi42XCIsXCJyZWFjdC1kZWJvdW5jZS1yZW5kZXJcIjpcIl41LjAuMFwifSxkZXZEZXBlbmRlbmNpZXM6e1wiQGJhYmVsL2NsaVwiOlwiXjcuMi4zXCIsXCJAYmFiZWwvY29yZVwiOlwiXjcuMy40XCIsXCJAYmFiZWwvcHJlc2V0LWVudlwiOlwiXjcuMy40XCIsXCJAYmFiZWwvcHJlc2V0LXJlYWN0XCI6XCJeNy4wLjBcIixcIkBiYWJlbC9ydW50aW1lXCI6XCJeNy4zLjRcIixcIkBtYXRlcmlhbC11aS9jb3JlXCI6XCJeMy45LjJcIixcImJhYmVsLWVzbGludFwiOlwiXjEwLjAuMVwiLFwiYmFiZWwtbG9hZGVyXCI6XCJeOC4wLjVcIixjb2RlY292OlwiXjMuMi4wXCIsY29weWZpbGVzOlwiXjIuMS4wXCIsXCJkZW1vLXNvdXJjZS1sb2FkZXJcIjpcIl4wLjEuMFwiLGVuenltZTpcIl4zLjkuMFwiLFwiZW56eW1lLWFkYXB0ZXItcmVhY3QtMTZcIjpcIl4xLjEwLjBcIixlc2xpbnQ6XCJeNS4xNC4xXCIsXCJlc2xpbnQtcGx1Z2luLWltcG9ydFwiOlwiXjIuMTYuMFwiLFwiZXNsaW50LXBsdWdpbi1qZXN0XCI6XCJeMjIuMy4wXCIsXCJlc2xpbnQtcGx1Z2luLXByb21pc2VcIjpcIl40LjAuMVwiLFwiZXNsaW50LXBsdWdpbi1yZWFjdFwiOlwiXjcuMTIuNFwiLFwiZmlsZS1sb2FkZXJcIjpcIl4zLjAuMVwiLGplc3Q6XCJeMjQuMS4wXCIsXCJqZXN0LWVudmlyb25tZW50LWVuenltZVwiOlwiXjcuMC4xXCIsXCJqZXN0LWVuenltZVwiOlwiXjcuMC4xXCIsXCJqZXN0LWp1bml0XCI6XCJeNi4zLjBcIixcInByb3AtdHlwZXNcIjpcIl4xNS43LjJcIixyZWFjdDpcIl4xNi44LjNcIixcInJlYWN0LWN1cnJ5LWNvbXBvbmVudFwiOlwiXjEuMS4wXCIsXCJyZWFjdC1kb21cIjpcIl4xNi44LjNcIixcInJlYWN0LWhpZ2hsaWdodC13b3Jkc1wiOlwiXjAuMTYuMFwiLFwicmVhY3QtanNzXCI6XCJeOC42LjFcIixcInJlYWN0LW1hcmtkb3duXCI6XCJeNC4wLjZcIixcInJlYWN0LXN5bnRheC1oaWdobGlnaHRlclwiOlwiXjEwLjEuM1wiLHJpbXJhZjpcIl4yLjYuM1wiLHdlYnBhY2s6XCJeNC4yOS41XCIsXCJ3ZWJwYWNrLWNsaVwiOlwiXjMuMi4zXCIsXCJ3ZWJwYWNrLWRldi1zZXJ2ZXJcIjpcIl4zLjIuMVwifSxwZWVyRGVwZW5kZW5jaWVzOntyZWFjdDpcIl4xNi4wXCIsXCJAbWF0ZXJpYWwtdWkvY29yZVwiOlwiXjMuMFwifSxqZXN0OntzZXR1cEZpbGVzQWZ0ZXJFbnY6W1wiamVzdC1lbnp5bWVcIl0sdGVzdEVudmlyb25tZW50OlwiZW56eW1lXCIsdGVzdEVudmlyb25tZW50T3B0aW9uczp7ZW56eW1lQWRhcHRlcjpcInJlYWN0MTZcIn0sY29sbGVjdENvdmVyYWdlRnJvbTpbXCJzcmMvKiovKi5qc1wiXSx3YXRjaFBhdGhJZ25vcmVQYXR0ZXJuczpbXCIvZG9jc3JjL1wiXX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyOTYpLG89bigyOTcpLGE9big0MyksaT1uKDI5OCksbD1uKDI5OSkscz1uKDMwMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG4sYSxpPXt9O3R8fCh0PXt9KTtmb3IoYSBpbiBwKW49dFthXSxpW2FdPW51bGw9PW4/cFthXTpuOyhpLnBvc2l0aW9uLmluZGVudHx8aS5wb3NpdGlvbi5zdGFydCkmJihpLmluZGVudD1pLnBvc2l0aW9uLmluZGVudHx8W10saS5wb3NpdGlvbj1pLnBvc2l0aW9uLnN0YXJ0KTtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbixhLGkscCxBLEMsTyxJLE4sUixQLE0sTCxELEYsQixqLFUseixIPXQuYWRkaXRpb25hbCxXPXQubm9uVGVybWluYXRlZCxHPXQudGV4dCxWPXQucmVmZXJlbmNlLCQ9dC53YXJuaW5nLHE9dC50ZXh0Q29udGV4dCxLPXQucmVmZXJlbmNlQ29udGV4dCxZPXQud2FybmluZ0NvbnRleHQsWD10LnBvc2l0aW9uLFo9dC5pbmRlbnR8fFtdLFE9ZS5sZW5ndGgsSj0wLGVlPS0xLHRlPVguY29sdW1ufHwxLG5lPVgubGluZXx8MSxyZT1cIlwiLG9lPVtdO0I9aWUoKSxJPSQ/ZnVuY3Rpb24oZSx0KXt2YXIgbj1pZSgpO24uY29sdW1uKz10LG4ub2Zmc2V0Kz10LCQuY2FsbChZLF9bZV0sbixlKX06ZCxKLS0sUSsrO2Zvcig7KytKPFE7KWlmKFwiXFxuXCI9PT1BJiYodGU9WltlZV18fDEpLFwiJlwiIT09KEE9bGUoSikpKVwiXFxuXCI9PT1BJiYobmUrKyxlZSsrLHRlPTApLEE/KHJlKz1BLHRlKyspOnNlKCk7ZWxzZXtpZihcIlxcdFwiPT09KE89bGUoSisxKSl8fFwiXFxuXCI9PT1PfHxcIlxcZlwiPT09T3x8XCIgXCI9PT1PfHxcIjxcIj09PU98fFwiJlwiPT09T3x8XCJcIj09PU98fEgmJk89PT1IKXtyZSs9QSx0ZSsrO2NvbnRpbnVlfWZvcihNPUw9SisxLHo9TCxcIiNcIiE9PU8/RD1mOih6PSsrTSxcInhcIj09PShPPWxlKHopKXx8XCJYXCI9PT1PPyhEPW0sej0rK00pOkQ9Zyksbj1cIlwiLFA9XCJcIixwPVwiXCIsRj1iW0RdLHotLTsrK3o8USYmKE89bGUoeiksRihPKSk7KXArPU8sRD09PWYmJnUuY2FsbChyLHApJiYobj1wLFA9cltwXSk7KGk9XCI7XCI9PT1sZSh6KSkmJih6KyssKGE9RD09PWYmJnMocCkpJiYobj1wLFA9YSkpLFU9MSt6LUwsKGl8fFcpJiYocD9EPT09Zj8oaSYmIVA/SSh4LDEpOihuIT09cCYmKHo9TStuLmxlbmd0aCxVPTErei1NLGk9ITEpLGl8fChOPW4/eTpTLHQuYXR0cmlidXRlP1wiPVwiPT09KE89bGUoeikpPyhJKE4sVSksUD1udWxsKTpsKE8pP1A9bnVsbDpJKE4sVSk6SShOLFUpKSksQz1QKTooaXx8SSh2LFUpLEM9cGFyc2VJbnQocCxoW0RdKSwoYWU9Qyk+PTU1Mjk2JiZhZTw9NTczNDN8fGFlPjExMTQxMTE/KEkoayxVKSxDPVwi77+9XCIpOkMgaW4gbz8oSSh3LFUpLEM9b1tDXSk6KFI9XCJcIixUKEMpJiZJKHcsVSksQz42NTUzNSYmKFIrPWMoKEMtPTY1NTM2KT4+PjEwfDU1Mjk2KSxDPTU2MzIwfDEwMjMmQyksQz1SK2MoQykpKTpEIT09ZiYmSShFLFUpKSxDPyhzZSgpLEI9aWUoKSxKPXotMSx0ZSs9ei1MKzEsb2UucHVzaChDKSwoaj1pZSgpKS5vZmZzZXQrKyxWJiZWLmNhbGwoSyxDLHtzdGFydDpCLGVuZDpqfSxlLnNsaWNlKEwtMSx6KSksQj1qKToocD1lLnNsaWNlKEwtMSx6KSxyZSs9cCx0ZSs9cC5sZW5ndGgsSj16LTEpfXZhciBhZTtyZXR1cm4gb2Uuam9pbihcIlwiKTtmdW5jdGlvbiBpZSgpe3JldHVybntsaW5lOm5lLGNvbHVtbjp0ZSxvZmZzZXQ6SisoWC5vZmZzZXR8fDApfX1mdW5jdGlvbiBsZSh0KXtyZXR1cm4gZS5jaGFyQXQodCl9ZnVuY3Rpb24gc2UoKXtyZSYmKG9lLnB1c2gocmUpLEcmJkcuY2FsbChxLHJlLHtzdGFydDpCLGVuZDppZSgpfSkscmU9XCJcIil9fShlLGkpfTt2YXIgdT17fS5oYXNPd25Qcm9wZXJ0eSxjPVN0cmluZy5mcm9tQ2hhckNvZGUsZD1GdW5jdGlvbi5wcm90b3R5cGUscD17d2FybmluZzpudWxsLHJlZmVyZW5jZTpudWxsLHRleHQ6bnVsbCx3YXJuaW5nQ29udGV4dDpudWxsLHJlZmVyZW5jZUNvbnRleHQ6bnVsbCx0ZXh0Q29udGV4dDpudWxsLHBvc2l0aW9uOnt9LGFkZGl0aW9uYWw6bnVsbCxhdHRyaWJ1dGU6ITEsbm9uVGVybWluYXRlZDohMH0sZj1cIm5hbWVkXCIsbT1cImhleGFkZWNpbWFsXCIsZz1cImRlY2ltYWxcIixoPXt9O2hbbV09MTYsaFtnXT0xMDt2YXIgYj17fTtiW2ZdPWwsYltnXT1hLGJbbV09aTt2YXIgeT0xLHY9MixTPTMsRT00LHg9NSx3PTYsaz03LF89e307ZnVuY3Rpb24gVChlKXtyZXR1cm4gZT49MSYmZTw9OHx8MTE9PT1lfHxlPj0xMyYmZTw9MzF8fGU+PTEyNyYmZTw9MTU5fHxlPj02NDk3NiYmZTw9NjUwMDd8fDY1NTM1PT0oNjU1MzUmZSl8fDY1NTM0PT0oNjU1MzUmZSl9X1t5XT1cIk5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIG11c3QgYmUgdGVybWluYXRlZCBieSBhIHNlbWljb2xvblwiLF9bdl09XCJOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIG11c3QgYmUgdGVybWluYXRlZCBieSBhIHNlbWljb2xvblwiLF9bU109XCJOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgZW1wdHlcIixfW0VdPVwiTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgZW1wdHlcIixfW3hdPVwiTmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgbXVzdCBiZSBrbm93blwiLF9bd109XCJOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIGNhbm5vdCBiZSBkaXNhbGxvd2VkXCIsX1trXT1cIk51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIG91dHNpZGUgdGhlIHBlcm1pc3NpYmxlIFVuaWNvZGUgcmFuZ2VcIn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1cInN0cmluZ1wiPT10eXBlb2YgZT9lLmNoYXJDb2RlQXQoMCk6ZTtyZXR1cm4gdD49NDgmJnQ8PTU3fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1sO3ZhciByPW4oMzA3KSxvPXIuQ09OVElOVUUsYT1yLlNLSVAsaT1yLkVYSVQ7ZnVuY3Rpb24gbChlLHQsbixvKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBuJiYobz1uLG49dCx0PW51bGwpLHIoZSx0LGZ1bmN0aW9uKGUsdCl7dmFyIHI9dFt0Lmxlbmd0aC0xXSxvPXI/ci5jaGlsZHJlbi5pbmRleE9mKGUpOm51bGw7cmV0dXJuIG4oZSxvLHIpfSxvKX1sLkNPTlRJTlVFPW8sbC5TS0lQPWEsbC5FWElUPWl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBlO3ZhciBuPVwiXCI7aWYoQXJyYXkuaXNBcnJheShlWzBdKSlmb3IodmFyIG89MDtvPGUubGVuZ3RoJiZcIiFpbXBvcnRhbnRcIiE9PWVbb107bysrKW4mJihuKz1cIiwgXCIpLG4rPXIoZVtvXSxcIiBcIik7ZWxzZSBuPXIoZSxcIiwgXCIpO3R8fFwiIWltcG9ydGFudFwiIT09ZVtlLmxlbmd0aC0xXXx8KG4rPVwiICFpbXBvcnRhbnRcIik7cmV0dXJuIG59O3ZhciByPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVwiXCIscj0wO3I8ZS5sZW5ndGgmJlwiIWltcG9ydGFudFwiIT09ZVtyXTtyKyspbiYmKG4rPXQpLG4rPWVbcl07cmV0dXJuIG59fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlwidW5uYW1lZFwiLHQ9YXJndW1lbnRzWzFdLG49YXJndW1lbnRzWzJdLGk9bi5qc3MsbD0oMCxhLmRlZmF1bHQpKHQpLHM9aS5wbHVnaW5zLm9uQ3JlYXRlUnVsZShlLGwsbik7aWYocylyZXR1cm4gcztcIkBcIj09PWVbMF0mJigwLHIuZGVmYXVsdCkoITEsXCJbSlNTXSBVbmtub3duIGF0LXJ1bGUgJXNcIixlKTtyZXR1cm4gbmV3IG8uZGVmYXVsdChlLGwsbil9O3ZhciByPWkobigyOCkpLG89aShuKDMwKSksYT1pKG4oMzYzKSk7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LFwiaXNCcm93c2VyXCIsZnVuY3Rpb24oKXtyZXR1cm4gb30pO3ZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LG89XCJvYmplY3RcIj09PShcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93P1widW5kZWZpbmVkXCI6cih3aW5kb3cpKSYmXCJvYmplY3RcIj09PShcInVuZGVmaW5lZFwiPT10eXBlb2YgZG9jdW1lbnQ/XCJ1bmRlZmluZWRcIjpyKGRvY3VtZW50KSkmJjk9PT1kb2N1bWVudC5ub2RlVHlwZTt0LmRlZmF1bHQ9b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1mdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4hIWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlfShlKSYmIWZ1bmN0aW9uKGUpe3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTtyZXR1cm5cIltvYmplY3QgUmVnRXhwXVwiPT09bnx8XCJbb2JqZWN0IERhdGVdXCI9PT1ufHxmdW5jdGlvbihlKXtyZXR1cm4gZS4kJHR5cGVvZj09PXR9KGUpfShlKX0sdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3I/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDM7ZnVuY3Rpb24gbihlLHQpe3JldHVybiExIT09dC5jbG9uZSYmdC5pc01lcmdlYWJsZU9iamVjdChlKT9vKChuPWUsQXJyYXkuaXNBcnJheShuKT9bXTp7fSksZSx0KTplO3ZhciBufWZ1bmN0aW9uIHIoZSx0LHIpe3JldHVybiBlLmNvbmNhdCh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSxyKX0pfWZ1bmN0aW9uIG8odCxhLGkpeyhpPWl8fHt9KS5hcnJheU1lcmdlPWkuYXJyYXlNZXJnZXx8cixpLmlzTWVyZ2VhYmxlT2JqZWN0PWkuaXNNZXJnZWFibGVPYmplY3R8fGU7dmFyIGw9QXJyYXkuaXNBcnJheShhKSxzPUFycmF5LmlzQXJyYXkodCksdT1sPT09cztyZXR1cm4gdT9sP2kuYXJyYXlNZXJnZSh0LGEsaSk6ZnVuY3Rpb24oZSx0LHIpe3ZhciBhPXt9O3JldHVybiByLmlzTWVyZ2VhYmxlT2JqZWN0KGUpJiZPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2FbdF09bihlW3RdLHIpfSksT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihpKXtyLmlzTWVyZ2VhYmxlT2JqZWN0KHRbaV0pJiZlW2ldP2FbaV09byhlW2ldLHRbaV0scik6YVtpXT1uKHRbaV0scil9KSxhfSh0LGEsaSk6bihhLGkpfXJldHVybiBvLmFsbD1mdW5jdGlvbihlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXRocm93IG5ldyBFcnJvcihcImZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheVwiKTtyZXR1cm4gZS5yZWR1Y2UoZnVuY3Rpb24oZSxuKXtyZXR1cm4gbyhlLG4sdCl9LHt9KX0sb30oKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDE0KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXQuRVhJVElORz10LkVOVEVSRUQ9dC5FTlRFUklORz10LkVYSVRFRD10LlVOTU9VTlRFRD12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikpe3ZhciByPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcj9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik6e307ci5nZXR8fHIuc2V0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4scik6dFtuXT1lW25dfXJldHVybiB0LmRlZmF1bHQ9ZSx0fShuKDEpKSxvPWwobigwKSksYT1sKG4oMjIpKSxpPW4oMTMzKTtuKDQxNyk7ZnVuY3Rpb24gbChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHM9XCJ1bm1vdW50ZWRcIjt0LlVOTU9VTlRFRD1zO3ZhciB1PVwiZXhpdGVkXCI7dC5FWElURUQ9dTt2YXIgYz1cImVudGVyaW5nXCI7dC5FTlRFUklORz1jO3ZhciBkPVwiZW50ZXJlZFwiO3QuRU5URVJFRD1kO3QuRVhJVElORz1cImV4aXRpbmdcIjt2YXIgcD1mdW5jdGlvbihlKXt2YXIgdCxuO2Z1bmN0aW9uIHIodCxuKXt2YXIgcjtyPWUuY2FsbCh0aGlzLHQsbil8fHRoaXM7dmFyIG8sYT1uLnRyYW5zaXRpb25Hcm91cCxpPWEmJiFhLmlzTW91bnRpbmc/dC5lbnRlcjp0LmFwcGVhcjtyZXR1cm4gci5hcHBlYXJTdGF0dXM9bnVsbCx0LmluP2k/KG89dSxyLmFwcGVhclN0YXR1cz1jKTpvPWQ6bz10LnVubW91bnRPbkV4aXR8fHQubW91bnRPbkVudGVyP3M6dSxyLnN0YXRlPXtzdGF0dXM6b30sci5uZXh0Q2FsbGJhY2s9bnVsbCxyfW49ZSwodD1yKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1uO3ZhciBpPXIucHJvdG90eXBlO3JldHVybiBpLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybnt0cmFuc2l0aW9uR3JvdXA6bnVsbH19LHIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaW4mJnQuc3RhdHVzPT09cz97c3RhdHVzOnV9Om51bGx9LGkuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZVN0YXR1cyghMCx0aGlzLmFwcGVhclN0YXR1cyl9LGkuY29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7aWYoZSE9PXRoaXMucHJvcHMpe3ZhciBuPXRoaXMuc3RhdGUuc3RhdHVzO3RoaXMucHJvcHMuaW4/biE9PWMmJm4hPT1kJiYodD1jKTpuIT09YyYmbiE9PWR8fCh0PVwiZXhpdGluZ1wiKX10aGlzLnVwZGF0ZVN0YXR1cyghMSx0KX0saS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCl9LGkuZ2V0VGltZW91dHM9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scj10aGlzLnByb3BzLnRpbWVvdXQ7cmV0dXJuIGU9dD1uPXIsbnVsbCE9ciYmXCJudW1iZXJcIiE9dHlwZW9mIHImJihlPXIuZXhpdCx0PXIuZW50ZXIsbj1yLmFwcGVhcikse2V4aXQ6ZSxlbnRlcjp0LGFwcGVhcjpufX0saS51cGRhdGVTdGF0dXM9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT1lJiYoZT0hMSksbnVsbCE9PXQpe3RoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCk7dmFyIG49YS5kZWZhdWx0LmZpbmRET01Ob2RlKHRoaXMpO3Q9PT1jP3RoaXMucGVyZm9ybUVudGVyKG4sZSk6dGhpcy5wZXJmb3JtRXhpdChuKX1lbHNlIHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCYmdGhpcy5zdGF0ZS5zdGF0dXM9PT11JiZ0aGlzLnNldFN0YXRlKHtzdGF0dXM6c30pfSxpLnBlcmZvcm1FbnRlcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj10aGlzLnByb3BzLmVudGVyLG89dGhpcy5jb250ZXh0LnRyYW5zaXRpb25Hcm91cD90aGlzLmNvbnRleHQudHJhbnNpdGlvbkdyb3VwLmlzTW91bnRpbmc6dCxhPXRoaXMuZ2V0VGltZW91dHMoKTt0fHxyPyh0aGlzLnByb3BzLm9uRW50ZXIoZSxvKSx0aGlzLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOmN9LGZ1bmN0aW9uKCl7bi5wcm9wcy5vbkVudGVyaW5nKGUsbyksbi5vblRyYW5zaXRpb25FbmQoZSxhLmVudGVyLGZ1bmN0aW9uKCl7bi5zYWZlU2V0U3RhdGUoe3N0YXR1czpkfSxmdW5jdGlvbigpe24ucHJvcHMub25FbnRlcmVkKGUsbyl9KX0pfSkpOnRoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6ZH0sZnVuY3Rpb24oKXtuLnByb3BzLm9uRW50ZXJlZChlKX0pfSxpLnBlcmZvcm1FeGl0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLnByb3BzLmV4aXQscj10aGlzLmdldFRpbWVvdXRzKCk7bj8odGhpcy5wcm9wcy5vbkV4aXQoZSksdGhpcy5zYWZlU2V0U3RhdGUoe3N0YXR1czpcImV4aXRpbmdcIn0sZnVuY3Rpb24oKXt0LnByb3BzLm9uRXhpdGluZyhlKSx0Lm9uVHJhbnNpdGlvbkVuZChlLHIuZXhpdCxmdW5jdGlvbigpe3Quc2FmZVNldFN0YXRlKHtzdGF0dXM6dX0sZnVuY3Rpb24oKXt0LnByb3BzLm9uRXhpdGVkKGUpfSl9KX0pKTp0aGlzLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOnV9LGZ1bmN0aW9uKCl7dC5wcm9wcy5vbkV4aXRlZChlKX0pfSxpLmNhbmNlbE5leHRDYWxsYmFjaz1mdW5jdGlvbigpe251bGwhPT10aGlzLm5leHRDYWxsYmFjayYmKHRoaXMubmV4dENhbGxiYWNrLmNhbmNlbCgpLHRoaXMubmV4dENhbGxiYWNrPW51bGwpfSxpLnNhZmVTZXRTdGF0ZT1mdW5jdGlvbihlLHQpe3Q9dGhpcy5zZXROZXh0Q2FsbGJhY2sodCksdGhpcy5zZXRTdGF0ZShlLHQpfSxpLnNldE5leHRDYWxsYmFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49ITA7cmV0dXJuIHRoaXMubmV4dENhbGxiYWNrPWZ1bmN0aW9uKHIpe24mJihuPSExLHQubmV4dENhbGxiYWNrPW51bGwsZShyKSl9LHRoaXMubmV4dENhbGxiYWNrLmNhbmNlbD1mdW5jdGlvbigpe249ITF9LHRoaXMubmV4dENhbGxiYWNrfSxpLm9uVHJhbnNpdGlvbkVuZD1mdW5jdGlvbihlLHQsbil7dGhpcy5zZXROZXh0Q2FsbGJhY2sobiksZT8odGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lciYmdGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcihlLHRoaXMubmV4dENhbGxiYWNrKSxudWxsIT10JiZzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLHQpKTpzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLDApfSxpLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUuc3RhdHVzO2lmKGU9PT1zKXJldHVybiBudWxsO3ZhciB0PXRoaXMucHJvcHMsbj10LmNoaWxkcmVuLHI9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KHQsW1wiY2hpbGRyZW5cIl0pO2lmKGRlbGV0ZSByLmluLGRlbGV0ZSByLm1vdW50T25FbnRlcixkZWxldGUgci51bm1vdW50T25FeGl0LGRlbGV0ZSByLmFwcGVhcixkZWxldGUgci5lbnRlcixkZWxldGUgci5leGl0LGRlbGV0ZSByLnRpbWVvdXQsZGVsZXRlIHIuYWRkRW5kTGlzdGVuZXIsZGVsZXRlIHIub25FbnRlcixkZWxldGUgci5vbkVudGVyaW5nLGRlbGV0ZSByLm9uRW50ZXJlZCxkZWxldGUgci5vbkV4aXQsZGVsZXRlIHIub25FeGl0aW5nLGRlbGV0ZSByLm9uRXhpdGVkLFwiZnVuY3Rpb25cIj09dHlwZW9mIG4pcmV0dXJuIG4oZSxyKTt2YXIgYT1vLmRlZmF1bHQuQ2hpbGRyZW4ub25seShuKTtyZXR1cm4gby5kZWZhdWx0LmNsb25lRWxlbWVudChhLHIpfSxyfShvLmRlZmF1bHQuQ29tcG9uZW50KTtmdW5jdGlvbiBmKCl7fXAuY29udGV4dFR5cGVzPXt0cmFuc2l0aW9uR3JvdXA6ci5vYmplY3R9LHAuY2hpbGRDb250ZXh0VHlwZXM9e3RyYW5zaXRpb25Hcm91cDpmdW5jdGlvbigpe319LHAucHJvcFR5cGVzPXt9LHAuZGVmYXVsdFByb3BzPXtpbjohMSxtb3VudE9uRW50ZXI6ITEsdW5tb3VudE9uRXhpdDohMSxhcHBlYXI6ITEsZW50ZXI6ITAsZXhpdDohMCxvbkVudGVyOmYsb25FbnRlcmluZzpmLG9uRW50ZXJlZDpmLG9uRXhpdDpmLG9uRXhpdGluZzpmLG9uRXhpdGVkOmZ9LHAuVU5NT1VOVEVEPTAscC5FWElURUQ9MSxwLkVOVEVSSU5HPTIscC5FTlRFUkVEPTMscC5FWElUSU5HPTQ7dmFyIG09KDAsaS5wb2x5ZmlsbCkocCk7dC5kZWZhdWx0PW19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQyMSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0MzApKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIk1vZGFsTWFuYWdlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ0NCkpLGE9cihuKDE0NCkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobigwKSkuZGVmYXVsdC5jcmVhdGVDb250ZXh0KCk7dC5kZWZhdWx0PW99LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1uKDY0NSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjb3lcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVChyKS5kZWZhdWx0fX0pO3ZhciBvPW4oNjQ2KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRhcmtcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVChvKS5kZWZhdWx0fX0pO3ZhciBhPW4oNjQ3KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImZ1bmt5XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQoYSkuZGVmYXVsdH19KTt2YXIgaT1uKDY0OCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJva2FpZGlhXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQoaSkuZGVmYXVsdH19KTt2YXIgbD1uKDY0OSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJzb2xhcml6ZWRsaWdodFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKGwpLmRlZmF1bHR9fSk7dmFyIHM9big2NTApO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwidG9tb3Jyb3dcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVChzKS5kZWZhdWx0fX0pO3ZhciB1PW4oNjUxKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInR3aWxpZ2h0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQodSkuZGVmYXVsdH19KTt2YXIgYz1uKDY1Mik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJwcmlzbVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKGMpLmRlZmF1bHR9fSk7dmFyIGQ9big2NTMpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiYXRvbURhcmtcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVChkKS5kZWZhdWx0fX0pO3ZhciBwPW4oNjU0KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImJhc2UxNkF0ZWxpZXJzdWxwaHVycG9vbExpZ2h0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQocCkuZGVmYXVsdH19KTt2YXIgZj1uKDY1NSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjYlwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKGYpLmRlZmF1bHR9fSk7dmFyIG09big2NTYpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGFyY3VsYVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKG0pLmRlZmF1bHR9fSk7dmFyIGc9big2NTcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZHVvdG9uZURhcmtcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVChnKS5kZWZhdWx0fX0pO3ZhciBoPW4oNjU4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImR1b3RvbmVFYXJ0aFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKGgpLmRlZmF1bHR9fSk7dmFyIGI9big2NTkpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZHVvdG9uZUZvcmVzdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKGIpLmRlZmF1bHR9fSk7dmFyIHk9big2NjApO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZHVvdG9uZUxpZ2h0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQoeSkuZGVmYXVsdH19KTt2YXIgdj1uKDY2MSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkdW90b25lU2VhXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQodikuZGVmYXVsdH19KTt2YXIgUz1uKDY2Mik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkdW90b25lU3BhY2VcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVChTKS5kZWZhdWx0fX0pO3ZhciBFPW4oNjYzKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImdoY29sb3JzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQoRSkuZGVmYXVsdH19KTt2YXIgeD1uKDY2NCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJob3BzY290Y2hcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVCh4KS5kZWZhdWx0fX0pO3ZhciB3PW4oNjY1KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInBvam9hcXVlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQodykuZGVmYXVsdH19KTt2YXIgaz1uKDY2Nik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJ2c1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKGspLmRlZmF1bHR9fSk7dmFyIF89big2NjcpO2Z1bmN0aW9uIFQoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwieG9ub2thaVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUKF8pLmRlZmF1bHR9fSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmN1cnJ5PWwsdC5jdXJyeVNvZnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbChlLHQsYS5hbGxvd092ZXJ3cml0ZSl9LHQuY3VycnlIYXJkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwoZSx0LGEuZm9yY2VDdXJyeSl9LHQuY3VycnlTbWFydD1mdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07cmV0dXJuIGwoZSx0LGZ1bmN0aW9uKGUsdCl7cmV0dXJuKDAsYS5tZXJnZUNvbXBsZXhQcm9wcykoZSx0LG4pfSl9O3ZhciByPWkobigwKSksbz1pKG4oMzU2KSksYT1uKDM1Nyk7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbChlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTphLmFsbG93T3ZlcndyaXRlLGk9ZS5wcm9wcyxsPWUudHlwZSxzPWZ1bmN0aW9uKGUpe3ZhciB0PW4oaSxlKTtyZXR1cm4gci5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobCx0KX07cmV0dXJuIHMuZGlzcGxheU5hbWU9dHx8XCJDdXJyaWVkKFwiLmNvbmNhdCgoMCxvLmRlZmF1bHQpKGwpLFwiKVwiKSxzLnByb3BUeXBlcz1sLnByb3BUeXBlcyxzfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30sbz1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYobz1vLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLG8uZm9yRWFjaChmdW5jdGlvbih0KXtyKGUsdCxuW3RdKX0pfXJldHVybiBlfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO1xuLyohXG4gKiByZXBlYXQtc3RyaW5nIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9yZXBlYXQtc3RyaW5nPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE1LCBKb24gU2NobGlua2VydC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL3ZhciByLG89XCJcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihcInN0cmluZ1wiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiZXhwZWN0ZWQgYSBzdHJpbmdcIik7aWYoMT09PXQpcmV0dXJuIGU7aWYoMj09PXQpcmV0dXJuIGUrZTt2YXIgbj1lLmxlbmd0aCp0O2lmKHIhPT1lfHx2b2lkIDA9PT1yKXI9ZSxvPVwiXCI7ZWxzZSBpZihvLmxlbmd0aD49bilyZXR1cm4gby5zdWJzdHIoMCxuKTtmb3IoO24+by5sZW5ndGgmJnQ+MTspMSZ0JiYobys9ZSksdD4+PTEsZSs9ZTtyZXR1cm4gbz0obys9ZSkuc3Vic3RyKDAsbil9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhlKSxuPXQubGVuZ3RoO2Zvcig7dC5jaGFyQXQoLS1uKT09PXI7KTtyZXR1cm4gdC5zbGljZSgwLG4rMSl9O3ZhciByPVwiXFxuXCJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8sYSxpLGwscyx1LGM9W1wicGVkYW50aWNcIixcImNvbW1vbm1hcmtcIl0sZD1jLmxlbmd0aCxwPWUubGVuZ3RoLGY9LTE7Zm9yKDsrK2Y8cDspe2ZvcihvPWVbZl0sYT1vWzFdfHx7fSxpPW9bMF0sbD0tMSx1PSExOysrbDxkOylpZih2b2lkIDAhPT1hW3M9Y1tsXV0mJmFbc10hPT1uLm9wdGlvbnNbc10pe3U9ITA7YnJlYWt9aWYoIXUmJnRbaV0uYXBwbHkobixyKSlyZXR1cm4hMH1yZXR1cm4hMX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDMyMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKGUpLnRvTG93ZXJDYXNlKCl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigzOSksbz17Y2hpbGRDb250ZXh0VHlwZXM6ITAsY29udGV4dFR5cGU6ITAsY29udGV4dFR5cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxnZXREZWZhdWx0UHJvcHM6ITAsZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiEwLGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczohMCxtaXhpbnM6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LGE9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0saT17JCR0eXBlb2Y6ITAsY29tcGFyZTohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LGw9e307ZnVuY3Rpb24gcyhlKXtyZXR1cm4gci5pc01lbW8oZSk/aTpsW2UuJCR0eXBlb2ZdfHxvfWxbci5Gb3J3YXJkUmVmXT17JCR0eXBlb2Y6ITAscmVuZGVyOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxwcm9wVHlwZXM6ITB9O3ZhciB1PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLGQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxwPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsZj1PYmplY3QuZ2V0UHJvdG90eXBlT2YsbT1PYmplY3QucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQsbixyKXtpZihcInN0cmluZ1wiIT10eXBlb2Ygbil7aWYobSl7dmFyIG89ZihuKTtvJiZvIT09bSYmZSh0LG8scil9dmFyIGk9YyhuKTtkJiYoaT1pLmNvbmNhdChkKG4pKSk7Zm9yKHZhciBsPXModCksZz1zKG4pLGg9MDtoPGkubGVuZ3RoOysraCl7dmFyIGI9aVtoXTtpZighKGFbYl18fHImJnJbYl18fGcmJmdbYl18fGwmJmxbYl0pKXt2YXIgeT1wKG4sYik7dHJ5e3UodCxiLHkpfWNhdGNoKGUpe319fXJldHVybiB0fXJldHVybiB0fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxyPVwiXCI7aWYoIXQpcmV0dXJuIHI7dmFyIG89bi5pbmRlbnQsbD12b2lkIDA9PT1vPzA6byxzPXQuZmFsbGJhY2tzO2lmKGwrKyxzKWlmKEFycmF5LmlzQXJyYXkocykpZm9yKHZhciB1PTA7dTxzLmxlbmd0aDt1Kyspe3ZhciBjPXNbdV07Zm9yKHZhciBkIGluIGMpe3ZhciBwPWNbZF07bnVsbCE9cCYmKHIrPVwiXFxuXCIraShkK1wiOiBcIisoMCxhLmRlZmF1bHQpKHApK1wiO1wiLGwpKX19ZWxzZSBmb3IodmFyIGYgaW4gcyl7dmFyIG09c1tmXTtudWxsIT1tJiYocis9XCJcXG5cIitpKGYrXCI6IFwiKygwLGEuZGVmYXVsdCkobSkrXCI7XCIsbCkpfWZvcih2YXIgZyBpbiB0KXt2YXIgaD10W2ddO251bGwhPWgmJlwiZmFsbGJhY2tzXCIhPT1nJiYocis9XCJcXG5cIitpKGcrXCI6IFwiKygwLGEuZGVmYXVsdCkoaCkrXCI7XCIsbCkpfXJldHVybiByfHxuLmFsbG93RW1wdHk/cj1pKGUrXCIge1wiK3IrXCJcXG5cIiwtLWwpK2koXCJ9XCIsbCk6cn07dmFyIHIsbz1uKDQ2KSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTtmdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciBuPVwiXCIscj0wO3I8dDtyKyspbis9XCIgIFwiO3JldHVybiBuK2V9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHIsbz1uKDExNSksYT0ocj1vKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07dC5kZWZhdWx0PW5ldyBhLmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcixvPW4oNDgpO3ZhciBhPVwiXCIsaT1cIlwiO2lmKCgocj1vKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn0pLmRlZmF1bHQpe3ZhciBsPXtNb3o6XCItbW96LVwiLG1zOlwiLW1zLVwiLE86XCItby1cIixXZWJraXQ6XCItd2Via2l0LVwifSxzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJwXCIpLnN0eWxlO2Zvcih2YXIgdSBpbiBsKWlmKHUrXCJUcmFuc2Zvcm1cImluIHMpe2E9dSxpPWxbdV07YnJlYWt9fXQuZGVmYXVsdD17anM6YSxjc3M6aX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7cihuKDkpKTt2YXIgbz1yKG4oNCkpLGE9cihuKDUpKSxpPXIobig0OSkpLGw9cihuKDM5NCkpLHM9KHIobigxNykpLHIobigzOTYpKSksdT1yKG4oMzk3KSksYz1yKG4oMzk4KSksZD1yKG4oMzk5KSkscD1yKG4oNDAwKSksZj1yKG4oNDAxKSksbT1yKG4oNDAyKSksZz1yKG4oNjgpKSxoPXIobig0MDMpKTt2YXIgYj1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWUuYnJlYWtwb2ludHMsbj12b2lkIDA9PT10P3t9OnQscj1lLm1peGlucyxiPXZvaWQgMD09PXI/e306cix5PWUucGFsZXR0ZSx2PXZvaWQgMD09PXk/e306eSxTPWUuc2hhZG93cyxFPWUuc3BhY2luZyx4PXZvaWQgMD09PUU/e306RSx3PWUudHlwb2dyYXBoeSxrPXZvaWQgMD09PXc/e306dyxfPSgwLGEuZGVmYXVsdCkoZSxbXCJicmVha3BvaW50c1wiLFwibWl4aW5zXCIsXCJwYWxldHRlXCIsXCJzaGFkb3dzXCIsXCJzcGFjaW5nXCIsXCJ0eXBvZ3JhcGh5XCJdKSxUPSgwLGMuZGVmYXVsdCkodiksQT0oMCxzLmRlZmF1bHQpKG4pLEM9KDAsby5kZWZhdWx0KSh7fSxtLmRlZmF1bHQseCk7cmV0dXJuKDAsby5kZWZhdWx0KSh7YnJlYWtwb2ludHM6QSxkaXJlY3Rpb246XCJsdHJcIixtaXhpbnM6KDAsdS5kZWZhdWx0KShBLEMsYiksb3ZlcnJpZGVzOnt9LHBhbGV0dGU6VCxwcm9wczp7fSxzaGFkb3dzOlN8fHAuZGVmYXVsdCx0eXBvZ3JhcGh5OigwLGQuZGVmYXVsdCkoVCxrKX0sKDAsaS5kZWZhdWx0KSh7c2hhcGU6Zi5kZWZhdWx0LHNwYWNpbmc6Qyx0cmFuc2l0aW9uczpnLmRlZmF1bHQsekluZGV4OmguZGVmYXVsdH0sXyx7aXNNZXJnZWFibGVPYmplY3Q6bC5kZWZhdWx0fSkpfTt0LmRlZmF1bHQ9Yn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuaXNOdW1iZXI9dC5pc1N0cmluZz10LmZvcm1hdE1zPXQuZHVyYXRpb249dC5lYXNpbmc9dm9pZCAwO3ZhciBvPXIobig1KSksYT0ocihuKDE3KSkse2Vhc2VJbk91dDpcImN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSlcIixlYXNlT3V0OlwiY3ViaWMtYmV6aWVyKDAuMCwgMCwgMC4yLCAxKVwiLGVhc2VJbjpcImN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpXCIsc2hhcnA6XCJjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpXCJ9KTt0LmVhc2luZz1hO3ZhciBpPXtzaG9ydGVzdDoxNTAsc2hvcnRlcjoyMDAsc2hvcnQ6MjUwLHN0YW5kYXJkOjMwMCxjb21wbGV4OjM3NSxlbnRlcmluZ1NjcmVlbjoyMjUsbGVhdmluZ1NjcmVlbjoxOTV9O3QuZHVyYXRpb249aTt2YXIgbD1mdW5jdGlvbihlKXtyZXR1cm5cIlwiLmNvbmNhdChNYXRoLnJvdW5kKGUpLFwibXNcIil9O3QuZm9ybWF0TXM9bDt0LmlzU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfTt0LmlzTnVtYmVyPWZ1bmN0aW9uKGUpe3JldHVybiFpc05hTihwYXJzZUZsb2F0KGUpKX07dmFyIHM9e2Vhc2luZzphLGR1cmF0aW9uOmksY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltcImFsbFwiXSx0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPXQuZHVyYXRpb24scj12b2lkIDA9PT1uP2kuc3RhbmRhcmQ6bixzPXQuZWFzaW5nLHU9dm9pZCAwPT09cz9hLmVhc2VJbk91dDpzLGM9dC5kZWxheSxkPXZvaWQgMD09PWM/MDpjOygwLG8uZGVmYXVsdCkodCxbXCJkdXJhdGlvblwiLFwiZWFzaW5nXCIsXCJkZWxheVwiXSk7cmV0dXJuKEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm5cIlwiLmNvbmNhdChlLFwiIFwiKS5jb25jYXQoXCJzdHJpbmdcIj09dHlwZW9mIHI/cjpsKHIpLFwiIFwiKS5jb25jYXQodSxcIiBcIikuY29uY2F0KFwic3RyaW5nXCI9PXR5cGVvZiBkP2Q6bChkKSl9KS5qb2luKFwiLFwiKX0sZ2V0QXV0b0hlaWdodER1cmF0aW9uOmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiAwO3ZhciB0PWUvMzY7cmV0dXJuIE1hdGgucm91bmQoMTAqKDQrMTUqTWF0aC5wb3codCwuMjUpK3QvNSkpfX07dC5kZWZhdWx0PXN9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LkNIQU5ORUw9dm9pZCAwO3ZhciBvPXIobig5KSksYT1cIl9fVEhFTUlOR19fXCI7dC5DSEFOTkVMPWE7dmFyIGk9e2NvbnRleHRUeXBlczooMCxvLmRlZmF1bHQpKHt9LGEsZnVuY3Rpb24oKXt9KSxpbml0aWFsOmZ1bmN0aW9uKGUpe3JldHVybiBlW2FdP2VbYV0uZ2V0U3RhdGUoKTpudWxsfSxzdWJzY3JpYmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVthXT9lW2FdLnN1YnNjcmliZSh0KTpudWxsfSx1bnN1YnNjcmliZTpmdW5jdGlvbihlLHQpe2VbYV0mJmVbYV0udW5zdWJzY3JpYmUodCl9fTt0LmRlZmF1bHQ9aX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2V0VHJhbnNpdGlvblByb3BzPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS50aW1lb3V0LHI9ZS5zdHlsZSxvPXZvaWQgMD09PXI/e306cjtyZXR1cm57ZHVyYXRpb246by50cmFuc2l0aW9uRHVyYXRpb258fFwibnVtYmVyXCI9PXR5cGVvZiBuP246blt0Lm1vZGVdLGRlbGF5Om8udHJhbnNpdGlvbkRlbGF5fX0sdC5yZWZsb3c9dm9pZCAwO3QucmVmbG93PWZ1bmN0aW9uKGUpe3JldHVybiBlLnNjcm9sbFRvcH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQxOSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbnVsbCE9ZSYmIShBcnJheS5pc0FycmF5KGUpJiYwPT09ZS5sZW5ndGgpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuaGFzVmFsdWU9cix0LmlzRmlsbGVkPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07cmV0dXJuIGUmJihyKGUudmFsdWUpJiZcIlwiIT09ZS52YWx1ZXx8dCYmcihlLmRlZmF1bHRWYWx1ZSkmJlwiXCIhPT1lLmRlZmF1bHRWYWx1ZSl9LHQuaXNBZG9ybmVkU3RhcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RhcnRBZG9ybm1lbnR9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobigwKSkuZGVmYXVsdC5jcmVhdGVDb250ZXh0KCk7dC5kZWZhdWx0PW99LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQyMykpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0MjQpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDI1KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQyOSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobigyNikpO3ZhciBhPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp3aW5kb3csbj0oMCxvLmRlZmF1bHQpKGUpO3JldHVybiBuLmRlZmF1bHRWaWV3fHxuLnBhcmVudFZpZXd8fHR9O3QuZGVmYXVsdD1hfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0MzEpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDQyKSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ0MykpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NDUpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDQ2KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ1NykpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NTgpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbyxhPXIobig0KSksaT1yKG4oNSkpLGw9cihuKDEyKSkscz1yKG4oMTMpKSx1PXIobigxNCkpLGM9cihuKDE1KSksZD1yKG4oMTYpKSxwPXIobigwKSksZj0ocihuKDEpKSxyKG4oNjMpKSksbT1uKDcpLGc9cihuKDY3KSksaD1yKG4oNjkpKTttLnBvbnlmaWxsR2xvYmFsLl9fTVVJX1NUWUxFU19ffHwobS5wb255ZmlsbEdsb2JhbC5fX01VSV9TVFlMRVNfXz17fSksbS5wb255ZmlsbEdsb2JhbC5fX01VSV9TVFlMRVNfXy53aXRoVGhlbWV8fChtLnBvbnlmaWxsR2xvYmFsLl9fTVVJX1NUWUxFU19fLndpdGhUaGVtZT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsdCl7dmFyIHI7cmV0dXJuKDAsbC5kZWZhdWx0KSh0aGlzLG4pLChyPSgwLHUuZGVmYXVsdCkodGhpcywoMCxjLmRlZmF1bHQpKG4pLmNhbGwodGhpcykpKS5zdGF0ZT17dGhlbWU6aC5kZWZhdWx0LmluaXRpYWwodCl8fG98fChvPSgwLGcuZGVmYXVsdCkoe3R5cG9ncmFwaHk6e3N1cHByZXNzV2FybmluZzohMH19KSl9LHJ9cmV0dXJuKDAsZC5kZWZhdWx0KShuLHQpLCgwLHMuZGVmYXVsdCkobixbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMudW5zdWJzY3JpYmVJZD1oLmRlZmF1bHQuc3Vic2NyaWJlKHRoaXMuY29udGV4dCxmdW5jdGlvbih0KXtlLnNldFN0YXRlKHt0aGVtZTp0fSl9KX19LHtrZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMudW5zdWJzY3JpYmVJZCYmaC5kZWZhdWx0LnVuc3Vic2NyaWJlKHRoaXMuY29udGV4dCx0aGlzLnVuc3Vic2NyaWJlSWQpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQuaW5uZXJSZWYscj0oMCxpLmRlZmF1bHQpKHQsW1wiaW5uZXJSZWZcIl0pO3JldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChlLCgwLGEuZGVmYXVsdCkoe3RoZW1lOnRoaXMuc3RhdGUudGhlbWUscmVmOm59LHIpKX19XSksbn0ocC5kZWZhdWx0LkNvbXBvbmVudCk7cmV0dXJuIHQuY29udGV4dFR5cGVzPWguZGVmYXVsdC5jb250ZXh0VHlwZXMsKDAsZi5kZWZhdWx0KSh0LGUpLHR9fSk7dmFyIGI9bS5wb255ZmlsbEdsb2JhbC5fX01VSV9TVFlMRVNfXy53aXRoVGhlbWU7dC5kZWZhdWx0PWJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ1OSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NjApKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDYzKSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ2NCkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NzEpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDc5KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ4MCkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9MDtmdW5jdGlvbiBvKCl7cmV0dXJuIE1hdGgucG93KDIsKytyKX10LmJvb2xlYW49bygpLHQuYm9vbGVhbmlzaD1vKCksdC5vdmVybG9hZGVkQm9vbGVhbj1vKCksdC5udW1iZXI9bygpLHQuc3BhY2VTZXBhcmF0ZWQ9bygpLHQuY29tbWFTZXBhcmF0ZWQ9bygpLHQuY29tbWFPclNwYWNlU2VwYXJhdGVkPW8oKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMzQpO2Z1bmN0aW9uIG8oZSl7ZS5yZWdpc3RlcihyKSxlLmxhbmd1YWdlcy5jcHA9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY1wiLHtrZXl3b3JkOi9cXGIoPzphbGlnbmFzfGFsaWdub2Z8YXNtfGF1dG98Ym9vbHxicmVha3xjYXNlfGNhdGNofGNoYXJ8Y2hhcjE2X3R8Y2hhcjMyX3R8Y2xhc3N8Y29tcGx8Y29uc3R8Y29uc3RleHByfGNvbnN0X2Nhc3R8Y29udGludWV8ZGVjbHR5cGV8ZGVmYXVsdHxkZWxldGV8ZG98ZG91YmxlfGR5bmFtaWNfY2FzdHxlbHNlfGVudW18ZXhwbGljaXR8ZXhwb3J0fGV4dGVybnxmbG9hdHxmb3J8ZnJpZW5kfGdvdG98aWZ8aW5saW5lfGludHxpbnQ4X3R8aW50MTZfdHxpbnQzMl90fGludDY0X3R8dWludDhfdHx1aW50MTZfdHx1aW50MzJfdHx1aW50NjRfdHxsb25nfG11dGFibGV8bmFtZXNwYWNlfG5ld3xub2V4Y2VwdHxudWxscHRyfG9wZXJhdG9yfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZWdpc3RlcnxyZWludGVycHJldF9jYXN0fHJldHVybnxzaG9ydHxzaWduZWR8c2l6ZW9mfHN0YXRpY3xzdGF0aWNfYXNzZXJ0fHN0YXRpY19jYXN0fHN0cnVjdHxzd2l0Y2h8dGVtcGxhdGV8dGhpc3x0aHJlYWRfbG9jYWx8dGhyb3d8dHJ5fHR5cGVkZWZ8dHlwZWlkfHR5cGVuYW1lfHVuaW9ufHVuc2lnbmVkfHVzaW5nfHZpcnR1YWx8dm9pZHx2b2xhdGlsZXx3Y2hhcl90fHdoaWxlKVxcYi8sYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvLG9wZXJhdG9yOi8tLT98XFwrXFwrP3whPT98PHsxLDJ9PT98PnsxLDJ9PT98LT58OnsxLDJ9fD17MSwyfXxcXF58fnwlfCZ7MSwyfXxcXHxcXHw/fFxcP3xcXCp8XFwvfFxcYig/OmFuZHxhbmRfZXF8Yml0YW5kfGJpdG9yfG5vdHxub3RfZXF8b3J8b3JfZXF8eG9yfHhvcl9lcSlcXGIvfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiY3BwXCIsXCJrZXl3b3JkXCIse1wiY2xhc3MtbmFtZVwiOntwYXR0ZXJuOi8oY2xhc3NcXHMrKVxcdysvaSxsb29rYmVoaW5kOiEwfX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImNwcFwiLFwic3RyaW5nXCIse1wicmF3LXN0cmluZ1wiOntwYXR0ZXJuOi9SXCIoW14oKVxcXFwgXXswLDE2fSlcXChbXFxzXFxTXSo/XFwpXFwxXCIvLGFsaWFzOlwic3RyaW5nXCIsZ3JlZWR5OiEwfX0pfWUuZXhwb3J0cz1vLG8uZGlzcGxheU5hbWU9XCJjcHBcIixvLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5ydWJ5PWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2NvbW1lbnQ6Wy8jLiovLHtwYXR0ZXJuOi9ePWJlZ2luKD86XFxyP1xcbnxcXHIpKD86LiooPzpcXHI/XFxufFxccikpKj89ZW5kL20sZ3JlZWR5OiEwfV0sa2V5d29yZDovXFxiKD86YWxpYXN8YW5kfEJFR0lOfGJlZ2lufGJyZWFrfGNhc2V8Y2xhc3N8ZGVmfGRlZmluZV9tZXRob2R8ZGVmaW5lZHxkb3xlYWNofGVsc2V8ZWxzaWZ8RU5EfGVuZHxlbnN1cmV8ZmFsc2V8Zm9yfGlmfGlufG1vZHVsZXxuZXd8bmV4dHxuaWx8bm90fG9yfHByb3RlY3RlZHxwcml2YXRlfHB1YmxpY3xyYWlzZXxyZWRvfHJlcXVpcmV8cmVzY3VlfHJldHJ5fHJldHVybnxzZWxmfHN1cGVyfHRoZW58dGhyb3d8dHJ1ZXx1bmRlZnx1bmxlc3N8dW50aWx8d2hlbnx3aGlsZXx5aWVsZClcXGIvfSk7dmFyIHQ9e3BhdHRlcm46LyNcXHtbXn1dK1xcfS8saW5zaWRlOntkZWxpbWl0ZXI6e3BhdHRlcm46L14jXFx7fFxcfSQvLGFsaWFzOlwidGFnXCJ9LHJlc3Q6ZS5sYW5ndWFnZXMucnVieX19O2UubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInJ1YnlcIixcImtleXdvcmRcIix7cmVnZXg6W3twYXR0ZXJuOi8lcihbXmEtekEtWjAtOVxcc3soXFxbPF0pKD86KD8hXFwxKVteXFxcXF18XFxcXFtcXHNcXFNdKSpcXDFbZ2ltXXswLDN9LyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOnR9fSx7cGF0dGVybjovJXJcXCgoPzpbXigpXFxcXF18XFxcXFtcXHNcXFNdKSpcXClbZ2ltXXswLDN9LyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOnR9fSx7cGF0dGVybjovJXJcXHsoPzpbXiN7fVxcXFxdfCMoPzpcXHtbXn1dK1xcfSk/fFxcXFxbXFxzXFxTXSkqXFx9W2dpbV17MCwzfS8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp0fX0se3BhdHRlcm46LyVyXFxbKD86W15cXFtcXF1cXFxcXXxcXFxcW1xcc1xcU10pKlxcXVtnaW1dezAsM30vLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246dH19LHtwYXR0ZXJuOi8lcjwoPzpbXjw+XFxcXF18XFxcXFtcXHNcXFNdKSo+W2dpbV17MCwzfS8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp0fX0se3BhdHRlcm46LyhefFteXFwvXSlcXC8oPyFcXC8pKFxcWy4rP118XFxcXC58W15cXC9cXFxcXFxyXFxuXSkrXFwvW2dpbV17MCwzfSg/PVxccyooJHxbXFxyXFxuLC47fSldKSkvLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfV0sdmFyaWFibGU6L1tAJF0rW2EtekEtWl9dXFx3Kig/Ols/IV18XFxiKS8sc3ltYm9sOntwYXR0ZXJuOi8oXnxbXjpdKTpbYS16QS1aX11cXHcqKD86Wz8hXXxcXGIpLyxsb29rYmVoaW5kOiEwfX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInJ1YnlcIixcIm51bWJlclwiLHtidWlsdGluOi9cXGIoPzpBcnJheXxCaWdudW18QmluZGluZ3xDbGFzc3xDb250aW51YXRpb258RGlyfEV4Y2VwdGlvbnxGYWxzZUNsYXNzfEZpbGV8U3RhdHxGaXhudW18RmxvYXR8SGFzaHxJbnRlZ2VyfElPfE1hdGNoRGF0YXxNZXRob2R8TW9kdWxlfE5pbENsYXNzfE51bWVyaWN8T2JqZWN0fFByb2N8UmFuZ2V8UmVnZXhwfFN0cmluZ3xTdHJ1Y3R8VE1TfFN5bWJvbHxUaHJlYWRHcm91cHxUaHJlYWR8VGltZXxUcnVlQ2xhc3MpXFxiLyxjb25zdGFudDovXFxiW0EtWl1cXHcqKD86Wz8hXXxcXGIpL30pLGUubGFuZ3VhZ2VzLnJ1Ynkuc3RyaW5nPVt7cGF0dGVybjovJVtxUWlJd1d4c10/KFteYS16QS1aMC05XFxzeyhcXFs8XSkoPzooPyFcXDEpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMS8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp0fX0se3BhdHRlcm46LyVbcVFpSXdXeHNdP1xcKCg/OlteKClcXFxcXXxcXFxcW1xcc1xcU10pKlxcKS8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp0fX0se3BhdHRlcm46LyVbcVFpSXdXeHNdP1xceyg/OlteI3t9XFxcXF18Iyg/Olxce1tefV0rXFx9KT98XFxcXFtcXHNcXFNdKSpcXH0vLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246dH19LHtwYXR0ZXJuOi8lW3FRaUl3V3hzXT9cXFsoPzpbXlxcW1xcXVxcXFxdfFxcXFxbXFxzXFxTXSkqXFxdLyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOnR9fSx7cGF0dGVybjovJVtxUWlJd1d4c10/PCg/OltePD5cXFxcXXxcXFxcW1xcc1xcU10pKj4vLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246dH19LHtwYXR0ZXJuOi8oXCJ8JykoPzojXFx7W159XStcXH18XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp0fX1dfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicnVieVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO1xuLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiovdmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKFwiYWJjXCIpO2lmKGVbNV09XCJkZVwiLFwiNVwiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LG49MDtuPDEwO24rKyl0W1wiX1wiK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47aWYoXCIwMTIzNDU2Nzg5XCIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KS5qb2luKFwiXCIpKXJldHVybiExO3ZhciByPXt9O3JldHVyblwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIi5zcGxpdChcIlwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JbZV09ZX0pLFwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIj09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30scikpLmpvaW4oXCJcIil9Y2F0Y2goZSl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4saSxsPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBPYmplY3QoZSl9KGUpLHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXtmb3IodmFyIHUgaW4gbj1PYmplY3QoYXJndW1lbnRzW3NdKSlvLmNhbGwobix1KSYmKGxbdV09blt1XSk7aWYocil7aT1yKG4pO2Zvcih2YXIgYz0wO2M8aS5sZW5ndGg7YysrKWEuY2FsbChuLGlbY10pJiYobFtpW2NdXT1uW2lbY11dKX19cmV0dXJuIGx9fSxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1lLmV4cG9ydHM9e307ZnVuY3Rpb24gYSgpe3Rocm93IG5ldyBFcnJvcihcInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWRcIil9ZnVuY3Rpb24gaSgpe3Rocm93IG5ldyBFcnJvcihcImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBsKGUpe2lmKG49PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKG49PT1hfHwhbikmJnNldFRpbWVvdXQpcmV0dXJuIG49c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiBuKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiBuLmNhbGwobnVsbCxlLDApfWNhdGNoKHQpe3JldHVybiBuLmNhbGwodGhpcyxlLDApfX19IWZ1bmN0aW9uKCl7dHJ5e249XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OmF9Y2F0Y2goZSl7bj1hfXRyeXtyPVwiZnVuY3Rpb25cIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6aX1jYXRjaChlKXtyPWl9fSgpO3ZhciBzLHU9W10sYz0hMSxkPS0xO2Z1bmN0aW9uIHAoKXtjJiZzJiYoYz0hMSxzLmxlbmd0aD91PXMuY29uY2F0KHUpOmQ9LTEsdS5sZW5ndGgmJmYoKSl9ZnVuY3Rpb24gZigpe2lmKCFjKXt2YXIgZT1sKHApO2M9ITA7Zm9yKHZhciB0PXUubGVuZ3RoO3Q7KXtmb3Iocz11LHU9W107KytkPHQ7KXMmJnNbZF0ucnVuKCk7ZD0tMSx0PXUubGVuZ3RofXM9bnVsbCxjPSExLGZ1bmN0aW9uKGUpe2lmKHI9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigocj09PWl8fCFyKSYmY2xlYXJUaW1lb3V0KXJldHVybiByPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e3IoZSl9Y2F0Y2godCl7dHJ5e3JldHVybiByLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gci5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIG0oZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1mdW5jdGlvbiBnKCl7fW8ubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt1LnB1c2gobmV3IG0oZSx0KSksMSE9PXUubGVuZ3RofHxjfHxsKGYpfSxtLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxvLnRpdGxlPVwiYnJvd3NlclwiLG8uYnJvd3Nlcj0hMCxvLmVudj17fSxvLmFyZ3Y9W10sby52ZXJzaW9uPVwiXCIsby52ZXJzaW9ucz17fSxvLm9uPWcsby5hZGRMaXN0ZW5lcj1nLG8ub25jZT1nLG8ub2ZmPWcsby5yZW1vdmVMaXN0ZW5lcj1nLG8ucmVtb3ZlQWxsTGlzdGVuZXJzPWcsby5lbWl0PWcsby5wcmVwZW5kTGlzdGVuZXI9ZyxvLnByZXBlbmRPbmNlTGlzdGVuZXI9ZyxvLmxpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm5bXX0sby5iaW5kaW5nPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkXCIpfSxvLmN3ZD1mdW5jdGlvbigpe3JldHVyblwiL1wifSxvLmNoZGlyPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZFwiKX0sby51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgbz1lW3JdO1wiLlwiPT09bz9lLnNwbGljZShyLDEpOlwiLi5cIj09PW8/KGUuc3BsaWNlKHIsMSksbisrKTpuJiYoZS5zcGxpY2UociwxKSxuLS0pfWlmKHQpZm9yKDtuLS07billLnVuc2hpZnQoXCIuLlwiKTtyZXR1cm4gZX12YXIgcj0vXihcXC8/fCkoW1xcc1xcU10qPykoKD86XFwuezEsMn18W15cXC9dKz98KShcXC5bXi5cXC9dKnwpKSg/OltcXC9dKikkLyxvPWZ1bmN0aW9uKGUpe3JldHVybiByLmV4ZWMoZSkuc2xpY2UoMSl9O2Z1bmN0aW9uIGEoZSx0KXtpZihlLmZpbHRlcilyZXR1cm4gZS5maWx0ZXIodCk7Zm9yKHZhciBuPVtdLHI9MDtyPGUubGVuZ3RoO3IrKyl0KGVbcl0scixlKSYmbi5wdXNoKGVbcl0pO3JldHVybiBufXQucmVzb2x2ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1cIlwiLHI9ITEsbz1hcmd1bWVudHMubGVuZ3RoLTE7bz49LTEmJiFyO28tLSl7dmFyIGk9bz49MD9hcmd1bWVudHNbb106ZS5jd2QoKTtpZihcInN0cmluZ1wiIT10eXBlb2YgaSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3NcIik7aSYmKHQ9aStcIi9cIit0LHI9XCIvXCI9PT1pLmNoYXJBdCgwKSl9cmV0dXJuKHI/XCIvXCI6XCJcIikrKHQ9bihhKHQuc3BsaXQoXCIvXCIpLGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pLCFyKS5qb2luKFwiL1wiKSl8fFwiLlwifSx0Lm5vcm1hbGl6ZT1mdW5jdGlvbihlKXt2YXIgcj10LmlzQWJzb2x1dGUoZSksbz1cIi9cIj09PWkoZSwtMSk7cmV0dXJuKGU9bihhKGUuc3BsaXQoXCIvXCIpLGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pLCFyKS5qb2luKFwiL1wiKSl8fHJ8fChlPVwiLlwiKSxlJiZvJiYoZSs9XCIvXCIpLChyP1wiL1wiOlwiXCIpK2V9LHQuaXNBYnNvbHV0ZT1mdW5jdGlvbihlKXtyZXR1cm5cIi9cIj09PWUuY2hhckF0KDApfSx0LmpvaW49ZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQubm9ybWFsaXplKGEoZSxmdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudHMgdG8gcGF0aC5qb2luIG11c3QgYmUgc3RyaW5nc1wiKTtyZXR1cm4gZX0pLmpvaW4oXCIvXCIpKX0sdC5yZWxhdGl2ZT1mdW5jdGlvbihlLG4pe2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aCYmXCJcIj09PWVbdF07dCsrKTtmb3IodmFyIG49ZS5sZW5ndGgtMTtuPj0wJiZcIlwiPT09ZVtuXTtuLS0pO3JldHVybiB0Pm4/W106ZS5zbGljZSh0LG4tdCsxKX1lPXQucmVzb2x2ZShlKS5zdWJzdHIoMSksbj10LnJlc29sdmUobikuc3Vic3RyKDEpO2Zvcih2YXIgbz1yKGUuc3BsaXQoXCIvXCIpKSxhPXIobi5zcGxpdChcIi9cIikpLGk9TWF0aC5taW4oby5sZW5ndGgsYS5sZW5ndGgpLGw9aSxzPTA7czxpO3MrKylpZihvW3NdIT09YVtzXSl7bD1zO2JyZWFrfXZhciB1PVtdO2ZvcihzPWw7czxvLmxlbmd0aDtzKyspdS5wdXNoKFwiLi5cIik7cmV0dXJuKHU9dS5jb25jYXQoYS5zbGljZShsKSkpLmpvaW4oXCIvXCIpfSx0LnNlcD1cIi9cIix0LmRlbGltaXRlcj1cIjpcIix0LmRpcm5hbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9byhlKSxuPXRbMF0scj10WzFdO3JldHVybiBufHxyPyhyJiYocj1yLnN1YnN0cigwLHIubGVuZ3RoLTEpKSxuK3IpOlwiLlwifSx0LmJhc2VuYW1lPWZ1bmN0aW9uKGUsdCl7dmFyIG49byhlKVsyXTtyZXR1cm4gdCYmbi5zdWJzdHIoLTEqdC5sZW5ndGgpPT09dCYmKG49bi5zdWJzdHIoMCxuLmxlbmd0aC10Lmxlbmd0aCkpLG59LHQuZXh0bmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gbyhlKVszXX07dmFyIGk9XCJiXCI9PT1cImFiXCIuc3Vic3RyKC0xKT9mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuc3Vic3RyKHQsbil9OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdDwwJiYodD1lLmxlbmd0aCt0KSxlLnN1YnN0cih0LG4pfX0pLmNhbGwodGhpcyxuKDk5KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJzdHJpbmdcIj09dHlwZW9mIGU/ZS5jaGFyQ29kZUF0KDApOmU7cmV0dXJuIHQ+PTk3JiZ0PD0xMjJ8fHQ+PTY1JiZ0PD05MH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9e3Bvc2l0aW9uOiEwLGdmbTohMCxjb21tb25tYXJrOiExLGZvb3Rub3RlczohMSxwZWRhbnRpYzohMSxibG9ja3M6bigzMDQpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxuPTAsbz0wLGE9ZS5jaGFyQXQobiksaT17fTtmb3IoO2EgaW4gcjspdD1yW2FdLG8rPXQsdD4xJiYobz1NYXRoLmZsb29yKG8vdCkqdCksaVtvXT1uLGE9ZS5jaGFyQXQoKytuKTtyZXR1cm57aW5kZW50Om8sc3RvcHM6aX19O3ZhciByPXtcIiBcIjoxLFwiXFx0XCI6NH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1cIjxbQS1aYS16XVtBLVphLXowLTlcXFxcLV0qKD86XFxcXHMrW2EtekEtWl86XVthLXpBLVowLTk6Ll8tXSooPzpcXFxccyo9XFxcXHMqKD86W15cXFwiJz08PmBcXFxcdTAwMDAtXFxcXHUwMDIwXSt8J1teJ10qJ3xcXFwiW15cXFwiXSpcXFwiKSk/KSpcXFxccypcXFxcLz8+XCIsbz1cIjxcXFxcL1tBLVphLXpdW0EtWmEtejAtOVxcXFwtXSpcXFxccyo+XCI7dC5vcGVuQ2xvc2VUYWc9bmV3IFJlZ0V4cChcIl4oPzpcIityK1wifFwiK28rXCIpXCIpLHQudGFnPW5ldyBSZWdFeHAoXCJeKD86XCIrcitcInxcIitvK1wifFxceDNjIS0tLS1cXHgzZXxcXHgzYyEtLSg/Oi0/W14+LV0pKD86LT9bXi1dKSotLVxceDNlfDxbP10uKj9bP10+fDwhW0EtWmEtel0rXFxcXHMrW14+XSo+fDwhXFxcXFtDREFUQVxcXFxbW1xcXFxzXFxcXFNdKj9cXFxcXVxcXFxdPilcIil9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pbmRleE9mKFwiPFwiLHQpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWUuaW5kZXhPZihcIltcIix0KSxyPWUuaW5kZXhPZihcIiFbXCIsdCk7aWYoLTE9PT1yKXJldHVybiBuO3JldHVybiBuPHI/bjpyfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oMTA4KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDkpKSxhPXIobig0KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KG4oNykscihuKDgpKSksYz1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLGRpc3BsYXk6XCJmbGV4XCIsYWxpZ25JdGVtczpcImNlbnRlclwiLGp1c3RpZnlDb250ZW50OlwiY2VudGVyXCIsZmxleFNocmluazowLHdpZHRoOjQwLGhlaWdodDo0MCxmb250RmFtaWx5OmUudHlwb2dyYXBoeS5mb250RmFtaWx5LGZvbnRTaXplOmUudHlwb2dyYXBoeS5weFRvUmVtKDIwKSxib3JkZXJSYWRpdXM6XCI1MCVcIixvdmVyZmxvdzpcImhpZGRlblwiLHVzZXJTZWxlY3Q6XCJub25lXCJ9LGNvbG9yRGVmYXVsdDp7Y29sb3I6ZS5wYWxldHRlLmJhY2tncm91bmQuZGVmYXVsdCxiYWNrZ3JvdW5kQ29sb3I6XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/ZS5wYWxldHRlLmdyZXlbNDAwXTplLnBhbGV0dGUuZ3JleVs2MDBdfSxpbWc6e3dpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIix0ZXh0QWxpZ246XCJjZW50ZXJcIixvYmplY3RGaXQ6XCJjb3ZlclwifX19O2Z1bmN0aW9uIGQoZSl7dmFyIHQ9ZS5hbHQsbj1lLmNoaWxkcmVuLHI9ZS5jaGlsZHJlbkNsYXNzTmFtZSx1PWUuY2xhc3NlcyxjPWUuY2xhc3NOYW1lLGQ9ZS5jb21wb25lbnQscD1lLmltZ1Byb3BzLGY9ZS5zaXplcyxtPWUuc3JjLGc9ZS5zcmNTZXQsaD0oMCxpLmRlZmF1bHQpKGUsW1wiYWx0XCIsXCJjaGlsZHJlblwiLFwiY2hpbGRyZW5DbGFzc05hbWVcIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29tcG9uZW50XCIsXCJpbWdQcm9wc1wiLFwic2l6ZXNcIixcInNyY1wiLFwic3JjU2V0XCJdKSxiPW51bGwseT1tfHxnO3JldHVybiBiPXk/bC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwoMCxhLmRlZmF1bHQpKHthbHQ6dCxzcmM6bSxzcmNTZXQ6ZyxzaXplczpmLGNsYXNzTmFtZTp1LmltZ30scCkpOnImJmwuZGVmYXVsdC5pc1ZhbGlkRWxlbWVudChuKT9sLmRlZmF1bHQuY2xvbmVFbGVtZW50KG4se2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHIsbi5wcm9wcy5jbGFzc05hbWUpfSk6bixsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLCgwLGEuZGVmYXVsdCkoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHUucm9vdCx1LnN5c3RlbSwoMCxvLmRlZmF1bHQpKHt9LHUuY29sb3JEZWZhdWx0LCF5KSxjKX0saCksYil9dC5zdHlsZXM9YyxkLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OlwiZGl2XCJ9O3ZhciBwPSgwLHUuZGVmYXVsdCkoYyx7bmFtZTpcIk11aUF2YXRhclwifSkoZCk7dC5kZWZhdWx0PXB9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7cihuKDI5KSksbigzOSk7dmFyIG89ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH07by5pc1JlcXVpcmVkPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O3ZhciBhPW87dC5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3BlY2lhbFByb3BlcnR5PXZvaWQgMDtyKG4oOSkpLHIobig0KSk7dmFyIG89XCJleGFjdC1wcm9wOiDigItcIjt0LnNwZWNpYWxQcm9wZXJ0eT1vO3ZhciBhPWZ1bmN0aW9uKGUpe3JldHVybiBlfTt0LmRlZmF1bHQ9YX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2V0RnVuY3Rpb25OYW1lPW8sdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj0vXlxccypmdW5jdGlvbig/Olxcc3xcXHMqXFwvXFwqLipcXCpcXC9cXHMqKSsoW14oXFxzXFwvXSopXFxzKi87ZnVuY3Rpb24gbyhlKXt2YXIgdD1cIlwiLmNvbmNhdChlKS5tYXRjaChyKTtyZXR1cm4gdCYmdFsxXXx8XCJcIn12YXIgYT1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOmU/ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxvKGUpfHxcIkNvbXBvbmVudFwiOnZvaWQgMH07dC5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5NYXRoPT1NYXRoP3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jcmVhdGU9dC5jcmVhdGVHZW5lcmF0ZUNsYXNzTmFtZT10LnNoZWV0cz10LlJ1bGVMaXN0PXQuU2hlZXRzTWFuYWdlcj10LlNoZWV0c1JlZ2lzdHJ5PXQudG9Dc3NWYWx1ZT10LmdldER5bmFtaWNTdHlsZXM9dm9pZCAwO3ZhciByPW4oMzYxKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImdldER5bmFtaWNTdHlsZXNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZChyKS5kZWZhdWx0fX0pO3ZhciBvPW4oNDYpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwidG9Dc3NWYWx1ZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkKG8pLmRlZmF1bHR9fSk7dmFyIGE9bigxMTUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiU2hlZXRzUmVnaXN0cnlcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZChhKS5kZWZhdWx0fX0pO3ZhciBpPW4oMzYyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIlNoZWV0c01hbmFnZXJcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZChpKS5kZWZhdWx0fX0pO3ZhciBsPW4oMzUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiUnVsZUxpc3RcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZChsKS5kZWZhdWx0fX0pO3ZhciBzPW4oNjUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwic2hlZXRzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGQocykuZGVmYXVsdH19KTt2YXIgdT1uKDExOCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjcmVhdGVHZW5lcmF0ZUNsYXNzTmFtZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkKHUpLmRlZmF1bHR9fSk7dmFyIGM9ZChuKDM2OCkpO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBwPXQuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYy5kZWZhdWx0KGUpfTt0LmRlZmF1bHQ9cCgpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKTt2YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpLHRoaXMucmVnaXN0cnk9W119cmV0dXJuIHIoZSxbe2tleTpcImFkZFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucmVnaXN0cnksbj1lLm9wdGlvbnMuaW5kZXg7aWYoLTE9PT10LmluZGV4T2YoZSkpaWYoMD09PXQubGVuZ3RofHxuPj10aGlzLmluZGV4KXQucHVzaChlKTtlbHNlIGZvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWlmKHRbcl0ub3B0aW9ucy5pbmRleD5uKXJldHVybiB2b2lkIHQuc3BsaWNlKHIsMCxlKX19LHtrZXk6XCJyZXNldFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yZWdpc3RyeT1bXX19LHtrZXk6XCJyZW1vdmVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnJlZ2lzdHJ5LmluZGV4T2YoZSk7dGhpcy5yZWdpc3RyeS5zcGxpY2UodCwxKX19LHtrZXk6XCJ0b1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlZ2lzdHJ5LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5hdHRhY2hlZH0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZyhlKX0pLmpvaW4oXCJcXG5cIil9fSx7a2V5OlwiaW5kZXhcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMucmVnaXN0cnkubGVuZ3RoPzA6dGhpcy5yZWdpc3RyeVt0aGlzLnJlZ2lzdHJ5Lmxlbmd0aC0xXS5vcHRpb25zLmluZGV4fX1dKSxlfSgpO3QuZGVmYXVsdD1vfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHIsbz1uKDM2NCksYT0ocj1vKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07dC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlW2EuZGVmYXVsdF0mJmU9PT1lW2EuZGVmYXVsdF0oKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXtlLnJlbmRlcmFibGU9dCxlLnJ1bGVzJiZ0LmNzc1J1bGVzJiZlLnJ1bGVzLmxpbmsodC5jc3NSdWxlcyl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9YShuKDI4KSksbz0oYShuKDExOSkpLGEobigzNjcpKSk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5kZWZhdWx0PWZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gZnVuY3Rpb24odCxuKXsoZSs9MSk+MWUxMCYmKDAsci5kZWZhdWx0KSghMSxcIltKU1NdIFlvdSBtaWdodCBoYXZlIGEgbWVtb3J5IGxlYWsuIFJ1bGUgY291bnRlciBpcyBhdCAlcy5cIixlKTt2YXIgYT1cImNcIixpPVwiXCI7cmV0dXJuIG4mJihhPW4ub3B0aW9ucy5jbGFzc05hbWVQcmVmaXh8fFwiY1wiLG51bGwhPW4ub3B0aW9ucy5qc3MuaWQmJihpKz1uLm9wdGlvbnMuanNzLmlkKSksXCJcIithK28uZGVmYXVsdCtpK2V9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPWwobigxMTcpKSxpPWwobigzNSkpO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3ZhciBvPXRoaXM7Zm9yKHZhciBhIGluIGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx0aGlzLnVwZGF0ZT1mdW5jdGlvbihlLHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP28ucnVsZXMudXBkYXRlKGUsdCk6by5ydWxlcy51cGRhdGUoZSksb30sdGhpcy5hdHRhY2hlZD0hMSx0aGlzLmRlcGxveWVkPSExLHRoaXMubGlua2VkPSExLHRoaXMuY2xhc3Nlcz17fSx0aGlzLm9wdGlvbnM9cih7fSxuLHtzaGVldDp0aGlzLHBhcmVudDp0aGlzLGNsYXNzZXM6dGhpcy5jbGFzc2VzfSksdGhpcy5yZW5kZXJlcj1uZXcgbi5SZW5kZXJlcih0aGlzKSx0aGlzLnJ1bGVzPW5ldyBpLmRlZmF1bHQodGhpcy5vcHRpb25zKSx0KXRoaXMucnVsZXMuYWRkKGEsdFthXSk7dGhpcy5ydWxlcy5wcm9jZXNzKCl9cmV0dXJuIG8oZSxbe2tleTpcImF0dGFjaFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0YWNoZWQ/dGhpczoodGhpcy5kZXBsb3llZHx8dGhpcy5kZXBsb3koKSx0aGlzLnJlbmRlcmVyLmF0dGFjaCgpLCF0aGlzLmxpbmtlZCYmdGhpcy5vcHRpb25zLmxpbmsmJnRoaXMubGluaygpLHRoaXMuYXR0YWNoZWQ9ITAsdGhpcyl9fSx7a2V5OlwiZGV0YWNoXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRhY2hlZD8odGhpcy5yZW5kZXJlci5kZXRhY2goKSx0aGlzLmF0dGFjaGVkPSExLHRoaXMpOnRoaXN9fSx7a2V5OlwiYWRkUnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLnF1ZXVlO3RoaXMuYXR0YWNoZWQmJiFyJiYodGhpcy5xdWV1ZT1bXSk7dmFyIG89dGhpcy5ydWxlcy5hZGQoZSx0LG4pO3JldHVybiB0aGlzLm9wdGlvbnMuanNzLnBsdWdpbnMub25Qcm9jZXNzUnVsZShvKSx0aGlzLmF0dGFjaGVkP3RoaXMuZGVwbG95ZWQ/KHI/ci5wdXNoKG8pOih0aGlzLmluc2VydFJ1bGUobyksdGhpcy5xdWV1ZSYmKHRoaXMucXVldWUuZm9yRWFjaCh0aGlzLmluc2VydFJ1bGUsdGhpcyksdGhpcy5xdWV1ZT12b2lkIDApKSxvKTpvOih0aGlzLmRlcGxveWVkPSExLG8pfX0se2tleTpcImluc2VydFJ1bGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnJlbmRlcmVyLmluc2VydFJ1bGUoZSk7dCYmdGhpcy5vcHRpb25zLmxpbmsmJigwLGEuZGVmYXVsdCkoZSx0KX19LHtrZXk6XCJhZGRSdWxlc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHRoaXMuYWRkUnVsZShyLGVbcl0sdCkpO3JldHVybiBufX0se2tleTpcImdldFJ1bGVcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5ydWxlcy5nZXQoZSl9fSx7a2V5OlwiZGVsZXRlUnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucnVsZXMuZ2V0KGUpO3JldHVybiEhdCYmKHRoaXMucnVsZXMucmVtb3ZlKHQpLCF0aGlzLmF0dGFjaGVkfHwhdC5yZW5kZXJhYmxlfHx0aGlzLnJlbmRlcmVyLmRlbGV0ZVJ1bGUodC5yZW5kZXJhYmxlKSl9fSx7a2V5OlwiaW5kZXhPZlwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJ1bGVzLmluZGV4T2YoZSl9fSx7a2V5OlwiZGVwbG95XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5kZXBsb3koKSx0aGlzLmRlcGxveWVkPSEwLHRoaXN9fSx7a2V5OlwibGlua1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yZW5kZXJlci5nZXRSdWxlcygpO3JldHVybiBlJiZ0aGlzLnJ1bGVzLmxpbmsoZSksdGhpcy5saW5rZWQ9ITAsdGhpc319LHtrZXk6XCJ0b1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJ1bGVzLnRvU3RyaW5nKGUpfX1dKSxlfSgpO3QuZGVmYXVsdD1zfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobigzODEpKSxhPXIobigzODIpKSxpPXIobigzODMpKSxsPXIobigzODUpKSxzPXIobigzODcpKSx1PXIobigzOTIpKTt2YXIgYz1mdW5jdGlvbigpe3JldHVybntwbHVnaW5zOlsoMCxvLmRlZmF1bHQpKCksKDAsYS5kZWZhdWx0KSgpLCgwLGkuZGVmYXVsdCkoKSwoMCxsLmRlZmF1bHQpKCksXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdz9udWxsOigwLHMuZGVmYXVsdCkoKSwoMCx1LmRlZmF1bHQpKCldfX07dC5kZWZhdWx0PWN9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDQpKTtyKG4oMTcpKSxuKDcpO3ZhciBhPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9ZS5iYXNlQ2xhc3NlcyxuPWUubmV3Q2xhc3NlcztpZihlLkNvbXBvbmVudCwhbilyZXR1cm4gdDt2YXIgcj0oMCxvLmRlZmF1bHQpKHt9LHQpO3JldHVybiBPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bZV0mJihyW2VdPVwiXCIuY29uY2F0KHRbZV0sXCIgXCIpLmNvbmNhdChuW2VdKSl9KSxyfTt0LmRlZmF1bHQ9YX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2U4ZWFmNlwiLDEwMDpcIiNjNWNhZTlcIiwyMDA6XCIjOWZhOGRhXCIsMzAwOlwiIzc5ODZjYlwiLDQwMDpcIiM1YzZiYzBcIiw1MDA6XCIjM2Y1MWI1XCIsNjAwOlwiIzM5NDlhYlwiLDcwMDpcIiMzMDNmOWZcIiw4MDA6XCIjMjgzNTkzXCIsOTAwOlwiIzFhMjM3ZVwiLEExMDA6XCIjOGM5ZWZmXCIsQTIwMDpcIiM1MzZkZmVcIixBNDAwOlwiIzNkNWFmZVwiLEE3MDA6XCIjMzA0ZmZlXCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZmNlNGVjXCIsMTAwOlwiI2Y4YmJkMFwiLDIwMDpcIiNmNDhmYjFcIiwzMDA6XCIjZjA2MjkyXCIsNDAwOlwiI2VjNDA3YVwiLDUwMDpcIiNlOTFlNjNcIiw2MDA6XCIjZDgxYjYwXCIsNzAwOlwiI2MyMTg1YlwiLDgwMDpcIiNhZDE0NTdcIiw5MDA6XCIjODgwZTRmXCIsQTEwMDpcIiNmZjgwYWJcIixBMjAwOlwiI2ZmNDA4MVwiLEE0MDA6XCIjZjUwMDU3XCIsQTcwMDpcIiNjNTExNjJcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNmYWZhZmFcIiwxMDA6XCIjZjVmNWY1XCIsMjAwOlwiI2VlZWVlZVwiLDMwMDpcIiNlMGUwZTBcIiw0MDA6XCIjYmRiZGJkXCIsNTAwOlwiIzllOWU5ZVwiLDYwMDpcIiM3NTc1NzVcIiw3MDA6XCIjNjE2MTYxXCIsODAwOlwiIzQyNDI0MlwiLDkwMDpcIiMyMTIxMjFcIixBMTAwOlwiI2Q1ZDVkNVwiLEEyMDA6XCIjYWFhYWFhXCIsQTQwMDpcIiMzMDMwMzBcIixBNzAwOlwiIzYxNjE2MVwifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2ZmZWJlZVwiLDEwMDpcIiNmZmNkZDJcIiwyMDA6XCIjZWY5YTlhXCIsMzAwOlwiI2U1NzM3M1wiLDQwMDpcIiNlZjUzNTBcIiw1MDA6XCIjZjQ0MzM2XCIsNjAwOlwiI2U1MzkzNVwiLDcwMDpcIiNkMzJmMmZcIiw4MDA6XCIjYzYyODI4XCIsOTAwOlwiI2I3MWMxY1wiLEExMDA6XCIjZmY4YTgwXCIsQTIwMDpcIiNmZjUyNTJcIixBNDAwOlwiI2ZmMTc0NFwiLEE3MDA6XCIjZDUwMDAwXCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17YmxhY2s6XCIjMDAwXCIsd2hpdGU6XCIjZmZmXCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1lLmRhbmdlcm91c2x5VXNlR2xvYmFsQ1NTLG49dm9pZCAwIT09dCYmdCxyPWUucHJvZHVjdGlvblByZWZpeCxvPXZvaWQgMD09PXI/XCJqc3NcIjpyLGk9ZS5zZWVkLGw9dm9pZCAwPT09aT9cIlwiOmkscz0wO3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiBzKz0xLG4mJnQmJnQub3B0aW9ucy5uYW1lP1wiXCIuY29uY2F0KGEodC5vcHRpb25zLm5hbWUpLFwiLVwiKS5jb25jYXQoZS5rZXkpOlwiXCIuY29uY2F0KG8pLmNvbmNhdChsKS5jb25jYXQocyl9fTtyKG4oMTcpKTt2YXIgbz0vKFtbXFxdLiMqJD48K349fF46KCksXCInYFxcc10pL2c7ZnVuY3Rpb24gYShlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UobyxcIi1cIil9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0MDYpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDQwOCkpLGE9cihuKDQxMikpLGk9KHIobigxMzApKSxyKG4oMTMxKSksZnVuY3Rpb24oZSl7cmV0dXJuKDAsby5kZWZhdWx0KShmdW5jdGlvbihlLHQpe3JldHVybiEoMCxhLmRlZmF1bHQpKGUsdCl9KShlKX0pO3QuZGVmYXVsdD1pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oNDEwKSksYT1mdW5jdGlvbihlKXtyZXR1cm4oMCxvLmRlZmF1bHQpKFwiZGlzcGxheU5hbWVcIixlKX07dC5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobig0MTEpKSxhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQrXCIoXCIrKDAsby5kZWZhdWx0KShlKStcIilcIn07dC5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQxNikpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcigpe3ZhciBlPXRoaXMuY29uc3RydWN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHRoaXMucHJvcHMsdGhpcy5zdGF0ZSk7bnVsbCE9ZSYmdGhpcy5zZXRTdGF0ZShlKX1mdW5jdGlvbiBvKGUpe3RoaXMuc2V0U3RhdGUoZnVuY3Rpb24odCl7dmFyIG49dGhpcy5jb25zdHJ1Y3Rvci5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoZSx0KTtyZXR1cm4gbnVsbCE9bj9uOm51bGx9LmJpbmQodGhpcykpfWZ1bmN0aW9uIGEoZSx0KXt0cnl7dmFyIG49dGhpcy5wcm9wcyxyPXRoaXMuc3RhdGU7dGhpcy5wcm9wcz1lLHRoaXMuc3RhdGU9dCx0aGlzLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90RmxhZz0hMCx0aGlzLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90PXRoaXMuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUobixyKX1maW5hbGx5e3RoaXMucHJvcHM9bix0aGlzLnN0YXRlPXJ9fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZS5wcm90b3R5cGU7aWYoIXR8fCF0LmlzUmVhY3RDb21wb25lbnQpdGhyb3cgbmV3IEVycm9yKFwiQ2FuIG9ubHkgcG9seWZpbGwgY2xhc3MgY29tcG9uZW50c1wiKTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmXCJmdW5jdGlvblwiIT10eXBlb2YgdC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSlyZXR1cm4gZTt2YXIgbj1udWxsLGk9bnVsbCxsPW51bGw7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb21wb25lbnRXaWxsTW91bnQ/bj1cImNvbXBvbmVudFdpbGxNb3VudFwiOlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmKG49XCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50XCIpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz9pPVwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc1wiOlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJihpPVwiVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHNcIiksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb21wb25lbnRXaWxsVXBkYXRlP2w9XCJjb21wb25lbnRXaWxsVXBkYXRlXCI6XCJmdW5jdGlvblwiPT10eXBlb2YgdC5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmKGw9XCJVTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZVwiKSxudWxsIT09bnx8bnVsbCE9PWl8fG51bGwhPT1sKXt2YXIgcz1lLmRpc3BsYXlOYW1lfHxlLm5hbWUsdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz9cImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcygpXCI6XCJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpXCI7dGhyb3cgRXJyb3IoXCJVbnNhZmUgbGVnYWN5IGxpZmVjeWNsZXMgd2lsbCBub3QgYmUgY2FsbGVkIGZvciBjb21wb25lbnRzIHVzaW5nIG5ldyBjb21wb25lbnQgQVBJcy5cXG5cXG5cIitzK1wiIHVzZXMgXCIrdStcIiBidXQgYWxzbyBjb250YWlucyB0aGUgZm9sbG93aW5nIGxlZ2FjeSBsaWZlY3ljbGVzOlwiKyhudWxsIT09bj9cIlxcbiAgXCIrbjpcIlwiKSsobnVsbCE9PWk/XCJcXG4gIFwiK2k6XCJcIikrKG51bGwhPT1sP1wiXFxuICBcIitsOlwiXCIpK1wiXFxuXFxuVGhlIGFib3ZlIGxpZmVjeWNsZXMgc2hvdWxkIGJlIHJlbW92ZWQuIExlYXJuIG1vcmUgYWJvdXQgdGhpcyB3YXJuaW5nIGhlcmU6XFxuaHR0cHM6Ly9mYi5tZS9yZWFjdC1hc3luYy1jb21wb25lbnQtbGlmZWN5Y2xlLWhvb2tzXCIpfWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiYodC5jb21wb25lbnRXaWxsTW91bnQ9cix0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9byksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdC5jb21wb25lbnREaWRVcGRhdGUpdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHBvbHlmaWxsIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKCkgZm9yIGNvbXBvbmVudHMgdGhhdCBkbyBub3QgZGVmaW5lIGNvbXBvbmVudERpZFVwZGF0ZSgpIG9uIHRoZSBwcm90b3R5cGVcIik7dC5jb21wb25lbnRXaWxsVXBkYXRlPWE7dmFyIGM9dC5jb21wb25lbnREaWRVcGRhdGU7dC5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX19yZWFjdEludGVybmFsU25hcHNob3RGbGFnP3RoaXMuX19yZWFjdEludGVybmFsU25hcHNob3Q6bjtjLmNhbGwodGhpcyxlLHQscil9fXJldHVybiBlfW4ucih0KSxuLmQodCxcInBvbHlmaWxsXCIsZnVuY3Rpb24oKXtyZXR1cm4gaX0pLHIuX19zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZz0hMCxvLl9fc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmc9ITAsYS5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nPSEwfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0MTgpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDIwKSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQyMikpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0MjYpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDI3KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQyOCkpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big0MzQpLG89big0MzUpLGE9big0MzYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihlKXx8byhlKXx8YSgpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oMCkpLmRlZmF1bHQuY3JlYXRlQ29udGV4dCh7fSk7dC5kZWZhdWx0PW99LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlLHQsbil7dmFyIHIsbyxhLGksbDtmdW5jdGlvbiBzKCl7dmFyIHU9RGF0ZS5ub3coKS1pO3U8dCYmdT49MD9yPXNldFRpbWVvdXQocyx0LXUpOihyPW51bGwsbnx8KGw9ZS5hcHBseShhLG8pLGE9bz1udWxsKSl9bnVsbD09dCYmKHQ9MTAwKTt2YXIgdT1mdW5jdGlvbigpe2E9dGhpcyxvPWFyZ3VtZW50cyxpPURhdGUubm93KCk7dmFyIHU9biYmIXI7cmV0dXJuIHJ8fChyPXNldFRpbWVvdXQocyx0KSksdSYmKGw9ZS5hcHBseShhLG8pLGE9bz1udWxsKSxsfTtyZXR1cm4gdS5jbGVhcj1mdW5jdGlvbigpe3ImJihjbGVhclRpbWVvdXQocikscj1udWxsKX0sdS5mbHVzaD1mdW5jdGlvbigpe3ImJihsPWUuYXBwbHkoYSxvKSxhPW89bnVsbCxjbGVhclRpbWVvdXQocikscj1udWxsKX0sdX1uLmRlYm91bmNlPW4sZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmXCJkZWZhdWx0XCJpbiBlP2UuZGVmYXVsdDplfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBvPXIobigxMikpLGE9cihuKDEzKSksaT1yKG4oMTQpKSxsPXIobigxNSkpLHM9cihuKDE2KSksdT1yKG4oMjkpKSxjPXIobig1KSksZD1yKG4oNCkpLHA9cihuKDApKTtyKG4oMSkpLHIobigxNykpO3ZhciBmLG09KGY9bnVsbCxmdW5jdGlvbigpe2lmKG51bGwhPT1mKXJldHVybiBmO3ZhciBlLHQsbixyPSExO3RyeXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixudWxsLChlPXt9LHQ9XCJwYXNzaXZlXCIsbj17Z2V0OmZ1bmN0aW9uKCl7cj0hMH19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsbikpKX1jYXRjaChlKXt9cmV0dXJuIGY9cixyfSgpKSxnPXtjYXB0dXJlOiExLHBhc3NpdmU6ITF9O2Z1bmN0aW9uIGgoZSl7cmV0dXJuIGQoe30sZyxlKX1mdW5jdGlvbiBiKGUsdCxuKXt2YXIgcj1bZSx0XTtyZXR1cm4gci5wdXNoKG0/bjpuLmNhcHR1cmUpLHJ9ZnVuY3Rpb24geShlLHQsbixyKXtlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZSxiKHQsbixyKSl9ZnVuY3Rpb24gdihlLHQsbixyKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIuYXBwbHkoZSxiKHQsbixyKSl9dmFyIFM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBvKHRoaXMsdCksaSh0aGlzLGwodCkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gcyh0LGUpLGEodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmFwcGx5TGlzdGVuZXJzKHkpfX0se2tleTpcImNvbXBvbmVudERpZFVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuYXBwbHlMaXN0ZW5lcnModixlKSx0aGlzLmFwcGx5TGlzdGVuZXJzKHkpfX0se2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmFwcGx5TGlzdGVuZXJzKHYpfX0se2tleTpcImFwcGx5TGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMucHJvcHMsbj10LnRhcmdldDtpZihuKXt2YXIgcj1uO1wic3RyaW5nXCI9PXR5cGVvZiBuJiYocj13aW5kb3dbbl0pLGZ1bmN0aW9uKGUsdCl7ZS5jaGlsZHJlbixlLnRhcmdldDt2YXIgbj1jKGUsW1wiY2hpbGRyZW5cIixcInRhcmdldFwiXSk7T2JqZWN0LmtleXMobikuZm9yRWFjaChmdW5jdGlvbihlKXtpZihcIm9uXCI9PT1lLnN1YnN0cmluZygwLDIpKXt2YXIgcj1uW2VdLG89dShyKSxhPVwib2JqZWN0XCI9PT1vO2lmKGF8fFwiZnVuY3Rpb25cIj09PW8pe3ZhciBpPVwiY2FwdHVyZVwiPT09ZS5zdWJzdHIoLTcpLnRvTG93ZXJDYXNlKCksbD1lLnN1YnN0cmluZygyKS50b0xvd2VyQ2FzZSgpO2w9aT9sLnN1YnN0cmluZygwLGwubGVuZ3RoLTcpOmwsYT90KGwsci5oYW5kbGVyLHIub3B0aW9ucyk6dChsLHIsaCh7Y2FwdHVyZTppfSkpfX19KX0odCxlLmJpbmQobnVsbCxyKSl9fX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW58fG51bGx9fV0pLHR9KHAuUHVyZUNvbXBvbmVudCk7Uy5wcm9wVHlwZXM9e30sdC53aXRoT3B0aW9ucz1mdW5jdGlvbihlLHQpe3JldHVybntoYW5kbGVyOmUsb3B0aW9uczpoKHQpfX0sdC5kZWZhdWx0PVN9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDEyKSksYT1yKG4oMTMpKSxpPXIobig0NDcpKSxsPXIobigxNDcpKSxzPXIobigyNikpLHU9cihuKDQ1NSkpLGM9bigxNDgpO2Z1bmN0aW9uIGQoZSx0KXt2YXIgbj0tMTtyZXR1cm4gZS5zb21lKGZ1bmN0aW9uKGUscil7cmV0dXJuISF0KGUpJiYobj1yLCEwKX0pLG59ZnVuY3Rpb24gcChlKXtyZXR1cm4gcGFyc2VJbnQoKDAsaS5kZWZhdWx0KShlLFwicGFkZGluZ1JpZ2h0XCIpfHwwLDEwKX12YXIgZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307KDAsby5kZWZhdWx0KSh0aGlzLGUpO3ZhciBuPXQuaGlkZVNpYmxpbmdOb2RlcyxyPXZvaWQgMD09PW58fG4sYT10LmhhbmRsZUNvbnRhaW5lck92ZXJmbG93LGk9dm9pZCAwPT09YXx8YTt0aGlzLmhpZGVTaWJsaW5nTm9kZXM9cix0aGlzLmhhbmRsZUNvbnRhaW5lck92ZXJmbG93PWksdGhpcy5tb2RhbHM9W10sdGhpcy5kYXRhPVtdfXJldHVybigwLGEuZGVmYXVsdCkoZSxbe2tleTpcImFkZFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5tb2RhbHMuaW5kZXhPZihlKTtpZigtMSE9PW4pcmV0dXJuIG47bj10aGlzLm1vZGFscy5sZW5ndGgsdGhpcy5tb2RhbHMucHVzaChlKSxlLm1vZGFsUmVmJiYoMCxjLmFyaWFIaWRkZW4pKGUubW9kYWxSZWYsITEpLHRoaXMuaGlkZVNpYmxpbmdOb2RlcyYmKDAsYy5hcmlhSGlkZGVuU2libGluZ3MpKHQsZS5tb3VudE5vZGUsZS5tb2RhbFJlZiwhMCk7dmFyIHI9ZCh0aGlzLmRhdGEsZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29udGFpbmVyPT09dH0pO2lmKC0xIT09cilyZXR1cm4gdGhpcy5kYXRhW3JdLm1vZGFscy5wdXNoKGUpLG47dmFyIG89e21vZGFsczpbZV0sY29udGFpbmVyOnQsb3ZlcmZsb3dpbmc6KDAsdS5kZWZhdWx0KSh0KSxwcmV2UGFkZGluZ3M6W119O3JldHVybiB0aGlzLmRhdGEucHVzaChvKSxufX0se2tleTpcIm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZCh0aGlzLmRhdGEsZnVuY3Rpb24odCl7cmV0dXJuLTEhPT10Lm1vZGFscy5pbmRleE9mKGUpfSksbj10aGlzLmRhdGFbdF07IW4uc3R5bGUmJnRoaXMuaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3cmJmZ1bmN0aW9uKGUpe2Uuc3R5bGU9e292ZXJmbG93OmUuY29udGFpbmVyLnN0eWxlLm92ZXJmbG93LHBhZGRpbmdSaWdodDplLmNvbnRhaW5lci5zdHlsZS5wYWRkaW5nUmlnaHR9O3ZhciB0PXtvdmVyZmxvdzpcImhpZGRlblwifTtpZihlLm92ZXJmbG93aW5nKXt2YXIgbj0oMCxsLmRlZmF1bHQpKCk7dC5wYWRkaW5nUmlnaHQ9XCJcIi5jb25jYXQocChlLmNvbnRhaW5lcikrbixcInB4XCIpO2Zvcih2YXIgcj0oMCxzLmRlZmF1bHQpKGUuY29udGFpbmVyKS5xdWVyeVNlbGVjdG9yQWxsKFwiLm11aS1maXhlZFwiKSxvPTA7bzxyLmxlbmd0aDtvKz0xKXt2YXIgYT1wKHJbb10pO2UucHJldlBhZGRpbmdzLnB1c2goYSkscltvXS5zdHlsZS5wYWRkaW5nUmlnaHQ9XCJcIi5jb25jYXQoYStuLFwicHhcIil9fU9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24obil7ZS5jb250YWluZXIuc3R5bGVbbl09dFtuXX0pfShuKX19LHtrZXk6XCJyZW1vdmVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm1vZGFscy5pbmRleE9mKGUpO2lmKC0xPT09dClyZXR1cm4gdDt2YXIgbj1kKHRoaXMuZGF0YSxmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXQubW9kYWxzLmluZGV4T2YoZSl9KSxyPXRoaXMuZGF0YVtuXTtpZihyLm1vZGFscy5zcGxpY2Uoci5tb2RhbHMuaW5kZXhPZihlKSwxKSx0aGlzLm1vZGFscy5zcGxpY2UodCwxKSwwPT09ci5tb2RhbHMubGVuZ3RoKXRoaXMuaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3cmJmZ1bmN0aW9uKGUpe2Uuc3R5bGUmJk9iamVjdC5rZXlzKGUuc3R5bGUpLmZvckVhY2goZnVuY3Rpb24odCl7ZS5jb250YWluZXIuc3R5bGVbdF09ZS5zdHlsZVt0XX0pO2Zvcih2YXIgdD0oMCxzLmRlZmF1bHQpKGUuY29udGFpbmVyKS5xdWVyeVNlbGVjdG9yQWxsKFwiLm11aS1maXhlZFwiKSxuPTA7bjx0Lmxlbmd0aDtuKz0xKXRbbl0uc3R5bGUucGFkZGluZ1JpZ2h0PVwiXCIuY29uY2F0KGUucHJldlBhZGRpbmdzW25dLFwicHhcIil9KHIpLGUubW9kYWxSZWYmJigwLGMuYXJpYUhpZGRlbikoZS5tb2RhbFJlZiwhMCksdGhpcy5oaWRlU2libGluZ05vZGVzJiYoMCxjLmFyaWFIaWRkZW5TaWJsaW5ncykoci5jb250YWluZXIsZS5tb3VudE5vZGUsZS5tb2RhbFJlZiwhMSksdGhpcy5kYXRhLnNwbGljZShuLDEpO2Vsc2UgaWYodGhpcy5oaWRlU2libGluZ05vZGVzKXt2YXIgbz1yLm1vZGFsc1tyLm1vZGFscy5sZW5ndGgtMV07by5tb2RhbFJlZiYmKDAsYy5hcmlhSGlkZGVuKShvLm1vZGFsUmVmLCExKX1yZXR1cm4gdH19LHtrZXk6XCJpc1RvcE1vZGFsXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLm1vZGFscy5sZW5ndGgmJnRoaXMubW9kYWxzW3RoaXMubW9kYWxzLmxlbmd0aC0xXT09PWV9fV0pLGV9KCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJuKDAsby5kZWZhdWx0KShlLnJlcGxhY2UoYSxcIm1zLVwiKSl9O3ZhciBvPXIobig0NDgpKSxhPS9eLW1zLS87ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPSEoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5kb2N1bWVudHx8IXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTt0LmRlZmF1bHQ9cixlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe2lmKCghbyYmMCE9PW98fGUpJiZhLmRlZmF1bHQpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7dC5zdHlsZS5wb3NpdGlvbj1cImFic29sdXRlXCIsdC5zdHlsZS50b3A9XCItOTk5OXB4XCIsdC5zdHlsZS53aWR0aD1cIjUwcHhcIix0LnN0eWxlLmhlaWdodD1cIjUwcHhcIix0LnN0eWxlLm92ZXJmbG93PVwic2Nyb2xsXCIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KSxvPXQub2Zmc2V0V2lkdGgtdC5jbGllbnRXaWR0aCxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpfXJldHVybiBvfTt2YXIgbyxhPXIobigxNDYpKTtlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5hcmlhSGlkZGVuPW8sdC5hcmlhSGlkZGVuU2libGluZ3M9ZnVuY3Rpb24oZSx0LG4sYSl7IWZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBhPVt0LG5dO1tdLmZvckVhY2guY2FsbChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUpey0xPT09YS5pbmRleE9mKGUpJiZmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGUmJi0xPT09ci5pbmRleE9mKGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpKX0oZSkmJm8oZSl9KX0oZSx0LG4sZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSxhKX0pfTt2YXIgcj1bXCJ0ZW1wbGF0ZVwiLFwic2NyaXB0XCIsXCJzdHlsZVwiXTtmdW5jdGlvbiBvKGUsdCl7dD9lLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpOmUucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIil9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobigwKSksYT1yKG4oMTI5KSksaT1yKG4oNTApKSxsPW8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLHtkOlwiTTcgMTBsNSA1IDUtNXpcIn0pLHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KGkuZGVmYXVsdCxlLGwpfTsocz0oMCxhLmRlZmF1bHQpKHMpKS5tdWlOYW1lPVwiU3ZnSWNvblwiO3ZhciB1PXM7dC5kZWZhdWx0PXV9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpO24oNyk7dmFyIHU9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmNoaWxkcmVuLHI9ZS5jbGFzc2VzLHU9ZS5jbGFzc05hbWUsYz1lLmRpc2FibGVkLGQ9ZS5JY29uQ29tcG9uZW50LHA9ZS5pbnB1dFJlZixmPWUubmFtZSxtPWUub25DaGFuZ2UsZz1lLnZhbHVlLGg9ZS52YXJpYW50LGI9KDAsaS5kZWZhdWx0KShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImRpc2FibGVkXCIsXCJJY29uQ29tcG9uZW50XCIsXCJpbnB1dFJlZlwiLFwibmFtZVwiLFwib25DaGFuZ2VcIixcInZhbHVlXCIsXCJ2YXJpYW50XCJdKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOnIucm9vdH0sbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIiwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KShyLnNlbGVjdCwodD17fSwoMCxhLmRlZmF1bHQpKHQsci5maWxsZWQsXCJmaWxsZWRcIj09PWgpLCgwLGEuZGVmYXVsdCkodCxyLm91dGxpbmVkLFwib3V0bGluZWRcIj09PWgpLCgwLGEuZGVmYXVsdCkodCxyLmRpc2FibGVkLGMpLHQpLHUpLG5hbWU6ZixkaXNhYmxlZDpjLG9uQ2hhbmdlOm0sdmFsdWU6ZyxyZWY6cH0sYiksbiksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZCx7Y2xhc3NOYW1lOnIuaWNvbn0pKX07dC5kZWZhdWx0PXV9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ2OSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NzIpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oMCkpLmRlZmF1bHQuY3JlYXRlQ29udGV4dCgpO3QuZGVmYXVsdD1vfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NzMpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDc0KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHR9fSk7dmFyIG89cihuKDQ3NikpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pO3ZhciBvPXIobig0NzcpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgbz1yKG4oNDc4KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bzt2YXIgcj1vLnByb3RvdHlwZTtmdW5jdGlvbiBvKGUsdCxuKXt0aGlzLnByb3BlcnR5PWUsdGhpcy5ub3JtYWw9dCxuJiYodGhpcy5zcGFjZT1uKX1yLnNwYWNlPW51bGwsci5ub3JtYWw9e30sci5wcm9wZXJ0eT17fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMTYxKSxvPW4oOTUpO2Z1bmN0aW9uIGEoZSx0LG4sYSl7aSh0aGlzLFwic3BhY2VcIixhKSxyLmNhbGwodGhpcyxlLHQpLGkodGhpcyxcImJvb2xlYW5cIixsKG4sby5ib29sZWFuKSksaSh0aGlzLFwiYm9vbGVhbmlzaFwiLGwobixvLmJvb2xlYW5pc2gpKSxpKHRoaXMsXCJvdmVybG9hZGVkQm9vbGVhblwiLGwobixvLm92ZXJsb2FkZWRCb29sZWFuKSksaSh0aGlzLFwibnVtYmVyXCIsbChuLG8ubnVtYmVyKSksaSh0aGlzLFwiY29tbWFTZXBhcmF0ZWRcIixsKG4sby5jb21tYVNlcGFyYXRlZCkpLGkodGhpcyxcInNwYWNlU2VwYXJhdGVkXCIsbChuLG8uc3BhY2VTZXBhcmF0ZWQpKSxpKHRoaXMsXCJjb21tYU9yU3BhY2VTZXBhcmF0ZWRcIixsKG4sby5jb21tYU9yU3BhY2VTZXBhcmF0ZWQpKX1mdW5jdGlvbiBpKGUsdCxuKXtuJiYoZVt0XT1uKX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuKGUmdCk9PT10fWUuZXhwb3J0cz1hLGEucHJvdG90eXBlPW5ldyByLGEucHJvdG90eXBlLmRlZmluZWQ9ITB9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bzt2YXIgcj1vLnByb3RvdHlwZTtmdW5jdGlvbiBvKGUsdCl7dGhpcy5wcm9wZXJ0eT1lLHRoaXMuYXR0cmlidXRlPXR9ci5zcGFjZT1udWxsLHIuYXR0cmlidXRlPW51bGwsci5wcm9wZXJ0eT1udWxsLHIuYm9vbGVhbj0hMSxyLmJvb2xlYW5pc2g9ITEsci5vdmVybG9hZGVkQm9vbGVhbj0hMSxyLm51bWJlcj0hMSxyLmNvbW1hU2VwYXJhdGVkPSExLHIuc3BhY2VTZXBhcmF0ZWQ9ITEsci5jb21tYU9yU3BhY2VTZXBhcmF0ZWQ9ITEsci5tdXN0VXNlUHJvcGVydHk9ITEsci5kZWZpbmVkPSExfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big0OTQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiByKGUsdC50b0xvd2VyQ2FzZSgpKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmJhc2ljPXtjb21tZW50OntwYXR0ZXJuOi8oPzohfFJFTVxcYikuKy9pLGluc2lkZTp7a2V5d29yZDovXlJFTS9pfX0sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlwiXCJ8WyEjJCUmJygpKixcXC86Ozw9Pj9eXyArXFwtLkEtWlxcZF0pKlwiL2ksZ3JlZWR5OiEwfSxudW1iZXI6Lyg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OkVbKy1dP1xcZCspPy9pLGtleXdvcmQ6L1xcYig/OkFTfEJFRVB8QkxPQUR8QlNBVkV8Q0FMTCg/OiBBQlNPTFVURSk/fENBU0V8Q0hBSU58Q0hESVJ8Q0xFQVJ8Q0xPU0V8Q0xTfENPTXxDT01NT058Q09OU1R8REFUQXxERUNMQVJFfERFRig/OiBGTnwgU0VHfERCTHxJTlR8TE5HfFNOR3xTVFIpfERJTXxET3xET1VCTEV8RUxTRXxFTFNFSUZ8RU5EfEVOVklST058RVJBU0V8RVJST1J8RVhJVHxGSUVMRHxGSUxFU3xGT1J8RlVOQ1RJT058R0VUfEdPU1VCfEdPVE98SUZ8SU5QVVR8SU5URUdFUnxJT0NUTHxLRVl8S0lMTHxMSU5FIElOUFVUfExPQ0FURXxMT0NLfExPTkd8TE9PUHxMU0VUfE1LRElSfE5BTUV8TkVYVHxPRkZ8T04oPzogQ09NfCBFUlJPUnwgS0VZfCBUSU1FUik/fE9QRU58T1BUSU9OIEJBU0V8T1VUfFBPS0V8UFVUfFJFQUR8UkVESU18UkVNfFJFU1RPUkV8UkVTVU1FfFJFVFVSTnxSTURJUnxSU0VUfFJVTnxTSEFSRUR8U0lOR0xFfFNFTEVDVCBDQVNFfFNIRUxMfFNMRUVQfFNUQVRJQ3xTVEVQfFNUT1B8U1RSSU5HfFNVQnxTV0FQfFNZU1RFTXxUSEVOfFRJTUVSfFRPfFRST0ZGfFRST058VFlQRXxVTkxPQ0t8VU5USUx8VVNJTkd8VklFVyBQUklOVHxXQUlUfFdFTkR8V0hJTEV8V1JJVEUpKD86XFwkfFxcYikvaSxmdW5jdGlvbjovXFxiKD86QUJTfEFDQ0VTU3xBQ09TfEFOR0xFfEFSRUF8QVJJVEhNRVRJQ3xBUlJBWXxBU0lOfEFTS3xBVHxBVE58QkFTRXxCRUdJTnxCUkVBS3xDQVVTRXxDRUlMfENIUnxDTElQfENPTExBVEV8Q09MT1J8Q09OfENPU3xDT1NIfENPVHxDU0N8REFURXxEQVRVTXxERUJVR3xERUNJTUFMfERFRnxERUd8REVHUkVFU3xERUxFVEV8REVUfERFVklDRXxESVNQTEFZfERPVHxFTEFQU0VEfEVQU3xFUkFTQUJMRXxFWExJTkV8RVhQfEVYVEVSTkFMfEVYVFlQRXxGSUxFVFlQRXxGSVhFRHxGUHxHT3xHUkFQSHxIQU5ETEVSfElETnxJTUFHRXxJTnxJTlR8SU5URVJOQUx8SVB8SVN8S0VZRUR8TEJPVU5EfExDQVNFfExFRlR8TEVOfExFTkdUSHxMRVR8TElORXxMSU5FU3xMT0d8TE9HMTB8TE9HMnxMVFJJTXxNQVJHSU58TUFUfE1BWHxNQVhOVU18TUlEfE1JTnxNSVNTSU5HfE1PRHxOQVRJVkV8TlVMfE5VTUVSSUN8T0Z8T1BUSU9OfE9SRHxPUkdBTklaQVRJT058T1VUSU58T1VUUFVUfFBJfFBPSU5UfFBPSU5URVJ8UE9JTlRTfFBPU3xQUklOVHxQUk9HUkFNfFBST01QVHxSQUR8UkFESUFOU3xSQU5ET01JWkV8UkVDT1JEfFJFQ1NJWkV8UkVDVFlQRXxSRUxBVElWRXxSRU1BSU5ERVJ8UkVQRUFUfFJFU1R8UkVUUll8UkVXUklURXxSSUdIVHxSTkR8Uk9VTkR8UlRSSU18U0FNRXxTRUN8U0VMRUNUfFNFUVVFTlRJQUx8U0VUfFNFVFRFUnxTR058U0lOfFNJTkh8U0laRXxTS0lQfFNRUnxTVEFOREFSRHxTVEFUVVN8U1RSfFNUUkVBTXxTVFlMRXxUQUJ8VEFOfFRBTkh8VEVNUExBVEV8VEVYVHxUSEVSRXxUSU1FfFRJTUVPVVR8VFJBQ0V8VFJBTlNGT1JNfFRSVU5DQVRFfFVCT1VORHxVQ0FTRXxVU0V8VkFMfFZBUklBQkxFfFZJRVdQT1JUfFdIRU58V0lORE9XfFdJVEh8WkVSfFpPTkVXSURUSCkoPzpcXCR8XFxiKS9pLG9wZXJhdG9yOi88Wz0+XT98Pj0/fFsrXFwtKlxcL149Jl18XFxiKD86QU5EfEVRVnxJTVB8Tk9UfE9SfFhPUilcXGIvaSxwdW5jdHVhdGlvbjovWyw7OigpXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJiYXNpY1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuamF2YT1lLmxhbmd1YWdlcy5leHRlbmQoXCJjbGlrZVwiLHtrZXl3b3JkOi9cXGIoPzphYnN0cmFjdHxjb250aW51ZXxmb3J8bmV3fHN3aXRjaHxhc3NlcnR8ZGVmYXVsdHxnb3RvfHBhY2thZ2V8c3luY2hyb25pemVkfGJvb2xlYW58ZG98aWZ8cHJpdmF0ZXx0aGlzfGJyZWFrfGRvdWJsZXxpbXBsZW1lbnRzfHByb3RlY3RlZHx0aHJvd3xieXRlfGVsc2V8aW1wb3J0fHB1YmxpY3x0aHJvd3N8Y2FzZXxlbnVtfGluc3RhbmNlb2Z8cmV0dXJufHRyYW5zaWVudHxjYXRjaHxleHRlbmRzfGludHxzaG9ydHx0cnl8Y2hhcnxmaW5hbHxpbnRlcmZhY2V8c3RhdGljfHZvaWR8Y2xhc3N8ZmluYWxseXxsb25nfHN0cmljdGZwfHZvbGF0aWxlfGNvbnN0fGZsb2F0fG5hdGl2ZXxzdXBlcnx3aGlsZSlcXGIvLG51bWJlcjovXFxiMGJbMDFdK1xcYnxcXGIweFtcXGRhLWZdKlxcLj9bXFxkYS1mcC1dK1xcYnwoPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzplWystXT9cXGQrKT9bZGZdPy9pLG9wZXJhdG9yOntwYXR0ZXJuOi8oXnxbXi5dKSg/OlxcK1srPV0/fC1bLT1dP3whPT98PDw/PT98Pj4/Pj89P3w9PT98JlsmPV0/fFxcfFt8PV0/fFxcKj0/fFxcLz0/fCU9P3xcXF49P3xbPzp+XSkvbSxsb29rYmVoaW5kOiEwfX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImphdmFcIixcImZ1bmN0aW9uXCIse2Fubm90YXRpb246e2FsaWFzOlwicHVuY3R1YXRpb25cIixwYXR0ZXJuOi8oXnxbXi5dKUBcXHcrLyxsb29rYmVoaW5kOiEwfX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImphdmFcIixcImNsYXNzLW5hbWVcIix7Z2VuZXJpY3M6e3BhdHRlcm46LzxcXHMqXFx3Kyg/OlxcLlxcdyspPyg/OlxccyosXFxzKlxcdysoPzpcXC5cXHcrKT8pKj4vaSxhbGlhczpcImZ1bmN0aW9uXCIsaW5zaWRlOntrZXl3b3JkOmUubGFuZ3VhZ2VzLmphdmEua2V5d29yZCxwdW5jdHVhdGlvbjovWzw+KCksLjpdL319fSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImphdmFcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXt2YXIgdD1lLnV0aWwuY2xvbmUoZS5sYW5ndWFnZXMuamF2YXNjcmlwdCk7ZS5sYW5ndWFnZXMuanN4PWUubGFuZ3VhZ2VzLmV4dGVuZChcIm1hcmt1cFwiLHQpLGUubGFuZ3VhZ2VzLmpzeC50YWcucGF0dGVybj0vPFxcLz8oPzpbXFx3LjotXStcXHMqKD86XFxzKyg/OltcXHcuOi1dKyg/Oj0oPzooXCJ8JykoPzpcXFxcW1xcc1xcU118KD8hXFwxKVteXFxcXF0pKlxcMXxbXlxcc3snXCI+PV0rfFxceyg/Olxceyg/Olxce1tefV0qXFx9fFtee31dKSpcXH18W157fV0pK1xcfSkpP3xcXHtcXC57M31bYS16XyRdW1xcdyRdKig/OlxcLlthLXpfJF1bXFx3JF0qKSpcXH0pKSpcXHMqXFwvPyk/Pi9pLGUubGFuZ3VhZ2VzLmpzeC50YWcuaW5zaWRlLnRhZy5wYXR0ZXJuPS9ePFxcLz9bXlxccz5cXC9dKi9pLGUubGFuZ3VhZ2VzLmpzeC50YWcuaW5zaWRlW1wiYXR0ci12YWx1ZVwiXS5wYXR0ZXJuPS89KD8hXFx7KSg/OihcInwnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxfFteXFxzJ1wiPl0rKS9pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImluc2lkZVwiLFwiYXR0ci1uYW1lXCIse3NwcmVhZDp7cGF0dGVybjovXFx7XFwuezN9W2Etel8kXVtcXHckXSooPzpcXC5bYS16XyRdW1xcdyRdKikqXFx9LyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cXC57M318W3t9Ll0vLFwiYXR0ci12YWx1ZVwiOi9cXHcrL319fSxlLmxhbmd1YWdlcy5qc3gudGFnKSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJpbnNpZGVcIixcImF0dHItdmFsdWVcIix7c2NyaXB0OntwYXR0ZXJuOi89KFxceyg/Olxceyg/Olxce1tefV0qXFx9fFtefV0pKlxcfXxbXn1dKStcXH0pL2ksaW5zaWRlOntcInNjcmlwdC1wdW5jdHVhdGlvblwiOntwYXR0ZXJuOi9ePSg/PXspLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LHJlc3Q6ZS5sYW5ndWFnZXMuanN4fSxhbGlhczpcImxhbmd1YWdlLWphdmFzY3JpcHRcIn19LGUubGFuZ3VhZ2VzLmpzeC50YWcpO3ZhciBuPWZ1bmN0aW9uKGUpe3JldHVybiBlP1wic3RyaW5nXCI9PXR5cGVvZiBlP2U6XCJzdHJpbmdcIj09dHlwZW9mIGUuY29udGVudD9lLmNvbnRlbnQ6ZS5jb250ZW50Lm1hcChuKS5qb2luKFwiXCIpOlwiXCJ9LHI9ZnVuY3Rpb24odCl7Zm9yKHZhciBvPVtdLGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIGk9dFthXSxsPSExO2lmKFwic3RyaW5nXCIhPXR5cGVvZiBpJiYoXCJ0YWdcIj09PWkudHlwZSYmaS5jb250ZW50WzBdJiZcInRhZ1wiPT09aS5jb250ZW50WzBdLnR5cGU/XCI8L1wiPT09aS5jb250ZW50WzBdLmNvbnRlbnRbMF0uY29udGVudD9vLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdLnRhZ05hbWU9PT1uKGkuY29udGVudFswXS5jb250ZW50WzFdKSYmby5wb3AoKTpcIi8+XCI9PT1pLmNvbnRlbnRbaS5jb250ZW50Lmxlbmd0aC0xXS5jb250ZW50fHxvLnB1c2goe3RhZ05hbWU6bihpLmNvbnRlbnRbMF0uY29udGVudFsxXSksb3BlbmVkQnJhY2VzOjB9KTpvLmxlbmd0aD4wJiZcInB1bmN0dWF0aW9uXCI9PT1pLnR5cGUmJlwie1wiPT09aS5jb250ZW50P29bby5sZW5ndGgtMV0ub3BlbmVkQnJhY2VzKys6by5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXS5vcGVuZWRCcmFjZXM+MCYmXCJwdW5jdHVhdGlvblwiPT09aS50eXBlJiZcIn1cIj09PWkuY29udGVudD9vW28ubGVuZ3RoLTFdLm9wZW5lZEJyYWNlcy0tOmw9ITApLChsfHxcInN0cmluZ1wiPT10eXBlb2YgaSkmJm8ubGVuZ3RoPjAmJjA9PT1vW28ubGVuZ3RoLTFdLm9wZW5lZEJyYWNlcyl7dmFyIHM9bihpKTthPHQubGVuZ3RoLTEmJihcInN0cmluZ1wiPT10eXBlb2YgdFthKzFdfHxcInBsYWluLXRleHRcIj09PXRbYSsxXS50eXBlKSYmKHMrPW4odFthKzFdKSx0LnNwbGljZShhKzEsMSkpLGE+MCYmKFwic3RyaW5nXCI9PXR5cGVvZiB0W2EtMV18fFwicGxhaW4tdGV4dFwiPT09dFthLTFdLnR5cGUpJiYocz1uKHRbYS0xXSkrcyx0LnNwbGljZShhLTEsMSksYS0tKSx0W2FdPW5ldyBlLlRva2VuKFwicGxhaW4tdGV4dFwiLHMsbnVsbCxzKX1pLmNvbnRlbnQmJlwic3RyaW5nXCIhPXR5cGVvZiBpLmNvbnRlbnQmJnIoaS5jb250ZW50KX19O2UuaG9va3MuYWRkKFwiYWZ0ZXItdG9rZW5pemVcIixmdW5jdGlvbihlKXtcImpzeFwiIT09ZS5sYW5ndWFnZSYmXCJ0c3hcIiE9PWUubGFuZ3VhZ2V8fHIoZS50b2tlbnMpfSl9KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJqc3hcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5waHA9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7a2V5d29yZDovXFxiKD86YW5kfG9yfHhvcnxhcnJheXxhc3xicmVha3xjYXNlfGNmdW5jdGlvbnxjbGFzc3xjb25zdHxjb250aW51ZXxkZWNsYXJlfGRlZmF1bHR8ZGllfGRvfGVsc2V8ZWxzZWlmfGVuZGRlY2xhcmV8ZW5kZm9yfGVuZGZvcmVhY2h8ZW5kaWZ8ZW5kc3dpdGNofGVuZHdoaWxlfGV4dGVuZHN8Zm9yfGZvcmVhY2h8ZnVuY3Rpb258aW5jbHVkZXxpbmNsdWRlX29uY2V8Z2xvYmFsfGlmfG5ld3xyZXR1cm58c3RhdGljfHN3aXRjaHx1c2V8cmVxdWlyZXxyZXF1aXJlX29uY2V8dmFyfHdoaWxlfGFic3RyYWN0fGludGVyZmFjZXxwdWJsaWN8aW1wbGVtZW50c3xwcml2YXRlfHByb3RlY3RlZHxwYXJlbnR8dGhyb3d8bnVsbHxlY2hvfHByaW50fHRyYWl0fG5hbWVzcGFjZXxmaW5hbHx5aWVsZHxnb3RvfGluc3RhbmNlb2Z8ZmluYWxseXx0cnl8Y2F0Y2gpXFxiL2ksY29uc3RhbnQ6L1xcYltBLVowLTlfXXsyLH1cXGIvLGNvbW1lbnQ6e3BhdHRlcm46LyhefFteXFxcXF0pKD86XFwvXFwqW1xcc1xcU10qP1xcKlxcL3xcXC9cXC8uKikvLGxvb2tiZWhpbmQ6ITB9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwicGhwXCIsXCJzdHJpbmdcIix7XCJzaGVsbC1jb21tZW50XCI6e3BhdHRlcm46LyhefFteXFxcXF0pIy4qLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwiY29tbWVudFwifX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInBocFwiLFwia2V5d29yZFwiLHtkZWxpbWl0ZXI6e3BhdHRlcm46L1xcPz58PFxcPyg/OnBocHw9KT8vaSxhbGlhczpcImltcG9ydGFudFwifSx2YXJpYWJsZTovXFwkKyg/OlxcdytcXGJ8KD89eykpL2kscGFja2FnZTp7cGF0dGVybjovKFxcXFx8bmFtZXNwYWNlXFxzK3x1c2VcXHMrKVtcXHdcXFxcXSsvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwdW5jdHVhdGlvbjovXFxcXC99fX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInBocFwiLFwib3BlcmF0b3JcIix7cHJvcGVydHk6e3BhdHRlcm46LygtPilbXFx3XSsvLGxvb2tiZWhpbmQ6ITB9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwicGhwXCIsXCJzdHJpbmdcIix7XCJub3dkb2Mtc3RyaW5nXCI6e3BhdHRlcm46Lzw8PCcoW14nXSspJyg/Olxcclxcbj98XFxuKSg/Oi4qKD86XFxyXFxuP3xcXG4pKSo/XFwxOy8sZ3JlZWR5OiEwLGFsaWFzOlwic3RyaW5nXCIsaW5zaWRlOntkZWxpbWl0ZXI6e3BhdHRlcm46L148PDwnW14nXSsnfFthLXpfXVxcdyo7JC9pLGFsaWFzOlwic3ltYm9sXCIsaW5zaWRlOntwdW5jdHVhdGlvbjovXjw8PCc/fFsnO10kL319fX0sXCJoZXJlZG9jLXN0cmluZ1wiOntwYXR0ZXJuOi88PDwoPzpcIihbXlwiXSspXCIoPzpcXHJcXG4/fFxcbikoPzouKig/Olxcclxcbj98XFxuKSkqP1xcMTt8KFthLXpfXVxcdyopKD86XFxyXFxuP3xcXG4pKD86LiooPzpcXHJcXG4/fFxcbikpKj9cXDI7KS9pLGdyZWVkeTohMCxhbGlhczpcInN0cmluZ1wiLGluc2lkZTp7ZGVsaW1pdGVyOntwYXR0ZXJuOi9ePDw8KD86XCJbXlwiXStcInxbYS16X11cXHcqKXxbYS16X11cXHcqOyQvaSxhbGlhczpcInN5bWJvbFwiLGluc2lkZTp7cHVuY3R1YXRpb246L148PDxcIj98W1wiO10kL319LGludGVycG9sYXRpb246bnVsbH19LFwic2luZ2xlLXF1b3RlZC1zdHJpbmdcIjp7cGF0dGVybjovJyg/OlxcXFxbXFxzXFxTXXxbXlxcXFwnXSkqJy8sZ3JlZWR5OiEwLGFsaWFzOlwic3RyaW5nXCJ9LFwiZG91YmxlLXF1b3RlZC1zdHJpbmdcIjp7cGF0dGVybjovXCIoPzpcXFxcW1xcc1xcU118W15cXFxcXCJdKSpcIi8sZ3JlZWR5OiEwLGFsaWFzOlwic3RyaW5nXCIsaW5zaWRlOntpbnRlcnBvbGF0aW9uOm51bGx9fX0pLGRlbGV0ZSBlLmxhbmd1YWdlcy5waHAuc3RyaW5nO3ZhciB0PXtwYXR0ZXJuOi97XFwkKD86eyg/OntbXnt9XSt9fFtee31dKyl9fFtee31dKSt9fChefFteXFxcXHtdKVxcJCsoPzpcXHcrKD86XFxbLis/XXwtPlxcdyspKikvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntyZXN0OmUubGFuZ3VhZ2VzLnBocH19O2UubGFuZ3VhZ2VzLnBocFtcImhlcmVkb2Mtc3RyaW5nXCJdLmluc2lkZS5pbnRlcnBvbGF0aW9uPXQsZS5sYW5ndWFnZXMucGhwW1wiZG91YmxlLXF1b3RlZC1zdHJpbmdcIl0uaW5zaWRlLmludGVycG9sYXRpb249dCxlLmhvb2tzLmFkZChcImJlZm9yZS10b2tlbml6ZVwiLGZ1bmN0aW9uKHQpe2lmKC8oPzo8XFw/cGhwfDxcXD8pL2dpLnRlc3QodC5jb2RlKSl7ZS5sYW5ndWFnZXNbXCJtYXJrdXAtdGVtcGxhdGluZ1wiXS5idWlsZFBsYWNlaG9sZGVycyh0LFwicGhwXCIsLyg/OjxcXD9waHB8PFxcPylbXFxzXFxTXSo/KD86XFw/PnwkKS9naSl9fSksZS5ob29rcy5hZGQoXCJhZnRlci10b2tlbml6ZVwiLGZ1bmN0aW9uKHQpe2UubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl0udG9rZW5pemVQbGFjZWhvbGRlcnModCxcInBocFwiKX0pfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicGhwXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5zcWw9e2NvbW1lbnQ6e3BhdHRlcm46LyhefFteXFxcXF0pKD86XFwvXFwqW1xcc1xcU10qP1xcKlxcL3woPzotLXxcXC9cXC98IykuKikvLGxvb2tiZWhpbmQ6ITB9LHN0cmluZzp7cGF0dGVybjovKF58W15AXFxcXF0pKFwifCcpKD86XFxcXFtcXHNcXFNdfCg/IVxcMilbXlxcXFxdKSpcXDIvLGdyZWVkeTohMCxsb29rYmVoaW5kOiEwfSx2YXJpYWJsZTovQFtcXHcuJF0rfEAoW1wiJ2BdKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkrXFwxLyxmdW5jdGlvbjovXFxiKD86QVZHfENPVU5UfEZJUlNUfEZPUk1BVHxMQVNUfExDQVNFfExFTnxNQVh8TUlEfE1JTnxNT0R8Tk9XfFJPVU5EfFNVTXxVQ0FTRSkoPz1cXHMqXFwoKS9pLGtleXdvcmQ6L1xcYig/OkFDVElPTnxBRER8QUZURVJ8QUxHT1JJVEhNfEFMTHxBTFRFUnxBTkFMWVpFfEFOWXxBUFBMWXxBU3xBU0N8QVVUSE9SSVpBVElPTnxBVVRPX0lOQ1JFTUVOVHxCQUNLVVB8QkRCfEJFR0lOfEJFUktFTEVZREJ8QklHSU5UfEJJTkFSWXxCSVR8QkxPQnxCT09MfEJPT0xFQU58QlJFQUt8QlJPV1NFfEJUUkVFfEJVTEt8Qll8Q0FMTHxDQVNDQURFRD98Q0FTRXxDSEFJTnxDSEFSKD86QUNURVJ8U0VUKT98Q0hFQ0soPzpQT0lOVCk/fENMT1NFfENMVVNURVJFRHxDT0FMRVNDRXxDT0xMQVRFfENPTFVNTlM/fENPTU1FTlR8Q09NTUlUKD86VEVEKT98Q09NUFVURXxDT05ORUNUfENPTlNJU1RFTlR8Q09OU1RSQUlOVHxDT05UQUlOUyg/OlRBQkxFKT98Q09OVElOVUV8Q09OVkVSVHxDUkVBVEV8Q1JPU1N8Q1VSUkVOVCg/Ol9EQVRFfF9USU1FfF9USU1FU1RBTVB8X1VTRVIpP3xDVVJTT1J8Q1lDTEV8REFUQSg/OkJBU0VTPyk/fERBVEUoPzpUSU1FKT98REFZfERCQ0N8REVBTExPQ0FURXxERUN8REVDSU1BTHxERUNMQVJFfERFRkFVTFR8REVGSU5FUnxERUxBWUVEfERFTEVURXxERUxJTUlURVJTP3xERU5ZfERFU0N8REVTQ1JJQkV8REVURVJNSU5JU1RJQ3xESVNBQkxFfERJU0NBUkR8RElTS3xESVNUSU5DVHxESVNUSU5DVFJPV3xESVNUUklCVVRFRHxET3xET1VCTEV8RFJPUHxEVU1NWXxEVU1QKD86RklMRSk/fERVUExJQ0FURXxFTFNFKD86SUYpP3xFTkFCTEV8RU5DTE9TRUR8RU5EfEVOR0lORXxFTlVNfEVSUkxWTHxFUlJPUlN8RVNDQVBFRD98RVhDRVBUfEVYRUMoPzpVVEUpP3xFWElTVFN8RVhJVHxFWFBMQUlOfEVYVEVOREVEfEZFVENIfEZJRUxEU3xGSUxFfEZJTExGQUNUT1J8RklSU1R8RklYRUR8RkxPQVR8Rk9MTE9XSU5HfEZPUig/OiBFQUNIIFJPVyk/fEZPUkNFfEZPUkVJR058RlJFRVRFWFQoPzpUQUJMRSk/fEZST018RlVMTHxGVU5DVElPTnxHRU9NRVRSWSg/OkNPTExFQ1RJT04pP3xHTE9CQUx8R09UT3xHUkFOVHxHUk9VUHxIQU5ETEVSfEhBU0h8SEFWSU5HfEhPTERMT0NLfEhPVVJ8SURFTlRJVFkoPzpfSU5TRVJUfENPTCk/fElGfElHTk9SRXxJTVBPUlR8SU5ERVh8SU5GSUxFfElOTkVSfElOTk9EQnxJTk9VVHxJTlNFUlR8SU5UfElOVEVHRVJ8SU5URVJTRUNUfElOVEVSVkFMfElOVE98SU5WT0tFUnxJU09MQVRJT058SVRFUkFURXxKT0lOfEtFWVM/fEtJTEx8TEFOR1VBR0V8TEFTVHxMRUFWRXxMRUZUfExFVkVMfExJTUlUfExJTkVOT3xMSU5FU3xMSU5FU1RSSU5HfExPQUR8TE9DQUx8TE9DS3xMT05HKD86QkxPQnxURVhUKXxMT09QfE1BVENIKD86RUQpP3xNRURJVU0oPzpCTE9CfElOVHxURVhUKXxNRVJHRXxNSURETEVJTlR8TUlOVVRFfE1PREV8TU9ESUZJRVN8TU9ESUZZfE1PTlRIfE1VTFRJKD86TElORVNUUklOR3xQT0lOVHxQT0xZR09OKXxOQVRJT05BTHxOQVRVUkFMfE5DSEFSfE5FWFR8Tk98Tk9OQ0xVU1RFUkVEfE5VTExJRnxOVU1FUklDfE9GRj98T0ZGU0VUUz98T058T1BFTig/OkRBVEFTT1VSQ0V8UVVFUll8Uk9XU0VUKT98T1BUSU1JWkV8T1BUSU9OKD86QUxMWSk/fE9SREVSfE9VVCg/OkVSfEZJTEUpP3xPVkVSfFBBUlRJQUx8UEFSVElUSU9OfFBFUkNFTlR8UElWT1R8UExBTnxQT0lOVHxQT0xZR09OfFBSRUNFRElOR3xQUkVDSVNJT058UFJFUEFSRXxQUkVWfFBSSU1BUll8UFJJTlR8UFJJVklMRUdFU3xQUk9DKD86RURVUkUpP3xQVUJMSUN8UFVSR0V8UVVJQ0t8UkFJU0VSUk9SfFJFQURTP3xSRUFMfFJFQ09ORklHVVJFfFJFRkVSRU5DRVN8UkVMRUFTRXxSRU5BTUV8UkVQRUFUKD86QUJMRSk/fFJFUExBQ0V8UkVQTElDQVRJT058UkVRVUlSRXxSRVNJR05BTHxSRVNUT1JFfFJFU1RSSUNUfFJFVFVSTlM/fFJFVk9LRXxSSUdIVHxST0xMQkFDS3xST1VUSU5FfFJPVyg/OkNPVU5UfEdVSURDT0x8Uyk/fFJUUkVFfFJVTEV8U0FWRSg/OlBPSU5UKT98U0NIRU1BfFNFQ09ORHxTRUxFQ1R8U0VSSUFMKD86SVpBQkxFKT98U0VTU0lPTig/Ol9VU0VSKT98U0VUKD86VVNFUik/fFNIQVJFfFNIT1d8U0hVVERPV058U0lNUExFfFNNQUxMSU5UfFNOQVBTSE9UfFNPTUV8U09OQU1FfFNRTHxTVEFSVCg/OklORyk/fFNUQVRJU1RJQ1N8U1RBVFVTfFNUUklQRUR8U1lTVEVNX1VTRVJ8VEFCTEVTP3xUQUJMRVNQQUNFfFRFTVAoPzpPUkFSWXxUQUJMRSk/fFRFUk1JTkFURUR8VEVYVCg/OlNJWkUpP3xUSEVOfFRJTUUoPzpTVEFNUCk/fFRJTlkoPzpCTE9CfElOVHxURVhUKXxUT1A/fFRSQU4oPzpTQUNUSU9OUz8pP3xUUklHR0VSfFRSVU5DQVRFfFRTRVFVQUx8VFlQRVM/fFVOQk9VTkRFRHxVTkNPTU1JVFRFRHxVTkRFRklORUR8VU5JT058VU5JUVVFfFVOTE9DS3xVTlBJVk9UfFVOU0lHTkVEfFVQREFURSg/OlRFWFQpP3xVU0FHRXxVU0V8VVNFUnxVU0lOR3xWQUxVRVM/fFZBUig/OkJJTkFSWXxDSEFSfENIQVJBQ1RFUnxZSU5HKXxWSUVXfFdBSVRGT1J8V0FSTklOR1N8V0hFTnxXSEVSRXxXSElMRXxXSVRIKD86IFJPTExVUHxJTik/fFdPUkt8V1JJVEUoPzpURVhUKT98WUVBUilcXGIvaSxib29sZWFuOi9cXGIoPzpUUlVFfEZBTFNFfE5VTEwpXFxiL2ksbnVtYmVyOi9cXGIweFtcXGRhLWZdK1xcYnxcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkK1xcYi9pLG9wZXJhdG9yOi9bLSsqXFwvPSVefl18JiY/fFxcfFxcfD98IT0/fDwoPzo9Pj98PHw+KT98Pls+PV0/fFxcYig/OkFORHxCRVRXRUVOfElOfExJS0V8Tk9UfE9SfElTfERJVnxSRUdFWFB8UkxJS0V8U09VTkRTIExJS0V8WE9SKVxcYi9pLHB1bmN0dWF0aW9uOi9bO1tcXF0oKWAsLl0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwic3FsXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy50eXBlc2NyaXB0PWUubGFuZ3VhZ2VzLmV4dGVuZChcImphdmFzY3JpcHRcIix7a2V5d29yZDovXFxiKD86YXN8YXN5bmN8YXdhaXR8YnJlYWt8Y2FzZXxjYXRjaHxjbGFzc3xjb25zdHxjb250aW51ZXxkZWJ1Z2dlcnxkZWZhdWx0fGRlbGV0ZXxkb3xlbHNlfGVudW18ZXhwb3J0fGV4dGVuZHN8ZmluYWxseXxmb3J8ZnJvbXxmdW5jdGlvbnxnZXR8aWZ8aW1wbGVtZW50c3xpbXBvcnR8aW58aW5zdGFuY2VvZnxpbnRlcmZhY2V8bGV0fG5ld3xudWxsfG9mfHBhY2thZ2V8cHJpdmF0ZXxwcm90ZWN0ZWR8cHVibGljfHJldHVybnxzZXR8c3RhdGljfHN1cGVyfHN3aXRjaHx0aGlzfHRocm93fHRyeXx0eXBlb2Z8dmFyfHZvaWR8d2hpbGV8d2l0aHx5aWVsZHxtb2R1bGV8ZGVjbGFyZXxjb25zdHJ1Y3RvcnxuYW1lc3BhY2V8YWJzdHJhY3R8cmVxdWlyZXx0eXBlKVxcYi8sYnVpbHRpbjovXFxiKD86c3RyaW5nfEZ1bmN0aW9ufGFueXxudW1iZXJ8Ym9vbGVhbnxBcnJheXxzeW1ib2x8Y29uc29sZSlcXGIvfSksZS5sYW5ndWFnZXMudHM9ZS5sYW5ndWFnZXMudHlwZXNjcmlwdH1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwidHlwZXNjcmlwdFwiLHIuYWxpYXNlcz1bXCJ0c1wiXX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIG51bGwhPWUmJihcIm9iamVjdFwiPT10fHxcImZ1bmN0aW9uXCI9PXQpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNjcxKSxvPVwib2JqZWN0XCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixhPXJ8fG98fEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTcwKS5TeW1ib2w7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bi5wK1wiMGM1OTc3MGI1YjNmYTVhMmFmNGMyNWNlYTI0YzExNjEuc3ZnXCJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bi5wK1wiOTY5YTM0YmU3MGY2MTM1NjdhYWU2NzM4OGE2NDZjNWEuc3ZnXCJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bi5wK1wiZmQwYzJiNDZhNjljMzQ3MTUyMjAyNGVkZjY4NzRlMzMuc3ZnXCJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bi5wK1wiMWIxYTNhMjk2NzQ5OTc1ZjdiMDI0NDNiODE0ZjNiZDIuc3ZnXCJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bi5wK1wiNDBjYzBlZjY5YTAxODExNDRjYjY1MDA1NWZjNzJlNzkuc3ZnXCJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bi5wK1wiYjQxN2Q3NTIyYjY2OGVhMmU0MzdkYjg0ZjQ5YmMwMTIuc3ZnXCJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bi5wK1wiNzVjNDQ2MDQ2YzJmODRlMDQ5MjYwYjg0NzlmMzYyMjYuc3ZnXCJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bi5wK1wiZWIxMDZlMTdlYzk4YjUwM2E5ZWExYjVhNDUyYTQ0ZTYuc3ZnXCJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bi5wK1wiNzEzZDFiYTBkNTgwY2MwYTMzYTQyNGVhYjFlNzI3Nzkuc3ZnXCJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bi5wK1wiNDdkMTAxYTBiNDM5OTZhOWM2MDA4MTZjZjIxMDc3NDIuc3ZnXCJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bi5wK1wiMWIyYTMyMTZiYjNkY2M1YjJkY2U3NTFiZWNhNDM0MGMuc3ZnXCJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9MCxuPW5ldyBBcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspblt0XT1lW3RdO3JldHVybiBufX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSl8fFwiW29iamVjdCBBcmd1bWVudHNdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX12YXIgbz1uKDIzKSxhPW4oMjc1KSxpPW4oMjg4KSxsPW4oMSkscz1uKDM0NiksdT1uKDM0OCksYz1uKDM0OSksZD1uKDM1MCkscD1uKDM1MSksZj1uKDM1MiksbT1uKDM1MyksZz1uKDM1NCksaD1uKDM1NSksYj1PYmplY3Qua2V5cyhnKSx5PWZ1bmN0aW9uKGUpe3ZhciB0PWUuc291cmNlfHxlLmNoaWxkcmVufHxcIlwiO2lmKGUuYWxsb3dlZFR5cGVzJiZlLmRpc2FsbG93ZWRUeXBlcyl0aHJvdyBuZXcgRXJyb3IoXCJPbmx5IG9uZSBvZiBgYWxsb3dlZFR5cGVzYCBhbmQgYGRpc2FsbG93ZWRUeXBlc2Agc2hvdWxkIGJlIGRlZmluZWRcIik7dmFyIG49byhnLGUucmVuZGVyZXJzKSxyPVtpXS5jb25jYXQoZS5wbHVnaW5zfHxbXSkucmVkdWNlKHYsYSgpKS5wYXJzZSh0KSxsPW8oZSx7cmVuZGVyZXJzOm4sZGVmaW5pdGlvbnM6ZihyKX0pLG09ZnVuY3Rpb24oZSl7dmFyIHQ9W3AscygpXSxuPWUuZGlzYWxsb3dlZFR5cGVzO2UuYWxsb3dlZFR5cGVzJiYobj1iLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm5cInJvb3RcIiE9PXQmJi0xPT09ZS5hbGxvd2VkVHlwZXMuaW5kZXhPZih0KX0pKTt2YXIgcj1lLnVud3JhcERpc2FsbG93ZWQ/XCJ1bndyYXBcIjpcInJlbW92ZVwiO24mJm4ubGVuZ3RoPjAmJnQucHVzaChjLm9mVHlwZShuLHIpKTtlLmFsbG93Tm9kZSYmdC5wdXNoKGMuaWZOb3RNYXRjaChlLmFsbG93Tm9kZSxyKSk7dmFyIG89IWUuZXNjYXBlSHRtbCYmIWUuc2tpcEh0bWwsYT0oZS5hc3RQbHVnaW5zfHxbXSkuc29tZShmdW5jdGlvbihlKXt2YXIgdD1BcnJheS5pc0FycmF5KGUpP2VbMF06ZTtyZXR1cm4gdC5pZGVudGl0eT09PWguSHRtbFBhcnNlcn0pO28mJiFhJiZ0LnB1c2godSk7cmV0dXJuIGUuYXN0UGx1Z2lucz90LmNvbmNhdChlLmFzdFBsdWdpbnMpOnR9KGUpLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiB0KGUsbCl9LHIpO3JldHVybiBkKG0sbCl9O2Z1bmN0aW9uIHYoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9lLnVzZS5hcHBseShlLHIodCkpOmUudXNlKHQpfXkuZGVmYXVsdFByb3BzPXtyZW5kZXJlcnM6e30sZXNjYXBlSHRtbDohMCxza2lwSHRtbDohMSxzb3VyY2VQb3M6ITEscmF3U291cmNlUG9zOiExLHRyYW5zZm9ybUxpbmtVcmk6bSxhc3RQbHVnaW5zOltdLHBsdWdpbnM6W119LHkucHJvcFR5cGVzPXtjbGFzc05hbWU6bC5zdHJpbmcsc291cmNlOmwuc3RyaW5nLGNoaWxkcmVuOmwuc3RyaW5nLHNvdXJjZVBvczpsLmJvb2wscmF3U291cmNlUG9zOmwuYm9vbCxlc2NhcGVIdG1sOmwuYm9vbCxza2lwSHRtbDpsLmJvb2wsYWxsb3dOb2RlOmwuZnVuYyxhbGxvd2VkVHlwZXM6bC5hcnJheU9mKGwub25lT2YoYikpLGRpc2FsbG93ZWRUeXBlczpsLmFycmF5T2YobC5vbmVPZihiKSksdHJhbnNmb3JtTGlua1VyaTpsLm9uZU9mVHlwZShbbC5mdW5jLGwuYm9vbF0pLGxpbmtUYXJnZXQ6bC5vbmVPZlR5cGUoW2wuZnVuYyxsLnN0cmluZ10pLHRyYW5zZm9ybUltYWdlVXJpOmwuZnVuYyxhc3RQbHVnaW5zOmwuYXJyYXlPZihsLmZ1bmMpLHVud3JhcERpc2FsbG93ZWQ6bC5ib29sLHJlbmRlcmVyczpsLm9iamVjdCxwbHVnaW5zOmwuYXJyYXl9LHkudHlwZXM9Yix5LnJlbmRlcmVycz1nLHkudXJpVHJhbnNmb3JtZXI9bSxlLmV4cG9ydHM9eX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7dmFyIHQsbj1lLlN5bWJvbDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBuP24ub2JzZXJ2YWJsZT90PW4ub2JzZXJ2YWJsZToodD1uKFwib2JzZXJ2YWJsZVwiKSxuLm9ic2VydmFibGU9dCk6dD1cIkBAb2JzZXJ2YWJsZVwiLHR9bi5kKHQsXCJhXCIsZnVuY3Rpb24oKXtyZXR1cm4gcn0pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big0ODYpO2UuZXhwb3J0cz1yLHIucmVnaXN0ZXIobig1MDcpKSxyLnJlZ2lzdGVyKG4oNTA4KSksci5yZWdpc3RlcihuKDUwOSkpLHIucmVnaXN0ZXIobig1MTApKSxyLnJlZ2lzdGVyKG4oNTExKSksci5yZWdpc3RlcihuKDUxMikpLHIucmVnaXN0ZXIobig1MTMpKSxyLnJlZ2lzdGVyKG4oNTE0KSksci5yZWdpc3RlcihuKDUxNSkpLHIucmVnaXN0ZXIobig1MTYpKSxyLnJlZ2lzdGVyKG4oNTE3KSksci5yZWdpc3RlcihuKDUxOCkpLHIucmVnaXN0ZXIobig1MTkpKSxyLnJlZ2lzdGVyKG4oNTIwKSksci5yZWdpc3RlcihuKDE2MykpLHIucmVnaXN0ZXIobig1MjEpKSxyLnJlZ2lzdGVyKG4oNTIyKSksci5yZWdpc3RlcihuKDUyMykpLHIucmVnaXN0ZXIobig1MjQpKSxyLnJlZ2lzdGVyKG4oMzQpKSxyLnJlZ2lzdGVyKG4oNTI1KSksci5yZWdpc3RlcihuKDUyNikpLHIucmVnaXN0ZXIobig5NikpLHIucmVnaXN0ZXIobig1MjcpKSxyLnJlZ2lzdGVyKG4oNTI4KSksci5yZWdpc3RlcihuKDUyOSkpLHIucmVnaXN0ZXIobig1MzApKSxyLnJlZ2lzdGVyKG4oNTMxKSksci5yZWdpc3RlcihuKDUzMikpLHIucmVnaXN0ZXIobig1MzMpKSxyLnJlZ2lzdGVyKG4oNTM0KSksci5yZWdpc3RlcihuKDUzNSkpLHIucmVnaXN0ZXIobig1MzYpKSxyLnJlZ2lzdGVyKG4oNTM3KSksci5yZWdpc3RlcihuKDUzOCkpLHIucmVnaXN0ZXIobig1MzkpKSxyLnJlZ2lzdGVyKG4oNTQwKSksci5yZWdpc3RlcihuKDU0MSkpLHIucmVnaXN0ZXIobig1NDIpKSxyLnJlZ2lzdGVyKG4oNTQzKSksci5yZWdpc3RlcihuKDU0NCkpLHIucmVnaXN0ZXIobig1NDUpKSxyLnJlZ2lzdGVyKG4oNTQ2KSksci5yZWdpc3RlcihuKDU0NykpLHIucmVnaXN0ZXIobig1NDgpKSxyLnJlZ2lzdGVyKG4oNTQ5KSksci5yZWdpc3RlcihuKDU1MCkpLHIucmVnaXN0ZXIobig1NTEpKSxyLnJlZ2lzdGVyKG4oNTUyKSksci5yZWdpc3RlcihuKDU1MykpLHIucmVnaXN0ZXIobig1NTQpKSxyLnJlZ2lzdGVyKG4oNTU1KSksci5yZWdpc3RlcihuKDU1NikpLHIucmVnaXN0ZXIobig1NTcpKSxyLnJlZ2lzdGVyKG4oNTU4KSksci5yZWdpc3RlcihuKDU1OSkpLHIucmVnaXN0ZXIobig1NjApKSxyLnJlZ2lzdGVyKG4oNTYxKSksci5yZWdpc3RlcihuKDU2MikpLHIucmVnaXN0ZXIobig1NjMpKSxyLnJlZ2lzdGVyKG4oMTY0KSksci5yZWdpc3RlcihuKDU2NCkpLHIucmVnaXN0ZXIobig1NjUpKSxyLnJlZ2lzdGVyKG4oMTY1KSksci5yZWdpc3RlcihuKDU2NikpLHIucmVnaXN0ZXIobig1NjcpKSxyLnJlZ2lzdGVyKG4oNTY4KSksci5yZWdpc3RlcihuKDU2OSkpLHIucmVnaXN0ZXIobig1NzApKSxyLnJlZ2lzdGVyKG4oNTcxKSksci5yZWdpc3RlcihuKDU3MikpLHIucmVnaXN0ZXIobig1NzMpKSxyLnJlZ2lzdGVyKG4oNTc0KSksci5yZWdpc3RlcihuKDU3NSkpLHIucmVnaXN0ZXIobig1NzYpKSxyLnJlZ2lzdGVyKG4oNTc3KSksci5yZWdpc3RlcihuKDU3OCkpLHIucmVnaXN0ZXIobig1NzkpKSxyLnJlZ2lzdGVyKG4oNTgwKSksci5yZWdpc3RlcihuKDU4MSkpLHIucmVnaXN0ZXIobig1ODIpKSxyLnJlZ2lzdGVyKG4oNTgzKSksci5yZWdpc3RlcihuKDU4NCkpLHIucmVnaXN0ZXIobig1ODUpKSxyLnJlZ2lzdGVyKG4oNTg2KSksci5yZWdpc3RlcihuKDU4NykpLHIucmVnaXN0ZXIobig1ODgpKSxyLnJlZ2lzdGVyKG4oNTg5KSksci5yZWdpc3RlcihuKDU5MCkpLHIucmVnaXN0ZXIobig1OTEpKSxyLnJlZ2lzdGVyKG4oNTkyKSksci5yZWdpc3RlcihuKDU5MykpLHIucmVnaXN0ZXIobig1OTQpKSxyLnJlZ2lzdGVyKG4oNTk1KSksci5yZWdpc3RlcihuKDU5NikpLHIucmVnaXN0ZXIobig1OTcpKSxyLnJlZ2lzdGVyKG4oMTY2KSksci5yZWdpc3RlcihuKDU5OCkpLHIucmVnaXN0ZXIobig1OTkpKSxyLnJlZ2lzdGVyKG4oNjAwKSksci5yZWdpc3RlcihuKDYwMSkpLHIucmVnaXN0ZXIobig2MDIpKSxyLnJlZ2lzdGVyKG4oNjAzKSksci5yZWdpc3RlcihuKDYwNCkpLHIucmVnaXN0ZXIobig2MDUpKSxyLnJlZ2lzdGVyKG4oNjA2KSksci5yZWdpc3RlcihuKDYwNykpLHIucmVnaXN0ZXIobig2MDgpKSxyLnJlZ2lzdGVyKG4oNjA5KSksci5yZWdpc3RlcihuKDYxMCkpLHIucmVnaXN0ZXIobig2MTEpKSxyLnJlZ2lzdGVyKG4oNjEyKSksci5yZWdpc3RlcihuKDYxMykpLHIucmVnaXN0ZXIobig2MTQpKSxyLnJlZ2lzdGVyKG4oNjE1KSksci5yZWdpc3RlcihuKDk3KSksci5yZWdpc3RlcihuKDYxNikpLHIucmVnaXN0ZXIobig2MTcpKSxyLnJlZ2lzdGVyKG4oNjE4KSksci5yZWdpc3RlcihuKDYxOSkpLHIucmVnaXN0ZXIobig2MjApKSxyLnJlZ2lzdGVyKG4oNjIxKSksci5yZWdpc3RlcihuKDYyMikpLHIucmVnaXN0ZXIobig2MjMpKSxyLnJlZ2lzdGVyKG4oNjI0KSksci5yZWdpc3RlcihuKDE2NykpLHIucmVnaXN0ZXIobig2MjUpKSxyLnJlZ2lzdGVyKG4oNjI2KSksci5yZWdpc3RlcihuKDYyNykpLHIucmVnaXN0ZXIobig2MjgpKSxyLnJlZ2lzdGVyKG4oNjI5KSksci5yZWdpc3RlcihuKDYzMCkpLHIucmVnaXN0ZXIobig2MzEpKSxyLnJlZ2lzdGVyKG4oNjMyKSksci5yZWdpc3RlcihuKDE2OCkpLHIucmVnaXN0ZXIobig2MzMpKSxyLnJlZ2lzdGVyKG4oNjM0KSksci5yZWdpc3RlcihuKDYzNSkpLHIucmVnaXN0ZXIobig2MzYpKSxyLnJlZ2lzdGVyKG4oNjM3KSksci5yZWdpc3RlcihuKDYzOCkpLHIucmVnaXN0ZXIobig2MzkpKSxyLnJlZ2lzdGVyKG4oNjQwKSksci5yZWdpc3RlcihuKDY0MSkpLHIucmVnaXN0ZXIobig2NDIpKSxyLnJlZ2lzdGVyKG4oNjQzKSksci5yZWdpc3RlcihuKDY0NCkpfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjY4KTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcbmltcG9ydCB7IEFMTF9GUlVJVFMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5cXHJcXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jKHNlYXJjaFN0cmluZykge1xcclxcbiAgICByZXR1cm4gQUxMX0ZSVUlUU1xcclxcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSk7XFxyXFxufVxcclxcblxcclxcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhc2ljRGVtbygpIHtcXHJcXG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZShbXSk7XFxyXFxuICAgIHJldHVybiAoXFxyXFxuICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9XFxyXFxuICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiXFxyXFxuICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG4nLG89XCJVc2VzIGEgc2ltcGxlIGluLW1lbW9yeSBhcnJheSBtYXRjaGVkIGFnYWluc3QgdGhlIGlucHV0IHN0cmluZyB3aXRoIGxvd2VyIGNhc2UgbWF0Y2hpbmcuXCI7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCk7dC5kZWZhdWx0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkodD4xP3QtMTowKSxsPTE7bDx0O2wrKyluW2wtMV09YXJndW1lbnRzW2xdO3JldHVybiBmdW5jdGlvbih0KXtmdW5jdGlvbiBvKCl7dmFyIGUsdCxyOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsbyk7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsbD1BcnJheShhKSx1PTA7dTxhO3UrKylsW3VdPWFyZ3VtZW50c1t1XTtyZXR1cm4gcj1zKHRoaXMsKGU9by5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihvKSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobCkpKSx0PXIsci51cGRhdGVEZWJvdW5jZWQ9aS5kZWZhdWx0LmFwcGx5KHZvaWQgMCxbci5mb3JjZVVwZGF0ZV0uY29uY2F0KG4pKSxzKHIsdCl9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KG8sdCkscihvLFt7a2V5Olwic2hvdWxkQ29tcG9uZW50VXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVEZWJvdW5jZWQoKSwhMX19LHtrZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy51cGRhdGVEZWJvdW5jZWQuY2FuY2VsKCl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZSx0aGlzLnByb3BzKX19XSksb30oby5Db21wb25lbnQpfTt2YXIgbz1uKDApLGE9bChvKSxpPWwobig2NjkpKTtmdW5jdGlvbiBsKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBzKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiF0fHxcIm9iamVjdFwiIT10eXBlb2YgdCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdD9lOnR9fSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjc4KTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcbmltcG9ydCB7IGdldFN1Z2dlc3RlZEZydWl0U3luYywgQUxMX0ZSVUlUUyB9IGZyb20gXCIuL2NvbW1vblwiO1xcclxcblxcclxcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENoaXBzV3JhcERlbW8oKSB7XFxyXFxuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGUoQUxMX0ZSVUlUUyk7XFxyXFxuICAgIHJldHVybiAoXFxyXFxuICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9XFxyXFxuICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiXFxyXFxuICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG4nLG89XCJJZiB0aGVyZSBhcmUgdG9vIG1hbnkgc2VsZWN0ZWQgaXRlbXMsIHRoZSBwaWNrZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGV4cGFuZCB2ZXJ0aWNhbGx5IHRvIG1ha2Ugcm9vbS5cIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjc5KTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcbmltcG9ydCB7IGdldFN1Z2dlc3RlZEZydWl0U3luYywgQUxMX0ZSVUlUUyB9IGZyb20gXCIuL2NvbW1vblwiO1xcclxcblxcclxcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERpc2FibGVkRGVtbygpIHtcXHJcXG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZShBTExfRlJVSVRTLnNsaWNlKDAsIDIpKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBmdWxsV2lkdGhcXHJcXG4gICAgICAgICAgICBkaXNhYmxlZFxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPVwiVGhlIGBkaXNhYmxlZGAgcHJvcCBjYW4gYmUgdXNlZCB0byBwdXQgdGhlIHBpY2tlciBpbnRvIGEgcmVhZC1vbmx5IHN0YXRlLiBJdCB3aWxsIG5vdCBiZSBwb3NzaWJsZSB0byB0eXBlIGludG8gdGhlIGlucHV0IGZpZWxkLCBvciB0byBkZWxldGUgY2hpcHMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuXCI7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDY4MCk7Y29uc3Qgcj0naW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XFxyXFxuaW1wb3J0IE11bHRpUGlja2VyIGZyb20gXCIuLi8uLi9zcmMvaW5kZXhcIjtcXHJcXG5pbXBvcnQgeyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMsIEFMTF9GUlVJVFMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5cXHJcXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBFcnJvckRlbW8oKSB7XFxyXFxuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGUoQUxMX0ZSVUlUUy5zbGljZSgwLCAyKSk7XFxyXFxuICAgIHJldHVybiAoXFxyXFxuICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9XFxyXFxuICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiXFxyXFxuICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAgICAgZXJyb3JcXHJcXG4gICAgICAgIC8+XFxyXFxuICAgICk7XFxyXFxufVxcclxcbicsbz1cIlRoZSBgZXJyb3JgIHByb3AgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcGlja2VyIGlzIGluIGFuIGVycm9yIHN0YXRlLlwiO2UuZXhwb3J0cy5kZWZhdWx0JiYoZS5leHBvcnRzLmRlZmF1bHQuX19zb3VyY2VfXz1yLGUuZXhwb3J0cy5kZWZhdWx0Ll9fbWFya2Rvd25fXz1vKSxlLmV4cG9ydHMuX19zb3VyY2U9cixlLmV4cG9ydHMuX19tYXJrZG93bl9fPW99LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big2ODEpO2NvbnN0IHI9J2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuaW1wb3J0IHsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH0gZnJvbSBcIi4vY29tbW9uXCI7XFxyXFxuaW1wb3J0IHsgTk9UX0VOT1VHSF9DSEFSQUNURVJTIH0gZnJvbSBcIi4uLy4uL3NyYy91dGlsc1wiO1xcclxcblxcclxcbmNvbnN0IE1JTklNVU1fQ0hBUkFDVEVSUyA9IDM7XFxyXFxuXFxyXFxuZnVuY3Rpb24gZ2V0U3VnZ2VzdGVkRnJ1aXRXaXRoTWluaW11bShpbnB1dFZhbHVlKSB7XFxyXFxuICAgIGlmICggaW5wdXRWYWx1ZS5sZW5ndGggPj0gTUlOSU1VTV9DSEFSQUNURVJTICkge1xcclxcbiAgICAgICAgcmV0dXJuIGdldFN1Z2dlc3RlZEZydWl0U3luYyhpbnB1dFZhbHVlKTtcXHJcXG4gICAgfVxcclxcbiAgICByZXR1cm4gTk9UX0VOT1VHSF9DSEFSQUNURVJTO1xcclxcbn1cXHJcXG5cXHJcXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNaW5pbXVtQ2hhcmFjdGVyc0RlbW8oKSB7XFxyXFxuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGUoW10pO1xcclxcbiAgICByZXR1cm4gKFxcclxcbiAgICAgICAgPE11bHRpUGlja2VyXFxyXFxuICAgICAgICAgICAgdmFsdWU9eyBpdGVtcyB9XFxyXFxuICAgICAgICAgICAgb25DaGFuZ2U9eyBzZXRJdGVtcyB9XFxyXFxuICAgICAgICAgICAgaXRlbVRvU3RyaW5nPXsgZnJ1aXQgPT4gZnJ1aXQubmFtZSB9XFxyXFxuICAgICAgICAgICAgZ2V0U3VnZ2VzdGVkSXRlbXM9eyBnZXRTdWdnZXN0ZWRGcnVpdFdpdGhNaW5pbXVtIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBmdWxsV2lkdGhcXHJcXG4gICAgICAgIC8+XFxyXFxuICAgICk7XFxyXFxufVxcclxcbicsbz1cIklmIHlvdSByZXR1cm4gdGhlIHNwZWNpYWwgYE5PVF9FTk9VR0hfQ0hBUkFDVEVSU2Agc3ltYm9sIGZyb20geW91ciBgZ2V0U3VnZ2VzdGVkSXRlbXMoKWAgZnVuY3Rpb24sIHRoZSBwaWNrZXIgd2lsbCBwcm92aWRlIGFuIGFwcHJvcHJpYXRlIHdhcm5pbmcgdG8gdGhlIHVzZXIuXCI7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDY4Mik7Y29uc3Qgcj0naW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XFxyXFxuaW1wb3J0IE11bHRpUGlja2VyIGZyb20gXCIuLi8uLi9zcmMvaW5kZXhcIjtcXHJcXG5pbXBvcnQgeyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5cXHJcXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JvbGxhYmxlU3VnZ2VzdGlvbnNEZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBmdWxsV2lkdGhcXHJcXG4gICAgICAgICAgICBtYXhEcm9wZG93bkhlaWdodD17IDI1MCB9XFxyXFxuICAgICAgICAvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG4nLG89XCJJZiB5b3VyIHN1Z2dlc3Rpb24gbGlzdCBpcyB0b28gbG9uZywgeW91IGNhbiB1c2UgdGhlIGBtYXhEcm9wZG93bkhlaWdodGAgcHJvcCB0byBtYWtlIGl0IHNjcm9sbGFibGUuXCI7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDY4Myk7Y29uc3Qgcj0naW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XFxyXFxuaW1wb3J0IE11bHRpUGlja2VyIGZyb20gXCIuLi8uLi9zcmMvaW5kZXhcIjtcXHJcXG5pbXBvcnQgeyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5cXHJcXG5jb25zdCBTRVJWRVJfUkVTUE9OU0VfVElNRV9JTl9NSUxMSVNFQ09ORFMgPSA4MDA7XFxyXFxuXFxyXFxuZnVuY3Rpb24gZ2V0U3VnZ2VzdGVkRnJ1aXRBc3luYyhpbnB1dFZhbHVlKSB7XFxyXFxuICAgIGlmICggIWlucHV0VmFsdWUubGVuZ3RoICkge1xcclxcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XFxyXFxuICAgIH1cXHJcXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xcclxcbiAgICAgICAgc2V0VGltZW91dChcXHJcXG4gICAgICAgICAgICAoKSA9PiByZXNvbHZlKGdldFN1Z2dlc3RlZEZydWl0U3luYyhpbnB1dFZhbHVlKSksXFxyXFxuICAgICAgICAgICAgU0VSVkVSX1JFU1BPTlNFX1RJTUVfSU5fTUlMTElTRUNPTkRTXFxyXFxuICAgICAgICApO1xcclxcbiAgICB9KTtcXHJcXG59XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXN5bmNocm9ub3VzRGVtbygpIHtcXHJcXG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZShbXSk7XFxyXFxuICAgIHJldHVybiAoXFxyXFxuICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0QXN5bmMgfVxcclxcbiAgICAgICAgICAgIGxhYmVsPVwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIlxcclxcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPVwiSWYgeW91ciBgZ2V0U3VnZ2VzdGVkSXRlbXMoKWAgZnVuY3Rpb24gcmV0dXJucyBhIGBQcm9taXNlYCBvciBbc3RhbmRhcmRzLWNvbXBsaWFudCBlcXVpdmFsZW50XShodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyksIHRoZSBwaWNrZXIgd2lsbCBzaG93IHN1Z2dlc3Rpb25zIG9ubHkgb25jZSB0aGUgcHJvbWlzZSBoYXMgcmVzb2x2ZWQuIFVudGlsIHRoZW4sIGl0IHdpbGwgc2hvdyBhIGxvYWRpbmcgbWVzc2FnZSB3aXRoIGEgcHJvZ3Jlc3MgYmFyLlwiO2UuZXhwb3J0cy5kZWZhdWx0JiYoZS5leHBvcnRzLmRlZmF1bHQuX19zb3VyY2VfXz1yLGUuZXhwb3J0cy5kZWZhdWx0Ll9fbWFya2Rvd25fXz1vKSxlLmV4cG9ydHMuX19zb3VyY2U9cixlLmV4cG9ydHMuX19tYXJrZG93bl9fPW99LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big2ODQpO2NvbnN0IHI9J2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuaW1wb3J0IHsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH0gZnJvbSBcIi4vY29tbW9uXCI7XFxyXFxuXFxyXFxuY29uc3QgU0VSVkVSX1JFU1BPTlNFX1RJTUVfSU5fTUlMTElTRUNPTkRTID0gODAwO1xcclxcbmNvbnN0IEZFVENIX0RFTEFZX0lOX01JTExJU0VDT05EUyA9IDUwMDtcXHJcXG5cXHJcXG5mdW5jdGlvbiBnZXRTdWdnZXN0ZWRGcnVpdEFzeW5jKGlucHV0VmFsdWUpIHtcXHJcXG4gICAgaWYgKCAhaW5wdXRWYWx1ZS5sZW5ndGggKSB7XFxyXFxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcXHJcXG4gICAgfVxcclxcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XFxyXFxuICAgICAgICBzZXRUaW1lb3V0KFxcclxcbiAgICAgICAgICAgICgpID0+IHJlc29sdmUoZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jKGlucHV0VmFsdWUpKSxcXHJcXG4gICAgICAgICAgICBTRVJWRVJfUkVTUE9OU0VfVElNRV9JTl9NSUxMSVNFQ09ORFNcXHJcXG4gICAgICAgICk7XFxyXFxuICAgIH0pO1xcclxcbn1cXHJcXG5cXHJcXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBc3luY2hyb25vdXNEZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRBc3luYyB9XFxyXFxuICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiXFxyXFxuICAgICAgICAgICAgZmV0Y2hEZWxheT17IEZFVENIX0RFTEFZX0lOX01JTExJU0VDT05EUyB9XFxyXFxuICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAvPlxcclxcbiAgICApO1xcclxcbn1cXHJcXG4nLG89XCJJZiB5b3Ugd2FudCB0byBhdm9pZCBoaXR0aW5nIGEgcmVtb3RlIHJlc291cmNlIHdpdGggdG9vIG1hbnkgc2VhcmNoIHJlcXVlc3RzLCBzZXR0aW5nIHRoZSBgZmV0Y2hEZWxheWAgcHJvcCB3aWxsIGNhdXNlIHRoZSBwaWNrZXIgdG8gb25seSByZXF1ZXN0IHN1Z2dlc3Rpb25zIGFmdGVyIHRoZSB1c2VyIGhhcyBzdG9wcGVkIHR5cGluZyBmb3IgdGhhdCBtYW55IG1pbGxpc2Vjb25kcy5cIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjg1KTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcblxcclxcbmNvbnN0IFNFUlZFUl9SRVNQT05TRV9USU1FX0lOX01JTExJU0VDT05EUyA9IDgwMDtcXHJcXG5cXHJcXG5mdW5jdGlvbiBnZXRTdWdnZXN0ZWRGcnVpdEFzeW5jRXJyb3IoaW5wdXRWYWx1ZSkge1xcclxcbiAgICBpZiAoICFpbnB1dFZhbHVlLmxlbmd0aCApIHtcXHJcXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xcclxcbiAgICB9XFxyXFxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XFxyXFxuICAgICAgICBzZXRUaW1lb3V0KFxcclxcbiAgICAgICAgICAgICgpID0+IHJlamVjdChuZXcgRXJyb3IoXCJTdWdnZXN0aW9uIGZldGNoIGZhaWxlZCFcIikpLFxcclxcbiAgICAgICAgICAgIFNFUlZFUl9SRVNQT05TRV9USU1FX0lOX01JTExJU0VDT05EU1xcclxcbiAgICAgICAgKTtcXHJcXG4gICAgfSk7XFxyXFxufVxcclxcblxcclxcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhhbmRsZUVycm9yc0RlbW8oKSB7XFxyXFxuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGUoW10pO1xcclxcbiAgICByZXR1cm4gKFxcclxcbiAgICAgICAgPE11bHRpUGlja2VyXFxyXFxuICAgICAgICAgICAgdmFsdWU9eyBpdGVtcyB9XFxyXFxuICAgICAgICAgICAgb25DaGFuZ2U9eyBzZXRJdGVtcyB9XFxyXFxuICAgICAgICAgICAgaXRlbVRvU3RyaW5nPXsgZnJ1aXQgPT4gZnJ1aXQubmFtZSB9XFxyXFxuICAgICAgICAgICAgZ2V0U3VnZ2VzdGVkSXRlbXM9eyBnZXRTdWdnZXN0ZWRGcnVpdEFzeW5jRXJyb3IgfVxcclxcbiAgICAgICAgICAgIGxhYmVsPVwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIlxcclxcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPVwiSWYgdGhlIGBnZXRTdWdnZXN0ZWRJdGVtcygpYCBmdW5jdGlvbiB0aHJvd3MgYW4gZXJyb3Igb3IgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZWplY3RzLCB0aGUgcGlja2VyIHdpbGwgbG9nIHRoZSBlcnJvciB0byB0aGUgY29uc29sZSBhbmQgcHJlc2VudCB1c2VycyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gdGhlIGRyb3Bkb3duLlwiO2UuZXhwb3J0cy5kZWZhdWx0JiYoZS5leHBvcnRzLmRlZmF1bHQuX19zb3VyY2VfXz1yLGUuZXhwb3J0cy5kZWZhdWx0Ll9fbWFya2Rvd25fXz1vKSxlLmV4cG9ydHMuX19zb3VyY2U9cixlLmV4cG9ydHMuX19tYXJrZG93bl9fPW99LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big2ODYpO2NvbnN0IHI9J2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuaW1wb3J0IHsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH0gZnJvbSBcIi4vY29tbW9uXCI7XFxyXFxuXFxyXFxuZnVuY3Rpb24gZ2V0RHluYW1pY1N1Z2dlc3Rpb25JdGVtcyhpbnB1dFZhbHVlKSB7XFxyXFxuICAgIGNvbnN0IGJhc2ljU3VnZ2VzdGlvbnMgPSBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMoaW5wdXRWYWx1ZSk7XFxyXFxuICAgIGlmIChiYXNpY1N1Z2dlc3Rpb25zLm1hcChpdGVtID0+IGl0ZW0ubmFtZSkuaW5jbHVkZXMoaW5wdXRWYWx1ZSkgfHwgaW5wdXRWYWx1ZS5sZW5ndGggPT09IDApIHtcXHJcXG4gICAgICAgIHJldHVybiBiYXNpY1N1Z2dlc3Rpb25zO1xcclxcbiAgICB9XFxyXFxuICAgIHJldHVybiBbIC4uLmJhc2ljU3VnZ2VzdGlvbnMsIHsgbmFtZTogaW5wdXRWYWx1ZSB9XTtcXHJcXG59XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRHluYW1pY1N1Z2dlc3Rpb25zRGVtbygpIHtcXHJcXG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZShbXSk7XFxyXFxuICAgIHJldHVybiAoXFxyXFxuICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldER5bmFtaWNTdWdnZXN0aW9uSXRlbXMgfVxcclxcbiAgICAgICAgICAgIGxhYmVsPVwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIlxcclxcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPVwiSWYgeW91IHdhbnQgdG8gZ2l2ZSB1c2VycyB0aGUgb3B0aW9uIHRvIHNwZWNpZnkgYW4gaXRlbSB0aGF0J3Mgbm90IHBhcnQgb2YgYSBwcmVkZWZpbmVkIGxpc3QsIHlvdXIgYGdldFN1Z2dlc3Rpb25JdGVtcygpYCBmdW5jdGlvbiBjYW4gcmV0dXJuIGR5bmFtaWNhbGx5IGNyZWF0ZWQgaXRlbXMgYmFzZWQgb24gdGhlIHVzZXIncyBpbnB1dCAoanVzdCBtYWtlIHN1cmUgaXQgaGFzIGEgdW5pcXVlIHN0cmluZyBJRCkuXCI7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDY4Nyk7Y29uc3Qgcj0naW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XFxyXFxuaW1wb3J0IE11bHRpUGlja2VyIGZyb20gXCIuLi8uLi9zcmMvaW5kZXhcIjtcXHJcXG5pbXBvcnQgeyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5cXHJcXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBIZWxwZXJUZXh0RGVtbygpIHtcXHJcXG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZShbXSk7XFxyXFxuICAgIHJldHVybiAoXFxyXFxuICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9XFxyXFxuICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiXFxyXFxuICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAgICAgaGVscGVyVGV4dD1cIlRlbGwgdXMgd2hhdCBmcnVpdHMgeW91IHJlYWxseSBsaWtlXCJcXHJcXG4gICAgICAgIC8+XFxyXFxuICAgICk7XFxyXFxufVxcclxcbicsbz1cIkFzIHdpdGggdGhlIFtNYXRlcmlhbCBUZXh0IEZpZWxkXShodHRwczovL21hdGVyaWFsLXVpLmNvbS9hcGkvdGV4dC1maWVsZC8pLCB5b3UgY2FuIHN1cHBseSB0aGUgYGhlbHBlclRleHRgIHByb3AgdG8gZ2l2ZSBleHRyYSB1c2VyIGd1aWRhbmNlIGlmIG5lZWRlZC5cIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjg4KTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcbmltcG9ydCB7IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9IGZyb20gXCIuL2NvbW1vblwiO1xcclxcblxcclxcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJlcXVpcmVkRmllbGREZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBmdWxsV2lkdGhcXHJcXG4gICAgICAgICAgICByZXF1aXJlZFxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPVwiWW91IGNhbiB1c2UgdGhlIGByZXF1aXJlZGAgcHJvcGVydHkgdG8gdmlzdWFsbHkgaW5kaWNhdGUgdGhhdCB0aGlzIGZpZWxkIGlzIHJlcXVpcmVkLlwiO2UuZXhwb3J0cy5kZWZhdWx0JiYoZS5leHBvcnRzLmRlZmF1bHQuX19zb3VyY2VfXz1yLGUuZXhwb3J0cy5kZWZhdWx0Ll9fbWFya2Rvd25fXz1vKSxlLmV4cG9ydHMuX19zb3VyY2U9cixlLmV4cG9ydHMuX19tYXJrZG93bl9fPW99LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big2ODkpO2NvbnN0IHI9J2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuaW1wb3J0IHsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH0gZnJvbSBcIi4vY29tbW9uXCI7XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ3VzdG9tVGV4dEZpZWxkRGVtbygpIHtcXHJcXG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZShbXSk7XFxyXFxuICAgIHJldHVybiAoXFxyXFxuICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9XFxyXFxuICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiXFxyXFxuICAgICAgICAgICAgZnVsbFdpZHRoXFxyXFxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcXHJcXG4gICAgICAgIC8+XFxyXFxuICAgICk7XFxyXFxufVxcclxcbicsbz0nVGhlIGB2YXJpYW50YCBwcm9wIGNhbiBiZSBzdXBwbGllZCBhcyBgXCJvdXRsaW5lZFwiYCBvciBgXCJmaWxsZWRcImAgdG8gbWF0Y2ggeW91ciBwcmVmZXJyZWQgdmlzdWFsIHN0eWxlLic7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDY5MCk7Y29uc3Qgcj0naW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XFxyXFxuaW1wb3J0IHsgVHlwb2dyYXBoeSB9IGZyb20gXCJAbWF0ZXJpYWwtdWkvY29yZVwiO1xcclxcbmltcG9ydCBNdWx0aVBpY2tlciBmcm9tIFwiLi4vLi4vc3JjL2luZGV4XCI7XFxyXFxuaW1wb3J0IHsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH0gZnJvbSBcIi4vY29tbW9uXCI7XFxyXFxuaW1wb3J0IEhpZ2hsaWdodGVyIGZyb20gXCJyZWFjdC1oaWdobGlnaHQtd29yZHNcIjtcXHJcXG5pbXBvcnQgeyBvYmplY3QsIGJvb2wsIHN0cmluZyB9IGZyb20gXCJwcm9wLXR5cGVzXCI7XFxyXFxuXFxyXFxuZnVuY3Rpb24gU3VnZ2VzdGlvbldpdGhTdG9ja051bWJlcnMoeyBpdGVtLCBpc0hpZ2hsaWdodGVkLCBpbnB1dFZhbHVlIH0pIHtcXHJcXG4gICAgY29uc3Qgc3R5bGUgPSB7XFxyXFxuICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcXHJcXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNIaWdobGlnaHRlZCA/IFwiI2FhYVwiIDogXCIjZmZmXCIsXFxyXFxuICAgICAgICB3aWR0aDogXCIxMDAlXCJcXHJcXG4gICAgfTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxkaXYgc3R5bGU9eyBzdHlsZSB9PlxcclxcbiAgICAgICAgICAgIDxpbWcgc3JjPXsgaXRlbS5pbWFnZSB9IHN0eWxlPXsgeyBoZWlnaHQ6IFwiNDJweFwiLCB3aWR0aDogXCI0MnB4XCIgfSB9IC8+XFxyXFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17IHsgZmxleDogXCIxIDEgMFwifSB9PlxcclxcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIj5cXHJcXG4gICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlclxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodFN0eWxlPXsgeyBiYWNrZ3JvdW5kQ29sb3I6IFwiI2ZmMlwiIH0gfVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFdvcmRzPXsgWyBpbnB1dFZhbHVlIF0gfVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRUb0hpZ2hsaWdodD17IGl0ZW0ubmFtZSB9XFxyXFxuICAgICAgICAgICAgICAgICAgICAvPlxcclxcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPiZuYnNwOyh7IGl0ZW0uc3RvY2sgfSBpbiBzdG9jayk8L3NtYWxsPlxcclxcbiAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XFxyXFxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PnsgaXRlbS5kZXRhaWwgfTwvVHlwb2dyYXBoeT5cXHJcXG4gICAgICAgICAgICA8L2Rpdj5cXHJcXG4gICAgICAgIDwvZGl2PlxcclxcbiAgICApO1xcclxcbn1cXHJcXG5cXHJcXG5TdWdnZXN0aW9uV2l0aFN0b2NrTnVtYmVycy5wcm9wVHlwZXMgPSB7XFxyXFxuICAgIGl0ZW06IG9iamVjdC5pc1JlcXVpcmVkLFxcclxcbiAgICBpc0hpZ2hsaWdodGVkOiBib29sLFxcclxcbiAgICBpbnB1dFZhbHVlOiBzdHJpbmcuaXNSZXF1aXJlZFxcclxcbn07XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzaWNEZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDxNdWx0aVBpY2tlclxcclxcbiAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMgfVxcclxcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZz17IGZydWl0ID0+IGZydWl0Lm5hbWUgfVxcclxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZEl0ZW1zPXsgZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jIH1cXHJcXG4gICAgICAgICAgICBTdWdnZXN0aW9uQ29tcG9uZW50PXsgU3VnZ2VzdGlvbldpdGhTdG9ja051bWJlcnMgfVxcclxcbiAgICAgICAgICAgIGxhYmVsPVwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIlxcclxcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuJyxvPVwiVGhlIGRlZmF1bHQgc3VnZ2VzdGlvbiBjb21wb25lbnQganVzdCBkaXNwbGF5cyB0aGUgaWQgb2YgdGhlIGl0ZW0gKGV4dHJhY3RlZCB3aXRoIGBpdGVtVG9TdHJpbmcoKWApIGluIGEgcGxhaW4gZm9ybWF0LiBZb3UgY2FuIHN1cHBseSBhIFJlYWN0IGNvbXBvbmVudCBhcyB0aGUgYFN1Z2dlc3Rpb25Db21wb25lbnRgIHByb3AsIHdoaWNoIHdpbGwgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZvbGxvd2luZyBwcm9wczpcXHJcXG5cXHJcXG58IFByb3AgbmFtZSB8IFR5cGUgfCBEZXNjcmlwdGlvbiB8XFxyXFxufCAtLS0tLS0tLS0gfCAtLS0tIHwgLS0tLS0tLS0tLS0gfFxcclxcbnwgYGl0ZW1JZGAgfCBzdHJpbmcgfCBUaGUgdW5pcXVlIElEIG9mIHRoZSBpdGVtIChmcm9tIGBpdGVtVG9TdHJpbmdgKSB8XFxyXFxufCBgaXRlbWAgfCBhbnkgfCBUaGUgc3VnZ2VzdGlvbiBnZW5lcmF0ZWQgYnkgeW91ciBgZ2V0U3VnZ2VzdGVkSXRlbXNgIGZ1bmN0aW9uIHxcXHJcXG58IGBpc0hpZ2hsaWdodGVkYCB8IGJvb2xlYW4gfCBgdHJ1ZWAgaWYgdGhlIHVzZXIgaXMgY3VycmVudGx5IGhpZ2hsaWdodGluZyB0aGlzIHN1Z2dlc3Rpb24gKGVpdGhlciB3aXRoIGtleWJvYXJkIG5hdmlnYXRpb24sIG9yIGJ5IGhvdmVyaW5nIG92ZXIgd2l0aCB0aGUgbW91c2UpIHxcXHJcXG58IGBpbnB1dFZhbHVlYCB8IHN0cmluZyB8IFRoZSBzdHJpbmcgY3VycmVudGx5IGVudGVyZWQgaW4gdGhlIHRleHQgaW5wdXQgZmllbGQuIHxcXHJcXG5cXHJcXG5UaGlzIGNhbiBiZSBnb29kIGZvciBlbXBoYXNpc2luZyBzZWFyY2ggdGV4dCBhbmQgcHJvdmlkaW5nIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN1Z2dlc3Rpb24uXFxyXFxuXCI7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgbz10W3JdPXtleHBvcnRzOnt9LGlkOnIsbG9hZGVkOiExfTtyZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxuKSxvLmxvYWRlZD0hMCxvLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4ucD1cIlwiLG4oMCl9KFtmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcixvPW4oMiksYT0ocj1vKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07dC5kZWZhdWx0PWEuZGVmYXVsdCxlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5kZWZhdWx0PXU7dmFyIGE9bigzKSxpPW8obig0KSksbD1uKDE0KSxzPW8obigxNSkpO2Z1bmN0aW9uIHUoZSl7dmFyIHQ9ZS5hY3RpdmVDbGFzc05hbWUsbj12b2lkIDA9PT10P1wiXCI6dCxvPWUuYWN0aXZlSW5kZXgsaT12b2lkIDA9PT1vPy0xOm8sdT1lLmFjdGl2ZVN0eWxlLGM9ZS5hdXRvRXNjYXBlLGQ9ZS5jYXNlU2Vuc2l0aXZlLHA9dm9pZCAwIT09ZCYmZCxmPWUuY2xhc3NOYW1lLG09ZS5maW5kQ2h1bmtzLGc9ZS5oaWdobGlnaHRDbGFzc05hbWUsaD12b2lkIDA9PT1nP1wiXCI6ZyxiPWUuaGlnaGxpZ2h0U3R5bGUseT12b2lkIDA9PT1iP3t9OmIsdj1lLmhpZ2hsaWdodFRhZyxTPXZvaWQgMD09PXY/XCJtYXJrXCI6dixFPWUuc2FuaXRpemUseD1lLnNlYXJjaFdvcmRzLHc9ZS50ZXh0VG9IaWdobGlnaHQsaz1lLnVuaGlnaGxpZ2h0Q2xhc3NOYW1lLF89dm9pZCAwPT09az9cIlwiOmssVD1lLnVuaGlnaGxpZ2h0U3R5bGUsQT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVybiBufShlLFtcImFjdGl2ZUNsYXNzTmFtZVwiLFwiYWN0aXZlSW5kZXhcIixcImFjdGl2ZVN0eWxlXCIsXCJhdXRvRXNjYXBlXCIsXCJjYXNlU2Vuc2l0aXZlXCIsXCJjbGFzc05hbWVcIixcImZpbmRDaHVua3NcIixcImhpZ2hsaWdodENsYXNzTmFtZVwiLFwiaGlnaGxpZ2h0U3R5bGVcIixcImhpZ2hsaWdodFRhZ1wiLFwic2FuaXRpemVcIixcInNlYXJjaFdvcmRzXCIsXCJ0ZXh0VG9IaWdobGlnaHRcIixcInVuaGlnaGxpZ2h0Q2xhc3NOYW1lXCIsXCJ1bmhpZ2hsaWdodFN0eWxlXCJdKSxDPSgwLGEuZmluZEFsbCkoe2F1dG9Fc2NhcGU6YyxjYXNlU2Vuc2l0aXZlOnAsZmluZENodW5rczptLHNhbml0aXplOkUsc2VhcmNoV29yZHM6eCx0ZXh0VG9IaWdobGlnaHQ6d30pLE89UyxJPS0xLE49XCJcIixSPXZvaWQgMCxQPSgwLHMuZGVmYXVsdCkoZnVuY3Rpb24oZSl7dmFyIHQ9e307Zm9yKHZhciBuIGluIGUpdFtuLnRvTG93ZXJDYXNlKCldPWVbbl07cmV0dXJuIHR9KTtyZXR1cm4oMCxsLmNyZWF0ZUVsZW1lbnQpKFwic3BhblwiLHIoe2NsYXNzTmFtZTpmfSxBLHtjaGlsZHJlbjpDLm1hcChmdW5jdGlvbihlLHQpe3ZhciByPXcuc3Vic3RyKGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7aWYoZS5oaWdobGlnaHQpe0krKzt2YXIgbz12b2lkIDA7bz1cIm9iamVjdFwiPT10eXBlb2YgaD9wP2hbcl06KGg9UChoKSlbci50b0xvd2VyQ2FzZSgpXTpoO3ZhciBhPUk9PT0raTtOPW8rXCIgXCIrKGE/bjpcIlwiKSxSPSEwPT09YSYmbnVsbCE9dT9PYmplY3QuYXNzaWduKHt9LHksdSk6eTt2YXIgcz17Y2hpbGRyZW46cixjbGFzc05hbWU6TixrZXk6dCxzdHlsZTpSfTtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgTyYmKHMuaGlnaGxpZ2h0SW5kZXg9SSksKDAsbC5jcmVhdGVFbGVtZW50KShPLHMpfXJldHVybigwLGwuY3JlYXRlRWxlbWVudCkoXCJzcGFuXCIse2NoaWxkcmVuOnIsY2xhc3NOYW1lOl8sa2V5OnQsc3R5bGU6VH0pfSl9KSl9dS5wcm9wVHlwZXM9e2FjdGl2ZUNsYXNzTmFtZTppLmRlZmF1bHQuc3RyaW5nLGFjdGl2ZUluZGV4OmkuZGVmYXVsdC5udW1iZXIsYWN0aXZlU3R5bGU6aS5kZWZhdWx0Lm9iamVjdCxhdXRvRXNjYXBlOmkuZGVmYXVsdC5ib29sLGNsYXNzTmFtZTppLmRlZmF1bHQuc3RyaW5nLGZpbmRDaHVua3M6aS5kZWZhdWx0LmZ1bmMsaGlnaGxpZ2h0Q2xhc3NOYW1lOmkuZGVmYXVsdC5vbmVPZlR5cGUoW2kuZGVmYXVsdC5vYmplY3QsaS5kZWZhdWx0LnN0cmluZ10pLGhpZ2hsaWdodFN0eWxlOmkuZGVmYXVsdC5vYmplY3QsaGlnaGxpZ2h0VGFnOmkuZGVmYXVsdC5vbmVPZlR5cGUoW2kuZGVmYXVsdC5ub2RlLGkuZGVmYXVsdC5mdW5jLGkuZGVmYXVsdC5zdHJpbmddKSxzYW5pdGl6ZTppLmRlZmF1bHQuZnVuYyxzZWFyY2hXb3JkczppLmRlZmF1bHQuYXJyYXlPZihpLmRlZmF1bHQub25lT2ZUeXBlKFtpLmRlZmF1bHQuc3RyaW5nLGkuZGVmYXVsdC5pbnN0YW5jZU9mKFJlZ0V4cCldKSkuaXNSZXF1aXJlZCx0ZXh0VG9IaWdobGlnaHQ6aS5kZWZhdWx0LnN0cmluZy5pc1JlcXVpcmVkLHVuaGlnaGxpZ2h0Q2xhc3NOYW1lOmkuZGVmYXVsdC5zdHJpbmcsdW5oaWdobGlnaHRTdHlsZTppLmRlZmF1bHQub2JqZWN0fSxlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgbz10W3JdPXtleHBvcnRzOnt9LGlkOnIsbG9hZGVkOiExfTtyZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxuKSxvLmxvYWRlZD0hMCxvLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4ucD1cIlwiLG4oMCl9KFtmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiY29tYmluZUNodW5rc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmNvbWJpbmVDaHVua3N9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJmaWxsSW5DaHVua3NcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5maWxsSW5DaHVua3N9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJmaW5kQWxsXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuZmluZEFsbH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImZpbmRDaHVua3NcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5maW5kQ2h1bmtzfX0pfSxmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZmluZEFsbD1mdW5jdGlvbihlKXt2YXIgdD1lLmF1dG9Fc2NhcGUsYT1lLmNhc2VTZW5zaXRpdmUsaT12b2lkIDAhPT1hJiZhLGw9ZS5maW5kQ2h1bmtzLHM9dm9pZCAwPT09bD9yOmwsdT1lLnNhbml0aXplLGM9ZS5zZWFyY2hXb3JkcyxkPWUudGV4dFRvSGlnaGxpZ2h0O3JldHVybiBvKHtjaHVua3NUb0hpZ2hsaWdodDpuKHtjaHVua3M6cyh7YXV0b0VzY2FwZTp0LGNhc2VTZW5zaXRpdmU6aSxzYW5pdGl6ZTp1LHNlYXJjaFdvcmRzOmMsdGV4dFRvSGlnaGxpZ2h0OmR9KX0pLHRvdGFsTGVuZ3RoOmQ/ZC5sZW5ndGg6MH0pfTt2YXIgbj10LmNvbWJpbmVDaHVua3M9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaHVua3M7cmV0dXJuIHQ9dC5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3RhcnQtdC5zdGFydH0pLnJlZHVjZShmdW5jdGlvbihlLHQpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm5bdF07dmFyIG49ZS5wb3AoKTtpZih0LnN0YXJ0PD1uLmVuZCl7dmFyIHI9TWF0aC5tYXgobi5lbmQsdC5lbmQpO2UucHVzaCh7c3RhcnQ6bi5zdGFydCxlbmQ6cn0pfWVsc2UgZS5wdXNoKG4sdCk7cmV0dXJuIGV9LFtdKX0scj1mdW5jdGlvbihlKXt2YXIgdD1lLmF1dG9Fc2NhcGUsbj1lLmNhc2VTZW5zaXRpdmUscj1lLnNhbml0aXplLG89dm9pZCAwPT09cj9hOnIsaT1lLnNlYXJjaFdvcmRzLGw9ZS50ZXh0VG9IaWdobGlnaHQ7cmV0dXJuIGw9byhsKSxpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pLnJlZHVjZShmdW5jdGlvbihlLHIpe3I9byhyKSx0JiYocj1yLnJlcGxhY2UoL1tcXC1cXFtcXF1cXC9cXHtcXH1cXChcXClcXCpcXCtcXD9cXC5cXFxcXFxeXFwkXFx8XS9nLFwiXFxcXCQmXCIpKTtmb3IodmFyIGE9bmV3IFJlZ0V4cChyLG4/XCJnXCI6XCJnaVwiKSxpPXZvaWQgMDtpPWEuZXhlYyhsKTspe3ZhciBzPWkuaW5kZXgsdT1hLmxhc3RJbmRleDt1PnMmJmUucHVzaCh7c3RhcnQ6cyxlbmQ6dX0pLGkuaW5kZXg9PWEubGFzdEluZGV4JiZhLmxhc3RJbmRleCsrfXJldHVybiBlfSxbXSl9O3QuZmluZENodW5rcz1yO3ZhciBvPXQuZmlsbEluQ2h1bmtzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2h1bmtzVG9IaWdobGlnaHQsbj1lLnRvdGFsTGVuZ3RoLHI9W10sbz1mdW5jdGlvbihlLHQsbil7dC1lPjAmJnIucHVzaCh7c3RhcnQ6ZSxlbmQ6dCxoaWdobGlnaHQ6bn0pfTtpZigwPT09dC5sZW5ndGgpbygwLG4sITEpO2Vsc2V7dmFyIGE9MDt0LmZvckVhY2goZnVuY3Rpb24oZSl7byhhLGUuc3RhcnQsITEpLG8oZS5zdGFydCxlLmVuZCwhMCksYT1lLmVuZH0pLG8oYSxuLCExKX1yZXR1cm4gcn07ZnVuY3Rpb24gYShlKXtyZXR1cm4gZX19XSl9LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7aWYoXCJwcm9kdWN0aW9uXCIhPT10LmVudi5OT0RFX0VOVil7dmFyIHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKXx8NjAxMDM7ZS5leHBvcnRzPW4oNikoZnVuY3Rpb24oZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09cn0sITApfWVsc2UgZS5leHBvcnRzPW4oMTMpKCl9KS5jYWxsKHQsbig1KSl9LGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPWUuZXhwb3J0cz17fTtmdW5jdGlvbiBhKCl7dGhyb3cgbmV3IEVycm9yKFwic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBpKCl7dGhyb3cgbmV3IEVycm9yKFwiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIGwoZSl7aWYobj09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigobj09PWF8fCFuKSYmc2V0VGltZW91dClyZXR1cm4gbj1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIG4oZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIG4uY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuIG4uY2FsbCh0aGlzLGUsMCl9fX0hZnVuY3Rpb24oKXt0cnl7bj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6YX1jYXRjaChlKXtuPWF9dHJ5e3I9XCJmdW5jdGlvblwiPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDppfWNhdGNoKGUpe3I9aX19KCk7dmFyIHMsdT1bXSxjPSExLGQ9LTE7ZnVuY3Rpb24gcCgpe2MmJnMmJihjPSExLHMubGVuZ3RoP3U9cy5jb25jYXQodSk6ZD0tMSx1Lmxlbmd0aCYmZigpKX1mdW5jdGlvbiBmKCl7aWYoIWMpe3ZhciBlPWwocCk7Yz0hMDtmb3IodmFyIHQ9dS5sZW5ndGg7dDspe2ZvcihzPXUsdT1bXTsrK2Q8dDspcyYmc1tkXS5ydW4oKTtkPS0xLHQ9dS5sZW5ndGh9cz1udWxsLGM9ITEsZnVuY3Rpb24oZSl7aWYocj09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChyPT09aXx8IXIpJiZjbGVhclRpbWVvdXQpcmV0dXJuIHI9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7cihlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHIuY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiByLmNhbGwodGhpcyxlKX19fShlKX19ZnVuY3Rpb24gbShlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fWZ1bmN0aW9uIGcoKXt9by5uZXh0VGljaz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3UucHVzaChuZXcgbShlLHQpKSwxIT09dS5sZW5ndGh8fGN8fGwoZil9LG0ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LG8udGl0bGU9XCJicm93c2VyXCIsby5icm93c2VyPSEwLG8uZW52PXt9LG8uYXJndj1bXSxvLnZlcnNpb249XCJcIixvLnZlcnNpb25zPXt9LG8ub249ZyxvLmFkZExpc3RlbmVyPWcsby5vbmNlPWcsby5vZmY9ZyxvLnJlbW92ZUxpc3RlbmVyPWcsby5yZW1vdmVBbGxMaXN0ZW5lcnM9ZyxvLmVtaXQ9ZyxvLnByZXBlbmRMaXN0ZW5lcj1nLG8ucHJlcGVuZE9uY2VMaXN0ZW5lcj1nLG8ubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybltdfSxvLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWRcIil9LG8uY3dkPWZ1bmN0aW9uKCl7cmV0dXJuXCIvXCJ9LG8uY2hkaXI9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkXCIpfSxvLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQpe1widXNlIHN0cmljdFwiO3ZhciByPW4oNyksbz1uKDgpLGE9big5KSxpPW4oMTApLGw9bigxMSkscz1uKDEyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSxuKXt2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixjPVwiQEBpdGVyYXRvclwiO3ZhciBkPVwiPDxhbm9ueW1vdXM+PlwiLHA9e2FycmF5OmgoXCJhcnJheVwiKSxib29sOmgoXCJib29sZWFuXCIpLGZ1bmM6aChcImZ1bmN0aW9uXCIpLG51bWJlcjpoKFwibnVtYmVyXCIpLG9iamVjdDpoKFwib2JqZWN0XCIpLHN0cmluZzpoKFwic3RyaW5nXCIpLHN5bWJvbDpoKFwic3ltYm9sXCIpLGFueTpnKHIudGhhdFJldHVybnNOdWxsKSxhcnJheU9mOmZ1bmN0aW9uKGUpe3JldHVybiBnKGZ1bmN0aW9uKHQsbixyLG8sYSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSlyZXR1cm4gbmV3IG0oXCJQcm9wZXJ0eSBgXCIrYStcImAgb2YgY29tcG9uZW50IGBcIityK1wiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi5cIik7dmFyIGk9dFtuXTtpZighQXJyYXkuaXNBcnJheShpKSl7dmFyIHM9eShpKTtyZXR1cm4gbmV3IG0oXCJJbnZhbGlkIFwiK28rXCIgYFwiK2ErXCJgIG9mIHR5cGUgYFwiK3MrXCJgIHN1cHBsaWVkIHRvIGBcIityK1wiYCwgZXhwZWN0ZWQgYW4gYXJyYXkuXCIpfWZvcih2YXIgdT0wO3U8aS5sZW5ndGg7dSsrKXt2YXIgYz1lKGksdSxyLG8sYStcIltcIit1K1wiXVwiLGwpO2lmKGMgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gY31yZXR1cm4gbnVsbH0pfSxlbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIGcoZnVuY3Rpb24odCxuLHIsbyxhKXt2YXIgaT10W25dO2lmKCFlKGkpKXt2YXIgbD15KGkpO3JldHVybiBuZXcgbShcIkludmFsaWQgXCIrbytcIiBgXCIrYStcImAgb2YgdHlwZSBgXCIrbCtcImAgc3VwcGxpZWQgdG8gYFwiK3IrXCJgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuXCIpfXJldHVybiBudWxsfSl9KCksaW5zdGFuY2VPZjpmdW5jdGlvbihlKXtyZXR1cm4gZyhmdW5jdGlvbih0LG4scixvLGEpe2lmKCEodFtuXWluc3RhbmNlb2YgZSkpe3ZhciBpPWUubmFtZXx8ZCxsPWZ1bmN0aW9uKGUpe2lmKCFlLmNvbnN0cnVjdG9yfHwhZS5jb25zdHJ1Y3Rvci5uYW1lKXJldHVybiBkO3JldHVybiBlLmNvbnN0cnVjdG9yLm5hbWV9KHRbbl0pO3JldHVybiBuZXcgbShcIkludmFsaWQgXCIrbytcIiBgXCIrYStcImAgb2YgdHlwZSBgXCIrbCtcImAgc3VwcGxpZWQgdG8gYFwiK3IrXCJgLCBleHBlY3RlZCBpbnN0YW5jZSBvZiBgXCIraStcImAuXCIpfXJldHVybiBudWxsfSl9LG5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gZyhmdW5jdGlvbihlLHQsbixyLG8pe2lmKCFiKGVbdF0pKXJldHVybiBuZXcgbShcIkludmFsaWQgXCIrcitcIiBgXCIrbytcImAgc3VwcGxpZWQgdG8gYFwiK24rXCJgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS5cIik7cmV0dXJuIG51bGx9KX0oKSxvYmplY3RPZjpmdW5jdGlvbihlKXtyZXR1cm4gZyhmdW5jdGlvbih0LG4scixvLGEpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyBtKFwiUHJvcGVydHkgYFwiK2ErXCJgIG9mIGNvbXBvbmVudCBgXCIrcitcImAgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9mLlwiKTt2YXIgaT10W25dLHM9eShpKTtpZihcIm9iamVjdFwiIT09cylyZXR1cm4gbmV3IG0oXCJJbnZhbGlkIFwiK28rXCIgYFwiK2ErXCJgIG9mIHR5cGUgYFwiK3MrXCJgIHN1cHBsaWVkIHRvIGBcIityK1wiYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LlwiKTtmb3IodmFyIHUgaW4gaSlpZihpLmhhc093blByb3BlcnR5KHUpKXt2YXIgYz1lKGksdSxyLG8sYStcIi5cIit1LGwpO2lmKGMgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gY31yZXR1cm4gbnVsbH0pfSxvbmVPZjpmdW5jdGlvbihlKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm5cInByb2R1Y3Rpb25cIiE9PXQuZW52Lk5PREVfRU5WJiZhKCExLFwiSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2YgYXJyYXkuXCIpLHIudGhhdFJldHVybnNOdWxsO3JldHVybiBnKGZ1bmN0aW9uKHQsbixyLG8sYSl7Zm9yKHZhciBpPXRbbl0sbD0wO2w8ZS5sZW5ndGg7bCsrKWlmKGYoaSxlW2xdKSlyZXR1cm4gbnVsbDt2YXIgcz1KU09OLnN0cmluZ2lmeShlKTtyZXR1cm4gbmV3IG0oXCJJbnZhbGlkIFwiK28rXCIgYFwiK2ErXCJgIG9mIHZhbHVlIGBcIitpK1wiYCBzdXBwbGllZCB0byBgXCIrcitcImAsIGV4cGVjdGVkIG9uZSBvZiBcIitzK1wiLlwiKX0pfSxvbmVPZlR5cGU6ZnVuY3Rpb24oZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuXCJwcm9kdWN0aW9uXCIhPT10LmVudi5OT0RFX0VOViYmYSghMSxcIkludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2ZUeXBlLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS5cIiksci50aGF0UmV0dXJuc051bGw7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBvPWVbbl07aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgbylyZXR1cm4gYSghMSxcIkludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2ZUeXBlLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBjaGVjayBmdW5jdGlvbnMsIGJ1dCByZWNlaXZlZCAlcyBhdCBpbmRleCAlcy5cIixTKG8pLG4pLHIudGhhdFJldHVybnNOdWxsfXJldHVybiBnKGZ1bmN0aW9uKHQsbixyLG8sYSl7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBzPWVbaV07aWYobnVsbD09cyh0LG4scixvLGEsbCkpcmV0dXJuIG51bGx9cmV0dXJuIG5ldyBtKFwiSW52YWxpZCBcIitvK1wiIGBcIithK1wiYCBzdXBwbGllZCB0byBgXCIrcitcImAuXCIpfSl9LHNoYXBlOmZ1bmN0aW9uKGUpe3JldHVybiBnKGZ1bmN0aW9uKHQsbixyLG8sYSl7dmFyIGk9dFtuXSxzPXkoaSk7aWYoXCJvYmplY3RcIiE9PXMpcmV0dXJuIG5ldyBtKFwiSW52YWxpZCBcIitvK1wiIGBcIithK1wiYCBvZiB0eXBlIGBcIitzK1wiYCBzdXBwbGllZCB0byBgXCIrcitcImAsIGV4cGVjdGVkIGBvYmplY3RgLlwiKTtmb3IodmFyIHUgaW4gZSl7dmFyIGM9ZVt1XTtpZihjKXt2YXIgZD1jKGksdSxyLG8sYStcIi5cIit1LGwpO2lmKGQpcmV0dXJuIGR9fXJldHVybiBudWxsfSl9LGV4YWN0OmZ1bmN0aW9uKGUpe3JldHVybiBnKGZ1bmN0aW9uKHQsbixyLG8sYSl7dmFyIHM9dFtuXSx1PXkocyk7aWYoXCJvYmplY3RcIiE9PXUpcmV0dXJuIG5ldyBtKFwiSW52YWxpZCBcIitvK1wiIGBcIithK1wiYCBvZiB0eXBlIGBcIit1K1wiYCBzdXBwbGllZCB0byBgXCIrcitcImAsIGV4cGVjdGVkIGBvYmplY3RgLlwiKTt2YXIgYz1pKHt9LHRbbl0sZSk7Zm9yKHZhciBkIGluIGMpe3ZhciBwPWVbZF07aWYoIXApcmV0dXJuIG5ldyBtKFwiSW52YWxpZCBcIitvK1wiIGBcIithK1wiYCBrZXkgYFwiK2QrXCJgIHN1cHBsaWVkIHRvIGBcIityK1wiYC5cXG5CYWQgb2JqZWN0OiBcIitKU09OLnN0cmluZ2lmeSh0W25dLG51bGwsXCIgIFwiKStcIlxcblZhbGlkIGtleXM6IFwiK0pTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKGUpLG51bGwsXCIgIFwiKSk7dmFyIGY9cChzLGQscixvLGErXCIuXCIrZCxsKTtpZihmKXJldHVybiBmfXJldHVybiBudWxsfSl9fTtmdW5jdGlvbiBmKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PTEvdDplIT1lJiZ0IT10fWZ1bmN0aW9uIG0oZSl7dGhpcy5tZXNzYWdlPWUsdGhpcy5zdGFjaz1cIlwifWZ1bmN0aW9uIGcoZSl7aWYoXCJwcm9kdWN0aW9uXCIhPT10LmVudi5OT0RFX0VOVil2YXIgcj17fSxpPTA7ZnVuY3Rpb24gcyhzLHUsYyxwLGYsZyxoKXtpZihwPXB8fGQsZz1nfHxjLGghPT1sKWlmKG4pbyghMSxcIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKClgIHRvIGNhbGwgdGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlc1wiKTtlbHNlIGlmKFwicHJvZHVjdGlvblwiIT09dC5lbnYuTk9ERV9FTlYmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBjb25zb2xlKXt2YXIgYj1wK1wiOlwiK2M7IXJbYl0mJmk8MyYmKGEoITEsXCJZb3UgYXJlIG1hbnVhbGx5IGNhbGxpbmcgYSBSZWFjdC5Qcm9wVHlwZXMgdmFsaWRhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGAlc2AgcHJvcCBvbiBgJXNgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgdGhyb3cgaW4gdGhlIHN0YW5kYWxvbmUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFlvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2FybmluZyBkdWUgdG8gYSB0aGlyZC1wYXJ0eSBQcm9wVHlwZXMgbGlicmFyeS4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVzIGZvciBkZXRhaWxzLlwiLGcscCkscltiXT0hMCxpKyspfXJldHVybiBudWxsPT11W2NdP3M/bnVsbD09PXVbY10/bmV3IG0oXCJUaGUgXCIrZitcIiBgXCIrZytcImAgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluIGBcIitwK1wiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuXCIpOm5ldyBtKFwiVGhlIFwiK2YrXCIgYFwiK2crXCJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiBgXCIrcCtcImAsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuXCIpOm51bGw6ZSh1LGMscCxmLGcpfXZhciB1PXMuYmluZChudWxsLCExKTtyZXR1cm4gdS5pc1JlcXVpcmVkPXMuYmluZChudWxsLCEwKSx1fWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGcoZnVuY3Rpb24odCxuLHIsbyxhLGkpe3ZhciBsPXRbbl07cmV0dXJuIHkobCkhPT1lP25ldyBtKFwiSW52YWxpZCBcIitvK1wiIGBcIithK1wiYCBvZiB0eXBlIGBcIit2KGwpK1wiYCBzdXBwbGllZCB0byBgXCIrcitcImAsIGV4cGVjdGVkIGBcIitlK1wiYC5cIik6bnVsbH0pfWZ1bmN0aW9uIGIodCl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlXCJudW1iZXJcIjpjYXNlXCJzdHJpbmdcIjpjYXNlXCJ1bmRlZmluZWRcIjpyZXR1cm4hMDtjYXNlXCJib29sZWFuXCI6cmV0dXJuIXQ7Y2FzZVwib2JqZWN0XCI6aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5ldmVyeShiKTtpZihudWxsPT09dHx8ZSh0KSlyZXR1cm4hMDt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdD1lJiYodSYmZVt1XXx8ZVtjXSk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdClyZXR1cm4gdH0odCk7aWYoIW4pcmV0dXJuITE7dmFyIHIsbz1uLmNhbGwodCk7aWYobiE9PXQuZW50cmllcyl7Zm9yKDshKHI9by5uZXh0KCkpLmRvbmU7KWlmKCFiKHIudmFsdWUpKXJldHVybiExfWVsc2UgZm9yKDshKHI9by5uZXh0KCkpLmRvbmU7KXt2YXIgYT1yLnZhbHVlO2lmKGEmJiFiKGFbMV0pKXJldHVybiExfXJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHkoZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/XCJhcnJheVwiOmUgaW5zdGFuY2VvZiBSZWdFeHA/XCJvYmplY3RcIjpmdW5jdGlvbihlLHQpe3JldHVyblwic3ltYm9sXCI9PT1lfHxcIlN5bWJvbFwiPT09dFtcIkBAdG9TdHJpbmdUYWdcIl18fFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmdCBpbnN0YW5jZW9mIFN5bWJvbH0odCxlKT9cInN5bWJvbFwiOnR9ZnVuY3Rpb24gdihlKXtpZihudWxsPT1lKXJldHVyblwiXCIrZTt2YXIgdD15KGUpO2lmKFwib2JqZWN0XCI9PT10KXtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm5cImRhdGVcIjtpZihlIGluc3RhbmNlb2YgUmVnRXhwKXJldHVyblwicmVnZXhwXCJ9cmV0dXJuIHR9ZnVuY3Rpb24gUyhlKXt2YXIgdD12KGUpO3N3aXRjaCh0KXtjYXNlXCJhcnJheVwiOmNhc2VcIm9iamVjdFwiOnJldHVyblwiYW4gXCIrdDtjYXNlXCJib29sZWFuXCI6Y2FzZVwiZGF0ZVwiOmNhc2VcInJlZ2V4cFwiOnJldHVyblwiYSBcIit0O2RlZmF1bHQ6cmV0dXJuIHR9fXJldHVybiBtLnByb3RvdHlwZT1FcnJvci5wcm90b3R5cGUscC5jaGVja1Byb3BUeXBlcz1zLHAuUHJvcFR5cGVzPXAscH19KS5jYWxsKHQsbig1KSl9LGZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIHI9ZnVuY3Rpb24oKXt9O3IudGhhdFJldHVybnM9bixyLnRoYXRSZXR1cm5zRmFsc2U9bighMSksci50aGF0UmV0dXJuc1RydWU9bighMCksci50aGF0UmV0dXJuc051bGw9bihudWxsKSxyLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyLnRoYXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQpe1widXNlIHN0cmljdFwiO3ZhciBuPWZ1bmN0aW9uKGUpe307XCJwcm9kdWN0aW9uXCIhPT10LmVudi5OT0RFX0VOViYmKG49ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudFwiKX0pLGUuZXhwb3J0cz1mdW5jdGlvbihlLHQscixvLGEsaSxsLHMpe2lmKG4odCksIWUpe3ZhciB1O2lmKHZvaWQgMD09PXQpdT1uZXcgRXJyb3IoXCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwiKTtlbHNle3ZhciBjPVtyLG8sYSxpLGwsc10sZD0wOyh1PW5ldyBFcnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gY1tkKytdfSkpKS5uYW1lPVwiSW52YXJpYW50IFZpb2xhdGlvblwifXRocm93IHUuZnJhbWVzVG9Qb3A9MSx1fX19KS5jYWxsKHQsbig1KSl9LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big3KTtpZihcInByb2R1Y3Rpb25cIiE9PXQuZW52Lk5PREVfRU5WKXtyPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoXCJgd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyBtZXNzYWdlIGFyZ3VtZW50XCIpO2lmKDAhPT10LmluZGV4T2YoXCJGYWlsZWQgQ29tcG9zaXRlIHByb3BUeXBlOiBcIikmJiFlKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPUFycmF5KG4+Mj9uLTI6MCksbz0yO288bjtvKyspcltvLTJdPWFyZ3VtZW50c1tvXTsoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07dmFyIG89MCxhPVwiV2FybmluZzogXCIrZS5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIG5bbysrXX0pO1widW5kZWZpbmVkXCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlLmVycm9yKGEpO3RyeXt0aHJvdyBuZXcgRXJyb3IoYSl9Y2F0Y2goZSl7fX0pLmFwcGx5KHZvaWQgMCxbdF0uY29uY2F0KHIpKX19fWUuZXhwb3J0cz1yfSkuY2FsbCh0LG4oNSkpfSxmdW5jdGlvbihlLHQpe1xuLypcblx0b2JqZWN0LWFzc2lnblxuXHQoYykgU2luZHJlIFNvcmh1c1xuXHRAbGljZW5zZSBNSVRcblx0Ki9cblwidXNlIHN0cmljdFwiO3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMscj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG89T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZyhcImFiY1wiKTtpZihlWzVdPVwiZGVcIixcIjVcIj09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFtcIl9cIitTdHJpbmcuZnJvbUNoYXJDb2RlKG4pXT1uO2lmKFwiMDEyMzQ1Njc4OVwiIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkuam9pbihcIlwiKSlyZXR1cm4hMTt2YXIgcj17fTtyZXR1cm5cImFiY2RlZmdoaWprbG1ub3BxcnN0XCIuc3BsaXQoXCJcIikuZm9yRWFjaChmdW5jdGlvbihlKXtyW2VdPWV9KSxcImFiY2RlZmdoaWprbG1ub3BxcnN0XCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LHIpKS5qb2luKFwiXCIpfWNhdGNoKGUpe3JldHVybiExfX0oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBhLGksbD1mdW5jdGlvbihlKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gT2JqZWN0KGUpfShlKSxzPTE7czxhcmd1bWVudHMubGVuZ3RoO3MrKyl7Zm9yKHZhciB1IGluIGE9T2JqZWN0KGFyZ3VtZW50c1tzXSkpci5jYWxsKGEsdSkmJihsW3VdPWFbdV0pO2lmKG4pe2k9bihhKTtmb3IodmFyIGM9MDtjPGkubGVuZ3RoO2MrKylvLmNhbGwoYSxpW2NdKSYmKGxbaVtjXV09YVtpW2NdXSl9fXJldHVybiBsfX0sZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9XCJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRFwifSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQpe1widXNlIHN0cmljdFwiO2lmKFwicHJvZHVjdGlvblwiIT09dC5lbnYuTk9ERV9FTlYpdmFyIHI9big4KSxvPW4oOSksYT1uKDExKSxpPXt9O2UuZXhwb3J0cz1mdW5jdGlvbihlLG4sbCxzLHUpe2lmKFwicHJvZHVjdGlvblwiIT09dC5lbnYuTk9ERV9FTlYpZm9yKHZhciBjIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIGQ7dHJ5e3IoXCJmdW5jdGlvblwiPT10eXBlb2YgZVtjXSxcIiVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLCBidXQgcmVjZWl2ZWQgYCVzYC5cIixzfHxcIlJlYWN0IGNsYXNzXCIsbCxjLHR5cGVvZiBlW2NdKSxkPWVbY10obixjLHMsbCxudWxsLGEpfWNhdGNoKGUpe2Q9ZX1pZihvKCFkfHxkIGluc3RhbmNlb2YgRXJyb3IsXCIlczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciBmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCBzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuXCIsc3x8XCJSZWFjdCBjbGFzc1wiLGwsYyx0eXBlb2YgZCksZCBpbnN0YW5jZW9mIEVycm9yJiYhKGQubWVzc2FnZSBpbiBpKSl7aVtkLm1lc3NhZ2VdPSEwO3ZhciBwPXU/dSgpOlwiXCI7byghMSxcIkZhaWxlZCAlcyB0eXBlOiAlcyVzXCIsbCxkLm1lc3NhZ2UsbnVsbCE9cD9wOlwiXCIpfX19fSkuY2FsbCh0LG4oNSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big3KSxvPW4oOCksYT1uKDExKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIsaSxsKXtsIT09YSYmbyghMSxcIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXNcIil9ZnVuY3Rpb24gdCgpe3JldHVybiBlfWUuaXNSZXF1aXJlZD1lO3ZhciBuPXthcnJheTplLGJvb2w6ZSxmdW5jOmUsbnVtYmVyOmUsb2JqZWN0OmUsc3RyaW5nOmUsc3ltYm9sOmUsYW55OmUsYXJyYXlPZjp0LGVsZW1lbnQ6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnR9O3JldHVybiBuLmNoZWNrUHJvcFR5cGVzPXIsbi5Qcm9wVHlwZXM9bixufX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigwKX0sZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbj1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dH07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpuLHI9dm9pZCAwLG89W10sYT12b2lkIDAsaT0hMSxsPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZSxvW25dKX07cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0KSxzPTA7czx0O3MrKyluW3NdPWFyZ3VtZW50c1tzXTtyZXR1cm4gaSYmcj09PXRoaXMmJm4ubGVuZ3RoPT09by5sZW5ndGgmJm4uZXZlcnkobCk/YTooaT0hMCxyPXRoaXMsbz1uLGE9ZS5hcHBseSh0aGlzLG4pKX19fV0pfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjkxKTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgeyBBdmF0YXIsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG1hdGVyaWFsLXVpL2NvcmVcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcbmltcG9ydCB7IGdldFN1Z2dlc3RlZEZydWl0U3luYywgQUxMX0ZSVUlUUyB9IGZyb20gXCIuL2NvbW1vblwiO1xcclxcblxcclxcbmNvbnN0IE5VTUJFUl9PRl9GUlVJVFNfVE9fU0hPVyA9IDM7XFxyXFxuXFxyXFxuY29uc3QgZnJ1aXRBdmF0YXJzID0gaXRlbSA9PiA8QXZhdGFyIGFsdD17IGl0ZW0ubmFtZSB9IHNyYz17IGl0ZW0uaW1hZ2UgfSAvPjtcXHJcXG5cXHJcXG5jb25zdCBmcnVpdFBvcG92ZXIgPSBpdGVtID0+IChcXHJcXG4gICAgPGRpdiBzdHlsZT17IHsgZGlzcGxheTogXCJmbGV4XCIsIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsIHBhZGRpbmc6IFwiNHB4IDhweFwiIH0gfT5cXHJcXG4gICAgICAgIDxpbWcgc3JjPXsgaXRlbS5pbWFnZSB9IHN0eWxlPXsgeyBoZWlnaHQ6IFwiMjBweFwiLCB3aWR0aDogXCIyMHB4XCIgfSB9IC8+XFxyXFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVxcJ3N1YnRpdGxlMVxcJz57IGl0ZW0uZGV0YWlsIH08L1R5cG9ncmFwaHk+XFxyXFxuICAgIDwvZGl2Plxcclxcbik7XFxyXFxuXFxyXFxuY29uc3QgZnJ1aXROYW1lV2l0aFN0b2NrID0gZnJ1aXQgPT4gYCR7ZnJ1aXQubmFtZX0gKCR7ZnJ1aXQuc3RvY2t9KWA7XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzaWNEZW1vKCkge1xcclxcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKEFMTF9GUlVJVFMuc2xpY2UoMCwgTlVNQkVSX09GX0ZSVUlUU19UT19TSE9XKSk7XFxyXFxuICAgIHJldHVybiAoXFxyXFxuICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9XFxyXFxuICAgICAgICAgICAgY2hpcENvbG9yPVxcJ3ByaW1hcnlcXCdcXHJcXG4gICAgICAgICAgICBpdGVtVG9BdmF0YXI9eyBmcnVpdEF2YXRhcnMgfVxcclxcbiAgICAgICAgICAgIGl0ZW1Ub0xhYmVsPXsgZnJ1aXROYW1lV2l0aFN0b2NrIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9Qb3BvdmVyPXsgZnJ1aXRQb3BvdmVyIH1cXHJcXG4gICAgICAgICAgICBsYWJlbD1cIllvdXIgZmF2b3VyaXRlIGZydWl0XCJcXHJcXG4gICAgICAgICAgICBmdWxsV2lkdGhcXHJcXG4gICAgICAgIC8+XFxyXFxuICAgICk7XFxyXFxufVxcclxcbicsbz1cIlRoZSBjaGlwIGVsZW1lbnRzIHRoYXQgcmVwcmVzZW50IHNlbGVjdGVkIGl0ZW1zIGFsbG93IHRoZSBmb2xsb3dpbmcgY3VzdG9taXNhdGlvbnM6XFxyXFxuICogd2l0aCB0aGUgYGl0ZW1Ub0xhYmVsYCBwcm9wLCB5b3UgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNoaXAgbGFiZWxzICh3aGljaCBhcmUgb2J0YWluZWQgdXNpbmcgYGl0ZW1Ub1N0cmluZ2ApXFxyXFxuICogd2l0aCB0aGUgYGNoaXBDb2xvcmAgcHJvcCwgeW91IGNhbiBzcGVjaWZ5IGEgdGhlbWUgY29sb3IgdG8gdXNlXFxyXFxuICogd2l0aCB0aGUgYGl0ZW1Ub0F2YXRhcmAgcHJvcCwgeW91IGNhbiB1c2UgW01hdGVyaWFsIEF2YXRhcnNdKGh0dHBzOi8vbWF0ZXJpYWwtdWkuY29tL2RlbW9zL2F2YXRhcnMvKSB0byBkaXNwbGF5IHBlci1pdGVtIGljb25zXFxyXFxuICogd2l0aCB0aGUgYGl0ZW1Ub1BvcG92ZXJgIHByb3AsIHlvdSBjYW4gcHJvdmlkZSBwZXItaXRlbSBwb3BvdmVyIGhlbHBlcnMgdGhhdCBhY3RpdmF0ZSB3aGVuIHRoZSB1c2VyIGhvdmVycyBvdmVyIHRoZSBjaGlwXCI7ZS5leHBvcnRzLmRlZmF1bHQmJihlLmV4cG9ydHMuZGVmYXVsdC5fX3NvdXJjZV9fPXIsZS5leHBvcnRzLmRlZmF1bHQuX19tYXJrZG93bl9fPW8pLGUuZXhwb3J0cy5fX3NvdXJjZT1yLGUuZXhwb3J0cy5fX21hcmtkb3duX189b30sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDY5Mik7Y29uc3Qgcj0naW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XFxyXFxuaW1wb3J0IE11bHRpUGlja2VyIGZyb20gXCIuLi8uLi9zcmMvaW5kZXhcIjtcXHJcXG5pbXBvcnQgeyBnZXRTdWdnZXN0ZWRGcnVpdFN5bmMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5cXHJcXG5jb25zdCBTRVJWRVJfUkVTUE9OU0VfVElNRV9JTl9NSUxMSVNFQ09ORFMgPSAyMDAwO1xcclxcblxcclxcbmZ1bmN0aW9uIGdldFN1Z2dlc3RlZEZydWl0U2xvb29vdyhpbnB1dFZhbHVlKSB7XFxyXFxuICAgIGlmICggIWlucHV0VmFsdWUubGVuZ3RoICkge1xcclxcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XFxyXFxuICAgIH1cXHJcXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xcclxcbiAgICAgICAgc2V0VGltZW91dChcXHJcXG4gICAgICAgICAgICAoKSA9PiByZXNvbHZlKGdldFN1Z2dlc3RlZEZydWl0U3luYyhpbnB1dFZhbHVlKSksXFxyXFxuICAgICAgICAgICAgU0VSVkVSX1JFU1BPTlNFX1RJTUVfSU5fTUlMTElTRUNPTkRTXFxyXFxuICAgICAgICApO1xcclxcbiAgICB9KTtcXHJcXG59XFxyXFxuXFxyXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR2xvYmFsQ2FjaGVEZW1vKCkge1xcclxcbiAgICBjb25zdCBbIGl0ZW1zMSwgc2V0SXRlbXMxIF0gPSB1c2VTdGF0ZShbXSk7XFxyXFxuICAgIGNvbnN0IFsgaXRlbXMyLCBzZXRJdGVtczIgXSA9IHVzZVN0YXRlKFtdKTtcXHJcXG4gICAgcmV0dXJuIChcXHJcXG4gICAgICAgIDw+XFxyXFxuICAgICAgICAgICAgPE11bHRpUGlja2VyXFxyXFxuICAgICAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMxIH1cXHJcXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBzZXRJdGVtczEgfVxcclxcbiAgICAgICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICAgICAgZ2V0U3VnZ2VzdGVkSXRlbXM9eyBnZXRTdWdnZXN0ZWRGcnVpdFNsb29vb3cgfVxcclxcbiAgICAgICAgICAgICAgICB1c2VHbG9iYWxDYWNoZT1cInNoYXJlZC1mcnVpdFwiXFxyXFxuICAgICAgICAgICAgICAgIGxhYmVsPVwiWW91ciBmYXZvdXJpdGUgZnJ1aXQgMVwiXFxyXFxuICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgICAgIC8+XFxyXFxuICAgICAgICAgICAgPE11bHRpUGlja2VyXFxyXFxuICAgICAgICAgICAgICAgIHZhbHVlPXsgaXRlbXMyIH1cXHJcXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBzZXRJdGVtczIgfVxcclxcbiAgICAgICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICAgICAgZ2V0U3VnZ2VzdGVkSXRlbXM9eyBnZXRTdWdnZXN0ZWRGcnVpdFNsb29vb3cgfVxcclxcbiAgICAgICAgICAgICAgICB1c2VHbG9iYWxDYWNoZT1cInNoYXJlZC1mcnVpdFwiXFxyXFxuICAgICAgICAgICAgICAgIGxhYmVsPVwiWW91ciBmYXZvdXJpdGUgZnJ1aXQgMlwiXFxyXFxuICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgICAgIC8+XFxyXFxuICAgICAgICA8Lz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPVwiSWYgeW91J3JlIG1ha2luZyBhIHBpY2tlciBhbmQgd2FudCB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiBzdWdnZXN0aW9uIGZldGNoaW5nLCBhbmQgeW91IGNhbid0IHVzZSBjYWNoaW5nIG9uIHRoZSByZXF1ZXN0LCB5b3UgY2FuIHByb3ZpZGUgdGhlIGB1c2VHbG9iYWxDYWNoZWAgcHJvcC4gVGhpcyB3aWxsIG1ha2UgdGhlIHBpY2tlciBzdG9yZSBzdWdnZXN0aW9ucyBpbiBhIHNoYXJlZCBjYWNoZSBvYmplY3QsIGFuZCBhbGwgb3RoZXIgcGlja2VycyB0aGF0IHVzZSB0aGUgc2FtZSBjYWNoZSB3aWxsIGJlIGFibGUgdG8gdXNlIGl0IHd0aWhvdXQgbmVlZGluZyB0byByZS1mZXRjaCBzdWdnZXN0aW9ucyByZW1vdGVseS5cIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjkzKTtjb25zdCByPSdpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcXHJcXG5pbXBvcnQgTXVsdGlQaWNrZXIgZnJvbSBcIi4uLy4uL3NyYy9pbmRleFwiO1xcclxcbmltcG9ydCB7IEFMTF9GUlVJVFMgfSBmcm9tIFwiLi9jb21tb25cIjtcXHJcXG5cXHJcXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3VnZ2VzdGVkRnJ1aXRTeW5jKHNlYXJjaFN0cmluZykge1xcclxcbiAgICByZXR1cm4gQUxMX0ZSVUlUU1xcclxcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSk7XFxyXFxufVxcclxcblxcclxcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENsZWFyT25CbHVyRGVtbygpIHtcXHJcXG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZShbXSk7XFxyXFxuICAgIHJldHVybiAoXFxyXFxuICAgICAgICA8TXVsdGlQaWNrZXJcXHJcXG4gICAgICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBvbkNoYW5nZT17IHNldEl0ZW1zIH1cXHJcXG4gICAgICAgICAgICBpdGVtVG9TdHJpbmc9eyBmcnVpdCA9PiBmcnVpdC5uYW1lIH1cXHJcXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9XFxyXFxuICAgICAgICAgICAgbGFiZWw9XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiXFxyXFxuICAgICAgICAgICAgY2xlYXJJbnB1dE9uQmx1clxcclxcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxcclxcbiAgICAgICAgLz5cXHJcXG4gICAgKTtcXHJcXG59XFxyXFxuJyxvPVwiVG8gYXZvaWQgY29uZnVzaW9uIHdoZW4gdXNlcnMgZW50ZXIgdGV4dCBidXQgZG9uJ3QgcGljayBhbnl0aGluZyBmcm9tIHRoZSBkcm9wZG93biwgeW91IGNhbiBzZXQgdGhlIGBjbGVhcklucHV0T25CbHVyYCBwcm9wIHdoaWNoIHJlbW92ZXMgdGhlIHR5cGVkIGlucHV0IHZhbHVlIHdoZW4gdGhlIHBpY2tlciBsb3NlcyBmb2N1cy5cIjtlLmV4cG9ydHMuZGVmYXVsdCYmKGUuZXhwb3J0cy5kZWZhdWx0Ll9fc291cmNlX189cixlLmV4cG9ydHMuZGVmYXVsdC5fX21hcmtkb3duX189byksZS5leHBvcnRzLl9fc291cmNlPXIsZS5leHBvcnRzLl9fbWFya2Rvd25fXz1vfSwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7XG4vKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjguM1xuICogcmVhY3QucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL3ZhciByPW4oOTgpLG89XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLGE9bz9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxpPW8/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixsPW8/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LHM9bz9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsdT1vP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCxjPW8/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LGQ9bz9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCxwPW8/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxmPW8/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLG09bz9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMsZz1vP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LGg9bz9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNixiPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIHkoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMSxuPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrZSxyPTA7cjx0O3IrKyluKz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tyKzFdKTshZnVuY3Rpb24oZSx0LG4scixvLGEsaSxsKXtpZighZSl7aWYoZT12b2lkIDAsdm9pZCAwPT09dCllPUVycm9yKFwiTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIik7ZWxzZXt2YXIgcz1bbixyLG8sYSxpLGxdLHU9MDsoZT1FcnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gc1t1KytdfSkpKS5uYW1lPVwiSW52YXJpYW50IFZpb2xhdGlvblwifXRocm93IGUuZnJhbWVzVG9Qb3A9MSxlfX0oITEsXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrZStcIjsgdmlzaXQgJXMgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiBcIixuKX12YXIgdj17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sUz17fTtmdW5jdGlvbiBFKGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPVMsdGhpcy51cGRhdGVyPW58fHZ9ZnVuY3Rpb24geCgpe31mdW5jdGlvbiB3KGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPVMsdGhpcy51cGRhdGVyPW58fHZ9RS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxFLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlLHQpe1wib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT1lJiZ5KFwiODVcIiksdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUsdCxcInNldFN0YXRlXCIpfSxFLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsZSxcImZvcmNlVXBkYXRlXCIpfSx4LnByb3RvdHlwZT1FLnByb3RvdHlwZTt2YXIgaz13LnByb3RvdHlwZT1uZXcgeDtrLmNvbnN0cnVjdG9yPXcscihrLEUucHJvdG90eXBlKSxrLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwO3ZhciBfPXtjdXJyZW50Om51bGx9LFQ9e2N1cnJlbnQ6bnVsbH0sQT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEM9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtmdW5jdGlvbiBPKGUsdCxuKXt2YXIgcj12b2lkIDAsbz17fSxpPW51bGwsbD1udWxsO2lmKG51bGwhPXQpZm9yKHIgaW4gdm9pZCAwIT09dC5yZWYmJihsPXQucmVmKSx2b2lkIDAhPT10LmtleSYmKGk9XCJcIit0LmtleSksdClBLmNhbGwodCxyKSYmIUMuaGFzT3duUHJvcGVydHkocikmJihvW3JdPXRbcl0pO3ZhciBzPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09cylvLmNoaWxkcmVuPW47ZWxzZSBpZigxPHMpe2Zvcih2YXIgdT1BcnJheShzKSxjPTA7YzxzO2MrKyl1W2NdPWFyZ3VtZW50c1tjKzJdO28uY2hpbGRyZW49dX1pZihlJiZlLmRlZmF1bHRQcm9wcylmb3IociBpbiBzPWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PW9bcl0mJihvW3JdPXNbcl0pO3JldHVybnskJHR5cGVvZjphLHR5cGU6ZSxrZXk6aSxyZWY6bCxwcm9wczpvLF9vd25lcjpULmN1cnJlbnR9fWZ1bmN0aW9uIEkoZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09YX12YXIgTj0vXFwvKy9nLFI9W107ZnVuY3Rpb24gUChlLHQsbixyKXtpZihSLmxlbmd0aCl7dmFyIG89Ui5wb3AoKTtyZXR1cm4gby5yZXN1bHQ9ZSxvLmtleVByZWZpeD10LG8uZnVuYz1uLG8uY29udGV4dD1yLG8uY291bnQ9MCxvfXJldHVybntyZXN1bHQ6ZSxrZXlQcmVmaXg6dCxmdW5jOm4sY29udGV4dDpyLGNvdW50OjB9fWZ1bmN0aW9uIE0oZSl7ZS5yZXN1bHQ9bnVsbCxlLmtleVByZWZpeD1udWxsLGUuZnVuYz1udWxsLGUuY29udGV4dD1udWxsLGUuY291bnQ9MCwxMD5SLmxlbmd0aCYmUi5wdXNoKGUpfWZ1bmN0aW9uIEwoZSx0LG4pe3JldHVybiBudWxsPT1lPzA6ZnVuY3Rpb24gZSh0LG4scixvKXt2YXIgbD10eXBlb2YgdDtcInVuZGVmaW5lZFwiIT09bCYmXCJib29sZWFuXCIhPT1sfHwodD1udWxsKTt2YXIgcz0hMTtpZihudWxsPT09dClzPSEwO2Vsc2Ugc3dpdGNoKGwpe2Nhc2VcInN0cmluZ1wiOmNhc2VcIm51bWJlclwiOnM9ITA7YnJlYWs7Y2FzZVwib2JqZWN0XCI6c3dpdGNoKHQuJCR0eXBlb2Ype2Nhc2UgYTpjYXNlIGk6cz0hMH19aWYocylyZXR1cm4gcihvLHQsXCJcIj09PW4/XCIuXCIrRCh0LDApOm4pLDE7aWYocz0wLG49XCJcIj09PW4/XCIuXCI6bitcIjpcIixBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgdT0wO3U8dC5sZW5ndGg7dSsrKXt2YXIgYz1uK0QobD10W3VdLHUpO3MrPWUobCxjLHIsbyl9ZWxzZSBpZihjPW51bGw9PT10fHxcIm9iamVjdFwiIT10eXBlb2YgdD9udWxsOlwiZnVuY3Rpb25cIj09dHlwZW9mKGM9YiYmdFtiXXx8dFtcIkBAaXRlcmF0b3JcIl0pP2M6bnVsbCxcImZ1bmN0aW9uXCI9PXR5cGVvZiBjKWZvcih0PWMuY2FsbCh0KSx1PTA7IShsPXQubmV4dCgpKS5kb25lOylzKz1lKGw9bC52YWx1ZSxjPW4rRChsLHUrKykscixvKTtlbHNlXCJvYmplY3RcIj09PWwmJnkoXCIzMVwiLFwiW29iamVjdCBPYmplY3RdXCI9PShyPVwiXCIrdCk/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyh0KS5qb2luKFwiLCBcIikrXCJ9XCI6cixcIlwiKTtyZXR1cm4gc30oZSxcIlwiLHQsbil9ZnVuY3Rpb24gRChlLHQpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmbnVsbCE9ZS5rZXk/ZnVuY3Rpb24oZSl7dmFyIHQ9e1wiPVwiOlwiPTBcIixcIjpcIjpcIj0yXCJ9O3JldHVyblwiJFwiKyhcIlwiK2UpLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pfShlLmtleSk6dC50b1N0cmluZygzNil9ZnVuY3Rpb24gRihlLHQpe2UuZnVuYy5jYWxsKGUuY29udGV4dCx0LGUuY291bnQrKyl9ZnVuY3Rpb24gQihlLHQsbil7dmFyIHI9ZS5yZXN1bHQsbz1lLmtleVByZWZpeDtlPWUuZnVuYy5jYWxsKGUuY29udGV4dCx0LGUuY291bnQrKyksQXJyYXkuaXNBcnJheShlKT9qKGUscixuLGZ1bmN0aW9uKGUpe3JldHVybiBlfSk6bnVsbCE9ZSYmKEkoZSkmJihlPWZ1bmN0aW9uKGUsdCl7cmV0dXJueyQkdHlwZW9mOmEsdHlwZTplLnR5cGUsa2V5OnQscmVmOmUucmVmLHByb3BzOmUucHJvcHMsX293bmVyOmUuX293bmVyfX0oZSxvKyghZS5rZXl8fHQmJnQua2V5PT09ZS5rZXk/XCJcIjooXCJcIitlLmtleSkucmVwbGFjZShOLFwiJCYvXCIpK1wiL1wiKStuKSksci5wdXNoKGUpKX1mdW5jdGlvbiBqKGUsdCxuLHIsbyl7dmFyIGE9XCJcIjtudWxsIT1uJiYoYT0oXCJcIituKS5yZXBsYWNlKE4sXCIkJi9cIikrXCIvXCIpLEwoZSxCLHQ9UCh0LGEscixvKSksTSh0KX1mdW5jdGlvbiBVKCl7dmFyIGU9Xy5jdXJyZW50O3JldHVybiBudWxsPT09ZSYmeShcIjMwN1wiKSxlfXZhciB6PXtDaGlsZHJlbjp7bWFwOmZ1bmN0aW9uKGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciByPVtdO3JldHVybiBqKGUscixudWxsLHQsbikscn0sZm9yRWFjaDpmdW5jdGlvbihlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTtMKGUsRix0PVAobnVsbCxudWxsLHQsbikpLE0odCl9LGNvdW50OmZ1bmN0aW9uKGUpe3JldHVybiBMKGUsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sbnVsbCl9LHRvQXJyYXk6ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIGooZSx0LG51bGwsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSx0fSxvbmx5OmZ1bmN0aW9uKGUpe3JldHVybiBJKGUpfHx5KFwiMTQzXCIpLGV9fSxjcmVhdGVSZWY6ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX0sQ29tcG9uZW50OkUsUHVyZUNvbXBvbmVudDp3LGNyZWF0ZUNvbnRleHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksKGU9eyQkdHlwZW9mOmQsX2NhbGN1bGF0ZUNoYW5nZWRCaXRzOnQsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSkuUHJvdmlkZXI9eyQkdHlwZW9mOmMsX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSxmb3J3YXJkUmVmOmZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpmLHJlbmRlcjplfX0sbGF6eTpmdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6aCxfY3RvcjplLF9zdGF0dXM6LTEsX3Jlc3VsdDpudWxsfX0sbWVtbzpmdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjpnLHR5cGU6ZSxjb21wYXJlOnZvaWQgMD09PXQ/bnVsbDp0fX0sdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVSgpLnVzZUNhbGxiYWNrKGUsdCl9LHVzZUNvbnRleHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVSgpLnVzZUNvbnRleHQoZSx0KX0sdXNlRWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFUoKS51c2VFZmZlY3QoZSx0KX0sdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFUoKS51c2VJbXBlcmF0aXZlSGFuZGxlKGUsdCxuKX0sdXNlRGVidWdWYWx1ZTpmdW5jdGlvbigpe30sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFUoKS51c2VMYXlvdXRFZmZlY3QoZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3JldHVybiBVKCkudXNlTWVtbyhlLHQpfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVSgpLnVzZVJlZHVjZXIoZSx0LG4pfSx1c2VSZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIFUoKS51c2VSZWYoZSl9LHVzZVN0YXRlOmZ1bmN0aW9uKGUpe3JldHVybiBVKCkudXNlU3RhdGUoZSl9LEZyYWdtZW50OmwsU3RyaWN0TW9kZTpzLFN1c3BlbnNlOm0sY3JlYXRlRWxlbWVudDpPLGNsb25lRWxlbWVudDpmdW5jdGlvbihlLHQsbil7bnVsbD09ZSYmeShcIjI2N1wiLGUpO3ZhciBvPXZvaWQgMCxpPXIoe30sZS5wcm9wcyksbD1lLmtleSxzPWUucmVmLHU9ZS5fb3duZXI7aWYobnVsbCE9dCl7dm9pZCAwIT09dC5yZWYmJihzPXQucmVmLHU9VC5jdXJyZW50KSx2b2lkIDAhPT10LmtleSYmKGw9XCJcIit0LmtleSk7dmFyIGM9dm9pZCAwO2ZvcihvIGluIGUudHlwZSYmZS50eXBlLmRlZmF1bHRQcm9wcyYmKGM9ZS50eXBlLmRlZmF1bHRQcm9wcyksdClBLmNhbGwodCxvKSYmIUMuaGFzT3duUHJvcGVydHkobykmJihpW29dPXZvaWQgMD09PXRbb10mJnZvaWQgMCE9PWM/Y1tvXTp0W29dKX1pZigxPT09KG89YXJndW1lbnRzLmxlbmd0aC0yKSlpLmNoaWxkcmVuPW47ZWxzZSBpZigxPG8pe2M9QXJyYXkobyk7Zm9yKHZhciBkPTA7ZDxvO2QrKyljW2RdPWFyZ3VtZW50c1tkKzJdO2kuY2hpbGRyZW49Y31yZXR1cm57JCR0eXBlb2Y6YSx0eXBlOmUudHlwZSxrZXk6bCxyZWY6cyxwcm9wczppLF9vd25lcjp1fX0sY3JlYXRlRmFjdG9yeTpmdW5jdGlvbihlKXt2YXIgdD1PLmJpbmQobnVsbCxlKTtyZXR1cm4gdC50eXBlPWUsdH0saXNWYWxpZEVsZW1lbnQ6SSx2ZXJzaW9uOlwiMTYuOC4zXCIsdW5zdGFibGVfQ29uY3VycmVudE1vZGU6cCx1bnN0YWJsZV9Qcm9maWxlcjp1LF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOntSZWFjdEN1cnJlbnREaXNwYXRjaGVyOl8sUmVhY3RDdXJyZW50T3duZXI6VCxhc3NpZ246cn19LEg9e2RlZmF1bHQ6en0sVz1IJiZ6fHxIO2UuZXhwb3J0cz1XLmRlZmF1bHR8fFd9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtcbi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuOC4zXG4gKiByZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL3ZhciByPW4oMCksbz1uKDk4KSxhPW4oMjczKTtmdW5jdGlvbiBpKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTEsbj1cImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PVwiK2Uscj0wO3I8dDtyKyspbis9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbcisxXSk7IWZ1bmN0aW9uKGUsdCxuLHIsbyxhLGksbCl7aWYoIWUpe2lmKGU9dm9pZCAwLHZvaWQgMD09PXQpZT1FcnJvcihcIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCIpO2Vsc2V7dmFyIHM9W24scixvLGEsaSxsXSx1PTA7KGU9RXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIHNbdSsrXX0pKSkubmFtZT1cIkludmFyaWFudCBWaW9sYXRpb25cIn10aHJvdyBlLmZyYW1lc1RvUG9wPTEsZX19KCExLFwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2UrXCI7IHZpc2l0ICVzIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4gXCIsbil9cnx8aShcIjIyN1wiKTt2YXIgbD0hMSxzPW51bGwsdT0hMSxjPW51bGwsZD17b25FcnJvcjpmdW5jdGlvbihlKXtsPSEwLHM9ZX19O2Z1bmN0aW9uIHAoZSx0LG4scixvLGEsaSx1LGMpe2w9ITEscz1udWxsLGZ1bmN0aW9uKGUsdCxuLHIsbyxhLGksbCxzKXt2YXIgdT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMyk7dHJ5e3QuYXBwbHkobix1KX1jYXRjaChlKXt0aGlzLm9uRXJyb3IoZSl9fS5hcHBseShkLGFyZ3VtZW50cyl9dmFyIGY9bnVsbCxtPXt9O2Z1bmN0aW9uIGcoKXtpZihmKWZvcih2YXIgZSBpbiBtKXt2YXIgdD1tW2VdLG49Zi5pbmRleE9mKGUpO2lmKC0xPG58fGkoXCI5NlwiLGUpLCFiW25dKWZvcih2YXIgciBpbiB0LmV4dHJhY3RFdmVudHN8fGkoXCI5N1wiLGUpLGJbbl09dCxuPXQuZXZlbnRUeXBlcyl7dmFyIG89dm9pZCAwLGE9bltyXSxsPXQscz1yO3kuaGFzT3duUHJvcGVydHkocykmJmkoXCI5OVwiLHMpLHlbc109YTt2YXIgdT1hLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO2lmKHUpe2ZvcihvIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShvKSYmaCh1W29dLGwscyk7bz0hMH1lbHNlIGEucmVnaXN0cmF0aW9uTmFtZT8oaChhLnJlZ2lzdHJhdGlvbk5hbWUsbCxzKSxvPSEwKTpvPSExO298fGkoXCI5OFwiLHIsZSl9fX1mdW5jdGlvbiBoKGUsdCxuKXt2W2VdJiZpKFwiMTAwXCIsZSksdltlXT10LFNbZV09dC5ldmVudFR5cGVzW25dLmRlcGVuZGVuY2llc312YXIgYj1bXSx5PXt9LHY9e30sUz17fSxFPW51bGwseD1udWxsLHc9bnVsbDtmdW5jdGlvbiBrKGUsdCxuKXt2YXIgcj1lLnR5cGV8fFwidW5rbm93bi1ldmVudFwiO2UuY3VycmVudFRhcmdldD13KG4pLGZ1bmN0aW9uKGUsdCxuLHIsbyxhLGQsZixtKXtpZihwLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsKXtpZihsKXt2YXIgZz1zO2w9ITEscz1udWxsfWVsc2UgaShcIjE5OFwiKSxnPXZvaWQgMDt1fHwodT0hMCxjPWcpfX0ocix0LHZvaWQgMCxlKSxlLmN1cnJlbnRUYXJnZXQ9bnVsbH1mdW5jdGlvbiBfKGUsdCl7cmV0dXJuIG51bGw9PXQmJmkoXCIzMFwiKSxudWxsPT1lP3Q6QXJyYXkuaXNBcnJheShlKT9BcnJheS5pc0FycmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxlKTooZS5wdXNoKHQpLGUpOkFycmF5LmlzQXJyYXkodCk/W2VdLmNvbmNhdCh0KTpbZSx0XX1mdW5jdGlvbiBUKGUsdCxuKXtBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaCh0LG4pOmUmJnQuY2FsbChuLGUpfXZhciBBPW51bGw7ZnVuY3Rpb24gQyhlKXtpZihlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciByPTA7cjx0Lmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtyKyspayhlLHRbcl0sbltyXSk7ZWxzZSB0JiZrKGUsdCxuKTtlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwsZS5pc1BlcnNpc3RlbnQoKXx8ZS5jb25zdHJ1Y3Rvci5yZWxlYXNlKGUpfX12YXIgTz17aW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpmdW5jdGlvbihlKXtmJiZpKFwiMTAxXCIpLGY9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSksZygpfSxpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6ZnVuY3Rpb24oZSl7dmFyIHQsbj0hMTtmb3IodCBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkodCkpe3ZhciByPWVbdF07bS5oYXNPd25Qcm9wZXJ0eSh0KSYmbVt0XT09PXJ8fChtW3RdJiZpKFwiMTAyXCIsdCksbVt0XT1yLG49ITApfW4mJmcoKX19O2Z1bmN0aW9uIEkoZSx0KXt2YXIgbj1lLnN0YXRlTm9kZTtpZighbilyZXR1cm4gbnVsbDt2YXIgcj1FKG4pO2lmKCFyKXJldHVybiBudWxsO249clt0XTtlOnN3aXRjaCh0KXtjYXNlXCJvbkNsaWNrXCI6Y2FzZVwib25DbGlja0NhcHR1cmVcIjpjYXNlXCJvbkRvdWJsZUNsaWNrXCI6Y2FzZVwib25Eb3VibGVDbGlja0NhcHR1cmVcIjpjYXNlXCJvbk1vdXNlRG93blwiOmNhc2VcIm9uTW91c2VEb3duQ2FwdHVyZVwiOmNhc2VcIm9uTW91c2VNb3ZlXCI6Y2FzZVwib25Nb3VzZU1vdmVDYXB0dXJlXCI6Y2FzZVwib25Nb3VzZVVwXCI6Y2FzZVwib25Nb3VzZVVwQ2FwdHVyZVwiOihyPSFyLmRpc2FibGVkKXx8KHI9IShcImJ1dHRvblwiPT09KGU9ZS50eXBlKXx8XCJpbnB1dFwiPT09ZXx8XCJzZWxlY3RcIj09PWV8fFwidGV4dGFyZWFcIj09PWUpKSxlPSFyO2JyZWFrIGU7ZGVmYXVsdDplPSExfXJldHVybiBlP251bGw6KG4mJlwiZnVuY3Rpb25cIiE9dHlwZW9mIG4mJmkoXCIyMzFcIix0LHR5cGVvZiBuKSxuKX1mdW5jdGlvbiBOKGUpe2lmKG51bGwhPT1lJiYoQT1fKEEsZSkpLGU9QSxBPW51bGwsZSYmKFQoZSxDKSxBJiZpKFwiOTVcIiksdSkpdGhyb3cgZT1jLHU9ITEsYz1udWxsLGV9dmFyIFI9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksUD1cIl9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJFwiK1IsTT1cIl9fcmVhY3RFdmVudEhhbmRsZXJzJFwiK1I7ZnVuY3Rpb24gTChlKXtpZihlW1BdKXJldHVybiBlW1BdO2Zvcig7IWVbUF07KXtpZighZS5wYXJlbnROb2RlKXJldHVybiBudWxsO2U9ZS5wYXJlbnROb2RlfXJldHVybiA1PT09KGU9ZVtQXSkudGFnfHw2PT09ZS50YWc/ZTpudWxsfWZ1bmN0aW9uIEQoZSl7cmV0dXJuIShlPWVbUF0pfHw1IT09ZS50YWcmJjYhPT1lLnRhZz9udWxsOmV9ZnVuY3Rpb24gRihlKXtpZig1PT09ZS50YWd8fDY9PT1lLnRhZylyZXR1cm4gZS5zdGF0ZU5vZGU7aShcIjMzXCIpfWZ1bmN0aW9uIEIoZSl7cmV0dXJuIGVbTV18fG51bGx9ZnVuY3Rpb24gaihlKXtkb3tlPWUucmV0dXJufXdoaWxlKGUmJjUhPT1lLnRhZyk7cmV0dXJuIGV8fG51bGx9ZnVuY3Rpb24gVShlLHQsbil7KHQ9SShlLG4uZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbdF0pKSYmKG4uX2Rpc3BhdGNoTGlzdGVuZXJzPV8obi5fZGlzcGF0Y2hMaXN0ZW5lcnMsdCksbi5fZGlzcGF0Y2hJbnN0YW5jZXM9XyhuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9ZnVuY3Rpb24geihlKXtpZihlJiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXtmb3IodmFyIHQ9ZS5fdGFyZ2V0SW5zdCxuPVtdO3Q7KW4ucHVzaCh0KSx0PWoodCk7Zm9yKHQ9bi5sZW5ndGg7MDx0LS07KVUoblt0XSxcImNhcHR1cmVkXCIsZSk7Zm9yKHQ9MDt0PG4ubGVuZ3RoO3QrKylVKG5bdF0sXCJidWJibGVkXCIsZSl9fWZ1bmN0aW9uIEgoZSx0LG4pe2UmJm4mJm4uZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSYmKHQ9SShlLG4uZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkpJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9XyhuLl9kaXNwYXRjaExpc3RlbmVycyx0KSxuLl9kaXNwYXRjaEluc3RhbmNlcz1fKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBXKGUpe2UmJmUuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSYmSChlLl90YXJnZXRJbnN0LG51bGwsZSl9ZnVuY3Rpb24gRyhlKXtUKGUseil9dmFyIFY9IShcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO2Z1bmN0aW9uICQoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxuW1wiV2Via2l0XCIrZV09XCJ3ZWJraXRcIit0LG5bXCJNb3pcIitlXT1cIm1velwiK3Qsbn12YXIgcT17YW5pbWF0aW9uZW5kOiQoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkVuZFwiKSxhbmltYXRpb25pdGVyYXRpb246JChcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uSXRlcmF0aW9uXCIpLGFuaW1hdGlvbnN0YXJ0OiQoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvblN0YXJ0XCIpLHRyYW5zaXRpb25lbmQ6JChcIlRyYW5zaXRpb25cIixcIlRyYW5zaXRpb25FbmRcIil9LEs9e30sWT17fTtmdW5jdGlvbiBYKGUpe2lmKEtbZV0pcmV0dXJuIEtbZV07aWYoIXFbZV0pcmV0dXJuIGU7dmFyIHQsbj1xW2VdO2Zvcih0IGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eSh0KSYmdCBpbiBZKXJldHVybiBLW2VdPW5bdF07cmV0dXJuIGV9ViYmKFk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKS5zdHlsZSxcIkFuaW1hdGlvbkV2ZW50XCJpbiB3aW5kb3d8fChkZWxldGUgcS5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBxLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIHEuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSxcIlRyYW5zaXRpb25FdmVudFwiaW4gd2luZG93fHxkZWxldGUgcS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO3ZhciBaPVgoXCJhbmltYXRpb25lbmRcIiksUT1YKFwiYW5pbWF0aW9uaXRlcmF0aW9uXCIpLEo9WChcImFuaW1hdGlvbnN0YXJ0XCIpLGVlPVgoXCJ0cmFuc2l0aW9uZW5kXCIpLHRlPVwiYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZ1wiLnNwbGl0KFwiIFwiKSxuZT1udWxsLHJlPW51bGwsb2U9bnVsbDtmdW5jdGlvbiBhZSgpe2lmKG9lKXJldHVybiBvZTt2YXIgZSx0LG49cmUscj1uLmxlbmd0aCxvPVwidmFsdWVcImluIG5lP25lLnZhbHVlOm5lLnRleHRDb250ZW50LGE9by5sZW5ndGg7Zm9yKGU9MDtlPHImJm5bZV09PT1vW2VdO2UrKyk7dmFyIGk9ci1lO2Zvcih0PTE7dDw9aSYmbltyLXRdPT09b1thLXRdO3QrKyk7cmV0dXJuIG9lPW8uc2xpY2UoZSwxPHQ/MS10OnZvaWQgMCl9ZnVuY3Rpb24gaWUoKXtyZXR1cm4hMH1mdW5jdGlvbiBsZSgpe3JldHVybiExfWZ1bmN0aW9uIHNlKGUsdCxuLHIpe2Zvcih2YXIgbyBpbiB0aGlzLmRpc3BhdGNoQ29uZmlnPWUsdGhpcy5fdGFyZ2V0SW5zdD10LHRoaXMubmF0aXZlRXZlbnQ9bixlPXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlKWUuaGFzT3duUHJvcGVydHkobykmJigodD1lW29dKT90aGlzW29dPXQobik6XCJ0YXJnZXRcIj09PW8/dGhpcy50YXJnZXQ9cjp0aGlzW29dPW5bb10pO3JldHVybiB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD0obnVsbCE9bi5kZWZhdWx0UHJldmVudGVkP24uZGVmYXVsdFByZXZlbnRlZDohMT09PW4ucmV0dXJuVmFsdWUpP2llOmxlLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9bGUsdGhpc31mdW5jdGlvbiB1ZShlLHQsbixyKXtpZih0aGlzLmV2ZW50UG9vbC5sZW5ndGgpe3ZhciBvPXRoaXMuZXZlbnRQb29sLnBvcCgpO3JldHVybiB0aGlzLmNhbGwobyxlLHQsbixyKSxvfXJldHVybiBuZXcgdGhpcyhlLHQsbixyKX1mdW5jdGlvbiBjZShlKXtlIGluc3RhbmNlb2YgdGhpc3x8aShcIjI3OVwiKSxlLmRlc3RydWN0b3IoKSwxMD50aGlzLmV2ZW50UG9vbC5sZW5ndGgmJnRoaXMuZXZlbnRQb29sLnB1c2goZSl9ZnVuY3Rpb24gZGUoZSl7ZS5ldmVudFBvb2w9W10sZS5nZXRQb29sZWQ9dWUsZS5yZWxlYXNlPWNlfW8oc2UucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKTpcInVua25vd25cIiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1pZSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6XCJ1bmtub3duXCIhPXR5cGVvZiBlLmNhbmNlbEJ1YmJsZSYmKGUuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWllKX0scGVyc2lzdDpmdW5jdGlvbigpe3RoaXMuaXNQZXJzaXN0ZW50PWllfSxpc1BlcnNpc3RlbnQ6bGUsZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKGUgaW4gdCl0aGlzW2VdPW51bGw7dGhpcy5uYXRpdmVFdmVudD10aGlzLl90YXJnZXRJbnN0PXRoaXMuZGlzcGF0Y2hDb25maWc9bnVsbCx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWxlLHRoaXMuX2Rpc3BhdGNoSW5zdGFuY2VzPXRoaXMuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGx9fSksc2UuSW50ZXJmYWNlPXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsY3VycmVudFRhcmdldDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxldmVudFBoYXNlOm51bGwsYnViYmxlczpudWxsLGNhbmNlbGFibGU6bnVsbCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51bGx9LHNlLmV4dGVuZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7fWZ1bmN0aW9uIG4oKXtyZXR1cm4gci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIHI9dGhpczt0LnByb3RvdHlwZT1yLnByb3RvdHlwZTt2YXIgYT1uZXcgdDtyZXR1cm4gbyhhLG4ucHJvdG90eXBlKSxuLnByb3RvdHlwZT1hLG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW4sbi5JbnRlcmZhY2U9byh7fSxyLkludGVyZmFjZSxlKSxuLmV4dGVuZD1yLmV4dGVuZCxkZShuKSxufSxkZShzZSk7dmFyIHBlPXNlLmV4dGVuZCh7ZGF0YTpudWxsfSksZmU9c2UuZXh0ZW5kKHtkYXRhOm51bGx9KSxtZT1bOSwxMywyNywzMl0sZ2U9ViYmXCJDb21wb3NpdGlvbkV2ZW50XCJpbiB3aW5kb3csaGU9bnVsbDtWJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJihoZT1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciBiZT1WJiZcIlRleHRFdmVudFwiaW4gd2luZG93JiYhaGUseWU9ViYmKCFnZXx8aGUmJjg8aGUmJjExPj1oZSksdmU9U3RyaW5nLmZyb21DaGFyQ29kZSgzMiksU2U9e2JlZm9yZUlucHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQmVmb3JlSW5wdXRcIixjYXB0dXJlZDpcIm9uQmVmb3JlSW5wdXRDYXB0dXJlXCJ9LGRlcGVuZGVuY2llczpbXCJjb21wb3NpdGlvbmVuZFwiLFwia2V5cHJlc3NcIixcInRleHRJbnB1dFwiLFwicGFzdGVcIl19LGNvbXBvc2l0aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQ29tcG9zaXRpb25FbmRcIixjYXB0dXJlZDpcIm9uQ29tcG9zaXRpb25FbmRDYXB0dXJlXCJ9LGRlcGVuZGVuY2llczpcImJsdXIgY29tcG9zaXRpb25lbmQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIil9LGNvbXBvc2l0aW9uU3RhcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25Db21wb3NpdGlvblN0YXJ0XCIsY2FwdHVyZWQ6XCJvbkNvbXBvc2l0aW9uU3RhcnRDYXB0dXJlXCJ9LGRlcGVuZGVuY2llczpcImJsdXIgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKX0sY29tcG9zaXRpb25VcGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25Db21wb3NpdGlvblVwZGF0ZVwiLGNhcHR1cmVkOlwib25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOlwiYmx1ciBjb21wb3NpdGlvbnVwZGF0ZSBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKX19LEVlPSExO2Z1bmN0aW9uIHhlKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImtleXVwXCI6cmV0dXJuLTEhPT1tZS5pbmRleE9mKHQua2V5Q29kZSk7Y2FzZVwia2V5ZG93blwiOnJldHVybiAyMjkhPT10LmtleUNvZGU7Y2FzZVwia2V5cHJlc3NcIjpjYXNlXCJtb3VzZWRvd25cIjpjYXNlXCJibHVyXCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gd2UoZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mKGU9ZS5kZXRhaWwpJiZcImRhdGFcImluIGU/ZS5kYXRhOm51bGx9dmFyIGtlPSExO3ZhciBfZT17ZXZlbnRUeXBlczpTZSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXZvaWQgMCxhPXZvaWQgMDtpZihnZSllOntzd2l0Y2goZSl7Y2FzZVwiY29tcG9zaXRpb25zdGFydFwiOm89U2UuY29tcG9zaXRpb25TdGFydDticmVhayBlO2Nhc2VcImNvbXBvc2l0aW9uZW5kXCI6bz1TZS5jb21wb3NpdGlvbkVuZDticmVhayBlO2Nhc2VcImNvbXBvc2l0aW9udXBkYXRlXCI6bz1TZS5jb21wb3NpdGlvblVwZGF0ZTticmVhayBlfW89dm9pZCAwfWVsc2Uga2U/eGUoZSxuKSYmKG89U2UuY29tcG9zaXRpb25FbmQpOlwia2V5ZG93blwiPT09ZSYmMjI5PT09bi5rZXlDb2RlJiYobz1TZS5jb21wb3NpdGlvblN0YXJ0KTtyZXR1cm4gbz8oeWUmJlwia29cIiE9PW4ubG9jYWxlJiYoa2V8fG8hPT1TZS5jb21wb3NpdGlvblN0YXJ0P289PT1TZS5jb21wb3NpdGlvbkVuZCYma2UmJihhPWFlKCkpOihyZT1cInZhbHVlXCJpbihuZT1yKT9uZS52YWx1ZTpuZS50ZXh0Q29udGVudCxrZT0hMCkpLG89cGUuZ2V0UG9vbGVkKG8sdCxuLHIpLGE/by5kYXRhPWE6bnVsbCE9PShhPXdlKG4pKSYmKG8uZGF0YT1hKSxHKG8pLGE9byk6YT1udWxsLChlPWJlP2Z1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIHdlKHQpO2Nhc2VcImtleXByZXNzXCI6cmV0dXJuIDMyIT09dC53aGljaD9udWxsOihFZT0hMCx2ZSk7Y2FzZVwidGV4dElucHV0XCI6cmV0dXJuKGU9dC5kYXRhKT09PXZlJiZFZT9udWxsOmU7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KGUsbik6ZnVuY3Rpb24oZSx0KXtpZihrZSlyZXR1cm5cImNvbXBvc2l0aW9uZW5kXCI9PT1lfHwhZ2UmJnhlKGUsdCk/KGU9YWUoKSxvZT1yZT1uZT1udWxsLGtlPSExLGUpOm51bGw7c3dpdGNoKGUpe2Nhc2VcInBhc3RlXCI6cmV0dXJuIG51bGw7Y2FzZVwia2V5cHJlc3NcIjppZighKHQuY3RybEtleXx8dC5hbHRLZXl8fHQubWV0YUtleSl8fHQuY3RybEtleSYmdC5hbHRLZXkpe2lmKHQuY2hhciYmMTx0LmNoYXIubGVuZ3RoKXJldHVybiB0LmNoYXI7aWYodC53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiB5ZSYmXCJrb1wiIT09dC5sb2NhbGU/bnVsbDp0LmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KGUsbikpPygodD1mZS5nZXRQb29sZWQoU2UuYmVmb3JlSW5wdXQsdCxuLHIpKS5kYXRhPWUsRyh0KSk6dD1udWxsLG51bGw9PT1hP3Q6bnVsbD09PXQ/YTpbYSx0XX19LFRlPW51bGwsQWU9bnVsbCxDZT1udWxsO2Z1bmN0aW9uIE9lKGUpe2lmKGU9eChlKSl7XCJmdW5jdGlvblwiIT10eXBlb2YgVGUmJmkoXCIyODBcIik7dmFyIHQ9RShlLnN0YXRlTm9kZSk7VGUoZS5zdGF0ZU5vZGUsZS50eXBlLHQpfX1mdW5jdGlvbiBJZShlKXtBZT9DZT9DZS5wdXNoKGUpOkNlPVtlXTpBZT1lfWZ1bmN0aW9uIE5lKCl7aWYoQWUpe3ZhciBlPUFlLHQ9Q2U7aWYoQ2U9QWU9bnVsbCxPZShlKSx0KWZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspT2UodFtlXSl9fWZ1bmN0aW9uIFJlKGUsdCl7cmV0dXJuIGUodCl9ZnVuY3Rpb24gUGUoZSx0LG4pe3JldHVybiBlKHQsbil9ZnVuY3Rpb24gTWUoKXt9dmFyIExlPSExO2Z1bmN0aW9uIERlKGUsdCl7aWYoTGUpcmV0dXJuIGUodCk7TGU9ITA7dHJ5e3JldHVybiBSZShlLHQpfWZpbmFsbHl7TGU9ITEsKG51bGwhPT1BZXx8bnVsbCE9PUNlKSYmKE1lKCksTmUoKSl9fXZhciBGZT17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCxcImRhdGV0aW1lLWxvY2FsXCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBCZShlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJpbnB1dFwiPT09dD8hIUZlW2UudHlwZV06XCJ0ZXh0YXJlYVwiPT09dH1mdW5jdGlvbiBqZShlKXtyZXR1cm4oZT1lLnRhcmdldHx8ZS5zcmNFbGVtZW50fHx3aW5kb3cpLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYoZT1lLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSwzPT09ZS5ub2RlVHlwZT9lLnBhcmVudE5vZGU6ZX1mdW5jdGlvbiBVZShlKXtpZighVilyZXR1cm4hMTt2YXIgdD0oZT1cIm9uXCIrZSlpbiBkb2N1bWVudDtyZXR1cm4gdHx8KCh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLnNldEF0dHJpYnV0ZShlLFwicmV0dXJuO1wiKSx0PVwiZnVuY3Rpb25cIj09dHlwZW9mIHRbZV0pLHR9ZnVuY3Rpb24gemUoZSl7dmFyIHQ9ZS50eXBlO3JldHVybihlPWUubm9kZU5hbWUpJiZcImlucHV0XCI9PT1lLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT10fHxcInJhZGlvXCI9PT10KX1mdW5jdGlvbiBIZShlKXtlLl92YWx1ZVRyYWNrZXJ8fChlLl92YWx1ZVRyYWNrZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9emUoZSk/XCJjaGVja2VkXCI6XCJ2YWx1ZVwiLG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx0KSxyPVwiXCIrZVt0XTtpZighZS5oYXNPd25Qcm9wZXJ0eSh0KSYmdm9pZCAwIT09biYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi5nZXQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIG4uc2V0KXt2YXIgbz1uLmdldCxhPW4uc2V0O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGUpe3I9XCJcIitlLGEuY2FsbCh0aGlzLGUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6bi5lbnVtZXJhYmxlfSkse2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHNldFZhbHVlOmZ1bmN0aW9uKGUpe3I9XCJcIitlfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXtlLl92YWx1ZVRyYWNrZXI9bnVsbCxkZWxldGUgZVt0XX19fX0oZSkpfWZ1bmN0aW9uIFdlKGUpe2lmKCFlKXJldHVybiExO3ZhciB0PWUuX3ZhbHVlVHJhY2tlcjtpZighdClyZXR1cm4hMDt2YXIgbj10LmdldFZhbHVlKCkscj1cIlwiO3JldHVybiBlJiYocj16ZShlKT9lLmNoZWNrZWQ/XCJ0cnVlXCI6XCJmYWxzZVwiOmUudmFsdWUpLChlPXIpIT09biYmKHQuc2V0VmFsdWUoZSksITApfXZhciBHZT1yLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO0dlLmhhc093blByb3BlcnR5KFwiUmVhY3RDdXJyZW50RGlzcGF0Y2hlclwiKXx8KEdlLlJlYWN0Q3VycmVudERpc3BhdGNoZXI9e2N1cnJlbnQ6bnVsbH0pO3ZhciBWZT0vXiguKilbXFxcXFxcL10vLCRlPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixxZT0kZT9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxLZT0kZT9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LFllPSRlP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxYZT0kZT9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsWmU9JGU/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LFFlPSRlP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSxKZT0kZT9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCxldD0kZT9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLHR0PSRlP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixudD0kZT9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMscnQ9JGU/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsb3Q9JGU/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6NjAxMTYsYXQ9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gaXQoZSl7cmV0dXJuIG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgZT9udWxsOlwiZnVuY3Rpb25cIj09dHlwZW9mKGU9YXQmJmVbYXRdfHxlW1wiQEBpdGVyYXRvclwiXSk/ZTpudWxsfWZ1bmN0aW9uIGx0KGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSlyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBlO3N3aXRjaChlKXtjYXNlIGV0OnJldHVyblwiQ29uY3VycmVudE1vZGVcIjtjYXNlIFllOnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIEtlOnJldHVyblwiUG9ydGFsXCI7Y2FzZSBaZTpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSBYZTpyZXR1cm5cIlN0cmljdE1vZGVcIjtjYXNlIG50OnJldHVyblwiU3VzcGVuc2VcIn1pZihcIm9iamVjdFwiPT10eXBlb2YgZSlzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBKZTpyZXR1cm5cIkNvbnRleHQuQ29uc3VtZXJcIjtjYXNlIFFlOnJldHVyblwiQ29udGV4dC5Qcm92aWRlclwiO2Nhc2UgdHQ6dmFyIHQ9ZS5yZW5kZXI7cmV0dXJuIHQ9dC5kaXNwbGF5TmFtZXx8dC5uYW1lfHxcIlwiLGUuZGlzcGxheU5hbWV8fChcIlwiIT09dD9cIkZvcndhcmRSZWYoXCIrdCtcIilcIjpcIkZvcndhcmRSZWZcIik7Y2FzZSBydDpyZXR1cm4gbHQoZS50eXBlKTtjYXNlIG90OmlmKGU9MT09PWUuX3N0YXR1cz9lLl9yZXN1bHQ6bnVsbClyZXR1cm4gbHQoZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gc3QoZSl7dmFyIHQ9XCJcIjtkb3tlOnN3aXRjaChlLnRhZyl7Y2FzZSAzOmNhc2UgNDpjYXNlIDY6Y2FzZSA3OmNhc2UgMTA6Y2FzZSA5OnZhciBuPVwiXCI7YnJlYWsgZTtkZWZhdWx0OnZhciByPWUuX2RlYnVnT3duZXIsbz1lLl9kZWJ1Z1NvdXJjZSxhPWx0KGUudHlwZSk7bj1udWxsLHImJihuPWx0KHIudHlwZSkpLHI9YSxhPVwiXCIsbz9hPVwiIChhdCBcIitvLmZpbGVOYW1lLnJlcGxhY2UoVmUsXCJcIikrXCI6XCIrby5saW5lTnVtYmVyK1wiKVwiOm4mJihhPVwiIChjcmVhdGVkIGJ5IFwiK24rXCIpXCIpLG49XCJcXG4gICAgaW4gXCIrKHJ8fFwiVW5rbm93blwiKSthfXQrPW4sZT1lLnJldHVybn13aGlsZShlKTtyZXR1cm4gdH12YXIgdXQ9L15bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRdWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDBdKiQvLGN0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksZHQ9e30scHQ9e307ZnVuY3Rpb24gZnQoZSx0LG4scixvKXt0aGlzLmFjY2VwdHNCb29sZWFucz0yPT09dHx8Mz09PXR8fDQ9PT10LHRoaXMuYXR0cmlidXRlTmFtZT1yLHRoaXMuYXR0cmlidXRlTmFtZXNwYWNlPW8sdGhpcy5tdXN0VXNlUHJvcGVydHk9bix0aGlzLnByb3BlcnR5TmFtZT1lLHRoaXMudHlwZT10fXZhciBtdD17fTtcImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe210W2VdPW5ldyBmdChlLDAsITEsZSxudWxsKX0pLFtbXCJhY2NlcHRDaGFyc2V0XCIsXCJhY2NlcHQtY2hhcnNldFwiXSxbXCJjbGFzc05hbWVcIixcImNsYXNzXCJdLFtcImh0bWxGb3JcIixcImZvclwiXSxbXCJodHRwRXF1aXZcIixcImh0dHAtZXF1aXZcIl1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXTttdFt0XT1uZXcgZnQodCwxLCExLGVbMV0sbnVsbCl9KSxbXCJjb250ZW50RWRpdGFibGVcIixcImRyYWdnYWJsZVwiLFwic3BlbGxDaGVja1wiLFwidmFsdWVcIl0uZm9yRWFjaChmdW5jdGlvbihlKXttdFtlXT1uZXcgZnQoZSwyLCExLGUudG9Mb3dlckNhc2UoKSxudWxsKX0pLFtcImF1dG9SZXZlcnNlXCIsXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCIsXCJmb2N1c2FibGVcIixcInByZXNlcnZlQWxwaGFcIl0uZm9yRWFjaChmdW5jdGlvbihlKXttdFtlXT1uZXcgZnQoZSwyLCExLGUsbnVsbCl9KSxcImFsbG93RnVsbFNjcmVlbiBhc3luYyBhdXRvRm9jdXMgYXV0b1BsYXkgY29udHJvbHMgZGVmYXVsdCBkZWZlciBkaXNhYmxlZCBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe210W2VdPW5ldyBmdChlLDMsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwpfSksW1wiY2hlY2tlZFwiLFwibXVsdGlwbGVcIixcIm11dGVkXCIsXCJzZWxlY3RlZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe210W2VdPW5ldyBmdChlLDMsITAsZSxudWxsKX0pLFtcImNhcHR1cmVcIixcImRvd25sb2FkXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7bXRbZV09bmV3IGZ0KGUsNCwhMSxlLG51bGwpfSksW1wiY29sc1wiLFwicm93c1wiLFwic2l6ZVwiLFwic3BhblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe210W2VdPW5ldyBmdChlLDYsITEsZSxudWxsKX0pLFtcInJvd1NwYW5cIixcInN0YXJ0XCJdLmZvckVhY2goZnVuY3Rpb24oZSl7bXRbZV09bmV3IGZ0KGUsNSwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCl9KTt2YXIgZ3Q9L1tcXC06XShbYS16XSkvZztmdW5jdGlvbiBodChlKXtyZXR1cm4gZVsxXS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIGJ0KGUsdCxuLHIpe3ZhciBvPW10Lmhhc093blByb3BlcnR5KHQpP210W3RdOm51bGw7KG51bGwhPT1vPzA9PT1vLnR5cGU6IXImJigyPHQubGVuZ3RoJiYoXCJvXCI9PT10WzBdfHxcIk9cIj09PXRbMF0pJiYoXCJuXCI9PT10WzFdfHxcIk5cIj09PXRbMV0pKSl8fChmdW5jdGlvbihlLHQsbixyKXtpZihudWxsPT10fHxmdW5jdGlvbihlLHQsbixyKXtpZihudWxsIT09biYmMD09PW4udHlwZSlyZXR1cm4hMTtzd2l0Y2godHlwZW9mIHQpe2Nhc2VcImZ1bmN0aW9uXCI6Y2FzZVwic3ltYm9sXCI6cmV0dXJuITA7Y2FzZVwiYm9vbGVhblwiOnJldHVybiFyJiYobnVsbCE9PW4/IW4uYWNjZXB0c0Jvb2xlYW5zOlwiZGF0YS1cIiE9PShlPWUudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpKSYmXCJhcmlhLVwiIT09ZSk7ZGVmYXVsdDpyZXR1cm4hMX19KGUsdCxuLHIpKXJldHVybiEwO2lmKHIpcmV0dXJuITE7aWYobnVsbCE9PW4pc3dpdGNoKG4udHlwZSl7Y2FzZSAzOnJldHVybiF0O2Nhc2UgNDpyZXR1cm4hMT09PXQ7Y2FzZSA1OnJldHVybiBpc05hTih0KTtjYXNlIDY6cmV0dXJuIGlzTmFOKHQpfHwxPnR9cmV0dXJuITF9KHQsbixvLHIpJiYobj1udWxsKSxyfHxudWxsPT09bz9mdW5jdGlvbihlKXtyZXR1cm4hIWN0LmNhbGwocHQsZSl8fCFjdC5jYWxsKGR0LGUpJiYodXQudGVzdChlKT9wdFtlXT0hMDooZHRbZV09ITAsITEpKX0odCkmJihudWxsPT09bj9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LFwiXCIrbikpOm8ubXVzdFVzZVByb3BlcnR5P2Vbby5wcm9wZXJ0eU5hbWVdPW51bGw9PT1uPzMhPT1vLnR5cGUmJlwiXCI6bjoodD1vLmF0dHJpYnV0ZU5hbWUscj1vLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09bj9lLnJlbW92ZUF0dHJpYnV0ZSh0KToobj0zPT09KG89by50eXBlKXx8ND09PW8mJiEwPT09bj9cIlwiOlwiXCIrbixyP2Uuc2V0QXR0cmlidXRlTlMocix0LG4pOmUuc2V0QXR0cmlidXRlKHQsbikpKSl9ZnVuY3Rpb24geXQoZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlXCJib29sZWFuXCI6Y2FzZVwibnVtYmVyXCI6Y2FzZVwib2JqZWN0XCI6Y2FzZVwic3RyaW5nXCI6Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm5cIlwifX1mdW5jdGlvbiB2dChlLHQpe3ZhciBuPXQuY2hlY2tlZDtyZXR1cm4gbyh7fSx0LHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTp2b2lkIDAsY2hlY2tlZDpudWxsIT1uP246ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkfSl9ZnVuY3Rpb24gU3QoZSx0KXt2YXIgbj1udWxsPT10LmRlZmF1bHRWYWx1ZT9cIlwiOnQuZGVmYXVsdFZhbHVlLHI9bnVsbCE9dC5jaGVja2VkP3QuY2hlY2tlZDp0LmRlZmF1bHRDaGVja2VkO249eXQobnVsbCE9dC52YWx1ZT90LnZhbHVlOm4pLGUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6cixpbml0aWFsVmFsdWU6bixjb250cm9sbGVkOlwiY2hlY2tib3hcIj09PXQudHlwZXx8XCJyYWRpb1wiPT09dC50eXBlP251bGwhPXQuY2hlY2tlZDpudWxsIT10LnZhbHVlfX1mdW5jdGlvbiBFdChlLHQpe251bGwhPSh0PXQuY2hlY2tlZCkmJmJ0KGUsXCJjaGVja2VkXCIsdCwhMSl9ZnVuY3Rpb24geHQoZSx0KXtFdChlLHQpO3ZhciBuPXl0KHQudmFsdWUpLHI9dC50eXBlO2lmKG51bGwhPW4pXCJudW1iZXJcIj09PXI/KDA9PT1uJiZcIlwiPT09ZS52YWx1ZXx8ZS52YWx1ZSE9bikmJihlLnZhbHVlPVwiXCIrbik6ZS52YWx1ZSE9PVwiXCIrbiYmKGUudmFsdWU9XCJcIituKTtlbHNlIGlmKFwic3VibWl0XCI9PT1yfHxcInJlc2V0XCI9PT1yKXJldHVybiB2b2lkIGUucmVtb3ZlQXR0cmlidXRlKFwidmFsdWVcIik7dC5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpP2t0KGUsdC50eXBlLG4pOnQuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikmJmt0KGUsdC50eXBlLHl0KHQuZGVmYXVsdFZhbHVlKSksbnVsbD09dC5jaGVja2VkJiZudWxsIT10LmRlZmF1bHRDaGVja2VkJiYoZS5kZWZhdWx0Q2hlY2tlZD0hIXQuZGVmYXVsdENoZWNrZWQpfWZ1bmN0aW9uIHd0KGUsdCxuKXtpZih0Lmhhc093blByb3BlcnR5KFwidmFsdWVcIil8fHQuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikpe3ZhciByPXQudHlwZTtpZighKFwic3VibWl0XCIhPT1yJiZcInJlc2V0XCIhPT1yfHx2b2lkIDAhPT10LnZhbHVlJiZudWxsIT09dC52YWx1ZSkpcmV0dXJuO3Q9XCJcIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLG58fHQ9PT1lLnZhbHVlfHwoZS52YWx1ZT10KSxlLmRlZmF1bHRWYWx1ZT10fVwiXCIhPT0obj1lLm5hbWUpJiYoZS5uYW1lPVwiXCIpLGUuZGVmYXVsdENoZWNrZWQ9IWUuZGVmYXVsdENoZWNrZWQsZS5kZWZhdWx0Q2hlY2tlZD0hIWUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCxcIlwiIT09biYmKGUubmFtZT1uKX1mdW5jdGlvbiBrdChlLHQsbil7XCJudW1iZXJcIj09PXQmJmUub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50PT09ZXx8KG51bGw9PW4/ZS5kZWZhdWx0VmFsdWU9XCJcIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmUuZGVmYXVsdFZhbHVlIT09XCJcIituJiYoZS5kZWZhdWx0VmFsdWU9XCJcIituKSl9XCJhY2NlbnQtaGVpZ2h0IGFsaWdubWVudC1iYXNlbGluZSBhcmFiaWMtZm9ybSBiYXNlbGluZS1zaGlmdCBjYXAtaGVpZ2h0IGNsaXAtcGF0aCBjbGlwLXJ1bGUgY29sb3ItaW50ZXJwb2xhdGlvbiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMgY29sb3ItcHJvZmlsZSBjb2xvci1yZW5kZXJpbmcgZG9taW5hbnQtYmFzZWxpbmUgZW5hYmxlLWJhY2tncm91bmQgZmlsbC1vcGFjaXR5IGZpbGwtcnVsZSBmbG9vZC1jb2xvciBmbG9vZC1vcGFjaXR5IGZvbnQtZmFtaWx5IGZvbnQtc2l6ZSBmb250LXNpemUtYWRqdXN0IGZvbnQtc3RyZXRjaCBmb250LXN0eWxlIGZvbnQtdmFyaWFudCBmb250LXdlaWdodCBnbHlwaC1uYW1lIGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwgZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwgaG9yaXotYWR2LXggaG9yaXotb3JpZ2luLXggaW1hZ2UtcmVuZGVyaW5nIGxldHRlci1zcGFjaW5nIGxpZ2h0aW5nLWNvbG9yIG1hcmtlci1lbmQgbWFya2VyLW1pZCBtYXJrZXItc3RhcnQgb3ZlcmxpbmUtcG9zaXRpb24gb3ZlcmxpbmUtdGhpY2tuZXNzIHBhaW50LW9yZGVyIHBhbm9zZS0xIHBvaW50ZXItZXZlbnRzIHJlbmRlcmluZy1pbnRlbnQgc2hhcGUtcmVuZGVyaW5nIHN0b3AtY29sb3Igc3RvcC1vcGFjaXR5IHN0cmlrZXRocm91Z2gtcG9zaXRpb24gc3RyaWtldGhyb3VnaC10aGlja25lc3Mgc3Ryb2tlLWRhc2hhcnJheSBzdHJva2UtZGFzaG9mZnNldCBzdHJva2UtbGluZWNhcCBzdHJva2UtbGluZWpvaW4gc3Ryb2tlLW1pdGVybGltaXQgc3Ryb2tlLW9wYWNpdHkgc3Ryb2tlLXdpZHRoIHRleHQtYW5jaG9yIHRleHQtZGVjb3JhdGlvbiB0ZXh0LXJlbmRlcmluZyB1bmRlcmxpbmUtcG9zaXRpb24gdW5kZXJsaW5lLXRoaWNrbmVzcyB1bmljb2RlLWJpZGkgdW5pY29kZS1yYW5nZSB1bml0cy1wZXItZW0gdi1hbHBoYWJldGljIHYtaGFuZ2luZyB2LWlkZW9ncmFwaGljIHYtbWF0aGVtYXRpY2FsIHZlY3Rvci1lZmZlY3QgdmVydC1hZHYteSB2ZXJ0LW9yaWdpbi14IHZlcnQtb3JpZ2luLXkgd29yZC1zcGFjaW5nIHdyaXRpbmctbW9kZSB4bWxuczp4bGluayB4LWhlaWdodFwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShndCxodCk7bXRbdF09bmV3IGZ0KHQsMSwhMSxlLG51bGwpfSksXCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6aHJlZiB4bGluazpyb2xlIHhsaW5rOnNob3cgeGxpbms6dGl0bGUgeGxpbms6dHlwZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShndCxodCk7bXRbdF09bmV3IGZ0KHQsMSwhMSxlLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiKX0pLFtcInhtbDpiYXNlXCIsXCJ4bWw6bGFuZ1wiLFwieG1sOnNwYWNlXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKGd0LGh0KTttdFt0XT1uZXcgZnQodCwxLCExLGUsXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIil9KSxbXCJ0YWJJbmRleFwiLFwiY3Jvc3NPcmlnaW5cIl0uZm9yRWFjaChmdW5jdGlvbihlKXttdFtlXT1uZXcgZnQoZSwxLCExLGUudG9Mb3dlckNhc2UoKSxudWxsKX0pO3ZhciBfdD17Y2hhbmdlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQ2hhbmdlXCIsY2FwdHVyZWQ6XCJvbkNoYW5nZUNhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOlwiYmx1ciBjaGFuZ2UgY2xpY2sgZm9jdXMgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIil9fTtmdW5jdGlvbiBUdChlLHQsbil7cmV0dXJuKGU9c2UuZ2V0UG9vbGVkKF90LmNoYW5nZSxlLHQsbikpLnR5cGU9XCJjaGFuZ2VcIixJZShuKSxHKGUpLGV9dmFyIEF0PW51bGwsQ3Q9bnVsbDtmdW5jdGlvbiBPdChlKXtOKGUpfWZ1bmN0aW9uIEl0KGUpe2lmKFdlKEYoZSkpKXJldHVybiBlfWZ1bmN0aW9uIE50KGUsdCl7aWYoXCJjaGFuZ2VcIj09PWUpcmV0dXJuIHR9dmFyIFJ0PSExO2Z1bmN0aW9uIFB0KCl7QXQmJihBdC5kZXRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixNdCksQ3Q9QXQ9bnVsbCl9ZnVuY3Rpb24gTXQoZSl7XCJ2YWx1ZVwiPT09ZS5wcm9wZXJ0eU5hbWUmJkl0KEN0KSYmRGUoT3QsZT1UdChDdCxlLGplKGUpKSl9ZnVuY3Rpb24gTHQoZSx0LG4pe1wiZm9jdXNcIj09PWU/KFB0KCksQ3Q9biwoQXQ9dCkuYXR0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsTXQpKTpcImJsdXJcIj09PWUmJlB0KCl9ZnVuY3Rpb24gRHQoZSl7aWYoXCJzZWxlY3Rpb25jaGFuZ2VcIj09PWV8fFwia2V5dXBcIj09PWV8fFwia2V5ZG93blwiPT09ZSlyZXR1cm4gSXQoQ3QpfWZ1bmN0aW9uIEZ0KGUsdCl7aWYoXCJjbGlja1wiPT09ZSlyZXR1cm4gSXQodCl9ZnVuY3Rpb24gQnQoZSx0KXtpZihcImlucHV0XCI9PT1lfHxcImNoYW5nZVwiPT09ZSlyZXR1cm4gSXQodCl9ViYmKFJ0PVVlKFwiaW5wdXRcIikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSkpO3ZhciBqdD17ZXZlbnRUeXBlczpfdCxfaXNJbnB1dEV2ZW50U3VwcG9ydGVkOlJ0LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dD9GKHQpOndpbmRvdyxhPXZvaWQgMCxpPXZvaWQgMCxsPW8ubm9kZU5hbWUmJm8ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihcInNlbGVjdFwiPT09bHx8XCJpbnB1dFwiPT09bCYmXCJmaWxlXCI9PT1vLnR5cGU/YT1OdDpCZShvKT9SdD9hPUJ0OihhPUR0LGk9THQpOihsPW8ubm9kZU5hbWUpJiZcImlucHV0XCI9PT1sLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1vLnR5cGV8fFwicmFkaW9cIj09PW8udHlwZSkmJihhPUZ0KSxhJiYoYT1hKGUsdCkpKXJldHVybiBUdChhLG4scik7aSYmaShlLG8sdCksXCJibHVyXCI9PT1lJiYoZT1vLl93cmFwcGVyU3RhdGUpJiZlLmNvbnRyb2xsZWQmJlwibnVtYmVyXCI9PT1vLnR5cGUmJmt0KG8sXCJudW1iZXJcIixvLnZhbHVlKX19LFV0PXNlLmV4dGVuZCh7dmlldzpudWxsLGRldGFpbDpudWxsfSksenQ9e0FsdDpcImFsdEtleVwiLENvbnRyb2w6XCJjdHJsS2V5XCIsTWV0YTpcIm1ldGFLZXlcIixTaGlmdDpcInNoaWZ0S2V5XCJ9O2Z1bmN0aW9uIEh0KGUpe3ZhciB0PXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIHQuZ2V0TW9kaWZpZXJTdGF0ZT90LmdldE1vZGlmaWVyU3RhdGUoZSk6ISEoZT16dFtlXSkmJiEhdFtlXX1mdW5jdGlvbiBXdCgpe3JldHVybiBIdH12YXIgR3Q9MCxWdD0wLCR0PSExLHF0PSExLEt0PVV0LmV4dGVuZCh7c2NyZWVuWDpudWxsLHNjcmVlblk6bnVsbCxjbGllbnRYOm51bGwsY2xpZW50WTpudWxsLHBhZ2VYOm51bGwscGFnZVk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpXdCxidXR0b246bnVsbCxidXR0b25zOm51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWxhdGVkVGFyZ2V0fHwoZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRvRWxlbWVudDplLmZyb21FbGVtZW50KX0sbW92ZW1lbnRYOmZ1bmN0aW9uKGUpe2lmKFwibW92ZW1lbnRYXCJpbiBlKXJldHVybiBlLm1vdmVtZW50WDt2YXIgdD1HdDtyZXR1cm4gR3Q9ZS5zY3JlZW5YLCR0P1wibW91c2Vtb3ZlXCI9PT1lLnR5cGU/ZS5zY3JlZW5YLXQ6MDooJHQ9ITAsMCl9LG1vdmVtZW50WTpmdW5jdGlvbihlKXtpZihcIm1vdmVtZW50WVwiaW4gZSlyZXR1cm4gZS5tb3ZlbWVudFk7dmFyIHQ9VnQ7cmV0dXJuIFZ0PWUuc2NyZWVuWSxxdD9cIm1vdXNlbW92ZVwiPT09ZS50eXBlP2Uuc2NyZWVuWS10OjA6KHF0PSEwLDApfX0pLFl0PUt0LmV4dGVuZCh7cG9pbnRlcklkOm51bGwsd2lkdGg6bnVsbCxoZWlnaHQ6bnVsbCxwcmVzc3VyZTpudWxsLHRhbmdlbnRpYWxQcmVzc3VyZTpudWxsLHRpbHRYOm51bGwsdGlsdFk6bnVsbCx0d2lzdDpudWxsLHBvaW50ZXJUeXBlOm51bGwsaXNQcmltYXJ5Om51bGx9KSxYdD17bW91c2VFbnRlcjp7cmVnaXN0cmF0aW9uTmFtZTpcIm9uTW91c2VFbnRlclwiLGRlcGVuZGVuY2llczpbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdfSxtb3VzZUxlYXZlOntyZWdpc3RyYXRpb25OYW1lOlwib25Nb3VzZUxlYXZlXCIsZGVwZW5kZW5jaWVzOltcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl19LHBvaW50ZXJFbnRlcjp7cmVnaXN0cmF0aW9uTmFtZTpcIm9uUG9pbnRlckVudGVyXCIsZGVwZW5kZW5jaWVzOltcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdfSxwb2ludGVyTGVhdmU6e3JlZ2lzdHJhdGlvbk5hbWU6XCJvblBvaW50ZXJMZWF2ZVwiLGRlcGVuZGVuY2llczpbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXX19LFp0PXtldmVudFR5cGVzOlh0LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89XCJtb3VzZW92ZXJcIj09PWV8fFwicG9pbnRlcm92ZXJcIj09PWUsYT1cIm1vdXNlb3V0XCI9PT1lfHxcInBvaW50ZXJvdXRcIj09PWU7aWYobyYmKG4ucmVsYXRlZFRhcmdldHx8bi5mcm9tRWxlbWVudCl8fCFhJiYhbylyZXR1cm4gbnVsbDtpZihvPXIud2luZG93PT09cj9yOihvPXIub3duZXJEb2N1bWVudCk/by5kZWZhdWx0Vmlld3x8by5wYXJlbnRXaW5kb3c6d2luZG93LGE/KGE9dCx0PSh0PW4ucmVsYXRlZFRhcmdldHx8bi50b0VsZW1lbnQpP0wodCk6bnVsbCk6YT1udWxsLGE9PT10KXJldHVybiBudWxsO3ZhciBpPXZvaWQgMCxsPXZvaWQgMCxzPXZvaWQgMCx1PXZvaWQgMDtcIm1vdXNlb3V0XCI9PT1lfHxcIm1vdXNlb3ZlclwiPT09ZT8oaT1LdCxsPVh0Lm1vdXNlTGVhdmUscz1YdC5tb3VzZUVudGVyLHU9XCJtb3VzZVwiKTpcInBvaW50ZXJvdXRcIiE9PWUmJlwicG9pbnRlcm92ZXJcIiE9PWV8fChpPVl0LGw9WHQucG9pbnRlckxlYXZlLHM9WHQucG9pbnRlckVudGVyLHU9XCJwb2ludGVyXCIpO3ZhciBjPW51bGw9PWE/bzpGKGEpO2lmKG89bnVsbD09dD9vOkYodCksKGU9aS5nZXRQb29sZWQobCxhLG4scikpLnR5cGU9dStcImxlYXZlXCIsZS50YXJnZXQ9YyxlLnJlbGF0ZWRUYXJnZXQ9bywobj1pLmdldFBvb2xlZChzLHQsbixyKSkudHlwZT11K1wiZW50ZXJcIixuLnRhcmdldD1vLG4ucmVsYXRlZFRhcmdldD1jLHI9dCxhJiZyKWU6e2ZvcihvPXIsdT0wLGk9dD1hO2k7aT1qKGkpKXUrKztmb3IoaT0wLHM9bztzO3M9aihzKSlpKys7Zm9yKDswPHUtaTspdD1qKHQpLHUtLTtmb3IoOzA8aS11OylvPWoobyksaS0tO2Zvcig7dS0tOyl7aWYodD09PW98fHQ9PT1vLmFsdGVybmF0ZSlicmVhayBlO3Q9aih0KSxvPWoobyl9dD1udWxsfWVsc2UgdD1udWxsO2ZvcihvPXQsdD1bXTthJiZhIT09byYmKG51bGw9PT0odT1hLmFsdGVybmF0ZSl8fHUhPT1vKTspdC5wdXNoKGEpLGE9aihhKTtmb3IoYT1bXTtyJiZyIT09byYmKG51bGw9PT0odT1yLmFsdGVybmF0ZSl8fHUhPT1vKTspYS5wdXNoKHIpLHI9aihyKTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKUgodFtyXSxcImJ1YmJsZWRcIixlKTtmb3Iocj1hLmxlbmd0aDswPHItLTspSChhW3JdLFwiY2FwdHVyZWRcIixuKTtyZXR1cm5bZSxuXX19O2Z1bmN0aW9uIFF0KGUsdCl7cmV0dXJuIGU9PT10JiYoMCE9PWV8fDEvZT09MS90KXx8ZSE9ZSYmdCE9dH12YXIgSnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBlbihlLHQpe2lmKFF0KGUsdCkpcmV0dXJuITA7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGV8fG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSkscj1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PXIubGVuZ3RoKXJldHVybiExO2ZvcihyPTA7cjxuLmxlbmd0aDtyKyspaWYoIUp0LmNhbGwodCxuW3JdKXx8IVF0KGVbbltyXV0sdFtuW3JdXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gdG4oZSl7dmFyIHQ9ZTtpZihlLmFsdGVybmF0ZSlmb3IoO3QucmV0dXJuOyl0PXQucmV0dXJuO2Vsc2V7aWYoMCE9KDImdC5lZmZlY3RUYWcpKXJldHVybiAxO2Zvcig7dC5yZXR1cm47KWlmKDAhPSgyJih0PXQucmV0dXJuKS5lZmZlY3RUYWcpKXJldHVybiAxfXJldHVybiAzPT09dC50YWc/MjozfWZ1bmN0aW9uIG5uKGUpezIhPT10bihlKSYmaShcIjE4OFwiKX1mdW5jdGlvbiBybihlKXtpZighKGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbHRlcm5hdGU7aWYoIXQpcmV0dXJuIDM9PT0odD10bihlKSkmJmkoXCIxODhcIiksMT09PXQ/bnVsbDplO2Zvcih2YXIgbj1lLHI9dDs7KXt2YXIgbz1uLnJldHVybixhPW8/by5hbHRlcm5hdGU6bnVsbDtpZighb3x8IWEpYnJlYWs7aWYoby5jaGlsZD09PWEuY2hpbGQpe2Zvcih2YXIgbD1vLmNoaWxkO2w7KXtpZihsPT09bilyZXR1cm4gbm4obyksZTtpZihsPT09cilyZXR1cm4gbm4obyksdDtsPWwuc2libGluZ31pKFwiMTg4XCIpfWlmKG4ucmV0dXJuIT09ci5yZXR1cm4pbj1vLHI9YTtlbHNle2w9ITE7Zm9yKHZhciBzPW8uY2hpbGQ7czspe2lmKHM9PT1uKXtsPSEwLG49byxyPWE7YnJlYWt9aWYocz09PXIpe2w9ITAscj1vLG49YTticmVha31zPXMuc2libGluZ31pZighbCl7Zm9yKHM9YS5jaGlsZDtzOyl7aWYocz09PW4pe2w9ITAsbj1hLHI9bzticmVha31pZihzPT09cil7bD0hMCxyPWEsbj1vO2JyZWFrfXM9cy5zaWJsaW5nfWx8fGkoXCIxODlcIil9fW4uYWx0ZXJuYXRlIT09ciYmaShcIjE5MFwiKX1yZXR1cm4gMyE9PW4udGFnJiZpKFwiMTg4XCIpLG4uc3RhdGVOb2RlLmN1cnJlbnQ9PT1uP2U6dH0oZSkpKXJldHVybiBudWxsO2Zvcih2YXIgdD1lOzspe2lmKDU9PT10LnRhZ3x8Nj09PXQudGFnKXJldHVybiB0O2lmKHQuY2hpbGQpdC5jaGlsZC5yZXR1cm49dCx0PXQuY2hpbGQ7ZWxzZXtpZih0PT09ZSlicmVhaztmb3IoOyF0LnNpYmxpbmc7KXtpZighdC5yZXR1cm58fHQucmV0dXJuPT09ZSlyZXR1cm4gbnVsbDt0PXQucmV0dXJufXQuc2libGluZy5yZXR1cm49dC5yZXR1cm4sdD10LnNpYmxpbmd9fXJldHVybiBudWxsfXZhciBvbj1zZS5leHRlbmQoe2FuaW1hdGlvbk5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH0pLGFuPXNlLmV4dGVuZCh7Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihlKXtyZXR1cm5cImNsaXBib2FyZERhdGFcImluIGU/ZS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pLGxuPVV0LmV4dGVuZCh7cmVsYXRlZFRhcmdldDpudWxsfSk7ZnVuY3Rpb24gc24oZSl7dmFyIHQ9ZS5rZXlDb2RlO3JldHVyblwiY2hhckNvZGVcImluIGU/MD09PShlPWUuY2hhckNvZGUpJiYxMz09PXQmJihlPTEzKTplPXQsMTA9PT1lJiYoZT0xMyksMzI8PWV8fDEzPT09ZT9lOjB9dmFyIHVuPXtFc2M6XCJFc2NhcGVcIixTcGFjZWJhcjpcIiBcIixMZWZ0OlwiQXJyb3dMZWZ0XCIsVXA6XCJBcnJvd1VwXCIsUmlnaHQ6XCJBcnJvd1JpZ2h0XCIsRG93bjpcIkFycm93RG93blwiLERlbDpcIkRlbGV0ZVwiLFdpbjpcIk9TXCIsTWVudTpcIkNvbnRleHRNZW51XCIsQXBwczpcIkNvbnRleHRNZW51XCIsU2Nyb2xsOlwiU2Nyb2xsTG9ja1wiLE1velByaW50YWJsZUtleTpcIlVuaWRlbnRpZmllZFwifSxjbj17ODpcIkJhY2tzcGFjZVwiLDk6XCJUYWJcIiwxMjpcIkNsZWFyXCIsMTM6XCJFbnRlclwiLDE2OlwiU2hpZnRcIiwxNzpcIkNvbnRyb2xcIiwxODpcIkFsdFwiLDE5OlwiUGF1c2VcIiwyMDpcIkNhcHNMb2NrXCIsMjc6XCJFc2NhcGVcIiwzMjpcIiBcIiwzMzpcIlBhZ2VVcFwiLDM0OlwiUGFnZURvd25cIiwzNTpcIkVuZFwiLDM2OlwiSG9tZVwiLDM3OlwiQXJyb3dMZWZ0XCIsMzg6XCJBcnJvd1VwXCIsMzk6XCJBcnJvd1JpZ2h0XCIsNDA6XCJBcnJvd0Rvd25cIiw0NTpcIkluc2VydFwiLDQ2OlwiRGVsZXRlXCIsMTEyOlwiRjFcIiwxMTM6XCJGMlwiLDExNDpcIkYzXCIsMTE1OlwiRjRcIiwxMTY6XCJGNVwiLDExNzpcIkY2XCIsMTE4OlwiRjdcIiwxMTk6XCJGOFwiLDEyMDpcIkY5XCIsMTIxOlwiRjEwXCIsMTIyOlwiRjExXCIsMTIzOlwiRjEyXCIsMTQ0OlwiTnVtTG9ja1wiLDE0NTpcIlNjcm9sbExvY2tcIiwyMjQ6XCJNZXRhXCJ9LGRuPVV0LmV4dGVuZCh7a2V5OmZ1bmN0aW9uKGUpe2lmKGUua2V5KXt2YXIgdD11bltlLmtleV18fGUua2V5O2lmKFwiVW5pZGVudGlmaWVkXCIhPT10KXJldHVybiB0fXJldHVyblwia2V5cHJlc3NcIj09PWUudHlwZT8xMz09PShlPXNuKGUpKT9cIkVudGVyXCI6U3RyaW5nLmZyb21DaGFyQ29kZShlKTpcImtleWRvd25cIj09PWUudHlwZXx8XCJrZXl1cFwiPT09ZS50eXBlP2NuW2Uua2V5Q29kZV18fFwiVW5pZGVudGlmaWVkXCI6XCJcIn0sbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpXdCxjaGFyQ29kZTpmdW5jdGlvbihlKXtyZXR1cm5cImtleXByZXNzXCI9PT1lLnR5cGU/c24oZSk6MH0sa2V5Q29kZTpmdW5jdGlvbihlKXtyZXR1cm5cImtleWRvd25cIj09PWUudHlwZXx8XCJrZXl1cFwiPT09ZS50eXBlP2Uua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihlKXtyZXR1cm5cImtleXByZXNzXCI9PT1lLnR5cGU/c24oZSk6XCJrZXlkb3duXCI9PT1lLnR5cGV8fFwia2V5dXBcIj09PWUudHlwZT9lLmtleUNvZGU6MH19KSxwbj1LdC5leHRlbmQoe2RhdGFUcmFuc2ZlcjpudWxsfSksZm49VXQuZXh0ZW5kKHt0b3VjaGVzOm51bGwsdGFyZ2V0VG91Y2hlczpudWxsLGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6V3R9KSxtbj1zZS5leHRlbmQoe3Byb3BlcnR5TmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfSksZ249S3QuZXh0ZW5kKHtkZWx0YVg6ZnVuY3Rpb24oZSl7cmV0dXJuXCJkZWx0YVhcImluIGU/ZS5kZWx0YVg6XCJ3aGVlbERlbHRhWFwiaW4gZT8tZS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuXCJkZWx0YVlcImluIGU/ZS5kZWx0YVk6XCJ3aGVlbERlbHRhWVwiaW4gZT8tZS53aGVlbERlbHRhWTpcIndoZWVsRGVsdGFcImluIGU/LWUud2hlZWxEZWx0YTowfSxkZWx0YVo6bnVsbCxkZWx0YU1vZGU6bnVsbH0pLGhuPVtbXCJhYm9ydFwiLFwiYWJvcnRcIl0sW1osXCJhbmltYXRpb25FbmRcIl0sW1EsXCJhbmltYXRpb25JdGVyYXRpb25cIl0sW0osXCJhbmltYXRpb25TdGFydFwiXSxbXCJjYW5wbGF5XCIsXCJjYW5QbGF5XCJdLFtcImNhbnBsYXl0aHJvdWdoXCIsXCJjYW5QbGF5VGhyb3VnaFwiXSxbXCJkcmFnXCIsXCJkcmFnXCJdLFtcImRyYWdlbnRlclwiLFwiZHJhZ0VudGVyXCJdLFtcImRyYWdleGl0XCIsXCJkcmFnRXhpdFwiXSxbXCJkcmFnbGVhdmVcIixcImRyYWdMZWF2ZVwiXSxbXCJkcmFnb3ZlclwiLFwiZHJhZ092ZXJcIl0sW1wiZHVyYXRpb25jaGFuZ2VcIixcImR1cmF0aW9uQ2hhbmdlXCJdLFtcImVtcHRpZWRcIixcImVtcHRpZWRcIl0sW1wiZW5jcnlwdGVkXCIsXCJlbmNyeXB0ZWRcIl0sW1wiZW5kZWRcIixcImVuZGVkXCJdLFtcImVycm9yXCIsXCJlcnJvclwiXSxbXCJnb3Rwb2ludGVyY2FwdHVyZVwiLFwiZ290UG9pbnRlckNhcHR1cmVcIl0sW1wibG9hZFwiLFwibG9hZFwiXSxbXCJsb2FkZWRkYXRhXCIsXCJsb2FkZWREYXRhXCJdLFtcImxvYWRlZG1ldGFkYXRhXCIsXCJsb2FkZWRNZXRhZGF0YVwiXSxbXCJsb2Fkc3RhcnRcIixcImxvYWRTdGFydFwiXSxbXCJsb3N0cG9pbnRlcmNhcHR1cmVcIixcImxvc3RQb2ludGVyQ2FwdHVyZVwiXSxbXCJtb3VzZW1vdmVcIixcIm1vdXNlTW92ZVwiXSxbXCJtb3VzZW91dFwiLFwibW91c2VPdXRcIl0sW1wibW91c2VvdmVyXCIsXCJtb3VzZU92ZXJcIl0sW1wicGxheWluZ1wiLFwicGxheWluZ1wiXSxbXCJwb2ludGVybW92ZVwiLFwicG9pbnRlck1vdmVcIl0sW1wicG9pbnRlcm91dFwiLFwicG9pbnRlck91dFwiXSxbXCJwb2ludGVyb3ZlclwiLFwicG9pbnRlck92ZXJcIl0sW1wicHJvZ3Jlc3NcIixcInByb2dyZXNzXCJdLFtcInNjcm9sbFwiLFwic2Nyb2xsXCJdLFtcInNlZWtpbmdcIixcInNlZWtpbmdcIl0sW1wic3RhbGxlZFwiLFwic3RhbGxlZFwiXSxbXCJzdXNwZW5kXCIsXCJzdXNwZW5kXCJdLFtcInRpbWV1cGRhdGVcIixcInRpbWVVcGRhdGVcIl0sW1widG9nZ2xlXCIsXCJ0b2dnbGVcIl0sW1widG91Y2htb3ZlXCIsXCJ0b3VjaE1vdmVcIl0sW2VlLFwidHJhbnNpdGlvbkVuZFwiXSxbXCJ3YWl0aW5nXCIsXCJ3YWl0aW5nXCJdLFtcIndoZWVsXCIsXCJ3aGVlbFwiXV0sYm49e30seW49e307ZnVuY3Rpb24gdm4oZSx0KXt2YXIgbj1lWzBdLHI9XCJvblwiKygoZT1lWzFdKVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSkpO3Q9e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOnIsY2FwdHVyZWQ6citcIkNhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOltuXSxpc0ludGVyYWN0aXZlOnR9LGJuW2VdPXQseW5bbl09dH1bW1wiYmx1clwiLFwiYmx1clwiXSxbXCJjYW5jZWxcIixcImNhbmNlbFwiXSxbXCJjbGlja1wiLFwiY2xpY2tcIl0sW1wiY2xvc2VcIixcImNsb3NlXCJdLFtcImNvbnRleHRtZW51XCIsXCJjb250ZXh0TWVudVwiXSxbXCJjb3B5XCIsXCJjb3B5XCJdLFtcImN1dFwiLFwiY3V0XCJdLFtcImF1eGNsaWNrXCIsXCJhdXhDbGlja1wiXSxbXCJkYmxjbGlja1wiLFwiZG91YmxlQ2xpY2tcIl0sW1wiZHJhZ2VuZFwiLFwiZHJhZ0VuZFwiXSxbXCJkcmFnc3RhcnRcIixcImRyYWdTdGFydFwiXSxbXCJkcm9wXCIsXCJkcm9wXCJdLFtcImZvY3VzXCIsXCJmb2N1c1wiXSxbXCJpbnB1dFwiLFwiaW5wdXRcIl0sW1wiaW52YWxpZFwiLFwiaW52YWxpZFwiXSxbXCJrZXlkb3duXCIsXCJrZXlEb3duXCJdLFtcImtleXByZXNzXCIsXCJrZXlQcmVzc1wiXSxbXCJrZXl1cFwiLFwia2V5VXBcIl0sW1wibW91c2Vkb3duXCIsXCJtb3VzZURvd25cIl0sW1wibW91c2V1cFwiLFwibW91c2VVcFwiXSxbXCJwYXN0ZVwiLFwicGFzdGVcIl0sW1wicGF1c2VcIixcInBhdXNlXCJdLFtcInBsYXlcIixcInBsYXlcIl0sW1wicG9pbnRlcmNhbmNlbFwiLFwicG9pbnRlckNhbmNlbFwiXSxbXCJwb2ludGVyZG93blwiLFwicG9pbnRlckRvd25cIl0sW1wicG9pbnRlcnVwXCIsXCJwb2ludGVyVXBcIl0sW1wicmF0ZWNoYW5nZVwiLFwicmF0ZUNoYW5nZVwiXSxbXCJyZXNldFwiLFwicmVzZXRcIl0sW1wic2Vla2VkXCIsXCJzZWVrZWRcIl0sW1wic3VibWl0XCIsXCJzdWJtaXRcIl0sW1widG91Y2hjYW5jZWxcIixcInRvdWNoQ2FuY2VsXCJdLFtcInRvdWNoZW5kXCIsXCJ0b3VjaEVuZFwiXSxbXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaFN0YXJ0XCJdLFtcInZvbHVtZWNoYW5nZVwiLFwidm9sdW1lQ2hhbmdlXCJdXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZuKGUsITApfSksaG4uZm9yRWFjaChmdW5jdGlvbihlKXt2bihlLCExKX0pO3ZhciBTbj17ZXZlbnRUeXBlczpibixpc0ludGVyYWN0aXZlVG9wTGV2ZWxFdmVudFR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PShlPXluW2VdKSYmITA9PT1lLmlzSW50ZXJhY3RpdmV9LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89eW5bZV07aWYoIW8pcmV0dXJuIG51bGw7c3dpdGNoKGUpe2Nhc2VcImtleXByZXNzXCI6aWYoMD09PXNuKG4pKXJldHVybiBudWxsO2Nhc2VcImtleWRvd25cIjpjYXNlXCJrZXl1cFwiOmU9ZG47YnJlYWs7Y2FzZVwiYmx1clwiOmNhc2VcImZvY3VzXCI6ZT1sbjticmVhaztjYXNlXCJjbGlja1wiOmlmKDI9PT1uLmJ1dHRvbilyZXR1cm4gbnVsbDtjYXNlXCJhdXhjbGlja1wiOmNhc2VcImRibGNsaWNrXCI6Y2FzZVwibW91c2Vkb3duXCI6Y2FzZVwibW91c2Vtb3ZlXCI6Y2FzZVwibW91c2V1cFwiOmNhc2VcIm1vdXNlb3V0XCI6Y2FzZVwibW91c2VvdmVyXCI6Y2FzZVwiY29udGV4dG1lbnVcIjplPUt0O2JyZWFrO2Nhc2VcImRyYWdcIjpjYXNlXCJkcmFnZW5kXCI6Y2FzZVwiZHJhZ2VudGVyXCI6Y2FzZVwiZHJhZ2V4aXRcIjpjYXNlXCJkcmFnbGVhdmVcIjpjYXNlXCJkcmFnb3ZlclwiOmNhc2VcImRyYWdzdGFydFwiOmNhc2VcImRyb3BcIjplPXBuO2JyZWFrO2Nhc2VcInRvdWNoY2FuY2VsXCI6Y2FzZVwidG91Y2hlbmRcIjpjYXNlXCJ0b3VjaG1vdmVcIjpjYXNlXCJ0b3VjaHN0YXJ0XCI6ZT1mbjticmVhaztjYXNlIFo6Y2FzZSBROmNhc2UgSjplPW9uO2JyZWFrO2Nhc2UgZWU6ZT1tbjticmVhaztjYXNlXCJzY3JvbGxcIjplPVV0O2JyZWFrO2Nhc2VcIndoZWVsXCI6ZT1nbjticmVhaztjYXNlXCJjb3B5XCI6Y2FzZVwiY3V0XCI6Y2FzZVwicGFzdGVcIjplPWFuO2JyZWFrO2Nhc2VcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZVwibG9zdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZVwicG9pbnRlcmNhbmNlbFwiOmNhc2VcInBvaW50ZXJkb3duXCI6Y2FzZVwicG9pbnRlcm1vdmVcIjpjYXNlXCJwb2ludGVyb3V0XCI6Y2FzZVwicG9pbnRlcm92ZXJcIjpjYXNlXCJwb2ludGVydXBcIjplPVl0O2JyZWFrO2RlZmF1bHQ6ZT1zZX1yZXR1cm4gRyh0PWUuZ2V0UG9vbGVkKG8sdCxuLHIpKSx0fX0sRW49U24uaXNJbnRlcmFjdGl2ZVRvcExldmVsRXZlbnRUeXBlLHhuPVtdO2Z1bmN0aW9uIHduKGUpe3ZhciB0PWUudGFyZ2V0SW5zdCxuPXQ7ZG97aWYoIW4pe2UuYW5jZXN0b3JzLnB1c2gobik7YnJlYWt9dmFyIHI7Zm9yKHI9bjtyLnJldHVybjspcj1yLnJldHVybjtpZighKHI9MyE9PXIudGFnP251bGw6ci5zdGF0ZU5vZGUuY29udGFpbmVySW5mbykpYnJlYWs7ZS5hbmNlc3RvcnMucHVzaChuKSxuPUwocil9d2hpbGUobik7Zm9yKG49MDtuPGUuYW5jZXN0b3JzLmxlbmd0aDtuKyspe3Q9ZS5hbmNlc3RvcnNbbl07dmFyIG89amUoZS5uYXRpdmVFdmVudCk7cj1lLnRvcExldmVsVHlwZTtmb3IodmFyIGE9ZS5uYXRpdmVFdmVudCxpPW51bGwsbD0wO2w8Yi5sZW5ndGg7bCsrKXt2YXIgcz1iW2xdO3MmJihzPXMuZXh0cmFjdEV2ZW50cyhyLHQsYSxvKSkmJihpPV8oaSxzKSl9TihpKX19dmFyIGtuPSEwO2Z1bmN0aW9uIF9uKGUsdCl7aWYoIXQpcmV0dXJuIG51bGw7dmFyIG49KEVuKGUpP0FuOkNuKS5iaW5kKG51bGwsZSk7dC5hZGRFdmVudExpc3RlbmVyKGUsbiwhMSl9ZnVuY3Rpb24gVG4oZSx0KXtpZighdClyZXR1cm4gbnVsbDt2YXIgbj0oRW4oZSk/QW46Q24pLmJpbmQobnVsbCxlKTt0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCEwKX1mdW5jdGlvbiBBbihlLHQpe1BlKENuLGUsdCl9ZnVuY3Rpb24gQ24oZSx0KXtpZihrbil7dmFyIG49amUodCk7aWYobnVsbD09PShuPUwobikpfHxcIm51bWJlclwiIT10eXBlb2Ygbi50YWd8fDI9PT10bihuKXx8KG49bnVsbCkseG4ubGVuZ3RoKXt2YXIgcj14bi5wb3AoKTtyLnRvcExldmVsVHlwZT1lLHIubmF0aXZlRXZlbnQ9dCxyLnRhcmdldEluc3Q9bixlPXJ9ZWxzZSBlPXt0b3BMZXZlbFR5cGU6ZSxuYXRpdmVFdmVudDp0LHRhcmdldEluc3Q6bixhbmNlc3RvcnM6W119O3RyeXtEZSh3bixlKX1maW5hbGx5e2UudG9wTGV2ZWxUeXBlPW51bGwsZS5uYXRpdmVFdmVudD1udWxsLGUudGFyZ2V0SW5zdD1udWxsLGUuYW5jZXN0b3JzLmxlbmd0aD0wLDEwPnhuLmxlbmd0aCYmeG4ucHVzaChlKX19fXZhciBPbj17fSxJbj0wLE5uPVwiX3JlYWN0TGlzdGVuZXJzSURcIisoXCJcIitNYXRoLnJhbmRvbSgpKS5zbGljZSgyKTtmdW5jdGlvbiBSbihlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsTm4pfHwoZVtObl09SW4rKyxPbltlW05uXV09e30pLE9uW2VbTm5dXX1mdW5jdGlvbiBQbihlKXtpZih2b2lkIDA9PT0oZT1lfHwoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCkpKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZS5hY3RpdmVFbGVtZW50fHxlLmJvZHl9Y2F0Y2godCl7cmV0dXJuIGUuYm9keX19ZnVuY3Rpb24gTW4oZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIExuKGUsdCl7dmFyIG4scj1NbihlKTtmb3IoZT0wO3I7KXtpZigzPT09ci5ub2RlVHlwZSl7aWYobj1lK3IudGV4dENvbnRlbnQubGVuZ3RoLGU8PXQmJm4+PXQpcmV0dXJue25vZGU6cixvZmZzZXQ6dC1lfTtlPW59ZTp7Zm9yKDtyOyl7aWYoci5uZXh0U2libGluZyl7cj1yLm5leHRTaWJsaW5nO2JyZWFrIGV9cj1yLnBhcmVudE5vZGV9cj12b2lkIDB9cj1NbihyKX19ZnVuY3Rpb24gRG4oKXtmb3IodmFyIGU9d2luZG93LHQ9UG4oKTt0IGluc3RhbmNlb2YgZS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXtlPXQuY29udGVudERvY3VtZW50LmRlZmF1bHRWaWV3fWNhdGNoKGUpe2JyZWFrfXQ9UG4oZS5kb2N1bWVudCl9cmV0dXJuIHR9ZnVuY3Rpb24gRm4oZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiB0JiYoXCJpbnB1dFwiPT09dCYmKFwidGV4dFwiPT09ZS50eXBlfHxcInNlYXJjaFwiPT09ZS50eXBlfHxcInRlbFwiPT09ZS50eXBlfHxcInVybFwiPT09ZS50eXBlfHxcInBhc3N3b3JkXCI9PT1lLnR5cGUpfHxcInRleHRhcmVhXCI9PT10fHxcInRydWVcIj09PWUuY29udGVudEVkaXRhYmxlKX1mdW5jdGlvbiBCbihlKXt2YXIgdD1EbigpLG49ZS5mb2N1c2VkRWxlbSxyPWUuc2VsZWN0aW9uUmFuZ2U7aWYodCE9PW4mJm4mJm4ub3duZXJEb2N1bWVudCYmZnVuY3Rpb24gZSh0LG4pe3JldHVybiEoIXR8fCFuKSYmKHQ9PT1ufHwoIXR8fDMhPT10Lm5vZGVUeXBlKSYmKG4mJjM9PT1uLm5vZGVUeXBlP2UodCxuLnBhcmVudE5vZGUpOlwiY29udGFpbnNcImluIHQ/dC5jb250YWlucyhuKTohIXQuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJiEhKDE2JnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24obikpKSl9KG4ub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbikpe2lmKG51bGwhPT1yJiZGbihuKSlpZih0PXIuc3RhcnQsdm9pZCAwPT09KGU9ci5lbmQpJiYoZT10KSxcInNlbGVjdGlvblN0YXJ0XCJpbiBuKW4uc2VsZWN0aW9uU3RhcnQ9dCxuLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihlLG4udmFsdWUubGVuZ3RoKTtlbHNlIGlmKChlPSh0PW4ub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZ0LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbil7ZT1lLmdldFNlbGVjdGlvbigpO3ZhciBvPW4udGV4dENvbnRlbnQubGVuZ3RoLGE9TWF0aC5taW4oci5zdGFydCxvKTtyPXZvaWQgMD09PXIuZW5kP2E6TWF0aC5taW4oci5lbmQsbyksIWUuZXh0ZW5kJiZhPnImJihvPXIscj1hLGE9byksbz1MbihuLGEpO3ZhciBpPUxuKG4scik7byYmaSYmKDEhPT1lLnJhbmdlQ291bnR8fGUuYW5jaG9yTm9kZSE9PW8ubm9kZXx8ZS5hbmNob3JPZmZzZXQhPT1vLm9mZnNldHx8ZS5mb2N1c05vZGUhPT1pLm5vZGV8fGUuZm9jdXNPZmZzZXQhPT1pLm9mZnNldCkmJigodD10LmNyZWF0ZVJhbmdlKCkpLnNldFN0YXJ0KG8ubm9kZSxvLm9mZnNldCksZS5yZW1vdmVBbGxSYW5nZXMoKSxhPnI/KGUuYWRkUmFuZ2UodCksZS5leHRlbmQoaS5ub2RlLGkub2Zmc2V0KSk6KHQuc2V0RW5kKGkubm9kZSxpLm9mZnNldCksZS5hZGRSYW5nZSh0KSkpfWZvcih0PVtdLGU9bjtlPWUucGFyZW50Tm9kZTspMT09PWUubm9kZVR5cGUmJnQucHVzaCh7ZWxlbWVudDplLGxlZnQ6ZS5zY3JvbGxMZWZ0LHRvcDplLnNjcm9sbFRvcH0pO2ZvcihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLmZvY3VzJiZuLmZvY3VzKCksbj0wO248dC5sZW5ndGg7bisrKShlPXRbbl0pLmVsZW1lbnQuc2Nyb2xsTGVmdD1lLmxlZnQsZS5lbGVtZW50LnNjcm9sbFRvcD1lLnRvcH19dmFyIGpuPVYmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmMTE+PWRvY3VtZW50LmRvY3VtZW50TW9kZSxVbj17c2VsZWN0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uU2VsZWN0XCIsY2FwdHVyZWQ6XCJvblNlbGVjdENhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOlwiYmx1ciBjb250ZXh0bWVudSBkcmFnZW5kIGZvY3VzIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpfX0sem49bnVsbCxIbj1udWxsLFduPW51bGwsR249ITE7ZnVuY3Rpb24gVm4oZSx0KXt2YXIgbj10LndpbmRvdz09PXQ/dC5kb2N1bWVudDo5PT09dC5ub2RlVHlwZT90OnQub3duZXJEb2N1bWVudDtyZXR1cm4gR258fG51bGw9PXpufHx6biE9PVBuKG4pP251bGw6KFwic2VsZWN0aW9uU3RhcnRcImluKG49em4pJiZGbihuKT9uPXtzdGFydDpuLnNlbGVjdGlvblN0YXJ0LGVuZDpuLnNlbGVjdGlvbkVuZH06bj17YW5jaG9yTm9kZToobj0obi5vd25lckRvY3VtZW50JiZuLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uKCkpLmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0Om4uYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpuLmZvY3VzTm9kZSxmb2N1c09mZnNldDpuLmZvY3VzT2Zmc2V0fSxXbiYmZW4oV24sbik/bnVsbDooV249biwoZT1zZS5nZXRQb29sZWQoVW4uc2VsZWN0LEhuLGUsdCkpLnR5cGU9XCJzZWxlY3RcIixlLnRhcmdldD16bixHKGUpLGUpKX12YXIgJG49e2V2ZW50VHlwZXM6VW4sZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXt2YXIgbyxhPXIud2luZG93PT09cj9yLmRvY3VtZW50Ojk9PT1yLm5vZGVUeXBlP3I6ci5vd25lckRvY3VtZW50O2lmKCEobz0hYSkpe2U6e2E9Um4oYSksbz1TLm9uU2VsZWN0O2Zvcih2YXIgaT0wO2k8by5sZW5ndGg7aSsrKXt2YXIgbD1vW2ldO2lmKCFhLmhhc093blByb3BlcnR5KGwpfHwhYVtsXSl7YT0hMTticmVhayBlfX1hPSEwfW89IWF9aWYobylyZXR1cm4gbnVsbDtzd2l0Y2goYT10P0YodCk6d2luZG93LGUpe2Nhc2VcImZvY3VzXCI6KEJlKGEpfHxcInRydWVcIj09PWEuY29udGVudEVkaXRhYmxlKSYmKHpuPWEsSG49dCxXbj1udWxsKTticmVhaztjYXNlXCJibHVyXCI6V249SG49em49bnVsbDticmVhaztjYXNlXCJtb3VzZWRvd25cIjpHbj0hMDticmVhaztjYXNlXCJjb250ZXh0bWVudVwiOmNhc2VcIm1vdXNldXBcIjpjYXNlXCJkcmFnZW5kXCI6cmV0dXJuIEduPSExLFZuKG4scik7Y2FzZVwic2VsZWN0aW9uY2hhbmdlXCI6aWYoam4pYnJlYWs7Y2FzZVwia2V5ZG93blwiOmNhc2VcImtleXVwXCI6cmV0dXJuIFZuKG4scil9cmV0dXJuIG51bGx9fTtmdW5jdGlvbiBxbihlLHQpe3JldHVybiBlPW8oe2NoaWxkcmVuOnZvaWQgMH0sdCksKHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIjtyZXR1cm4gci5DaGlsZHJlbi5mb3JFYWNoKGUsZnVuY3Rpb24oZSl7bnVsbCE9ZSYmKHQrPWUpfSksdH0odC5jaGlsZHJlbikpJiYoZS5jaGlsZHJlbj10KSxlfWZ1bmN0aW9uIEtuKGUsdCxuLHIpe2lmKGU9ZS5vcHRpb25zLHQpe3Q9e307Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspdFtcIiRcIituW29dXT0hMDtmb3Iobj0wO248ZS5sZW5ndGg7bisrKW89dC5oYXNPd25Qcm9wZXJ0eShcIiRcIitlW25dLnZhbHVlKSxlW25dLnNlbGVjdGVkIT09byYmKGVbbl0uc2VsZWN0ZWQ9byksbyYmciYmKGVbbl0uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2ZvcihuPVwiXCIreXQobiksdD1udWxsLG89MDtvPGUubGVuZ3RoO28rKyl7aWYoZVtvXS52YWx1ZT09PW4pcmV0dXJuIGVbb10uc2VsZWN0ZWQ9ITAsdm9pZChyJiYoZVtvXS5kZWZhdWx0U2VsZWN0ZWQ9ITApKTtudWxsIT09dHx8ZVtvXS5kaXNhYmxlZHx8KHQ9ZVtvXSl9bnVsbCE9PXQmJih0LnNlbGVjdGVkPSEwKX19ZnVuY3Rpb24gWW4oZSx0KXtyZXR1cm4gbnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmaShcIjkxXCIpLG8oe30sdCx7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46XCJcIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSl9ZnVuY3Rpb24gWG4oZSx0KXt2YXIgbj10LnZhbHVlO251bGw9PW4mJihuPXQuZGVmYXVsdFZhbHVlLG51bGwhPSh0PXQuY2hpbGRyZW4pJiYobnVsbCE9biYmaShcIjkyXCIpLEFycmF5LmlzQXJyYXkodCkmJigxPj10Lmxlbmd0aHx8aShcIjkzXCIpLHQ9dFswXSksbj10KSxudWxsPT1uJiYobj1cIlwiKSksZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6eXQobil9fWZ1bmN0aW9uIFpuKGUsdCl7dmFyIG49eXQodC52YWx1ZSkscj15dCh0LmRlZmF1bHRWYWx1ZSk7bnVsbCE9biYmKChuPVwiXCIrbikhPT1lLnZhbHVlJiYoZS52YWx1ZT1uKSxudWxsPT10LmRlZmF1bHRWYWx1ZSYmZS5kZWZhdWx0VmFsdWUhPT1uJiYoZS5kZWZhdWx0VmFsdWU9bikpLG51bGwhPXImJihlLmRlZmF1bHRWYWx1ZT1cIlwiK3IpfWZ1bmN0aW9uIFFuKGUpe3ZhciB0PWUudGV4dENvbnRlbnQ7dD09PWUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUmJihlLnZhbHVlPXQpfU8uaW5qZWN0RXZlbnRQbHVnaW5PcmRlcihcIlJlc3BvbmRlckV2ZW50UGx1Z2luIFNpbXBsZUV2ZW50UGx1Z2luIEVudGVyTGVhdmVFdmVudFBsdWdpbiBDaGFuZ2VFdmVudFBsdWdpbiBTZWxlY3RFdmVudFBsdWdpbiBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luXCIuc3BsaXQoXCIgXCIpKSxFPUIseD1ELHc9RixPLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSh7U2ltcGxlRXZlbnRQbHVnaW46U24sRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOlp0LENoYW5nZUV2ZW50UGx1Z2luOmp0LFNlbGVjdEV2ZW50UGx1Z2luOiRuLEJlZm9yZUlucHV0RXZlbnRQbHVnaW46X2V9KTt2YXIgSm49e2h0bWw6XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIsbWF0aG1sOlwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiLHN2ZzpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9O2Z1bmN0aW9uIGVyKGUpe3N3aXRjaChlKXtjYXNlXCJzdmdcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7Y2FzZVwibWF0aFwiOnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiO2RlZmF1bHQ6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJ9fWZ1bmN0aW9uIHRyKGUsdCl7cmV0dXJuIG51bGw9PWV8fFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09ZT9lcih0KTpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI9PT1lJiZcImZvcmVpZ25PYmplY3RcIj09PXQ/XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI6ZX12YXIgbnIscnI9dm9pZCAwLG9yPShucj1mdW5jdGlvbihlLHQpe2lmKGUubmFtZXNwYWNlVVJJIT09Sm4uc3ZnfHxcImlubmVySFRNTFwiaW4gZSllLmlubmVySFRNTD10O2Vsc2V7Zm9yKChycj1ycnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuaW5uZXJIVE1MPVwiPHN2Zz5cIit0K1wiPC9zdmc+XCIsdD1yci5maXJzdENoaWxkO2UuZmlyc3RDaGlsZDspZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpO2Zvcig7dC5maXJzdENoaWxkOyllLmFwcGVuZENoaWxkKHQuZmlyc3RDaGlsZCl9fSxcInVuZGVmaW5lZFwiIT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKGUsdCxuLHIpe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIG5yKGUsdCl9KX06bnIpO2Z1bmN0aW9uIGFyKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0Q29udGVudD10fXZhciBpcj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0sbHI9W1wiV2Via2l0XCIsXCJtc1wiLFwiTW96XCIsXCJPXCJdO2Z1bmN0aW9uIHNyKGUsdCxuKXtyZXR1cm4gbnVsbD09dHx8XCJib29sZWFuXCI9PXR5cGVvZiB0fHxcIlwiPT09dD9cIlwiOm58fFwibnVtYmVyXCIhPXR5cGVvZiB0fHwwPT09dHx8aXIuaGFzT3duUHJvcGVydHkoZSkmJmlyW2VdPyhcIlwiK3QpLnRyaW0oKTp0K1wicHhcIn1mdW5jdGlvbiB1cihlLHQpe2Zvcih2YXIgbiBpbiBlPWUuc3R5bGUsdClpZih0Lmhhc093blByb3BlcnR5KG4pKXt2YXIgcj0wPT09bi5pbmRleE9mKFwiLS1cIiksbz1zcihuLHRbbl0scik7XCJmbG9hdFwiPT09biYmKG49XCJjc3NGbG9hdFwiKSxyP2Uuc2V0UHJvcGVydHkobixvKTplW25dPW99fU9iamVjdC5rZXlzKGlyKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2xyLmZvckVhY2goZnVuY3Rpb24odCl7dD10K2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zdWJzdHJpbmcoMSksaXJbdF09aXJbZV19KX0pO3ZhciBjcj1vKHttZW51aXRlbTohMH0se2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0pO2Z1bmN0aW9uIGRyKGUsdCl7dCYmKGNyW2VdJiYobnVsbCE9dC5jaGlsZHJlbnx8bnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCkmJmkoXCIxMzdcIixlLFwiXCIpLG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJihudWxsIT10LmNoaWxkcmVuJiZpKFwiNjBcIiksXCJvYmplY3RcIj09dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJlwiX19odG1sXCJpbiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MfHxpKFwiNjFcIikpLG51bGwhPXQuc3R5bGUmJlwib2JqZWN0XCIhPXR5cGVvZiB0LnN0eWxlJiZpKFwiNjJcIixcIlwiKSl9ZnVuY3Rpb24gcHIoZSx0KXtpZigtMT09PWUuaW5kZXhPZihcIi1cIikpcmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQuaXM7c3dpdGNoKGUpe2Nhc2VcImFubm90YXRpb24teG1sXCI6Y2FzZVwiY29sb3ItcHJvZmlsZVwiOmNhc2VcImZvbnQtZmFjZVwiOmNhc2VcImZvbnQtZmFjZS1zcmNcIjpjYXNlXCJmb250LWZhY2UtdXJpXCI6Y2FzZVwiZm9udC1mYWNlLWZvcm1hdFwiOmNhc2VcImZvbnQtZmFjZS1uYW1lXCI6Y2FzZVwibWlzc2luZy1nbHlwaFwiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fWZ1bmN0aW9uIGZyKGUsdCl7dmFyIG49Um4oZT05PT09ZS5ub2RlVHlwZXx8MTE9PT1lLm5vZGVUeXBlP2U6ZS5vd25lckRvY3VtZW50KTt0PVNbdF07Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07aWYoIW4uaGFzT3duUHJvcGVydHkobyl8fCFuW29dKXtzd2l0Y2gobyl7Y2FzZVwic2Nyb2xsXCI6VG4oXCJzY3JvbGxcIixlKTticmVhaztjYXNlXCJmb2N1c1wiOmNhc2VcImJsdXJcIjpUbihcImZvY3VzXCIsZSksVG4oXCJibHVyXCIsZSksbi5ibHVyPSEwLG4uZm9jdXM9ITA7YnJlYWs7Y2FzZVwiY2FuY2VsXCI6Y2FzZVwiY2xvc2VcIjpVZShvKSYmVG4obyxlKTticmVhaztjYXNlXCJpbnZhbGlkXCI6Y2FzZVwic3VibWl0XCI6Y2FzZVwicmVzZXRcIjpicmVhaztkZWZhdWx0Oi0xPT09dGUuaW5kZXhPZihvKSYmX24obyxlKX1uW29dPSEwfX19ZnVuY3Rpb24gbXIoKXt9dmFyIGdyPW51bGwsaHI9bnVsbDtmdW5jdGlvbiBicihlLHQpe3N3aXRjaChlKXtjYXNlXCJidXR0b25cIjpjYXNlXCJpbnB1dFwiOmNhc2VcInNlbGVjdFwiOmNhc2VcInRleHRhcmVhXCI6cmV0dXJuISF0LmF1dG9Gb2N1c31yZXR1cm4hMX1mdW5jdGlvbiB5cihlLHQpe3JldHVyblwidGV4dGFyZWFcIj09PWV8fFwib3B0aW9uXCI9PT1lfHxcIm5vc2NyaXB0XCI9PT1lfHxcInN0cmluZ1wiPT10eXBlb2YgdC5jaGlsZHJlbnx8XCJudW1iZXJcIj09dHlwZW9mIHQuY2hpbGRyZW58fFwib2JqZWN0XCI9PXR5cGVvZiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT09dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWx9dmFyIHZyPVwiZnVuY3Rpb25cIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDp2b2lkIDAsU3I9XCJmdW5jdGlvblwiPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDp2b2lkIDAsRXI9YS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLHhyPWEudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2s7ZnVuY3Rpb24gd3IoZSl7Zm9yKGU9ZS5uZXh0U2libGluZztlJiYxIT09ZS5ub2RlVHlwZSYmMyE9PWUubm9kZVR5cGU7KWU9ZS5uZXh0U2libGluZztyZXR1cm4gZX1mdW5jdGlvbiBrcihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZSYmMSE9PWUubm9kZVR5cGUmJjMhPT1lLm5vZGVUeXBlOyllPWUubmV4dFNpYmxpbmc7cmV0dXJuIGV9bmV3IFNldDt2YXIgX3I9W10sVHI9LTE7ZnVuY3Rpb24gQXIoZSl7MD5Ucnx8KGUuY3VycmVudD1fcltUcl0sX3JbVHJdPW51bGwsVHItLSl9ZnVuY3Rpb24gQ3IoZSx0KXtfclsrK1RyXT1lLmN1cnJlbnQsZS5jdXJyZW50PXR9dmFyIE9yPXt9LElyPXtjdXJyZW50Ok9yfSxOcj17Y3VycmVudDohMX0sUnI9T3I7ZnVuY3Rpb24gUHIoZSx0KXt2YXIgbj1lLnR5cGUuY29udGV4dFR5cGVzO2lmKCFuKXJldHVybiBPcjt2YXIgcj1lLnN0YXRlTm9kZTtpZihyJiZyLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9PT10KXJldHVybiByLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0O3ZhciBvLGE9e307Zm9yKG8gaW4gbilhW29dPXRbb107cmV0dXJuIHImJigoZT1lLnN0YXRlTm9kZSkuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD10LGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9YSksYX1mdW5jdGlvbiBNcihlKXtyZXR1cm4gbnVsbCE9KGU9ZS5jaGlsZENvbnRleHRUeXBlcyl9ZnVuY3Rpb24gTHIoZSl7QXIoTnIpLEFyKElyKX1mdW5jdGlvbiBEcihlKXtBcihOciksQXIoSXIpfWZ1bmN0aW9uIEZyKGUsdCxuKXtJci5jdXJyZW50IT09T3ImJmkoXCIxNjhcIiksQ3IoSXIsdCksQ3IoTnIsbil9ZnVuY3Rpb24gQnIoZSx0LG4pe3ZhciByPWUuc3RhdGVOb2RlO2lmKGU9dC5jaGlsZENvbnRleHRUeXBlcyxcImZ1bmN0aW9uXCIhPXR5cGVvZiByLmdldENoaWxkQ29udGV4dClyZXR1cm4gbjtmb3IodmFyIGEgaW4gcj1yLmdldENoaWxkQ29udGV4dCgpKWEgaW4gZXx8aShcIjEwOFwiLGx0KHQpfHxcIlVua25vd25cIixhKTtyZXR1cm4gbyh7fSxuLHIpfWZ1bmN0aW9uIGpyKGUpe3ZhciB0PWUuc3RhdGVOb2RlO3JldHVybiB0PXQmJnQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHR8fE9yLFJyPUlyLmN1cnJlbnQsQ3IoSXIsdCksQ3IoTnIsTnIuY3VycmVudCksITB9ZnVuY3Rpb24gVXIoZSx0LG4pe3ZhciByPWUuc3RhdGVOb2RlO3J8fGkoXCIxNjlcIiksbj8odD1CcihlLHQsUnIpLHIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ9dCxBcihOciksQXIoSXIpLENyKElyLHQpKTpBcihOciksQ3IoTnIsbil9dmFyIHpyPW51bGwsSHI9bnVsbDtmdW5jdGlvbiBXcihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dHJ5e3JldHVybiBlKHQpfWNhdGNoKGUpe319fWZ1bmN0aW9uIEdyKGUsdCxuLHIpe3RoaXMudGFnPWUsdGhpcy5rZXk9bix0aGlzLnNpYmxpbmc9dGhpcy5jaGlsZD10aGlzLnJldHVybj10aGlzLnN0YXRlTm9kZT10aGlzLnR5cGU9dGhpcy5lbGVtZW50VHlwZT1udWxsLHRoaXMuaW5kZXg9MCx0aGlzLnJlZj1udWxsLHRoaXMucGVuZGluZ1Byb3BzPXQsdGhpcy5jb250ZXh0RGVwZW5kZW5jaWVzPXRoaXMubWVtb2l6ZWRTdGF0ZT10aGlzLnVwZGF0ZVF1ZXVlPXRoaXMubWVtb2l6ZWRQcm9wcz1udWxsLHRoaXMubW9kZT1yLHRoaXMuZWZmZWN0VGFnPTAsdGhpcy5sYXN0RWZmZWN0PXRoaXMuZmlyc3RFZmZlY3Q9dGhpcy5uZXh0RWZmZWN0PW51bGwsdGhpcy5jaGlsZEV4cGlyYXRpb25UaW1lPXRoaXMuZXhwaXJhdGlvblRpbWU9MCx0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIFZyKGUsdCxuLHIpe3JldHVybiBuZXcgR3IoZSx0LG4scil9ZnVuY3Rpb24gJHIoZSl7cmV0dXJuISghKGU9ZS5wcm90b3R5cGUpfHwhZS5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBxcihlLHQpe3ZhciBuPWUuYWx0ZXJuYXRlO3JldHVybiBudWxsPT09bj8oKG49VnIoZS50YWcsdCxlLmtleSxlLm1vZGUpKS5lbGVtZW50VHlwZT1lLmVsZW1lbnRUeXBlLG4udHlwZT1lLnR5cGUsbi5zdGF0ZU5vZGU9ZS5zdGF0ZU5vZGUsbi5hbHRlcm5hdGU9ZSxlLmFsdGVybmF0ZT1uKToobi5wZW5kaW5nUHJvcHM9dCxuLmVmZmVjdFRhZz0wLG4ubmV4dEVmZmVjdD1udWxsLG4uZmlyc3RFZmZlY3Q9bnVsbCxuLmxhc3RFZmZlY3Q9bnVsbCksbi5jaGlsZEV4cGlyYXRpb25UaW1lPWUuY2hpbGRFeHBpcmF0aW9uVGltZSxuLmV4cGlyYXRpb25UaW1lPWUuZXhwaXJhdGlvblRpbWUsbi5jaGlsZD1lLmNoaWxkLG4ubWVtb2l6ZWRQcm9wcz1lLm1lbW9pemVkUHJvcHMsbi5tZW1vaXplZFN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxuLnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsbi5jb250ZXh0RGVwZW5kZW5jaWVzPWUuY29udGV4dERlcGVuZGVuY2llcyxuLnNpYmxpbmc9ZS5zaWJsaW5nLG4uaW5kZXg9ZS5pbmRleCxuLnJlZj1lLnJlZixufWZ1bmN0aW9uIEtyKGUsdCxuLHIsbyxhKXt2YXIgbD0yO2lmKHI9ZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKSRyKGUpJiYobD0xKTtlbHNlIGlmKFwic3RyaW5nXCI9PXR5cGVvZiBlKWw9NTtlbHNlIGU6c3dpdGNoKGUpe2Nhc2UgWWU6cmV0dXJuIFlyKG4uY2hpbGRyZW4sbyxhLHQpO2Nhc2UgZXQ6cmV0dXJuIFhyKG4sM3xvLGEsdCk7Y2FzZSBYZTpyZXR1cm4gWHIobiwyfG8sYSx0KTtjYXNlIFplOnJldHVybihlPVZyKDEyLG4sdCw0fG8pKS5lbGVtZW50VHlwZT1aZSxlLnR5cGU9WmUsZS5leHBpcmF0aW9uVGltZT1hLGU7Y2FzZSBudDpyZXR1cm4oZT1WcigxMyxuLHQsbykpLmVsZW1lbnRUeXBlPW50LGUudHlwZT1udCxlLmV4cGlyYXRpb25UaW1lPWEsZTtkZWZhdWx0OmlmKFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSlzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBRZTpsPTEwO2JyZWFrIGU7Y2FzZSBKZTpsPTk7YnJlYWsgZTtjYXNlIHR0Omw9MTE7YnJlYWsgZTtjYXNlIHJ0Omw9MTQ7YnJlYWsgZTtjYXNlIG90Omw9MTYscj1udWxsO2JyZWFrIGV9aShcIjEzMFwiLG51bGw9PWU/ZTp0eXBlb2YgZSxcIlwiKX1yZXR1cm4odD1WcihsLG4sdCxvKSkuZWxlbWVudFR5cGU9ZSx0LnR5cGU9cix0LmV4cGlyYXRpb25UaW1lPWEsdH1mdW5jdGlvbiBZcihlLHQsbixyKXtyZXR1cm4oZT1Wcig3LGUscix0KSkuZXhwaXJhdGlvblRpbWU9bixlfWZ1bmN0aW9uIFhyKGUsdCxuLHIpe3JldHVybiBlPVZyKDgsZSxyLHQpLHQ9MD09KDEmdCk/WGU6ZXQsZS5lbGVtZW50VHlwZT10LGUudHlwZT10LGUuZXhwaXJhdGlvblRpbWU9bixlfWZ1bmN0aW9uIFpyKGUsdCxuKXtyZXR1cm4oZT1Wcig2LGUsbnVsbCx0KSkuZXhwaXJhdGlvblRpbWU9bixlfWZ1bmN0aW9uIFFyKGUsdCxuKXtyZXR1cm4odD1Wcig0LG51bGwhPT1lLmNoaWxkcmVuP2UuY2hpbGRyZW46W10sZS5rZXksdCkpLmV4cGlyYXRpb25UaW1lPW4sdC5zdGF0ZU5vZGU9e2NvbnRhaW5lckluZm86ZS5jb250YWluZXJJbmZvLHBlbmRpbmdDaGlsZHJlbjpudWxsLGltcGxlbWVudGF0aW9uOmUuaW1wbGVtZW50YXRpb259LHR9ZnVuY3Rpb24gSnIoZSx0KXtlLmRpZEVycm9yPSExO3ZhciBuPWUuZWFybGllc3RQZW5kaW5nVGltZTswPT09bj9lLmVhcmxpZXN0UGVuZGluZ1RpbWU9ZS5sYXRlc3RQZW5kaW5nVGltZT10Om48dD9lLmVhcmxpZXN0UGVuZGluZ1RpbWU9dDplLmxhdGVzdFBlbmRpbmdUaW1lPnQmJihlLmxhdGVzdFBlbmRpbmdUaW1lPXQpLG5vKHQsZSl9ZnVuY3Rpb24gZW8oZSx0KXtlLmRpZEVycm9yPSExLGUubGF0ZXN0UGluZ2VkVGltZT49dCYmKGUubGF0ZXN0UGluZ2VkVGltZT0wKTt2YXIgbj1lLmVhcmxpZXN0UGVuZGluZ1RpbWUscj1lLmxhdGVzdFBlbmRpbmdUaW1lO249PT10P2UuZWFybGllc3RQZW5kaW5nVGltZT1yPT09dD9lLmxhdGVzdFBlbmRpbmdUaW1lPTA6cjpyPT09dCYmKGUubGF0ZXN0UGVuZGluZ1RpbWU9biksbj1lLmVhcmxpZXN0U3VzcGVuZGVkVGltZSxyPWUubGF0ZXN0U3VzcGVuZGVkVGltZSwwPT09bj9lLmVhcmxpZXN0U3VzcGVuZGVkVGltZT1lLmxhdGVzdFN1c3BlbmRlZFRpbWU9dDpuPHQ/ZS5lYXJsaWVzdFN1c3BlbmRlZFRpbWU9dDpyPnQmJihlLmxhdGVzdFN1c3BlbmRlZFRpbWU9dCksbm8odCxlKX1mdW5jdGlvbiB0byhlLHQpe3ZhciBuPWUuZWFybGllc3RQZW5kaW5nVGltZTtyZXR1cm4gbj50JiYodD1uKSwoZT1lLmVhcmxpZXN0U3VzcGVuZGVkVGltZSk+dCYmKHQ9ZSksdH1mdW5jdGlvbiBubyhlLHQpe3ZhciBuPXQuZWFybGllc3RTdXNwZW5kZWRUaW1lLHI9dC5sYXRlc3RTdXNwZW5kZWRUaW1lLG89dC5lYXJsaWVzdFBlbmRpbmdUaW1lLGE9dC5sYXRlc3RQaW5nZWRUaW1lOzA9PT0obz0wIT09bz9vOmEpJiYoMD09PWV8fHI8ZSkmJihvPXIpLDAhPT0oZT1vKSYmbj5lJiYoZT1uKSx0Lm5leHRFeHBpcmF0aW9uVGltZVRvV29ya09uPW8sdC5leHBpcmF0aW9uVGltZT1lfWZ1bmN0aW9uIHJvKGUsdCl7aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHZhciBuIGluIHQ9byh7fSx0KSxlPWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PXRbbl0mJih0W25dPWVbbl0pO3JldHVybiB0fXZhciBvbz0obmV3IHIuQ29tcG9uZW50KS5yZWZzO2Z1bmN0aW9uIGFvKGUsdCxuLHIpe249bnVsbD09KG49bihyLHQ9ZS5tZW1vaXplZFN0YXRlKSk/dDpvKHt9LHQsbiksZS5tZW1vaXplZFN0YXRlPW4sbnVsbCE9PShyPWUudXBkYXRlUXVldWUpJiYwPT09ZS5leHBpcmF0aW9uVGltZSYmKHIuYmFzZVN0YXRlPW4pfXZhciBpbz17aXNNb3VudGVkOmZ1bmN0aW9uKGUpe3JldHVybiEhKGU9ZS5fcmVhY3RJbnRlcm5hbEZpYmVyKSYmMj09PXRuKGUpfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oZSx0LG4pe2U9ZS5fcmVhY3RJbnRlcm5hbEZpYmVyO3ZhciByPXhsKCksbz1YYShyPVlpKHIsZSkpO28ucGF5bG9hZD10LG51bGwhPW4mJihvLmNhbGxiYWNrPW4pLFdpKCksUWEoZSxvKSxRaShlLHIpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCxuKXtlPWUuX3JlYWN0SW50ZXJuYWxGaWJlcjt2YXIgcj14bCgpLG89WGEocj1ZaShyLGUpKTtvLnRhZz1HYSxvLnBheWxvYWQ9dCxudWxsIT1uJiYoby5jYWxsYmFjaz1uKSxXaSgpLFFhKGUsbyksUWkoZSxyKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUsdCl7ZT1lLl9yZWFjdEludGVybmFsRmliZXI7dmFyIG49eGwoKSxyPVhhKG49WWkobixlKSk7ci50YWc9VmEsbnVsbCE9dCYmKHIuY2FsbGJhY2s9dCksV2koKSxRYShlLHIpLFFpKGUsbil9fTtmdW5jdGlvbiBsbyhlLHQsbixyLG8sYSxpKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZihlPWUuc3RhdGVOb2RlKS5zaG91bGRDb21wb25lbnRVcGRhdGU/ZS5zaG91bGRDb21wb25lbnRVcGRhdGUocixhLGkpOiF0LnByb3RvdHlwZXx8IXQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50fHwoIWVuKG4scil8fCFlbihvLGEpKX1mdW5jdGlvbiBzbyhlLHQsbil7dmFyIHI9ITEsbz1PcixhPXQuY29udGV4dFR5cGU7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGEmJm51bGwhPT1hP2E9SGEoYSk6KG89TXIodCk/UnI6SXIuY3VycmVudCxhPShyPW51bGwhPShyPXQuY29udGV4dFR5cGVzKSk/UHIoZSxvKTpPciksdD1uZXcgdChuLGEpLGUubWVtb2l6ZWRTdGF0ZT1udWxsIT09dC5zdGF0ZSYmdm9pZCAwIT09dC5zdGF0ZT90LnN0YXRlOm51bGwsdC51cGRhdGVyPWlvLGUuc3RhdGVOb2RlPXQsdC5fcmVhY3RJbnRlcm5hbEZpYmVyPWUsciYmKChlPWUuc3RhdGVOb2RlKS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PW8sZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1hKSx0fWZ1bmN0aW9uIHVvKGUsdCxuLHIpe2U9dC5zdGF0ZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJnQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuLHIpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJnQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobixyKSx0LnN0YXRlIT09ZSYmaW8uZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0LHQuc3RhdGUsbnVsbCl9ZnVuY3Rpb24gY28oZSx0LG4scil7dmFyIG89ZS5zdGF0ZU5vZGU7by5wcm9wcz1uLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlLG8ucmVmcz1vbzt2YXIgYT10LmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PXR5cGVvZiBhJiZudWxsIT09YT9vLmNvbnRleHQ9SGEoYSk6KGE9TXIodCk/UnI6SXIuY3VycmVudCxvLmNvbnRleHQ9UHIoZSxhKSksbnVsbCE9PShhPWUudXBkYXRlUXVldWUpJiYobmkoZSxhLG4sbyxyKSxvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSksXCJmdW5jdGlvblwiPT10eXBlb2YoYT10LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcykmJihhbyhlLHQsYSxuKSxvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHN8fFwiZnVuY3Rpb25cIj09dHlwZW9mIG8uZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIG8uVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT10eXBlb2Ygby5jb21wb25lbnRXaWxsTW91bnR8fCh0PW8uc3RhdGUsXCJmdW5jdGlvblwiPT10eXBlb2Ygby5jb21wb25lbnRXaWxsTW91bnQmJm8uY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT10eXBlb2Ygby5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZvLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSx0IT09by5zdGF0ZSYmaW8uZW5xdWV1ZVJlcGxhY2VTdGF0ZShvLG8uc3RhdGUsbnVsbCksbnVsbCE9PShhPWUudXBkYXRlUXVldWUpJiYobmkoZSxhLG4sbyxyKSxvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIG8uY29tcG9uZW50RGlkTW91bnQmJihlLmVmZmVjdFRhZ3w9NCl9dmFyIHBvPUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gZm8oZSx0LG4pe2lmKG51bGwhPT0oZT1uLnJlZikmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJlwib2JqZWN0XCIhPXR5cGVvZiBlKXtpZihuLl9vd25lcil7bj1uLl9vd25lcjt2YXIgcj12b2lkIDA7biYmKDEhPT1uLnRhZyYmaShcIjMwOVwiKSxyPW4uc3RhdGVOb2RlKSxyfHxpKFwiMTQ3XCIsZSk7dmFyIG89XCJcIitlO3JldHVybiBudWxsIT09dCYmbnVsbCE9PXQucmVmJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnJlZiYmdC5yZWYuX3N0cmluZ1JlZj09PW8/dC5yZWY6KCh0PWZ1bmN0aW9uKGUpe3ZhciB0PXIucmVmczt0PT09b28mJih0PXIucmVmcz17fSksbnVsbD09PWU/ZGVsZXRlIHRbb106dFtvXT1lfSkuX3N0cmluZ1JlZj1vLHQpfVwic3RyaW5nXCIhPXR5cGVvZiBlJiZpKFwiMjg0XCIpLG4uX293bmVyfHxpKFwiMjkwXCIsZSl9cmV0dXJuIGV9ZnVuY3Rpb24gbW8oZSx0KXtcInRleHRhcmVhXCIhPT1lLnR5cGUmJmkoXCIzMVwiLFwiW29iamVjdCBPYmplY3RdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyh0KS5qb2luKFwiLCBcIikrXCJ9XCI6dCxcIlwiKX1mdW5jdGlvbiBnbyhlKXtmdW5jdGlvbiB0KHQsbil7aWYoZSl7dmFyIHI9dC5sYXN0RWZmZWN0O251bGwhPT1yPyhyLm5leHRFZmZlY3Q9bix0Lmxhc3RFZmZlY3Q9bik6dC5maXJzdEVmZmVjdD10Lmxhc3RFZmZlY3Q9bixuLm5leHRFZmZlY3Q9bnVsbCxuLmVmZmVjdFRhZz04fX1mdW5jdGlvbiBuKG4scil7aWYoIWUpcmV0dXJuIG51bGw7Zm9yKDtudWxsIT09cjspdChuLHIpLHI9ci5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIHIoZSx0KXtmb3IoZT1uZXcgTWFwO251bGwhPT10OyludWxsIT09dC5rZXk/ZS5zZXQodC5rZXksdCk6ZS5zZXQodC5pbmRleCx0KSx0PXQuc2libGluZztyZXR1cm4gZX1mdW5jdGlvbiBvKGUsdCxuKXtyZXR1cm4oZT1xcihlLHQpKS5pbmRleD0wLGUuc2libGluZz1udWxsLGV9ZnVuY3Rpb24gYSh0LG4scil7cmV0dXJuIHQuaW5kZXg9cixlP251bGwhPT0ocj10LmFsdGVybmF0ZSk/KHI9ci5pbmRleCk8bj8odC5lZmZlY3RUYWc9MixuKTpyOih0LmVmZmVjdFRhZz0yLG4pOm59ZnVuY3Rpb24gbCh0KXtyZXR1cm4gZSYmbnVsbD09PXQuYWx0ZXJuYXRlJiYodC5lZmZlY3RUYWc9MiksdH1mdW5jdGlvbiBzKGUsdCxuLHIpe3JldHVybiBudWxsPT09dHx8NiE9PXQudGFnPygodD1acihuLGUubW9kZSxyKSkucmV0dXJuPWUsdCk6KCh0PW8odCxuKSkucmV0dXJuPWUsdCl9ZnVuY3Rpb24gdShlLHQsbixyKXtyZXR1cm4gbnVsbCE9PXQmJnQuZWxlbWVudFR5cGU9PT1uLnR5cGU/KChyPW8odCxuLnByb3BzKSkucmVmPWZvKGUsdCxuKSxyLnJldHVybj1lLHIpOigocj1LcihuLnR5cGUsbi5rZXksbi5wcm9wcyxudWxsLGUubW9kZSxyKSkucmVmPWZvKGUsdCxuKSxyLnJldHVybj1lLHIpfWZ1bmN0aW9uIGMoZSx0LG4scil7cmV0dXJuIG51bGw9PT10fHw0IT09dC50YWd8fHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8hPT1uLmNvbnRhaW5lckluZm98fHQuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uIT09bi5pbXBsZW1lbnRhdGlvbj8oKHQ9UXIobixlLm1vZGUscikpLnJldHVybj1lLHQpOigodD1vKHQsbi5jaGlsZHJlbnx8W10pKS5yZXR1cm49ZSx0KX1mdW5jdGlvbiBkKGUsdCxuLHIsYSl7cmV0dXJuIG51bGw9PT10fHw3IT09dC50YWc/KCh0PVlyKG4sZS5tb2RlLHIsYSkpLnJldHVybj1lLHQpOigodD1vKHQsbikpLnJldHVybj1lLHQpfWZ1bmN0aW9uIHAoZSx0LG4pe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0fHxcIm51bWJlclwiPT10eXBlb2YgdClyZXR1cm4odD1acihcIlwiK3QsZS5tb2RlLG4pKS5yZXR1cm49ZSx0O2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0JiZudWxsIT09dCl7c3dpdGNoKHQuJCR0eXBlb2Ype2Nhc2UgcWU6cmV0dXJuKG49S3IodC50eXBlLHQua2V5LHQucHJvcHMsbnVsbCxlLm1vZGUsbikpLnJlZj1mbyhlLG51bGwsdCksbi5yZXR1cm49ZSxuO2Nhc2UgS2U6cmV0dXJuKHQ9UXIodCxlLm1vZGUsbikpLnJldHVybj1lLHR9aWYocG8odCl8fGl0KHQpKXJldHVybih0PVlyKHQsZS5tb2RlLG4sbnVsbCkpLnJldHVybj1lLHQ7bW8oZSx0KX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBmKGUsdCxuLHIpe3ZhciBvPW51bGwhPT10P3Qua2V5Om51bGw7aWYoXCJzdHJpbmdcIj09dHlwZW9mIG58fFwibnVtYmVyXCI9PXR5cGVvZiBuKXJldHVybiBudWxsIT09bz9udWxsOnMoZSx0LFwiXCIrbixyKTtpZihcIm9iamVjdFwiPT10eXBlb2YgbiYmbnVsbCE9PW4pe3N3aXRjaChuLiQkdHlwZW9mKXtjYXNlIHFlOnJldHVybiBuLmtleT09PW8/bi50eXBlPT09WWU/ZChlLHQsbi5wcm9wcy5jaGlsZHJlbixyLG8pOnUoZSx0LG4scik6bnVsbDtjYXNlIEtlOnJldHVybiBuLmtleT09PW8/YyhlLHQsbixyKTpudWxsfWlmKHBvKG4pfHxpdChuKSlyZXR1cm4gbnVsbCE9PW8/bnVsbDpkKGUsdCxuLHIsbnVsbCk7bW8oZSxuKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBtKGUsdCxuLHIsbyl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHJ8fFwibnVtYmVyXCI9PXR5cGVvZiByKXJldHVybiBzKHQsZT1lLmdldChuKXx8bnVsbCxcIlwiK3Isbyk7aWYoXCJvYmplY3RcIj09dHlwZW9mIHImJm51bGwhPT1yKXtzd2l0Y2goci4kJHR5cGVvZil7Y2FzZSBxZTpyZXR1cm4gZT1lLmdldChudWxsPT09ci5rZXk/bjpyLmtleSl8fG51bGwsci50eXBlPT09WWU/ZCh0LGUsci5wcm9wcy5jaGlsZHJlbixvLHIua2V5KTp1KHQsZSxyLG8pO2Nhc2UgS2U6cmV0dXJuIGModCxlPWUuZ2V0KG51bGw9PT1yLmtleT9uOnIua2V5KXx8bnVsbCxyLG8pfWlmKHBvKHIpfHxpdChyKSlyZXR1cm4gZCh0LGU9ZS5nZXQobil8fG51bGwscixvLG51bGwpO21vKHQscil9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZyhvLGksbCxzKXtmb3IodmFyIHU9bnVsbCxjPW51bGwsZD1pLGc9aT0wLGg9bnVsbDtudWxsIT09ZCYmZzxsLmxlbmd0aDtnKyspe2QuaW5kZXg+Zz8oaD1kLGQ9bnVsbCk6aD1kLnNpYmxpbmc7dmFyIGI9ZihvLGQsbFtnXSxzKTtpZihudWxsPT09Yil7bnVsbD09PWQmJihkPWgpO2JyZWFrfWUmJmQmJm51bGw9PT1iLmFsdGVybmF0ZSYmdChvLGQpLGk9YShiLGksZyksbnVsbD09PWM/dT1iOmMuc2libGluZz1iLGM9YixkPWh9aWYoZz09PWwubGVuZ3RoKXJldHVybiBuKG8sZCksdTtpZihudWxsPT09ZCl7Zm9yKDtnPGwubGVuZ3RoO2crKykoZD1wKG8sbFtnXSxzKSkmJihpPWEoZCxpLGcpLG51bGw9PT1jP3U9ZDpjLnNpYmxpbmc9ZCxjPWQpO3JldHVybiB1fWZvcihkPXIobyxkKTtnPGwubGVuZ3RoO2crKykoaD1tKGQsbyxnLGxbZ10scykpJiYoZSYmbnVsbCE9PWguYWx0ZXJuYXRlJiZkLmRlbGV0ZShudWxsPT09aC5rZXk/ZzpoLmtleSksaT1hKGgsaSxnKSxudWxsPT09Yz91PWg6Yy5zaWJsaW5nPWgsYz1oKTtyZXR1cm4gZSYmZC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0KG8sZSl9KSx1fWZ1bmN0aW9uIGgobyxsLHMsdSl7dmFyIGM9aXQocyk7XCJmdW5jdGlvblwiIT10eXBlb2YgYyYmaShcIjE1MFwiKSxudWxsPT0ocz1jLmNhbGwocykpJiZpKFwiMTUxXCIpO2Zvcih2YXIgZD1jPW51bGwsZz1sLGg9bD0wLGI9bnVsbCx5PXMubmV4dCgpO251bGwhPT1nJiYheS5kb25lO2grKyx5PXMubmV4dCgpKXtnLmluZGV4Pmg/KGI9ZyxnPW51bGwpOmI9Zy5zaWJsaW5nO3ZhciB2PWYobyxnLHkudmFsdWUsdSk7aWYobnVsbD09PXYpe2d8fChnPWIpO2JyZWFrfWUmJmcmJm51bGw9PT12LmFsdGVybmF0ZSYmdChvLGcpLGw9YSh2LGwsaCksbnVsbD09PWQ/Yz12OmQuc2libGluZz12LGQ9dixnPWJ9aWYoeS5kb25lKXJldHVybiBuKG8sZyksYztpZihudWxsPT09Zyl7Zm9yKDsheS5kb25lO2grKyx5PXMubmV4dCgpKW51bGwhPT0oeT1wKG8seS52YWx1ZSx1KSkmJihsPWEoeSxsLGgpLG51bGw9PT1kP2M9eTpkLnNpYmxpbmc9eSxkPXkpO3JldHVybiBjfWZvcihnPXIobyxnKTsheS5kb25lO2grKyx5PXMubmV4dCgpKW51bGwhPT0oeT1tKGcsbyxoLHkudmFsdWUsdSkpJiYoZSYmbnVsbCE9PXkuYWx0ZXJuYXRlJiZnLmRlbGV0ZShudWxsPT09eS5rZXk/aDp5LmtleSksbD1hKHksbCxoKSxudWxsPT09ZD9jPXk6ZC5zaWJsaW5nPXksZD15KTtyZXR1cm4gZSYmZy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0KG8sZSl9KSxjfXJldHVybiBmdW5jdGlvbihlLHIsYSxzKXt2YXIgdT1cIm9iamVjdFwiPT10eXBlb2YgYSYmbnVsbCE9PWEmJmEudHlwZT09PVllJiZudWxsPT09YS5rZXk7dSYmKGE9YS5wcm9wcy5jaGlsZHJlbik7dmFyIGM9XCJvYmplY3RcIj09dHlwZW9mIGEmJm51bGwhPT1hO2lmKGMpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgcWU6ZTp7Zm9yKGM9YS5rZXksdT1yO251bGwhPT11Oyl7aWYodS5rZXk9PT1jKXtpZig3PT09dS50YWc/YS50eXBlPT09WWU6dS5lbGVtZW50VHlwZT09PWEudHlwZSl7bihlLHUuc2libGluZyksKHI9byh1LGEudHlwZT09PVllP2EucHJvcHMuY2hpbGRyZW46YS5wcm9wcykpLnJlZj1mbyhlLHUsYSksci5yZXR1cm49ZSxlPXI7YnJlYWsgZX1uKGUsdSk7YnJlYWt9dChlLHUpLHU9dS5zaWJsaW5nfWEudHlwZT09PVllPygocj1ZcihhLnByb3BzLmNoaWxkcmVuLGUubW9kZSxzLGEua2V5KSkucmV0dXJuPWUsZT1yKTooKHM9S3IoYS50eXBlLGEua2V5LGEucHJvcHMsbnVsbCxlLm1vZGUscykpLnJlZj1mbyhlLHIsYSkscy5yZXR1cm49ZSxlPXMpfXJldHVybiBsKGUpO2Nhc2UgS2U6ZTp7Zm9yKHU9YS5rZXk7bnVsbCE9PXI7KXtpZihyLmtleT09PXUpe2lmKDQ9PT1yLnRhZyYmci5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PWEuY29udGFpbmVySW5mbyYmci5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb249PT1hLmltcGxlbWVudGF0aW9uKXtuKGUsci5zaWJsaW5nKSwocj1vKHIsYS5jaGlsZHJlbnx8W10pKS5yZXR1cm49ZSxlPXI7YnJlYWsgZX1uKGUscik7YnJlYWt9dChlLHIpLHI9ci5zaWJsaW5nfShyPVFyKGEsZS5tb2RlLHMpKS5yZXR1cm49ZSxlPXJ9cmV0dXJuIGwoZSl9aWYoXCJzdHJpbmdcIj09dHlwZW9mIGF8fFwibnVtYmVyXCI9PXR5cGVvZiBhKXJldHVybiBhPVwiXCIrYSxudWxsIT09ciYmNj09PXIudGFnPyhuKGUsci5zaWJsaW5nKSwocj1vKHIsYSkpLnJldHVybj1lLGU9cik6KG4oZSxyKSwocj1acihhLGUubW9kZSxzKSkucmV0dXJuPWUsZT1yKSxsKGUpO2lmKHBvKGEpKXJldHVybiBnKGUscixhLHMpO2lmKGl0KGEpKXJldHVybiBoKGUscixhLHMpO2lmKGMmJm1vKGUsYSksdm9pZCAwPT09YSYmIXUpc3dpdGNoKGUudGFnKXtjYXNlIDE6Y2FzZSAwOmkoXCIxNTJcIiwocz1lLnR5cGUpLmRpc3BsYXlOYW1lfHxzLm5hbWV8fFwiQ29tcG9uZW50XCIpfXJldHVybiBuKGUscil9fXZhciBobz1nbyghMCksYm89Z28oITEpLHlvPXt9LHZvPXtjdXJyZW50OnlvfSxTbz17Y3VycmVudDp5b30sRW89e2N1cnJlbnQ6eW99O2Z1bmN0aW9uIHhvKGUpe3JldHVybiBlPT09eW8mJmkoXCIxNzRcIiksZX1mdW5jdGlvbiB3byhlLHQpe0NyKEVvLHQpLENyKFNvLGUpLENyKHZvLHlvKTt2YXIgbj10Lm5vZGVUeXBlO3N3aXRjaChuKXtjYXNlIDk6Y2FzZSAxMTp0PSh0PXQuZG9jdW1lbnRFbGVtZW50KT90Lm5hbWVzcGFjZVVSSTp0cihudWxsLFwiXCIpO2JyZWFrO2RlZmF1bHQ6dD10cih0PShuPTg9PT1uP3QucGFyZW50Tm9kZTp0KS5uYW1lc3BhY2VVUkl8fG51bGwsbj1uLnRhZ05hbWUpfUFyKHZvKSxDcih2byx0KX1mdW5jdGlvbiBrbyhlKXtBcih2byksQXIoU28pLEFyKEVvKX1mdW5jdGlvbiBfbyhlKXt4byhFby5jdXJyZW50KTt2YXIgdD14byh2by5jdXJyZW50KSxuPXRyKHQsZS50eXBlKTt0IT09biYmKENyKFNvLGUpLENyKHZvLG4pKX1mdW5jdGlvbiBUbyhlKXtTby5jdXJyZW50PT09ZSYmKEFyKHZvKSxBcihTbykpfXZhciBBbz0wLENvPTIsT289NCxJbz04LE5vPTE2LFJvPTMyLFBvPTY0LE1vPTEyOCxMbz1HZS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLERvPTAsRm89bnVsbCxCbz1udWxsLGpvPW51bGwsVW89bnVsbCx6bz1udWxsLEhvPW51bGwsV289MCxHbz1udWxsLFZvPTAsJG89ITEscW89bnVsbCxLbz0wO2Z1bmN0aW9uIFlvKCl7aShcIjMwN1wiKX1mdW5jdGlvbiBYbyhlLHQpe2lmKG51bGw9PT10KXJldHVybiExO2Zvcih2YXIgbj0wO248dC5sZW5ndGgmJm48ZS5sZW5ndGg7bisrKWlmKCFRdChlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIFpvKGUsdCxuLHIsbyxhKXtpZihEbz1hLEZvPXQsam89bnVsbCE9PWU/ZS5tZW1vaXplZFN0YXRlOm51bGwsTG8uY3VycmVudD1udWxsPT09am8/Y2E6ZGEsdD1uKHIsbyksJG8pe2RveyRvPSExLEtvKz0xLGpvPW51bGwhPT1lP2UubWVtb2l6ZWRTdGF0ZTpudWxsLEhvPVVvLEdvPXpvPUJvPW51bGwsTG8uY3VycmVudD1kYSx0PW4ocixvKX13aGlsZSgkbyk7cW89bnVsbCxLbz0wfXJldHVybiBMby5jdXJyZW50PXVhLChlPUZvKS5tZW1vaXplZFN0YXRlPVVvLGUuZXhwaXJhdGlvblRpbWU9V28sZS51cGRhdGVRdWV1ZT1HbyxlLmVmZmVjdFRhZ3w9Vm8sZT1udWxsIT09Qm8mJm51bGwhPT1Cby5uZXh0LERvPTAsSG89em89VW89am89Qm89Rm89bnVsbCxXbz0wLEdvPW51bGwsVm89MCxlJiZpKFwiMzAwXCIpLHR9ZnVuY3Rpb24gUW8oKXtMby5jdXJyZW50PXVhLERvPTAsSG89em89VW89am89Qm89Rm89bnVsbCxXbz0wLEdvPW51bGwsVm89MCwkbz0hMSxxbz1udWxsLEtvPTB9ZnVuY3Rpb24gSm8oKXt2YXIgZT17bWVtb2l6ZWRTdGF0ZTpudWxsLGJhc2VTdGF0ZTpudWxsLHF1ZXVlOm51bGwsYmFzZVVwZGF0ZTpudWxsLG5leHQ6bnVsbH07cmV0dXJuIG51bGw9PT16bz9Vbz16bz1lOnpvPXpvLm5leHQ9ZSx6b31mdW5jdGlvbiBlYSgpe2lmKG51bGwhPT1IbylIbz0oem89SG8pLm5leHQsam89bnVsbCE9PShCbz1qbyk/Qm8ubmV4dDpudWxsO2Vsc2V7bnVsbD09PWpvJiZpKFwiMzEwXCIpO3ZhciBlPXttZW1vaXplZFN0YXRlOihCbz1qbykubWVtb2l6ZWRTdGF0ZSxiYXNlU3RhdGU6Qm8uYmFzZVN0YXRlLHF1ZXVlOkJvLnF1ZXVlLGJhc2VVcGRhdGU6Qm8uYmFzZVVwZGF0ZSxuZXh0Om51bGx9O3pvPW51bGw9PT16bz9Vbz1lOnpvLm5leHQ9ZSxqbz1Cby5uZXh0fXJldHVybiB6b31mdW5jdGlvbiB0YShlLHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChlKTp0fWZ1bmN0aW9uIG5hKGUpe3ZhciB0PWVhKCksbj10LnF1ZXVlO2lmKG51bGw9PT1uJiZpKFwiMzExXCIpLDA8S28pe3ZhciByPW4uZGlzcGF0Y2g7aWYobnVsbCE9PXFvKXt2YXIgbz1xby5nZXQobik7aWYodm9pZCAwIT09byl7cW8uZGVsZXRlKG4pO3ZhciBhPXQubWVtb2l6ZWRTdGF0ZTtkb3thPWUoYSxvLmFjdGlvbiksbz1vLm5leHR9d2hpbGUobnVsbCE9PW8pO3JldHVybiBRdChhLHQubWVtb2l6ZWRTdGF0ZSl8fCh4YT0hMCksdC5tZW1vaXplZFN0YXRlPWEsdC5iYXNlVXBkYXRlPT09bi5sYXN0JiYodC5iYXNlU3RhdGU9YSksbi5lYWdlclJlZHVjZXI9ZSxuLmVhZ2VyU3RhdGU9YSxbYSxyXX19cmV0dXJuW3QubWVtb2l6ZWRTdGF0ZSxyXX1yPW4ubGFzdDt2YXIgbD10LmJhc2VVcGRhdGU7aWYoYT10LmJhc2VTdGF0ZSxudWxsIT09bD8obnVsbCE9PXImJihyLm5leHQ9bnVsbCkscj1sLm5leHQpOnI9bnVsbCE9PXI/ci5uZXh0Om51bGwsbnVsbCE9PXIpe3ZhciBzPW89bnVsbCx1PXIsYz0hMTtkb3t2YXIgZD11LmV4cGlyYXRpb25UaW1lO2Q8RG8/KGN8fChjPSEwLHM9bCxvPWEpLGQ+V28mJihXbz1kKSk6YT11LmVhZ2VyUmVkdWNlcj09PWU/dS5lYWdlclN0YXRlOmUoYSx1LmFjdGlvbiksbD11LHU9dS5uZXh0fXdoaWxlKG51bGwhPT11JiZ1IT09cik7Y3x8KHM9bCxvPWEpLFF0KGEsdC5tZW1vaXplZFN0YXRlKXx8KHhhPSEwKSx0Lm1lbW9pemVkU3RhdGU9YSx0LmJhc2VVcGRhdGU9cyx0LmJhc2VTdGF0ZT1vLG4uZWFnZXJSZWR1Y2VyPWUsbi5lYWdlclN0YXRlPWF9cmV0dXJuW3QubWVtb2l6ZWRTdGF0ZSxuLmRpc3BhdGNoXX1mdW5jdGlvbiByYShlLHQsbixyKXtyZXR1cm4gZT17dGFnOmUsY3JlYXRlOnQsZGVzdHJveTpuLGRlcHM6cixuZXh0Om51bGx9LG51bGw9PT1Hbz8oR289e2xhc3RFZmZlY3Q6bnVsbH0pLmxhc3RFZmZlY3Q9ZS5uZXh0PWU6bnVsbD09PSh0PUdvLmxhc3RFZmZlY3QpP0dvLmxhc3RFZmZlY3Q9ZS5uZXh0PWU6KG49dC5uZXh0LHQubmV4dD1lLGUubmV4dD1uLEdvLmxhc3RFZmZlY3Q9ZSksZX1mdW5jdGlvbiBvYShlLHQsbixyKXt2YXIgbz1KbygpO1ZvfD1lLG8ubWVtb2l6ZWRTdGF0ZT1yYSh0LG4sdm9pZCAwLHZvaWQgMD09PXI/bnVsbDpyKX1mdW5jdGlvbiBhYShlLHQsbixyKXt2YXIgbz1lYSgpO3I9dm9pZCAwPT09cj9udWxsOnI7dmFyIGE9dm9pZCAwO2lmKG51bGwhPT1Cbyl7dmFyIGk9Qm8ubWVtb2l6ZWRTdGF0ZTtpZihhPWkuZGVzdHJveSxudWxsIT09ciYmWG8ocixpLmRlcHMpKXJldHVybiB2b2lkIHJhKEFvLG4sYSxyKX1Wb3w9ZSxvLm1lbW9pemVkU3RhdGU9cmEodCxuLGEscil9ZnVuY3Rpb24gaWEoZSx0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0PyhlPWUoKSx0KGUpLGZ1bmN0aW9uKCl7dChudWxsKX0pOm51bGwhPXQ/KGU9ZSgpLHQuY3VycmVudD1lLGZ1bmN0aW9uKCl7dC5jdXJyZW50PW51bGx9KTp2b2lkIDB9ZnVuY3Rpb24gbGEoKXt9ZnVuY3Rpb24gc2EoZSx0LG4pezI1PktvfHxpKFwiMzAxXCIpO3ZhciByPWUuYWx0ZXJuYXRlO2lmKGU9PT1Gb3x8bnVsbCE9PXImJnI9PT1GbylpZigkbz0hMCxlPXtleHBpcmF0aW9uVGltZTpEbyxhY3Rpb246bixlYWdlclJlZHVjZXI6bnVsbCxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfSxudWxsPT09cW8mJihxbz1uZXcgTWFwKSx2b2lkIDA9PT0obj1xby5nZXQodCkpKXFvLnNldCh0LGUpO2Vsc2V7Zm9yKHQ9bjtudWxsIT09dC5uZXh0Oyl0PXQubmV4dDt0Lm5leHQ9ZX1lbHNle1dpKCk7dmFyIG89eGwoKSxhPXtleHBpcmF0aW9uVGltZTpvPVlpKG8sZSksYWN0aW9uOm4sZWFnZXJSZWR1Y2VyOm51bGwsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH0sbD10Lmxhc3Q7aWYobnVsbD09PWwpYS5uZXh0PWE7ZWxzZXt2YXIgcz1sLm5leHQ7bnVsbCE9PXMmJihhLm5leHQ9cyksbC5uZXh0PWF9aWYodC5sYXN0PWEsMD09PWUuZXhwaXJhdGlvblRpbWUmJihudWxsPT09cnx8MD09PXIuZXhwaXJhdGlvblRpbWUpJiZudWxsIT09KHI9dC5lYWdlclJlZHVjZXIpKXRyeXt2YXIgdT10LmVhZ2VyU3RhdGUsYz1yKHUsbik7aWYoYS5lYWdlclJlZHVjZXI9cixhLmVhZ2VyU3RhdGU9YyxRdChjLHUpKXJldHVybn1jYXRjaChlKXt9UWkoZSxvKX19dmFyIHVhPXtyZWFkQ29udGV4dDpIYSx1c2VDYWxsYmFjazpZbyx1c2VDb250ZXh0OllvLHVzZUVmZmVjdDpZbyx1c2VJbXBlcmF0aXZlSGFuZGxlOllvLHVzZUxheW91dEVmZmVjdDpZbyx1c2VNZW1vOllvLHVzZVJlZHVjZXI6WW8sdXNlUmVmOllvLHVzZVN0YXRlOllvLHVzZURlYnVnVmFsdWU6WW99LGNhPXtyZWFkQ29udGV4dDpIYSx1c2VDYWxsYmFjazpmdW5jdGlvbihlLHQpe3JldHVybiBKbygpLm1lbW9pemVkU3RhdGU9W2Usdm9pZCAwPT09dD9udWxsOnRdLGV9LHVzZUNvbnRleHQ6SGEsdXNlRWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG9hKDUxNixNb3xQbyxlLHQpfSx1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj1udWxsIT1uP24uY29uY2F0KFtlXSk6bnVsbCxvYSg0LE9vfFJvLGlhLmJpbmQobnVsbCx0LGUpLG4pfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gb2EoNCxPb3xSbyxlLHQpfSx1c2VNZW1vOmZ1bmN0aW9uKGUsdCl7dmFyIG49Sm8oKTtyZXR1cm4gdD12b2lkIDA9PT10P251bGw6dCxlPWUoKSxuLm1lbW9pemVkU3RhdGU9W2UsdF0sZX0sdXNlUmVkdWNlcjpmdW5jdGlvbihlLHQsbil7dmFyIHI9Sm8oKTtyZXR1cm4gdD12b2lkIDAhPT1uP24odCk6dCxyLm1lbW9pemVkU3RhdGU9ci5iYXNlU3RhdGU9dCxlPShlPXIucXVldWU9e2xhc3Q6bnVsbCxkaXNwYXRjaDpudWxsLGVhZ2VyUmVkdWNlcjplLGVhZ2VyU3RhdGU6dH0pLmRpc3BhdGNoPXNhLmJpbmQobnVsbCxGbyxlKSxbci5tZW1vaXplZFN0YXRlLGVdfSx1c2VSZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9e2N1cnJlbnQ6ZX0sSm8oKS5tZW1vaXplZFN0YXRlPWV9LHVzZVN0YXRlOmZ1bmN0aW9uKGUpe3ZhciB0PUpvKCk7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmKGU9ZSgpKSx0Lm1lbW9pemVkU3RhdGU9dC5iYXNlU3RhdGU9ZSxlPShlPXQucXVldWU9e2xhc3Q6bnVsbCxkaXNwYXRjaDpudWxsLGVhZ2VyUmVkdWNlcjp0YSxlYWdlclN0YXRlOmV9KS5kaXNwYXRjaD1zYS5iaW5kKG51bGwsRm8sZSksW3QubWVtb2l6ZWRTdGF0ZSxlXX0sdXNlRGVidWdWYWx1ZTpsYX0sZGE9e3JlYWRDb250ZXh0OkhhLHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZWEoKTt0PXZvaWQgMD09PXQ/bnVsbDp0O3ZhciByPW4ubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gbnVsbCE9PXImJm51bGwhPT10JiZYbyh0LHJbMV0pP3JbMF06KG4ubWVtb2l6ZWRTdGF0ZT1bZSx0XSxlKX0sdXNlQ29udGV4dDpIYSx1c2VFZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYWEoNTE2LE1vfFBvLGUsdCl9LHVzZUltcGVyYXRpdmVIYW5kbGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuPW51bGwhPW4/bi5jb25jYXQoW2VdKTpudWxsLGFhKDQsT298Um8saWEuYmluZChudWxsLHQsZSksbil9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBhYSg0LE9vfFJvLGUsdCl9LHVzZU1lbW86ZnVuY3Rpb24oZSx0KXt2YXIgbj1lYSgpO3Q9dm9pZCAwPT09dD9udWxsOnQ7dmFyIHI9bi5tZW1vaXplZFN0YXRlO3JldHVybiBudWxsIT09ciYmbnVsbCE9PXQmJlhvKHQsclsxXSk/clswXTooZT1lKCksbi5tZW1vaXplZFN0YXRlPVtlLHRdLGUpfSx1c2VSZWR1Y2VyOm5hLHVzZVJlZjpmdW5jdGlvbigpe3JldHVybiBlYSgpLm1lbW9pemVkU3RhdGV9LHVzZVN0YXRlOmZ1bmN0aW9uKGUpe3JldHVybiBuYSh0YSl9LHVzZURlYnVnVmFsdWU6bGF9LHBhPW51bGwsZmE9bnVsbCxtYT0hMTtmdW5jdGlvbiBnYShlLHQpe3ZhciBuPVZyKDUsbnVsbCxudWxsLDApO24uZWxlbWVudFR5cGU9XCJERUxFVEVEXCIsbi50eXBlPVwiREVMRVRFRFwiLG4uc3RhdGVOb2RlPXQsbi5yZXR1cm49ZSxuLmVmZmVjdFRhZz04LG51bGwhPT1lLmxhc3RFZmZlY3Q/KGUubGFzdEVmZmVjdC5uZXh0RWZmZWN0PW4sZS5sYXN0RWZmZWN0PW4pOmUuZmlyc3RFZmZlY3Q9ZS5sYXN0RWZmZWN0PW59ZnVuY3Rpb24gaGEoZSx0KXtzd2l0Y2goZS50YWcpe2Nhc2UgNTp2YXIgbj1lLnR5cGU7cmV0dXJuIG51bGwhPT0odD0xIT09dC5ub2RlVHlwZXx8bi50b0xvd2VyQ2FzZSgpIT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6dCkmJihlLnN0YXRlTm9kZT10LCEwKTtjYXNlIDY6cmV0dXJuIG51bGwhPT0odD1cIlwiPT09ZS5wZW5kaW5nUHJvcHN8fDMhPT10Lm5vZGVUeXBlP251bGw6dCkmJihlLnN0YXRlTm9kZT10LCEwKTtjYXNlIDEzOmRlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGJhKGUpe2lmKG1hKXt2YXIgdD1mYTtpZih0KXt2YXIgbj10O2lmKCFoYShlLHQpKXtpZighKHQ9d3IobikpfHwhaGEoZSx0KSlyZXR1cm4gZS5lZmZlY3RUYWd8PTIsbWE9ITEsdm9pZChwYT1lKTtnYShwYSxuKX1wYT1lLGZhPWtyKHQpfWVsc2UgZS5lZmZlY3RUYWd8PTIsbWE9ITEscGE9ZX19ZnVuY3Rpb24geWEoZSl7Zm9yKGU9ZS5yZXR1cm47bnVsbCE9PWUmJjUhPT1lLnRhZyYmMyE9PWUudGFnJiYxOCE9PWUudGFnOyllPWUucmV0dXJuO3BhPWV9ZnVuY3Rpb24gdmEoZSl7aWYoZSE9PXBhKXJldHVybiExO2lmKCFtYSlyZXR1cm4geWEoZSksbWE9ITAsITE7dmFyIHQ9ZS50eXBlO2lmKDUhPT1lLnRhZ3x8XCJoZWFkXCIhPT10JiZcImJvZHlcIiE9PXQmJiF5cih0LGUubWVtb2l6ZWRQcm9wcykpZm9yKHQ9ZmE7dDspZ2EoZSx0KSx0PXdyKHQpO3JldHVybiB5YShlKSxmYT1wYT93cihlLnN0YXRlTm9kZSk6bnVsbCwhMH1mdW5jdGlvbiBTYSgpe2ZhPXBhPW51bGwsbWE9ITF9dmFyIEVhPUdlLlJlYWN0Q3VycmVudE93bmVyLHhhPSExO2Z1bmN0aW9uIHdhKGUsdCxuLHIpe3QuY2hpbGQ9bnVsbD09PWU/Ym8odCxudWxsLG4scik6aG8odCxlLmNoaWxkLG4scil9ZnVuY3Rpb24ga2EoZSx0LG4scixvKXtuPW4ucmVuZGVyO3ZhciBhPXQucmVmO3JldHVybiB6YSh0LG8pLHI9Wm8oZSx0LG4scixhLG8pLG51bGw9PT1lfHx4YT8odC5lZmZlY3RUYWd8PTEsd2EoZSx0LHIsbyksdC5jaGlsZCk6KHQudXBkYXRlUXVldWU9ZS51cGRhdGVRdWV1ZSx0LmVmZmVjdFRhZyY9LTUxNyxlLmV4cGlyYXRpb25UaW1lPD1vJiYoZS5leHBpcmF0aW9uVGltZT0wKSxQYShlLHQsbykpfWZ1bmN0aW9uIF9hKGUsdCxuLHIsbyxhKXtpZihudWxsPT09ZSl7dmFyIGk9bi50eXBlO3JldHVyblwiZnVuY3Rpb25cIiE9dHlwZW9mIGl8fCRyKGkpfHx2b2lkIDAhPT1pLmRlZmF1bHRQcm9wc3x8bnVsbCE9PW4uY29tcGFyZXx8dm9pZCAwIT09bi5kZWZhdWx0UHJvcHM/KChlPUtyKG4udHlwZSxudWxsLHIsbnVsbCx0Lm1vZGUsYSkpLnJlZj10LnJlZixlLnJldHVybj10LHQuY2hpbGQ9ZSk6KHQudGFnPTE1LHQudHlwZT1pLFRhKGUsdCxpLHIsbyxhKSl9cmV0dXJuIGk9ZS5jaGlsZCxvPGEmJihvPWkubWVtb2l6ZWRQcm9wcywobj1udWxsIT09KG49bi5jb21wYXJlKT9uOmVuKShvLHIpJiZlLnJlZj09PXQucmVmKT9QYShlLHQsYSk6KHQuZWZmZWN0VGFnfD0xLChlPXFyKGkscikpLnJlZj10LnJlZixlLnJldHVybj10LHQuY2hpbGQ9ZSl9ZnVuY3Rpb24gVGEoZSx0LG4scixvLGEpe3JldHVybiBudWxsIT09ZSYmZW4oZS5tZW1vaXplZFByb3BzLHIpJiZlLnJlZj09PXQucmVmJiYoeGE9ITEsbzxhKT9QYShlLHQsYSk6Q2EoZSx0LG4scixhKX1mdW5jdGlvbiBBYShlLHQpe3ZhciBuPXQucmVmOyhudWxsPT09ZSYmbnVsbCE9PW58fG51bGwhPT1lJiZlLnJlZiE9PW4pJiYodC5lZmZlY3RUYWd8PTEyOCl9ZnVuY3Rpb24gQ2EoZSx0LG4scixvKXt2YXIgYT1NcihuKT9ScjpJci5jdXJyZW50O3JldHVybiBhPVByKHQsYSksemEodCxvKSxuPVpvKGUsdCxuLHIsYSxvKSxudWxsPT09ZXx8eGE/KHQuZWZmZWN0VGFnfD0xLHdhKGUsdCxuLG8pLHQuY2hpbGQpOih0LnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdC5lZmZlY3RUYWcmPS01MTcsZS5leHBpcmF0aW9uVGltZTw9byYmKGUuZXhwaXJhdGlvblRpbWU9MCksUGEoZSx0LG8pKX1mdW5jdGlvbiBPYShlLHQsbixyLG8pe2lmKE1yKG4pKXt2YXIgYT0hMDtqcih0KX1lbHNlIGE9ITE7aWYoemEodCxvKSxudWxsPT09dC5zdGF0ZU5vZGUpbnVsbCE9PWUmJihlLmFsdGVybmF0ZT1udWxsLHQuYWx0ZXJuYXRlPW51bGwsdC5lZmZlY3RUYWd8PTIpLHNvKHQsbixyKSxjbyh0LG4scixvKSxyPSEwO2Vsc2UgaWYobnVsbD09PWUpe3ZhciBpPXQuc3RhdGVOb2RlLGw9dC5tZW1vaXplZFByb3BzO2kucHJvcHM9bDt2YXIgcz1pLmNvbnRleHQsdT1uLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PXR5cGVvZiB1JiZudWxsIT09dT91PUhhKHUpOnU9UHIodCx1PU1yKG4pP1JyOklyLmN1cnJlbnQpO3ZhciBjPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLGQ9XCJmdW5jdGlvblwiPT10eXBlb2YgY3x8XCJmdW5jdGlvblwiPT10eXBlb2YgaS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTtkfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChsIT09cnx8cyE9PXUpJiZ1byh0LGkscix1KSxxYT0hMTt2YXIgcD10Lm1lbW9pemVkU3RhdGU7cz1pLnN0YXRlPXA7dmFyIGY9dC51cGRhdGVRdWV1ZTtudWxsIT09ZiYmKG5pKHQsZixyLGksbykscz10Lm1lbW9pemVkU3RhdGUpLGwhPT1yfHxwIT09c3x8TnIuY3VycmVudHx8cWE/KFwiZnVuY3Rpb25cIj09dHlwZW9mIGMmJihhbyh0LG4sYyxyKSxzPXQubWVtb2l6ZWRTdGF0ZSksKGw9cWF8fGxvKHQsbixsLHIscCxzLHUpKT8oZHx8XCJmdW5jdGlvblwiIT10eXBlb2YgaS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLmNvbXBvbmVudFdpbGxNb3VudHx8KFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29tcG9uZW50V2lsbE1vdW50JiZpLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmaS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29tcG9uZW50RGlkTW91bnQmJih0LmVmZmVjdFRhZ3w9NCkpOihcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmNvbXBvbmVudERpZE1vdW50JiYodC5lZmZlY3RUYWd8PTQpLHQubWVtb2l6ZWRQcm9wcz1yLHQubWVtb2l6ZWRTdGF0ZT1zKSxpLnByb3BzPXIsaS5zdGF0ZT1zLGkuY29udGV4dD11LHI9bCk6KFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29tcG9uZW50RGlkTW91bnQmJih0LmVmZmVjdFRhZ3w9NCkscj0hMSl9ZWxzZSBpPXQuc3RhdGVOb2RlLGw9dC5tZW1vaXplZFByb3BzLGkucHJvcHM9dC50eXBlPT09dC5lbGVtZW50VHlwZT9sOnJvKHQudHlwZSxsKSxzPWkuY29udGV4dCxcIm9iamVjdFwiPT10eXBlb2YodT1uLmNvbnRleHRUeXBlKSYmbnVsbCE9PXU/dT1IYSh1KTp1PVByKHQsdT1NcihuKT9ScjpJci5jdXJyZW50KSwoZD1cImZ1bmN0aW9uXCI9PXR5cGVvZihjPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKXx8XCJmdW5jdGlvblwiPT10eXBlb2YgaS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSl8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGwhPT1yfHxzIT09dSkmJnVvKHQsaSxyLHUpLHFhPSExLHM9dC5tZW1vaXplZFN0YXRlLHA9aS5zdGF0ZT1zLG51bGwhPT0oZj10LnVwZGF0ZVF1ZXVlKSYmKG5pKHQsZixyLGksbykscD10Lm1lbW9pemVkU3RhdGUpLGwhPT1yfHxzIT09cHx8TnIuY3VycmVudHx8cWE/KFwiZnVuY3Rpb25cIj09dHlwZW9mIGMmJihhbyh0LG4sYyxyKSxwPXQubWVtb2l6ZWRTdGF0ZSksKGM9cWF8fGxvKHQsbixsLHIscyxwLHUpKT8oZHx8XCJmdW5jdGlvblwiIT10eXBlb2YgaS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgaS5jb21wb25lbnRXaWxsVXBkYXRlfHwoXCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb21wb25lbnRXaWxsVXBkYXRlJiZpLmNvbXBvbmVudFdpbGxVcGRhdGUocixwLHUpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJmkuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUocixwLHUpKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmNvbXBvbmVudERpZFVwZGF0ZSYmKHQuZWZmZWN0VGFnfD00KSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYodC5lZmZlY3RUYWd8PTI1NikpOihcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLmNvbXBvbmVudERpZFVwZGF0ZXx8bD09PWUubWVtb2l6ZWRQcm9wcyYmcz09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZWZmZWN0VGFnfD00KSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxsPT09ZS5tZW1vaXplZFByb3BzJiZzPT09ZS5tZW1vaXplZFN0YXRlfHwodC5lZmZlY3RUYWd8PTI1NiksdC5tZW1vaXplZFByb3BzPXIsdC5tZW1vaXplZFN0YXRlPXApLGkucHJvcHM9cixpLnN0YXRlPXAsaS5jb250ZXh0PXUscj1jKTooXCJmdW5jdGlvblwiIT10eXBlb2YgaS5jb21wb25lbnREaWRVcGRhdGV8fGw9PT1lLm1lbW9pemVkUHJvcHMmJnM9PT1lLm1lbW9pemVkU3RhdGV8fCh0LmVmZmVjdFRhZ3w9NCksXCJmdW5jdGlvblwiIT10eXBlb2YgaS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8bD09PWUubWVtb2l6ZWRQcm9wcyYmcz09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZWZmZWN0VGFnfD0yNTYpLHI9ITEpO3JldHVybiBJYShlLHQsbixyLGEsbyl9ZnVuY3Rpb24gSWEoZSx0LG4scixvLGEpe0FhKGUsdCk7dmFyIGk9MCE9KDY0JnQuZWZmZWN0VGFnKTtpZighciYmIWkpcmV0dXJuIG8mJlVyKHQsbiwhMSksUGEoZSx0LGEpO3I9dC5zdGF0ZU5vZGUsRWEuY3VycmVudD10O3ZhciBsPWkmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIG4uZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yP251bGw6ci5yZW5kZXIoKTtyZXR1cm4gdC5lZmZlY3RUYWd8PTEsbnVsbCE9PWUmJmk/KHQuY2hpbGQ9aG8odCxlLmNoaWxkLG51bGwsYSksdC5jaGlsZD1obyh0LG51bGwsbCxhKSk6d2EoZSx0LGwsYSksdC5tZW1vaXplZFN0YXRlPXIuc3RhdGUsbyYmVXIodCxuLCEwKSx0LmNoaWxkfWZ1bmN0aW9uIE5hKGUpe3ZhciB0PWUuc3RhdGVOb2RlO3QucGVuZGluZ0NvbnRleHQ/RnIoMCx0LnBlbmRpbmdDb250ZXh0LHQucGVuZGluZ0NvbnRleHQhPT10LmNvbnRleHQpOnQuY29udGV4dCYmRnIoMCx0LmNvbnRleHQsITEpLHdvKGUsdC5jb250YWluZXJJbmZvKX1mdW5jdGlvbiBSYShlLHQsbil7dmFyIHI9dC5tb2RlLG89dC5wZW5kaW5nUHJvcHMsYT10Lm1lbW9pemVkU3RhdGU7aWYoMD09KDY0JnQuZWZmZWN0VGFnKSl7YT1udWxsO3ZhciBpPSExfWVsc2UgYT17dGltZWRPdXRBdDpudWxsIT09YT9hLnRpbWVkT3V0QXQ6MH0saT0hMCx0LmVmZmVjdFRhZyY9LTY1O2lmKG51bGw9PT1lKWlmKGkpe3ZhciBsPW8uZmFsbGJhY2s7ZT1ZcihudWxsLHIsMCxudWxsKSwwPT0oMSZ0Lm1vZGUpJiYoZS5jaGlsZD1udWxsIT09dC5tZW1vaXplZFN0YXRlP3QuY2hpbGQuY2hpbGQ6dC5jaGlsZCkscj1ZcihsLHIsbixudWxsKSxlLnNpYmxpbmc9ciwobj1lKS5yZXR1cm49ci5yZXR1cm49dH1lbHNlIG49cj1ibyh0LG51bGwsby5jaGlsZHJlbixuKTtlbHNlIG51bGwhPT1lLm1lbW9pemVkU3RhdGU/KGw9KHI9ZS5jaGlsZCkuc2libGluZyxpPyhuPW8uZmFsbGJhY2ssbz1xcihyLHIucGVuZGluZ1Byb3BzKSwwPT0oMSZ0Lm1vZGUpJiYoKGk9bnVsbCE9PXQubWVtb2l6ZWRTdGF0ZT90LmNoaWxkLmNoaWxkOnQuY2hpbGQpIT09ci5jaGlsZCYmKG8uY2hpbGQ9aSkpLHI9by5zaWJsaW5nPXFyKGwsbixsLmV4cGlyYXRpb25UaW1lKSxuPW8sby5jaGlsZEV4cGlyYXRpb25UaW1lPTAsbi5yZXR1cm49ci5yZXR1cm49dCk6bj1yPWhvKHQsci5jaGlsZCxvLmNoaWxkcmVuLG4pKToobD1lLmNoaWxkLGk/KGk9by5mYWxsYmFjaywobz1ZcihudWxsLHIsMCxudWxsKSkuY2hpbGQ9bCwwPT0oMSZ0Lm1vZGUpJiYoby5jaGlsZD1udWxsIT09dC5tZW1vaXplZFN0YXRlP3QuY2hpbGQuY2hpbGQ6dC5jaGlsZCksKHI9by5zaWJsaW5nPVlyKGkscixuLG51bGwpKS5lZmZlY3RUYWd8PTIsbj1vLG8uY2hpbGRFeHBpcmF0aW9uVGltZT0wLG4ucmV0dXJuPXIucmV0dXJuPXQpOnI9bj1obyh0LGwsby5jaGlsZHJlbixuKSksdC5zdGF0ZU5vZGU9ZS5zdGF0ZU5vZGU7cmV0dXJuIHQubWVtb2l6ZWRTdGF0ZT1hLHQuY2hpbGQ9bixyfWZ1bmN0aW9uIFBhKGUsdCxuKXtpZihudWxsIT09ZSYmKHQuY29udGV4dERlcGVuZGVuY2llcz1lLmNvbnRleHREZXBlbmRlbmNpZXMpLHQuY2hpbGRFeHBpcmF0aW9uVGltZTxuKXJldHVybiBudWxsO2lmKG51bGwhPT1lJiZ0LmNoaWxkIT09ZS5jaGlsZCYmaShcIjE1M1wiKSxudWxsIT09dC5jaGlsZCl7Zm9yKG49cXIoZT10LmNoaWxkLGUucGVuZGluZ1Byb3BzLGUuZXhwaXJhdGlvblRpbWUpLHQuY2hpbGQ9bixuLnJldHVybj10O251bGwhPT1lLnNpYmxpbmc7KWU9ZS5zaWJsaW5nLChuPW4uc2libGluZz1xcihlLGUucGVuZGluZ1Byb3BzLGUuZXhwaXJhdGlvblRpbWUpKS5yZXR1cm49dDtuLnNpYmxpbmc9bnVsbH1yZXR1cm4gdC5jaGlsZH1mdW5jdGlvbiBNYShlLHQsbil7dmFyIHI9dC5leHBpcmF0aW9uVGltZTtpZihudWxsIT09ZSl7aWYoZS5tZW1vaXplZFByb3BzIT09dC5wZW5kaW5nUHJvcHN8fE5yLmN1cnJlbnQpeGE9ITA7ZWxzZSBpZihyPG4pe3N3aXRjaCh4YT0hMSx0LnRhZyl7Y2FzZSAzOk5hKHQpLFNhKCk7YnJlYWs7Y2FzZSA1Ol9vKHQpO2JyZWFrO2Nhc2UgMTpNcih0LnR5cGUpJiZqcih0KTticmVhaztjYXNlIDQ6d28odCx0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTticmVhaztjYXNlIDEwOmphKHQsdC5tZW1vaXplZFByb3BzLnZhbHVlKTticmVhaztjYXNlIDEzOmlmKG51bGwhPT10Lm1lbW9pemVkU3RhdGUpcmV0dXJuIDAhPT0ocj10LmNoaWxkLmNoaWxkRXhwaXJhdGlvblRpbWUpJiZyPj1uP1JhKGUsdCxuKTpudWxsIT09KHQ9UGEoZSx0LG4pKT90LnNpYmxpbmc6bnVsbH1yZXR1cm4gUGEoZSx0LG4pfX1lbHNlIHhhPSExO3N3aXRjaCh0LmV4cGlyYXRpb25UaW1lPTAsdC50YWcpe2Nhc2UgMjpyPXQuZWxlbWVudFR5cGUsbnVsbCE9PWUmJihlLmFsdGVybmF0ZT1udWxsLHQuYWx0ZXJuYXRlPW51bGwsdC5lZmZlY3RUYWd8PTIpLGU9dC5wZW5kaW5nUHJvcHM7dmFyIG89UHIodCxJci5jdXJyZW50KTtpZih6YSh0LG4pLG89Wm8obnVsbCx0LHIsZSxvLG4pLHQuZWZmZWN0VGFnfD0xLFwib2JqZWN0XCI9PXR5cGVvZiBvJiZudWxsIT09byYmXCJmdW5jdGlvblwiPT10eXBlb2Ygby5yZW5kZXImJnZvaWQgMD09PW8uJCR0eXBlb2Ype2lmKHQudGFnPTEsUW8oKSxNcihyKSl7dmFyIGE9ITA7anIodCl9ZWxzZSBhPSExO3QubWVtb2l6ZWRTdGF0ZT1udWxsIT09by5zdGF0ZSYmdm9pZCAwIT09by5zdGF0ZT9vLnN0YXRlOm51bGw7dmFyIGw9ci5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XCJmdW5jdGlvblwiPT10eXBlb2YgbCYmYW8odCxyLGwsZSksby51cGRhdGVyPWlvLHQuc3RhdGVOb2RlPW8sby5fcmVhY3RJbnRlcm5hbEZpYmVyPXQsY28odCxyLGUsbiksdD1JYShudWxsLHQsciwhMCxhLG4pfWVsc2UgdC50YWc9MCx3YShudWxsLHQsbyxuKSx0PXQuY2hpbGQ7cmV0dXJuIHQ7Y2FzZSAxNjpzd2l0Y2gobz10LmVsZW1lbnRUeXBlLG51bGwhPT1lJiYoZS5hbHRlcm5hdGU9bnVsbCx0LmFsdGVybmF0ZT1udWxsLHQuZWZmZWN0VGFnfD0yKSxhPXQucGVuZGluZ1Byb3BzLGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fcmVzdWx0O3N3aXRjaChlLl9zdGF0dXMpe2Nhc2UgMTpyZXR1cm4gdDtjYXNlIDI6Y2FzZSAwOnRocm93IHQ7ZGVmYXVsdDpzd2l0Y2goZS5fc3RhdHVzPTAsKHQ9KHQ9ZS5fY3RvcikoKSkudGhlbihmdW5jdGlvbih0KXswPT09ZS5fc3RhdHVzJiYodD10LmRlZmF1bHQsZS5fc3RhdHVzPTEsZS5fcmVzdWx0PXQpfSxmdW5jdGlvbih0KXswPT09ZS5fc3RhdHVzJiYoZS5fc3RhdHVzPTIsZS5fcmVzdWx0PXQpfSksZS5fc3RhdHVzKXtjYXNlIDE6cmV0dXJuIGUuX3Jlc3VsdDtjYXNlIDI6dGhyb3cgZS5fcmVzdWx0fXRocm93IGUuX3Jlc3VsdD10LHR9fShvKSx0LnR5cGU9ZSxvPXQudGFnPWZ1bmN0aW9uKGUpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpcmV0dXJuICRyKGUpPzE6MDtpZihudWxsIT1lKXtpZigoZT1lLiQkdHlwZW9mKT09PXR0KXJldHVybiAxMTtpZihlPT09cnQpcmV0dXJuIDE0fXJldHVybiAyfShlKSxhPXJvKGUsYSksbD12b2lkIDAsbyl7Y2FzZSAwOmw9Q2EobnVsbCx0LGUsYSxuKTticmVhaztjYXNlIDE6bD1PYShudWxsLHQsZSxhLG4pO2JyZWFrO2Nhc2UgMTE6bD1rYShudWxsLHQsZSxhLG4pO2JyZWFrO2Nhc2UgMTQ6bD1fYShudWxsLHQsZSxybyhlLnR5cGUsYSkscixuKTticmVhaztkZWZhdWx0OmkoXCIzMDZcIixlLFwiXCIpfXJldHVybiBsO2Nhc2UgMDpyZXR1cm4gcj10LnR5cGUsbz10LnBlbmRpbmdQcm9wcyxDYShlLHQscixvPXQuZWxlbWVudFR5cGU9PT1yP286cm8ocixvKSxuKTtjYXNlIDE6cmV0dXJuIHI9dC50eXBlLG89dC5wZW5kaW5nUHJvcHMsT2EoZSx0LHIsbz10LmVsZW1lbnRUeXBlPT09cj9vOnJvKHIsbyksbik7Y2FzZSAzOnJldHVybiBOYSh0KSxudWxsPT09KHI9dC51cGRhdGVRdWV1ZSkmJmkoXCIyODJcIiksbz1udWxsIT09KG89dC5tZW1vaXplZFN0YXRlKT9vLmVsZW1lbnQ6bnVsbCxuaSh0LHIsdC5wZW5kaW5nUHJvcHMsbnVsbCxuKSwocj10Lm1lbW9pemVkU3RhdGUuZWxlbWVudCk9PT1vPyhTYSgpLHQ9UGEoZSx0LG4pKToobz10LnN0YXRlTm9kZSwobz0obnVsbD09PWV8fG51bGw9PT1lLmNoaWxkKSYmby5oeWRyYXRlKSYmKGZhPWtyKHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLHBhPXQsbz1tYT0hMCksbz8odC5lZmZlY3RUYWd8PTIsdC5jaGlsZD1ibyh0LG51bGwscixuKSk6KHdhKGUsdCxyLG4pLFNhKCkpLHQ9dC5jaGlsZCksdDtjYXNlIDU6cmV0dXJuIF9vKHQpLG51bGw9PT1lJiZiYSh0KSxyPXQudHlwZSxvPXQucGVuZGluZ1Byb3BzLGE9bnVsbCE9PWU/ZS5tZW1vaXplZFByb3BzOm51bGwsbD1vLmNoaWxkcmVuLHlyKHIsbyk/bD1udWxsOm51bGwhPT1hJiZ5cihyLGEpJiYodC5lZmZlY3RUYWd8PTE2KSxBYShlLHQpLDEhPT1uJiYxJnQubW9kZSYmby5oaWRkZW4/KHQuZXhwaXJhdGlvblRpbWU9dC5jaGlsZEV4cGlyYXRpb25UaW1lPTEsdD1udWxsKTood2EoZSx0LGwsbiksdD10LmNoaWxkKSx0O2Nhc2UgNjpyZXR1cm4gbnVsbD09PWUmJmJhKHQpLG51bGw7Y2FzZSAxMzpyZXR1cm4gUmEoZSx0LG4pO2Nhc2UgNDpyZXR1cm4gd28odCx0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxyPXQucGVuZGluZ1Byb3BzLG51bGw9PT1lP3QuY2hpbGQ9aG8odCxudWxsLHIsbik6d2EoZSx0LHIsbiksdC5jaGlsZDtjYXNlIDExOnJldHVybiByPXQudHlwZSxvPXQucGVuZGluZ1Byb3BzLGthKGUsdCxyLG89dC5lbGVtZW50VHlwZT09PXI/bzpybyhyLG8pLG4pO2Nhc2UgNzpyZXR1cm4gd2EoZSx0LHQucGVuZGluZ1Byb3BzLG4pLHQuY2hpbGQ7Y2FzZSA4OmNhc2UgMTI6cmV0dXJuIHdhKGUsdCx0LnBlbmRpbmdQcm9wcy5jaGlsZHJlbixuKSx0LmNoaWxkO2Nhc2UgMTA6ZTp7aWYocj10LnR5cGUuX2NvbnRleHQsbz10LnBlbmRpbmdQcm9wcyxsPXQubWVtb2l6ZWRQcm9wcyxqYSh0LGE9by52YWx1ZSksbnVsbCE9PWwpe3ZhciBzPWwudmFsdWU7aWYoMD09PShhPVF0KHMsYSk/MDowfChcImZ1bmN0aW9uXCI9PXR5cGVvZiByLl9jYWxjdWxhdGVDaGFuZ2VkQml0cz9yLl9jYWxjdWxhdGVDaGFuZ2VkQml0cyhzLGEpOjEwNzM3NDE4MjMpKSl7aWYobC5jaGlsZHJlbj09PW8uY2hpbGRyZW4mJiFOci5jdXJyZW50KXt0PVBhKGUsdCxuKTticmVhayBlfX1lbHNlIGZvcihudWxsIT09KHM9dC5jaGlsZCkmJihzLnJldHVybj10KTtudWxsIT09czspe3ZhciB1PXMuY29udGV4dERlcGVuZGVuY2llcztpZihudWxsIT09dSl7bD1zLmNoaWxkO2Zvcih2YXIgYz11LmZpcnN0O251bGwhPT1jOyl7aWYoYy5jb250ZXh0PT09ciYmMCE9KGMub2JzZXJ2ZWRCaXRzJmEpKXsxPT09cy50YWcmJigoYz1YYShuKSkudGFnPVZhLFFhKHMsYykpLHMuZXhwaXJhdGlvblRpbWU8biYmKHMuZXhwaXJhdGlvblRpbWU9biksbnVsbCE9PShjPXMuYWx0ZXJuYXRlKSYmYy5leHBpcmF0aW9uVGltZTxuJiYoYy5leHBpcmF0aW9uVGltZT1uKSxjPW47Zm9yKHZhciBkPXMucmV0dXJuO251bGwhPT1kOyl7dmFyIHA9ZC5hbHRlcm5hdGU7aWYoZC5jaGlsZEV4cGlyYXRpb25UaW1lPGMpZC5jaGlsZEV4cGlyYXRpb25UaW1lPWMsbnVsbCE9PXAmJnAuY2hpbGRFeHBpcmF0aW9uVGltZTxjJiYocC5jaGlsZEV4cGlyYXRpb25UaW1lPWMpO2Vsc2V7aWYoIShudWxsIT09cCYmcC5jaGlsZEV4cGlyYXRpb25UaW1lPGMpKWJyZWFrO3AuY2hpbGRFeHBpcmF0aW9uVGltZT1jfWQ9ZC5yZXR1cm59dS5leHBpcmF0aW9uVGltZTxuJiYodS5leHBpcmF0aW9uVGltZT1uKTticmVha31jPWMubmV4dH19ZWxzZSBsPTEwPT09cy50YWcmJnMudHlwZT09PXQudHlwZT9udWxsOnMuY2hpbGQ7aWYobnVsbCE9PWwpbC5yZXR1cm49cztlbHNlIGZvcihsPXM7bnVsbCE9PWw7KXtpZihsPT09dCl7bD1udWxsO2JyZWFrfWlmKG51bGwhPT0ocz1sLnNpYmxpbmcpKXtzLnJldHVybj1sLnJldHVybixsPXM7YnJlYWt9bD1sLnJldHVybn1zPWx9fXdhKGUsdCxvLmNoaWxkcmVuLG4pLHQ9dC5jaGlsZH1yZXR1cm4gdDtjYXNlIDk6cmV0dXJuIG89dC50eXBlLHI9KGE9dC5wZW5kaW5nUHJvcHMpLmNoaWxkcmVuLHphKHQsbikscj1yKG89SGEobyxhLnVuc3RhYmxlX29ic2VydmVkQml0cykpLHQuZWZmZWN0VGFnfD0xLHdhKGUsdCxyLG4pLHQuY2hpbGQ7Y2FzZSAxNDpyZXR1cm4gYT1ybyhvPXQudHlwZSx0LnBlbmRpbmdQcm9wcyksX2EoZSx0LG8sYT1ybyhvLnR5cGUsYSkscixuKTtjYXNlIDE1OnJldHVybiBUYShlLHQsdC50eXBlLHQucGVuZGluZ1Byb3BzLHIsbik7Y2FzZSAxNzpyZXR1cm4gcj10LnR5cGUsbz10LnBlbmRpbmdQcm9wcyxvPXQuZWxlbWVudFR5cGU9PT1yP286cm8ocixvKSxudWxsIT09ZSYmKGUuYWx0ZXJuYXRlPW51bGwsdC5hbHRlcm5hdGU9bnVsbCx0LmVmZmVjdFRhZ3w9MiksdC50YWc9MSxNcihyKT8oZT0hMCxqcih0KSk6ZT0hMSx6YSh0LG4pLHNvKHQscixvKSxjbyh0LHIsbyxuKSxJYShudWxsLHQsciwhMCxlLG4pfWkoXCIxNTZcIil9dmFyIExhPXtjdXJyZW50Om51bGx9LERhPW51bGwsRmE9bnVsbCxCYT1udWxsO2Z1bmN0aW9uIGphKGUsdCl7dmFyIG49ZS50eXBlLl9jb250ZXh0O0NyKExhLG4uX2N1cnJlbnRWYWx1ZSksbi5fY3VycmVudFZhbHVlPXR9ZnVuY3Rpb24gVWEoZSl7dmFyIHQ9TGEuY3VycmVudDtBcihMYSksZS50eXBlLl9jb250ZXh0Ll9jdXJyZW50VmFsdWU9dH1mdW5jdGlvbiB6YShlLHQpe0RhPWUsQmE9RmE9bnVsbDt2YXIgbj1lLmNvbnRleHREZXBlbmRlbmNpZXM7bnVsbCE9PW4mJm4uZXhwaXJhdGlvblRpbWU+PXQmJih4YT0hMCksZS5jb250ZXh0RGVwZW5kZW5jaWVzPW51bGx9ZnVuY3Rpb24gSGEoZSx0KXtyZXR1cm4gQmEhPT1lJiYhMSE9PXQmJjAhPT10JiYoXCJudW1iZXJcIj09dHlwZW9mIHQmJjEwNzM3NDE4MjMhPT10fHwoQmE9ZSx0PTEwNzM3NDE4MjMpLHQ9e2NvbnRleHQ6ZSxvYnNlcnZlZEJpdHM6dCxuZXh0Om51bGx9LG51bGw9PT1GYT8obnVsbD09PURhJiZpKFwiMzA4XCIpLEZhPXQsRGEuY29udGV4dERlcGVuZGVuY2llcz17Zmlyc3Q6dCxleHBpcmF0aW9uVGltZTowfSk6RmE9RmEubmV4dD10KSxlLl9jdXJyZW50VmFsdWV9dmFyIFdhPTAsR2E9MSxWYT0yLCRhPTMscWE9ITE7ZnVuY3Rpb24gS2EoZSl7cmV0dXJue2Jhc2VTdGF0ZTplLGZpcnN0VXBkYXRlOm51bGwsbGFzdFVwZGF0ZTpudWxsLGZpcnN0Q2FwdHVyZWRVcGRhdGU6bnVsbCxsYXN0Q2FwdHVyZWRVcGRhdGU6bnVsbCxmaXJzdEVmZmVjdDpudWxsLGxhc3RFZmZlY3Q6bnVsbCxmaXJzdENhcHR1cmVkRWZmZWN0Om51bGwsbGFzdENhcHR1cmVkRWZmZWN0Om51bGx9fWZ1bmN0aW9uIFlhKGUpe3JldHVybntiYXNlU3RhdGU6ZS5iYXNlU3RhdGUsZmlyc3RVcGRhdGU6ZS5maXJzdFVwZGF0ZSxsYXN0VXBkYXRlOmUubGFzdFVwZGF0ZSxmaXJzdENhcHR1cmVkVXBkYXRlOm51bGwsbGFzdENhcHR1cmVkVXBkYXRlOm51bGwsZmlyc3RFZmZlY3Q6bnVsbCxsYXN0RWZmZWN0Om51bGwsZmlyc3RDYXB0dXJlZEVmZmVjdDpudWxsLGxhc3RDYXB0dXJlZEVmZmVjdDpudWxsfX1mdW5jdGlvbiBYYShlKXtyZXR1cm57ZXhwaXJhdGlvblRpbWU6ZSx0YWc6V2EscGF5bG9hZDpudWxsLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsLG5leHRFZmZlY3Q6bnVsbH19ZnVuY3Rpb24gWmEoZSx0KXtudWxsPT09ZS5sYXN0VXBkYXRlP2UuZmlyc3RVcGRhdGU9ZS5sYXN0VXBkYXRlPXQ6KGUubGFzdFVwZGF0ZS5uZXh0PXQsZS5sYXN0VXBkYXRlPXQpfWZ1bmN0aW9uIFFhKGUsdCl7dmFyIG49ZS5hbHRlcm5hdGU7aWYobnVsbD09PW4pe3ZhciByPWUudXBkYXRlUXVldWUsbz1udWxsO251bGw9PT1yJiYocj1lLnVwZGF0ZVF1ZXVlPUthKGUubWVtb2l6ZWRTdGF0ZSkpfWVsc2Ugcj1lLnVwZGF0ZVF1ZXVlLG89bi51cGRhdGVRdWV1ZSxudWxsPT09cj9udWxsPT09bz8ocj1lLnVwZGF0ZVF1ZXVlPUthKGUubWVtb2l6ZWRTdGF0ZSksbz1uLnVwZGF0ZVF1ZXVlPUthKG4ubWVtb2l6ZWRTdGF0ZSkpOnI9ZS51cGRhdGVRdWV1ZT1ZYShvKTpudWxsPT09byYmKG89bi51cGRhdGVRdWV1ZT1ZYShyKSk7bnVsbD09PW98fHI9PT1vP1phKHIsdCk6bnVsbD09PXIubGFzdFVwZGF0ZXx8bnVsbD09PW8ubGFzdFVwZGF0ZT8oWmEocix0KSxaYShvLHQpKTooWmEocix0KSxvLmxhc3RVcGRhdGU9dCl9ZnVuY3Rpb24gSmEoZSx0KXt2YXIgbj1lLnVwZGF0ZVF1ZXVlO251bGw9PT0obj1udWxsPT09bj9lLnVwZGF0ZVF1ZXVlPUthKGUubWVtb2l6ZWRTdGF0ZSk6ZWkoZSxuKSkubGFzdENhcHR1cmVkVXBkYXRlP24uZmlyc3RDYXB0dXJlZFVwZGF0ZT1uLmxhc3RDYXB0dXJlZFVwZGF0ZT10OihuLmxhc3RDYXB0dXJlZFVwZGF0ZS5uZXh0PXQsbi5sYXN0Q2FwdHVyZWRVcGRhdGU9dCl9ZnVuY3Rpb24gZWkoZSx0KXt2YXIgbj1lLmFsdGVybmF0ZTtyZXR1cm4gbnVsbCE9PW4mJnQ9PT1uLnVwZGF0ZVF1ZXVlJiYodD1lLnVwZGF0ZVF1ZXVlPVlhKHQpKSx0fWZ1bmN0aW9uIHRpKGUsdCxuLHIsYSxpKXtzd2l0Y2gobi50YWcpe2Nhc2UgR2E6cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YoZT1uLnBheWxvYWQpP2UuY2FsbChpLHIsYSk6ZTtjYXNlICRhOmUuZWZmZWN0VGFnPS0yMDQ5JmUuZWZmZWN0VGFnfDY0O2Nhc2UgV2E6aWYobnVsbD09KGE9XCJmdW5jdGlvblwiPT10eXBlb2YoZT1uLnBheWxvYWQpP2UuY2FsbChpLHIsYSk6ZSkpYnJlYWs7cmV0dXJuIG8oe30scixhKTtjYXNlIFZhOnFhPSEwfXJldHVybiByfWZ1bmN0aW9uIG5pKGUsdCxuLHIsbyl7cWE9ITE7Zm9yKHZhciBhPSh0PWVpKGUsdCkpLmJhc2VTdGF0ZSxpPW51bGwsbD0wLHM9dC5maXJzdFVwZGF0ZSx1PWE7bnVsbCE9PXM7KXt2YXIgYz1zLmV4cGlyYXRpb25UaW1lO2M8bz8obnVsbD09PWkmJihpPXMsYT11KSxsPGMmJihsPWMpKToodT10aShlLDAscyx1LG4sciksbnVsbCE9PXMuY2FsbGJhY2smJihlLmVmZmVjdFRhZ3w9MzIscy5uZXh0RWZmZWN0PW51bGwsbnVsbD09PXQubGFzdEVmZmVjdD90LmZpcnN0RWZmZWN0PXQubGFzdEVmZmVjdD1zOih0Lmxhc3RFZmZlY3QubmV4dEVmZmVjdD1zLHQubGFzdEVmZmVjdD1zKSkpLHM9cy5uZXh0fWZvcihjPW51bGwscz10LmZpcnN0Q2FwdHVyZWRVcGRhdGU7bnVsbCE9PXM7KXt2YXIgZD1zLmV4cGlyYXRpb25UaW1lO2Q8bz8obnVsbD09PWMmJihjPXMsbnVsbD09PWkmJihhPXUpKSxsPGQmJihsPWQpKToodT10aShlLDAscyx1LG4sciksbnVsbCE9PXMuY2FsbGJhY2smJihlLmVmZmVjdFRhZ3w9MzIscy5uZXh0RWZmZWN0PW51bGwsbnVsbD09PXQubGFzdENhcHR1cmVkRWZmZWN0P3QuZmlyc3RDYXB0dXJlZEVmZmVjdD10Lmxhc3RDYXB0dXJlZEVmZmVjdD1zOih0Lmxhc3RDYXB0dXJlZEVmZmVjdC5uZXh0RWZmZWN0PXMsdC5sYXN0Q2FwdHVyZWRFZmZlY3Q9cykpKSxzPXMubmV4dH1udWxsPT09aSYmKHQubGFzdFVwZGF0ZT1udWxsKSxudWxsPT09Yz90Lmxhc3RDYXB0dXJlZFVwZGF0ZT1udWxsOmUuZWZmZWN0VGFnfD0zMixudWxsPT09aSYmbnVsbD09PWMmJihhPXUpLHQuYmFzZVN0YXRlPWEsdC5maXJzdFVwZGF0ZT1pLHQuZmlyc3RDYXB0dXJlZFVwZGF0ZT1jLGUuZXhwaXJhdGlvblRpbWU9bCxlLm1lbW9pemVkU3RhdGU9dX1mdW5jdGlvbiByaShlLHQsbil7bnVsbCE9PXQuZmlyc3RDYXB0dXJlZFVwZGF0ZSYmKG51bGwhPT10Lmxhc3RVcGRhdGUmJih0Lmxhc3RVcGRhdGUubmV4dD10LmZpcnN0Q2FwdHVyZWRVcGRhdGUsdC5sYXN0VXBkYXRlPXQubGFzdENhcHR1cmVkVXBkYXRlKSx0LmZpcnN0Q2FwdHVyZWRVcGRhdGU9dC5sYXN0Q2FwdHVyZWRVcGRhdGU9bnVsbCksb2kodC5maXJzdEVmZmVjdCxuKSx0LmZpcnN0RWZmZWN0PXQubGFzdEVmZmVjdD1udWxsLG9pKHQuZmlyc3RDYXB0dXJlZEVmZmVjdCxuKSx0LmZpcnN0Q2FwdHVyZWRFZmZlY3Q9dC5sYXN0Q2FwdHVyZWRFZmZlY3Q9bnVsbH1mdW5jdGlvbiBvaShlLHQpe2Zvcig7bnVsbCE9PWU7KXt2YXIgbj1lLmNhbGxiYWNrO2lmKG51bGwhPT1uKXtlLmNhbGxiYWNrPW51bGw7dmFyIHI9dDtcImZ1bmN0aW9uXCIhPXR5cGVvZiBuJiZpKFwiMTkxXCIsbiksbi5jYWxsKHIpfWU9ZS5uZXh0RWZmZWN0fX1mdW5jdGlvbiBhaShlLHQpe3JldHVybnt2YWx1ZTplLHNvdXJjZTp0LHN0YWNrOnN0KHQpfX1mdW5jdGlvbiBpaShlKXtlLmVmZmVjdFRhZ3w9NH12YXIgbGk9dm9pZCAwLHNpPXZvaWQgMCx1aT12b2lkIDAsY2k9dm9pZCAwO2xpPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQuY2hpbGQ7bnVsbCE9PW47KXtpZig1PT09bi50YWd8fDY9PT1uLnRhZyllLmFwcGVuZENoaWxkKG4uc3RhdGVOb2RlKTtlbHNlIGlmKDQhPT1uLnRhZyYmbnVsbCE9PW4uY2hpbGQpe24uY2hpbGQucmV0dXJuPW4sbj1uLmNoaWxkO2NvbnRpbnVlfWlmKG49PT10KWJyZWFrO2Zvcig7bnVsbD09PW4uc2libGluZzspe2lmKG51bGw9PT1uLnJldHVybnx8bi5yZXR1cm49PT10KXJldHVybjtuPW4ucmV0dXJufW4uc2libGluZy5yZXR1cm49bi5yZXR1cm4sbj1uLnNpYmxpbmd9fSxzaT1mdW5jdGlvbigpe30sdWk9ZnVuY3Rpb24oZSx0LG4scixhKXt2YXIgaT1lLm1lbW9pemVkUHJvcHM7aWYoaSE9PXIpe3ZhciBsPXQuc3RhdGVOb2RlO3N3aXRjaCh4byh2by5jdXJyZW50KSxlPW51bGwsbil7Y2FzZVwiaW5wdXRcIjppPXZ0KGwsaSkscj12dChsLHIpLGU9W107YnJlYWs7Y2FzZVwib3B0aW9uXCI6aT1xbihsLGkpLHI9cW4obCxyKSxlPVtdO2JyZWFrO2Nhc2VcInNlbGVjdFwiOmk9byh7fSxpLHt2YWx1ZTp2b2lkIDB9KSxyPW8oe30scix7dmFsdWU6dm9pZCAwfSksZT1bXTticmVhaztjYXNlXCJ0ZXh0YXJlYVwiOmk9WW4obCxpKSxyPVluKGwsciksZT1bXTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIiE9dHlwZW9mIGkub25DbGljayYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5vbkNsaWNrJiYobC5vbmNsaWNrPW1yKX1kcihuLHIpLGw9bj12b2lkIDA7dmFyIHM9bnVsbDtmb3IobiBpbiBpKWlmKCFyLmhhc093blByb3BlcnR5KG4pJiZpLmhhc093blByb3BlcnR5KG4pJiZudWxsIT1pW25dKWlmKFwic3R5bGVcIj09PW4pe3ZhciB1PWlbbl07Zm9yKGwgaW4gdSl1Lmhhc093blByb3BlcnR5KGwpJiYoc3x8KHM9e30pLHNbbF09XCJcIil9ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIiE9PW4mJlwiY2hpbGRyZW5cIiE9PW4mJlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1uJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09biYmXCJhdXRvRm9jdXNcIiE9PW4mJih2Lmhhc093blByb3BlcnR5KG4pP2V8fChlPVtdKTooZT1lfHxbXSkucHVzaChuLG51bGwpKTtmb3IobiBpbiByKXt2YXIgYz1yW25dO2lmKHU9bnVsbCE9aT9pW25dOnZvaWQgMCxyLmhhc093blByb3BlcnR5KG4pJiZjIT09dSYmKG51bGwhPWN8fG51bGwhPXUpKWlmKFwic3R5bGVcIj09PW4paWYodSl7Zm9yKGwgaW4gdSkhdS5oYXNPd25Qcm9wZXJ0eShsKXx8YyYmYy5oYXNPd25Qcm9wZXJ0eShsKXx8KHN8fChzPXt9KSxzW2xdPVwiXCIpO2ZvcihsIGluIGMpYy5oYXNPd25Qcm9wZXJ0eShsKSYmdVtsXSE9PWNbbF0mJihzfHwocz17fSksc1tsXT1jW2xdKX1lbHNlIHN8fChlfHwoZT1bXSksZS5wdXNoKG4scykpLHM9YztlbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09bj8oYz1jP2MuX19odG1sOnZvaWQgMCx1PXU/dS5fX2h0bWw6dm9pZCAwLG51bGwhPWMmJnUhPT1jJiYoZT1lfHxbXSkucHVzaChuLFwiXCIrYykpOlwiY2hpbGRyZW5cIj09PW4/dT09PWN8fFwic3RyaW5nXCIhPXR5cGVvZiBjJiZcIm51bWJlclwiIT10eXBlb2YgY3x8KGU9ZXx8W10pLnB1c2gobixcIlwiK2MpOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1uJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09biYmKHYuaGFzT3duUHJvcGVydHkobik/KG51bGwhPWMmJmZyKGEsbiksZXx8dT09PWN8fChlPVtdKSk6KGU9ZXx8W10pLnB1c2gobixjKSl9cyYmKGU9ZXx8W10pLnB1c2goXCJzdHlsZVwiLHMpLGE9ZSwodC51cGRhdGVRdWV1ZT1hKSYmaWkodCl9fSxjaT1mdW5jdGlvbihlLHQsbixyKXtuIT09ciYmaWkodCl9O3ZhciBkaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBXZWFrU2V0P1dlYWtTZXQ6U2V0O2Z1bmN0aW9uIHBpKGUsdCl7dmFyIG49dC5zb3VyY2Uscj10LnN0YWNrO251bGw9PT1yJiZudWxsIT09biYmKHI9c3QobikpLG51bGwhPT1uJiZsdChuLnR5cGUpLHQ9dC52YWx1ZSxudWxsIT09ZSYmMT09PWUudGFnJiZsdChlLnR5cGUpO3RyeXtjb25zb2xlLmVycm9yKHQpfWNhdGNoKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9fWZ1bmN0aW9uIGZpKGUpe3ZhciB0PWUucmVmO2lmKG51bGwhPT10KWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpdHJ5e3QobnVsbCl9Y2F0Y2godCl7S2koZSx0KX1lbHNlIHQuY3VycmVudD1udWxsfWZ1bmN0aW9uIG1pKGUsdCxuKXtpZihudWxsIT09KG49bnVsbCE9PShuPW4udXBkYXRlUXVldWUpP24ubGFzdEVmZmVjdDpudWxsKSl7dmFyIHI9bj1uLm5leHQ7ZG97aWYoKHIudGFnJmUpIT09QW8pe3ZhciBvPXIuZGVzdHJveTtyLmRlc3Ryb3k9dm9pZCAwLHZvaWQgMCE9PW8mJm8oKX0oci50YWcmdCkhPT1BbyYmKG89ci5jcmVhdGUsci5kZXN0cm95PW8oKSkscj1yLm5leHR9d2hpbGUociE9PW4pfX1mdW5jdGlvbiBnaShlKXtzd2l0Y2goXCJmdW5jdGlvblwiPT10eXBlb2YgSHImJkhyKGUpLGUudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6dmFyIHQ9ZS51cGRhdGVRdWV1ZTtpZihudWxsIT09dCYmbnVsbCE9PSh0PXQubGFzdEVmZmVjdCkpe3ZhciBuPXQ9dC5uZXh0O2Rve3ZhciByPW4uZGVzdHJveTtpZih2b2lkIDAhPT1yKXt2YXIgbz1lO3RyeXtyKCl9Y2F0Y2goZSl7S2kobyxlKX19bj1uLm5leHR9d2hpbGUobiE9PXQpfWJyZWFrO2Nhc2UgMTppZihmaShlKSxcImZ1bmN0aW9uXCI9PXR5cGVvZih0PWUuc3RhdGVOb2RlKS5jb21wb25lbnRXaWxsVW5tb3VudCl0cnl7dC5wcm9wcz1lLm1lbW9pemVkUHJvcHMsdC5zdGF0ZT1lLm1lbW9pemVkU3RhdGUsdC5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKHQpe0tpKGUsdCl9YnJlYWs7Y2FzZSA1OmZpKGUpO2JyZWFrO2Nhc2UgNDp5aShlKX19ZnVuY3Rpb24gaGkoZSl7cmV0dXJuIDU9PT1lLnRhZ3x8Mz09PWUudGFnfHw0PT09ZS50YWd9ZnVuY3Rpb24gYmkoZSl7ZTp7Zm9yKHZhciB0PWUucmV0dXJuO251bGwhPT10Oyl7aWYoaGkodCkpe3ZhciBuPXQ7YnJlYWsgZX10PXQucmV0dXJufWkoXCIxNjBcIiksbj12b2lkIDB9dmFyIHI9dD12b2lkIDA7c3dpdGNoKG4udGFnKXtjYXNlIDU6dD1uLnN0YXRlTm9kZSxyPSExO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dD1uLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLHI9ITA7YnJlYWs7ZGVmYXVsdDppKFwiMTYxXCIpfTE2Jm4uZWZmZWN0VGFnJiYoYXIodCxcIlwiKSxuLmVmZmVjdFRhZyY9LTE3KTtlOnQ6Zm9yKG49ZTs7KXtmb3IoO251bGw9PT1uLnNpYmxpbmc7KXtpZihudWxsPT09bi5yZXR1cm58fGhpKG4ucmV0dXJuKSl7bj1udWxsO2JyZWFrIGV9bj1uLnJldHVybn1mb3Iobi5zaWJsaW5nLnJldHVybj1uLnJldHVybixuPW4uc2libGluZzs1IT09bi50YWcmJjYhPT1uLnRhZyYmMTghPT1uLnRhZzspe2lmKDImbi5lZmZlY3RUYWcpY29udGludWUgdDtpZihudWxsPT09bi5jaGlsZHx8ND09PW4udGFnKWNvbnRpbnVlIHQ7bi5jaGlsZC5yZXR1cm49bixuPW4uY2hpbGR9aWYoISgyJm4uZWZmZWN0VGFnKSl7bj1uLnN0YXRlTm9kZTticmVhayBlfX1mb3IodmFyIG89ZTs7KXtpZig1PT09by50YWd8fDY9PT1vLnRhZylpZihuKWlmKHIpe3ZhciBhPXQsbD1vLnN0YXRlTm9kZSxzPW47OD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsLHMpOmEuaW5zZXJ0QmVmb3JlKGwscyl9ZWxzZSB0Lmluc2VydEJlZm9yZShvLnN0YXRlTm9kZSxuKTtlbHNlIHI/KGw9dCxzPW8uc3RhdGVOb2RlLDg9PT1sLm5vZGVUeXBlPyhhPWwucGFyZW50Tm9kZSkuaW5zZXJ0QmVmb3JlKHMsbCk6KGE9bCkuYXBwZW5kQ2hpbGQocyksbnVsbCE9KGw9bC5fcmVhY3RSb290Q29udGFpbmVyKXx8bnVsbCE9PWEub25jbGlja3x8KGEub25jbGljaz1tcikpOnQuYXBwZW5kQ2hpbGQoby5zdGF0ZU5vZGUpO2Vsc2UgaWYoNCE9PW8udGFnJiZudWxsIT09by5jaGlsZCl7by5jaGlsZC5yZXR1cm49byxvPW8uY2hpbGQ7Y29udGludWV9aWYobz09PWUpYnJlYWs7Zm9yKDtudWxsPT09by5zaWJsaW5nOyl7aWYobnVsbD09PW8ucmV0dXJufHxvLnJldHVybj09PWUpcmV0dXJuO289by5yZXR1cm59by5zaWJsaW5nLnJldHVybj1vLnJldHVybixvPW8uc2libGluZ319ZnVuY3Rpb24geWkoZSl7Zm9yKHZhciB0PWUsbj0hMSxyPXZvaWQgMCxvPXZvaWQgMDs7KXtpZighbil7bj10LnJldHVybjtlOmZvcig7Oyl7c3dpdGNoKG51bGw9PT1uJiZpKFwiMTYwXCIpLG4udGFnKXtjYXNlIDU6cj1uLnN0YXRlTm9kZSxvPSExO2JyZWFrIGU7Y2FzZSAzOmNhc2UgNDpyPW4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sbz0hMDticmVhayBlfW49bi5yZXR1cm59bj0hMH1pZig1PT09dC50YWd8fDY9PT10LnRhZyl7ZTpmb3IodmFyIGE9dCxsPWE7OylpZihnaShsKSxudWxsIT09bC5jaGlsZCYmNCE9PWwudGFnKWwuY2hpbGQucmV0dXJuPWwsbD1sLmNoaWxkO2Vsc2V7aWYobD09PWEpYnJlYWs7Zm9yKDtudWxsPT09bC5zaWJsaW5nOyl7aWYobnVsbD09PWwucmV0dXJufHxsLnJldHVybj09PWEpYnJlYWsgZTtsPWwucmV0dXJufWwuc2libGluZy5yZXR1cm49bC5yZXR1cm4sbD1sLnNpYmxpbmd9bz8oYT1yLGw9dC5zdGF0ZU5vZGUsOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGwpOmEucmVtb3ZlQ2hpbGQobCkpOnIucmVtb3ZlQ2hpbGQodC5zdGF0ZU5vZGUpfWVsc2UgaWYoND09PXQudGFnKXtpZihudWxsIT09dC5jaGlsZCl7cj10LnN0YXRlTm9kZS5jb250YWluZXJJbmZvLG89ITAsdC5jaGlsZC5yZXR1cm49dCx0PXQuY2hpbGQ7Y29udGludWV9fWVsc2UgaWYoZ2kodCksbnVsbCE9PXQuY2hpbGQpe3QuY2hpbGQucmV0dXJuPXQsdD10LmNoaWxkO2NvbnRpbnVlfWlmKHQ9PT1lKWJyZWFrO2Zvcig7bnVsbD09PXQuc2libGluZzspe2lmKG51bGw9PT10LnJldHVybnx8dC5yZXR1cm49PT1lKXJldHVybjs0PT09KHQ9dC5yZXR1cm4pLnRhZyYmKG49ITEpfXQuc2libGluZy5yZXR1cm49dC5yZXR1cm4sdD10LnNpYmxpbmd9fWZ1bmN0aW9uIHZpKGUsdCl7c3dpdGNoKHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6bWkoT28sSW8sdCk7YnJlYWs7Y2FzZSAxOmJyZWFrO2Nhc2UgNTp2YXIgbj10LnN0YXRlTm9kZTtpZihudWxsIT1uKXt2YXIgcj10Lm1lbW9pemVkUHJvcHM7ZT1udWxsIT09ZT9lLm1lbW9pemVkUHJvcHM6cjt2YXIgbz10LnR5cGUsYT10LnVwZGF0ZVF1ZXVlO3QudXBkYXRlUXVldWU9bnVsbCxudWxsIT09YSYmZnVuY3Rpb24oZSx0LG4scixvKXtlW01dPW8sXCJpbnB1dFwiPT09biYmXCJyYWRpb1wiPT09by50eXBlJiZudWxsIT1vLm5hbWUmJkV0KGUsbykscHIobixyKSxyPXByKG4sbyk7Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKz0yKXt2YXIgaT10W2FdLGw9dFthKzFdO1wic3R5bGVcIj09PWk/dXIoZSxsKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1pP29yKGUsbCk6XCJjaGlsZHJlblwiPT09aT9hcihlLGwpOmJ0KGUsaSxsLHIpfXN3aXRjaChuKXtjYXNlXCJpbnB1dFwiOnh0KGUsbyk7YnJlYWs7Y2FzZVwidGV4dGFyZWFcIjpabihlLG8pO2JyZWFrO2Nhc2VcInNlbGVjdFwiOnQ9ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlLGUuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT0hIW8ubXVsdGlwbGUsbnVsbCE9KG49by52YWx1ZSk/S24oZSwhIW8ubXVsdGlwbGUsbiwhMSk6dCE9PSEhby5tdWx0aXBsZSYmKG51bGwhPW8uZGVmYXVsdFZhbHVlP0tuKGUsISFvLm11bHRpcGxlLG8uZGVmYXVsdFZhbHVlLCEwKTpLbihlLCEhby5tdWx0aXBsZSxvLm11bHRpcGxlP1tdOlwiXCIsITEpKX19KG4sYSxvLGUscil9YnJlYWs7Y2FzZSA2Om51bGw9PT10LnN0YXRlTm9kZSYmaShcIjE2MlwiKSx0LnN0YXRlTm9kZS5ub2RlVmFsdWU9dC5tZW1vaXplZFByb3BzO2JyZWFrO2Nhc2UgMzpjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6aWYobj10Lm1lbW9pemVkU3RhdGUscj12b2lkIDAsZT10LG51bGw9PT1uP3I9ITE6KHI9ITAsZT10LmNoaWxkLDA9PT1uLnRpbWVkT3V0QXQmJihuLnRpbWVkT3V0QXQ9eGwoKSkpLG51bGwhPT1lJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lOzspe2lmKDU9PT1uLnRhZyl7dmFyIHI9bi5zdGF0ZU5vZGU7aWYodClyLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7ZWxzZXtyPW4uc3RhdGVOb2RlO3ZhciBvPW4ubWVtb2l6ZWRQcm9wcy5zdHlsZTtvPW51bGwhPW8mJm8uaGFzT3duUHJvcGVydHkoXCJkaXNwbGF5XCIpP28uZGlzcGxheTpudWxsLHIuc3R5bGUuZGlzcGxheT1zcihcImRpc3BsYXlcIixvKX19ZWxzZSBpZig2PT09bi50YWcpbi5zdGF0ZU5vZGUubm9kZVZhbHVlPXQ/XCJcIjpuLm1lbW9pemVkUHJvcHM7ZWxzZXtpZigxMz09PW4udGFnJiZudWxsIT09bi5tZW1vaXplZFN0YXRlKXsocj1uLmNoaWxkLnNpYmxpbmcpLnJldHVybj1uLG49cjtjb250aW51ZX1pZihudWxsIT09bi5jaGlsZCl7bi5jaGlsZC5yZXR1cm49bixuPW4uY2hpbGQ7Y29udGludWV9fWlmKG49PT1lKWJyZWFrO2Zvcig7bnVsbD09PW4uc2libGluZzspe2lmKG51bGw9PT1uLnJldHVybnx8bi5yZXR1cm49PT1lKXJldHVybjtuPW4ucmV0dXJufW4uc2libGluZy5yZXR1cm49bi5yZXR1cm4sbj1uLnNpYmxpbmd9fShlLHIpLG51bGwhPT0obj10LnVwZGF0ZVF1ZXVlKSl7dC51cGRhdGVRdWV1ZT1udWxsO3ZhciBsPXQuc3RhdGVOb2RlO251bGw9PT1sJiYobD10LnN0YXRlTm9kZT1uZXcgZGkpLG4uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuc3RhdGVOb2RlO251bGwhPT1uJiZuLmRlbGV0ZSh0KSx0PVlpKHQ9eGwoKSxlKSxudWxsIT09KGU9WmkoZSx0KSkmJihKcihlLHQpLDAhPT0odD1lLmV4cGlyYXRpb25UaW1lKSYmd2woZSx0KSl9LmJpbmQobnVsbCx0LGUpO2wuaGFzKGUpfHwobC5hZGQoZSksZS50aGVuKG4sbikpfSl9YnJlYWs7Y2FzZSAxNzpicmVhaztkZWZhdWx0OmkoXCIxNjNcIil9fXZhciBTaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBXZWFrTWFwP1dlYWtNYXA6TWFwO2Z1bmN0aW9uIEVpKGUsdCxuKXsobj1YYShuKSkudGFnPSRhLG4ucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgcj10LnZhbHVlO3JldHVybiBuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7UmwocikscGkoZSx0KX0sbn1mdW5jdGlvbiB4aShlLHQsbil7KG49WGEobikpLnRhZz0kYTt2YXIgcj1lLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpe3ZhciBvPXQudmFsdWU7bi5wYXlsb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIHIobyl9fXZhciBhPWUuc3RhdGVOb2RlO3JldHVybiBudWxsIT09YSYmXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb21wb25lbnREaWRDYXRjaCYmKG4uY2FsbGJhY2s9ZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiYobnVsbD09PUJpP0JpPW5ldyBTZXQoW3RoaXNdKTpCaS5hZGQodGhpcykpO3ZhciBuPXQudmFsdWUsbz10LnN0YWNrO3BpKGUsdCksdGhpcy5jb21wb25lbnREaWRDYXRjaChuLHtjb21wb25lbnRTdGFjazpudWxsIT09bz9vOlwiXCJ9KX0pLG59ZnVuY3Rpb24gd2koZSl7c3dpdGNoKGUudGFnKXtjYXNlIDE6TXIoZS50eXBlKSYmTHIoKTt2YXIgdD1lLmVmZmVjdFRhZztyZXR1cm4gMjA0OCZ0PyhlLmVmZmVjdFRhZz0tMjA0OSZ0fDY0LGUpOm51bGw7Y2FzZSAzOnJldHVybiBrbygpLERyKCksMCE9KDY0Jih0PWUuZWZmZWN0VGFnKSkmJmkoXCIyODVcIiksZS5lZmZlY3RUYWc9LTIwNDkmdHw2NCxlO2Nhc2UgNTpyZXR1cm4gVG8oZSksbnVsbDtjYXNlIDEzOnJldHVybiAyMDQ4Jih0PWUuZWZmZWN0VGFnKT8oZS5lZmZlY3RUYWc9LTIwNDkmdHw2NCxlKTpudWxsO2Nhc2UgMTg6cmV0dXJuIG51bGw7Y2FzZSA0OnJldHVybiBrbygpLG51bGw7Y2FzZSAxMDpyZXR1cm4gVWEoZSksbnVsbDtkZWZhdWx0OnJldHVybiBudWxsfX12YXIga2k9R2UuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixfaT1HZS5SZWFjdEN1cnJlbnRPd25lcixUaT0xMDczNzQxODIyLEFpPSExLENpPW51bGwsT2k9bnVsbCxJaT0wLE5pPS0xLFJpPSExLFBpPW51bGwsTWk9ITEsTGk9bnVsbCxEaT1udWxsLEZpPW51bGwsQmk9bnVsbDtmdW5jdGlvbiBqaSgpe2lmKG51bGwhPT1DaSlmb3IodmFyIGU9Q2kucmV0dXJuO251bGwhPT1lOyl7dmFyIHQ9ZTtzd2l0Y2godC50YWcpe2Nhc2UgMTp2YXIgbj10LnR5cGUuY2hpbGRDb250ZXh0VHlwZXM7bnVsbCE9biYmTHIoKTticmVhaztjYXNlIDM6a28oKSxEcigpO2JyZWFrO2Nhc2UgNTpUbyh0KTticmVhaztjYXNlIDQ6a28oKTticmVhaztjYXNlIDEwOlVhKHQpfWU9ZS5yZXR1cm59T2k9bnVsbCxJaT0wLE5pPS0xLFJpPSExLENpPW51bGx9ZnVuY3Rpb24gVWkoKXtmb3IoO251bGwhPT1QaTspe3ZhciBlPVBpLmVmZmVjdFRhZztpZigxNiZlJiZhcihQaS5zdGF0ZU5vZGUsXCJcIiksMTI4JmUpe3ZhciB0PVBpLmFsdGVybmF0ZTtudWxsIT09dCYmKG51bGwhPT0odD10LnJlZikmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QobnVsbCk6dC5jdXJyZW50PW51bGwpKX1zd2l0Y2goMTQmZSl7Y2FzZSAyOmJpKFBpKSxQaS5lZmZlY3RUYWcmPS0zO2JyZWFrO2Nhc2UgNjpiaShQaSksUGkuZWZmZWN0VGFnJj0tMyx2aShQaS5hbHRlcm5hdGUsUGkpO2JyZWFrO2Nhc2UgNDp2aShQaS5hbHRlcm5hdGUsUGkpO2JyZWFrO2Nhc2UgODp5aShlPVBpKSxlLnJldHVybj1udWxsLGUuY2hpbGQ9bnVsbCxlLm1lbW9pemVkU3RhdGU9bnVsbCxlLnVwZGF0ZVF1ZXVlPW51bGwsbnVsbCE9PShlPWUuYWx0ZXJuYXRlKSYmKGUucmV0dXJuPW51bGwsZS5jaGlsZD1udWxsLGUubWVtb2l6ZWRTdGF0ZT1udWxsLGUudXBkYXRlUXVldWU9bnVsbCl9UGk9UGkubmV4dEVmZmVjdH19ZnVuY3Rpb24gemkoKXtmb3IoO251bGwhPT1QaTspe2lmKDI1NiZQaS5lZmZlY3RUYWcpZTp7dmFyIGU9UGkuYWx0ZXJuYXRlLHQ9UGk7c3dpdGNoKHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1Om1pKENvLEFvLHQpO2JyZWFrIGU7Y2FzZSAxOmlmKDI1NiZ0LmVmZmVjdFRhZyYmbnVsbCE9PWUpe3ZhciBuPWUubWVtb2l6ZWRQcm9wcyxyPWUubWVtb2l6ZWRTdGF0ZTt0PShlPXQuc3RhdGVOb2RlKS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSh0LmVsZW1lbnRUeXBlPT09dC50eXBlP246cm8odC50eXBlLG4pLHIpLGUuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9dH1icmVhayBlO2Nhc2UgMzpjYXNlIDU6Y2FzZSA2OmNhc2UgNDpjYXNlIDE3OmJyZWFrIGU7ZGVmYXVsdDppKFwiMTYzXCIpfX1QaT1QaS5uZXh0RWZmZWN0fX1mdW5jdGlvbiBIaShlLHQpe2Zvcig7bnVsbCE9PVBpOyl7dmFyIG49UGkuZWZmZWN0VGFnO2lmKDM2Jm4pe3ZhciByPVBpLmFsdGVybmF0ZSxvPVBpLGE9dDtzd2l0Y2goby50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6bWkoTm8sUm8sbyk7YnJlYWs7Y2FzZSAxOnZhciBsPW8uc3RhdGVOb2RlO2lmKDQmby5lZmZlY3RUYWcpaWYobnVsbD09PXIpbC5jb21wb25lbnREaWRNb3VudCgpO2Vsc2V7dmFyIHM9by5lbGVtZW50VHlwZT09PW8udHlwZT9yLm1lbW9pemVkUHJvcHM6cm8oby50eXBlLHIubWVtb2l6ZWRQcm9wcyk7bC5jb21wb25lbnREaWRVcGRhdGUocyxyLm1lbW9pemVkU3RhdGUsbC5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSl9bnVsbCE9PShyPW8udXBkYXRlUXVldWUpJiZyaSgwLHIsbCk7YnJlYWs7Y2FzZSAzOmlmKG51bGwhPT0ocj1vLnVwZGF0ZVF1ZXVlKSl7aWYobD1udWxsLG51bGwhPT1vLmNoaWxkKXN3aXRjaChvLmNoaWxkLnRhZyl7Y2FzZSA1Omw9by5jaGlsZC5zdGF0ZU5vZGU7YnJlYWs7Y2FzZSAxOmw9by5jaGlsZC5zdGF0ZU5vZGV9cmkoMCxyLGwpfWJyZWFrO2Nhc2UgNTphPW8uc3RhdGVOb2RlLG51bGw9PT1yJiY0Jm8uZWZmZWN0VGFnJiZicihvLnR5cGUsby5tZW1vaXplZFByb3BzKSYmYS5mb2N1cygpO2JyZWFrO2Nhc2UgNjpjYXNlIDQ6Y2FzZSAxMjpjYXNlIDEzOmNhc2UgMTc6YnJlYWs7ZGVmYXVsdDppKFwiMTYzXCIpfX0xMjgmbiYmKG51bGwhPT0obz1QaS5yZWYpJiYoYT1QaS5zdGF0ZU5vZGUsXCJmdW5jdGlvblwiPT10eXBlb2Ygbz9vKGEpOm8uY3VycmVudD1hKSksNTEyJm4mJihMaT1lKSxQaT1QaS5uZXh0RWZmZWN0fX1mdW5jdGlvbiBXaSgpe251bGwhPT1EaSYmeHIoRGkpLG51bGwhPT1GaSYmRmkoKX1mdW5jdGlvbiBHaShlLHQpe01pPUFpPSEwLGUuY3VycmVudD09PXQmJmkoXCIxNzdcIik7dmFyIG49ZS5wZW5kaW5nQ29tbWl0RXhwaXJhdGlvblRpbWU7MD09PW4mJmkoXCIyNjFcIiksZS5wZW5kaW5nQ29tbWl0RXhwaXJhdGlvblRpbWU9MDt2YXIgcj10LmV4cGlyYXRpb25UaW1lLG89dC5jaGlsZEV4cGlyYXRpb25UaW1lO2ZvcihmdW5jdGlvbihlLHQpe2lmKGUuZGlkRXJyb3I9ITEsMD09PXQpZS5lYXJsaWVzdFBlbmRpbmdUaW1lPTAsZS5sYXRlc3RQZW5kaW5nVGltZT0wLGUuZWFybGllc3RTdXNwZW5kZWRUaW1lPTAsZS5sYXRlc3RTdXNwZW5kZWRUaW1lPTAsZS5sYXRlc3RQaW5nZWRUaW1lPTA7ZWxzZXt0PGUubGF0ZXN0UGluZ2VkVGltZSYmKGUubGF0ZXN0UGluZ2VkVGltZT0wKTt2YXIgbj1lLmxhdGVzdFBlbmRpbmdUaW1lOzAhPT1uJiYobj50P2UuZWFybGllc3RQZW5kaW5nVGltZT1lLmxhdGVzdFBlbmRpbmdUaW1lPTA6ZS5lYXJsaWVzdFBlbmRpbmdUaW1lPnQmJihlLmVhcmxpZXN0UGVuZGluZ1RpbWU9ZS5sYXRlc3RQZW5kaW5nVGltZSkpLDA9PT0obj1lLmVhcmxpZXN0U3VzcGVuZGVkVGltZSk/SnIoZSx0KTp0PGUubGF0ZXN0U3VzcGVuZGVkVGltZT8oZS5lYXJsaWVzdFN1c3BlbmRlZFRpbWU9MCxlLmxhdGVzdFN1c3BlbmRlZFRpbWU9MCxlLmxhdGVzdFBpbmdlZFRpbWU9MCxKcihlLHQpKTp0Pm4mJkpyKGUsdCl9bm8oMCxlKX0oZSxvPnI/bzpyKSxfaS5jdXJyZW50PW51bGwscj12b2lkIDAsMTx0LmVmZmVjdFRhZz9udWxsIT09dC5sYXN0RWZmZWN0Pyh0Lmxhc3RFZmZlY3QubmV4dEVmZmVjdD10LHI9dC5maXJzdEVmZmVjdCk6cj10OnI9dC5maXJzdEVmZmVjdCxncj1rbixocj1mdW5jdGlvbigpe3ZhciBlPURuKCk7aWYoRm4oZSkpe2lmKFwic2VsZWN0aW9uU3RhcnRcImluIGUpdmFyIHQ9e3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9uRW5kfTtlbHNlIGU6e3ZhciBuPSh0PSh0PWUub3duZXJEb2N1bWVudCkmJnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uJiZ0LmdldFNlbGVjdGlvbigpO2lmKG4mJjAhPT1uLnJhbmdlQ291bnQpe3Q9bi5hbmNob3JOb2RlO3ZhciByPW4uYW5jaG9yT2Zmc2V0LG89bi5mb2N1c05vZGU7bj1uLmZvY3VzT2Zmc2V0O3RyeXt0Lm5vZGVUeXBlLG8ubm9kZVR5cGV9Y2F0Y2goZSl7dD1udWxsO2JyZWFrIGV9dmFyIGE9MCxpPS0xLGw9LTEscz0wLHU9MCxjPWUsZD1udWxsO3Q6Zm9yKDs7KXtmb3IodmFyIHA7YyE9PXR8fDAhPT1yJiYzIT09Yy5ub2RlVHlwZXx8KGk9YStyKSxjIT09b3x8MCE9PW4mJjMhPT1jLm5vZGVUeXBlfHwobD1hK24pLDM9PT1jLm5vZGVUeXBlJiYoYSs9Yy5ub2RlVmFsdWUubGVuZ3RoKSxudWxsIT09KHA9Yy5maXJzdENoaWxkKTspZD1jLGM9cDtmb3IoOzspe2lmKGM9PT1lKWJyZWFrIHQ7aWYoZD09PXQmJisrcz09PXImJihpPWEpLGQ9PT1vJiYrK3U9PT1uJiYobD1hKSxudWxsIT09KHA9Yy5uZXh0U2libGluZykpYnJlYWs7ZD0oYz1kKS5wYXJlbnROb2RlfWM9cH10PS0xPT09aXx8LTE9PT1sP251bGw6e3N0YXJ0OmksZW5kOmx9fWVsc2UgdD1udWxsfXQ9dHx8e3N0YXJ0OjAsZW5kOjB9fWVsc2UgdD1udWxsO3JldHVybntmb2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOnR9fSgpLGtuPSExLFBpPXI7bnVsbCE9PVBpOyl7bz0hMTt2YXIgbD12b2lkIDA7dHJ5e3ppKCl9Y2F0Y2goZSl7bz0hMCxsPWV9byYmKG51bGw9PT1QaSYmaShcIjE3OFwiKSxLaShQaSxsKSxudWxsIT09UGkmJihQaT1QaS5uZXh0RWZmZWN0KSl9Zm9yKFBpPXI7bnVsbCE9PVBpOyl7bz0hMSxsPXZvaWQgMDt0cnl7VWkoKX1jYXRjaChlKXtvPSEwLGw9ZX1vJiYobnVsbD09PVBpJiZpKFwiMTc4XCIpLEtpKFBpLGwpLG51bGwhPT1QaSYmKFBpPVBpLm5leHRFZmZlY3QpKX1mb3IoQm4oaHIpLGhyPW51bGwsa249ISFncixncj1udWxsLGUuY3VycmVudD10LFBpPXI7bnVsbCE9PVBpOyl7bz0hMSxsPXZvaWQgMDt0cnl7SGkoZSxuKX1jYXRjaChlKXtvPSEwLGw9ZX1vJiYobnVsbD09PVBpJiZpKFwiMTc4XCIpLEtpKFBpLGwpLG51bGwhPT1QaSYmKFBpPVBpLm5leHRFZmZlY3QpKX1pZihudWxsIT09ciYmbnVsbCE9PUxpKXt2YXIgcz1mdW5jdGlvbihlLHQpe0ZpPURpPUxpPW51bGw7dmFyIG49b2w7b2w9ITA7ZG97aWYoNTEyJnQuZWZmZWN0VGFnKXt2YXIgcj0hMSxvPXZvaWQgMDt0cnl7dmFyIGE9dDttaShNbyxBbyxhKSxtaShBbyxQbyxhKX1jYXRjaChlKXtyPSEwLG89ZX1yJiZLaSh0LG8pfXQ9dC5uZXh0RWZmZWN0fXdoaWxlKG51bGwhPT10KTtvbD1uLDAhPT0obj1lLmV4cGlyYXRpb25UaW1lKSYmd2woZSxuKSxjbHx8b2x8fENsKDEwNzM3NDE4MjMsITEpfS5iaW5kKG51bGwsZSxyKTtEaT1hLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eShhLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LGZ1bmN0aW9uKCl7cmV0dXJuIEVyKHMpfSksRmk9c31BaT1NaT0hMSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB6ciYmenIodC5zdGF0ZU5vZGUpLG49dC5leHBpcmF0aW9uVGltZSwwPT09KHQ9KHQ9dC5jaGlsZEV4cGlyYXRpb25UaW1lKT5uP3Q6bikmJihCaT1udWxsKSxmdW5jdGlvbihlLHQpe2UuZXhwaXJhdGlvblRpbWU9dCxlLmZpbmlzaGVkV29yaz1udWxsfShlLHQpfWZ1bmN0aW9uIFZpKGUpe2Zvcig7Oyl7dmFyIHQ9ZS5hbHRlcm5hdGUsbj1lLnJldHVybixyPWUuc2libGluZztpZigwPT0oMTAyNCZlLmVmZmVjdFRhZykpe0NpPWU7ZTp7dmFyIGE9dCxsPUlpLHM9KHQ9ZSkucGVuZGluZ1Byb3BzO3N3aXRjaCh0LnRhZyl7Y2FzZSAyOmNhc2UgMTY6YnJlYWs7Y2FzZSAxNTpjYXNlIDA6YnJlYWs7Y2FzZSAxOk1yKHQudHlwZSkmJkxyKCk7YnJlYWs7Y2FzZSAzOmtvKCksRHIoKSwocz10LnN0YXRlTm9kZSkucGVuZGluZ0NvbnRleHQmJihzLmNvbnRleHQ9cy5wZW5kaW5nQ29udGV4dCxzLnBlbmRpbmdDb250ZXh0PW51bGwpLG51bGwhPT1hJiZudWxsIT09YS5jaGlsZHx8KHZhKHQpLHQuZWZmZWN0VGFnJj0tMyksc2kodCk7YnJlYWs7Y2FzZSA1OlRvKHQpO3ZhciB1PXhvKEVvLmN1cnJlbnQpO2lmKGw9dC50eXBlLG51bGwhPT1hJiZudWxsIT10LnN0YXRlTm9kZSl1aShhLHQsbCxzLHUpLGEucmVmIT09dC5yZWYmJih0LmVmZmVjdFRhZ3w9MTI4KTtlbHNlIGlmKHMpe3ZhciBjPXhvKHZvLmN1cnJlbnQpO2lmKHZhKHQpKXthPShzPXQpLnN0YXRlTm9kZTt2YXIgZD1zLnR5cGUscD1zLm1lbW9pemVkUHJvcHMsZj11O3N3aXRjaChhW1BdPXMsYVtNXT1wLGw9dm9pZCAwLHU9ZCl7Y2FzZVwiaWZyYW1lXCI6Y2FzZVwib2JqZWN0XCI6X24oXCJsb2FkXCIsYSk7YnJlYWs7Y2FzZVwidmlkZW9cIjpjYXNlXCJhdWRpb1wiOmZvcihkPTA7ZDx0ZS5sZW5ndGg7ZCsrKV9uKHRlW2RdLGEpO2JyZWFrO2Nhc2VcInNvdXJjZVwiOl9uKFwiZXJyb3JcIixhKTticmVhaztjYXNlXCJpbWdcIjpjYXNlXCJpbWFnZVwiOmNhc2VcImxpbmtcIjpfbihcImVycm9yXCIsYSksX24oXCJsb2FkXCIsYSk7YnJlYWs7Y2FzZVwiZm9ybVwiOl9uKFwicmVzZXRcIixhKSxfbihcInN1Ym1pdFwiLGEpO2JyZWFrO2Nhc2VcImRldGFpbHNcIjpfbihcInRvZ2dsZVwiLGEpO2JyZWFrO2Nhc2VcImlucHV0XCI6U3QoYSxwKSxfbihcImludmFsaWRcIixhKSxmcihmLFwib25DaGFuZ2VcIik7YnJlYWs7Y2FzZVwic2VsZWN0XCI6YS5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIXAubXVsdGlwbGV9LF9uKFwiaW52YWxpZFwiLGEpLGZyKGYsXCJvbkNoYW5nZVwiKTticmVhaztjYXNlXCJ0ZXh0YXJlYVwiOlhuKGEscCksX24oXCJpbnZhbGlkXCIsYSksZnIoZixcIm9uQ2hhbmdlXCIpfWZvcihsIGluIGRyKHUscCksZD1udWxsLHApcC5oYXNPd25Qcm9wZXJ0eShsKSYmKGM9cFtsXSxcImNoaWxkcmVuXCI9PT1sP1wic3RyaW5nXCI9PXR5cGVvZiBjP2EudGV4dENvbnRlbnQhPT1jJiYoZD1bXCJjaGlsZHJlblwiLGNdKTpcIm51bWJlclwiPT10eXBlb2YgYyYmYS50ZXh0Q29udGVudCE9PVwiXCIrYyYmKGQ9W1wiY2hpbGRyZW5cIixcIlwiK2NdKTp2Lmhhc093blByb3BlcnR5KGwpJiZudWxsIT1jJiZmcihmLGwpKTtzd2l0Y2godSl7Y2FzZVwiaW5wdXRcIjpIZShhKSx3dChhLHAsITApO2JyZWFrO2Nhc2VcInRleHRhcmVhXCI6SGUoYSksUW4oYSk7YnJlYWs7Y2FzZVwic2VsZWN0XCI6Y2FzZVwib3B0aW9uXCI6YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PXR5cGVvZiBwLm9uQ2xpY2smJihhLm9uY2xpY2s9bXIpfWw9ZCxzLnVwZGF0ZVF1ZXVlPWwsKHM9bnVsbCE9PWwpJiZpaSh0KX1lbHNle3A9dCxhPWwsZj1zLGQ9OT09PXUubm9kZVR5cGU/dTp1Lm93bmVyRG9jdW1lbnQsYz09PUpuLmh0bWwmJihjPWVyKGEpKSxjPT09Sm4uaHRtbD9cInNjcmlwdFwiPT09YT8oKGE9ZC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5pbm5lckhUTUw9XCI8c2NyaXB0PjxcXC9zY3JpcHQ+XCIsZD1hLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCkpOlwic3RyaW5nXCI9PXR5cGVvZiBmLmlzP2Q9ZC5jcmVhdGVFbGVtZW50KGEse2lzOmYuaXN9KTooZD1kLmNyZWF0ZUVsZW1lbnQoYSksXCJzZWxlY3RcIj09PWEmJmYubXVsdGlwbGUmJihkLm11bHRpcGxlPSEwKSk6ZD1kLmNyZWF0ZUVsZW1lbnROUyhjLGEpLChhPWQpW1BdPXAsYVtNXT1zLGxpKGEsdCwhMSwhMSksZj1hO3ZhciBtPXUsZz1wcihkPWwscD1zKTtzd2l0Y2goZCl7Y2FzZVwiaWZyYW1lXCI6Y2FzZVwib2JqZWN0XCI6X24oXCJsb2FkXCIsZiksdT1wO2JyZWFrO2Nhc2VcInZpZGVvXCI6Y2FzZVwiYXVkaW9cIjpmb3IodT0wO3U8dGUubGVuZ3RoO3UrKylfbih0ZVt1XSxmKTt1PXA7YnJlYWs7Y2FzZVwic291cmNlXCI6X24oXCJlcnJvclwiLGYpLHU9cDticmVhaztjYXNlXCJpbWdcIjpjYXNlXCJpbWFnZVwiOmNhc2VcImxpbmtcIjpfbihcImVycm9yXCIsZiksX24oXCJsb2FkXCIsZiksdT1wO2JyZWFrO2Nhc2VcImZvcm1cIjpfbihcInJlc2V0XCIsZiksX24oXCJzdWJtaXRcIixmKSx1PXA7YnJlYWs7Y2FzZVwiZGV0YWlsc1wiOl9uKFwidG9nZ2xlXCIsZiksdT1wO2JyZWFrO2Nhc2VcImlucHV0XCI6U3QoZixwKSx1PXZ0KGYscCksX24oXCJpbnZhbGlkXCIsZiksZnIobSxcIm9uQ2hhbmdlXCIpO2JyZWFrO2Nhc2VcIm9wdGlvblwiOnU9cW4oZixwKTticmVhaztjYXNlXCJzZWxlY3RcIjpmLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhcC5tdWx0aXBsZX0sdT1vKHt9LHAse3ZhbHVlOnZvaWQgMH0pLF9uKFwiaW52YWxpZFwiLGYpLGZyKG0sXCJvbkNoYW5nZVwiKTticmVhaztjYXNlXCJ0ZXh0YXJlYVwiOlhuKGYscCksdT1ZbihmLHApLF9uKFwiaW52YWxpZFwiLGYpLGZyKG0sXCJvbkNoYW5nZVwiKTticmVhaztkZWZhdWx0OnU9cH1kcihkLHUpLGM9dm9pZCAwO3ZhciBoPWQsYj1mLHk9dTtmb3IoYyBpbiB5KWlmKHkuaGFzT3duUHJvcGVydHkoYykpe3ZhciBTPXlbY107XCJzdHlsZVwiPT09Yz91cihiLFMpOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWM/bnVsbCE9KFM9Uz9TLl9faHRtbDp2b2lkIDApJiZvcihiLFMpOlwiY2hpbGRyZW5cIj09PWM/XCJzdHJpbmdcIj09dHlwZW9mIFM/KFwidGV4dGFyZWFcIiE9PWh8fFwiXCIhPT1TKSYmYXIoYixTKTpcIm51bWJlclwiPT10eXBlb2YgUyYmYXIoYixcIlwiK1MpOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1jJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09YyYmXCJhdXRvRm9jdXNcIiE9PWMmJih2Lmhhc093blByb3BlcnR5KGMpP251bGwhPVMmJmZyKG0sYyk6bnVsbCE9UyYmYnQoYixjLFMsZykpfXN3aXRjaChkKXtjYXNlXCJpbnB1dFwiOkhlKGYpLHd0KGYscCwhMSk7YnJlYWs7Y2FzZVwidGV4dGFyZWFcIjpIZShmKSxRbihmKTticmVhaztjYXNlXCJvcHRpb25cIjpudWxsIT1wLnZhbHVlJiZmLnNldEF0dHJpYnV0ZShcInZhbHVlXCIsXCJcIit5dChwLnZhbHVlKSk7YnJlYWs7Y2FzZVwic2VsZWN0XCI6KHU9ZikubXVsdGlwbGU9ISFwLm11bHRpcGxlLG51bGwhPShmPXAudmFsdWUpP0tuKHUsISFwLm11bHRpcGxlLGYsITEpOm51bGwhPXAuZGVmYXVsdFZhbHVlJiZLbih1LCEhcC5tdWx0aXBsZSxwLmRlZmF1bHRWYWx1ZSwhMCk7YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PXR5cGVvZiB1Lm9uQ2xpY2smJihmLm9uY2xpY2s9bXIpfShzPWJyKGwscykpJiZpaSh0KSx0LnN0YXRlTm9kZT1hfW51bGwhPT10LnJlZiYmKHQuZWZmZWN0VGFnfD0xMjgpfWVsc2UgbnVsbD09PXQuc3RhdGVOb2RlJiZpKFwiMTY2XCIpO2JyZWFrO2Nhc2UgNjphJiZudWxsIT10LnN0YXRlTm9kZT9jaShhLHQsYS5tZW1vaXplZFByb3BzLHMpOihcInN0cmluZ1wiIT10eXBlb2YgcyYmKG51bGw9PT10LnN0YXRlTm9kZSYmaShcIjE2NlwiKSksYT14byhFby5jdXJyZW50KSx4byh2by5jdXJyZW50KSx2YSh0KT8obD0ocz10KS5zdGF0ZU5vZGUsYT1zLm1lbW9pemVkUHJvcHMsbFtQXT1zLChzPWwubm9kZVZhbHVlIT09YSkmJmlpKHQpKToobD10LChzPSg5PT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUocykpW1BdPXQsbC5zdGF0ZU5vZGU9cykpO2JyZWFrO2Nhc2UgMTE6YnJlYWs7Y2FzZSAxMzppZihzPXQubWVtb2l6ZWRTdGF0ZSwwIT0oNjQmdC5lZmZlY3RUYWcpKXt0LmV4cGlyYXRpb25UaW1lPWwsQ2k9dDticmVhayBlfXM9bnVsbCE9PXMsbD1udWxsIT09YSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSxudWxsIT09YSYmIXMmJmwmJihudWxsIT09KGE9YS5jaGlsZC5zaWJsaW5nKSYmKG51bGwhPT0odT10LmZpcnN0RWZmZWN0KT8odC5maXJzdEVmZmVjdD1hLGEubmV4dEVmZmVjdD11KToodC5maXJzdEVmZmVjdD10Lmxhc3RFZmZlY3Q9YSxhLm5leHRFZmZlY3Q9bnVsbCksYS5lZmZlY3RUYWc9OCkpLChzfHxsKSYmKHQuZWZmZWN0VGFnfD00KTticmVhaztjYXNlIDc6Y2FzZSA4OmNhc2UgMTI6YnJlYWs7Y2FzZSA0OmtvKCksc2kodCk7YnJlYWs7Y2FzZSAxMDpVYSh0KTticmVhaztjYXNlIDk6Y2FzZSAxNDpicmVhaztjYXNlIDE3Ok1yKHQudHlwZSkmJkxyKCk7YnJlYWs7Y2FzZSAxODpicmVhaztkZWZhdWx0OmkoXCIxNTZcIil9Q2k9bnVsbH1pZih0PWUsMT09PUlpfHwxIT09dC5jaGlsZEV4cGlyYXRpb25UaW1lKXtmb3Iocz0wLGw9dC5jaGlsZDtudWxsIT09bDspKGE9bC5leHBpcmF0aW9uVGltZSk+cyYmKHM9YSksKHU9bC5jaGlsZEV4cGlyYXRpb25UaW1lKT5zJiYocz11KSxsPWwuc2libGluZzt0LmNoaWxkRXhwaXJhdGlvblRpbWU9c31pZihudWxsIT09Q2kpcmV0dXJuIENpO251bGwhPT1uJiYwPT0oMTAyNCZuLmVmZmVjdFRhZykmJihudWxsPT09bi5maXJzdEVmZmVjdCYmKG4uZmlyc3RFZmZlY3Q9ZS5maXJzdEVmZmVjdCksbnVsbCE9PWUubGFzdEVmZmVjdCYmKG51bGwhPT1uLmxhc3RFZmZlY3QmJihuLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1lLmZpcnN0RWZmZWN0KSxuLmxhc3RFZmZlY3Q9ZS5sYXN0RWZmZWN0KSwxPGUuZWZmZWN0VGFnJiYobnVsbCE9PW4ubGFzdEVmZmVjdD9uLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1lOm4uZmlyc3RFZmZlY3Q9ZSxuLmxhc3RFZmZlY3Q9ZSkpfWVsc2V7aWYobnVsbCE9PShlPXdpKGUpKSlyZXR1cm4gZS5lZmZlY3RUYWcmPTEwMjMsZTtudWxsIT09biYmKG4uZmlyc3RFZmZlY3Q9bi5sYXN0RWZmZWN0PW51bGwsbi5lZmZlY3RUYWd8PTEwMjQpfWlmKG51bGwhPT1yKXJldHVybiByO2lmKG51bGw9PT1uKWJyZWFrO2U9bn1yZXR1cm4gbnVsbH1mdW5jdGlvbiAkaShlKXt2YXIgdD1NYShlLmFsdGVybmF0ZSxlLElpKTtyZXR1cm4gZS5tZW1vaXplZFByb3BzPWUucGVuZGluZ1Byb3BzLG51bGw9PT10JiYodD1WaShlKSksX2kuY3VycmVudD1udWxsLHR9ZnVuY3Rpb24gcWkoZSx0KXtBaSYmaShcIjI0M1wiKSxXaSgpLEFpPSEwO3ZhciBuPWtpLmN1cnJlbnQ7a2kuY3VycmVudD11YTt2YXIgcj1lLm5leHRFeHBpcmF0aW9uVGltZVRvV29ya09uO3I9PT1JaSYmZT09PU9pJiZudWxsIT09Q2l8fChqaSgpLElpPXIsQ2k9cXIoKE9pPWUpLmN1cnJlbnQsbnVsbCksZS5wZW5kaW5nQ29tbWl0RXhwaXJhdGlvblRpbWU9MCk7Zm9yKHZhciBvPSExOzspe3RyeXtpZih0KWZvcig7bnVsbCE9PUNpJiYhVGwoKTspQ2k9JGkoQ2kpO2Vsc2UgZm9yKDtudWxsIT09Q2k7KUNpPSRpKENpKX1jYXRjaCh0KXtpZihCYT1GYT1EYT1udWxsLFFvKCksbnVsbD09PUNpKW89ITAsUmwodCk7ZWxzZXtudWxsPT09Q2kmJmkoXCIyNzFcIik7dmFyIGE9Q2ksbD1hLnJldHVybjtpZihudWxsIT09bCl7ZTp7dmFyIHM9ZSx1PWwsYz1hLGQ9dDtpZihsPUlpLGMuZWZmZWN0VGFnfD0xMDI0LGMuZmlyc3RFZmZlY3Q9Yy5sYXN0RWZmZWN0PW51bGwsbnVsbCE9PWQmJlwib2JqZWN0XCI9PXR5cGVvZiBkJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBkLnRoZW4pe3ZhciBwPWQ7ZD11O3ZhciBmPS0xLG09LTE7ZG97aWYoMTM9PT1kLnRhZyl7dmFyIGc9ZC5hbHRlcm5hdGU7aWYobnVsbCE9PWcmJm51bGwhPT0oZz1nLm1lbW9pemVkU3RhdGUpKXttPTEwKigxMDczNzQxODIyLWcudGltZWRPdXRBdCk7YnJlYWt9XCJudW1iZXJcIj09dHlwZW9mKGc9ZC5wZW5kaW5nUHJvcHMubWF4RHVyYXRpb24pJiYoMD49Zz9mPTA6KC0xPT09Znx8ZzxmKSYmKGY9ZykpfWQ9ZC5yZXR1cm59d2hpbGUobnVsbCE9PWQpO2Q9dTtkb3tpZigoZz0xMz09PWQudGFnKSYmKGc9dm9pZCAwIT09ZC5tZW1vaXplZFByb3BzLmZhbGxiYWNrJiZudWxsPT09ZC5tZW1vaXplZFN0YXRlKSxnKXtpZihudWxsPT09KHU9ZC51cGRhdGVRdWV1ZSk/KCh1PW5ldyBTZXQpLmFkZChwKSxkLnVwZGF0ZVF1ZXVlPXUpOnUuYWRkKHApLDA9PSgxJmQubW9kZSkpe2QuZWZmZWN0VGFnfD02NCxjLmVmZmVjdFRhZyY9LTE5NTcsMT09PWMudGFnJiYobnVsbD09PWMuYWx0ZXJuYXRlP2MudGFnPTE3OigobD1YYSgxMDczNzQxODIzKSkudGFnPVZhLFFhKGMsbCkpKSxjLmV4cGlyYXRpb25UaW1lPTEwNzM3NDE4MjM7YnJlYWsgZX11PWw7dmFyIGg9KGM9cykucGluZ0NhY2hlO251bGw9PT1oPyhoPWMucGluZ0NhY2hlPW5ldyBTaSxnPW5ldyBTZXQsaC5zZXQocCxnKSk6dm9pZCAwPT09KGc9aC5nZXQocCkpJiYoZz1uZXcgU2V0LGguc2V0KHAsZykpLGcuaGFzKHUpfHwoZy5hZGQodSksYz1YaS5iaW5kKG51bGwsYyxwLHUpLHAudGhlbihjLGMpKSwtMT09PWY/cz0xMDczNzQxODIzOigtMT09PW0mJihtPTEwKigxMDczNzQxODIyLXRvKHMsbCkpLTVlMykscz1tK2YpLDA8PXMmJk5pPHMmJihOaT1zKSxkLmVmZmVjdFRhZ3w9MjA0OCxkLmV4cGlyYXRpb25UaW1lPWw7YnJlYWsgZX1kPWQucmV0dXJufXdoaWxlKG51bGwhPT1kKTtkPUVycm9yKChsdChjLnR5cGUpfHxcIkEgUmVhY3QgY29tcG9uZW50XCIpK1wiIHN1c3BlbmRlZCB3aGlsZSByZW5kZXJpbmcsIGJ1dCBubyBmYWxsYmFjayBVSSB3YXMgc3BlY2lmaWVkLlxcblxcbkFkZCBhIDxTdXNwZW5zZSBmYWxsYmFjaz0uLi4+IGNvbXBvbmVudCBoaWdoZXIgaW4gdGhlIHRyZWUgdG8gcHJvdmlkZSBhIGxvYWRpbmcgaW5kaWNhdG9yIG9yIHBsYWNlaG9sZGVyIHRvIGRpc3BsYXkuXCIrc3QoYykpfVJpPSEwLGQ9YWkoZCxjKSxzPXU7ZG97c3dpdGNoKHMudGFnKXtjYXNlIDM6cy5lZmZlY3RUYWd8PTIwNDgscy5leHBpcmF0aW9uVGltZT1sLEphKHMsbD1FaShzLGQsbCkpO2JyZWFrIGU7Y2FzZSAxOmlmKGY9ZCxtPXMudHlwZSxjPXMuc3RhdGVOb2RlLDA9PSg2NCZzLmVmZmVjdFRhZykmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBtLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8bnVsbCE9PWMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGMuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09Qml8fCFCaS5oYXMoYykpKSl7cy5lZmZlY3RUYWd8PTIwNDgscy5leHBpcmF0aW9uVGltZT1sLEphKHMsbD14aShzLGYsbCkpO2JyZWFrIGV9fXM9cy5yZXR1cm59d2hpbGUobnVsbCE9PXMpfUNpPVZpKGEpO2NvbnRpbnVlfW89ITAsUmwodCl9fWJyZWFrfWlmKEFpPSExLGtpLmN1cnJlbnQ9bixCYT1GYT1EYT1udWxsLFFvKCksbylPaT1udWxsLGUuZmluaXNoZWRXb3JrPW51bGw7ZWxzZSBpZihudWxsIT09Q2kpZS5maW5pc2hlZFdvcms9bnVsbDtlbHNle2lmKG51bGw9PT0obj1lLmN1cnJlbnQuYWx0ZXJuYXRlKSYmaShcIjI4MVwiKSxPaT1udWxsLFJpKXtpZihvPWUubGF0ZXN0UGVuZGluZ1RpbWUsYT1lLmxhdGVzdFN1c3BlbmRlZFRpbWUsbD1lLmxhdGVzdFBpbmdlZFRpbWUsMCE9PW8mJm88cnx8MCE9PWEmJmE8cnx8MCE9PWwmJmw8cilyZXR1cm4gZW8oZSxyKSx2b2lkIEVsKGUsbixyLGUuZXhwaXJhdGlvblRpbWUsLTEpO2lmKCFlLmRpZEVycm9yJiZ0KXJldHVybiBlLmRpZEVycm9yPSEwLHI9ZS5uZXh0RXhwaXJhdGlvblRpbWVUb1dvcmtPbj1yLHQ9ZS5leHBpcmF0aW9uVGltZT0xMDczNzQxODIzLHZvaWQgRWwoZSxuLHIsdCwtMSl9dCYmLTEhPT1OaT8oZW8oZSxyKSwodD0xMCooMTA3Mzc0MTgyMi10byhlLHIpKSk8TmkmJihOaT10KSx0PTEwKigxMDczNzQxODIyLXhsKCkpLHQ9TmktdCxFbChlLG4scixlLmV4cGlyYXRpb25UaW1lLDA+dD8wOnQpKTooZS5wZW5kaW5nQ29tbWl0RXhwaXJhdGlvblRpbWU9cixlLmZpbmlzaGVkV29yaz1uKX19ZnVuY3Rpb24gS2koZSx0KXtmb3IodmFyIG49ZS5yZXR1cm47bnVsbCE9PW47KXtzd2l0Y2gobi50YWcpe2Nhc2UgMTp2YXIgcj1uLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiByLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PUJpfHwhQmkuaGFzKHIpKSlyZXR1cm4gUWEobixlPXhpKG4sZT1haSh0LGUpLDEwNzM3NDE4MjMpKSx2b2lkIFFpKG4sMTA3Mzc0MTgyMyk7YnJlYWs7Y2FzZSAzOnJldHVybiBRYShuLGU9RWkobixlPWFpKHQsZSksMTA3Mzc0MTgyMykpLHZvaWQgUWkobiwxMDczNzQxODIzKX1uPW4ucmV0dXJufTM9PT1lLnRhZyYmKFFhKGUsbj1FaShlLG49YWkodCxlKSwxMDczNzQxODIzKSksUWkoZSwxMDczNzQxODIzKSl9ZnVuY3Rpb24gWWkoZSx0KXt2YXIgbj1hLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsKCkscj12b2lkIDA7aWYoMD09KDEmdC5tb2RlKSlyPTEwNzM3NDE4MjM7ZWxzZSBpZihBaSYmIU1pKXI9SWk7ZWxzZXtzd2l0Y2gobil7Y2FzZSBhLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5OnI9MTA3Mzc0MTgyMzticmVhaztjYXNlIGEudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk6cj0xMDczNzQxODIyLTEwKigxKygoMTA3Mzc0MTgyMi1lKzE1KS8xMHwwKSk7YnJlYWs7Y2FzZSBhLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5OnI9MTA3Mzc0MTgyMi0yNSooMSsoKDEwNzM3NDE4MjItZSs1MDApLzI1fDApKTticmVhaztjYXNlIGEudW5zdGFibGVfTG93UHJpb3JpdHk6Y2FzZSBhLnVuc3RhYmxlX0lkbGVQcmlvcml0eTpyPTE7YnJlYWs7ZGVmYXVsdDppKFwiMzEzXCIpfW51bGwhPT1PaSYmcj09PUlpJiYtLXJ9cmV0dXJuIG49PT1hLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5JiYoMD09PWxsfHxyPGxsKSYmKGxsPXIpLHJ9ZnVuY3Rpb24gWGkoZSx0LG4pe3ZhciByPWUucGluZ0NhY2hlO251bGwhPT1yJiZyLmRlbGV0ZSh0KSxudWxsIT09T2kmJklpPT09bj9PaT1udWxsOih0PWUuZWFybGllc3RTdXNwZW5kZWRUaW1lLHI9ZS5sYXRlc3RTdXNwZW5kZWRUaW1lLDAhPT10JiZuPD10JiZuPj1yJiYoZS5kaWRFcnJvcj0hMSwoMD09PSh0PWUubGF0ZXN0UGluZ2VkVGltZSl8fHQ+bikmJihlLmxhdGVzdFBpbmdlZFRpbWU9biksbm8obixlKSwwIT09KG49ZS5leHBpcmF0aW9uVGltZSkmJndsKGUsbikpKX1mdW5jdGlvbiBaaShlLHQpe2UuZXhwaXJhdGlvblRpbWU8dCYmKGUuZXhwaXJhdGlvblRpbWU9dCk7dmFyIG49ZS5hbHRlcm5hdGU7bnVsbCE9PW4mJm4uZXhwaXJhdGlvblRpbWU8dCYmKG4uZXhwaXJhdGlvblRpbWU9dCk7dmFyIHI9ZS5yZXR1cm4sbz1udWxsO2lmKG51bGw9PT1yJiYzPT09ZS50YWcpbz1lLnN0YXRlTm9kZTtlbHNlIGZvcig7bnVsbCE9PXI7KXtpZihuPXIuYWx0ZXJuYXRlLHIuY2hpbGRFeHBpcmF0aW9uVGltZTx0JiYoci5jaGlsZEV4cGlyYXRpb25UaW1lPXQpLG51bGwhPT1uJiZuLmNoaWxkRXhwaXJhdGlvblRpbWU8dCYmKG4uY2hpbGRFeHBpcmF0aW9uVGltZT10KSxudWxsPT09ci5yZXR1cm4mJjM9PT1yLnRhZyl7bz1yLnN0YXRlTm9kZTticmVha31yPXIucmV0dXJufXJldHVybiBvfWZ1bmN0aW9uIFFpKGUsdCl7bnVsbCE9PShlPVppKGUsdCkpJiYoIUFpJiYwIT09SWkmJnQ+SWkmJmppKCksSnIoZSx0KSxBaSYmIU1pJiZPaT09PWV8fHdsKGUsZS5leHBpcmF0aW9uVGltZSksYmw+aGwmJihibD0wLGkoXCIxODVcIikpKX1mdW5jdGlvbiBKaShlLHQsbixyLG8pe3JldHVybiBhLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eShhLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5LGZ1bmN0aW9uKCl7cmV0dXJuIGUodCxuLHIsbyl9KX12YXIgZWw9bnVsbCx0bD1udWxsLG5sPTAscmw9dm9pZCAwLG9sPSExLGFsPW51bGwsaWw9MCxsbD0wLHNsPSExLHVsPW51bGwsY2w9ITEsZGw9ITEscGw9bnVsbCxmbD1hLnVuc3RhYmxlX25vdygpLG1sPTEwNzM3NDE4MjItKGZsLzEwfDApLGdsPW1sLGhsPTUwLGJsPTAseWw9bnVsbDtmdW5jdGlvbiB2bCgpe21sPTEwNzM3NDE4MjItKChhLnVuc3RhYmxlX25vdygpLWZsKS8xMHwwKX1mdW5jdGlvbiBTbChlLHQpe2lmKDAhPT1ubCl7aWYodDxubClyZXR1cm47bnVsbCE9PXJsJiZhLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrKHJsKX1ubD10LGU9YS51bnN0YWJsZV9ub3coKS1mbCxybD1hLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soQWwse3RpbWVvdXQ6MTAqKDEwNzM3NDE4MjItdCktZX0pfWZ1bmN0aW9uIEVsKGUsdCxuLHIsbyl7ZS5leHBpcmF0aW9uVGltZT1yLDAhPT1vfHxUbCgpPzA8byYmKGUudGltZW91dEhhbmRsZT12cihmdW5jdGlvbihlLHQsbil7ZS5wZW5kaW5nQ29tbWl0RXhwaXJhdGlvblRpbWU9bixlLmZpbmlzaGVkV29yaz10LHZsKCksZ2w9bWwsT2woZSxuKX0uYmluZChudWxsLGUsdCxuKSxvKSk6KGUucGVuZGluZ0NvbW1pdEV4cGlyYXRpb25UaW1lPW4sZS5maW5pc2hlZFdvcms9dCl9ZnVuY3Rpb24geGwoKXtyZXR1cm4gb2w/Z2w6KGtsKCksMCE9PWlsJiYxIT09aWx8fCh2bCgpLGdsPW1sKSxnbCl9ZnVuY3Rpb24gd2woZSx0KXtudWxsPT09ZS5uZXh0U2NoZWR1bGVkUm9vdD8oZS5leHBpcmF0aW9uVGltZT10LG51bGw9PT10bD8oZWw9dGw9ZSxlLm5leHRTY2hlZHVsZWRSb290PWUpOih0bD10bC5uZXh0U2NoZWR1bGVkUm9vdD1lKS5uZXh0U2NoZWR1bGVkUm9vdD1lbCk6dD5lLmV4cGlyYXRpb25UaW1lJiYoZS5leHBpcmF0aW9uVGltZT10KSxvbHx8KGNsP2RsJiYoYWw9ZSxpbD0xMDczNzQxODIzLElsKGUsMTA3Mzc0MTgyMywhMSkpOjEwNzM3NDE4MjM9PT10P0NsKDEwNzM3NDE4MjMsITEpOlNsKGUsdCkpfWZ1bmN0aW9uIGtsKCl7dmFyIGU9MCx0PW51bGw7aWYobnVsbCE9PXRsKWZvcih2YXIgbj10bCxyPWVsO251bGwhPT1yOyl7dmFyIG89ci5leHBpcmF0aW9uVGltZTtpZigwPT09byl7aWYoKG51bGw9PT1ufHxudWxsPT09dGwpJiZpKFwiMjQ0XCIpLHI9PT1yLm5leHRTY2hlZHVsZWRSb290KXtlbD10bD1yLm5leHRTY2hlZHVsZWRSb290PW51bGw7YnJlYWt9aWYocj09PWVsKWVsPW89ci5uZXh0U2NoZWR1bGVkUm9vdCx0bC5uZXh0U2NoZWR1bGVkUm9vdD1vLHIubmV4dFNjaGVkdWxlZFJvb3Q9bnVsbDtlbHNle2lmKHI9PT10bCl7KHRsPW4pLm5leHRTY2hlZHVsZWRSb290PWVsLHIubmV4dFNjaGVkdWxlZFJvb3Q9bnVsbDticmVha31uLm5leHRTY2hlZHVsZWRSb290PXIubmV4dFNjaGVkdWxlZFJvb3Qsci5uZXh0U2NoZWR1bGVkUm9vdD1udWxsfXI9bi5uZXh0U2NoZWR1bGVkUm9vdH1lbHNle2lmKG8+ZSYmKGU9byx0PXIpLHI9PT10bClicmVhaztpZigxMDczNzQxODIzPT09ZSlicmVhaztuPXIscj1yLm5leHRTY2hlZHVsZWRSb290fX1hbD10LGlsPWV9dmFyIF9sPSExO2Z1bmN0aW9uIFRsKCl7cmV0dXJuISFfbHx8ISFhLnVuc3RhYmxlX3Nob3VsZFlpZWxkKCkmJihfbD0hMCl9ZnVuY3Rpb24gQWwoKXt0cnl7aWYoIVRsKCkmJm51bGwhPT1lbCl7dmwoKTt2YXIgZT1lbDtkb3t2YXIgdD1lLmV4cGlyYXRpb25UaW1lOzAhPT10JiZtbDw9dCYmKGUubmV4dEV4cGlyYXRpb25UaW1lVG9Xb3JrT249bWwpLGU9ZS5uZXh0U2NoZWR1bGVkUm9vdH13aGlsZShlIT09ZWwpfUNsKDAsITApfWZpbmFsbHl7X2w9ITF9fWZ1bmN0aW9uIENsKGUsdCl7aWYoa2woKSx0KWZvcih2bCgpLGdsPW1sO251bGwhPT1hbCYmMCE9PWlsJiZlPD1pbCYmIShfbCYmbWw+aWwpOylJbChhbCxpbCxtbD5pbCksa2woKSx2bCgpLGdsPW1sO2Vsc2UgZm9yKDtudWxsIT09YWwmJjAhPT1pbCYmZTw9aWw7KUlsKGFsLGlsLCExKSxrbCgpO2lmKHQmJihubD0wLHJsPW51bGwpLDAhPT1pbCYmU2woYWwsaWwpLGJsPTAseWw9bnVsbCxudWxsIT09cGwpZm9yKGU9cGwscGw9bnVsbCx0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciBuPWVbdF07dHJ5e24uX29uQ29tcGxldGUoKX1jYXRjaChlKXtzbHx8KHNsPSEwLHVsPWUpfX1pZihzbCl0aHJvdyBlPXVsLHVsPW51bGwsc2w9ITEsZX1mdW5jdGlvbiBPbChlLHQpe29sJiZpKFwiMjUzXCIpLGFsPWUsaWw9dCxJbChlLHQsITEpLENsKDEwNzM3NDE4MjMsITEpfWZ1bmN0aW9uIElsKGUsdCxuKXtpZihvbCYmaShcIjI0NVwiKSxvbD0hMCxuKXt2YXIgcj1lLmZpbmlzaGVkV29yaztudWxsIT09cj9ObChlLHIsdCk6KGUuZmluaXNoZWRXb3JrPW51bGwsLTEhPT0ocj1lLnRpbWVvdXRIYW5kbGUpJiYoZS50aW1lb3V0SGFuZGxlPS0xLFNyKHIpKSxxaShlLG4pLG51bGwhPT0ocj1lLmZpbmlzaGVkV29yaykmJihUbCgpP2UuZmluaXNoZWRXb3JrPXI6TmwoZSxyLHQpKSl9ZWxzZSBudWxsIT09KHI9ZS5maW5pc2hlZFdvcmspP05sKGUscix0KTooZS5maW5pc2hlZFdvcms9bnVsbCwtMSE9PShyPWUudGltZW91dEhhbmRsZSkmJihlLnRpbWVvdXRIYW5kbGU9LTEsU3IocikpLHFpKGUsbiksbnVsbCE9PShyPWUuZmluaXNoZWRXb3JrKSYmTmwoZSxyLHQpKTtvbD0hMX1mdW5jdGlvbiBObChlLHQsbil7dmFyIHI9ZS5maXJzdEJhdGNoO2lmKG51bGwhPT1yJiZyLl9leHBpcmF0aW9uVGltZT49biYmKG51bGw9PT1wbD9wbD1bcl06cGwucHVzaChyKSxyLl9kZWZlcikpcmV0dXJuIGUuZmluaXNoZWRXb3JrPXQsdm9pZChlLmV4cGlyYXRpb25UaW1lPTApO2UuZmluaXNoZWRXb3JrPW51bGwsZT09PXlsP2JsKys6KHlsPWUsYmw9MCksYS51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHkoYS51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxmdW5jdGlvbigpe0dpKGUsdCl9KX1mdW5jdGlvbiBSbChlKXtudWxsPT09YWwmJmkoXCIyNDZcIiksYWwuZXhwaXJhdGlvblRpbWU9MCxzbHx8KHNsPSEwLHVsPWUpfWZ1bmN0aW9uIFBsKGUsdCl7dmFyIG49Y2w7Y2w9ITA7dHJ5e3JldHVybiBlKHQpfWZpbmFsbHl7KGNsPW4pfHxvbHx8Q2woMTA3Mzc0MTgyMywhMSl9fWZ1bmN0aW9uIE1sKGUsdCl7aWYoY2wmJiFkbCl7ZGw9ITA7dHJ5e3JldHVybiBlKHQpfWZpbmFsbHl7ZGw9ITF9fXJldHVybiBlKHQpfWZ1bmN0aW9uIExsKGUsdCxuKXtjbHx8b2x8fDA9PT1sbHx8KENsKGxsLCExKSxsbD0wKTt2YXIgcj1jbDtjbD0hMDt0cnl7cmV0dXJuIGEudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5KGEudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksZnVuY3Rpb24oKXtyZXR1cm4gZSh0LG4pfSl9ZmluYWxseXsoY2w9cil8fG9sfHxDbCgxMDczNzQxODIzLCExKX19ZnVuY3Rpb24gRGwoZSx0LG4scixvKXt2YXIgYT10LmN1cnJlbnQ7ZTppZihuKXt0OnsyPT09dG4obj1uLl9yZWFjdEludGVybmFsRmliZXIpJiYxPT09bi50YWd8fGkoXCIxNzBcIik7dmFyIGw9bjtkb3tzd2l0Y2gobC50YWcpe2Nhc2UgMzpsPWwuc3RhdGVOb2RlLmNvbnRleHQ7YnJlYWsgdDtjYXNlIDE6aWYoTXIobC50eXBlKSl7bD1sLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayB0fX1sPWwucmV0dXJufXdoaWxlKG51bGwhPT1sKTtpKFwiMTcxXCIpLGw9dm9pZCAwfWlmKDE9PT1uLnRhZyl7dmFyIHM9bi50eXBlO2lmKE1yKHMpKXtuPUJyKG4scyxsKTticmVhayBlfX1uPWx9ZWxzZSBuPU9yO3JldHVybiBudWxsPT09dC5jb250ZXh0P3QuY29udGV4dD1uOnQucGVuZGluZ0NvbnRleHQ9bix0PW8sKG89WGEocikpLnBheWxvYWQ9e2VsZW1lbnQ6ZX0sbnVsbCE9PSh0PXZvaWQgMD09PXQ/bnVsbDp0KSYmKG8uY2FsbGJhY2s9dCksV2koKSxRYShhLG8pLFFpKGEscikscn1mdW5jdGlvbiBGbChlLHQsbixyKXt2YXIgbz10LmN1cnJlbnQ7cmV0dXJuIERsKGUsdCxuLG89WWkoeGwoKSxvKSxyKX1mdW5jdGlvbiBCbChlKXtpZighKGU9ZS5jdXJyZW50KS5jaGlsZClyZXR1cm4gbnVsbDtzd2l0Y2goZS5jaGlsZC50YWcpe2Nhc2UgNTpkZWZhdWx0OnJldHVybiBlLmNoaWxkLnN0YXRlTm9kZX19ZnVuY3Rpb24gamwoZSl7dmFyIHQ9MTA3Mzc0MTgyMi0yNSooMSsoKDEwNzM3NDE4MjIteGwoKSs1MDApLzI1fDApKTt0Pj1UaSYmKHQ9VGktMSksdGhpcy5fZXhwaXJhdGlvblRpbWU9VGk9dCx0aGlzLl9yb290PWUsdGhpcy5fY2FsbGJhY2tzPXRoaXMuX25leHQ9bnVsbCx0aGlzLl9oYXNDaGlsZHJlbj10aGlzLl9kaWRDb21wbGV0ZT0hMSx0aGlzLl9jaGlsZHJlbj1udWxsLHRoaXMuX2RlZmVyPSEwfWZ1bmN0aW9uIFVsKCl7dGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fZGlkQ29tbWl0PSExLHRoaXMuX29uQ29tbWl0PXRoaXMuX29uQ29tbWl0LmJpbmQodGhpcyl9ZnVuY3Rpb24gemwoZSx0LG4pe2U9e2N1cnJlbnQ6dD1WcigzLG51bGwsbnVsbCx0PzM6MCksY29udGFpbmVySW5mbzplLHBlbmRpbmdDaGlsZHJlbjpudWxsLHBpbmdDYWNoZTpudWxsLGVhcmxpZXN0UGVuZGluZ1RpbWU6MCxsYXRlc3RQZW5kaW5nVGltZTowLGVhcmxpZXN0U3VzcGVuZGVkVGltZTowLGxhdGVzdFN1c3BlbmRlZFRpbWU6MCxsYXRlc3RQaW5nZWRUaW1lOjAsZGlkRXJyb3I6ITEscGVuZGluZ0NvbW1pdEV4cGlyYXRpb25UaW1lOjAsZmluaXNoZWRXb3JrOm51bGwsdGltZW91dEhhbmRsZTotMSxjb250ZXh0Om51bGwscGVuZGluZ0NvbnRleHQ6bnVsbCxoeWRyYXRlOm4sbmV4dEV4cGlyYXRpb25UaW1lVG9Xb3JrT246MCxleHBpcmF0aW9uVGltZTowLGZpcnN0QmF0Y2g6bnVsbCxuZXh0U2NoZWR1bGVkUm9vdDpudWxsfSx0aGlzLl9pbnRlcm5hbFJvb3Q9dC5zdGF0ZU5vZGU9ZX1mdW5jdGlvbiBIbChlKXtyZXR1cm4hKCFlfHwxIT09ZS5ub2RlVHlwZSYmOSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZSYmKDghPT1lLm5vZGVUeXBlfHxcIiByZWFjdC1tb3VudC1wb2ludC11bnN0YWJsZSBcIiE9PWUubm9kZVZhbHVlKSl9ZnVuY3Rpb24gV2woZSx0LG4scixvKXt2YXIgYT1uLl9yZWFjdFJvb3RDb250YWluZXI7aWYoYSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbyl7dmFyIGk9bztvPWZ1bmN0aW9uKCl7dmFyIGU9QmwoYS5faW50ZXJuYWxSb290KTtpLmNhbGwoZSl9fW51bGwhPWU/YS5sZWdhY3lfcmVuZGVyU3VidHJlZUludG9Db250YWluZXIoZSx0LG8pOmEucmVuZGVyKHQsbyl9ZWxzZXtpZihhPW4uX3JlYWN0Um9vdENvbnRhaW5lcj1mdW5jdGlvbihlLHQpe2lmKHR8fCh0PSEoISh0PWU/OT09PWUubm9kZVR5cGU/ZS5kb2N1bWVudEVsZW1lbnQ6ZS5maXJzdENoaWxkOm51bGwpfHwxIT09dC5ub2RlVHlwZXx8IXQuaGFzQXR0cmlidXRlKFwiZGF0YS1yZWFjdHJvb3RcIikpKSwhdClmb3IodmFyIG47bj1lLmxhc3RDaGlsZDspZS5yZW1vdmVDaGlsZChuKTtyZXR1cm4gbmV3IHpsKGUsITEsdCl9KG4sciksXCJmdW5jdGlvblwiPT10eXBlb2Ygbyl7dmFyIGw9bztvPWZ1bmN0aW9uKCl7dmFyIGU9QmwoYS5faW50ZXJuYWxSb290KTtsLmNhbGwoZSl9fU1sKGZ1bmN0aW9uKCl7bnVsbCE9ZT9hLmxlZ2FjeV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihlLHQsbyk6YS5yZW5kZXIodCxvKX0pfXJldHVybiBCbChhLl9pbnRlcm5hbFJvb3QpfWZ1bmN0aW9uIEdsKGUsdCl7dmFyIG49Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7cmV0dXJuIEhsKHQpfHxpKFwiMjAwXCIpLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDtyZXR1cm57JCR0eXBlb2Y6S2Usa2V5Om51bGw9PXI/bnVsbDpcIlwiK3IsY2hpbGRyZW46ZSxjb250YWluZXJJbmZvOnQsaW1wbGVtZW50YXRpb246bn19KGUsdCxudWxsLG4pfVRlPWZ1bmN0aW9uKGUsdCxuKXtzd2l0Y2godCl7Y2FzZVwiaW5wdXRcIjppZih4dChlLG4pLHQ9bi5uYW1lLFwicmFkaW9cIj09PW4udHlwZSYmbnVsbCE9dCl7Zm9yKG49ZTtuLnBhcmVudE5vZGU7KW49bi5wYXJlbnROb2RlO2ZvcihuPW4ucXVlcnlTZWxlY3RvckFsbChcImlucHV0W25hbWU9XCIrSlNPTi5zdHJpbmdpZnkoXCJcIit0KSsnXVt0eXBlPVwicmFkaW9cIl0nKSx0PTA7dDxuLmxlbmd0aDt0Kyspe3ZhciByPW5bdF07aWYociE9PWUmJnIuZm9ybT09PWUuZm9ybSl7dmFyIG89QihyKTtvfHxpKFwiOTBcIiksV2UocikseHQocixvKX19fWJyZWFrO2Nhc2VcInRleHRhcmVhXCI6Wm4oZSxuKTticmVhaztjYXNlXCJzZWxlY3RcIjpudWxsIT0odD1uLnZhbHVlKSYmS24oZSwhIW4ubXVsdGlwbGUsdCwhMSl9fSxqbC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpe3RoaXMuX2RlZmVyfHxpKFwiMjUwXCIpLHRoaXMuX2hhc0NoaWxkcmVuPSEwLHRoaXMuX2NoaWxkcmVuPWU7dmFyIHQ9dGhpcy5fcm9vdC5faW50ZXJuYWxSb290LG49dGhpcy5fZXhwaXJhdGlvblRpbWUscj1uZXcgVWw7cmV0dXJuIERsKGUsdCxudWxsLG4sci5fb25Db21taXQpLHJ9LGpsLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2RpZENvbXBsZXRlKWUoKTtlbHNle3ZhciB0PXRoaXMuX2NhbGxiYWNrcztudWxsPT09dCYmKHQ9dGhpcy5fY2FsbGJhY2tzPVtdKSx0LnB1c2goZSl9fSxqbC5wcm90b3R5cGUuY29tbWl0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fcm9vdC5faW50ZXJuYWxSb290LHQ9ZS5maXJzdEJhdGNoO2lmKHRoaXMuX2RlZmVyJiZudWxsIT09dHx8aShcIjI1MVwiKSx0aGlzLl9oYXNDaGlsZHJlbil7dmFyIG49dGhpcy5fZXhwaXJhdGlvblRpbWU7aWYodCE9PXRoaXMpe3RoaXMuX2hhc0NoaWxkcmVuJiYobj10aGlzLl9leHBpcmF0aW9uVGltZT10Ll9leHBpcmF0aW9uVGltZSx0aGlzLnJlbmRlcih0aGlzLl9jaGlsZHJlbikpO2Zvcih2YXIgcj1udWxsLG89dDtvIT09dGhpczspcj1vLG89by5fbmV4dDtudWxsPT09ciYmaShcIjI1MVwiKSxyLl9uZXh0PW8uX25leHQsdGhpcy5fbmV4dD10LGUuZmlyc3RCYXRjaD10aGlzfXRoaXMuX2RlZmVyPSExLE9sKGUsbiksdD10aGlzLl9uZXh0LHRoaXMuX25leHQ9bnVsbCxudWxsIT09KHQ9ZS5maXJzdEJhdGNoPXQpJiZ0Ll9oYXNDaGlsZHJlbiYmdC5yZW5kZXIodC5fY2hpbGRyZW4pfWVsc2UgdGhpcy5fbmV4dD1udWxsLHRoaXMuX2RlZmVyPSExfSxqbC5wcm90b3R5cGUuX29uQ29tcGxldGU9ZnVuY3Rpb24oKXtpZighdGhpcy5fZGlkQ29tcGxldGUpe3RoaXMuX2RpZENvbXBsZXRlPSEwO3ZhciBlPXRoaXMuX2NhbGxiYWNrcztpZihudWxsIT09ZSlmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKykoMCxlW3RdKSgpfX0sVWwucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oZSl7aWYodGhpcy5fZGlkQ29tbWl0KWUoKTtlbHNle3ZhciB0PXRoaXMuX2NhbGxiYWNrcztudWxsPT09dCYmKHQ9dGhpcy5fY2FsbGJhY2tzPVtdKSx0LnB1c2goZSl9fSxVbC5wcm90b3R5cGUuX29uQ29tbWl0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2RpZENvbW1pdCl7dGhpcy5fZGlkQ29tbWl0PSEwO3ZhciBlPXRoaXMuX2NhbGxiYWNrcztpZihudWxsIT09ZSlmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG49ZVt0XTtcImZ1bmN0aW9uXCIhPXR5cGVvZiBuJiZpKFwiMTkxXCIsbiksbigpfX19LHpsLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9pbnRlcm5hbFJvb3Qscj1uZXcgVWw7cmV0dXJuIG51bGwhPT0odD12b2lkIDA9PT10P251bGw6dCkmJnIudGhlbih0KSxGbChlLG4sbnVsbCxyLl9vbkNvbW1pdCkscn0semwucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faW50ZXJuYWxSb290LG49bmV3IFVsO3JldHVybiBudWxsIT09KGU9dm9pZCAwPT09ZT9udWxsOmUpJiZuLnRoZW4oZSksRmwobnVsbCx0LG51bGwsbi5fb25Db21taXQpLG59LHpsLnByb3RvdHlwZS5sZWdhY3lfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2ludGVybmFsUm9vdCxvPW5ldyBVbDtyZXR1cm4gbnVsbCE9PShuPXZvaWQgMD09PW4/bnVsbDpuKSYmby50aGVuKG4pLEZsKHQscixlLG8uX29uQ29tbWl0KSxvfSx6bC5wcm90b3R5cGUuY3JlYXRlQmF0Y2g9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgamwodGhpcyksdD1lLl9leHBpcmF0aW9uVGltZSxuPXRoaXMuX2ludGVybmFsUm9vdCxyPW4uZmlyc3RCYXRjaDtpZihudWxsPT09ciluLmZpcnN0QmF0Y2g9ZSxlLl9uZXh0PW51bGw7ZWxzZXtmb3Iobj1udWxsO251bGwhPT1yJiZyLl9leHBpcmF0aW9uVGltZT49dDspbj1yLHI9ci5fbmV4dDtlLl9uZXh0PXIsbnVsbCE9PW4mJihuLl9uZXh0PWUpfXJldHVybiBlfSxSZT1QbCxQZT1MbCxNZT1mdW5jdGlvbigpe29sfHwwPT09bGx8fChDbChsbCwhMSksbGw9MCl9O3ZhciBWbD17Y3JlYXRlUG9ydGFsOkdsLGZpbmRET01Ob2RlOmZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoMT09PWUubm9kZVR5cGUpcmV0dXJuIGU7dmFyIHQ9ZS5fcmVhY3RJbnRlcm5hbEZpYmVyO3JldHVybiB2b2lkIDA9PT10JiYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5yZW5kZXI/aShcIjE4OFwiKTppKFwiMjY4XCIsT2JqZWN0LmtleXMoZSkpKSxlPW51bGw9PT0oZT1ybih0KSk/bnVsbDplLnN0YXRlTm9kZX0saHlkcmF0ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEhsKHQpfHxpKFwiMjAwXCIpLFdsKG51bGwsZSx0LCEwLG4pfSxyZW5kZXI6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBIbCh0KXx8aShcIjIwMFwiKSxXbChudWxsLGUsdCwhMSxuKX0sdW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIEhsKG4pfHxpKFwiMjAwXCIpLChudWxsPT1lfHx2b2lkIDA9PT1lLl9yZWFjdEludGVybmFsRmliZXIpJiZpKFwiMzhcIiksV2woZSx0LG4sITEscil9LHVubW91bnRDb21wb25lbnRBdE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIEhsKGUpfHxpKFwiNDBcIiksISFlLl9yZWFjdFJvb3RDb250YWluZXImJihNbChmdW5jdGlvbigpe1dsKG51bGwsbnVsbCxlLCExLGZ1bmN0aW9uKCl7ZS5fcmVhY3RSb290Q29udGFpbmVyPW51bGx9KX0pLCEwKX0sdW5zdGFibGVfY3JlYXRlUG9ydGFsOmZ1bmN0aW9uKCl7cmV0dXJuIEdsLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfSx1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczpQbCx1bnN0YWJsZV9pbnRlcmFjdGl2ZVVwZGF0ZXM6TGwsZmx1c2hTeW5jOmZ1bmN0aW9uKGUsdCl7b2wmJmkoXCIxODdcIik7dmFyIG49Y2w7Y2w9ITA7dHJ5e3JldHVybiBKaShlLHQpfWZpbmFsbHl7Y2w9bixDbCgxMDczNzQxODIzLCExKX19LHVuc3RhYmxlX2NyZWF0ZVJvb3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSGwoZSl8fGkoXCIyOTlcIixcInVuc3RhYmxlX2NyZWF0ZVJvb3RcIiksbmV3IHpsKGUsITAsbnVsbCE9dCYmITA9PT10Lmh5ZHJhdGUpfSx1bnN0YWJsZV9mbHVzaENvbnRyb2xsZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9Y2w7Y2w9ITA7dHJ5e0ppKGUpfWZpbmFsbHl7KGNsPXQpfHxvbHx8Q2woMTA3Mzc0MTgyMywhMSl9fSxfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDp7RXZlbnRzOltELEYsQixPLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSx5LEcsZnVuY3Rpb24oZSl7VChlLFcpfSxJZSxOZSxDbixOXX19OyFmdW5jdGlvbihlKXt2YXIgdD1lLmZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOyhmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKXJldHVybiExO3ZhciB0PV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZih0LmlzRGlzYWJsZWR8fCF0LnN1cHBvcnRzRmliZXIpcmV0dXJuITA7dHJ5e3ZhciBuPXQuaW5qZWN0KGUpO3pyPVdyKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm9uQ29tbWl0RmliZXJSb290KG4sZSl9KSxIcj1XcihmdW5jdGlvbihlKXtyZXR1cm4gdC5vbkNvbW1pdEZpYmVyVW5tb3VudChuLGUpfSl9Y2F0Y2goZSl7fX0pKG8oe30sZSx7b3ZlcnJpZGVQcm9wczpudWxsLGN1cnJlbnREaXNwYXRjaGVyUmVmOkdlLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZmluZEhvc3RJbnN0YW5jZUJ5RmliZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT0oZT1ybihlKSk/bnVsbDplLnN0YXRlTm9kZX0sZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHQ/dChlKTpudWxsfX0pKX0oe2ZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOkwsYnVuZGxlVHlwZTowLHZlcnNpb246XCIxNi44LjNcIixyZW5kZXJlclBhY2thZ2VOYW1lOlwicmVhY3QtZG9tXCJ9KTt2YXIgJGw9e2RlZmF1bHQ6Vmx9LHFsPSRsJiZWbHx8JGw7ZS5leHBvcnRzPXFsLmRlZmF1bHR8fHFsfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oMjc0KX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlKXtcbi8qKiBAbGljZW5zZSBSZWFjdCB2MC4xMy4zXG4gKiBzY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIG49bnVsbCxyPSExLG89MyxhPS0xLGk9LTEsbD0hMSxzPSExO2Z1bmN0aW9uIHUoKXtpZighbCl7dmFyIGU9bi5leHBpcmF0aW9uVGltZTtzP3coKTpzPSEwLHgocCxlKX19ZnVuY3Rpb24gYygpe3ZhciBlPW4sdD1uLm5leHQ7aWYobj09PXQpbj1udWxsO2Vsc2V7dmFyIHI9bi5wcmV2aW91cztuPXIubmV4dD10LHQucHJldmlvdXM9cn1lLm5leHQ9ZS5wcmV2aW91cz1udWxsLHI9ZS5jYWxsYmFjayx0PWUuZXhwaXJhdGlvblRpbWUsZT1lLnByaW9yaXR5TGV2ZWw7dmFyIGE9byxsPWk7bz1lLGk9dDt0cnl7dmFyIHM9cigpfWZpbmFsbHl7bz1hLGk9bH1pZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBzKWlmKHM9e2NhbGxiYWNrOnMscHJpb3JpdHlMZXZlbDplLGV4cGlyYXRpb25UaW1lOnQsbmV4dDpudWxsLHByZXZpb3VzOm51bGx9LG51bGw9PT1uKW49cy5uZXh0PXMucHJldmlvdXM9cztlbHNle3I9bnVsbCxlPW47ZG97aWYoZS5leHBpcmF0aW9uVGltZT49dCl7cj1lO2JyZWFrfWU9ZS5uZXh0fXdoaWxlKGUhPT1uKTtudWxsPT09cj9yPW46cj09PW4mJihuPXMsdSgpKSwodD1yLnByZXZpb3VzKS5uZXh0PXIucHJldmlvdXM9cyxzLm5leHQ9cixzLnByZXZpb3VzPXR9fWZ1bmN0aW9uIGQoKXtpZigtMT09PWEmJm51bGwhPT1uJiYxPT09bi5wcmlvcml0eUxldmVsKXtsPSEwO3RyeXtkb3tjKCl9d2hpbGUobnVsbCE9PW4mJjE9PT1uLnByaW9yaXR5TGV2ZWwpfWZpbmFsbHl7bD0hMSxudWxsIT09bj91KCk6cz0hMX19fWZ1bmN0aW9uIHAoZSl7bD0hMDt2YXIgbz1yO3I9ZTt0cnl7aWYoZSlmb3IoO251bGwhPT1uOyl7dmFyIGE9dC51bnN0YWJsZV9ub3coKTtpZighKG4uZXhwaXJhdGlvblRpbWU8PWEpKWJyZWFrO2Rve2MoKX13aGlsZShudWxsIT09biYmbi5leHBpcmF0aW9uVGltZTw9YSl9ZWxzZSBpZihudWxsIT09bilkb3tjKCl9d2hpbGUobnVsbCE9PW4mJiFrKCkpfWZpbmFsbHl7bD0hMSxyPW8sbnVsbCE9PW4/dSgpOnM9ITEsZCgpfX12YXIgZixtLGc9RGF0ZSxoPVwiZnVuY3Rpb25cIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDp2b2lkIDAsYj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMCx5PVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT9yZXF1ZXN0QW5pbWF0aW9uRnJhbWU6dm9pZCAwLHY9XCJmdW5jdGlvblwiPT10eXBlb2YgY2FuY2VsQW5pbWF0aW9uRnJhbWU/Y2FuY2VsQW5pbWF0aW9uRnJhbWU6dm9pZCAwO2Z1bmN0aW9uIFMoZSl7Zj15KGZ1bmN0aW9uKHQpe2IobSksZSh0KX0pLG09aChmdW5jdGlvbigpe3YoZiksZSh0LnVuc3RhYmxlX25vdygpKX0sMTAwKX1pZihcIm9iamVjdFwiPT10eXBlb2YgcGVyZm9ybWFuY2UmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdyl7dmFyIEU9cGVyZm9ybWFuY2U7dC51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRS5ub3coKX19ZWxzZSB0LnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBnLm5vdygpfTt2YXIgeCx3LGssXz1udWxsO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/Xz13aW5kb3c6dm9pZCAwIT09ZSYmKF89ZSksXyYmXy5fc2NoZWRNb2NrKXt2YXIgVD1fLl9zY2hlZE1vY2s7eD1UWzBdLHc9VFsxXSxrPVRbMl0sdC51bnN0YWJsZV9ub3c9VFszXX1lbHNlIGlmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3d8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIE1lc3NhZ2VDaGFubmVsKXt2YXIgQT1udWxsLEM9ZnVuY3Rpb24oZSl7aWYobnVsbCE9PUEpdHJ5e0EoZSl9ZmluYWxseXtBPW51bGx9fTt4PWZ1bmN0aW9uKGUpe251bGwhPT1BP3NldFRpbWVvdXQoeCwwLGUpOihBPWUsc2V0VGltZW91dChDLDAsITEpKX0sdz1mdW5jdGlvbigpe0E9bnVsbH0saz1mdW5jdGlvbigpe3JldHVybiExfX1lbHNle1widW5kZWZpbmVkXCIhPXR5cGVvZiBjb25zb2xlJiYoXCJmdW5jdGlvblwiIT10eXBlb2YgeSYmY29uc29sZS5lcnJvcihcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLiBNYWtlIHN1cmUgdGhhdCB5b3UgbG9hZCBhIHBvbHlmaWxsIGluIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL2ZiLm1lL3JlYWN0LXBvbHlmaWxsc1wiKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiB2JiZjb25zb2xlLmVycm9yKFwiVGhpcyBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCBjYW5jZWxBbmltYXRpb25GcmFtZS4gTWFrZSBzdXJlIHRoYXQgeW91IGxvYWQgYSBwb2x5ZmlsbCBpbiBvbGRlciBicm93c2Vycy4gaHR0cHM6Ly9mYi5tZS9yZWFjdC1wb2x5ZmlsbHNcIikpO3ZhciBPPW51bGwsST0hMSxOPS0xLFI9ITEsUD0hMSxNPTAsTD0zMyxEPTMzO2s9ZnVuY3Rpb24oKXtyZXR1cm4gTTw9dC51bnN0YWJsZV9ub3coKX07dmFyIEY9bmV3IE1lc3NhZ2VDaGFubmVsLEI9Ri5wb3J0MjtGLnBvcnQxLm9ubWVzc2FnZT1mdW5jdGlvbigpe0k9ITE7dmFyIGU9TyxuPU47Tz1udWxsLE49LTE7dmFyIHI9dC51bnN0YWJsZV9ub3coKSxvPSExO2lmKDA+PU0tcil7aWYoISgtMSE9PW4mJm48PXIpKXJldHVybiBSfHwoUj0hMCxTKGopKSxPPWUsdm9pZChOPW4pO289ITB9aWYobnVsbCE9PWUpe1A9ITA7dHJ5e2Uobyl9ZmluYWxseXtQPSExfX19O3ZhciBqPWZ1bmN0aW9uKGUpe2lmKG51bGwhPT1PKXtTKGopO3ZhciB0PWUtTStEO3Q8RCYmTDxEPyg4PnQmJih0PTgpLEQ9dDxMP0w6dCk6TD10LE09ZStELEl8fChJPSEwLEIucG9zdE1lc3NhZ2Uodm9pZCAwKSl9ZWxzZSBSPSExfTt4PWZ1bmN0aW9uKGUsdCl7Tz1lLE49dCxQfHwwPnQ/Qi5wb3N0TWVzc2FnZSh2b2lkIDApOlJ8fChSPSEwLFMoaikpfSx3PWZ1bmN0aW9uKCl7Tz1udWxsLEk9ITEsTj0tMX19dC51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xLHQudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9Mix0LnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTMsdC51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NSx0LnVuc3RhYmxlX0xvd1ByaW9yaXR5PTQsdC51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oZSxuKXtzd2l0Y2goZSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OmU9M312YXIgcj1vLGk9YTtvPWUsYT10LnVuc3RhYmxlX25vdygpO3RyeXtyZXR1cm4gbigpfWZpbmFsbHl7bz1yLGE9aSxkKCl9fSx0LnVuc3RhYmxlX25leHQ9ZnVuY3Rpb24oZSl7c3dpdGNoKG8pe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBuPTM7YnJlYWs7ZGVmYXVsdDpuPW99dmFyIHI9byxpPWE7bz1uLGE9dC51bnN0YWJsZV9ub3coKTt0cnl7cmV0dXJuIGUoKX1maW5hbGx5e289cixhPWksZCgpfX0sdC51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKGUscil7dmFyIGk9LTEhPT1hP2E6dC51bnN0YWJsZV9ub3coKTtpZihcIm9iamVjdFwiPT10eXBlb2YgciYmbnVsbCE9PXImJlwibnVtYmVyXCI9PXR5cGVvZiByLnRpbWVvdXQpcj1pK3IudGltZW91dDtlbHNlIHN3aXRjaChvKXtjYXNlIDE6cj1pKy0xO2JyZWFrO2Nhc2UgMjpyPWkrMjUwO2JyZWFrO2Nhc2UgNTpyPWkrMTA3Mzc0MTgyMzticmVhaztjYXNlIDQ6cj1pKzFlNDticmVhaztkZWZhdWx0OnI9aSs1ZTN9aWYoZT17Y2FsbGJhY2s6ZSxwcmlvcml0eUxldmVsOm8sZXhwaXJhdGlvblRpbWU6cixuZXh0Om51bGwscHJldmlvdXM6bnVsbH0sbnVsbD09PW4pbj1lLm5leHQ9ZS5wcmV2aW91cz1lLHUoKTtlbHNle2k9bnVsbDt2YXIgbD1uO2Rve2lmKGwuZXhwaXJhdGlvblRpbWU+cil7aT1sO2JyZWFrfWw9bC5uZXh0fXdoaWxlKGwhPT1uKTtudWxsPT09aT9pPW46aT09PW4mJihuPWUsdSgpKSwocj1pLnByZXZpb3VzKS5uZXh0PWkucHJldmlvdXM9ZSxlLm5leHQ9aSxlLnByZXZpb3VzPXJ9cmV0dXJuIGV9LHQudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uZXh0O2lmKG51bGwhPT10KXtpZih0PT09ZSluPW51bGw7ZWxzZXtlPT09biYmKG49dCk7dmFyIHI9ZS5wcmV2aW91cztyLm5leHQ9dCx0LnByZXZpb3VzPXJ9ZS5uZXh0PWUucHJldmlvdXM9bnVsbH19LHQudW5zdGFibGVfd3JhcENhbGxiYWNrPWZ1bmN0aW9uKGUpe3ZhciBuPW87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9byxpPWE7bz1uLGE9dC51bnN0YWJsZV9ub3coKTt0cnl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7bz1yLGE9aSxkKCl9fX0sdC51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbD1mdW5jdGlvbigpe3JldHVybiBvfSx0LnVuc3RhYmxlX3Nob3VsZFlpZWxkPWZ1bmN0aW9uKCl7cmV0dXJuIXImJihudWxsIT09biYmbi5leHBpcmF0aW9uVGltZTxpfHxrKCkpfSx0LnVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7bnVsbCE9PW4mJnUoKX0sdC51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe30sdC51bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZT1mdW5jdGlvbigpe3JldHVybiBufX0pLmNhbGwodGhpcyxuKDI3KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDI3Niksbz1uKDI3NyksYT1uKDI3OCksaT1uKDI4NCksbD1uKDI4Nikscz1uKDI4Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uIGUoKXt2YXIgdD1bXTt2YXIgbj1pKCk7dmFyIHk9e307dmFyIHY9ITE7dmFyIFM9LTE7RS5kYXRhPWZ1bmN0aW9uKGUsdCl7aWYobChlKSlyZXR1cm4gMj09PWFyZ3VtZW50cy5sZW5ndGg/KGcoXCJkYXRhXCIsdikseVtlXT10LEUpOmMuY2FsbCh5LGUpJiZ5W2VdfHxudWxsO2lmKGUpcmV0dXJuIGcoXCJkYXRhXCIsdikseT1lLEU7cmV0dXJuIHl9O0UuZnJlZXplPXg7RS5hdHRhY2hlcnM9dDtFLnVzZT1mdW5jdGlvbihlKXt2YXIgbjtpZihnKFwidXNlXCIsdiksbnVsbD09ZSk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKWwuYXBwbHkobnVsbCxhcmd1bWVudHMpO2Vsc2V7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgdXNhYmxlIHZhbHVlLCBub3QgYFwiK2UrXCJgXCIpO1wibGVuZ3RoXCJpbiBlP2koZSk6byhlKX1uJiYoeS5zZXR0aW5ncz1yKHkuc2V0dGluZ3N8fHt9LG4pKTtyZXR1cm4gRTtmdW5jdGlvbiBvKGUpe2koZS5wbHVnaW5zKSxlLnNldHRpbmdzJiYobj1yKG58fHt9LGUuc2V0dGluZ3MpKX1mdW5jdGlvbiBhKGUpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpbChlKTtlbHNle2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHVzYWJsZSB2YWx1ZSwgbm90IGBcIitlK1wiYFwiKTtcImxlbmd0aFwiaW4gZT9sLmFwcGx5KG51bGwsZSk6byhlKX19ZnVuY3Rpb24gaShlKXt2YXIgdCxuO2lmKG51bGw9PWUpO2Vsc2V7aWYoIShcIm9iamVjdFwiPT10eXBlb2YgZSYmXCJsZW5ndGhcImluIGUpKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGEgbGlzdCBvZiBwbHVnaW5zLCBub3QgYFwiK2UrXCJgXCIpO2Zvcih0PWUubGVuZ3RoLG49LTE7KytuPHQ7KWEoZVtuXSl9fWZ1bmN0aW9uIGwoZSxuKXt2YXIgbz1mdW5jdGlvbihlKXt2YXIgbixyPXQubGVuZ3RoLG89LTE7Zm9yKDsrK288cjspaWYoKG49dFtvXSlbMF09PT1lKXJldHVybiBufShlKTtvPyhzKG9bMV0pJiZzKG4pJiYobj1yKG9bMV0sbikpLG9bMV09bik6dC5wdXNoKHUuY2FsbChhcmd1bWVudHMpKX19O0UucGFyc2U9ZnVuY3Rpb24oZSl7dmFyIHQsbj1hKGUpO2lmKHgoKSxmKFwicGFyc2VcIix0PUUuUGFyc2VyKSxwKHQpKXJldHVybiBuZXcgdChTdHJpbmcobiksbikucGFyc2UoKTtyZXR1cm4gdChTdHJpbmcobiksbil9O0Uuc3RyaW5naWZ5PWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKHQpO2lmKHgoKSxtKFwic3RyaW5naWZ5XCIsbj1FLkNvbXBpbGVyKSxoKGUpLHAobikpcmV0dXJuIG5ldyBuKGUscikuY29tcGlsZSgpO3JldHVybiBuKGUscil9O0UucnVuPXc7RS5ydW5TeW5jPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj0hMTtyZXR1cm4gdyhlLHQsZnVuY3Rpb24oZSx0KXtyPSEwLG8oZSksbj10fSksYihcInJ1blN5bmNcIixcInJ1blwiLHIpLG59O0UucHJvY2Vzcz1rO0UucHJvY2Vzc1N5bmM9ZnVuY3Rpb24oZSl7dmFyIHQsbj0hMTtyZXR1cm4geCgpLGYoXCJwcm9jZXNzU3luY1wiLEUuUGFyc2VyKSxtKFwicHJvY2Vzc1N5bmNcIixFLkNvbXBpbGVyKSxrKHQ9YShlKSxmdW5jdGlvbihlKXtuPSEwLG8oZSl9KSxiKFwicHJvY2Vzc1N5bmNcIixcInByb2Nlc3NcIixuKSx0fTtyZXR1cm4gRTtmdW5jdGlvbiBFKCl7Zm9yKHZhciBuPWUoKSxvPXQubGVuZ3RoLGE9LTE7KythPG87KW4udXNlLmFwcGx5KG51bGwsdFthXSk7cmV0dXJuIG4uZGF0YShyKCEwLHt9LHkpKSxufWZ1bmN0aW9uIHgoKXt2YXIgZSxyLG8sYTtpZih2KXJldHVybiBFO2Zvcig7KytTPHQubGVuZ3RoOyllPXRbU10scj1lWzBdLG89ZVsxXSxhPW51bGwsITEhPT1vJiYoITA9PT1vJiYoZVsxXT12b2lkIDApLFwiZnVuY3Rpb25cIj09dHlwZW9mKGE9ci5hcHBseShFLGUuc2xpY2UoMSkpKSYmbi51c2UoYSkpO3JldHVybiB2PSEwLFM9MS8wLEV9ZnVuY3Rpb24gdyhlLHQscil7aWYoaChlKSx4KCkscnx8XCJmdW5jdGlvblwiIT10eXBlb2YgdHx8KHI9dCx0PW51bGwpLCFyKXJldHVybiBuZXcgUHJvbWlzZShvKTtmdW5jdGlvbiBvKG8saSl7bi5ydW4oZSxhKHQpLGZ1bmN0aW9uKHQsbixhKXtuPW58fGUsdD9pKHQpOm8/byhuKTpyKG51bGwsbixhKX0pfW8obnVsbCxyKX1mdW5jdGlvbiBrKGUsdCl7aWYoeCgpLGYoXCJwcm9jZXNzXCIsRS5QYXJzZXIpLG0oXCJwcm9jZXNzXCIsRS5Db21waWxlciksIXQpcmV0dXJuIG5ldyBQcm9taXNlKG4pO2Z1bmN0aW9uIG4obixyKXt2YXIgbz1hKGUpO2QucnVuKEUse2ZpbGU6b30sZnVuY3Rpb24oZSl7ZT9yKGUpOm4/bihvKTp0KG51bGwsbyl9KX1uKG51bGwsdCl9fSgpLmZyZWV6ZSgpO3ZhciB1PVtdLnNsaWNlLGM9e30uaGFzT3duUHJvcGVydHksZD1pKCkudXNlKGZ1bmN0aW9uKGUsdCl7dC50cmVlPWUucGFyc2UodC5maWxlKX0pLnVzZShmdW5jdGlvbihlLHQsbil7ZS5ydW4odC50cmVlLHQuZmlsZSxmdW5jdGlvbihlLHIsbyl7ZT9uKGUpOih0LnRyZWU9cix0LmZpbGU9byxuKCkpfSl9KS51c2UoZnVuY3Rpb24oZSx0KXt0LmZpbGUuY29udGVudHM9ZS5zdHJpbmdpZnkodC50cmVlLHQuZmlsZSl9KTtmdW5jdGlvbiBwKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJmZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUpcmV0dXJuITA7cmV0dXJuITF9KGUucHJvdG90eXBlKX1mdW5jdGlvbiBmKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYFwiK2UrXCJgIHdpdGhvdXQgYFBhcnNlcmBcIil9ZnVuY3Rpb24gbShlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGBcIitlK1wiYCB3aXRob3V0IGBDb21waWxlcmBcIil9ZnVuY3Rpb24gZyhlLHQpe2lmKHQpdGhyb3cgbmV3IEVycm9yKFtcIkNhbm5vdCBpbnZva2UgYFwiK2UrXCJgIG9uIGEgZnJvemVuIHByb2Nlc3Nvci5cXG5DcmVhdGUgYSBuZXcgXCIsXCJwcm9jZXNzb3IgZmlyc3QsIGJ5IGludm9raW5nIGl0OiB1c2UgYHByb2Nlc3NvcigpYCBpbnN0ZWFkIG9mIFwiLFwiYHByb2Nlc3NvcmAuXCJdLmpvaW4oXCJcIikpfWZ1bmN0aW9uIGgoZSl7aWYoIWV8fCFsKGUudHlwZSkpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbm9kZSwgZ290IGBcIitlK1wiYFwiKX1mdW5jdGlvbiBiKGUsdCxuKXtpZighbil0aHJvdyBuZXcgRXJyb3IoXCJgXCIrZStcImAgZmluaXNoZWQgYXN5bmMuIFVzZSBgXCIrdCtcImAgaW5zdGVhZFwiKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG89T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsbD1mdW5jdGlvbihlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXkoZSk6XCJbb2JqZWN0IEFycmF5XVwiPT09by5jYWxsKGUpfSxzPWZ1bmN0aW9uKGUpe2lmKCFlfHxcIltvYmplY3QgT2JqZWN0XVwiIT09by5jYWxsKGUpKXJldHVybiExO3ZhciB0LG49ci5jYWxsKGUsXCJjb25zdHJ1Y3RvclwiKSxhPWUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IucHJvdG90eXBlJiZyLmNhbGwoZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsXCJpc1Byb3RvdHlwZU9mXCIpO2lmKGUuY29uc3RydWN0b3ImJiFuJiYhYSlyZXR1cm4hMTtmb3IodCBpbiBlKTtyZXR1cm4gdm9pZCAwPT09dHx8ci5jYWxsKGUsdCl9LHU9ZnVuY3Rpb24oZSx0KXthJiZcIl9fcHJvdG9fX1wiPT09dC5uYW1lP2EoZSx0Lm5hbWUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHZhbHVlOnQubmV3VmFsdWUsd3JpdGFibGU6ITB9KTplW3QubmFtZV09dC5uZXdWYWx1ZX0sYz1mdW5jdGlvbihlLHQpe2lmKFwiX19wcm90b19fXCI9PT10KXtpZighci5jYWxsKGUsdCkpcmV0dXJuO2lmKGkpcmV0dXJuIGkoZSx0KS52YWx1ZX1yZXR1cm4gZVt0XX07ZS5leHBvcnRzPWZ1bmN0aW9uIGUoKXt2YXIgdCxuLHIsbyxhLGksZD1hcmd1bWVudHNbMF0scD0xLGY9YXJndW1lbnRzLmxlbmd0aCxtPSExO2ZvcihcImJvb2xlYW5cIj09dHlwZW9mIGQmJihtPWQsZD1hcmd1bWVudHNbMV18fHt9LHA9MiksKG51bGw9PWR8fFwib2JqZWN0XCIhPXR5cGVvZiBkJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBkKSYmKGQ9e30pO3A8ZjsrK3ApaWYobnVsbCE9KHQ9YXJndW1lbnRzW3BdKSlmb3IobiBpbiB0KXI9YyhkLG4pLGQhPT0obz1jKHQsbikpJiYobSYmbyYmKHMobyl8fChhPWwobykpKT8oYT8oYT0hMSxpPXImJmwocik/cjpbXSk6aT1yJiZzKHIpP3I6e30sdShkLHtuYW1lOm4sbmV3VmFsdWU6ZShtLGksbyl9KSk6dm9pZCAwIT09byYmdShkLHtuYW1lOm4sbmV3VmFsdWU6b30pKTtyZXR1cm4gZH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZSl0aHJvdyBlfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjc5KSxvPW4oMjgxKTtlLmV4cG9ydHM9bzt2YXIgYT1vLnByb3RvdHlwZTtmdW5jdGlvbiBpKGUsdCxuKXt2YXIgbz10aGlzLnBhdGgsYT1uZXcgcihlLHQsbik7cmV0dXJuIG8mJihhLm5hbWU9bytcIjpcIithLm5hbWUsYS5maWxlPW8pLGEuZmF0YWw9ITEsdGhpcy5tZXNzYWdlcy5wdXNoKGEpLGF9YS5tZXNzYWdlPWksYS5pbmZvPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tZXNzYWdlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZS5mYXRhbD1udWxsLGV9LGEuZmFpbD1mdW5jdGlvbigpe3ZhciBlPXRoaXMubWVzc2FnZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhyb3cgZS5mYXRhbD0hMCxlfSxhLndhcm49aX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjgwKTtmdW5jdGlvbiBvKCl7fWUuZXhwb3J0cz1pLG8ucHJvdG90eXBlPUVycm9yLnByb3RvdHlwZSxpLnByb3RvdHlwZT1uZXcgbzt2YXIgYT1pLnByb3RvdHlwZTtmdW5jdGlvbiBpKGUsdCxuKXt2YXIgbyxhLGk7XCJzdHJpbmdcIj09dHlwZW9mIHQmJihuPXQsdD1udWxsKSxvPWZ1bmN0aW9uKGUpe3ZhciB0LG49W251bGwsbnVsbF07XCJzdHJpbmdcIj09dHlwZW9mIGUmJigtMT09PSh0PWUuaW5kZXhPZihcIjpcIikpP25bMV09ZTooblswXT1lLnNsaWNlKDAsdCksblsxXT1lLnNsaWNlKHQrMSkpKTtyZXR1cm4gbn0obiksYT1yKHQpfHxcIjE6MVwiLGk9e3N0YXJ0OntsaW5lOm51bGwsY29sdW1uOm51bGx9LGVuZDp7bGluZTpudWxsLGNvbHVtbjpudWxsfX0sdCYmdC5wb3NpdGlvbiYmKHQ9dC5wb3NpdGlvbiksdCYmKHQuc3RhcnQ/KGk9dCx0PXQuc3RhcnQpOmkuc3RhcnQ9dCksZS5zdGFjayYmKHRoaXMuc3RhY2s9ZS5zdGFjayxlPWUubWVzc2FnZSksdGhpcy5tZXNzYWdlPWUsdGhpcy5uYW1lPWEsdGhpcy5yZWFzb249ZSx0aGlzLmxpbmU9dD90LmxpbmU6bnVsbCx0aGlzLmNvbHVtbj10P3QuY29sdW1uOm51bGwsdGhpcy5sb2NhdGlvbj1pLHRoaXMuc291cmNlPW9bMF0sdGhpcy5ydWxlSWQ9b1sxXX1hLmZpbGU9XCJcIixhLm5hbWU9XCJcIixhLnJlYXNvbj1cIlwiLGEubWVzc2FnZT1cIlwiLGEuc3RhY2s9XCJcIixhLmZhdGFsPW51bGwsYS5jb2x1bW49bnVsbCxhLmxpbmU9bnVsbH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlfHwoZT17fSksaShlLmxpbmUpK1wiOlwiK2koZS5jb2x1bW4pfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlfHwoZT17fSksbyhlLnN0YXJ0KStcIi1cIitvKGUuZW5kKX1mdW5jdGlvbiBpKGUpe3JldHVybiBlJiZcIm51bWJlclwiPT10eXBlb2YgZT9lOjF9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSlyZXR1cm4gbnVsbDtpZihyLmNhbGwoZSxcInBvc2l0aW9uXCIpfHxyLmNhbGwoZSxcInR5cGVcIikpcmV0dXJuIGEoZS5wb3NpdGlvbik7aWYoci5jYWxsKGUsXCJzdGFydFwiKXx8ci5jYWxsKGUsXCJlbmRcIikpcmV0dXJuIGEoZSk7aWYoci5jYWxsKGUsXCJsaW5lXCIpfHxyLmNhbGwoZSxcImNvbHVtblwiKSlyZXR1cm4gbyhlKTtyZXR1cm4gbnVsbH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24odCl7dmFyIHI9bigxMDApLG89bigyODIpLGE9bigyODMpO2UuZXhwb3J0cz11O3ZhciBpPXt9Lmhhc093blByb3BlcnR5LGw9dS5wcm90b3R5cGU7bC50b1N0cmluZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNvbnRlbnRzfHxcIlwiO3JldHVybiBhKHQpP3QudG9TdHJpbmcoZSk6U3RyaW5nKHQpfTt2YXIgcz1bXCJoaXN0b3J5XCIsXCJwYXRoXCIsXCJiYXNlbmFtZVwiLFwic3RlbVwiLFwiZXh0bmFtZVwiLFwiZGlybmFtZVwiXTtmdW5jdGlvbiB1KGUpe3ZhciBuLHIsbztpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZXx8YShlKSllPXtjb250ZW50czplfTtlbHNlIGlmKFwibWVzc2FnZVwiaW4gZSYmXCJtZXNzYWdlc1wiaW4gZSlyZXR1cm4gZX1lbHNlIGU9e307aWYoISh0aGlzIGluc3RhbmNlb2YgdSkpcmV0dXJuIG5ldyB1KGUpO2Zvcih0aGlzLmRhdGE9e30sdGhpcy5tZXNzYWdlcz1bXSx0aGlzLmhpc3Rvcnk9W10sdGhpcy5jd2Q9dC5jd2QoKSxyPS0xLG89cy5sZW5ndGg7KytyPG87KW49c1tyXSxpLmNhbGwoZSxuKSYmKHRoaXNbbl09ZVtuXSk7Zm9yKG4gaW4gZSktMT09PXMuaW5kZXhPZihuKSYmKHRoaXNbbl09ZVtuXSl9ZnVuY3Rpb24gYyhlLHQpe2lmKC0xIT09ZS5pbmRleE9mKHIuc2VwKSl0aHJvdyBuZXcgRXJyb3IoXCJgXCIrdCtcImAgY2Fubm90IGJlIGEgcGF0aDogZGlkIG5vdCBleHBlY3QgYFwiK3Iuc2VwK1wiYFwiKX1mdW5jdGlvbiBkKGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwiYFwiK3QrXCJgIGNhbm5vdCBiZSBlbXB0eVwiKX1mdW5jdGlvbiBwKGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwiU2V0dGluZyBgXCIrdCtcImAgcmVxdWlyZXMgYHBhdGhgIHRvIGJlIHNldCB0b29cIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsXCJwYXRoXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5Lmxlbmd0aC0xXX0sc2V0OmZ1bmN0aW9uKGUpe2QoZSxcInBhdGhcIiksZSE9PXRoaXMucGF0aCYmdGhpcy5oaXN0b3J5LnB1c2goZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsXCJkaXJuYW1lXCIse2dldDpmdW5jdGlvbigpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnBhdGg/ci5kaXJuYW1lKHRoaXMucGF0aCk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oZSl7cCh0aGlzLnBhdGgsXCJkaXJuYW1lXCIpLHRoaXMucGF0aD1yLmpvaW4oZXx8XCJcIix0aGlzLmJhc2VuYW1lKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxcImJhc2VuYW1lXCIse2dldDpmdW5jdGlvbigpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnBhdGg/ci5iYXNlbmFtZSh0aGlzLnBhdGgpOnZvaWQgMH0sc2V0OmZ1bmN0aW9uKGUpe2QoZSxcImJhc2VuYW1lXCIpLGMoZSxcImJhc2VuYW1lXCIpLHRoaXMucGF0aD1yLmpvaW4odGhpcy5kaXJuYW1lfHxcIlwiLGUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFwiZXh0bmFtZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdGhpcy5wYXRoP3IuZXh0bmFtZSh0aGlzLnBhdGgpOnZvaWQgMH0sc2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWV8fFwiXCI7aWYoYyh0LFwiZXh0bmFtZVwiKSxwKHRoaXMucGF0aCxcImV4dG5hbWVcIiksdCl7aWYoXCIuXCIhPT10LmNoYXJBdCgwKSl0aHJvdyBuZXcgRXJyb3IoXCJgZXh0bmFtZWAgbXVzdCBzdGFydCB3aXRoIGAuYFwiKTtpZigtMSE9PXQuaW5kZXhPZihcIi5cIiwxKSl0aHJvdyBuZXcgRXJyb3IoXCJgZXh0bmFtZWAgY2Fubm90IGNvbnRhaW4gbXVsdGlwbGUgZG90c1wiKX10aGlzLnBhdGg9byh0aGlzLnBhdGgsdCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsXCJzdGVtXCIse2dldDpmdW5jdGlvbigpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnBhdGg/ci5iYXNlbmFtZSh0aGlzLnBhdGgsdGhpcy5leHRuYW1lKTp2b2lkIDB9LHNldDpmdW5jdGlvbihlKXtkKGUsXCJzdGVtXCIpLGMoZSxcInN0ZW1cIiksdGhpcy5wYXRoPXIuam9pbih0aGlzLmRpcm5hbWV8fFwiXCIsZSsodGhpcy5leHRuYW1lfHxcIlwiKSl9fSl9KS5jYWxsKHRoaXMsbig5OSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigxMDApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlKXJldHVybiBlO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gZTt2YXIgbj1yLmJhc2VuYW1lKGUsci5leHRuYW1lKGUpKSt0O3JldHVybiByLmpvaW4oci5kaXJuYW1lKGUpLG4pfX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3JldHVybiEhZS5jb25zdHJ1Y3RvciYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX1cbi8qIVxuICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEJ1ZmZlclxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbmUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmKG4oZSl8fGZ1bmN0aW9uKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGUucmVhZEZsb2F0TEUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuc2xpY2UmJm4oZS5zbGljZSgwLDApKX0oZSl8fCEhZS5faXNCdWZmZXIpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjg1KTtlLmV4cG9ydHM9YSxhLndyYXA9cjt2YXIgbz1bXS5zbGljZTtmdW5jdGlvbiBhKCl7dmFyIGU9W10sdD17cnVuOmZ1bmN0aW9uKCl7dmFyIHQ9LTEsbj1vLmNhbGwoYXJndW1lbnRzLDAsLTEpLGE9YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV07aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgYSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBmdW5jdGlvbiBhcyBsYXN0IGFyZ3VtZW50LCBub3QgXCIrYSk7KGZ1bmN0aW9uIGkobCl7dmFyIHM9ZVsrK3RdO3ZhciB1PW8uY2FsbChhcmd1bWVudHMsMCk7dmFyIGM9dS5zbGljZSgxKTt2YXIgZD1uLmxlbmd0aDt2YXIgcD0tMTtpZihsKXJldHVybiB2b2lkIGEobCk7Zm9yKDsrK3A8ZDspbnVsbCE9PWNbcF0mJnZvaWQgMCE9PWNbcF18fChjW3BdPW5bcF0pO249YztzP3IocyxpKS5hcHBseShudWxsLG4pOmEuYXBwbHkobnVsbCxbbnVsbF0uY29uY2F0KG4pKX0pLmFwcGx5KG51bGwsW251bGxdLmNvbmNhdChuKSl9LHVzZTpmdW5jdGlvbihuKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGBmbmAgdG8gYmUgYSBmdW5jdGlvbiwgbm90IFwiK24pO3JldHVybiBlLnB1c2gobiksdH19O3JldHVybiB0fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPVtdLnNsaWNlO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBmdW5jdGlvbigpe3ZhciB0LGk9ci5jYWxsKGFyZ3VtZW50cywwKSxsPWUubGVuZ3RoPmkubGVuZ3RoO2wmJmkucHVzaChvKTt0cnl7dD1lLmFwcGx5KG51bGwsaSl9Y2F0Y2goZSl7aWYobCYmbil0aHJvdyBlO3JldHVybiBvKGUpfWx8fCh0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnRoZW4/dC50aGVuKGEsbyk6dCBpbnN0YW5jZW9mIEVycm9yP28odCk6YSh0KSl9O2Z1bmN0aW9uIG8oKXtufHwobj0hMCx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSl9ZnVuY3Rpb24gYShlKXtvKG51bGwsZSl9fX0sZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm5cIltvYmplY3QgU3RyaW5nXVwiPT09bi5jYWxsKGUpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVyblwiW29iamVjdCBPYmplY3RdXCI9PT1yLmNhbGwoZSkmJihudWxsPT09KHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpKXx8dD09PU9iamVjdC5nZXRQcm90b3R5cGVPZih7fSkpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjg5KSxvPW4oMjMpLGE9bigyOTEpO2Z1bmN0aW9uIGkoZSl7dmFyIHQ9cihhKTt0LnByb3RvdHlwZS5vcHRpb25zPW8odC5wcm90b3R5cGUub3B0aW9ucyx0aGlzLmRhdGEoXCJzZXR0aW5nc1wiKSxlKSx0aGlzLlBhcnNlcj10fWUuZXhwb3J0cz1pLGkuUGFyc2VyPWF9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIzKSxvPW4oMjkwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQsbixhO2ZvcihuIGluIG8obCxlKSxvKGksbCksdD1sLnByb3RvdHlwZSkoYT10W25dKSYmXCJvYmplY3RcIj09dHlwZW9mIGEmJih0W25dPVwiY29uY2F0XCJpbiBhP2EuY29uY2F0KCk6cihhKSk7cmV0dXJuIGw7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZS5hcHBseSh0aGlzLHQpfWZ1bmN0aW9uIGwoKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGw/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bmV3IGkoYXJndW1lbnRzKX19fSxmdW5jdGlvbihlLHQpe1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZS5zdXBlcl89dCxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KX06ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZS5zdXBlcl89dDt2YXIgbj1mdW5jdGlvbigpe307bi5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5wcm90b3R5cGU9bmV3IG4sZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIzKSxvPW4oMjkyKSxhPW4oMjkzKSxpPW4oMjk0KSxsPW4oMjk1KSxzPW4oMzAxKTtmdW5jdGlvbiB1KGUsdCl7dGhpcy5maWxlPXQsdGhpcy5vZmZzZXQ9e30sdGhpcy5vcHRpb25zPXIodGhpcy5vcHRpb25zKSx0aGlzLnNldE9wdGlvbnMoe30pLHRoaXMuaW5MaXN0PSExLHRoaXMuaW5CbG9jaz0hMSx0aGlzLmluTGluaz0hMSx0aGlzLmF0U3RhcnQ9ITAsdGhpcy50b09mZnNldD1hKHQpLnRvT2Zmc2V0LHRoaXMudW5lc2NhcGU9aSh0aGlzLFwiZXNjYXBlXCIpLHRoaXMuZGVjb2RlPWwodGhpcyl9ZS5leHBvcnRzPXU7dmFyIGM9dS5wcm90b3R5cGU7ZnVuY3Rpb24gZChlKXt2YXIgdCxuPVtdO2Zvcih0IGluIGUpbi5wdXNoKHQpO3JldHVybiBufWMuc2V0T3B0aW9ucz1uKDMwMiksYy5wYXJzZT1uKDMwNSksYy5vcHRpb25zPW4oMTAyKSxjLmV4aXRTdGFydD1vKFwiYXRTdGFydFwiLCEwKSxjLmVudGVyTGlzdD1vKFwiaW5MaXN0XCIsITEpLGMuZW50ZXJMaW5rPW8oXCJpbkxpbmtcIiwhMSksYy5lbnRlckJsb2NrPW8oXCJpbkJsb2NrXCIsITEpLGMuaW50ZXJydXB0UGFyYWdyYXBoPVtbXCJ0aGVtYXRpY0JyZWFrXCJdLFtcImF0eEhlYWRpbmdcIl0sW1wiZmVuY2VkQ29kZVwiXSxbXCJibG9ja3F1b3RlXCJdLFtcImh0bWxcIl0sW1wic2V0ZXh0SGVhZGluZ1wiLHtjb21tb25tYXJrOiExfV0sW1wiZGVmaW5pdGlvblwiLHtjb21tb25tYXJrOiExfV0sW1wiZm9vdG5vdGVcIix7Y29tbW9ubWFyazohMX1dXSxjLmludGVycnVwdExpc3Q9W1tcImF0eEhlYWRpbmdcIix7cGVkYW50aWM6ITF9XSxbXCJmZW5jZWRDb2RlXCIse3BlZGFudGljOiExfV0sW1widGhlbWF0aWNCcmVha1wiLHtwZWRhbnRpYzohMX1dLFtcImRlZmluaXRpb25cIix7Y29tbW9ubWFyazohMX1dLFtcImZvb3Rub3RlXCIse2NvbW1vbm1hcms6ITF9XV0sYy5pbnRlcnJ1cHRCbG9ja3F1b3RlPVtbXCJpbmRlbnRlZENvZGVcIix7Y29tbW9ubWFyazohMH1dLFtcImZlbmNlZENvZGVcIix7Y29tbW9ubWFyazohMH1dLFtcImF0eEhlYWRpbmdcIix7Y29tbW9ubWFyazohMH1dLFtcInNldGV4dEhlYWRpbmdcIix7Y29tbW9ubWFyazohMH1dLFtcInRoZW1hdGljQnJlYWtcIix7Y29tbW9ubWFyazohMH1dLFtcImh0bWxcIix7Y29tbW9ubWFyazohMH1dLFtcImxpc3RcIix7Y29tbW9ubWFyazohMH1dLFtcImRlZmluaXRpb25cIix7Y29tbW9ubWFyazohMX1dLFtcImZvb3Rub3RlXCIse2NvbW1vbm1hcms6ITF9XV0sYy5ibG9ja1Rva2VuaXplcnM9e25ld2xpbmU6bigzMDkpLGluZGVudGVkQ29kZTpuKDMxMCksZmVuY2VkQ29kZTpuKDMxMSksYmxvY2txdW90ZTpuKDMxMiksYXR4SGVhZGluZzpuKDMxMyksdGhlbWF0aWNCcmVhazpuKDMxNCksbGlzdDpuKDMxNSksc2V0ZXh0SGVhZGluZzpuKDMxNyksaHRtbDpuKDMxOCksZm9vdG5vdGU6bigzMTkpLGRlZmluaXRpb246bigzMjEpLHRhYmxlOm4oMzIyKSxwYXJhZ3JhcGg6bigzMjMpfSxjLmlubGluZVRva2VuaXplcnM9e2VzY2FwZTpuKDMyNCksYXV0b0xpbms6bigzMjYpLHVybDpuKDMyNyksaHRtbDpuKDMyOSksbGluazpuKDMzMCkscmVmZXJlbmNlOm4oMzMxKSxzdHJvbmc6bigzMzIpLGVtcGhhc2lzOm4oMzM0KSxkZWxldGlvbjpuKDMzNyksY29kZTpuKDMzOSksYnJlYWs6bigzNDEpLHRleHQ6bigzNDMpfSxjLmJsb2NrTWV0aG9kcz1kKGMuYmxvY2tUb2tlbml6ZXJzKSxjLmlubGluZU1ldGhvZHM9ZChjLmlubGluZVRva2VuaXplcnMpLGMudG9rZW5pemVCbG9jaz1zKFwiYmxvY2tcIiksYy50b2tlbml6ZUlubGluZT1zKFwiaW5saW5lXCIpLGMudG9rZW5pemVGYWN0b3J5PXN9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciByPW58fHRoaXMsbz1yW2VdO3JldHVybiByW2VdPSF0LGZ1bmN0aW9uKCl7cltlXT1vfX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49LTEscj1lLmxlbmd0aDtpZih0PDApcmV0dXJue307Zm9yKDsrK248cjspaWYoZVtuXT50KXJldHVybntsaW5lOm4rMSxjb2x1bW46dC0oZVtuLTFdfHwwKSsxLG9mZnNldDp0fTtyZXR1cm57fX19ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49dCYmdC5saW5lLHI9dCYmdC5jb2x1bW47aWYoIWlzTmFOKG4pJiYhaXNOYU4ocikmJm4tMSBpbiBlKXJldHVybihlW24tMl18fDApK3ItMXx8MDtyZXR1cm4tMX19ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49ZS5pbmRleE9mKFwiXFxuXCIpO2Zvcig7LTEhPT1uOyl0LnB1c2gobisxKSxuPWUuaW5kZXhPZihcIlxcblwiLG4rMSk7cmV0dXJuIHQucHVzaChlLmxlbmd0aCsxKSx0fShTdHJpbmcoZSkpO3JldHVybnt0b1Bvc2l0aW9uOnIodCksdG9PZmZzZXQ6byh0KX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLG89MCxhPW4uaW5kZXhPZihcIlxcXFxcIiksaT1lW3RdLGw9W107Zm9yKDstMSE9PWE7KWwucHVzaChuLnNsaWNlKG8sYSkpLG89YSsxLChyPW4uY2hhckF0KG8pKSYmLTEhPT1pLmluZGV4T2Yocil8fGwucHVzaChcIlxcXFxcIiksYT1uLmluZGV4T2YoXCJcXFxcXCIsbyk7cmV0dXJuIGwucHVzaChuLnNsaWNlKG8pKSxsLmpvaW4oXCJcIil9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjMpLG89big0Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhLnJhdz1mdW5jdGlvbihlLGEsaSl7cmV0dXJuIG8oZSxyKGkse3Bvc2l0aW9uOnQoYSksd2FybmluZzpufSkpfSxhO2Z1bmN0aW9uIHQodCl7Zm9yKHZhciBuPWUub2Zmc2V0LHI9dC5saW5lLG89W107KytyJiZyIGluIG47KW8ucHVzaCgobltyXXx8MCkrMSk7cmV0dXJue3N0YXJ0OnQsaW5kZW50Om99fWZ1bmN0aW9uIG4odCxuLHIpezMhPT1yJiZlLmZpbGUubWVzc2FnZSh0LG4pfWZ1bmN0aW9uIGEocixhLGkpe28ocix7cG9zaXRpb246dChhKSx3YXJuaW5nOm4sdGV4dDppLHJlZmVyZW5jZTppLHRleHRDb250ZXh0OmUscmVmZXJlbmNlQ29udGV4dDplfSl9fX0sZnVuY3Rpb24oZSl7ZS5leHBvcnRzPXtBRWxpZzpcIsOGXCIsQU1QOlwiJlwiLEFhY3V0ZTpcIsOBXCIsQWNpcmM6XCLDglwiLEFncmF2ZTpcIsOAXCIsQXJpbmc6XCLDhVwiLEF0aWxkZTpcIsODXCIsQXVtbDpcIsOEXCIsQ09QWTpcIsKpXCIsQ2NlZGlsOlwiw4dcIixFVEg6XCLDkFwiLEVhY3V0ZTpcIsOJXCIsRWNpcmM6XCLDilwiLEVncmF2ZTpcIsOIXCIsRXVtbDpcIsOLXCIsR1Q6XCI+XCIsSWFjdXRlOlwiw41cIixJY2lyYzpcIsOOXCIsSWdyYXZlOlwiw4xcIixJdW1sOlwiw49cIixMVDpcIjxcIixOdGlsZGU6XCLDkVwiLE9hY3V0ZTpcIsOTXCIsT2NpcmM6XCLDlFwiLE9ncmF2ZTpcIsOSXCIsT3NsYXNoOlwiw5hcIixPdGlsZGU6XCLDlVwiLE91bWw6XCLDllwiLFFVT1Q6J1wiJyxSRUc6XCLCrlwiLFRIT1JOOlwiw55cIixVYWN1dGU6XCLDmlwiLFVjaXJjOlwiw5tcIixVZ3JhdmU6XCLDmVwiLFV1bWw6XCLDnFwiLFlhY3V0ZTpcIsOdXCIsYWFjdXRlOlwiw6FcIixhY2lyYzpcIsOiXCIsYWN1dGU6XCLCtFwiLGFlbGlnOlwiw6ZcIixhZ3JhdmU6XCLDoFwiLGFtcDpcIiZcIixhcmluZzpcIsOlXCIsYXRpbGRlOlwiw6NcIixhdW1sOlwiw6RcIixicnZiYXI6XCLCplwiLGNjZWRpbDpcIsOnXCIsY2VkaWw6XCLCuFwiLGNlbnQ6XCLColwiLGNvcHk6XCLCqVwiLGN1cnJlbjpcIsKkXCIsZGVnOlwiwrBcIixkaXZpZGU6XCLDt1wiLGVhY3V0ZTpcIsOpXCIsZWNpcmM6XCLDqlwiLGVncmF2ZTpcIsOoXCIsZXRoOlwiw7BcIixldW1sOlwiw6tcIixmcmFjMTI6XCLCvVwiLGZyYWMxNDpcIsK8XCIsZnJhYzM0Olwiwr5cIixndDpcIj5cIixpYWN1dGU6XCLDrVwiLGljaXJjOlwiw65cIixpZXhjbDpcIsKhXCIsaWdyYXZlOlwiw6xcIixpcXVlc3Q6XCLCv1wiLGl1bWw6XCLDr1wiLGxhcXVvOlwiwqtcIixsdDpcIjxcIixtYWNyOlwiwq9cIixtaWNybzpcIsK1XCIsbWlkZG90OlwiwrdcIixuYnNwOlwiwqBcIixub3Q6XCLCrFwiLG50aWxkZTpcIsOxXCIsb2FjdXRlOlwiw7NcIixvY2lyYzpcIsO0XCIsb2dyYXZlOlwiw7JcIixvcmRmOlwiwqpcIixvcmRtOlwiwrpcIixvc2xhc2g6XCLDuFwiLG90aWxkZTpcIsO1XCIsb3VtbDpcIsO2XCIscGFyYTpcIsK2XCIscGx1c21uOlwiwrFcIixwb3VuZDpcIsKjXCIscXVvdDonXCInLHJhcXVvOlwiwrtcIixyZWc6XCLCrlwiLHNlY3Q6XCLCp1wiLHNoeTpcIsKtXCIsc3VwMTpcIsK5XCIsc3VwMjpcIsKyXCIsc3VwMzpcIsKzXCIsc3psaWc6XCLDn1wiLHRob3JuOlwiw75cIix0aW1lczpcIsOXXCIsdWFjdXRlOlwiw7pcIix1Y2lyYzpcIsO7XCIsdWdyYXZlOlwiw7lcIix1bWw6XCLCqFwiLHV1bWw6XCLDvFwiLHlhY3V0ZTpcIsO9XCIseWVuOlwiwqVcIix5dW1sOlwiw79cIn19LGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz17MDpcIu+/vVwiLDEyODpcIuKCrFwiLDEzMDpcIuKAmlwiLDEzMTpcIsaSXCIsMTMyOlwi4oCeXCIsMTMzOlwi4oCmXCIsMTM0Olwi4oCgXCIsMTM1Olwi4oChXCIsMTM2Olwiy4ZcIiwxMzc6XCLigLBcIiwxMzg6XCLFoFwiLDEzOTpcIuKAuVwiLDE0MDpcIsWSXCIsMTQyOlwixb1cIiwxNDU6XCLigJhcIiwxNDY6XCLigJlcIiwxNDc6XCLigJxcIiwxNDg6XCLigJ1cIiwxNDk6XCLigKJcIiwxNTA6XCLigJNcIiwxNTE6XCLigJRcIiwxNTI6XCLLnFwiLDE1MzpcIuKEolwiLDE1NDpcIsWhXCIsMTU1Olwi4oC6XCIsMTU2OlwixZNcIiwxNTg6XCLFvlwiLDE1OTpcIsW4XCJ9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVwic3RyaW5nXCI9PXR5cGVvZiBlP2UuY2hhckNvZGVBdCgwKTplO3JldHVybiB0Pj05NyYmdDw9MTAyfHx0Pj02NSYmdDw9NzB8fHQ+PTQ4JiZ0PD01N319LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDEwMSksbz1uKDQzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSl8fG8oZSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LG49XCImXCIrZStcIjtcIjtpZigocj1yfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaVwiKSkuaW5uZXJIVE1MPW4sXCI7XCI9PT0odD1yLnRleHRDb250ZW50KS5zbGljZSgtMSkmJlwic2VtaVwiIT09ZSlyZXR1cm4hMTtyZXR1cm4gdCE9PW4mJnR9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciBhLGksbCxzLHUsYyxkPXRoaXMscD1kLm9mZnNldCxmPVtdLG09ZFtlK1wiTWV0aG9kc1wiXSxnPWRbZStcIlRva2VuaXplcnNcIl0saD1uLmxpbmUsYj1uLmNvbHVtbjtpZighdClyZXR1cm4gZjtFLm5vdz12LEUuZmlsZT1kLmZpbGUseShcIlwiKTtmb3IoO3Q7KXtmb3IoYT0tMSxpPW0ubGVuZ3RoLHU9ITE7KythPGkmJihzPW1bYV0sIShsPWdbc10pfHxsLm9ubHlBdFN0YXJ0JiYhZC5hdFN0YXJ0fHxsLm5vdEluTGlzdCYmZC5pbkxpc3R8fGwubm90SW5CbG9jayYmZC5pbkJsb2NrfHxsLm5vdEluTGluayYmZC5pbkxpbmt8fChjPXQubGVuZ3RoLGwuYXBwbHkoZCxbRSx0XSksISh1PWMhPT10Lmxlbmd0aCkpKTspO3V8fGQuZmlsZS5mYWlsKG5ldyBFcnJvcihcIkluZmluaXRlIGxvb3BcIiksRS5ub3coKSl9cmV0dXJuIGQuZW9mPXYoKSxmO2Z1bmN0aW9uIHkoZSl7Zm9yKHZhciB0PS0xLG49ZS5pbmRleE9mKFwiXFxuXCIpOy0xIT09bjspaCsrLHQ9bixuPWUuaW5kZXhPZihcIlxcblwiLG4rMSk7LTE9PT10P2IrPWUubGVuZ3RoOmI9ZS5sZW5ndGgtdCxoIGluIHAmJigtMSE9PXQ/Yis9cFtoXTpiPD1wW2hdJiYoYj1wW2hdKzEpKX1mdW5jdGlvbiB2KCl7dmFyIGU9e2xpbmU6aCxjb2x1bW46Yn07cmV0dXJuIGUub2Zmc2V0PWQudG9PZmZzZXQoZSksZX1mdW5jdGlvbiBTKGUpe3RoaXMuc3RhcnQ9ZSx0aGlzLmVuZD12KCl9ZnVuY3Rpb24gRShlKXt2YXIgbj1mdW5jdGlvbigpe3ZhciBlPVtdLHQ9aCsxO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgbj1oKzE7dDxuOyllLnB1c2goKHBbdF18fDApKzEpLHQrKztyZXR1cm4gZX19KCksYT1mdW5jdGlvbigpe3ZhciBlPXYoKTtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj10LnBvc2l0aW9uLG89cj9yLnN0YXJ0OmUsYT1bXSxpPXImJnIuZW5kLmxpbmUsbD1lLmxpbmU7aWYodC5wb3NpdGlvbj1uZXcgUyhvKSxyJiZuJiZyLmluZGVudCl7aWYoYT1yLmluZGVudCxpPGwpe2Zvcig7KytpPGw7KWEucHVzaCgocFtpXXx8MCkrMSk7YS5wdXNoKGUuY29sdW1uKX1uPWEuY29uY2F0KG4pfXJldHVybiB0LnBvc2l0aW9uLmluZGVudD1ufHxbXSx0fX0oKSxpPXYoKTtyZXR1cm4gZnVuY3Rpb24oZSl7dC5zdWJzdHJpbmcoMCxlLmxlbmd0aCkhPT1lJiZkLmZpbGUuZmFpbChuZXcgRXJyb3IoXCJJbmNvcnJlY3RseSBlYXRlbiB2YWx1ZTogcGxlYXNlIHJlcG9ydCB0aGlzIHdhcm5pbmcgb24gaHR0cDovL2dpdC5pby92ZzVGdFwiKSx2KCkpfShlKSxsLnJlc2V0PXMscy50ZXN0PXUsbC50ZXN0PXUsdD10LnN1YnN0cmluZyhlLmxlbmd0aCkseShlKSxuPW4oKSxsO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gYShmdW5jdGlvbihlLHQpe3ZhciBuPXQ/dC5jaGlsZHJlbjpmLGE9bltuLmxlbmd0aC0xXTthJiZlLnR5cGU9PT1hLnR5cGUmJmUudHlwZSBpbiByJiZvKGEpJiZvKGUpJiYoZT1yW2UudHlwZV0uY2FsbChkLGEsZSkpO2UhPT1hJiZuLnB1c2goZSk7ZC5hdFN0YXJ0JiYwIT09Zi5sZW5ndGgmJmQuZXhpdFN0YXJ0KCk7cmV0dXJuIGV9KGEoZSksdCksbil9ZnVuY3Rpb24gcygpe3ZhciBuPWwuYXBwbHkobnVsbCxhcmd1bWVudHMpO3JldHVybiBoPWkubGluZSxiPWkuY29sdW1uLHQ9ZSt0LG59ZnVuY3Rpb24gdSgpe3ZhciBuPWEoe30pO3JldHVybiBoPWkubGluZSxiPWkuY29sdW1uLHQ9ZSt0LG4ucG9zaXRpb259fX19O3ZhciByPXt0ZXh0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudmFsdWUrPXQudmFsdWUsZX0sYmxvY2txdW90ZTpmdW5jdGlvbihlLHQpe2lmKHRoaXMub3B0aW9ucy5jb21tb25tYXJrKXJldHVybiB0O3JldHVybiBlLmNoaWxkcmVuPWUuY2hpbGRyZW4uY29uY2F0KHQuY2hpbGRyZW4pLGV9fTtmdW5jdGlvbiBvKGUpe3ZhciB0LG47cmV0dXJuXCJ0ZXh0XCIhPT1lLnR5cGV8fCFlLnBvc2l0aW9ufHwodD1lLnBvc2l0aW9uLnN0YXJ0LG49ZS5wb3NpdGlvbi5lbmQsdC5saW5lIT09bi5saW5lfHxuLmNvbHVtbi10LmNvbHVtbj09PWUudmFsdWUubGVuZ3RoKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIzKSxvPW4oMzAzKSxhPW4oMTAyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQsbixpPXRoaXMub3B0aW9ucztpZihudWxsPT1lKWU9e307ZWxzZXtpZihcIm9iamVjdFwiIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZhbHVlIGBcIitlK1wiYCBmb3Igc2V0dGluZyBgb3B0aW9uc2BcIik7ZT1yKGUpfWZvcih0IGluIGEpe2lmKG51bGw9PShuPWVbdF0pJiYobj1pW3RdKSxcImJsb2Nrc1wiIT09dCYmXCJib29sZWFuXCIhPXR5cGVvZiBufHxcImJsb2Nrc1wiPT09dCYmXCJvYmplY3RcIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB2YWx1ZSBgXCIrbitcImAgZm9yIHNldHRpbmcgYG9wdGlvbnMuXCIrdCtcImBcIik7ZVt0XT1ufXJldHVybiB0aGlzLm9wdGlvbnM9ZSx0aGlzLmVzY2FwZT1vKGUpLHRoaXN9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWk7dmFyIHI9W1wiXFxcXFwiLFwiYFwiLFwiKlwiLFwie1wiLFwifVwiLFwiW1wiLFwiXVwiLFwiKFwiLFwiKVwiLFwiI1wiLFwiK1wiLFwiLVwiLFwiLlwiLFwiIVwiLFwiX1wiLFwiPlwiXSxvPXIuY29uY2F0KFtcIn5cIixcInxcIl0pLGE9by5jb25jYXQoW1wiXFxuXCIsJ1wiJyxcIiRcIixcIiVcIixcIiZcIixcIidcIixcIixcIixcIi9cIixcIjpcIixcIjtcIixcIjxcIixcIj1cIixcIj9cIixcIkBcIixcIl5cIl0pO2Z1bmN0aW9uIGkoZSl7dmFyIHQ9ZXx8e307cmV0dXJuIHQuY29tbW9ubWFyaz9hOnQuZ2ZtP286cn1pLmRlZmF1bHQ9cixpLmdmbT1vLGkuY29tbW9ubWFyaz1hfSxmdW5jdGlvbihlKXtlLmV4cG9ydHM9W1wiYWRkcmVzc1wiLFwiYXJ0aWNsZVwiLFwiYXNpZGVcIixcImJhc2VcIixcImJhc2Vmb250XCIsXCJibG9ja3F1b3RlXCIsXCJib2R5XCIsXCJjYXB0aW9uXCIsXCJjZW50ZXJcIixcImNvbFwiLFwiY29sZ3JvdXBcIixcImRkXCIsXCJkZXRhaWxzXCIsXCJkaWFsb2dcIixcImRpclwiLFwiZGl2XCIsXCJkbFwiLFwiZHRcIixcImZpZWxkc2V0XCIsXCJmaWdjYXB0aW9uXCIsXCJmaWd1cmVcIixcImZvb3RlclwiLFwiZm9ybVwiLFwiZnJhbWVcIixcImZyYW1lc2V0XCIsXCJoMVwiLFwiaDJcIixcImgzXCIsXCJoNFwiLFwiaDVcIixcImg2XCIsXCJoZWFkXCIsXCJoZWFkZXJcIixcImhncm91cFwiLFwiaHJcIixcImh0bWxcIixcImlmcmFtZVwiLFwibGVnZW5kXCIsXCJsaVwiLFwibGlua1wiLFwibWFpblwiLFwibWVudVwiLFwibWVudWl0ZW1cIixcIm1ldGFcIixcIm5hdlwiLFwibm9mcmFtZXNcIixcIm9sXCIsXCJvcHRncm91cFwiLFwib3B0aW9uXCIsXCJwXCIsXCJwYXJhbVwiLFwicHJlXCIsXCJzZWN0aW9uXCIsXCJzb3VyY2VcIixcInRpdGxlXCIsXCJzdW1tYXJ5XCIsXCJ0YWJsZVwiLFwidGJvZHlcIixcInRkXCIsXCJ0Zm9vdFwiLFwidGhcIixcInRoZWFkXCIsXCJ0aXRsZVwiLFwidHJcIixcInRyYWNrXCIsXCJ1bFwiXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjMpLG89bigzMDYpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlLHQ9U3RyaW5nKHRoaXMuZmlsZSksbj17bGluZToxLGNvbHVtbjoxLG9mZnNldDowfSxsPXIobik7NjUyNzk9PT0odD10LnJlcGxhY2UoaSxhKSkuY2hhckNvZGVBdCgwKSYmKHQ9dC5zbGljZSgxKSxsLmNvbHVtbisrLGwub2Zmc2V0KyspO2U9e3R5cGU6XCJyb290XCIsY2hpbGRyZW46dGhpcy50b2tlbml6ZUJsb2NrKHQsbCkscG9zaXRpb246e3N0YXJ0Om4sZW5kOnRoaXMuZW9mfHxyKG4pfX0sdGhpcy5vcHRpb25zLnBvc2l0aW9ufHxvKGUsITApO3JldHVybiBlfTt2YXIgYT1cIlxcblwiLGk9L1xcclxcbnxcXHIvZ30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oNDQpO2Z1bmN0aW9uIG8oZSl7ZGVsZXRlIGUucG9zaXRpb259ZnVuY3Rpb24gYShlKXtlLnBvc2l0aW9uPXZvaWQgMH1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcihlLHQ/bzphKSxlfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1pO3ZhciByPW4oMzA4KSxvPVwic2tpcFwiLGE9ITE7ZnVuY3Rpb24gaShlLHQsbixpKXtmdW5jdGlvbiBsKGUscyx1KXt2YXIgYztyZXR1cm4odCYmIXIodCxlLHMsdVt1Lmxlbmd0aC0xXXx8bnVsbCl8fChjPW4oZSx1KSkhPT1hKSYmZS5jaGlsZHJlbiYmYyE9PW8mJmZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPWk/LTE6MSxzPShpP2UubGVuZ3RoOi0xKStvO2Zvcig7cz4tMSYmczxlLmxlbmd0aDspe2lmKG49ZVtzXSwocj1uJiZsKG4scyx0KSk9PT1hKXJldHVybiByO3M9XCJudW1iZXJcIj09dHlwZW9mIHI/cjpzK299fShlLmNoaWxkcmVuLHUuY29uY2F0KGUpKT09PWE/YTpjfVwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIG4mJihpPW4sbj10LHQ9bnVsbCksbChlLG51bGwsW10pfWkuQ09OVElOVUU9ITAsaS5TS0lQPW8saS5FWElUPWF9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEJvb2xlYW4odCYmdC50eXBlPT09ZSl9fShlKTtpZihudWxsPT1lKXJldHVybiBvO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBlKXJldHVybihcImxlbmd0aFwiaW4gZT9mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD1bXSxuPWUubGVuZ3RoLG89LTE7Zm9yKDsrK288bjspdFtvXT1yKGVbb10pO3JldHVybiB0fShlKSxuPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPS0xO2Zvcig7KytlPG47KWlmKHRbZV0uYXBwbHkodGhpcyxhcmd1bWVudHMpKXJldHVybiEwO3JldHVybiExfX06ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuO2ZvcihuIGluIGUpaWYodFtuXSE9PWVbbl0pcmV0dXJuITE7cmV0dXJuITB9fSkoZSk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBmdW5jdGlvbiwgc3RyaW5nLCBvciBvYmplY3QgYXMgdGVzdFwiKX1mdW5jdGlvbiBvKCl7cmV0dXJuITB9ZS5leHBvcnRzPWZ1bmN0aW9uIGUodCxuLG8sYSxpKXt2YXIgbD1udWxsIT1hO3ZhciBzPW51bGwhPW87dmFyIHU9cih0KTtpZihzJiYoXCJudW1iZXJcIiE9dHlwZW9mIG98fG88MHx8bz09PTEvMCkpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgcG9zaXRpdmUgZmluaXRlIGluZGV4IG9yIGNoaWxkIG5vZGVcIik7aWYobCYmKCFlKG51bGwsYSl8fCFhLmNoaWxkcmVuKSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBwYXJlbnQgbm9kZVwiKTtpZighbnx8IW4udHlwZXx8XCJzdHJpbmdcIiE9dHlwZW9mIG4udHlwZSlyZXR1cm4hMTtpZihsIT09cyl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBib3RoIHBhcmVudCBhbmQgaW5kZXhcIik7cmV0dXJuIEJvb2xlYW4odS5jYWxsKGksbixvLGEpKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvLGEsaSxsLHM9dC5jaGFyQXQoMCk7aWYoXCJcXG5cIiE9PXMpcmV0dXJuO2lmKG4pcmV0dXJuITA7bD0xLG89dC5sZW5ndGgsYT1zLGk9XCJcIjtmb3IoO2w8byYmKHM9dC5jaGFyQXQobCkscihzKSk7KWkrPXMsXCJcXG5cIj09PXMmJihhKz1pLGk9XCJcIiksbCsrO2UoYSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big1OSksbz1uKDYwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLHUsYyxkPS0xLHA9dC5sZW5ndGgsZj1cIlwiLG09XCJcIixnPVwiXCIsaD1cIlwiO2Zvcig7KytkPHA7KWlmKHI9dC5jaGFyQXQoZCksYylpZihjPSExLGYrPWcsbSs9aCxnPVwiXCIsaD1cIlwiLHI9PT1hKWc9cixoPXI7ZWxzZSBmb3IoZis9cixtKz1yOysrZDxwOyl7aWYoIShyPXQuY2hhckF0KGQpKXx8cj09PWEpe2g9cixnPXI7YnJlYWt9Zis9cixtKz1yfWVsc2UgaWYocj09PWwmJnQuY2hhckF0KGQrMSk9PT1yJiZ0LmNoYXJBdChkKzIpPT09ciYmdC5jaGFyQXQoZCszKT09PXIpZys9cyxkKz0zLGM9ITA7ZWxzZSBpZihyPT09aSlnKz1yLGM9ITA7ZWxzZXtmb3IodT1cIlwiO3I9PT1pfHxyPT09bDspdSs9cixyPXQuY2hhckF0KCsrZCk7aWYociE9PWEpYnJlYWs7Zys9dStyLGgrPXJ9aWYobSlyZXR1cm4hIW58fGUoZikoe3R5cGU6XCJjb2RlXCIsbGFuZzpudWxsLHZhbHVlOm8obSl9KX07dmFyIGE9XCJcXG5cIixpPVwiXFx0XCIsbD1cIiBcIixzPXIobCw0KX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oNjApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIGQscCxmLG0sZyxoLGIseSx2LFMsRSx4PXRoaXMub3B0aW9ucyx3PXQubGVuZ3RoKzEsaz0wLF89XCJcIjtpZigheC5nZm0pcmV0dXJuO2Zvcig7azx3JiYoKGY9dC5jaGFyQXQoaykpPT09aXx8Zj09PWEpOylfKz1mLGsrKztpZihTPWssKGY9dC5jaGFyQXQoaykpIT09bCYmZiE9PXMpcmV0dXJuO2srKyxwPWYsZD0xLF8rPWY7Zm9yKDtrPHcmJihmPXQuY2hhckF0KGspKT09PXA7KV8rPWYsZCsrLGsrKztpZihkPHUpcmV0dXJuO2Zvcig7azx3JiYoKGY9dC5jaGFyQXQoaykpPT09aXx8Zj09PWEpOylfKz1mLGsrKzttPVwiXCIsZz1cIlwiO2Zvcig7azx3JiYoZj10LmNoYXJBdChrKSkhPT1vJiZmIT09bCYmZiE9PXM7KWY9PT1pfHxmPT09YT9nKz1mOihtKz1nK2YsZz1cIlwiKSxrKys7aWYoKGY9dC5jaGFyQXQoaykpJiZmIT09bylyZXR1cm47aWYobilyZXR1cm4hMDsoRT1lLm5vdygpKS5jb2x1bW4rPV8ubGVuZ3RoLEUub2Zmc2V0Kz1fLmxlbmd0aCxfKz1tLG09dGhpcy5kZWNvZGUucmF3KHRoaXMudW5lc2NhcGUobSksRSksZyYmKF8rPWcpO2c9XCJcIix5PVwiXCIsdj1cIlwiLGg9XCJcIixiPVwiXCI7Zm9yKDtrPHc7KWlmKGY9dC5jaGFyQXQoayksaCs9eSxiKz12LHk9XCJcIix2PVwiXCIsZj09PW8pe2ZvcihoPyh5Kz1mLHYrPWYpOl8rPWYsZz1cIlwiLGsrKztrPHcmJihmPXQuY2hhckF0KGspKT09PWk7KWcrPWYsaysrO2lmKHkrPWcsdis9Zy5zbGljZShTKSwhKGcubGVuZ3RoPj1jKSl7Zm9yKGc9XCJcIjtrPHcmJihmPXQuY2hhckF0KGspKT09PXA7KWcrPWYsaysrO2lmKHkrPWcsdis9ZywhKGcubGVuZ3RoPGQpKXtmb3IoZz1cIlwiO2s8dyYmKChmPXQuY2hhckF0KGspKT09PWl8fGY9PT1hKTspeSs9Zix2Kz1mLGsrKztpZighZnx8Zj09PW8pYnJlYWt9fX1lbHNlIGgrPWYsdis9ZixrKys7cmV0dXJuIGUoXys9aCt5KSh7dHlwZTpcImNvZGVcIixsYW5nOm18fG51bGwsdmFsdWU6cihiKX0pfTt2YXIgbz1cIlxcblwiLGE9XCJcXHRcIixpPVwiIFwiLGw9XCJ+XCIscz1cImBcIix1PTMsYz00fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyNCksbz1uKDYxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciB1LGMsZCxwLGYsbSxnLGgsYix5PXRoaXMub2Zmc2V0LHY9dGhpcy5ibG9ja1Rva2VuaXplcnMsUz10aGlzLmludGVycnVwdEJsb2NrcXVvdGUsRT1lLm5vdygpLHg9RS5saW5lLHc9dC5sZW5ndGgsaz1bXSxfPVtdLFQ9W10sQT0wO2Zvcig7QTx3JiYoKGM9dC5jaGFyQXQoQSkpPT09bHx8Yz09PWkpOylBKys7aWYodC5jaGFyQXQoQSkhPT1zKXJldHVybjtpZihuKXJldHVybiEwO0E9MDtmb3IoO0E8dzspe2ZvcihwPXQuaW5kZXhPZihhLEEpLGc9QSxoPSExLC0xPT09cCYmKHA9dyk7QTx3JiYoKGM9dC5jaGFyQXQoQSkpPT09bHx8Yz09PWkpOylBKys7aWYodC5jaGFyQXQoQSk9PT1zPyhBKyssaD0hMCx0LmNoYXJBdChBKT09PWwmJkErKyk6QT1nLGY9dC5zbGljZShBLHApLCFoJiYhcihmKSl7QT1nO2JyZWFrfWlmKCFoJiYoZD10LnNsaWNlKEEpLG8oUyx2LHRoaXMsW2UsZCwhMF0pKSlicmVhazttPWc9PT1BP2Y6dC5zbGljZShnLHApLFQucHVzaChBLWcpLGsucHVzaChtKSxfLnB1c2goZiksQT1wKzF9QT0tMSx3PVQubGVuZ3RoLHU9ZShrLmpvaW4oYSkpO2Zvcig7KytBPHc7KXlbeF09KHlbeF18fDApK1RbQV0seCsrO3JldHVybiBiPXRoaXMuZW50ZXJCbG9jaygpLF89dGhpcy50b2tlbml6ZUJsb2NrKF8uam9pbihhKSxFKSxiKCksdSh7dHlwZTpcImJsb2NrcXVvdGVcIixjaGlsZHJlbjpffSl9O3ZhciBhPVwiXFxuXCIsaT1cIlxcdFwiLGw9XCIgXCIscz1cIj5cIn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHMsdSxjLGQ9dGhpcy5vcHRpb25zLHA9dC5sZW5ndGgrMSxmPS0xLG09ZS5ub3coKSxnPVwiXCIsaD1cIlwiO2Zvcig7KytmPHA7KXtpZigocz10LmNoYXJBdChmKSkhPT1hJiZzIT09byl7Zi0tO2JyZWFrfWcrPXN9Yz0wO2Zvcig7KytmPD1wOyl7aWYoKHM9dC5jaGFyQXQoZikpIT09aSl7Zi0tO2JyZWFrfWcrPXMsYysrfWlmKGM+bClyZXR1cm47aWYoIWN8fCFkLnBlZGFudGljJiZ0LmNoYXJBdChmKzEpPT09aSlyZXR1cm47cD10Lmxlbmd0aCsxLHU9XCJcIjtmb3IoOysrZjxwOyl7aWYoKHM9dC5jaGFyQXQoZikpIT09YSYmcyE9PW8pe2YtLTticmVha311Kz1zfWlmKCFkLnBlZGFudGljJiYwPT09dS5sZW5ndGgmJnMmJnMhPT1yKXJldHVybjtpZihuKXJldHVybiEwO2crPXUsdT1cIlwiLGg9XCJcIjtmb3IoOysrZjxwJiYocz10LmNoYXJBdChmKSkmJnMhPT1yOylpZihzPT09YXx8cz09PW98fHM9PT1pKXtmb3IoO3M9PT1hfHxzPT09bzspdSs9cyxzPXQuY2hhckF0KCsrZik7Zm9yKDtzPT09aTspdSs9cyxzPXQuY2hhckF0KCsrZik7Zm9yKDtzPT09YXx8cz09PW87KXUrPXMscz10LmNoYXJBdCgrK2YpO2YtLX1lbHNlIGgrPXUrcyx1PVwiXCI7cmV0dXJuIG0uY29sdW1uKz1nLmxlbmd0aCxtLm9mZnNldCs9Zy5sZW5ndGgsZShnKz1oK3UpKHt0eXBlOlwiaGVhZGluZ1wiLGRlcHRoOmMsY2hpbGRyZW46dGhpcy50b2tlbml6ZUlubGluZShoLG0pfSl9O3ZhciByPVwiXFxuXCIsbz1cIlxcdFwiLGE9XCIgXCIsaT1cIiNcIixsPTZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBjLGQscCxmLG09LTEsZz10Lmxlbmd0aCsxLGg9XCJcIjtmb3IoOysrbTxnJiYoKGM9dC5jaGFyQXQobSkpPT09b3x8Yz09PWEpOyloKz1jO2lmKGMhPT1pJiZjIT09cyYmYyE9PWwpcmV0dXJuO2Q9YyxoKz1jLHA9MSxmPVwiXCI7Zm9yKDsrK208ZzspaWYoKGM9dC5jaGFyQXQobSkpPT09ZClwKyssaCs9ZitkLGY9XCJcIjtlbHNle2lmKGMhPT1hKXJldHVybiBwPj11JiYoIWN8fGM9PT1yKT8oaCs9ZiwhIW58fGUoaCkoe3R5cGU6XCJ0aGVtYXRpY0JyZWFrXCJ9KSk6dm9pZCAwO2YrPWN9fTt2YXIgcj1cIlxcblwiLG89XCJcXHRcIixhPVwiIFwiLGk9XCIqXCIsbD1cIl9cIixzPVwiLVwiLHU9M30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjQpLG89big1OSksYT1uKDQzKSxpPW4oMTAzKSxsPW4oMzE2KSxzPW4oNjEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIG8saSxsLGcsYix5LHYsUyxFLFQsQSxDLE8sSSxOLFIsUCxNLEwsRCxGLEIsaixVLHo9dGhpcy5vcHRpb25zLmNvbW1vbm1hcmssSD10aGlzLm9wdGlvbnMucGVkYW50aWMsVz10aGlzLmJsb2NrVG9rZW5pemVycyxHPXRoaXMuaW50ZXJydXB0TGlzdCxWPTAsJD10Lmxlbmd0aCxxPW51bGwsSz0wO2Zvcig7VjwkOyl7aWYoKGc9dC5jaGFyQXQoVikpPT09bSlLKz1oLUslaDtlbHNle2lmKGchPT1wKWJyZWFrO0srK31WKyt9aWYoSz49aClyZXR1cm47aWYoZz10LmNoYXJBdChWKSxvPXo/azp3LCEwPT09eFtnXSliPWcsbD0hMTtlbHNle2ZvcihsPSEwLGk9XCJcIjtWPCQmJihnPXQuY2hhckF0KFYpLGEoZykpOylpKz1nLFYrKztpZihnPXQuY2hhckF0KFYpLCFpfHwhMCE9PW9bZ10pcmV0dXJuO3E9cGFyc2VJbnQoaSwxMCksYj1nfWlmKChnPXQuY2hhckF0KCsrVikpIT09cCYmZyE9PW0pcmV0dXJuO2lmKG4pcmV0dXJuITA7Vj0wLEk9W10sTj1bXSxSPVtdO2Zvcig7VjwkOyl7Zm9yKHk9dC5pbmRleE9mKGYsViksdj1WLFM9ITEsVT0hMSwtMT09PXkmJih5PSQpLGo9VitoLEs9MDtWPCQ7KXtpZigoZz10LmNoYXJBdChWKSk9PT1tKUsrPWgtSyVoO2Vsc2V7aWYoZyE9PXApYnJlYWs7SysrfVYrK31pZihLPj1oJiYoVT0hMCksUCYmSz49UC5pbmRlbnQmJihVPSEwKSxnPXQuY2hhckF0KFYpLEU9bnVsbCwhVSl7aWYoITA9PT14W2ddKUU9ZyxWKyssSysrO2Vsc2V7Zm9yKGk9XCJcIjtWPCQmJihnPXQuY2hhckF0KFYpLGEoZykpOylpKz1nLFYrKztnPXQuY2hhckF0KFYpLFYrKyxpJiYhMD09PW9bZ10mJihFPWcsSys9aS5sZW5ndGgrMSl9aWYoRSlpZigoZz10LmNoYXJBdChWKSk9PT1tKUsrPWgtSyVoLFYrKztlbHNlIGlmKGc9PT1wKXtmb3Ioaj1WK2g7VjxqJiZ0LmNoYXJBdChWKT09PXA7KVYrKyxLKys7Vj09PWomJnQuY2hhckF0KFYpPT09cCYmKFYtPWgtMSxLLT1oLTEpfWVsc2UgZyE9PWYmJlwiXCIhPT1nJiYoRT1udWxsKX1pZihFKXtpZighSCYmYiE9PUUpYnJlYWs7Uz0hMH1lbHNlIHp8fFV8fHQuY2hhckF0KHYpIT09cD96JiZQJiYoVT1LPj1QLmluZGVudHx8Sz5oKTpVPSEwLFM9ITEsVj12O2lmKEE9dC5zbGljZSh2LHkpLFQ9dj09PVY/QTp0LnNsaWNlKFYseSksKEU9PT11fHxFPT09Y3x8RT09PWQpJiZXLnRoZW1hdGljQnJlYWsuY2FsbCh0aGlzLGUsQSwhMCkpYnJlYWs7aWYoQz1PLE89IXIoVCkubGVuZ3RoLFUmJlApUC52YWx1ZT1QLnZhbHVlLmNvbmNhdChSLEEpLE49Ti5jb25jYXQoUixBKSxSPVtdO2Vsc2UgaWYoUykwIT09Ui5sZW5ndGgmJihQLnZhbHVlLnB1c2goXCJcIiksUC50cmFpbD1SLmNvbmNhdCgpKSxQPXt2YWx1ZTpbQV0saW5kZW50OkssdHJhaWw6W119LEkucHVzaChQKSxOPU4uY29uY2F0KFIsQSksUj1bXTtlbHNlIGlmKE8pe2lmKEMpYnJlYWs7Ui5wdXNoKEEpfWVsc2V7aWYoQylicmVhaztpZihzKEcsVyx0aGlzLFtlLEEsITBdKSlicmVhaztQLnZhbHVlPVAudmFsdWUuY29uY2F0KFIsQSksTj1OLmNvbmNhdChSLEEpLFI9W119Vj15KzF9Rj1lKE4uam9pbihmKSkucmVzZXQoe3R5cGU6XCJsaXN0XCIsb3JkZXJlZDpsLHN0YXJ0OnEsbG9vc2U6bnVsbCxjaGlsZHJlbjpbXX0pLE09dGhpcy5lbnRlckxpc3QoKSxMPXRoaXMuZW50ZXJCbG9jaygpLEQ9ITEsVj0tMSwkPUkubGVuZ3RoO2Zvcig7KytWPCQ7KVA9SVtWXS52YWx1ZS5qb2luKGYpLEI9ZS5ub3coKSwoUD1lKFApKF8odGhpcyxQLEIpLEYpKS5sb29zZSYmKEQ9ITApLFA9SVtWXS50cmFpbC5qb2luKGYpLFYhPT0kLTEmJihQKz1mKSxlKFApO3JldHVybiBNKCksTCgpLEYubG9vc2U9RCxGfTt2YXIgdT1cIipcIixjPVwiX1wiLGQ9XCItXCIscD1cIiBcIixmPVwiXFxuXCIsbT1cIlxcdFwiLGc9XCJ4XCIsaD00LGI9L1xcblxcbig/IVxccyokKS8seT0vXlxcWyhbIFxcdF18eHxYKV1bIFxcdF0vLHY9L14oWyBcXHRdKikoWyorLV18XFxkK1suKV0pKCB7MSw0fSg/ISApfCB8XFx0fCR8KD89XFxuKSkoW15cXG5dKikvLFM9L14oWyBcXHRdKikoWyorLV18XFxkK1suKV0pKFsgXFx0XSspLyxFPS9eKCB7MSw0fXxcXHQpPy9nbSx4PXt9O3hbdV09ITAseFtcIitcIl09ITAseFtkXT0hMDt2YXIgdz17XCIuXCI6ITB9LGs9e307ZnVuY3Rpb24gXyhlLHQsbil7dmFyIHIsbyxhPWUub2Zmc2V0LGk9bnVsbDtyZXR1cm4gdD0oZS5vcHRpb25zLnBlZGFudGljP1Q6QSkuYXBwbHkobnVsbCxhcmd1bWVudHMpLGUub3B0aW9ucy5nZm0mJihyPXQubWF0Y2goeSkpJiYobz1yWzBdLmxlbmd0aCxpPXJbMV0udG9Mb3dlckNhc2UoKT09PWcsYVtuLmxpbmVdKz1vLHQ9dC5zbGljZShvKSkse3R5cGU6XCJsaXN0SXRlbVwiLGxvb3NlOmIudGVzdCh0KXx8dC5jaGFyQXQodC5sZW5ndGgtMSk9PT1mLGNoZWNrZWQ6aSxjaGlsZHJlbjplLnRva2VuaXplQmxvY2sodCxuKX19ZnVuY3Rpb24gVChlLHQsbil7dmFyIHI9ZS5vZmZzZXQsbz1uLmxpbmU7cmV0dXJuIHQ9dC5yZXBsYWNlKFMsYSksbz1uLmxpbmUsdC5yZXBsYWNlKEUsYSk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gcltvXT0ocltvXXx8MCkrZS5sZW5ndGgsbysrLFwiXCJ9fWZ1bmN0aW9uIEEoZSx0LG4pe3ZhciByLGEscyx1LGMsZCxtLGc9ZS5vZmZzZXQsaD1uLmxpbmU7Zm9yKHU9KHQ9dC5yZXBsYWNlKHYsZnVuY3Rpb24oZSx0LG4saSxsKXthPXQrbitpLHM9bCxOdW1iZXIobik8MTAmJmEubGVuZ3RoJTI9PTEmJihuPXArbik7cmV0dXJuKHI9dCtvKHAsbi5sZW5ndGgpK2kpK3N9KSkuc3BsaXQoZiksKGM9bCh0LGkocikuaW5kZW50KS5zcGxpdChmKSlbMF09cyxnW2hdPShnW2hdfHwwKSthLmxlbmd0aCxoKyssZD0wLG09dS5sZW5ndGg7KytkPG07KWdbaF09KGdbaF18fDApK3VbZF0ubGVuZ3RoLWNbZF0ubGVuZ3RoLGgrKztyZXR1cm4gYy5qb2luKGYpfWtbXCIuXCJdPSEwLGtbXCIpXCJdPSEwfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyNCksbz1uKDU5KSxhPW4oMTAzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbix1LGMsZCxwPWUuc3BsaXQobCksZj1wLmxlbmd0aCsxLG09MS8wLGc9W107cC51bnNoaWZ0KG8oaSx0KStcIiFcIik7Zm9yKDtmLS07KWlmKHU9YShwW2ZdKSxnW2ZdPXUuc3RvcHMsMCE9PXIocFtmXSkubGVuZ3RoKXtpZighdS5pbmRlbnQpe209MS8wO2JyZWFrfXUuaW5kZW50PjAmJnUuaW5kZW50PG0mJihtPXUuaW5kZW50KX1pZihtIT09MS8wKWZvcihmPXAubGVuZ3RoO2YtLTspe2ZvcihjPWdbZl0sbj1tO24mJiEobiBpbiBjKTspbi0tO2Q9MCE9PXIocFtmXSkubGVuZ3RoJiZtJiZuIT09bT9zOlwiXCIscFtmXT1kK3BbZl0uc2xpY2UobiBpbiBjP2Nbbl0rMTowKX1yZXR1cm4gcC5zaGlmdCgpLHAuam9pbihsKX07dmFyIGk9XCIgXCIsbD1cIlxcblwiLHM9XCJcXHRcIn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHMsdSxjLGQscCxmPWUubm93KCksbT10Lmxlbmd0aCxnPS0xLGg9XCJcIjtmb3IoOysrZzxtOyl7aWYoKGM9dC5jaGFyQXQoZykpIT09YXx8Zz49aSl7Zy0tO2JyZWFrfWgrPWN9cz1cIlwiLHU9XCJcIjtmb3IoOysrZzxtOyl7aWYoKGM9dC5jaGFyQXQoZykpPT09cil7Zy0tO2JyZWFrfWM9PT1hfHxjPT09bz91Kz1jOihzKz11K2MsdT1cIlwiKX1pZihmLmNvbHVtbis9aC5sZW5ndGgsZi5vZmZzZXQrPWgubGVuZ3RoLGgrPXMrdSxjPXQuY2hhckF0KCsrZyksZD10LmNoYXJBdCgrK2cpLGMhPT1yfHwhbFtkXSlyZXR1cm47aCs9Yyx1PWQscD1sW2RdO2Zvcig7KytnPG07KXtpZigoYz10LmNoYXJBdChnKSkhPT1kKXtpZihjIT09cilyZXR1cm47Zy0tO2JyZWFrfXUrPWN9aWYobilyZXR1cm4hMDtyZXR1cm4gZShoK3UpKHt0eXBlOlwiaGVhZGluZ1wiLGRlcHRoOnAsY2hpbGRyZW46dGhpcy50b2tlbml6ZUlubGluZShzLGYpfSl9O3ZhciByPVwiXFxuXCIsbz1cIlxcdFwiLGE9XCIgXCIsaT0zLGw9e307bFtcIj1cIl09MSxsW1wiLVwiXT0yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigxMDQpLm9wZW5DbG9zZVRhZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBzLHUsYyxkLHAsZixtLGc9dGhpcy5vcHRpb25zLmJsb2NrcyxoPXQubGVuZ3RoLGI9MCx5PVtbL148KHNjcmlwdHxwcmV8c3R5bGUpKD89KFxcc3w+fCQpKS9pLC88XFwvKHNjcmlwdHxwcmV8c3R5bGUpPi9pLCEwXSxbL148IS0tLywvLS0+LywhMF0sWy9ePFxcPy8sL1xcPz4vLCEwXSxbL148IVtBLVphLXpdLywvPi8sITBdLFsvXjwhXFxbQ0RBVEFcXFsvLC9cXF1cXF0+LywhMF0sW25ldyBSZWdFeHAoXCJePC8/KFwiK2cuam9pbihcInxcIikrXCIpKD89KFxcXFxzfC8/PnwkKSlcIixcImlcIiksL14kLywhMF0sW25ldyBSZWdFeHAoci5zb3VyY2UrXCJcXFxccyokXCIpLC9eJC8sITFdXTtmb3IoO2I8aCYmKChkPXQuY2hhckF0KGIpKT09PW98fGQ9PT1hKTspYisrO2lmKHQuY2hhckF0KGIpIT09bClyZXR1cm47cz0tMT09PShzPXQuaW5kZXhPZihpLGIrMSkpP2g6cyx1PXQuc2xpY2UoYixzKSxjPS0xLHA9eS5sZW5ndGg7Zm9yKDsrK2M8cDspaWYoeVtjXVswXS50ZXN0KHUpKXtmPXlbY107YnJlYWt9aWYoIWYpcmV0dXJuO2lmKG4pcmV0dXJuIGZbMl07aWYoYj1zLCFmWzFdLnRlc3QodSkpZm9yKDtiPGg7KXtpZihzPS0xPT09KHM9dC5pbmRleE9mKGksYisxKSk/aDpzLHU9dC5zbGljZShiKzEscyksZlsxXS50ZXN0KHUpKXt1JiYoYj1zKTticmVha31iPXN9cmV0dXJuIG09dC5zbGljZSgwLGIpLGUobSkoe3R5cGU6XCJodG1sXCIsdmFsdWU6bX0pfTt2YXIgbz1cIlxcdFwiLGE9XCIgXCIsaT1cIlxcblwiLGw9XCI8XCJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIwKSxvPW4oNjIpO2UuZXhwb3J0cz1tLG0ubm90SW5MaXN0PSEwLG0ubm90SW5CbG9jaz0hMDt2YXIgYT1cIlxcXFxcIixpPVwiXFxuXCIsbD1cIlxcdFwiLHM9XCIgXCIsdT1cIltcIixjPVwiXVwiLGQ9XCJeXCIscD1cIjpcIixmPS9eKCB7NH18XFx0KT8vZ207ZnVuY3Rpb24gbShlLHQsbil7dmFyIG0sZyxoLGIseSx2LFMsRSx4LHcsayxfLFQ9dGhpcy5vZmZzZXQ7aWYodGhpcy5vcHRpb25zLmZvb3Rub3Rlcyl7Zm9yKG09MCxnPXQubGVuZ3RoLGg9XCJcIixiPWUubm93KCkseT1iLmxpbmU7bTxnJiYoeD10LmNoYXJBdChtKSxyKHgpKTspaCs9eCxtKys7aWYodC5jaGFyQXQobSk9PT11JiZ0LmNoYXJBdChtKzEpPT09ZCl7Zm9yKG09KGgrPXUrZCkubGVuZ3RoLFM9XCJcIjttPGcmJih4PXQuY2hhckF0KG0pKSE9PWM7KXg9PT1hJiYoUys9eCxtKysseD10LmNoYXJBdChtKSksUys9eCxtKys7aWYoUyYmdC5jaGFyQXQobSk9PT1jJiZ0LmNoYXJBdChtKzEpPT09cCl7aWYobilyZXR1cm4hMDtmb3Iodz1vKFMpLG09KGgrPVMrYytwKS5sZW5ndGg7bTxnJiYoKHg9dC5jaGFyQXQobSkpPT09bHx8eD09PXMpOyloKz14LG0rKztmb3IoYi5jb2x1bW4rPWgubGVuZ3RoLGIub2Zmc2V0Kz1oLmxlbmd0aCxTPVwiXCIsdj1cIlwiLEU9XCJcIjttPGc7KXtpZigoeD10LmNoYXJBdChtKSk9PT1pKXtmb3IoRT14LG0rKzttPGcmJih4PXQuY2hhckF0KG0pKT09PWk7KUUrPXgsbSsrO2ZvcihTKz1FLEU9XCJcIjttPGcmJih4PXQuY2hhckF0KG0pKT09PXM7KUUrPXgsbSsrO2lmKDA9PT1FLmxlbmd0aClicmVhaztTKz1FfVMmJih2Kz1TLFM9XCJcIiksdis9eCxtKyt9cmV0dXJuIGgrPXYsdj12LnJlcGxhY2UoZixmdW5jdGlvbihlKXtyZXR1cm4gVFt5XT0oVFt5XXx8MCkrZS5sZW5ndGgseSsrLFwiXCJ9KSxrPWUoaCksXz10aGlzLmVudGVyQmxvY2soKSx2PXRoaXMudG9rZW5pemVCbG9jayh2LGIpLF8oKSxrKHt0eXBlOlwiZm9vdG5vdGVEZWZpbml0aW9uXCIsaWRlbnRpZmllcjp3LGNoaWxkcmVuOnZ9KX19fX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKC9cXHMrL2csXCIgXCIpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjApLG89big2Mik7ZS5leHBvcnRzPXkseS5ub3RJbkxpc3Q9ITAseS5ub3RJbkJsb2NrPSEwO3ZhciBhPSdcIicsaT1cIidcIixsPVwiXFxcXFwiLHM9XCJcXG5cIix1PVwiXFx0XCIsYz1cIiBcIixkPVwiW1wiLHA9XCJdXCIsZj1cIihcIixtPVwiKVwiLGc9XCI6XCIsaD1cIjxcIixiPVwiPlwiO2Z1bmN0aW9uIHkoZSx0LG4pe2Zvcih2YXIgcixiLHksRSx4LHcsayxfLFQ9dGhpcy5vcHRpb25zLmNvbW1vbm1hcmssQT0wLEM9dC5sZW5ndGgsTz1cIlwiO0E8QyYmKChFPXQuY2hhckF0KEEpKT09PWN8fEU9PT11KTspTys9RSxBKys7aWYoKEU9dC5jaGFyQXQoQSkpPT09ZCl7Zm9yKEErKyxPKz1FLHk9XCJcIjtBPEMmJihFPXQuY2hhckF0KEEpKSE9PXA7KUU9PT1sJiYoeSs9RSxBKyssRT10LmNoYXJBdChBKSkseSs9RSxBKys7aWYoeSYmdC5jaGFyQXQoQSk9PT1wJiZ0LmNoYXJBdChBKzEpPT09Zyl7Zm9yKHc9eSxBPShPKz15K3ArZykubGVuZ3RoLHk9XCJcIjtBPEMmJigoRT10LmNoYXJBdChBKSk9PT11fHxFPT09Y3x8RT09PXMpOylPKz1FLEErKztpZih5PVwiXCIscj1PLChFPXQuY2hhckF0KEEpKT09PWgpe2ZvcihBKys7QTxDJiZ2KEU9dC5jaGFyQXQoQSkpOyl5Kz1FLEErKztpZigoRT10LmNoYXJBdChBKSk9PT12LmRlbGltaXRlcilPKz1oK3krRSxBKys7ZWxzZXtpZihUKXJldHVybjtBLT15Lmxlbmd0aCsxLHk9XCJcIn19aWYoIXkpe2Zvcig7QTxDJiZTKEU9dC5jaGFyQXQoQSkpOyl5Kz1FLEErKztPKz15fWlmKHkpe2ZvcihrPXkseT1cIlwiO0E8QyYmKChFPXQuY2hhckF0KEEpKT09PXV8fEU9PT1jfHxFPT09cyk7KXkrPUUsQSsrO2lmKHg9bnVsbCwoRT10LmNoYXJBdChBKSk9PT1hP3g9YTpFPT09aT94PWk6RT09PWYmJih4PW0pLHgpe2lmKCF5KXJldHVybjtmb3IoQT0oTys9eStFKS5sZW5ndGgseT1cIlwiO0E8QyYmKEU9dC5jaGFyQXQoQSkpIT09eDspe2lmKEU9PT1zKXtpZihBKyssKEU9dC5jaGFyQXQoQSkpPT09c3x8RT09PXgpcmV0dXJuO3krPXN9eSs9RSxBKyt9aWYoKEU9dC5jaGFyQXQoQSkpIT09eClyZXR1cm47Yj1PLE8rPXkrRSxBKyssXz15LHk9XCJcIn1lbHNlIHk9XCJcIixBPU8ubGVuZ3RoO2Zvcig7QTxDJiYoKEU9dC5jaGFyQXQoQSkpPT09dXx8RT09PWMpOylPKz1FLEErKztyZXR1cm4oRT10LmNoYXJBdChBKSkmJkUhPT1zP3ZvaWQgMDohIW58fChyPWUocikudGVzdCgpLmVuZCxrPXRoaXMuZGVjb2RlLnJhdyh0aGlzLnVuZXNjYXBlKGspLHIse25vblRlcm1pbmF0ZWQ6ITF9KSxfJiYoYj1lKGIpLnRlc3QoKS5lbmQsXz10aGlzLmRlY29kZS5yYXcodGhpcy51bmVzY2FwZShfKSxiKSksZShPKSh7dHlwZTpcImRlZmluaXRpb25cIixpZGVudGlmaWVyOm8odyksdGl0bGU6X3x8bnVsbCx1cmw6a30pKX19fX1mdW5jdGlvbiB2KGUpe3JldHVybiBlIT09YiYmZSE9PWQmJmUhPT1wfWZ1bmN0aW9uIFMoZSl7cmV0dXJuIGUhPT1kJiZlIT09cCYmIXIoZSl9di5kZWxpbWl0ZXI9Yn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHksdixTLEUseCx3LGssXyxULEEsQyxPLEksTixSLFAsTSxMLEQsRixCLGosVSx6O2lmKCF0aGlzLm9wdGlvbnMuZ2ZtKXJldHVybjt5PTAsTD0wLHc9dC5sZW5ndGgrMSxrPVtdO2Zvcig7eTx3Oyl7aWYoaj10LmluZGV4T2YoYyx5KSxVPXQuaW5kZXhPZihsLHkrMSksLTE9PT1qJiYoaj10Lmxlbmd0aCksLTE9PT1VfHxVPmope2lmKEw8ZilyZXR1cm47YnJlYWt9ay5wdXNoKHQuc2xpY2UoeSxqKSksTCsrLHk9aisxfUU9ay5qb2luKGMpLHY9ay5zcGxpY2UoMSwxKVswXXx8W10seT0wLHc9di5sZW5ndGgsTC0tLFM9ITEsQz1bXTtmb3IoO3k8dzspe2lmKChUPXYuY2hhckF0KHkpKT09PWwpe2lmKEE9bnVsbCwhMT09PVMpe2lmKCExPT09eilyZXR1cm59ZWxzZSBDLnB1c2goUyksUz0hMTt6PSExfWVsc2UgaWYoVD09PWkpQT0hMCxTPVN8fGI7ZWxzZSBpZihUPT09cylTPVM9PT1tP2c6QSYmUz09PWI/aDptO2Vsc2UgaWYoIXIoVCkpcmV0dXJuO3krK30hMSE9PVMmJkMucHVzaChTKTtpZihDLmxlbmd0aDxwKXJldHVybjtpZihuKXJldHVybiEwO009LTEsRj1bXSxCPWUoRSkucmVzZXQoe3R5cGU6XCJ0YWJsZVwiLGFsaWduOkMsY2hpbGRyZW46Rn0pO2Zvcig7KytNPEw7KXtmb3IoRD1rW01dLHg9e3R5cGU6XCJ0YWJsZVJvd1wiLGNoaWxkcmVuOltdfSxNJiZlKGMpLGUoRCkucmVzZXQoeCxCKSx3PUQubGVuZ3RoKzEseT0wLF89XCJcIixPPVwiXCIsST0hMCxOPW51bGwsUj1udWxsO3k8dzspaWYoKFQ9RC5jaGFyQXQoeSkpIT09ZCYmVCE9PXUpe2lmKFwiXCI9PT1UfHxUPT09bClpZihJKWUoVCk7ZWxzZXtpZihUJiZSKXtfKz1ULHkrKztjb250aW51ZX0hTyYmIVR8fEl8fChFPU8sXy5sZW5ndGg+MSYmKFQ/KEUrPV8uc2xpY2UoMCxfLmxlbmd0aC0xKSxfPV8uY2hhckF0KF8ubGVuZ3RoLTEpKTooRSs9XyxfPVwiXCIpKSxQPWUubm93KCksZShFKSh7dHlwZTpcInRhYmxlQ2VsbFwiLGNoaWxkcmVuOnRoaXMudG9rZW5pemVJbmxpbmUoTyxQKX0seCkpLGUoXytUKSxfPVwiXCIsTz1cIlwifWVsc2UgaWYoXyYmKE8rPV8sXz1cIlwiKSxPKz1ULFQ9PT1vJiZ5IT09dy0yJiYoTys9RC5jaGFyQXQoeSsxKSx5KyspLFQ9PT1hKXtmb3IoTj0xO0QuY2hhckF0KHkrMSk9PT1UOylPKz1ULHkrKyxOKys7Uj9OPj1SJiYoUj0wKTpSPU59ST0hMSx5Kyt9ZWxzZSBPP18rPVQ6ZShUKSx5Kys7TXx8ZShjK3YpfXJldHVybiBCfTt2YXIgbz1cIlxcXFxcIixhPVwiYFwiLGk9XCItXCIsbD1cInxcIixzPVwiOlwiLHU9XCIgXCIsYz1cIlxcblwiLGQ9XCJcXHRcIixwPTEsZj0yLG09XCJsZWZ0XCIsZz1cImNlbnRlclwiLGg9XCJyaWdodFwiLGI9bnVsbH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjQpLG89big0MyksYT1uKDYwKSxpPW4oNjEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIGQscCxmLG0sZyxoPXRoaXMub3B0aW9ucyxiPWguY29tbW9ubWFyayx5PWguZ2ZtLHY9dGhpcy5ibG9ja1Rva2VuaXplcnMsUz10aGlzLmludGVycnVwdFBhcmFncmFwaCxFPXQuaW5kZXhPZihsKSx4PXQubGVuZ3RoO2Zvcig7RTx4Oyl7aWYoLTE9PT1FKXtFPXg7YnJlYWt9aWYodC5jaGFyQXQoRSsxKT09PWwpYnJlYWs7aWYoYil7Zm9yKG09MCxkPUUrMTtkPHg7KXtpZigoZj10LmNoYXJBdChkKSk9PT1zKXttPWM7YnJlYWt9aWYoZiE9PXUpYnJlYWs7bSsrLGQrK31pZihtPj1jKXtFPXQuaW5kZXhPZihsLEUrMSk7Y29udGludWV9fWlmKHA9dC5zbGljZShFKzEpLGkoUyx2LHRoaXMsW2UscCwhMF0pKWJyZWFrO2lmKHYubGlzdC5jYWxsKHRoaXMsZSxwLCEwKSYmKHRoaXMuaW5MaXN0fHxifHx5JiYhbyhyLmxlZnQocCkuY2hhckF0KDApKSkpYnJlYWs7aWYoZD1FLC0xIT09KEU9dC5pbmRleE9mKGwsRSsxKSkmJlwiXCI9PT1yKHQuc2xpY2UoZCxFKSkpe0U9ZDticmVha319aWYocD10LnNsaWNlKDAsRSksXCJcIj09PXIocCkpcmV0dXJuIGUocCksbnVsbDtpZihuKXJldHVybiEwO3JldHVybiBnPWUubm93KCkscD1hKHApLGUocCkoe3R5cGU6XCJwYXJhZ3JhcGhcIixjaGlsZHJlbjp0aGlzLnRva2VuaXplSW5saW5lKHAsZyl9KX07dmFyIGw9XCJcXG5cIixzPVwiXFx0XCIsdT1cIiBcIixjPTR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDMyNSk7ZnVuY3Rpb24gbyhlLHQsbil7dmFyIHIsbztpZihcIlxcXFxcIj09PXQuY2hhckF0KDApJiYocj10LmNoYXJBdCgxKSwtMSE9PXRoaXMuZXNjYXBlLmluZGV4T2YocikpKXJldHVybiEhbnx8KG89XCJcXG5cIj09PXI/e3R5cGU6XCJicmVha1wifTp7dHlwZTpcInRleHRcIix2YWx1ZTpyfSxlKFwiXFxcXFwiK3IpKG8pKX1lLmV4cG9ydHM9byxvLmxvY2F0b3I9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBlLmluZGV4T2YoXCJcXFxcXCIsdCl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyMCksbz1uKDQyKSxhPW4oMTA1KTtlLmV4cG9ydHM9cCxwLmxvY2F0b3I9YSxwLm5vdEluTGluaz0hMDt2YXIgaT1cIjxcIixsPVwiPlwiLHM9XCJAXCIsdT1cIi9cIixjPVwibWFpbHRvOlwiLGQ9Yy5sZW5ndGg7ZnVuY3Rpb24gcChlLHQsbil7dmFyIGEscCxmLG0sZyxoLGIseSx2LFMsRTtpZih0LmNoYXJBdCgwKT09PWkpe2Zvcih0aGlzLGE9XCJcIixwPXQubGVuZ3RoLGY9MCxtPVwiXCIsaD0hMSxiPVwiXCIsZisrLGE9aTtmPHAmJihnPXQuY2hhckF0KGYpLCEocihnKXx8Zz09PWx8fGc9PT1zfHxcIjpcIj09PWcmJnQuY2hhckF0KGYrMSk9PT11KSk7KW0rPWcsZisrO2lmKG0pe2lmKGIrPW0sbT1cIlwiLGIrPWc9dC5jaGFyQXQoZiksZisrLGc9PT1zKWg9ITA7ZWxzZXtpZihcIjpcIiE9PWd8fHQuY2hhckF0KGYrMSkhPT11KXJldHVybjtiKz11LGYrK31mb3IoO2Y8cCYmKGc9dC5jaGFyQXQoZiksIXIoZykmJmchPT1sKTspbSs9ZyxmKys7aWYoZz10LmNoYXJBdChmKSxtJiZnPT09bClyZXR1cm4hIW58fCh2PWIrPW0sYSs9YitnLCh5PWUubm93KCkpLmNvbHVtbisrLHkub2Zmc2V0KyssaCYmKGIuc2xpY2UoMCxkKS50b0xvd2VyQ2FzZSgpPT09Yz8odj12LnN1YnN0cihkKSx5LmNvbHVtbis9ZCx5Lm9mZnNldCs9ZCk6Yj1jK2IpLFM9dGhpcy5pbmxpbmVUb2tlbml6ZXJzLHRoaXMuaW5saW5lVG9rZW5pemVycz17dGV4dDpTLnRleHR9LEU9dGhpcy5lbnRlckxpbmsoKSx2PXRoaXMudG9rZW5pemVJbmxpbmUodix5KSx0aGlzLmlubGluZVRva2VuaXplcnM9UyxFKCksZShhKSh7dHlwZTpcImxpbmtcIix0aXRsZTpudWxsLHVybDpvKGIse25vblRlcm1pbmF0ZWQ6ITF9KSxjaGlsZHJlbjp2fSkpfX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big0Miksbz1uKDIwKSxhPW4oMzI4KTtlLmV4cG9ydHM9ZyxnLmxvY2F0b3I9YSxnLm5vdEluTGluaz0hMDt2YXIgaT1cIltcIixsPVwiXVwiLHM9XCIoXCIsdT1cIilcIixjPVwiPFwiLGQ9XCJAXCIscD1cIm1haWx0bzpcIixmPVtcImh0dHA6Ly9cIixcImh0dHBzOi8vXCIscF0sbT1mLmxlbmd0aDtmdW5jdGlvbiBnKGUsdCxuKXt2YXIgYSxnLGgsYix5LHYsUyxFLHgsdyxrLF87aWYodGhpcy5vcHRpb25zLmdmbSl7Zm9yKGE9XCJcIixiPS0xLEU9bTsrK2I8RTspaWYodj1mW2JdLChTPXQuc2xpY2UoMCx2Lmxlbmd0aCkpLnRvTG93ZXJDYXNlKCk9PT12KXthPVM7YnJlYWt9aWYoYSl7Zm9yKGI9YS5sZW5ndGgsRT10Lmxlbmd0aCx4PVwiXCIsdz0wO2I8RSYmKGg9dC5jaGFyQXQoYiksIW8oaCkmJmghPT1jKSYmKFwiLlwiIT09aCYmXCIsXCIhPT1oJiZcIjpcIiE9PWgmJlwiO1wiIT09aCYmJ1wiJyE9PWgmJlwiJ1wiIT09aCYmXCIpXCIhPT1oJiZcIl1cIiE9PWh8fChrPXQuY2hhckF0KGIrMSkpJiYhbyhrKSkmJihoIT09cyYmaCE9PWl8fHcrKyxoIT09dSYmaCE9PWx8fCEoLS13PDApKTspeCs9aCxiKys7aWYoeCl7aWYoZz1hKz14LHY9PT1wKXtpZigtMT09PSh5PXguaW5kZXhPZihkKSl8fHk9PT1FLTEpcmV0dXJuO2c9Zy5zdWJzdHIocC5sZW5ndGgpfXJldHVybiEhbnx8KF89dGhpcy5lbnRlckxpbmsoKSxnPXRoaXMudG9rZW5pemVJbmxpbmUoZyxlLm5vdygpKSxfKCksZShhKSh7dHlwZTpcImxpbmtcIix0aXRsZTpudWxsLHVybDpyKGEse25vblRlcm1pbmF0ZWQ6ITF9KSxjaGlsZHJlbjpnfSkpfX19fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuLG89ci5sZW5ndGgsYT0tMSxpPS0xO2lmKCF0aGlzLm9wdGlvbnMuZ2ZtKXJldHVybi0xO2Zvcig7KythPG87KS0xIT09KG49ZS5pbmRleE9mKHJbYV0sdCkpJiYobjxpfHwtMT09PWkpJiYoaT1uKTtyZXR1cm4gaX07dmFyIHI9W1wiaHR0cHM6Ly9cIixcImh0dHA6Ly9cIixcIm1haWx0bzpcIl19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDEwMSksbz1uKDEwNSksYT1uKDEwNCkudGFnO2UuZXhwb3J0cz1zLHMubG9jYXRvcj1vO3ZhciBpPS9ePGEgL2ksbD0vXjxcXC9hPi9pO2Z1bmN0aW9uIHMoZSx0LG4pe3ZhciBvLHMsdT10Lmxlbmd0aDtpZighKFwiPFwiIT09dC5jaGFyQXQoMCl8fHU8MykmJihvPXQuY2hhckF0KDEpLChyKG8pfHxcIj9cIj09PW98fFwiIVwiPT09b3x8XCIvXCI9PT1vKSYmKHM9dC5tYXRjaChhKSkpKXJldHVybiEhbnx8KHM9c1swXSwhdGhpcy5pbkxpbmsmJmkudGVzdChzKT90aGlzLmluTGluaz0hMDp0aGlzLmluTGluayYmbC50ZXN0KHMpJiYodGhpcy5pbkxpbms9ITEpLGUocykoe3R5cGU6XCJodG1sXCIsdmFsdWU6c30pKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIwKSxvPW4oMTA2KTtlLmV4cG9ydHM9aCxoLmxvY2F0b3I9bzt2YXIgYT17fS5oYXNPd25Qcm9wZXJ0eSxpPVwiXFxcXFwiLGw9XCJbXCIscz1cIl1cIix1PVwiKFwiLGM9XCIpXCIsZD1cIjxcIixwPVwiPlwiLGY9XCJgXCIsbT17J1wiJzonXCInLFwiJ1wiOlwiJ1wifSxnPXt9O2Z1bmN0aW9uIGgoZSx0LG4pe3ZhciBvLGgsYix5LHYsUyxFLHgsdyxrLF8sVCxBLEMsTyxJLE4sUixQLE09XCJcIixMPTAsRD10LmNoYXJBdCgwKSxGPXRoaXMub3B0aW9ucy5wZWRhbnRpYyxCPXRoaXMub3B0aW9ucy5jb21tb25tYXJrLGo9dGhpcy5vcHRpb25zLmdmbTtpZihcIiFcIj09PUQmJih3PSEwLE09RCxEPXQuY2hhckF0KCsrTCkpLEQ9PT1sJiYod3x8IXRoaXMuaW5MaW5rKSl7Zm9yKE0rPUQsTz1cIlwiLEwrKyxUPXQubGVuZ3RoLEM9MCwoTj1lLm5vdygpKS5jb2x1bW4rPUwsTi5vZmZzZXQrPUw7TDxUOyl7aWYoUz1EPXQuY2hhckF0KEwpLEQ9PT1mKXtmb3IoaD0xO3QuY2hhckF0KEwrMSk9PT1mOylTKz1ELEwrKyxoKys7Yj9oPj1iJiYoYj0wKTpiPWh9ZWxzZSBpZihEPT09aSlMKyssUys9dC5jaGFyQXQoTCk7ZWxzZSBpZihiJiYhanx8RCE9PWwpe2lmKCghYnx8aikmJkQ9PT1zKXtpZighQyl7aWYoIUYpZm9yKDtMPFQmJihEPXQuY2hhckF0KEwrMSkscihEKSk7KVMrPUQsTCsrO2lmKHQuY2hhckF0KEwrMSkhPT11KXJldHVybjtTKz11LG89ITAsTCsrO2JyZWFrfUMtLX19ZWxzZSBDKys7Tys9UyxTPVwiXCIsTCsrfWlmKG8pe2ZvcihrPU8sTSs9TytTLEwrKztMPFQmJihEPXQuY2hhckF0KEwpLHIoRCkpOylNKz1ELEwrKztpZihEPXQuY2hhckF0KEwpLHg9Qj9nOm0sTz1cIlwiLHk9TSxEPT09ZCl7Zm9yKEwrKyx5Kz1kO0w8VCYmKEQ9dC5jaGFyQXQoTCkpIT09cDspe2lmKEImJlwiXFxuXCI9PT1EKXJldHVybjtPKz1ELEwrK31pZih0LmNoYXJBdChMKSE9PXApcmV0dXJuO00rPWQrTytwLEk9TyxMKyt9ZWxzZXtmb3IoRD1udWxsLFM9XCJcIjtMPFQmJihEPXQuY2hhckF0KEwpLCFTfHwhYS5jYWxsKHgsRCkpOyl7aWYocihEKSl7aWYoIUYpYnJlYWs7Uys9RH1lbHNle2lmKEQ9PT11KUMrKztlbHNlIGlmKEQ9PT1jKXtpZigwPT09QylicmVhaztDLS19Tys9UyxTPVwiXCIsRD09PWkmJihPKz1pLEQ9dC5jaGFyQXQoKytMKSksTys9RH1MKyt9ST1PLEw9KE0rPU8pLmxlbmd0aH1mb3IoTz1cIlwiO0w8VCYmKEQ9dC5jaGFyQXQoTCkscihEKSk7KU8rPUQsTCsrO2lmKEQ9dC5jaGFyQXQoTCksTSs9TyxPJiZhLmNhbGwoeCxEKSlpZihMKyssTSs9RCxPPVwiXCIsXz14W0RdLHY9TSxCKXtmb3IoO0w8VCYmKEQ9dC5jaGFyQXQoTCkpIT09XzspRD09PWkmJihPKz1pLEQ9dC5jaGFyQXQoKytMKSksTCsrLE8rPUQ7aWYoKEQ9dC5jaGFyQXQoTCkpIT09XylyZXR1cm47Zm9yKEE9TyxNKz1PK0QsTCsrO0w8VCYmKEQ9dC5jaGFyQXQoTCkscihEKSk7KU0rPUQsTCsrfWVsc2UgZm9yKFM9XCJcIjtMPFQ7KXtpZigoRD10LmNoYXJBdChMKSk9PT1fKUUmJihPKz1fK1MsUz1cIlwiKSxFPSEwO2Vsc2UgaWYoRSl7aWYoRD09PWMpe00rPU8rXytTLEE9TzticmVha31yKEQpP1MrPUQ6KE8rPV8rUytELFM9XCJcIixFPSExKX1lbHNlIE8rPUQ7TCsrfWlmKHQuY2hhckF0KEwpPT09YylyZXR1cm4hIW58fChNKz1jLEk9dGhpcy5kZWNvZGUucmF3KHRoaXMudW5lc2NhcGUoSSksZSh5KS50ZXN0KCkuZW5kLHtub25UZXJtaW5hdGVkOiExfSksQSYmKHY9ZSh2KS50ZXN0KCkuZW5kLEE9dGhpcy5kZWNvZGUucmF3KHRoaXMudW5lc2NhcGUoQSksdikpLFA9e3R5cGU6dz9cImltYWdlXCI6XCJsaW5rXCIsdGl0bGU6QXx8bnVsbCx1cmw6SX0sdz9QLmFsdD10aGlzLmRlY29kZS5yYXcodGhpcy51bmVzY2FwZShrKSxOKXx8bnVsbDooUj10aGlzLmVudGVyTGluaygpLFAuY2hpbGRyZW49dGhpcy50b2tlbml6ZUlubGluZShrLE4pLFIoKSksZShNKShQKSl9fX1nWydcIiddPSdcIicsZ1tcIidcIl09XCInXCIsZ1t1XT1jfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyMCksbz1uKDEwNiksYT1uKDYyKTtlLmV4cG9ydHM9aCxoLmxvY2F0b3I9bzt2YXIgaT1cImxpbmtcIixsPVwiaW1hZ2VcIixzPVwiZm9vdG5vdGVcIix1PVwic2hvcnRjdXRcIixjPVwiY29sbGFwc2VkXCIsZD1cImZ1bGxcIixwPVwiXlwiLGY9XCJcXFxcXCIsbT1cIltcIixnPVwiXVwiO2Z1bmN0aW9uIGgoZSx0LG4pe3ZhciBvLGgsYix5LHYsUyxFLHgsdz10LmNoYXJBdCgwKSxrPTAsXz10Lmxlbmd0aCxUPVwiXCIsQT1cIlwiLEM9aSxPPXU7aWYoXCIhXCI9PT13JiYoQz1sLEE9dyx3PXQuY2hhckF0KCsraykpLHc9PT1tKXtpZihrKyssQSs9dyxTPVwiXCIsdGhpcy5vcHRpb25zLmZvb3Rub3RlcyYmdC5jaGFyQXQoayk9PT1wKXtpZihDPT09bClyZXR1cm47QSs9cCxrKyssQz1zfWZvcih4PTA7azxfOyl7aWYoKHc9dC5jaGFyQXQoaykpPT09bSlFPSEwLHgrKztlbHNlIGlmKHc9PT1nKXtpZigheClicmVhazt4LS19dz09PWYmJihTKz1mLHc9dC5jaGFyQXQoKytrKSksUys9dyxrKyt9aWYoVD1TLG89Uywodz10LmNoYXJBdChrKSk9PT1nKXtmb3IoaysrLFQrPXcsUz1cIlwiO2s8XyYmKHc9dC5jaGFyQXQoaykscih3KSk7KVMrPXcsaysrO2lmKHc9dC5jaGFyQXQoayksQyE9PXMmJnc9PT1tKXtmb3IoaD1cIlwiLFMrPXcsaysrO2s8XyYmKHc9dC5jaGFyQXQoaykpIT09bSYmdyE9PWc7KXc9PT1mJiYoaCs9Zix3PXQuY2hhckF0KCsraykpLGgrPXcsaysrOyh3PXQuY2hhckF0KGspKT09PWc/KE89aD9kOmMsUys9aCt3LGsrKyk6aD1cIlwiLFQrPVMsUz1cIlwifWVsc2V7aWYoIW8pcmV0dXJuO2g9b31pZihPPT09ZHx8IUUpcmV0dXJuIFQ9QStULEM9PT1pJiZ0aGlzLmluTGluaz9udWxsOiEhbnx8KEM9PT1zJiYtMSE9PW8uaW5kZXhPZihcIiBcIik/ZShUKSh7dHlwZTpcImZvb3Rub3RlXCIsY2hpbGRyZW46dGhpcy50b2tlbml6ZUlubGluZShvLGUubm93KCkpfSk6KChiPWUubm93KCkpLmNvbHVtbis9QS5sZW5ndGgsYi5vZmZzZXQrPUEubGVuZ3RoLHk9e3R5cGU6QytcIlJlZmVyZW5jZVwiLGlkZW50aWZpZXI6YShoPU89PT1kP2g6byl9LEMhPT1pJiZDIT09bHx8KHkucmVmZXJlbmNlVHlwZT1PKSxDPT09aT8odj10aGlzLmVudGVyTGluaygpLHkuY2hpbGRyZW49dGhpcy50b2tlbml6ZUlubGluZShvLGIpLHYoKSk6Qz09PWwmJih5LmFsdD10aGlzLmRlY29kZS5yYXcodGhpcy51bmVzY2FwZShvKSxiKXx8bnVsbCksZShUKSh5KSkpfX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyNCksbz1uKDIwKSxhPW4oMzMzKTtlLmV4cG9ydHM9cyxzLmxvY2F0b3I9YTt2YXIgaT1cIipcIixsPVwiX1wiO2Z1bmN0aW9uIHMoZSx0LG4pe3ZhciBhLHMsdSxjLGQscCxmLG09MCxnPXQuY2hhckF0KG0pO2lmKCEoZyE9PWkmJmchPT1sfHx0LmNoYXJBdCgrK20pIT09Z3x8KHM9dGhpcy5vcHRpb25zLnBlZGFudGljLGQ9KHU9ZykrdSxwPXQubGVuZ3RoLG0rKyxjPVwiXCIsZz1cIlwiLHMmJm8odC5jaGFyQXQobSkpKSkpZm9yKDttPHA7KXtpZihmPWcsISgoZz10LmNoYXJBdChtKSkhPT11fHx0LmNoYXJBdChtKzEpIT09dXx8cyYmbyhmKSkmJihnPXQuY2hhckF0KG0rMikpIT09dSl7aWYoIXIoYykpcmV0dXJuO3JldHVybiEhbnx8KChhPWUubm93KCkpLmNvbHVtbis9MixhLm9mZnNldCs9MixlKGQrYytkKSh7dHlwZTpcInN0cm9uZ1wiLGNoaWxkcmVuOnRoaXMudG9rZW5pemVJbmxpbmUoYyxhKX0pKX1zfHxcIlxcXFxcIiE9PWd8fChjKz1nLGc9dC5jaGFyQXQoKyttKSksYys9ZyxtKyt9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWUuaW5kZXhPZihcIioqXCIsdCkscj1lLmluZGV4T2YoXCJfX1wiLHQpO2lmKC0xPT09cilyZXR1cm4gbjtpZigtMT09PW4pcmV0dXJuIHI7cmV0dXJuIHI8bj9yOm59fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyNCksbz1uKDMzNSksYT1uKDIwKSxpPW4oMzM2KTtlLmV4cG9ydHM9dSx1LmxvY2F0b3I9aTt2YXIgbD1cIipcIixzPVwiX1wiO2Z1bmN0aW9uIHUoZSx0LG4pe3ZhciBpLHUsYyxkLHAsZixtLGc9MCxoPXQuY2hhckF0KGcpO2lmKCEoaCE9PWwmJmghPT1zfHwodT10aGlzLm9wdGlvbnMucGVkYW50aWMscD1oLGM9aCxmPXQubGVuZ3RoLGcrKyxkPVwiXCIsaD1cIlwiLHUmJmEodC5jaGFyQXQoZykpKSkpZm9yKDtnPGY7KXtpZihtPWgsISgoaD10LmNoYXJBdChnKSkhPT1jfHx1JiZhKG0pKSl7aWYoKGg9dC5jaGFyQXQoKytnKSkhPT1jKXtpZighcihkKXx8bT09PWMpcmV0dXJuO2lmKCF1JiZjPT09cyYmbyhoKSl7ZCs9Yztjb250aW51ZX1yZXR1cm4hIW58fCgoaT1lLm5vdygpKS5jb2x1bW4rKyxpLm9mZnNldCsrLGUocCtkK2MpKHt0eXBlOlwiZW1waGFzaXNcIixjaGlsZHJlbjp0aGlzLnRva2VuaXplSW5saW5lKGQsaSl9KSl9ZCs9Y311fHxcIlxcXFxcIiE9PWh8fChkKz1oLGg9dC5jaGFyQXQoKytnKSksZCs9aCxnKyt9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gby50ZXN0KFwibnVtYmVyXCI9PXR5cGVvZiBlP3IoZSk6ZS5jaGFyQXQoMCkpfTt2YXIgcj1TdHJpbmcuZnJvbUNoYXJDb2RlLG89L1xcdy99LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmluZGV4T2YoXCIqXCIsdCkscj1lLmluZGV4T2YoXCJfXCIsdCk7aWYoLTE9PT1yKXJldHVybiBuO2lmKC0xPT09bilyZXR1cm4gcjtyZXR1cm4gcjxuP3I6bn19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIwKSxvPW4oMzM4KTtlLmV4cG9ydHM9bCxsLmxvY2F0b3I9bzt2YXIgYT1cIn5cIixpPVwifn5cIjtmdW5jdGlvbiBsKGUsdCxuKXt2YXIgbyxsLHMsdT1cIlwiLGM9XCJcIixkPVwiXCIscD1cIlwiO2lmKHRoaXMub3B0aW9ucy5nZm0mJnQuY2hhckF0KDApPT09YSYmdC5jaGFyQXQoMSk9PT1hJiYhcih0LmNoYXJBdCgyKSkpZm9yKG89MSxsPXQubGVuZ3RoLChzPWUubm93KCkpLmNvbHVtbis9MixzLm9mZnNldCs9MjsrK288bDspe2lmKCEoKHU9dC5jaGFyQXQobykpIT09YXx8YyE9PWF8fGQmJnIoZCkpKXJldHVybiEhbnx8ZShpK3AraSkoe3R5cGU6XCJkZWxldGVcIixjaGlsZHJlbjp0aGlzLnRva2VuaXplSW5saW5lKHAscyl9KTtwKz1jLGQ9YyxjPXV9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBlLmluZGV4T2YoXCJ+flwiLHQpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjApLG89bigzNDApO2UuZXhwb3J0cz1pLGkubG9jYXRvcj1vO3ZhciBhPVwiYFwiO2Z1bmN0aW9uIGkoZSx0LG4pe2Zvcih2YXIgbyxpLGwscyx1LGMsZCxwLGY9dC5sZW5ndGgsbT0wLGc9XCJcIixoPVwiXCI7bTxmJiZ0LmNoYXJBdChtKT09PWE7KWcrPWEsbSsrO2lmKGcpe2Zvcih1PWcscz1tLGc9XCJcIixwPXQuY2hhckF0KG0pLGw9MDttPGY7KXtpZihjPXAscD10LmNoYXJBdChtKzEpLGM9PT1hPyhsKyssaCs9Yyk6KGw9MCxnKz1jKSxsJiZwIT09YSl7aWYobD09PXMpe3UrPWcraCxkPSEwO2JyZWFrfWcrPWgsaD1cIlwifW0rK31pZighZCl7aWYocyUyIT0wKXJldHVybjtnPVwiXCJ9aWYobilyZXR1cm4hMDtmb3Iobz1cIlwiLGk9XCJcIixmPWcubGVuZ3RoLG09LTE7KyttPGY7KWM9Zy5jaGFyQXQobSkscihjKT9pKz1jOihpJiYobyYmKG8rPWkpLGk9XCJcIiksbys9Yyk7cmV0dXJuIGUodSkoe3R5cGU6XCJpbmxpbmVDb2RlXCIsdmFsdWU6b30pfX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pbmRleE9mKFwiYFwiLHQpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMzQyKTtlLmV4cG9ydHM9YSxhLmxvY2F0b3I9cjt2YXIgbz0yO2Z1bmN0aW9uIGEoZSx0LG4pe2Zvcih2YXIgcixhPXQubGVuZ3RoLGk9LTEsbD1cIlwiOysraTxhOyl7aWYoXCJcXG5cIj09PShyPXQuY2hhckF0KGkpKSl7aWYoaTxvKXJldHVybjtyZXR1cm4hIW58fGUobCs9cikoe3R5cGU6XCJicmVha1wifSl9aWYoXCIgXCIhPT1yKXJldHVybjtsKz1yfX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmluZGV4T2YoXCJcXG5cIix0KTtmb3IoO24+dCYmXCIgXCI9PT1lLmNoYXJBdChuLTEpOyluLS07cmV0dXJuIG59fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGEsaSxsLHMsdSxjLGQscDtpZihuKXJldHVybiEwO3I9dGhpcy5pbmxpbmVNZXRob2RzLGk9ci5sZW5ndGgsbz10aGlzLmlubGluZVRva2VuaXplcnMsYT0tMSxkPXQubGVuZ3RoO2Zvcig7KythPGk7KVwidGV4dFwiIT09KGM9clthXSkmJm9bY10mJigodT1vW2NdLmxvY2F0b3IpfHxlLmZpbGUuZmFpbChcIk1pc3NpbmcgbG9jYXRvcjogYFwiK2MrXCJgXCIpLC0xIT09KHM9dS5jYWxsKHRoaXMsdCwxKSkmJnM8ZCYmKGQ9cykpO2w9dC5zbGljZSgwLGQpLHA9ZS5ub3coKSx0aGlzLmRlY29kZShsLHAsZnVuY3Rpb24odCxuLHIpe2Uocnx8dCkoe3R5cGU6XCJ0ZXh0XCIsdmFsdWU6dH0pfSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigzNDUpO2Z1bmN0aW9uIG8oKXt9ZnVuY3Rpb24gYSgpe31hLnJlc2V0V2FybmluZ0NhY2hlPW8sZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixvLGEsaSl7aWYoaSE9PXIpe3ZhciBsPW5ldyBFcnJvcihcIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXNcIik7dGhyb3cgbC5uYW1lPVwiSW52YXJpYW50IFZpb2xhdGlvblwiLGx9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgbj17YXJyYXk6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6YSxyZXNldFdhcm5pbmdDYWNoZTpvfTtyZXR1cm4gbi5Qcm9wVHlwZXM9bixufX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1cIlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEXCJ9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDM0Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiByKGUsXCJsaXN0XCIsZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89MDtmb3Iobj0wLHI9dC5sZW5ndGg7bjxyO24rKylcImxpc3RcIj09PXRbbl0udHlwZSYmKG8rPTEpO2ZvcihuPTAscj1lLmNoaWxkcmVuLmxlbmd0aDtuPHI7bisrKXt2YXIgYT1lLmNoaWxkcmVuW25dO2EuaW5kZXg9bixhLm9yZGVyZWQ9ZS5vcmRlcmVkfWUuZGVwdGg9b30pLGV9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHI9W107XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKG49dCx0PW51bGwpO2Z1bmN0aW9uIG8oZSl7dmFyIGE7cmV0dXJuIHQmJmUudHlwZSE9PXR8fChhPW4oZSxyLmNvbmNhdCgpKSksZS5jaGlsZHJlbiYmITEhPT1hP2Z1bmN0aW9uKGUsdCl7dmFyIG4sYT1lLmxlbmd0aCxpPS0xO3IucHVzaCh0KTtmb3IoOysraTxhOylpZigobj1lW2ldKSYmITE9PT1vKG4pKXJldHVybiExO3JldHVybiByLnBvcCgpLCEwfShlLmNoaWxkcmVuLGUpOmF9byhlKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDQ0KSxvPVwidmlydHVhbEh0bWxcIixhPS9ePChhcmVhfGJhc2V8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxrZXlnZW58bGlua3xtZXRhfHBhcmFtfHNvdXJjZXx0cmFja3x3YnIpXFxzKlxcLz8+JC9pLGk9L148KFxcLz8pKFthLXpdKylcXHMqPiQvO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiByKGUsXCJodG1sXCIsZnVuY3Rpb24oZSxyLGwpe24hPT1sJiYodD1bXSxuPWwpO3ZhciBzPWZ1bmN0aW9uKGUpe3ZhciB0PWUudmFsdWUubWF0Y2goYSk7cmV0dXJuISF0JiZ0WzFdfShlKTtpZihzKXJldHVybiBsLmNoaWxkcmVuLnNwbGljZShyLDEse3R5cGU6byx0YWc6cyxwb3NpdGlvbjplLnBvc2l0aW9ufSksITA7dmFyIHU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnZhbHVlLm1hdGNoKGkpO3JldHVybiEhbiYme3RhZzpuWzJdLG9wZW5pbmc6IW5bMV0sbm9kZTplfX0oZSk7aWYoIXUpcmV0dXJuITA7dmFyIGM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aDtmb3IoO24tLTspaWYoZVtuXS50YWc9PT10KXJldHVybiBlLnNwbGljZShuLDEpWzBdO3JldHVybiExfSh0LHUudGFnKTtyZXR1cm4gYz9sLmNoaWxkcmVuLnNwbGljZShyLDAsZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4uY2hpbGRyZW4uaW5kZXhPZihlLm5vZGUpLGE9bi5jaGlsZHJlbi5pbmRleE9mKHQubm9kZSksaT1uLmNoaWxkcmVuLnNwbGljZShyLGEtcisxKS5zbGljZSgxLC0xKTtyZXR1cm57dHlwZTpvLGNoaWxkcmVuOmksdGFnOmUudGFnLHBvc2l0aW9uOntzdGFydDplLm5vZGUucG9zaXRpb24uc3RhcnQsZW5kOnQubm9kZS5wb3NpdGlvbi5lbmQsaW5kZW50OltdfX19KHUsYyxsKSk6dS5vcGVuaW5nfHx0LnB1c2godSksITB9LCEwKSxlfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oNDQpO2Z1bmN0aW9uIG8oZSx0LG4scil7aWYoXCJyZW1vdmVcIj09PXIpbi5jaGlsZHJlbi5zcGxpY2UodCwxKTtlbHNlIGlmKFwidW53cmFwXCI9PT1yKXt2YXIgbz1bdCwxXTtlLmNoaWxkcmVuJiYobz1vLmNvbmNhdChlLmNoaWxkcmVuKSksQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShuLmNoaWxkcmVuLG8pfX10Lm9mVHlwZT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiByKHQsZSxuLCEwKX0pLHR9O2Z1bmN0aW9uIG4oZSxuLHIpe3ImJm8oZSxuLHIsdCl9fSx0LmlmTm90TWF0Y2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSxuLCEwKSxlfTtmdW5jdGlvbiBuKG4scixhKXthJiYhZShuLHIsYSkmJm8obixyLGEsdCl9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMCksbz1uKDIzKTtmdW5jdGlvbiBhKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9LGw9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjAscz10LnJlbmRlcmVyc1tlLnR5cGVdLHU9ZS5wb3NpdGlvbi5zdGFydCxjPVtlLnR5cGUsdS5saW5lLHUuY29sdW1uXS5qb2luKFwiLVwiKTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBzJiZcInN0cmluZ1wiIT10eXBlb2YgcyYmIWZ1bmN0aW9uKGUpe3JldHVybiByLkZyYWdtZW50JiZyLkZyYWdtZW50PT09ZX0ocykpdGhyb3cgbmV3IEVycm9yKFwiUmVuZGVyZXIgZm9yIHR5cGUgYFwiLmNvbmNhdChlLnR5cGUsXCJgIG5vdCBkZWZpbmVkIG9yIGlzIG5vdCByZW5kZXJhYmxlXCIpKTt2YXIgZD1mdW5jdGlvbihlLHQsbixsLHMsdSl7dmFyIGM9e2tleTp0fSxkPVwic3RyaW5nXCI9PXR5cGVvZiBsO24uc291cmNlUG9zJiZlLnBvc2l0aW9uJiYoY1tcImRhdGEtc291cmNlcG9zXCJdPVsocD1lLnBvc2l0aW9uKS5zdGFydC5saW5lLFwiOlwiLHAuc3RhcnQuY29sdW1uLFwiLVwiLHAuZW5kLmxpbmUsXCI6XCIscC5lbmQuY29sdW1uXS5tYXAoU3RyaW5nKS5qb2luKFwiXCIpKTt2YXIgcDtuLnJhd1NvdXJjZVBvcyYmIWQmJihjLnNvdXJjZVBvc2l0aW9uPWUucG9zaXRpb24pO24uaW5jbHVkZU5vZGVJbmRleCYmcy5ub2RlJiZzLm5vZGUuY2hpbGRyZW4mJiFkJiYoYy5pbmRleD1zLm5vZGUuY2hpbGRyZW4uaW5kZXhPZihlKSxjLnBhcmVudENoaWxkQ291bnQ9cy5ub2RlLmNoaWxkcmVuLmxlbmd0aCk7dmFyIGY9bnVsbCE9PWUuaWRlbnRpZmllciYmdm9pZCAwIT09ZS5pZGVudGlmaWVyP24uZGVmaW5pdGlvbnNbZS5pZGVudGlmaWVyXXx8e306bnVsbDtzd2l0Y2goZS50eXBlKXtjYXNlXCJyb290XCI6aShjLHtjbGFzc05hbWU6bi5jbGFzc05hbWV9KTticmVhaztjYXNlXCJ0ZXh0XCI6Yy5ub2RlS2V5PXQsYy5jaGlsZHJlbj1lLnZhbHVlO2JyZWFrO2Nhc2VcImhlYWRpbmdcIjpjLmxldmVsPWUuZGVwdGg7YnJlYWs7Y2FzZVwibGlzdFwiOmMuc3RhcnQ9ZS5zdGFydCxjLm9yZGVyZWQ9ZS5vcmRlcmVkLGMudGlnaHQ9IWUubG9vc2UsYy5kZXB0aD1lLmRlcHRoO2JyZWFrO2Nhc2VcImxpc3RJdGVtXCI6Yy5jaGVja2VkPWUuY2hlY2tlZCxjLnRpZ2h0PSFlLmxvb3NlLGMub3JkZXJlZD1lLm9yZGVyZWQsYy5pbmRleD1lLmluZGV4LGMuY2hpbGRyZW49ZnVuY3Rpb24oZSx0KXtpZihlLmxvb3NlKXJldHVybiBlLmNoaWxkcmVuO2lmKHQubm9kZSYmZS5pbmRleD4wJiZ0Lm5vZGUuY2hpbGRyZW5bZS5pbmRleC0xXS5sb29zZSlyZXR1cm4gZS5jaGlsZHJlbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hpbGRyZW4ucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29uY2F0KFwicGFyYWdyYXBoXCI9PT10LnR5cGU/dC5jaGlsZHJlbnx8W106W3RdKX0sW10pfShlKX0oZSxzKS5tYXAoZnVuY3Rpb24odCxyKXtyZXR1cm4gYSh0LG4se25vZGU6ZSxwcm9wczpjfSxyKX0pO2JyZWFrO2Nhc2VcImRlZmluaXRpb25cIjppKGMse2lkZW50aWZpZXI6ZS5pZGVudGlmaWVyLHRpdGxlOmUudGl0bGUsdXJsOmUudXJsfSk7YnJlYWs7Y2FzZVwiY29kZVwiOmkoYyx7bGFuZ3VhZ2U6ZS5sYW5nJiZlLmxhbmcuc3BsaXQoL1xccy8sMSlbMF19KTticmVhaztjYXNlXCJpbmxpbmVDb2RlXCI6Yy5jaGlsZHJlbj1lLnZhbHVlLGMuaW5saW5lPSEwO2JyZWFrO2Nhc2VcImxpbmtcIjppKGMse3RpdGxlOmUudGl0bGV8fHZvaWQgMCx0YXJnZXQ6XCJmdW5jdGlvblwiPT10eXBlb2Ygbi5saW5rVGFyZ2V0P24ubGlua1RhcmdldChlLnVybCxlLmNoaWxkcmVuLGUudGl0bGUpOm4ubGlua1RhcmdldCxocmVmOm4udHJhbnNmb3JtTGlua1VyaT9uLnRyYW5zZm9ybUxpbmtVcmkoZS51cmwsZS5jaGlsZHJlbixlLnRpdGxlKTplLnVybH0pO2JyZWFrO2Nhc2VcImltYWdlXCI6aShjLHthbHQ6ZS5hbHR8fHZvaWQgMCx0aXRsZTplLnRpdGxlfHx2b2lkIDAsc3JjOm4udHJhbnNmb3JtSW1hZ2VVcmk/bi50cmFuc2Zvcm1JbWFnZVVyaShlLnVybCxlLmNoaWxkcmVuLGUudGl0bGUsZS5hbHQpOmUudXJsfSk7YnJlYWs7Y2FzZVwibGlua1JlZmVyZW5jZVwiOmkoYyxvKGYse2hyZWY6bi50cmFuc2Zvcm1MaW5rVXJpP24udHJhbnNmb3JtTGlua1VyaShmLmhyZWYpOmYuaHJlZn0pKTticmVhaztjYXNlXCJpbWFnZVJlZmVyZW5jZVwiOmkoYyx7c3JjOm4udHJhbnNmb3JtSW1hZ2VVcmkmJmYuaHJlZj9uLnRyYW5zZm9ybUltYWdlVXJpKGYuaHJlZixlLmNoaWxkcmVuLGYudGl0bGUsZS5hbHQpOmYuaHJlZix0aXRsZTpmLnRpdGxlfHx2b2lkIDAsYWx0OmUuYWx0fHx2b2lkIDB9KTticmVhaztjYXNlXCJ0YWJsZVwiOmNhc2VcInRhYmxlSGVhZFwiOmNhc2VcInRhYmxlQm9keVwiOmMuY29sdW1uQWxpZ25tZW50PWUuYWxpZ247YnJlYWs7Y2FzZVwidGFibGVSb3dcIjpjLmlzSGVhZGVyPVwidGFibGVIZWFkXCI9PT1zLm5vZGUudHlwZSxjLmNvbHVtbkFsaWdubWVudD1zLnByb3BzLmNvbHVtbkFsaWdubWVudDticmVhaztjYXNlXCJ0YWJsZUNlbGxcIjppKGMse2lzSGVhZGVyOnMucHJvcHMuaXNIZWFkZXIsYWxpZ246cy5wcm9wcy5jb2x1bW5BbGlnbm1lbnRbdV19KTticmVhaztjYXNlXCJ2aXJ0dWFsSHRtbFwiOmMudGFnPWUudGFnO2JyZWFrO2Nhc2VcImh0bWxcIjpjLmlzQmxvY2s9ZS5wb3NpdGlvbi5zdGFydC5saW5lIT09ZS5wb3NpdGlvbi5lbmQubGluZSxjLmVzY2FwZUh0bWw9bi5lc2NhcGVIdG1sLGMuc2tpcEh0bWw9bi5za2lwSHRtbDticmVhaztjYXNlXCJwYXJzZWRIdG1sXCI6Yy5lc2NhcGVIdG1sPW4uZXNjYXBlSHRtbCxjLnNraXBIdG1sPW4uc2tpcEh0bWwsYy5lbGVtZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5lbGVtZW50O2lmKEFycmF5LmlzQXJyYXkobikpe3ZhciBvPXIuRnJhZ21lbnR8fFwiZGl2XCI7cmV0dXJuIHIuY3JlYXRlRWxlbWVudChvLG51bGwsbil9dmFyIGE9KG4ucHJvcHMuY2hpbGRyZW58fFtdKS5jb25jYXQodCk7cmV0dXJuIHIuY2xvbmVFbGVtZW50KG4sbnVsbCxhKX0oZSwoZS5jaGlsZHJlbnx8W10pLm1hcChmdW5jdGlvbih0LHIpe3JldHVybiBhKHQsbix7bm9kZTplLHByb3BzOmN9LHIpfSkpO2JyZWFrO2RlZmF1bHQ6aShjLG8oZSx7dHlwZTp2b2lkIDAscG9zaXRpb246dm9pZCAwLGNoaWxkcmVuOnZvaWQgMH0pKX0hZCYmZS52YWx1ZSYmKGMudmFsdWU9ZS52YWx1ZSk7cmV0dXJuIGN9KGUsYyx0LHMsbixsKTtyZXR1cm4gci5jcmVhdGVFbGVtZW50KHMsZCxkLmNoaWxkcmVufHxlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLm1hcChmdW5jdGlvbihuLHIpe3JldHVybiBhKG4sdCx7bm9kZTplLHByb3BzOmR9LHIpfSl8fHZvaWQgMCl9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgbiBpbiB0KXZvaWQgMCE9PXRbbl0mJihlW25dPXRbbl0pfWUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big0NCk7ZnVuY3Rpb24gbyhlKXt2YXIgdD1lLmNoaWxkcmVuO2UuY2hpbGRyZW49W3t0eXBlOlwidGFibGVIZWFkXCIsYWxpZ246ZS5hbGlnbixjaGlsZHJlbjpbdFswXV0scG9zaXRpb246dFswXS5wb3NpdGlvbn1dLHQubGVuZ3RoPjEmJmUuY2hpbGRyZW4ucHVzaCh7dHlwZTpcInRhYmxlQm9keVwiLGFsaWduOmUuYWxpZ24sY2hpbGRyZW46dC5zbGljZSgxKSxwb3NpdGlvbjp7c3RhcnQ6dFsxXS5wb3NpdGlvbi5zdGFydCxlbmQ6dFt0Lmxlbmd0aC0xXS5wb3NpdGlvbi5lbmR9fSl9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKGUsXCJ0YWJsZVwiLG8pLGV9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uIGUodCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybih0LmNoaWxkcmVufHxbXSkucmVkdWNlKGZ1bmN0aW9uKHQsbil7cmV0dXJuXCJkZWZpbml0aW9uXCI9PT1uLnR5cGUmJih0W24uaWRlbnRpZmllcl09e2hyZWY6bi51cmwsdGl0bGU6bi50aXRsZX0pLGUobix0KX0sbil9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9W1wiaHR0cFwiLFwiaHR0cHNcIixcIm1haWx0b1wiLFwidGVsXCJdO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD0oZXx8XCJcIikudHJpbSgpLG49dC5jaGFyQXQoMCk7aWYoXCIjXCI9PT1ufHxcIi9cIj09PW4pcmV0dXJuIHQ7dmFyIG89dC5pbmRleE9mKFwiOlwiKTtpZigtMT09PW8pcmV0dXJuIHQ7Zm9yKHZhciBhPXIubGVuZ3RoLGk9LTE7KytpPGE7KXt2YXIgbD1yW2ldO2lmKG89PT1sLmxlbmd0aCYmdC5zbGljZSgwLGwubGVuZ3RoKS50b0xvd2VyQ2FzZSgpPT09bClyZXR1cm4gdH1yZXR1cm4tMSE9PShpPXQuaW5kZXhPZihcIj9cIikpJiZvPmk/dDotMSE9PShpPXQuaW5kZXhPZihcIiNcIikpJiZvPmk/dDpcImphdmFzY3JpcHQ6dm9pZCgwKVwifX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjMpLG89bigwKSxhPXBhcnNlSW50KChvLnZlcnNpb258fFwiMTZcIikuc2xpY2UoMCwyKSwxMCk+PTE2LGk9by5jcmVhdGVFbGVtZW50O2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gaShlLHModCksdC5jaGlsZHJlbil9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZVtcImRhdGEtc291cmNlcG9zXCJdP3tcImRhdGEtc291cmNlcG9zXCI6ZVtcImRhdGEtc291cmNlcG9zXCJdfTp7fX1lLmV4cG9ydHM9e2JyZWFrOlwiYnJcIixwYXJhZ3JhcGg6XCJwXCIsZW1waGFzaXM6XCJlbVwiLHN0cm9uZzpcInN0cm9uZ1wiLHRoZW1hdGljQnJlYWs6XCJoclwiLGJsb2NrcXVvdGU6XCJibG9ja3F1b3RlXCIsZGVsZXRlOlwiZGVsXCIsbGluazpcImFcIixpbWFnZTpcImltZ1wiLGxpbmtSZWZlcmVuY2U6XCJhXCIsaW1hZ2VSZWZlcmVuY2U6XCJpbWdcIix0YWJsZTpsLmJpbmQobnVsbCxcInRhYmxlXCIpLHRhYmxlSGVhZDpsLmJpbmQobnVsbCxcInRoZWFkXCIpLHRhYmxlQm9keTpsLmJpbmQobnVsbCxcInRib2R5XCIpLHRhYmxlUm93OmwuYmluZChudWxsLFwidHJcIiksdGFibGVDZWxsOmZ1bmN0aW9uKGUpe3ZhciB0PWUuYWxpZ24/e3RleHRBbGlnbjplLmFsaWdufTp2b2lkIDAsbj1zKGUpO3JldHVybiBpKGUuaXNIZWFkZXI/XCJ0aFwiOlwidGRcIix0P3Ioe3N0eWxlOnR9LG4pOm4sZS5jaGlsZHJlbil9LHJvb3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9IWUuY2xhc3NOYW1lLG49dCYmby5GcmFnbWVudHx8XCJkaXZcIjtyZXR1cm4gaShuLHQ/bnVsbDplLGUuY2hpbGRyZW4pfSx0ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBhP2UuY2hpbGRyZW46aShcInNwYW5cIixudWxsLGUuY2hpbGRyZW4pfSxsaXN0OmZ1bmN0aW9uKGUpe3ZhciB0PXMoZSk7bnVsbCE9PWUuc3RhcnQmJjEhPT1lLnN0YXJ0JiYodC5zdGFydD1lLnN0YXJ0LnRvU3RyaW5nKCkpO3JldHVybiBpKGUub3JkZXJlZD9cIm9sXCI6XCJ1bFwiLHQsZS5jaGlsZHJlbil9LGxpc3RJdGVtOmZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7aWYobnVsbCE9PWUuY2hlY2tlZCl7dmFyIG49ZS5jaGVja2VkO3Q9aShcImlucHV0XCIse3R5cGU6XCJjaGVja2JveFwiLGNoZWNrZWQ6bixyZWFkT25seTohMH0pfXJldHVybiBpKFwibGlcIixzKGUpLHQsZS5jaGlsZHJlbil9LGRlZmluaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0saGVhZGluZzpmdW5jdGlvbihlKXtyZXR1cm4gaShcImhcIi5jb25jYXQoZS5sZXZlbCkscyhlKSxlLmNoaWxkcmVuKX0saW5saW5lQ29kZTpmdW5jdGlvbihlKXtyZXR1cm4gaShcImNvZGVcIixzKGUpLGUuY2hpbGRyZW4pfSxjb2RlOmZ1bmN0aW9uKGUpe3ZhciB0PWUubGFuZ3VhZ2UmJlwibGFuZ3VhZ2UtXCIuY29uY2F0KGUubGFuZ3VhZ2UpLG49aShcImNvZGVcIix0P3tjbGFzc05hbWU6dH06bnVsbCxlLnZhbHVlKTtyZXR1cm4gaShcInByZVwiLHMoZSksbil9LGh0bWw6ZnVuY3Rpb24oZSl7aWYoZS5za2lwSHRtbClyZXR1cm4gbnVsbDt2YXIgdD1lLmlzQmxvY2s/XCJkaXZcIjpcInNwYW5cIjtpZihlLmVzY2FwZUh0bWwpe3ZhciBuPW8uRnJhZ21lbnR8fHQ7cmV0dXJuIGkobixudWxsLGUudmFsdWUpfXZhciByPXtkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOmUudmFsdWV9fTtyZXR1cm4gaSh0LHIpfSx2aXJ0dWFsSHRtbDpmdW5jdGlvbihlKXtyZXR1cm4gaShlLnRhZyxzKGUpLGUuY2hpbGRyZW4pfSxwYXJzZWRIdG1sOmZ1bmN0aW9uKGUpe3JldHVybiBlW1wiZGF0YS1zb3VyY2Vwb3NcIl0/by5jbG9uZUVsZW1lbnQoZS5lbGVtZW50LHtcImRhdGEtc291cmNlcG9zXCI6ZVtcImRhdGEtc291cmNlcG9zXCJdfSk6ZS5lbGVtZW50fX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt0Lkh0bWxQYXJzZXI9XCJ1bmRlZmluZWRcIj09dHlwZW9mIFN5bWJvbD9cIl9fUk1EX0hUTUxfUEFSU0VSX19cIjpTeW1ib2woXCJfX1JNRF9IVE1MX1BBUlNFUl9fXCIpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc3BsYXlOYW1lfHxlLm5hbWV8fChcInN0cmluZ1wiPT10eXBlb2YgZSYmZS5sZW5ndGg+MD9lOlwiVW5rbm93blwiKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9MCxuPW5ldyBBcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspblt0XT1lW3RdO3JldHVybiBufX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSl8fFwiW29iamVjdCBBcmd1bWVudHNdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBvKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXthKGUsdCxuW3RdKX0pfXJldHVybiBlfWZ1bmN0aW9uIGEoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYWxsb3dPdmVyd3JpdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbyh7fSxlLHQpfSx0LmZvcmNlQ3Vycnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbyh7fSx0LGUpfSx0Lm1lcmdlQ29tcGxleFByb3BzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbz17fTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShbXS5jb25jYXQocihPYmplY3Qua2V5cyhlKSkscihPYmplY3Qua2V5cyh0KSkpKX0oZSx0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZhciBhPWVbcl0saT10W3JdLGQ9ZnVuY3Rpb24oZSl7cmV0dXJuXCJjbGFzc05hbWVcIj09PWU/dTplLm1hdGNoKC9eb25bQS1aXS8pP2M6XCJzdHlsZVwiPT09ZT9sOnN9KHIpO29bcl09ZChhLGksbil9KSxvfTt2YXIgaT1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGUpKX07ZnVuY3Rpb24gbCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4oYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApP28oe30sdCxlKTpvKHt9LGUsdCl9ZnVuY3Rpb24gcyhlLHQsbil7cmV0dXJuIG4/ZXx8dDp0fHxlfWZ1bmN0aW9uIHUoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCJcIix0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcIlwiO3JldHVyblwiXCIuY29uY2F0KGUsXCIgXCIpLmNvbmNhdCh0KS50cmltKCl9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiBlJiZ0P2Z1bmN0aW9uKCl7dmFyIG49dm9pZCAwLHI9dm9pZCAwO3RyeXt0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfWNhdGNoKGUpe3I9ZX10cnl7ZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX1jYXRjaChlKXtuPWV9IWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07dmFyIHI9dC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcn0pO2lmKDAhPT1yLmxlbmd0aCl7aWYoMT09PXIubGVuZ3RoKXRocm93IHJbMF07dGhyb3cgbmV3IEVycm9yKHIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lc3NhZ2V9KS5qb2luKFwiIFwiKSl9fShuLHIpfTplfHx0fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7XG4vKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjcuMFxuICogcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixvPXI/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMsYT1yP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsaT1yP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxsPXI/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LHM9cj9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsdT1yP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSxjPXI/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAsZD1yP1N5bWJvbC5mb3IoXCJyZWFjdC5hc3luY19tb2RlXCIpOjYwMTExLHA9cj9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLGY9cj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIsbT1yP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxnPXI/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsaD1yP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2O2Z1bmN0aW9uIGIoZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lKXt2YXIgdD1lLiQkdHlwZW9mO3N3aXRjaCh0KXtjYXNlIG86c3dpdGNoKGU9ZS50eXBlKXtjYXNlIGQ6Y2FzZSBwOmNhc2UgaTpjYXNlIHM6Y2FzZSBsOmNhc2UgbTpyZXR1cm4gZTtkZWZhdWx0OnN3aXRjaChlPWUmJmUuJCR0eXBlb2Ype2Nhc2UgYzpjYXNlIGY6Y2FzZSB1OnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIHR9fWNhc2UgaDpjYXNlIGc6Y2FzZSBhOnJldHVybiB0fX19ZnVuY3Rpb24geShlKXtyZXR1cm4gYihlKT09PXB9dC50eXBlT2Y9Yix0LkFzeW5jTW9kZT1kLHQuQ29uY3VycmVudE1vZGU9cCx0LkNvbnRleHRDb25zdW1lcj1jLHQuQ29udGV4dFByb3ZpZGVyPXUsdC5FbGVtZW50PW8sdC5Gb3J3YXJkUmVmPWYsdC5GcmFnbWVudD1pLHQuTGF6eT1oLHQuTWVtbz1nLHQuUG9ydGFsPWEsdC5Qcm9maWxlcj1zLHQuU3RyaWN0TW9kZT1sLHQuU3VzcGVuc2U9bSx0LmlzVmFsaWRFbGVtZW50VHlwZT1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZXx8XCJmdW5jdGlvblwiPT10eXBlb2YgZXx8ZT09PWl8fGU9PT1wfHxlPT09c3x8ZT09PWx8fGU9PT1tfHxcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJihlLiQkdHlwZW9mPT09aHx8ZS4kJHR5cGVvZj09PWd8fGUuJCR0eXBlb2Y9PT11fHxlLiQkdHlwZW9mPT09Y3x8ZS4kJHR5cGVvZj09PWYpfSx0LmlzQXN5bmNNb2RlPWZ1bmN0aW9uKGUpe3JldHVybiB5KGUpfHxiKGUpPT09ZH0sdC5pc0NvbmN1cnJlbnRNb2RlPXksdC5pc0NvbnRleHRDb25zdW1lcj1mdW5jdGlvbihlKXtyZXR1cm4gYihlKT09PWN9LHQuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGIoZSk9PT11fSx0LmlzRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1vfSx0LmlzRm9yd2FyZFJlZj1mdW5jdGlvbihlKXtyZXR1cm4gYihlKT09PWZ9LHQuaXNGcmFnbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gYihlKT09PWl9LHQuaXNMYXp5PWZ1bmN0aW9uKGUpe3JldHVybiBiKGUpPT09aH0sdC5pc01lbW89ZnVuY3Rpb24oZSl7cmV0dXJuIGIoZSk9PT1nfSx0LmlzUG9ydGFsPWZ1bmN0aW9uKGUpe3JldHVybiBiKGUpPT09YX0sdC5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGUpe3JldHVybiBiKGUpPT09c30sdC5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGIoZSk9PT1sfSx0LmlzU3VzcGVuc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGIoZSk9PT1tfX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKHQscil7cmV0dXJuIGUuZXhwb3J0cz1uPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxuKHQscil9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfTt0LmRlZmF1bHQ9ZnVuY3Rpb24gZSh0KXt2YXIgbj1udWxsO2Zvcih2YXIgbyBpbiB0KXt2YXIgYT10W29dLGk9dm9pZCAwPT09YT9cInVuZGVmaW5lZFwiOnIoYSk7aWYoXCJmdW5jdGlvblwiPT09aSlufHwobj17fSksbltvXT1hO2Vsc2UgaWYoXCJvYmplY3RcIj09PWkmJm51bGwhPT1hJiYhQXJyYXkuaXNBcnJheShhKSl7dmFyIGw9ZShhKTtsJiYobnx8KG49e30pLG5bb109bCl9fXJldHVybiBufX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByLG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPW4oMjgpLGk9KHI9YSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O3ZhciBsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy5zaGVldHM9W10sdGhpcy5yZWZzPVtdLHRoaXMua2V5cz1bXX1yZXR1cm4gbyhlLFt7a2V5OlwiZ2V0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5rZXlzLmluZGV4T2YoZSk7cmV0dXJuIHRoaXMuc2hlZXRzW3RdfX0se2tleTpcImFkZFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zaGVldHMscj10aGlzLnJlZnMsbz10aGlzLmtleXMsYT1uLmluZGV4T2YodCk7cmV0dXJuLTEhPT1hP2E6KG4ucHVzaCh0KSxyLnB1c2goMCksby5wdXNoKGUpLG4ubGVuZ3RoLTEpfX0se2tleTpcIm1hbmFnZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMua2V5cy5pbmRleE9mKGUpLG49dGhpcy5zaGVldHNbdF07cmV0dXJuIDA9PT10aGlzLnJlZnNbdF0mJm4uYXR0YWNoKCksdGhpcy5yZWZzW3RdKyssdGhpcy5rZXlzW3RdfHx0aGlzLmtleXMuc3BsaWNlKHQsMCxlKSxufX0se2tleTpcInVubWFuYWdlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5rZXlzLmluZGV4T2YoZSk7LTEhPT10P3RoaXMucmVmc1t0XT4wJiYodGhpcy5yZWZzW3RdLS0sMD09PXRoaXMucmVmc1t0XSYmdGhpcy5zaGVldHNbdF0uZGV0YWNoKCkpOigwLGkuZGVmYXVsdCkoITEsXCJTaGVldHNNYW5hZ2VyOiBjYW4ndCBmaW5kIHNoZWV0IHRvIHVubWFuYWdlXCIpfX0se2tleTpcInNpemVcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rZXlzLmxlbmd0aH19XSksZX0oKTt0LmRlZmF1bHQ9bH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9O3QuZGVmYXVsdD1mdW5jdGlvbiBlKHQpe2lmKG51bGw9PXQpcmV0dXJuIHQ7dmFyIG49dm9pZCAwPT09dD9cInVuZGVmaW5lZFwiOnIodCk7aWYoXCJzdHJpbmdcIj09PW58fFwibnVtYmVyXCI9PT1ufHxcImZ1bmN0aW9uXCI9PT1uKXJldHVybiB0O2lmKGwodCkpcmV0dXJuIHQubWFwKGUpO2lmKCgwLGkuZGVmYXVsdCkodCkpcmV0dXJuIHQ7dmFyIG89e307Zm9yKHZhciBhIGluIHQpe3ZhciBzPXRbYV07XCJvYmplY3RcIiE9PSh2b2lkIDA9PT1zP1widW5kZWZpbmVkXCI6cihzKSk/b1thXT1zOm9bYV09ZShzKX1yZXR1cm4gb307dmFyIG8sYT1uKDExNiksaT0obz1hKSYmby5fX2VzTW9kdWxlP286e2RlZmF1bHQ6b307dmFyIGw9QXJyYXkuaXNBcnJheX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxmdW5jdGlvbihlLHIpe3ZhciBvLGE9bigxODQpO289XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjpcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp2b2lkIDAhPT1lP2U6cjt2YXIgaT1PYmplY3QoYS5hKShvKTt0LmRlZmF1bHQ9aX0uY2FsbCh0aGlzLG4oMjcpLG4oMzY1KShlKSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFlLndlYnBhY2tQb2x5ZmlsbCl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShlKTt0LmNoaWxkcmVufHwodC5jaGlsZHJlbj1bXSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJsb2FkZWRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5sfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiaWRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5pfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZXhwb3J0c1wiLHtlbnVtZXJhYmxlOiEwfSksdC53ZWJwYWNrUG9seWZpbGw9MX1yZXR1cm4gdH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7ZS5DU1M7dC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBlfX0pLmNhbGwodGhpcyxuKDI3KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIG49XCIyZjFhY2M2YzNhNjA2YjA4MmU1ZWVmNWU1NDQxNGZmYlwiO251bGw9PWVbbl0mJihlW25dPTApLHQuZGVmYXVsdD1lW25dKyt9KS5jYWxsKHRoaXMsbigyNykpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sbz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksaT15KG4oNDgpKSxsPXkobigxMTkpKSxzPXkobigzNjkpKSx1PXkobigzNzApKSxjPXkobigzNzYpKSxkPXkobigzNzcpKSxwPXkobig2NSkpLGY9eShuKDMwKSksbT15KG4oMTE4KSksZz15KG4oNDcpKSxoPXkobigzNzgpKSxiPXkobigzNzkpKTtmdW5jdGlvbiB5KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgdj11LmRlZmF1bHQuY29uY2F0KFtjLmRlZmF1bHQsZC5kZWZhdWx0XSksUz0wLEU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy5pZD1TKyssdGhpcy52ZXJzaW9uPVwiOS44LjdcIix0aGlzLnBsdWdpbnM9bmV3IHMuZGVmYXVsdCx0aGlzLm9wdGlvbnM9e2NyZWF0ZUdlbmVyYXRlQ2xhc3NOYW1lOm0uZGVmYXVsdCxSZW5kZXJlcjppLmRlZmF1bHQ/aC5kZWZhdWx0OmIuZGVmYXVsdCxwbHVnaW5zOltdfSx0aGlzLmdlbmVyYXRlQ2xhc3NOYW1lPSgwLG0uZGVmYXVsdCkoKSx0aGlzLnVzZS5hcHBseSh0aGlzLHYpLHRoaXMuc2V0dXAodCl9cmV0dXJuIGEoZSxbe2tleTpcInNldHVwXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuIGUuY3JlYXRlR2VuZXJhdGVDbGFzc05hbWUmJih0aGlzLm9wdGlvbnMuY3JlYXRlR2VuZXJhdGVDbGFzc05hbWU9ZS5jcmVhdGVHZW5lcmF0ZUNsYXNzTmFtZSx0aGlzLmdlbmVyYXRlQ2xhc3NOYW1lPWUuY3JlYXRlR2VuZXJhdGVDbGFzc05hbWUoKSksbnVsbCE9ZS5pbnNlcnRpb25Qb2ludCYmKHRoaXMub3B0aW9ucy5pbnNlcnRpb25Qb2ludD1lLmluc2VydGlvblBvaW50KSwoZS52aXJ0dWFsfHxlLlJlbmRlcmVyKSYmKHRoaXMub3B0aW9ucy5SZW5kZXJlcj1lLlJlbmRlcmVyfHwoZS52aXJ0dWFsP2IuZGVmYXVsdDpoLmRlZmF1bHQpKSxlLnBsdWdpbnMmJnRoaXMudXNlLmFwcGx5KHRoaXMsZS5wbHVnaW5zKSx0aGlzfX0se2tleTpcImNyZWF0ZVN0eWxlU2hlZXRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj10LmluZGV4O1wibnVtYmVyXCIhPXR5cGVvZiBuJiYobj0wPT09cC5kZWZhdWx0LmluZGV4PzA6cC5kZWZhdWx0LmluZGV4KzEpO3ZhciByPW5ldyBsLmRlZmF1bHQoZSxvKHt9LHQse2pzczp0aGlzLGdlbmVyYXRlQ2xhc3NOYW1lOnQuZ2VuZXJhdGVDbGFzc05hbWV8fHRoaXMuZ2VuZXJhdGVDbGFzc05hbWUsaW5zZXJ0aW9uUG9pbnQ6dGhpcy5vcHRpb25zLmluc2VydGlvblBvaW50LFJlbmRlcmVyOnRoaXMub3B0aW9ucy5SZW5kZXJlcixpbmRleDpufSkpO3JldHVybiB0aGlzLnBsdWdpbnMub25Qcm9jZXNzU2hlZXQocikscn19LHtrZXk6XCJyZW1vdmVTdHlsZVNoZWV0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGV0YWNoKCkscC5kZWZhdWx0LnJlbW92ZShlKSx0aGlzfX0se2tleTpcImNyZWF0ZVJ1bGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e307XCJvYmplY3RcIj09PSh2b2lkIDA9PT1lP1widW5kZWZpbmVkXCI6cihlKSkmJihuPXQsdD1lLGU9dm9pZCAwKTt2YXIgbz1uO28uanNzPXRoaXMsby5SZW5kZXJlcj10aGlzLm9wdGlvbnMuUmVuZGVyZXIsby5nZW5lcmF0ZUNsYXNzTmFtZXx8KG8uZ2VuZXJhdGVDbGFzc05hbWU9dGhpcy5nZW5lcmF0ZUNsYXNzTmFtZSksby5jbGFzc2VzfHwoby5jbGFzc2VzPXt9KTt2YXIgYT0oMCxnLmRlZmF1bHQpKGUsdCxvKTtyZXR1cm4hby5zZWxlY3RvciYmYSBpbnN0YW5jZW9mIGYuZGVmYXVsdCYmKGEuc2VsZWN0b3I9XCIuXCIrby5nZW5lcmF0ZUNsYXNzTmFtZShhKSksdGhpcy5wbHVnaW5zLm9uUHJvY2Vzc1J1bGUoYSksYX19LHtrZXk6XCJ1c2VcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24odCl7LTE9PT1lLm9wdGlvbnMucGx1Z2lucy5pbmRleE9mKHQpJiYoZS5vcHRpb25zLnBsdWdpbnMucHVzaCh0KSxlLnBsdWdpbnMudXNlKHQpKX0pLHRoaXN9fV0pLGV9KCk7dC5kZWZhdWx0PUV9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcixvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksYT1uKDI4KSxpPShyPWEpJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTt2YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpLHRoaXMuaG9va3M9e29uQ3JlYXRlUnVsZTpbXSxvblByb2Nlc3NSdWxlOltdLG9uUHJvY2Vzc1N0eWxlOltdLG9uUHJvY2Vzc1NoZWV0OltdLG9uQ2hhbmdlVmFsdWU6W10sb25VcGRhdGU6W119fXJldHVybiBvKGUsW3trZXk6XCJvbkNyZWF0ZVJ1bGVcIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTA7cjx0aGlzLmhvb2tzLm9uQ3JlYXRlUnVsZS5sZW5ndGg7cisrKXt2YXIgbz10aGlzLmhvb2tzLm9uQ3JlYXRlUnVsZVtyXShlLHQsbik7aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH19LHtrZXk6XCJvblByb2Nlc3NSdWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIWUuaXNQcm9jZXNzZWQpe2Zvcih2YXIgdD1lLm9wdGlvbnMuc2hlZXQsbj0wO248dGhpcy5ob29rcy5vblByb2Nlc3NSdWxlLmxlbmd0aDtuKyspdGhpcy5ob29rcy5vblByb2Nlc3NSdWxlW25dKGUsdCk7ZS5zdHlsZSYmdGhpcy5vblByb2Nlc3NTdHlsZShlLnN0eWxlLGUsdCksZS5pc1Byb2Nlc3NlZD0hMH19fSx7a2V5Olwib25Qcm9jZXNzU3R5bGVcIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPWUsbz0wO288dGhpcy5ob29rcy5vblByb2Nlc3NTdHlsZS5sZW5ndGg7bysrKXI9dGhpcy5ob29rcy5vblByb2Nlc3NTdHlsZVtvXShyLHQsbiksdC5zdHlsZT1yfX0se2tleTpcIm9uUHJvY2Vzc1NoZWV0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLmhvb2tzLm9uUHJvY2Vzc1NoZWV0Lmxlbmd0aDt0KyspdGhpcy5ob29rcy5vblByb2Nlc3NTaGVldFt0XShlKX19LHtrZXk6XCJvblVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MDtyPHRoaXMuaG9va3Mub25VcGRhdGUubGVuZ3RoO3IrKyl0aGlzLmhvb2tzLm9uVXBkYXRlW3JdKGUsdCxuKX19LHtrZXk6XCJvbkNoYW5nZVZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1lLG89MDtvPHRoaXMuaG9va3Mub25DaGFuZ2VWYWx1ZS5sZW5ndGg7bysrKXI9dGhpcy5ob29rcy5vbkNoYW5nZVZhbHVlW29dKHIsdCxuKTtyZXR1cm4gcn19LHtrZXk6XCJ1c2VcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSl0aGlzLmhvb2tzW3RdP3RoaXMuaG9va3NbdF0ucHVzaChlW3RdKTooMCxpLmRlZmF1bHQpKCExLCdbSlNTXSBVbmtub3duIGhvb2sgXCIlc1wiLicsdCl9fV0pLGV9KCk7dC5kZWZhdWx0PWx9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1zKG4oMzcxKSksbz1zKG4oMzcyKSksYT1zKG4oMzczKSksaT1zKG4oMzc0KSksbD1zKG4oMzc1KSk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHU9e1wiQGNoYXJzZXRcIjpyLmRlZmF1bHQsXCJAaW1wb3J0XCI6ci5kZWZhdWx0LFwiQG5hbWVzcGFjZVwiOnIuZGVmYXVsdCxcIkBrZXlmcmFtZXNcIjpvLmRlZmF1bHQsXCJAbWVkaWFcIjphLmRlZmF1bHQsXCJAc3VwcG9ydHNcIjphLmRlZmF1bHQsXCJAZm9udC1mYWNlXCI6aS5kZWZhdWx0LFwiQHZpZXdwb3J0XCI6bC5kZWZhdWx0LFwiQC1tcy12aWV3cG9ydFwiOmwuZGVmYXVsdH0sYz1PYmplY3Qua2V5cyh1KS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFJlZ0V4cChcIl5cIitlKSxuPXVbZV07cmV0dXJue29uQ3JlYXRlUnVsZTpmdW5jdGlvbihlLHIsbyl7cmV0dXJuIHQudGVzdChlKT9uZXcgbihlLHIsbyk6bnVsbH19fSk7dC5kZWZhdWx0PWN9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpO3ZhciBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4scil7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx0aGlzLnR5cGU9XCJzaW1wbGVcIix0aGlzLmlzUHJvY2Vzc2VkPSExLHRoaXMua2V5PXQsdGhpcy52YWx1ZT1uLHRoaXMub3B0aW9ucz1yfXJldHVybiByKGUsW3trZXk6XCJ0b1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpe2Zvcih2YXIgdD1cIlwiLG49MDtuPHRoaXMudmFsdWUubGVuZ3RoO24rKyl0Kz10aGlzLmtleStcIiBcIit0aGlzLnZhbHVlW25dK1wiO1wiLHRoaXMudmFsdWVbbisxXSYmKHQrPVwiXFxuXCIpO3JldHVybiB0fXJldHVybiB0aGlzLmtleStcIiBcIit0aGlzLnZhbHVlK1wiO1wifX1dKSxlfSgpO3QuZGVmYXVsdD1vfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHIsbz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksaT1uKDM1KSxsPShyPWkpJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTt2YXIgcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuLHIpe2Zvcih2YXIgYSBpbiBmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy50eXBlPVwia2V5ZnJhbWVzXCIsdGhpcy5pc1Byb2Nlc3NlZD0hMSx0aGlzLmtleT10LHRoaXMub3B0aW9ucz1yLHRoaXMucnVsZXM9bmV3IGwuZGVmYXVsdChvKHt9LHIse3BhcmVudDp0aGlzfSkpLG4pdGhpcy5ydWxlcy5hZGQoYSxuW2FdLG8oe30sdGhpcy5vcHRpb25zLHtwYXJlbnQ6dGhpcyxzZWxlY3RvcjphfSkpO3RoaXMucnVsZXMucHJvY2VzcygpfXJldHVybiBhKGUsW3trZXk6XCJ0b1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOntpbmRlbnQ6MX0sdD10aGlzLnJ1bGVzLnRvU3RyaW5nKGUpO3JldHVybiB0JiYodCs9XCJcXG5cIiksdGhpcy5rZXkrXCIge1xcblwiK3QrXCJ9XCJ9fV0pLGV9KCk7dC5kZWZhdWx0PXN9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcixvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxpPW4oMzUpLGw9KHI9aSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O3ZhciBzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4scil7Zm9yKHZhciBhIGluIGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx0aGlzLnR5cGU9XCJjb25kaXRpb25hbFwiLHRoaXMuaXNQcm9jZXNzZWQ9ITEsdGhpcy5rZXk9dCx0aGlzLm9wdGlvbnM9cix0aGlzLnJ1bGVzPW5ldyBsLmRlZmF1bHQobyh7fSxyLHtwYXJlbnQ6dGhpc30pKSxuKXRoaXMucnVsZXMuYWRkKGEsblthXSk7dGhpcy5ydWxlcy5wcm9jZXNzKCl9cmV0dXJuIGEoZSxbe2tleTpcImdldFJ1bGVcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5ydWxlcy5nZXQoZSl9fSx7a2V5OlwiaW5kZXhPZlwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJ1bGVzLmluZGV4T2YoZSl9fSx7a2V5OlwiYWRkUnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLnJ1bGVzLmFkZChlLHQsbik7cmV0dXJuIHRoaXMub3B0aW9ucy5qc3MucGx1Z2lucy5vblByb2Nlc3NSdWxlKHIpLHJ9fSx7a2V5OlwidG9TdHJpbmdcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7aW5kZW50OjF9LHQ9dGhpcy5ydWxlcy50b1N0cmluZyhlKTtyZXR1cm4gdD90aGlzLmtleStcIiB7XFxuXCIrdCtcIlxcbn1cIjpcIlwifX1dKSxlfSgpO3QuZGVmYXVsdD1zfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHIsbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9big2NCksaT0ocj1hKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbixyKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpLHRoaXMudHlwZT1cImZvbnQtZmFjZVwiLHRoaXMuaXNQcm9jZXNzZWQ9ITEsdGhpcy5rZXk9dCx0aGlzLnN0eWxlPW4sdGhpcy5vcHRpb25zPXJ9cmV0dXJuIG8oZSxbe2tleTpcInRvU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheSh0aGlzLnN0eWxlKSl7Zm9yKHZhciB0PVwiXCIsbj0wO248dGhpcy5zdHlsZS5sZW5ndGg7bisrKXQrPSgwLGkuZGVmYXVsdCkodGhpcy5rZXksdGhpcy5zdHlsZVtuXSksdGhpcy5zdHlsZVtuKzFdJiYodCs9XCJcXG5cIik7cmV0dXJuIHR9cmV0dXJuKDAsaS5kZWZhdWx0KSh0aGlzLmtleSx0aGlzLnN0eWxlLGUpfX1dKSxlfSgpO3QuZGVmYXVsdD1sfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHIsbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9big2NCksaT0ocj1hKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbixyKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpLHRoaXMudHlwZT1cInZpZXdwb3J0XCIsdGhpcy5pc1Byb2Nlc3NlZD0hMSx0aGlzLmtleT10LHRoaXMuc3R5bGU9bix0aGlzLm9wdGlvbnM9cn1yZXR1cm4gbyhlLFt7a2V5OlwidG9TdHJpbmdcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4oMCxpLmRlZmF1bHQpKHRoaXMua2V5LHRoaXMuc3R5bGUsZSl9fV0pLGV9KCk7dC5kZWZhdWx0PWx9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1pKG4oMzApKSxvPWkobig0NykpLGE9aShuKDExNikpO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXQuZGVmYXVsdD17b25DcmVhdGVSdWxlOmZ1bmN0aW9uKGUsdCxuKXtpZighKDAsYS5kZWZhdWx0KSh0KSlyZXR1cm4gbnVsbDt2YXIgcj10LGk9KDAsby5kZWZhdWx0KShlLHt9LG4pO3JldHVybiByLnN1YnNjcmliZShmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSlpLnByb3AodCxlW3RdKX0pLGl9LG9uUHJvY2Vzc1J1bGU6ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIHIuZGVmYXVsdCl7dmFyIHQ9ZSxuPXQuc3R5bGUsbz1mdW5jdGlvbihlKXt2YXIgcj1uW2VdO2lmKCEoMCxhLmRlZmF1bHQpKHIpKXJldHVyblwiY29udGludWVcIjtkZWxldGUgbltlXSxyLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbihuKXt0LnByb3AoZSxuKX19KX07Zm9yKHZhciBpIGluIG4pbyhpKX19fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPWkobigzNSkpLG89aShuKDMwKSksYT1pKG4oNDcpKTtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgbD1EYXRlLm5vdygpLHM9XCJmblZhbHVlc1wiK2wsdT1cImZuU3R5bGVcIisgKytsO3QuZGVmYXVsdD17b25DcmVhdGVSdWxlOmZ1bmN0aW9uKGUsdCxuKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXJldHVybiBudWxsO3ZhciByPSgwLGEuZGVmYXVsdCkoZSx7fSxuKTtyZXR1cm4gclt1XT10LHJ9LG9uUHJvY2Vzc1N0eWxlOmZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpe3ZhciBvPWVbcl07XCJmdW5jdGlvblwiPT10eXBlb2YgbyYmKGRlbGV0ZSBlW3JdLG5bcl09byl9cmV0dXJuKHQ9dClbc109bixlfSxvblVwZGF0ZTpmdW5jdGlvbihlLHQpe2lmKHQucnVsZXMgaW5zdGFuY2VvZiByLmRlZmF1bHQpdC5ydWxlcy51cGRhdGUoZSk7ZWxzZSBpZih0IGluc3RhbmNlb2Ygby5kZWZhdWx0KXtpZigodD10KVtzXSlmb3IodmFyIG4gaW4gdFtzXSl0LnByb3Aobix0W3NdW25dKGUpKTt2YXIgYT0odD10KVt1XTtpZihhKXt2YXIgaT1hKGUpO2Zvcih2YXIgbCBpbiBpKXQucHJvcChsLGlbbF0pfX19fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksbz1zKG4oMjgpKSxhPXMobig2NSkpLGk9cyhuKDMwKSksbD1zKG4oNDYpKTtmdW5jdGlvbiBzKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgdT1mdW5jdGlvbihlKXt2YXIgdD12b2lkIDA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR8fCh0PWUoKSksdH19O2Z1bmN0aW9uIGMoZSx0KXt0cnl7cmV0dXJuIGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSh0KX1jYXRjaChlKXtyZXR1cm5cIlwifX1mdW5jdGlvbiBkKGUsdCxuKXt0cnl7dmFyIHI9bjtpZihBcnJheS5pc0FycmF5KG4pJiYocj0oMCxsLmRlZmF1bHQpKG4sITApLFwiIWltcG9ydGFudFwiPT09bltuLmxlbmd0aC0xXSkpcmV0dXJuIGUuc3R5bGUuc2V0UHJvcGVydHkodCxyLFwiaW1wb3J0YW50XCIpLCEwO2Uuc3R5bGUuc2V0UHJvcGVydHkodCxyKX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBwKGUsdCl7dHJ5e2Uuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9Y2F0Y2goZSl7KDAsby5kZWZhdWx0KSghMSwnW0pTU10gRE9NRXhjZXB0aW9uIFwiJXNcIiB3YXMgdGhyb3duLiBUcmllZCB0byByZW1vdmUgcHJvcGVydHkgXCIlc1wiLicsZS5tZXNzYWdlLHQpfX12YXIgZixtPTEsZz03LGg9KGY9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjA7cmV0dXJuIGUuc3Vic3RyKHQsZS5pbmRleE9mKFwie1wiKS0xKX0sZnVuY3Rpb24oZSl7aWYoZS50eXBlPT09bSlyZXR1cm4gZS5zZWxlY3RvclRleHQ7aWYoZS50eXBlPT09Zyl7dmFyIHQ9ZS5uYW1lO2lmKHQpcmV0dXJuXCJAa2V5ZnJhbWVzIFwiK3Q7dmFyIG49ZS5jc3NUZXh0O3JldHVyblwiQFwiK2YobixuLmluZGV4T2YoXCJrZXlmcmFtZXNcIikpfXJldHVybiBmKGUuY3NzVGV4dCl9KTtmdW5jdGlvbiBiKGUsdCl7cmV0dXJuIGUuc2VsZWN0b3JUZXh0PXQsZS5zZWxlY3RvclRleHQ9PT10fXZhciB5LHYsUz11KGZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmhlYWR8fGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXX0pLEU9KHk9dm9pZCAwLHY9ITEsZnVuY3Rpb24oZSl7dmFyIHQ9e307eXx8KHk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpKTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtpZihyIGluc3RhbmNlb2YgaS5kZWZhdWx0KXt2YXIgbz1yLnNlbGVjdG9yO2lmKG8mJi0xIT09by5pbmRleE9mKFwiXFxcXFwiKSl7dnx8KFMoKS5hcHBlbmRDaGlsZCh5KSx2PSEwKSx5LnRleHRDb250ZW50PW8rXCIge31cIjt2YXIgYT15LnNoZWV0O2lmKGEpe3ZhciBsPWEuY3NzUnVsZXM7bCYmKHRbbFswXS5zZWxlY3RvclRleHRdPXIua2V5KX19fX1yZXR1cm4gdiYmKFMoKS5yZW1vdmVDaGlsZCh5KSx2PSExKSx0fSk7ZnVuY3Rpb24geChlKXt2YXIgdD1hLmRlZmF1bHQucmVnaXN0cnk7aWYodC5sZW5ndGg+MCl7dmFyIG49ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtpZihyLmF0dGFjaGVkJiZyLm9wdGlvbnMuaW5kZXg+dC5pbmRleCYmci5vcHRpb25zLmluc2VydGlvblBvaW50PT09dC5pbnNlcnRpb25Qb2ludClyZXR1cm4gcn1yZXR1cm4gbnVsbH0odCxlKTtpZihuKXJldHVybiBuLnJlbmRlcmVyLmVsZW1lbnQ7aWYobj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aC0xO24+PTA7bi0tKXt2YXIgcj1lW25dO2lmKHIuYXR0YWNoZWQmJnIub3B0aW9ucy5pbnNlcnRpb25Qb2ludD09PXQuaW5zZXJ0aW9uUG9pbnQpcmV0dXJuIHJ9cmV0dXJuIG51bGx9KHQsZSkpcmV0dXJuIG4ucmVuZGVyZXIuZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmd9dmFyIHI9ZS5pbnNlcnRpb25Qb2ludDtpZihyJiZcInN0cmluZ1wiPT10eXBlb2Ygcil7dmFyIGk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVMoKSxuPTA7bjx0LmNoaWxkTm9kZXMubGVuZ3RoO24rKyl7dmFyIHI9dC5jaGlsZE5vZGVzW25dO2lmKDg9PT1yLm5vZGVUeXBlJiZyLm5vZGVWYWx1ZS50cmltKCk9PT1lKXJldHVybiByfXJldHVybiBudWxsfShyKTtpZihpKXJldHVybiBpLm5leHRTaWJsaW5nOygwLG8uZGVmYXVsdCkoXCJqc3NcIj09PXIsJ1tKU1NdIEluc2VydGlvbiBwb2ludCBcIiVzXCIgbm90IGZvdW5kLicscil9cmV0dXJuIG51bGx9dmFyIHc9dShmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGFbcHJvcGVydHk9XCJjc3Atbm9uY2VcIl0nKTtyZXR1cm4gZT9lLmdldEF0dHJpYnV0ZShcImNvbnRlbnRcIik6bnVsbH0pLGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy5nZXRQcm9wZXJ0eVZhbHVlPWMsdGhpcy5zZXRQcm9wZXJ0eT1kLHRoaXMucmVtb3ZlUHJvcGVydHk9cCx0aGlzLnNldFNlbGVjdG9yPWIsdGhpcy5nZXRLZXk9aCx0aGlzLmdldFVuZXNjYXBlZEtleXNNYXA9RSx0aGlzLmhhc0luc2VydGVkUnVsZXM9ITEsdCYmYS5kZWZhdWx0LmFkZCh0KSx0aGlzLnNoZWV0PXQ7dmFyIG49dGhpcy5zaGVldD90aGlzLnNoZWV0Lm9wdGlvbnM6e30scj1uLm1lZGlhLG89bi5tZXRhLGk9bi5lbGVtZW50O3RoaXMuZWxlbWVudD1pfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiksdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShcImRhdGEtanNzXCIsXCJcIiksciYmdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShcIm1lZGlhXCIsciksbyYmdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShcImRhdGEtbWV0YVwiLG8pO3ZhciBsPXcoKTtsJiZ0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIixsKX1yZXR1cm4gcihlLFt7a2V5OlwiYXR0YWNoXCIsdmFsdWU6ZnVuY3Rpb24oKXshdGhpcy5lbGVtZW50LnBhcmVudE5vZGUmJnRoaXMuc2hlZXQmJih0aGlzLmhhc0luc2VydGVkUnVsZXMmJih0aGlzLmRlcGxveSgpLHRoaXMuaGFzSW5zZXJ0ZWRSdWxlcz0hMSksZnVuY3Rpb24oZSx0KXt2YXIgbj10Lmluc2VydGlvblBvaW50LHI9eCh0KTtpZihyKXt2YXIgYT1yLnBhcmVudE5vZGU7YSYmYS5pbnNlcnRCZWZvcmUoZSxyKX1lbHNlIGlmKG4mJlwibnVtYmVyXCI9PXR5cGVvZiBuLm5vZGVUeXBlKXt2YXIgaT1uLGw9aS5wYXJlbnROb2RlO2w/bC5pbnNlcnRCZWZvcmUoZSxpLm5leHRTaWJsaW5nKTooMCxvLmRlZmF1bHQpKCExLFwiW0pTU10gSW5zZXJ0aW9uIHBvaW50IGlzIG5vdCBpbiB0aGUgRE9NLlwiKX1lbHNlIFMoKS5pbnNlcnRCZWZvcmUoZSxyKX0odGhpcy5lbGVtZW50LHRoaXMuc2hlZXQub3B0aW9ucykpfX0se2tleTpcImRldGFjaFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KX19LHtrZXk6XCJkZXBsb3lcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2hlZXQmJih0aGlzLmVsZW1lbnQudGV4dENvbnRlbnQ9XCJcXG5cIit0aGlzLnNoZWV0LnRvU3RyaW5nKCkrXCJcXG5cIil9fSx7a2V5OlwiaW5zZXJ0UnVsZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5lbGVtZW50LnNoZWV0LHI9bi5jc3NSdWxlcyxhPWUudG9TdHJpbmcoKTtpZih0fHwodD1yLmxlbmd0aCksIWEpcmV0dXJuITE7dHJ5e24uaW5zZXJ0UnVsZShhLHQpfWNhdGNoKHQpe3JldHVybigwLG8uZGVmYXVsdCkoITEsXCJbSlNTXSBDYW4gbm90IGluc2VydCBhbiB1bnN1cHBvcnRlZCBydWxlIFxcblxcciVzXCIsZSksITF9cmV0dXJuIHRoaXMuaGFzSW5zZXJ0ZWRSdWxlcz0hMCxyW3RdfX0se2tleTpcImRlbGV0ZVJ1bGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmVsZW1lbnQuc2hlZXQsbj10aGlzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT1uJiYodC5kZWxldGVSdWxlKG4pLCEwKX19LHtrZXk6XCJpbmRleE9mXCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuZWxlbWVudC5zaGVldC5jc3NSdWxlcyxuPTA7bjx0Lmxlbmd0aDtuKyspaWYoZT09PXRbbl0pcmV0dXJuIG47cmV0dXJuLTF9fSx7a2V5OlwicmVwbGFjZVJ1bGVcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuaW5kZXhPZihlKSxyPXRoaXMuaW5zZXJ0UnVsZSh0LG4pO3JldHVybiB0aGlzLmVsZW1lbnQuc2hlZXQuZGVsZXRlUnVsZShuKSxyfX0se2tleTpcImdldFJ1bGVzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50LnNoZWV0LmNzc1J1bGVzfX1dKSxlfSgpO3QuZGVmYXVsdD1rfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKTt2YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpfXJldHVybiByKGUsW3trZXk6XCJzZXRQcm9wZXJ0eVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OlwiZ2V0UHJvcGVydHlWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuXCJcIn19LHtrZXk6XCJyZW1vdmVQcm9wZXJ0eVwiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleTpcInNldFNlbGVjdG9yXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6XCJnZXRLZXlcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVyblwiXCJ9fSx7a2V5OlwiYXR0YWNoXCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OlwiZGV0YWNoXCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OlwiZGVwbG95XCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OlwiaW5zZXJ0UnVsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITF9fSx7a2V5OlwiZGVsZXRlUnVsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OlwicmVwbGFjZVJ1bGVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiExfX0se2tleTpcImdldFJ1bGVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OlwiaW5kZXhPZlwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuLTF9fV0pLGV9KCk7dC5kZWZhdWx0PW99LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXtqc3M6XCI2NGE1NWQ1NzhmODU2ZDI1OGRjMzQ1YjA5NGEyYTJiM1wiLHNoZWV0c1JlZ2lzdHJ5OlwiZDRiZDBiYWFjYmM1MmJiZDQ4YmJiOWViMjQzNDRlY2RcIixzaGVldE9wdGlvbnM6XCI2ZmM1NzBkNmJkNjEzODM4MTlkMGY5ZTc0MDdjNDUyZFwifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKTt0LmRlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm57b25DcmVhdGVSdWxlOmZ1bmN0aW9uKGUsdCxuKXtpZihlPT09bClyZXR1cm4gbmV3IHUoZSx0LG4pO2lmKFwiQFwiPT09ZVswXSYmZS5zdWJzdHIoMCxzLmxlbmd0aCk9PT1zKXJldHVybiBuZXcgYyhlLHQsbik7dmFyIHI9bi5wYXJlbnQ7ciYmKFwiZ2xvYmFsXCIhPT1yLnR5cGUmJlwiZ2xvYmFsXCIhPT1yLm9wdGlvbnMucGFyZW50LnR5cGV8fChuLmdsb2JhbD0hMCkpO24uZ2xvYmFsJiYobi5zZWxlY3Rvcj1lKTtyZXR1cm4gbnVsbH0sb25Qcm9jZXNzUnVsZTpmdW5jdGlvbihlKXtpZihcInN0eWxlXCIhPT1lLnR5cGUpcmV0dXJuOyhmdW5jdGlvbihlKXt2YXIgdD1lLm9wdGlvbnMsbj1lLnN0eWxlLG89bltsXTtpZighbylyZXR1cm47Zm9yKHZhciBhIGluIG8pdC5zaGVldC5hZGRSdWxlKGEsb1thXSxyKHt9LHQse3NlbGVjdG9yOnAoYSxlLnNlbGVjdG9yKX0pKTtkZWxldGUgbltsXX0pKGUpLGZ1bmN0aW9uKGUpe3ZhciB0PWUub3B0aW9ucyxuPWUuc3R5bGU7Zm9yKHZhciBvIGluIG4paWYoby5zdWJzdHIoMCxsLmxlbmd0aCk9PT1sKXt2YXIgYT1wKG8uc3Vic3RyKGwubGVuZ3RoKSxlLnNlbGVjdG9yKTt0LnNoZWV0LmFkZFJ1bGUoYSxuW29dLHIoe30sdCx7c2VsZWN0b3I6YX0pKSxkZWxldGUgbltvXX19KGUpfX19O3ZhciBhPW4oMTE0KTtmdW5jdGlvbiBpKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX12YXIgbD1cIkBnbG9iYWxcIixzPVwiQGdsb2JhbCBcIix1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4sbyl7Zm9yKHZhciBsIGluIGkodGhpcyxlKSx0aGlzLnR5cGU9XCJnbG9iYWxcIix0aGlzLmtleT10LHRoaXMub3B0aW9ucz1vLHRoaXMucnVsZXM9bmV3IGEuUnVsZUxpc3Qocih7fSxvLHtwYXJlbnQ6dGhpc30pKSxuKXRoaXMucnVsZXMuYWRkKGwsbltsXSx7c2VsZWN0b3I6bH0pO3RoaXMucnVsZXMucHJvY2VzcygpfXJldHVybiBvKGUsW3trZXk6XCJnZXRSdWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucnVsZXMuZ2V0KGUpfX0se2tleTpcImFkZFJ1bGVcIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5ydWxlcy5hZGQoZSx0LG4pO3JldHVybiB0aGlzLm9wdGlvbnMuanNzLnBsdWdpbnMub25Qcm9jZXNzUnVsZShyKSxyfX0se2tleTpcImluZGV4T2ZcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5ydWxlcy5pbmRleE9mKGUpfX0se2tleTpcInRvU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ydWxlcy50b1N0cmluZygpfX1dKSxlfSgpLGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbixvKXtpKHRoaXMsZSksdGhpcy5uYW1lPXQsdGhpcy5vcHRpb25zPW87dmFyIGE9dC5zdWJzdHIocy5sZW5ndGgpO3RoaXMucnVsZT1vLmpzcy5jcmVhdGVSdWxlKGEsbixyKHt9LG8se3BhcmVudDp0aGlzLHNlbGVjdG9yOmF9KSl9cmV0dXJuIG8oZSxbe2tleTpcInRvU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucnVsZS50b1N0cmluZyhlKX19XSksZX0oKSxkPS9cXHMqLFxccyovZztmdW5jdGlvbiBwKGUsdCl7Zm9yKHZhciBuPWUuc3BsaXQoZCkscj1cIlwiLG89MDtvPG4ubGVuZ3RoO28rKylyKz10K1wiIFwiK25bb10udHJpbSgpLG5bbysxXSYmKHIrPVwiLCBcIik7cmV0dXJuIHJ9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07dC5kZWZhdWx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj1lLmdldFJ1bGUobik7cmV0dXJuIHI/ci5zZWxlY3RvcjooKDAsaS5kZWZhdWx0KSghMSxcIltKU1NdIENvdWxkIG5vdCBmaW5kIHRoZSByZWZlcmVuY2VkIHJ1bGUgJXMgaW4gJXMuXCIsbixlLm9wdGlvbnMubWV0YXx8ZSksbil9fXZhciB0PWZ1bmN0aW9uKGUpe3JldHVybi0xIT09ZS5pbmRleE9mKFwiJlwiKX07ZnVuY3Rpb24gbihlLG4pe2Zvcih2YXIgcj1uLnNwbGl0KGwpLG89ZS5zcGxpdChsKSxhPVwiXCIsaT0wO2k8ci5sZW5ndGg7aSsrKWZvcih2YXIgdT1yW2ldLGM9MDtjPG8ubGVuZ3RoO2MrKyl7dmFyIGQ9b1tjXTthJiYoYSs9XCIsIFwiKSxhKz10KGQpP2QucmVwbGFjZShzLHUpOnUrXCIgXCIrZH1yZXR1cm4gYX1mdW5jdGlvbiBvKGUsdCxuKXtpZihuKXJldHVybiByKHt9LG4se2luZGV4Om4uaW5kZXgrMX0pO3ZhciBvPWUub3B0aW9ucy5uZXN0aW5nTGV2ZWw7cmV0dXJuIG89dm9pZCAwPT09bz8xOm8rMSxyKHt9LGUub3B0aW9ucyx7bmVzdGluZ0xldmVsOm8saW5kZXg6dC5pbmRleE9mKGUpKzF9KX1yZXR1cm57b25Qcm9jZXNzU3R5bGU6ZnVuY3Rpb24oYSxpKXtpZihcInN0eWxlXCIhPT1pLnR5cGUpcmV0dXJuIGE7dmFyIGw9aS5vcHRpb25zLnBhcmVudCxzPXZvaWQgMCxjPXZvaWQgMDtmb3IodmFyIGQgaW4gYSl7dmFyIHA9dChkKSxmPVwiQFwiPT09ZFswXTtpZihwfHxmKXtpZihzPW8oaSxsLHMpLHApe3ZhciBtPW4oZCxpLnNlbGVjdG9yKTtjfHwoYz1lKGwpKSxtPW0ucmVwbGFjZSh1LGMpLGwuYWRkUnVsZShtLGFbZF0scih7fSxzLHtzZWxlY3RvcjptfSkpfWVsc2UgZiYmbC5hZGRSdWxlKGQsbnVsbCxzKS5hZGRSdWxlKGkua2V5LGFbZF0se3NlbGVjdG9yOmkuc2VsZWN0b3J9KTtkZWxldGUgYVtkXX19cmV0dXJuIGF9fX07dmFyIG8sYT1uKDI4KSxpPShvPWEpJiZvLl9fZXNNb2R1bGU/bzp7ZGVmYXVsdDpvfTt2YXIgbD0vXFxzKixcXHMqL2cscz0vJi9nLHU9L1xcJChbXFx3LV0rKS9nfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJue29uUHJvY2Vzc1N0eWxlOmZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF09aShlW3RdKTtyZXR1cm4gZX1yZXR1cm4gaShlKX0sb25DaGFuZ2VWYWx1ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9KDAsYS5kZWZhdWx0KSh0KTtyZXR1cm4gdD09PXI/ZToobi5wcm9wKHIsZSksbnVsbCl9fX07dmFyIHIsbz1uKDM4NCksYT0ocj1vKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07ZnVuY3Rpb24gaShlKXt2YXIgdD17fTtmb3IodmFyIG4gaW4gZSl0WygwLGEuZGVmYXVsdCkobildPWVbbl07cmV0dXJuIGUuZmFsbGJhY2tzJiYoQXJyYXkuaXNBcnJheShlLmZhbGxiYWNrcyk/dC5mYWxsYmFja3M9ZS5mYWxsYmFja3MubWFwKGkpOnQuZmFsbGJhY2tzPWkoZS5mYWxsYmFja3MpKSx0fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPS9bQS1aXS9nLG89L15tcy0vLGE9e307ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluIGE/YVtlXTphW2VdPWUucmVwbGFjZShyLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZShvLFwiLW1zLVwiKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfTt0LmRlZmF1bHQ9ZnVuY3Rpb24oKXt2YXIgZT1pKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSk7cmV0dXJue29uUHJvY2Vzc1N0eWxlOmZ1bmN0aW9uKHQsbil7aWYoXCJzdHlsZVwiIT09bi50eXBlKXJldHVybiB0O2Zvcih2YXIgciBpbiB0KXRbcl09cyhyLHRbcl0sZSk7cmV0dXJuIHR9LG9uQ2hhbmdlVmFsdWU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gcyhuLHQsZSl9fX07dmFyIG8sYT1uKDM4Nik7ZnVuY3Rpb24gaShlKXt2YXIgdD0vKC1bYS16XSkvZyxuPWZ1bmN0aW9uKGUpe3JldHVybiBlWzFdLnRvVXBwZXJDYXNlKCl9LHI9e307Zm9yKHZhciBvIGluIGUpcltvXT1lW29dLHJbby5yZXBsYWNlKHQsbildPWVbb107cmV0dXJuIHJ9dmFyIGw9aSgoKG89YSkmJm8uX19lc01vZHVsZT9vOntkZWZhdWx0Om99KS5kZWZhdWx0KTtmdW5jdGlvbiBzKGUsdCxuKXtpZighdClyZXR1cm4gdDt2YXIgbz10LGE9dm9pZCAwPT09dD9cInVuZGVmaW5lZFwiOnIodCk7c3dpdGNoKFwib2JqZWN0XCI9PT1hJiZBcnJheS5pc0FycmF5KHQpJiYoYT1cImFycmF5XCIpLGEpe2Nhc2VcIm9iamVjdFwiOmlmKFwiZmFsbGJhY2tzXCI9PT1lKXtmb3IodmFyIGkgaW4gdCl0W2ldPXMoaSx0W2ldLG4pO2JyZWFrfWZvcih2YXIgdSBpbiB0KXRbdV09cyhlK1wiLVwiK3UsdFt1XSxuKTticmVhaztjYXNlXCJhcnJheVwiOmZvcih2YXIgYz0wO2M8dC5sZW5ndGg7YysrKXRbY109cyhlLHRbY10sbik7YnJlYWs7Y2FzZVwibnVtYmVyXCI6MCE9PXQmJihvPXQrKG5bZV18fGxbZV18fFwiXCIpKX1yZXR1cm4gb319LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9e1wiYW5pbWF0aW9uLWRlbGF5XCI6XCJtc1wiLFwiYW5pbWF0aW9uLWR1cmF0aW9uXCI6XCJtc1wiLFwiYmFja2dyb3VuZC1wb3NpdGlvblwiOlwicHhcIixcImJhY2tncm91bmQtcG9zaXRpb24teFwiOlwicHhcIixcImJhY2tncm91bmQtcG9zaXRpb24teVwiOlwicHhcIixcImJhY2tncm91bmQtc2l6ZVwiOlwicHhcIixib3JkZXI6XCJweFwiLFwiYm9yZGVyLWJvdHRvbVwiOlwicHhcIixcImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXNcIjpcInB4XCIsXCJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1c1wiOlwicHhcIixcImJvcmRlci1ib3R0b20td2lkdGhcIjpcInB4XCIsXCJib3JkZXItbGVmdFwiOlwicHhcIixcImJvcmRlci1sZWZ0LXdpZHRoXCI6XCJweFwiLFwiYm9yZGVyLXJhZGl1c1wiOlwicHhcIixcImJvcmRlci1yaWdodFwiOlwicHhcIixcImJvcmRlci1yaWdodC13aWR0aFwiOlwicHhcIixcImJvcmRlci1zcGFjaW5nXCI6XCJweFwiLFwiYm9yZGVyLXRvcFwiOlwicHhcIixcImJvcmRlci10b3AtbGVmdC1yYWRpdXNcIjpcInB4XCIsXCJib3JkZXItdG9wLXJpZ2h0LXJhZGl1c1wiOlwicHhcIixcImJvcmRlci10b3Atd2lkdGhcIjpcInB4XCIsXCJib3JkZXItd2lkdGhcIjpcInB4XCIsXCJib3JkZXItYWZ0ZXItd2lkdGhcIjpcInB4XCIsXCJib3JkZXItYmVmb3JlLXdpZHRoXCI6XCJweFwiLFwiYm9yZGVyLWVuZC13aWR0aFwiOlwicHhcIixcImJvcmRlci1ob3Jpem9udGFsLXNwYWNpbmdcIjpcInB4XCIsXCJib3JkZXItc3RhcnQtd2lkdGhcIjpcInB4XCIsXCJib3JkZXItdmVydGljYWwtc3BhY2luZ1wiOlwicHhcIixib3R0b206XCJweFwiLFwiYm94LXNoYWRvd1wiOlwicHhcIixcImNvbHVtbi1nYXBcIjpcInB4XCIsXCJjb2x1bW4tcnVsZVwiOlwicHhcIixcImNvbHVtbi1ydWxlLXdpZHRoXCI6XCJweFwiLFwiY29sdW1uLXdpZHRoXCI6XCJweFwiLFwiZmxleC1iYXNpc1wiOlwicHhcIixcImZvbnQtc2l6ZVwiOlwicHhcIixcImZvbnQtc2l6ZS1kZWx0YVwiOlwicHhcIixoZWlnaHQ6XCJweFwiLGxlZnQ6XCJweFwiLFwibGV0dGVyLXNwYWNpbmdcIjpcInB4XCIsXCJsb2dpY2FsLWhlaWdodFwiOlwicHhcIixcImxvZ2ljYWwtd2lkdGhcIjpcInB4XCIsbWFyZ2luOlwicHhcIixcIm1hcmdpbi1hZnRlclwiOlwicHhcIixcIm1hcmdpbi1iZWZvcmVcIjpcInB4XCIsXCJtYXJnaW4tYm90dG9tXCI6XCJweFwiLFwibWFyZ2luLWxlZnRcIjpcInB4XCIsXCJtYXJnaW4tcmlnaHRcIjpcInB4XCIsXCJtYXJnaW4tdG9wXCI6XCJweFwiLFwibWF4LWhlaWdodFwiOlwicHhcIixcIm1heC13aWR0aFwiOlwicHhcIixcIm1hcmdpbi1lbmRcIjpcInB4XCIsXCJtYXJnaW4tc3RhcnRcIjpcInB4XCIsXCJtYXNrLXBvc2l0aW9uLXhcIjpcInB4XCIsXCJtYXNrLXBvc2l0aW9uLXlcIjpcInB4XCIsXCJtYXNrLXNpemVcIjpcInB4XCIsXCJtYXgtbG9naWNhbC1oZWlnaHRcIjpcInB4XCIsXCJtYXgtbG9naWNhbC13aWR0aFwiOlwicHhcIixcIm1pbi1oZWlnaHRcIjpcInB4XCIsXCJtaW4td2lkdGhcIjpcInB4XCIsXCJtaW4tbG9naWNhbC1oZWlnaHRcIjpcInB4XCIsXCJtaW4tbG9naWNhbC13aWR0aFwiOlwicHhcIixtb3Rpb246XCJweFwiLFwibW90aW9uLW9mZnNldFwiOlwicHhcIixvdXRsaW5lOlwicHhcIixcIm91dGxpbmUtb2Zmc2V0XCI6XCJweFwiLFwib3V0bGluZS13aWR0aFwiOlwicHhcIixwYWRkaW5nOlwicHhcIixcInBhZGRpbmctYm90dG9tXCI6XCJweFwiLFwicGFkZGluZy1sZWZ0XCI6XCJweFwiLFwicGFkZGluZy1yaWdodFwiOlwicHhcIixcInBhZGRpbmctdG9wXCI6XCJweFwiLFwicGFkZGluZy1hZnRlclwiOlwicHhcIixcInBhZGRpbmctYmVmb3JlXCI6XCJweFwiLFwicGFkZGluZy1lbmRcIjpcInB4XCIsXCJwYWRkaW5nLXN0YXJ0XCI6XCJweFwiLFwicGVyc3BlY3RpdmUtb3JpZ2luLXhcIjpcIiVcIixcInBlcnNwZWN0aXZlLW9yaWdpbi15XCI6XCIlXCIscGVyc3BlY3RpdmU6XCJweFwiLHJpZ2h0OlwicHhcIixcInNoYXBlLW1hcmdpblwiOlwicHhcIixzaXplOlwicHhcIixcInRleHQtaW5kZW50XCI6XCJweFwiLFwidGV4dC1zdHJva2VcIjpcInB4XCIsXCJ0ZXh0LXN0cm9rZS13aWR0aFwiOlwicHhcIix0b3A6XCJweFwiLFwidHJhbnNmb3JtLW9yaWdpblwiOlwiJVwiLFwidHJhbnNmb3JtLW9yaWdpbi14XCI6XCIlXCIsXCJ0cmFuc2Zvcm0tb3JpZ2luLXlcIjpcIiVcIixcInRyYW5zZm9ybS1vcmlnaW4telwiOlwiJVwiLFwidHJhbnNpdGlvbi1kZWxheVwiOlwibXNcIixcInRyYW5zaXRpb24tZHVyYXRpb25cIjpcIm1zXCIsXCJ2ZXJ0aWNhbC1hbGlnblwiOlwicHhcIix3aWR0aDpcInB4XCIsXCJ3b3JkLXNwYWNpbmdcIjpcInB4XCIsXCJib3gtc2hhZG93LXhcIjpcInB4XCIsXCJib3gtc2hhZG93LXlcIjpcInB4XCIsXCJib3gtc2hhZG93LWJsdXJcIjpcInB4XCIsXCJib3gtc2hhZG93LXNwcmVhZFwiOlwicHhcIixcImZvbnQtbGluZS1oZWlnaHRcIjpcInB4XCIsXCJ0ZXh0LXNoYWRvdy14XCI6XCJweFwiLFwidGV4dC1zaGFkb3cteVwiOlwicHhcIixcInRleHQtc2hhZG93LWJsdXJcIjpcInB4XCJ9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJue29uUHJvY2Vzc1J1bGU6ZnVuY3Rpb24oZSl7XCJrZXlmcmFtZXNcIj09PWUudHlwZSYmKGUua2V5PVwiQFwiK3IucHJlZml4LmNzcytlLmtleS5zdWJzdHIoMSkpfSxvblByb2Nlc3NTdHlsZTpmdW5jdGlvbihlLHQpe2lmKFwic3R5bGVcIiE9PXQudHlwZSlyZXR1cm4gZTtmb3IodmFyIG4gaW4gZSl7dmFyIG89ZVtuXSxhPSExLGk9ci5zdXBwb3J0ZWRQcm9wZXJ0eShuKTtpJiZpIT09biYmKGE9ITApO3ZhciBsPSExLHM9ci5zdXBwb3J0ZWRWYWx1ZShpLG8pO3MmJnMhPT1vJiYobD0hMCksKGF8fGwpJiYoYSYmZGVsZXRlIGVbbl0sZVtpfHxuXT1zfHxvKX1yZXR1cm4gZX0sb25DaGFuZ2VWYWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiByLnN1cHBvcnRlZFZhbHVlKHQsZSl9fX07dmFyIHI9ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fShuKDM4OCkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5zdXBwb3J0ZWRWYWx1ZT10LnN1cHBvcnRlZFByb3BlcnR5PXQucHJlZml4PXZvaWQgMDt2YXIgcj1pKG4oNjYpKSxvPWkobigzODkpKSxhPWkobigzOTEpKTtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10LmRlZmF1bHQ9e3ByZWZpeDpyLmRlZmF1bHQsc3VwcG9ydGVkUHJvcGVydHk6by5kZWZhdWx0LHN1cHBvcnRlZFZhbHVlOmEuZGVmYXVsdH0sXG4vKipcbiAgICAqIENTUyBWZW5kb3IgcHJlZml4IGRldGVjdGlvbiBhbmQgcHJvcGVydHkgZmVhdHVyZSB0ZXN0aW5nLlxuICAgICpcbiAgICAqIEBjb3B5cmlnaHQgT2xlZyBTbG9ib2Rza29pIDIwMTVcbiAgICAqIEB3ZWJzaXRlIGh0dHBzOi8vZ2l0aHViLmNvbS9qc3N0eWxlcy9jc3MtdmVuZG9yXG4gICAgKiBAbGljZW5zZSBNSVRcbiAgICAqL1xudC5wcmVmaXg9ci5kZWZhdWx0LHQuc3VwcG9ydGVkUHJvcGVydHk9by5kZWZhdWx0LHQuc3VwcG9ydGVkVmFsdWU9YS5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe2lmKCFsKXJldHVybiBlO2lmKG51bGwhPXNbZV0pcmV0dXJuIHNbZV07KDAsYS5kZWZhdWx0KShlKWluIGwuc3R5bGU/c1tlXT1lOm8uZGVmYXVsdC5qcysoMCxhLmRlZmF1bHQpKFwiLVwiK2UpaW4gbC5zdHlsZT9zW2VdPW8uZGVmYXVsdC5jc3MrZTpzW2VdPSExO3JldHVybiBzW2VdfTt2YXIgcj1pKG4oNDgpKSxvPWkobig2NikpLGE9aShuKDM5MCkpO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBsPXZvaWQgMCxzPXt9O2lmKHIuZGVmYXVsdCl7bD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicFwiKTt2YXIgdT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXCJcIik7Zm9yKHZhciBjIGluIHUpaXNOYU4oYyl8fChzW3VbY11dPXVbY10pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHIsbyl9O3ZhciByPS9bLVxcc10rKC4pPy9nO2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4gdD90LnRvVXBwZXJDYXNlKCk6XCJcIn19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXtpZighbClyZXR1cm4gdDtpZihcInN0cmluZ1wiIT10eXBlb2YgdHx8IWlzTmFOKHBhcnNlSW50KHQsMTApKSlyZXR1cm4gdDt2YXIgbj1lK3Q7aWYobnVsbCE9aVtuXSlyZXR1cm4gaVtuXTt0cnl7bC5zdHlsZVtlXT10fWNhdGNoKGUpe3JldHVybiBpW25dPSExLCExfVwiXCIhPT1sLnN0eWxlW2VdP2lbbl09dDooXCItbXMtZmxleFwiPT09KHQ9by5kZWZhdWx0LmNzcyt0KSYmKHQ9XCItbXMtZmxleGJveFwiKSxsLnN0eWxlW2VdPXQsXCJcIiE9PWwuc3R5bGVbZV0mJihpW25dPXQpKTtpW25dfHwoaVtuXT0hMSk7cmV0dXJuIGwuc3R5bGVbZV09XCJcIixpW25dfTt2YXIgcj1hKG4oNDgpKSxvPWEobig2NikpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBpPXt9LGw9dm9pZCAwO3IuZGVmYXVsdCYmKGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInBcIikpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3JldHVybiBlLmxlbmd0aC10Lmxlbmd0aH1yZXR1cm57b25Qcm9jZXNzU3R5bGU6ZnVuY3Rpb24odCxuKXtpZihcInN0eWxlXCIhPT1uLnR5cGUpcmV0dXJuIHQ7dmFyIHI9e30sbz1PYmplY3Qua2V5cyh0KS5zb3J0KGUpO2Zvcih2YXIgYSBpbiBvKXJbb1thXV09dFtvW2FdXTtyZXR1cm4gcn19fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9e3NldDpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1lLmdldCh0KTtvfHwobz1uZXcgTWFwLGUuc2V0KHQsbykpLG8uc2V0KG4scil9LGdldDpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXQodCk7cmV0dXJuIHI/ci5nZXQobik6dm9pZCAwfSxkZWxldGU6ZnVuY3Rpb24oZSx0LG4pe2UuZ2V0KHQpLmRlbGV0ZShuKX19O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7XG4vKiFcbiAqIGlzLXBsYWluLW9iamVjdCA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvaXMtcGxhaW4tb2JqZWN0PlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL3ZhciByPW4oMzk1KTtmdW5jdGlvbiBvKGUpe3JldHVybiEwPT09cihlKSYmXCJbb2JqZWN0IE9iamVjdF1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4hMSE9PW8oZSkmJihcImZ1bmN0aW9uXCI9PXR5cGVvZih0PWUuY29uc3RydWN0b3IpJiYoITEhPT1vKG49dC5wcm90b3R5cGUpJiYhMSE9PW4uaGFzT3duUHJvcGVydHkoXCJpc1Byb3RvdHlwZU9mXCIpKSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7XG4vKiFcbiAqIGlzb2JqZWN0IDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pc29iamVjdD5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNywgSm9uIFNjaGxpbmtlcnQuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9lLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiYhMT09PUFycmF5LmlzQXJyYXkoZSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YWx1ZXMsbj12b2lkIDA9PT10P3t4czowLHNtOjYwMCxtZDo5NjAsbGc6MTI4MCx4bDoxOTIwfTp0LHI9ZS51bml0LGw9dm9pZCAwPT09cj9cInB4XCI6cixzPWUuc3RlcCx1PXZvaWQgMD09PXM/NTpzLGM9KDAsYS5kZWZhdWx0KShlLFtcInZhbHVlc1wiLFwidW5pdFwiLFwic3RlcFwiXSk7ZnVuY3Rpb24gZChlKXt2YXIgdD1cIm51bWJlclwiPT10eXBlb2YgbltlXT9uW2VdOmU7cmV0dXJuXCJAbWVkaWEgKG1pbi13aWR0aDpcIi5jb25jYXQodCkuY29uY2F0KGwsXCIpXCIpfWZ1bmN0aW9uIHAoZSx0KXt2YXIgcj1pLmluZGV4T2YodCkrMTtyZXR1cm4gcj09PWkubGVuZ3RoP2QoZSk6XCJAbWVkaWEgKG1pbi13aWR0aDpcIi5jb25jYXQobltlXSkuY29uY2F0KGwsXCIpIGFuZCBcIikrXCIobWF4LXdpZHRoOlwiLmNvbmNhdChuW2lbcl1dLXUvMTAwKS5jb25jYXQobCxcIilcIil9cmV0dXJuKDAsby5kZWZhdWx0KSh7a2V5czppLHZhbHVlczpuLHVwOmQsZG93bjpmdW5jdGlvbihlKXt2YXIgdD1pLmluZGV4T2YoZSkrMSxyPW5baVt0XV07aWYodD09PWkubGVuZ3RoKXJldHVybiBkKFwieHNcIik7cmV0dXJuXCJAbWVkaWEgKG1heC13aWR0aDpcIi5jb25jYXQoKFwibnVtYmVyXCI9PXR5cGVvZiByJiZ0PjA/cjplKS11LzEwMCkuY29uY2F0KGwsXCIpXCIpfSxiZXR3ZWVuOnAsb25seTpmdW5jdGlvbihlKXtyZXR1cm4gcChlLGUpfSx3aWR0aDpmdW5jdGlvbihlKXtyZXR1cm4gbltlXX19LGMpfSx0LmtleXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9W1wieHNcIixcInNtXCIsXCJtZFwiLFwibGdcIixcInhsXCJdO3Qua2V5cz1pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybigwLGEuZGVmYXVsdCkoe2d1dHRlcnM6ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuKDAsYS5kZWZhdWx0KSh7cGFkZGluZ0xlZnQ6Mip0LnVuaXQscGFkZGluZ1JpZ2h0OjIqdC51bml0fSxuLCgwLG8uZGVmYXVsdCkoe30sZS51cChcInNtXCIpLCgwLGEuZGVmYXVsdCkoe3BhZGRpbmdMZWZ0OjMqdC51bml0LHBhZGRpbmdSaWdodDozKnQudW5pdH0sbltlLnVwKFwic21cIildKSkpfSx0b29sYmFyOihyPXttaW5IZWlnaHQ6NTZ9LCgwLG8uZGVmYXVsdCkocixcIlwiLmNvbmNhdChlLnVwKFwieHNcIiksXCIgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKVwiKSx7bWluSGVpZ2h0OjQ4fSksKDAsby5kZWZhdWx0KShyLGUudXAoXCJzbVwiKSx7bWluSGVpZ2h0OjY0fSkscil9LG4pfTt2YXIgbz1yKG4oOSkpLGE9cihuKDQpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PWUucHJpbWFyeSxuPXZvaWQgMD09PXQ/e2xpZ2h0OmwuZGVmYXVsdFszMDBdLG1haW46bC5kZWZhdWx0WzUwMF0sZGFyazpsLmRlZmF1bHRbNzAwXX06dCxyPWUuc2Vjb25kYXJ5LGg9dm9pZCAwPT09cj97bGlnaHQ6cy5kZWZhdWx0LkEyMDAsbWFpbjpzLmRlZmF1bHQuQTQwMCxkYXJrOnMuZGVmYXVsdC5BNzAwfTpyLGI9ZS5lcnJvcix5PXZvaWQgMD09PWI/e2xpZ2h0OmMuZGVmYXVsdFszMDBdLG1haW46Yy5kZWZhdWx0WzUwMF0sZGFyazpjLmRlZmF1bHRbNzAwXX06Yix2PWUudHlwZSxTPXZvaWQgMD09PXY/XCJsaWdodFwiOnYsRT1lLmNvbnRyYXN0VGhyZXNob2xkLHg9dm9pZCAwPT09RT8zOkUsdz1lLnRvbmFsT2Zmc2V0LGs9dm9pZCAwPT09dz8uMjp3LF89KDAsYS5kZWZhdWx0KShlLFtcInByaW1hcnlcIixcInNlY29uZGFyeVwiLFwiZXJyb3JcIixcInR5cGVcIixcImNvbnRyYXN0VGhyZXNob2xkXCIsXCJ0b25hbE9mZnNldFwiXSk7ZnVuY3Rpb24gVChlKXt2YXIgdD0oMCxwLmdldENvbnRyYXN0UmF0aW8pKGUsbS50ZXh0LnByaW1hcnkpPj14P20udGV4dC5wcmltYXJ5OmYudGV4dC5wcmltYXJ5O3JldHVybiB0fWZ1bmN0aW9uIEEoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjUwMCxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTozMDAscj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106NzAwO3JldHVybiFlLm1haW4mJmVbdF0mJihlLm1haW49ZVt0XSksZyhlLFwibGlnaHRcIixuLGspLGcoZSxcImRhcmtcIixyLGspLGUuY29udHJhc3RUZXh0fHwoZS5jb250cmFzdFRleHQ9VChlLm1haW4pKSxlfUEobiksQShoLFwiQTQwMFwiLFwiQTIwMFwiLFwiQTcwMFwiKSxBKHkpO3ZhciBDPXtkYXJrOm0sbGlnaHQ6Zn07cmV0dXJuKDAsaS5kZWZhdWx0KSgoMCxvLmRlZmF1bHQpKHtjb21tb246ZC5kZWZhdWx0LHR5cGU6UyxwcmltYXJ5Om4sc2Vjb25kYXJ5OmgsZXJyb3I6eSxncmV5OnUuZGVmYXVsdCxjb250cmFzdFRocmVzaG9sZDp4LGdldENvbnRyYXN0VGV4dDpULGF1Z21lbnRDb2xvcjpBLHRvbmFsT2Zmc2V0Omt9LENbU10pLF8se2Nsb25lOiExfSl9LHQuZGFyaz10LmxpZ2h0PXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDUpKSxpPShyKG4oMTcpKSxyKG4oNDkpKSksbD1yKG4oMTIyKSkscz1yKG4oMTIzKSksdT1yKG4oMTI0KSksYz1yKG4oMTI1KSksZD1yKG4oMTI2KSkscD1uKDMxKSxmPXt0ZXh0OntwcmltYXJ5OlwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLHNlY29uZGFyeTpcInJnYmEoMCwgMCwgMCwgMC41NClcIixkaXNhYmxlZDpcInJnYmEoMCwgMCwgMCwgMC4zOClcIixoaW50OlwicmdiYSgwLCAwLCAwLCAwLjM4KVwifSxkaXZpZGVyOlwicmdiYSgwLCAwLCAwLCAwLjEyKVwiLGJhY2tncm91bmQ6e3BhcGVyOmQuZGVmYXVsdC53aGl0ZSxkZWZhdWx0OnUuZGVmYXVsdFs1MF19LGFjdGlvbjp7YWN0aXZlOlwicmdiYSgwLCAwLCAwLCAwLjU0KVwiLGhvdmVyOlwicmdiYSgwLCAwLCAwLCAwLjA4KVwiLGhvdmVyT3BhY2l0eTouMDgsc2VsZWN0ZWQ6XCJyZ2JhKDAsIDAsIDAsIDAuMTQpXCIsZGlzYWJsZWQ6XCJyZ2JhKDAsIDAsIDAsIDAuMjYpXCIsZGlzYWJsZWRCYWNrZ3JvdW5kOlwicmdiYSgwLCAwLCAwLCAwLjEyKVwifX07dC5saWdodD1mO3ZhciBtPXt0ZXh0OntwcmltYXJ5OmQuZGVmYXVsdC53aGl0ZSxzZWNvbmRhcnk6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNylcIixkaXNhYmxlZDpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KVwiLGhpbnQ6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSlcIixpY29uOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpXCJ9LGRpdmlkZXI6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpXCIsYmFja2dyb3VuZDp7cGFwZXI6dS5kZWZhdWx0WzgwMF0sZGVmYXVsdDpcIiMzMDMwMzBcIn0sYWN0aW9uOnthY3RpdmU6ZC5kZWZhdWx0LndoaXRlLGhvdmVyOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpXCIsaG92ZXJPcGFjaXR5Oi4xLHNlbGVjdGVkOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpXCIsZGlzYWJsZWQ6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMylcIixkaXNhYmxlZEJhY2tncm91bmQ6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpXCJ9fTtmdW5jdGlvbiBnKGUsdCxuLHIpe2VbdF18fChlLmhhc093blByb3BlcnR5KG4pP2VbdF09ZVtuXTpcImxpZ2h0XCI9PT10P2UubGlnaHQ9KDAscC5saWdodGVuKShlLm1haW4scik6XCJkYXJrXCI9PT10JiYoZS5kYXJrPSgwLHAuZGFya2VuKShlLm1haW4sMS41KnIpKSl9dC5kYXJrPW19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe3ZhciBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChlKTp0LHI9bi5mb250RmFtaWx5LGQ9dm9pZCAwPT09cj9jOnIscD1uLmZvbnRTaXplLGY9dm9pZCAwPT09cD8xNDpwLG09bi5mb250V2VpZ2h0TGlnaHQsZz12b2lkIDA9PT1tPzMwMDptLGg9bi5mb250V2VpZ2h0UmVndWxhcixiPXZvaWQgMD09PWg/NDAwOmgseT1uLmZvbnRXZWlnaHRNZWRpdW0sdj12b2lkIDA9PT15PzUwMDp5LFM9bi5odG1sRm9udFNpemUsRT12b2lkIDA9PT1TPzE2OlMseD1uLnVzZU5leHRWYXJpYW50cyx3PXZvaWQgMD09PXg/Qm9vbGVhbihsLnBvbnlmaWxsR2xvYmFsLl9fTVVJX1VTRV9ORVhUX1RZUE9HUkFQSFlfVkFSSUFOVFNfXyk6eCxrPShuLnN1cHByZXNzV2FybmluZyxuLmFsbFZhcmlhbnRzKSxfPSgwLGEuZGVmYXVsdCkobixbXCJmb250RmFtaWx5XCIsXCJmb250U2l6ZVwiLFwiZm9udFdlaWdodExpZ2h0XCIsXCJmb250V2VpZ2h0UmVndWxhclwiLFwiZm9udFdlaWdodE1lZGl1bVwiLFwiaHRtbEZvbnRTaXplXCIsXCJ1c2VOZXh0VmFyaWFudHNcIixcInN1cHByZXNzV2FybmluZ1wiLFwiYWxsVmFyaWFudHNcIl0pO3ZhciBUPWYvMTQsQT1mdW5jdGlvbihlKXtyZXR1cm5cIlwiLmNvbmNhdChlL0UqVCxcInJlbVwiKX0sQz1mdW5jdGlvbih0LG4scixhLGkpe3JldHVybigwLG8uZGVmYXVsdCkoe2NvbG9yOmUudGV4dC5wcmltYXJ5LGZvbnRGYW1pbHk6ZCxmb250V2VpZ2h0OnQsZm9udFNpemU6QShuKSxsaW5lSGVpZ2h0OnJ9LGQ9PT1jP3tsZXR0ZXJTcGFjaW5nOlwiXCIuY29uY2F0KHMoYS9uKSxcImVtXCIpfTp7fSxpLGspfSxPPXtoMTpDKGcsOTYsMSwtMS41KSxoMjpDKGcsNjAsMSwtLjUpLGgzOkMoYiw0OCwxLjA0LDApLGg0OkMoYiwzNCwxLjE3LC4yNSksaDU6QyhiLDI0LDEuMzMsMCksaDY6Qyh2LDIwLDEuNiwuMTUpLHN1YnRpdGxlMTpDKGIsMTYsMS43NSwuMTUpLHN1YnRpdGxlMjpDKHYsMTQsMS41NywuMSksYm9keTFOZXh0OkMoYiwxNiwxLjUsLjE1KSxib2R5Mk5leHQ6QyhiLDE0LDEuNSwuMTUpLGJ1dHRvbk5leHQ6Qyh2LDE0LDEuNzUsLjQsdSksY2FwdGlvbk5leHQ6QyhiLDEyLDEuNjYsLjQpLG92ZXJsaW5lOkMoYiwxMiwyLjY2LDEsdSl9LEk9e2Rpc3BsYXk0OigwLG8uZGVmYXVsdCkoe2ZvbnRTaXplOkEoMTEyKSxmb250V2VpZ2h0OmcsZm9udEZhbWlseTpkLGxldHRlclNwYWNpbmc6XCItLjA0ZW1cIixsaW5lSGVpZ2h0OlwiXCIuY29uY2F0KHMoMTI4LzExMiksXCJlbVwiKSxtYXJnaW5MZWZ0OlwiLS4wNGVtXCIsY29sb3I6ZS50ZXh0LnNlY29uZGFyeX0sayksZGlzcGxheTM6KDAsby5kZWZhdWx0KSh7Zm9udFNpemU6QSg1NiksZm9udFdlaWdodDpiLGZvbnRGYW1pbHk6ZCxsZXR0ZXJTcGFjaW5nOlwiLS4wMmVtXCIsbGluZUhlaWdodDpcIlwiLmNvbmNhdChzKDczLzU2KSxcImVtXCIpLG1hcmdpbkxlZnQ6XCItLjAyZW1cIixjb2xvcjplLnRleHQuc2Vjb25kYXJ5fSxrKSxkaXNwbGF5MjooMCxvLmRlZmF1bHQpKHtmb250U2l6ZTpBKDQ1KSxmb250V2VpZ2h0OmIsZm9udEZhbWlseTpkLGxpbmVIZWlnaHQ6XCJcIi5jb25jYXQocyg1MS80NSksXCJlbVwiKSxtYXJnaW5MZWZ0OlwiLS4wMmVtXCIsY29sb3I6ZS50ZXh0LnNlY29uZGFyeX0sayksZGlzcGxheTE6KDAsby5kZWZhdWx0KSh7Zm9udFNpemU6QSgzNCksZm9udFdlaWdodDpiLGZvbnRGYW1pbHk6ZCxsaW5lSGVpZ2h0OlwiXCIuY29uY2F0KHMoNDEvMzQpLFwiZW1cIiksY29sb3I6ZS50ZXh0LnNlY29uZGFyeX0sayksaGVhZGxpbmU6KDAsby5kZWZhdWx0KSh7Zm9udFNpemU6QSgyNCksZm9udFdlaWdodDpiLGZvbnRGYW1pbHk6ZCxsaW5lSGVpZ2h0OlwiXCIuY29uY2F0KHMoMzIuNS8yNCksXCJlbVwiKSxjb2xvcjplLnRleHQucHJpbWFyeX0sayksdGl0bGU6KDAsby5kZWZhdWx0KSh7Zm9udFNpemU6QSgyMSksZm9udFdlaWdodDp2LGZvbnRGYW1pbHk6ZCxsaW5lSGVpZ2h0OlwiXCIuY29uY2F0KHMoMjQuNS8yMSksXCJlbVwiKSxjb2xvcjplLnRleHQucHJpbWFyeX0sayksc3ViaGVhZGluZzooMCxvLmRlZmF1bHQpKHtmb250U2l6ZTpBKDE2KSxmb250V2VpZ2h0OmIsZm9udEZhbWlseTpkLGxpbmVIZWlnaHQ6XCJcIi5jb25jYXQocygxLjUpLFwiZW1cIiksY29sb3I6ZS50ZXh0LnByaW1hcnl9LGspLGJvZHkyOigwLG8uZGVmYXVsdCkoe2ZvbnRTaXplOkEoMTQpLGZvbnRXZWlnaHQ6dixmb250RmFtaWx5OmQsbGluZUhlaWdodDpcIlwiLmNvbmNhdChzKDI0LzE0KSxcImVtXCIpLGNvbG9yOmUudGV4dC5wcmltYXJ5fSxrKSxib2R5MTooMCxvLmRlZmF1bHQpKHtmb250U2l6ZTpBKDE0KSxmb250V2VpZ2h0OmIsZm9udEZhbWlseTpkLGxpbmVIZWlnaHQ6XCJcIi5jb25jYXQocygyMC41LzE0KSxcImVtXCIpLGNvbG9yOmUudGV4dC5wcmltYXJ5fSxrKSxjYXB0aW9uOigwLG8uZGVmYXVsdCkoe2ZvbnRTaXplOkEoMTIpLGZvbnRXZWlnaHQ6Yixmb250RmFtaWx5OmQsbGluZUhlaWdodDpcIlwiLmNvbmNhdChzKDEuMzc1KSxcImVtXCIpLGNvbG9yOmUudGV4dC5zZWNvbmRhcnl9LGspLGJ1dHRvbjooMCxvLmRlZmF1bHQpKHtmb250U2l6ZTpBKDE0KSx0ZXh0VHJhbnNmb3JtOlwidXBwZXJjYXNlXCIsZm9udFdlaWdodDp2LGZvbnRGYW1pbHk6ZCxjb2xvcjplLnRleHQucHJpbWFyeX0sayl9O3JldHVybigwLGkuZGVmYXVsdCkoKDAsby5kZWZhdWx0KSh7cHhUb1JlbTpBLHJvdW5kOnMsZm9udEZhbWlseTpkLGZvbnRTaXplOmYsZm9udFdlaWdodExpZ2h0OmcsZm9udFdlaWdodFJlZ3VsYXI6Yixmb250V2VpZ2h0TWVkaXVtOnZ9LEksTyx3P3tib2R5MTpPLmJvZHkxTmV4dCxib2R5MjpPLmJvZHkyTmV4dCxidXR0b246Ty5idXR0b25OZXh0LGNhcHRpb246Ty5jYXB0aW9uTmV4dH06e30se3VzZU5leHRWYXJpYW50czp3fSksXyx7Y2xvbmU6ITF9KX07dmFyIG89cihuKDQpKSxhPXIobig1KSksaT1yKG4oNDkpKSxsPShyKG4oMTcpKSxuKDcpKTtmdW5jdGlvbiBzKGUpe3JldHVybiBNYXRoLnJvdW5kKDFlNSplKS8xZTV9dmFyIHU9e3RleHRUcmFuc2Zvcm06XCJ1cHBlcmNhc2VcIn0sYz0nXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmJ30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9LjIsbz0uMTQsYT0uMTI7ZnVuY3Rpb24gaSgpe3JldHVybltcIlwiLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sXCJweCBcIikuY29uY2F0KGFyZ3VtZW50cy5sZW5ndGg8PTE/dm9pZCAwOmFyZ3VtZW50c1sxXSxcInB4IFwiKS5jb25jYXQoYXJndW1lbnRzLmxlbmd0aDw9Mj92b2lkIDA6YXJndW1lbnRzWzJdLFwicHggXCIpLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoPD0zP3ZvaWQgMDphcmd1bWVudHNbM10sXCJweCByZ2JhKDAsMCwwLFwiKS5jb25jYXQocixcIilcIiksXCJcIi5jb25jYXQoYXJndW1lbnRzLmxlbmd0aDw9ND92b2lkIDA6YXJndW1lbnRzWzRdLFwicHggXCIpLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoPD01P3ZvaWQgMDphcmd1bWVudHNbNV0sXCJweCBcIikuY29uY2F0KGFyZ3VtZW50cy5sZW5ndGg8PTY/dm9pZCAwOmFyZ3VtZW50c1s2XSxcInB4IFwiKS5jb25jYXQoYXJndW1lbnRzLmxlbmd0aDw9Nz92b2lkIDA6YXJndW1lbnRzWzddLFwicHggcmdiYSgwLDAsMCxcIikuY29uY2F0KG8sXCIpXCIpLFwiXCIuY29uY2F0KGFyZ3VtZW50cy5sZW5ndGg8PTg/dm9pZCAwOmFyZ3VtZW50c1s4XSxcInB4IFwiKS5jb25jYXQoYXJndW1lbnRzLmxlbmd0aDw9OT92b2lkIDA6YXJndW1lbnRzWzldLFwicHggXCIpLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoPD0xMD92b2lkIDA6YXJndW1lbnRzWzEwXSxcInB4IFwiKS5jb25jYXQoYXJndW1lbnRzLmxlbmd0aDw9MTE/dm9pZCAwOmFyZ3VtZW50c1sxMV0sXCJweCByZ2JhKDAsMCwwLFwiKS5jb25jYXQoYSxcIilcIildLmpvaW4oXCIsXCIpfXZhciBsPVtcIm5vbmVcIixpKDAsMSwzLDAsMCwxLDEsMCwwLDIsMSwtMSksaSgwLDEsNSwwLDAsMiwyLDAsMCwzLDEsLTIpLGkoMCwxLDgsMCwwLDMsNCwwLDAsMywzLC0yKSxpKDAsMiw0LC0xLDAsNCw1LDAsMCwxLDEwLDApLGkoMCwzLDUsLTEsMCw1LDgsMCwwLDEsMTQsMCksaSgwLDMsNSwtMSwwLDYsMTAsMCwwLDEsMTgsMCksaSgwLDQsNSwtMiwwLDcsMTAsMSwwLDIsMTYsMSksaSgwLDUsNSwtMywwLDgsMTAsMSwwLDMsMTQsMiksaSgwLDUsNiwtMywwLDksMTIsMSwwLDMsMTYsMiksaSgwLDYsNiwtMywwLDEwLDE0LDEsMCw0LDE4LDMpLGkoMCw2LDcsLTQsMCwxMSwxNSwxLDAsNCwyMCwzKSxpKDAsNyw4LC00LDAsMTIsMTcsMiwwLDUsMjIsNCksaSgwLDcsOCwtNCwwLDEzLDE5LDIsMCw1LDI0LDQpLGkoMCw3LDksLTQsMCwxNCwyMSwyLDAsNSwyNiw0KSxpKDAsOCw5LC01LDAsMTUsMjIsMiwwLDYsMjgsNSksaSgwLDgsMTAsLTUsMCwxNiwyNCwyLDAsNiwzMCw1KSxpKDAsOCwxMSwtNSwwLDE3LDI2LDIsMCw2LDMyLDUpLGkoMCw5LDExLC01LDAsMTgsMjgsMiwwLDcsMzQsNiksaSgwLDksMTIsLTYsMCwxOSwyOSwyLDAsNywzNiw2KSxpKDAsMTAsMTMsLTYsMCwyMCwzMSwzLDAsOCwzOCw3KSxpKDAsMTAsMTMsLTYsMCwyMSwzMywzLDAsOCw0MCw3KSxpKDAsMTAsMTQsLTYsMCwyMiwzNSwzLDAsOCw0Miw3KSxpKDAsMTEsMTQsLTcsMCwyMywzNiwzLDAsOSw0NCw4KSxpKDAsMTEsMTUsLTcsMCwyNCwzOCwzLDAsOSw0Niw4KV07dC5kZWZhdWx0PWx9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXtib3JkZXJSYWRpdXM6NH07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXt1bml0Ojh9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17bW9iaWxlU3RlcHBlcjoxZTMsYXBwQmFyOjExMDAsZHJhd2VyOjEyMDAsbW9kYWw6MTMwMCxzbmFja2JhcjoxNDAwLHRvb2x0aXA6MTUwMH07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDQpKSxhPShyKG4oMjkpKSxyKG4oMTcpKSxyKG4oNDkpKSk7ZnVuY3Rpb24gaShlLHQpe3JldHVybiB0fXZhciBsPWZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIGU7cmV0dXJue2NyZWF0ZTpmdW5jdGlvbihuLHIpe3ZhciBsPXQ/ZShuKTplO2lmKCFyfHwhbi5vdmVycmlkZXN8fCFuLm92ZXJyaWRlc1tyXSlyZXR1cm4gbDt2YXIgcz1uLm92ZXJyaWRlc1tyXSx1PSgwLG8uZGVmYXVsdCkoe30sbCk7cmV0dXJuIE9iamVjdC5rZXlzKHMpLmZvckVhY2goZnVuY3Rpb24oZSl7dVtlXT0oMCxhLmRlZmF1bHQpKHVbZV0sc1tlXSx7YXJyYXlNZXJnZTppfSl9KSx1fSxvcHRpb25zOnt9LHRoZW1pbmdFbmFibGVkOnR9fTt0LmRlZmF1bHQ9bH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50aGVtZSxuPWUubmFtZSxyPWUucHJvcHM7aWYoIXQucHJvcHN8fCFufHwhdC5wcm9wc1tuXSlyZXR1cm4gcjt2YXIgbyxhPXQucHJvcHNbbl07Zm9yKG8gaW4gYSl2b2lkIDA9PT1yW29dJiYocltvXT1hW29dKTtyZXR1cm4gcn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDEyKSkscz1yKG4oMTMpKSx1PXIobigxNCkpLGM9cihuKDE1KSksZD1yKG4oMTYpKSxwPXIobigwKSksZj0ocihuKDEpKSxyKG4oNikpKSxtPShyKG4oMTcpKSxuKDcpLHIobig0MDcpKSksZz1yKG4oOCkpLGg9bigzMSksYj0ocihuKDQxNSkpLG4oMjEpKTtuKDEwOCk7dmFyIHk9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/ZS5wYWxldHRlLmdyZXlbMzAwXTplLnBhbGV0dGUuZ3JleVs3MDBdLG49KDAsaC5mYWRlKShlLnBhbGV0dGUudGV4dC5wcmltYXJ5LC4yNik7cmV0dXJue3Jvb3Q6e2ZvbnRGYW1pbHk6ZS50eXBvZ3JhcGh5LmZvbnRGYW1pbHksZm9udFNpemU6ZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTMpLGRpc3BsYXk6XCJpbmxpbmUtZmxleFwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIixqdXN0aWZ5Q29udGVudDpcImNlbnRlclwiLGhlaWdodDozMixjb2xvcjplLnBhbGV0dGUuZ2V0Q29udHJhc3RUZXh0KHQpLGJhY2tncm91bmRDb2xvcjp0LGJvcmRlclJhZGl1czoxNix3aGl0ZVNwYWNlOlwibm93cmFwXCIsdHJhbnNpdGlvbjplLnRyYW5zaXRpb25zLmNyZWF0ZShbXCJiYWNrZ3JvdW5kLWNvbG9yXCIsXCJib3gtc2hhZG93XCJdKSxjdXJzb3I6XCJkZWZhdWx0XCIsb3V0bGluZTpcIm5vbmVcIix0ZXh0RGVjb3JhdGlvbjpcIm5vbmVcIixib3JkZXI6XCJub25lXCIscGFkZGluZzowLHZlcnRpY2FsQWxpZ246XCJtaWRkbGVcIixib3hTaXppbmc6XCJib3JkZXItYm94XCJ9LGNvbG9yUHJpbWFyeTp7YmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sY29sb3I6ZS5wYWxldHRlLnByaW1hcnkuY29udHJhc3RUZXh0fSxjb2xvclNlY29uZGFyeTp7YmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbixjb2xvcjplLnBhbGV0dGUuc2Vjb25kYXJ5LmNvbnRyYXN0VGV4dH0sY2xpY2thYmxlOntXZWJraXRUYXBIaWdobGlnaHRDb2xvcjpcInRyYW5zcGFyZW50XCIsY3Vyc29yOlwicG9pbnRlclwiLFwiJjpob3ZlciwgJjpmb2N1c1wiOntiYWNrZ3JvdW5kQ29sb3I6KDAsaC5lbXBoYXNpemUpKHQsLjA4KX0sXCImOmFjdGl2ZVwiOntib3hTaGFkb3c6ZS5zaGFkb3dzWzFdLGJhY2tncm91bmRDb2xvcjooMCxoLmVtcGhhc2l6ZSkodCwuMTIpfX0sY2xpY2thYmxlQ29sb3JQcmltYXJ5OntcIiY6aG92ZXIsICY6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOigwLGguZW1waGFzaXplKShlLnBhbGV0dGUucHJpbWFyeS5tYWluLC4wOCl9LFwiJjphY3RpdmVcIjp7YmFja2dyb3VuZENvbG9yOigwLGguZW1waGFzaXplKShlLnBhbGV0dGUucHJpbWFyeS5tYWluLC4xMil9fSxjbGlja2FibGVDb2xvclNlY29uZGFyeTp7XCImOmhvdmVyLCAmOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjooMCxoLmVtcGhhc2l6ZSkoZS5wYWxldHRlLnNlY29uZGFyeS5tYWluLC4wOCl9LFwiJjphY3RpdmVcIjp7YmFja2dyb3VuZENvbG9yOigwLGguZW1waGFzaXplKShlLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW4sLjEyKX19LGRlbGV0YWJsZTp7XCImOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjooMCxoLmVtcGhhc2l6ZSkodCwuMDgpfX0sZGVsZXRhYmxlQ29sb3JQcmltYXJ5OntcIiY6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOigwLGguZW1waGFzaXplKShlLnBhbGV0dGUucHJpbWFyeS5tYWluLC4yKX19LGRlbGV0YWJsZUNvbG9yU2Vjb25kYXJ5OntcIiY6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOigwLGguZW1waGFzaXplKShlLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW4sLjIpfX0sb3V0bGluZWQ6e2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCIsYm9yZGVyOlwiMXB4IHNvbGlkIFwiLmNvbmNhdChcImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT9cInJnYmEoMCwgMCwgMCwgMC4yMylcIjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMylcIiksXCIkY2xpY2thYmxlJjpob3ZlciwgJGNsaWNrYWJsZSY6Zm9jdXMsICRkZWxldGFibGUmOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjooMCxoLmZhZGUpKGUucGFsZXR0ZS50ZXh0LnByaW1hcnksZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpfSxcIiYgJGF2YXRhclwiOnttYXJnaW5MZWZ0Oi0xfX0sb3V0bGluZWRQcmltYXJ5Ontjb2xvcjplLnBhbGV0dGUucHJpbWFyeS5tYWluLGJvcmRlcjpcIjFweCBzb2xpZCBcIi5jb25jYXQoZS5wYWxldHRlLnByaW1hcnkubWFpbiksXCIkY2xpY2thYmxlJjpob3ZlciwgJGNsaWNrYWJsZSY6Zm9jdXMsICRkZWxldGFibGUmOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjooMCxoLmZhZGUpKGUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpfX0sb3V0bGluZWRTZWNvbmRhcnk6e2NvbG9yOmUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbixib3JkZXI6XCIxcHggc29saWQgXCIuY29uY2F0KGUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbiksXCIkY2xpY2thYmxlJjpob3ZlciwgJGNsaWNrYWJsZSY6Zm9jdXMsICRkZWxldGFibGUmOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjooMCxoLmZhZGUpKGUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbixlLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSl9fSxhdmF0YXI6e21hcmdpblJpZ2h0Oi00LHdpZHRoOjMyLGhlaWdodDozMixjb2xvcjpcImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT9lLnBhbGV0dGUuZ3JleVs3MDBdOmUucGFsZXR0ZS5ncmV5WzMwMF0sZm9udFNpemU6ZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTYpfSxhdmF0YXJDb2xvclByaW1hcnk6e2NvbG9yOmUucGFsZXR0ZS5wcmltYXJ5LmNvbnRyYXN0VGV4dCxiYWNrZ3JvdW5kQ29sb3I6ZS5wYWxldHRlLnByaW1hcnkuZGFya30sYXZhdGFyQ29sb3JTZWNvbmRhcnk6e2NvbG9yOmUucGFsZXR0ZS5zZWNvbmRhcnkuY29udHJhc3RUZXh0LGJhY2tncm91bmRDb2xvcjplLnBhbGV0dGUuc2Vjb25kYXJ5LmRhcmt9LGF2YXRhckNoaWxkcmVuOnt3aWR0aDoxOSxoZWlnaHQ6MTl9LGljb246e2NvbG9yOlwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlP2UucGFsZXR0ZS5ncmV5WzcwMF06ZS5wYWxldHRlLmdyZXlbMzAwXSxtYXJnaW5MZWZ0OjQsbWFyZ2luUmlnaHQ6LTh9LGljb25Db2xvclByaW1hcnk6e2NvbG9yOlwiaW5oZXJpdFwifSxpY29uQ29sb3JTZWNvbmRhcnk6e2NvbG9yOlwiaW5oZXJpdFwifSxsYWJlbDp7ZGlzcGxheTpcImZsZXhcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCIscGFkZGluZ0xlZnQ6MTIscGFkZGluZ1JpZ2h0OjEyLHVzZXJTZWxlY3Q6XCJub25lXCIsd2hpdGVTcGFjZTpcIm5vd3JhcFwiLGN1cnNvcjpcImluaGVyaXRcIn0sZGVsZXRlSWNvbjp7V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6XCJ0cmFuc3BhcmVudFwiLGNvbG9yOm4sY3Vyc29yOlwicG9pbnRlclwiLGhlaWdodDpcImF1dG9cIixtYXJnaW46XCIwIDRweCAwIC04cHhcIixcIiY6aG92ZXJcIjp7Y29sb3I6KDAsaC5mYWRlKShuLC40KX19LGRlbGV0ZUljb25Db2xvclByaW1hcnk6e2NvbG9yOigwLGguZmFkZSkoZS5wYWxldHRlLnByaW1hcnkuY29udHJhc3RUZXh0LC43KSxcIiY6aG92ZXIsICY6YWN0aXZlXCI6e2NvbG9yOmUucGFsZXR0ZS5wcmltYXJ5LmNvbnRyYXN0VGV4dH19LGRlbGV0ZUljb25Db2xvclNlY29uZGFyeTp7Y29sb3I6KDAsaC5mYWRlKShlLnBhbGV0dGUuc2Vjb25kYXJ5LmNvbnRyYXN0VGV4dCwuNyksXCImOmhvdmVyLCAmOmFjdGl2ZVwiOntjb2xvcjplLnBhbGV0dGUuc2Vjb25kYXJ5LmNvbnRyYXN0VGV4dH19LGRlbGV0ZUljb25PdXRsaW5lZENvbG9yUHJpbWFyeTp7Y29sb3I6KDAsaC5mYWRlKShlLnBhbGV0dGUucHJpbWFyeS5tYWluLC43KSxcIiY6aG92ZXIsICY6YWN0aXZlXCI6e2NvbG9yOmUucGFsZXR0ZS5wcmltYXJ5Lm1haW59fSxkZWxldGVJY29uT3V0bGluZWRDb2xvclNlY29uZGFyeTp7Y29sb3I6KDAsaC5mYWRlKShlLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW4sLjcpLFwiJjpob3ZlciwgJjphY3RpdmVcIjp7Y29sb3I6ZS5wYWxldHRlLnNlY29uZGFyeS5tYWlufX19fTt0LnN0eWxlcz15O3ZhciB2PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuOygwLGwuZGVmYXVsdCkodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4obj0oMCx1LmRlZmF1bHQpKHRoaXMsKGU9KDAsYy5kZWZhdWx0KSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSkuaGFuZGxlRGVsZXRlSWNvbkNsaWNrPWZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIHQ9bi5wcm9wcy5vbkRlbGV0ZTt0JiZ0KGUpfSxuLmhhbmRsZUtleURvd249ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcy5vbktleURvd247aWYodCYmdChlKSxlLmN1cnJlbnRUYXJnZXQ9PT1lLnRhcmdldCl7dmFyIHI9ZS5rZXk7XCIgXCIhPT1yJiZcIkVudGVyXCIhPT1yJiZcIkJhY2tzcGFjZVwiIT09ciYmXCJFc2NhcGVcIiE9PXJ8fGUucHJldmVudERlZmF1bHQoKX19LG4uaGFuZGxlS2V5VXA9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcyxyPXQub25DbGljayxvPXQub25EZWxldGUsYT10Lm9uS2V5VXA7aWYoYSYmYShlKSxlLmN1cnJlbnRUYXJnZXQ9PT1lLnRhcmdldCl7dmFyIGk9ZS5rZXk7IXJ8fFwiIFwiIT09aSYmXCJFbnRlclwiIT09aT9vJiZcIkJhY2tzcGFjZVwiPT09aT9vKGUpOlwiRXNjYXBlXCI9PT1pJiZuLmNoaXBSZWYmJm4uY2hpcFJlZi5ibHVyKCk6cihlKX19LG59cmV0dXJuKDAsZC5kZWZhdWx0KSh0LGUpLCgwLHMuZGVmYXVsdCkodCxbe2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLG49dGhpcy5wcm9wcyxyPW4uYXZhdGFyLGw9bi5jbGFzc2VzLHM9bi5jbGFzc05hbWUsdT1uLmNsaWNrYWJsZSxjPW4uY29sb3IsZD1uLmNvbXBvbmVudCxnPW4uZGVsZXRlSWNvbixoPW4uaWNvbix5PW4ubGFiZWwsdj1uLm9uQ2xpY2ssUz1uLm9uRGVsZXRlLEU9KG4ub25LZXlEb3duLG4ub25LZXlVcCxuLnRhYkluZGV4KSx4PW4udmFyaWFudCx3PSgwLGkuZGVmYXVsdCkobixbXCJhdmF0YXJcIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY2xpY2thYmxlXCIsXCJjb2xvclwiLFwiY29tcG9uZW50XCIsXCJkZWxldGVJY29uXCIsXCJpY29uXCIsXCJsYWJlbFwiLFwib25DbGlja1wiLFwib25EZWxldGVcIixcIm9uS2V5RG93blwiLFwib25LZXlVcFwiLFwidGFiSW5kZXhcIixcInZhcmlhbnRcIl0pLGs9ISghMT09PXV8fCF2KXx8dSxfPSgwLGYuZGVmYXVsdCkobC5yb290LChlPXt9LCgwLGEuZGVmYXVsdCkoZSxsW1wiY29sb3JcIi5jb25jYXQoKDAsYi5jYXBpdGFsaXplKShjKSldLFwiZGVmYXVsdFwiIT09YyksKDAsYS5kZWZhdWx0KShlLGwuY2xpY2thYmxlLGspLCgwLGEuZGVmYXVsdCkoZSxsW1wiY2xpY2thYmxlQ29sb3JcIi5jb25jYXQoKDAsYi5jYXBpdGFsaXplKShjKSldLGsmJlwiZGVmYXVsdFwiIT09YyksKDAsYS5kZWZhdWx0KShlLGwuZGVsZXRhYmxlLFMpLCgwLGEuZGVmYXVsdCkoZSxsW1wiZGVsZXRhYmxlQ29sb3JcIi5jb25jYXQoKDAsYi5jYXBpdGFsaXplKShjKSldLFMmJlwiZGVmYXVsdFwiIT09YyksKDAsYS5kZWZhdWx0KShlLGwub3V0bGluZWQsXCJvdXRsaW5lZFwiPT09eCksKDAsYS5kZWZhdWx0KShlLGwub3V0bGluZWRQcmltYXJ5LFwib3V0bGluZWRcIj09PXgmJlwicHJpbWFyeVwiPT09YyksKDAsYS5kZWZhdWx0KShlLGwub3V0bGluZWRTZWNvbmRhcnksXCJvdXRsaW5lZFwiPT09eCYmXCJzZWNvbmRhcnlcIj09PWMpLGUpLHMpLFQ9bnVsbDtpZihTKXt2YXIgQSxDPShBPXt9LCgwLGEuZGVmYXVsdCkoQSxsW1wiZGVsZXRlSWNvbkNvbG9yXCIuY29uY2F0KCgwLGIuY2FwaXRhbGl6ZSkoYykpXSxcImRlZmF1bHRcIiE9PWMmJlwib3V0bGluZWRcIiE9PXgpLCgwLGEuZGVmYXVsdCkoQSxsW1wiZGVsZXRlSWNvbk91dGxpbmVkQ29sb3JcIi5jb25jYXQoKDAsYi5jYXBpdGFsaXplKShjKSldLFwiZGVmYXVsdFwiIT09YyYmXCJvdXRsaW5lZFwiPT09eCksQSk7VD1nJiZwLmRlZmF1bHQuaXNWYWxpZEVsZW1lbnQoZyk/cC5kZWZhdWx0LmNsb25lRWxlbWVudChnLHtjbGFzc05hbWU6KDAsZi5kZWZhdWx0KShnLnByb3BzLmNsYXNzTmFtZSxsLmRlbGV0ZUljb24sQyksb25DbGljazp0aGlzLmhhbmRsZURlbGV0ZUljb25DbGlja30pOnAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KG0uZGVmYXVsdCx7Y2xhc3NOYW1lOigwLGYuZGVmYXVsdCkobC5kZWxldGVJY29uLEMpLG9uQ2xpY2s6dGhpcy5oYW5kbGVEZWxldGVJY29uQ2xpY2t9KX12YXIgTz1udWxsO3ImJnAuZGVmYXVsdC5pc1ZhbGlkRWxlbWVudChyKSYmKE89cC5kZWZhdWx0LmNsb25lRWxlbWVudChyLHtjbGFzc05hbWU6KDAsZi5kZWZhdWx0KShsLmF2YXRhcixyLnByb3BzLmNsYXNzTmFtZSwoMCxhLmRlZmF1bHQpKHt9LGxbXCJhdmF0YXJDb2xvclwiLmNvbmNhdCgoMCxiLmNhcGl0YWxpemUpKGMpKV0sXCJkZWZhdWx0XCIhPT1jKSksY2hpbGRyZW5DbGFzc05hbWU6KDAsZi5kZWZhdWx0KShsLmF2YXRhckNoaWxkcmVuLHIucHJvcHMuY2hpbGRyZW5DbGFzc05hbWUpfSkpO3ZhciBJPW51bGw7aCYmcC5kZWZhdWx0LmlzVmFsaWRFbGVtZW50KGgpJiYoST1wLmRlZmF1bHQuY2xvbmVFbGVtZW50KGgse2NsYXNzTmFtZTooMCxmLmRlZmF1bHQpKGwuaWNvbixoLnByb3BzLmNsYXNzTmFtZSwoMCxhLmRlZmF1bHQpKHt9LGxbXCJpY29uQ29sb3JcIi5jb25jYXQoKDAsYi5jYXBpdGFsaXplKShjKSldLFwiZGVmYXVsdFwiIT09YykpfSkpO3ZhciBOPUU7cmV0dXJuIE58fChOPXZ8fFN8fGs/MDotMSkscC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZCwoMCxvLmRlZmF1bHQpKHtyb2xlOlwiYnV0dG9uXCIsY2xhc3NOYW1lOl8sdGFiSW5kZXg6TixvbkNsaWNrOnYsb25LZXlEb3duOnRoaXMuaGFuZGxlS2V5RG93bixvbktleVVwOnRoaXMuaGFuZGxlS2V5VXAscmVmOmZ1bmN0aW9uKGUpe3QuY2hpcFJlZj1lfX0sdyksT3x8SSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOmwubGFiZWx9LHkpLFQpfX1dKSx0fShwLmRlZmF1bHQuQ29tcG9uZW50KTt2LmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OlwiZGl2XCIsY29sb3I6XCJkZWZhdWx0XCIsdmFyaWFudDpcImRlZmF1bHRcIn07dmFyIFM9KDAsZy5kZWZhdWx0KSh5LHtuYW1lOlwiTXVpQ2hpcFwifSkodik7dC5kZWZhdWx0PVN9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDApKSxhPXIobigxMjkpKSxpPXIobig1MCkpLGw9by5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIse2Q6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptNSAxMy41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCJ9KSxzPWZ1bmN0aW9uKGUpe3JldHVybiBvLmRlZmF1bHQuY3JlYXRlRWxlbWVudChpLmRlZmF1bHQsZSxsKX07KHM9KDAsYS5kZWZhdWx0KShzKSkubXVpTmFtZT1cIlN2Z0ljb25cIjt2YXIgdT1zO3QuZGVmYXVsdD11fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oNDA5KSksYT1uKDApLGk9KHIobigxMzApKSxyKG4oMTMxKSksZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPSgwLGEuY3JlYXRlRmFjdG9yeSkodCk7cmV0dXJuIGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9KDAsby5kZWZhdWx0KShyLHQpO3ZhciBhPXIucHJvdG90eXBlO3JldHVybiBhLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gZSh0aGlzLnByb3BzLHQpfSxhLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucHJvcHMpfSxyfShhLkNvbXBvbmVudCl9fSk7dC5kZWZhdWx0PWl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLl9fcHJvdG9fXz10fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuW2VdPXQsbn19O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTplP2UuZGlzcGxheU5hbWV8fGUubmFtZXx8XCJDb21wb25lbnRcIjp2b2lkIDB9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oNDEzKSkuZGVmYXVsdDt0LmRlZmF1bHQ9b30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MCE9PXR8fDEvZT09MS90OmUhPWUmJnQhPXR9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYobyhlLHQpKXJldHVybiEwO2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlfHxudWxsPT09ZXx8XCJvYmplY3RcIiE9dHlwZW9mIHR8fG51bGw9PT10KXJldHVybiExO3ZhciBuPU9iamVjdC5rZXlzKGUpLGE9T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1hLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKylpZighci5jYWxsKHQsbltpXSl8fCFvKGVbbltpXV0sdFtuW2ldXSkpcmV0dXJuITE7cmV0dXJuITB9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShuKDcpLHIobig4KSkpLGM9bigyMSksZD1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDp7dXNlclNlbGVjdDpcIm5vbmVcIix3aWR0aDpcIjFlbVwiLGhlaWdodDpcIjFlbVwiLGRpc3BsYXk6XCJpbmxpbmUtYmxvY2tcIixmaWxsOlwiY3VycmVudENvbG9yXCIsZmxleFNocmluazowLGZvbnRTaXplOjI0LHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoXCJmaWxsXCIse2R1cmF0aW9uOmUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlcn0pfSxjb2xvclByaW1hcnk6e2NvbG9yOmUucGFsZXR0ZS5wcmltYXJ5Lm1haW59LGNvbG9yU2Vjb25kYXJ5Ontjb2xvcjplLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW59LGNvbG9yQWN0aW9uOntjb2xvcjplLnBhbGV0dGUuYWN0aW9uLmFjdGl2ZX0sY29sb3JFcnJvcjp7Y29sb3I6ZS5wYWxldHRlLmVycm9yLm1haW59LGNvbG9yRGlzYWJsZWQ6e2NvbG9yOmUucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWR9LGZvbnRTaXplSW5oZXJpdDp7Zm9udFNpemU6XCJpbmhlcml0XCJ9LGZvbnRTaXplU21hbGw6e2ZvbnRTaXplOjIwfSxmb250U2l6ZUxhcmdlOntmb250U2l6ZTozNX19fTtmdW5jdGlvbiBwKGUpe3ZhciB0LG49ZS5jaGlsZHJlbixyPWUuY2xhc3Nlcyx1PWUuY2xhc3NOYW1lLGQ9ZS5jb2xvcixwPWUuY29tcG9uZW50LGY9ZS5mb250U2l6ZSxtPWUubmF0aXZlQ29sb3IsZz1lLnRpdGxlQWNjZXNzLGg9ZS52aWV3Qm94LGI9KDAsaS5kZWZhdWx0KShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbG9yXCIsXCJjb21wb25lbnRcIixcImZvbnRTaXplXCIsXCJuYXRpdmVDb2xvclwiLFwidGl0bGVBY2Nlc3NcIixcInZpZXdCb3hcIl0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChwLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHIucm9vdCwodD17fSwoMCxhLmRlZmF1bHQpKHQscltcImNvbG9yXCIuY29uY2F0KCgwLGMuY2FwaXRhbGl6ZSkoZCkpXSxcImluaGVyaXRcIiE9PWQpLCgwLGEuZGVmYXVsdCkodCxyW1wiZm9udFNpemVcIi5jb25jYXQoKDAsYy5jYXBpdGFsaXplKShmKSldLFwiZGVmYXVsdFwiIT09ZiksdCksdSksZm9jdXNhYmxlOlwiZmFsc2VcIix2aWV3Qm94OmgsY29sb3I6bSxcImFyaWEtaGlkZGVuXCI6Zz9cImZhbHNlXCI6XCJ0cnVlXCIscm9sZTpnP1wiaW1nXCI6XCJwcmVzZW50YXRpb25cIn0sYiksbixnP2wuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwidGl0bGVcIixudWxsLGcpOm51bGwpfXQuc3R5bGVzPWQscC5kZWZhdWx0UHJvcHM9e2NvbG9yOlwiaW5oZXJpdFwiLGNvbXBvbmVudDpcInN2Z1wiLGZvbnRTaXplOlwiZGVmYXVsdFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIn0scC5tdWlOYW1lPVwiU3ZnSWNvblwiO3ZhciBmPSgwLHUuZGVmYXVsdCkoZCx7bmFtZTpcIk11aVN2Z0ljb25cIn0pKHApO3QuZGVmYXVsdD1mfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj1mdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBudWxsfTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMTIpKSxzPXIobigxMykpLHU9cihuKDE0KSksYz1yKG4oMTUpKSxkPXIobigxNikpLHA9cihuKDApKSxmPXIobig2KSksbT0ocihuKDEpKSxyKG4oNTEpKSksZz0obig3KSxyKG4oOCkpKSxoPW4oNjgpLGI9big3MCkseT1mdW5jdGlvbihlKXtyZXR1cm57Y29udGFpbmVyOntoZWlnaHQ6MCxvdmVyZmxvdzpcImhpZGRlblwiLHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoXCJoZWlnaHRcIil9LGVudGVyZWQ6e2hlaWdodDpcImF1dG9cIixvdmVyZmxvdzpcInZpc2libGVcIn0sd3JhcHBlcjp7ZGlzcGxheTpcImZsZXhcIn0sd3JhcHBlcklubmVyOnt3aWR0aDpcIjEwMCVcIn19fTt0LnN0eWxlcz15O3ZhciB2PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuOygwLGwuZGVmYXVsdCkodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4obj0oMCx1LmRlZmF1bHQpKHRoaXMsKGU9KDAsYy5kZWZhdWx0KSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSkuaGFuZGxlRW50ZXI9ZnVuY3Rpb24oZSl7ZS5zdHlsZS5oZWlnaHQ9bi5wcm9wcy5jb2xsYXBzZWRIZWlnaHQsbi5wcm9wcy5vbkVudGVyJiZuLnByb3BzLm9uRW50ZXIoZSl9LG4uaGFuZGxlRW50ZXJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcyxyPXQudGltZW91dCxvPXQudGhlbWUsYT1uLndyYXBwZXJSZWY/bi53cmFwcGVyUmVmLmNsaWVudEhlaWdodDowLGk9KDAsYi5nZXRUcmFuc2l0aW9uUHJvcHMpKG4ucHJvcHMse21vZGU6XCJlbnRlclwifSkuZHVyYXRpb247aWYoXCJhdXRvXCI9PT1yKXt2YXIgbD1vLnRyYW5zaXRpb25zLmdldEF1dG9IZWlnaHREdXJhdGlvbihhKTtlLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj1cIlwiLmNvbmNhdChsLFwibXNcIiksbi5hdXRvVHJhbnNpdGlvbkR1cmF0aW9uPWx9ZWxzZSBlLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj1cInN0cmluZ1wiPT10eXBlb2YgaT9pOlwiXCIuY29uY2F0KGksXCJtc1wiKTtlLnN0eWxlLmhlaWdodD1cIlwiLmNvbmNhdChhLFwicHhcIiksbi5wcm9wcy5vbkVudGVyaW5nJiZuLnByb3BzLm9uRW50ZXJpbmcoZSl9LG4uaGFuZGxlRW50ZXJlZD1mdW5jdGlvbihlKXtlLnN0eWxlLmhlaWdodD1cImF1dG9cIixuLnByb3BzLm9uRW50ZXJlZCYmbi5wcm9wcy5vbkVudGVyZWQoZSl9LG4uaGFuZGxlRXhpdD1mdW5jdGlvbihlKXt2YXIgdD1uLndyYXBwZXJSZWY/bi53cmFwcGVyUmVmLmNsaWVudEhlaWdodDowO2Uuc3R5bGUuaGVpZ2h0PVwiXCIuY29uY2F0KHQsXCJweFwiKSxuLnByb3BzLm9uRXhpdCYmbi5wcm9wcy5vbkV4aXQoZSl9LG4uaGFuZGxlRXhpdGluZz1mdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLHI9dC50aW1lb3V0LG89dC50aGVtZSxhPW4ud3JhcHBlclJlZj9uLndyYXBwZXJSZWYuY2xpZW50SGVpZ2h0OjAsaT0oMCxiLmdldFRyYW5zaXRpb25Qcm9wcykobi5wcm9wcyx7bW9kZTpcImV4aXRcIn0pLmR1cmF0aW9uO2lmKFwiYXV0b1wiPT09cil7dmFyIGw9by50cmFuc2l0aW9ucy5nZXRBdXRvSGVpZ2h0RHVyYXRpb24oYSk7ZS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249XCJcIi5jb25jYXQobCxcIm1zXCIpLG4uYXV0b1RyYW5zaXRpb25EdXJhdGlvbj1sfWVsc2UgZS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249XCJzdHJpbmdcIj09dHlwZW9mIGk/aTpcIlwiLmNvbmNhdChpLFwibXNcIik7ZS5zdHlsZS5oZWlnaHQ9bi5wcm9wcy5jb2xsYXBzZWRIZWlnaHQsbi5wcm9wcy5vbkV4aXRpbmcmJm4ucHJvcHMub25FeGl0aW5nKGUpfSxuLmFkZEVuZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7XCJhdXRvXCI9PT1uLnByb3BzLnRpbWVvdXQmJihuLnRpbWVyPXNldFRpbWVvdXQodCxuLmF1dG9UcmFuc2l0aW9uRHVyYXRpb258fDApKX0sbn1yZXR1cm4oMCxkLmRlZmF1bHQpKHQsZSksKDAscy5kZWZhdWx0KSh0LFt7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5jaGlsZHJlbixyPXQuY2xhc3NlcyxsPXQuY2xhc3NOYW1lLHM9dC5jb2xsYXBzZWRIZWlnaHQsdT10LmNvbXBvbmVudCxjPSh0Lm9uRW50ZXIsdC5vbkVudGVyZWQsdC5vbkVudGVyaW5nLHQub25FeGl0LHQub25FeGl0aW5nLHQuc3R5bGUpLGQ9KHQudGhlbWUsdC50aW1lb3V0KSxnPSgwLGkuZGVmYXVsdCkodCxbXCJjaGlsZHJlblwiLFwiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb2xsYXBzZWRIZWlnaHRcIixcImNvbXBvbmVudFwiLFwib25FbnRlclwiLFwib25FbnRlcmVkXCIsXCJvbkVudGVyaW5nXCIsXCJvbkV4aXRcIixcIm9uRXhpdGluZ1wiLFwic3R5bGVcIixcInRoZW1lXCIsXCJ0aW1lb3V0XCJdKTtyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobS5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe29uRW50ZXI6dGhpcy5oYW5kbGVFbnRlcixvbkVudGVyZWQ6dGhpcy5oYW5kbGVFbnRlcmVkLG9uRW50ZXJpbmc6dGhpcy5oYW5kbGVFbnRlcmluZyxvbkV4aXQ6dGhpcy5oYW5kbGVFeGl0LG9uRXhpdGluZzp0aGlzLmhhbmRsZUV4aXRpbmcsYWRkRW5kTGlzdGVuZXI6dGhpcy5hZGRFbmRMaXN0ZW5lcix0aW1lb3V0OlwiYXV0b1wiPT09ZD9udWxsOmR9LGcpLGZ1bmN0aW9uKHQsaSl7cmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHUsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLGYuZGVmYXVsdCkoci5jb250YWluZXIsKDAsYS5kZWZhdWx0KSh7fSxyLmVudGVyZWQsXCJlbnRlcmVkXCI9PT10KSxsKSxzdHlsZTooMCxvLmRlZmF1bHQpKHt9LGMse21pbkhlaWdodDpzfSl9LGkpLHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpyLndyYXBwZXIscmVmOmZ1bmN0aW9uKHQpe2Uud3JhcHBlclJlZj10fX0scC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOnIud3JhcHBlcklubmVyfSxuKSkpfSl9fV0pLHR9KHAuZGVmYXVsdC5Db21wb25lbnQpO3YuZGVmYXVsdFByb3BzPXtjb2xsYXBzZWRIZWlnaHQ6XCIwcHhcIixjb21wb25lbnQ6XCJkaXZcIix0aW1lb3V0OmguZHVyYXRpb24uc3RhbmRhcmR9LHYubXVpU3VwcG9ydEF1dG89ITA7dmFyIFM9KDAsZy5kZWZhdWx0KSh5LHt3aXRoVGhlbWU6ITAsbmFtZTpcIk11aUNvbGxhcHNlXCJ9KSh2KTt0LmRlZmF1bHQ9U30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3QuX19lc01vZHVsZT0hMCx0LmNsYXNzTmFtZXNTaGFwZT10LnRpbWVvdXRzU2hhcGU9dm9pZCAwO3ZhciByOyhyPW4oMSkpJiZyLl9fZXNNb2R1bGU7dC50aW1lb3V0c1NoYXBlPW51bGw7dC5jbGFzc05hbWVzU2hhcGU9bnVsbH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMCkpLHM9KHIobigxKSkscihuKDYpKSksdT0obig3KSxyKG4oOCkpKSxjPW4oMzEpLGQ9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e2hlaWdodDoxLG1hcmdpbjowLGJvcmRlcjpcIm5vbmVcIixmbGV4U2hyaW5rOjAsYmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5kaXZpZGVyfSxhYnNvbHV0ZTp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLGJvdHRvbTowLGxlZnQ6MCx3aWR0aDpcIjEwMCVcIn0saW5zZXQ6e21hcmdpbkxlZnQ6NzJ9LGxpZ2h0OntiYWNrZ3JvdW5kQ29sb3I6KDAsYy5mYWRlKShlLnBhbGV0dGUuZGl2aWRlciwuMDgpfSxtaWRkbGU6e21hcmdpbkxlZnQ6MiplLnNwYWNpbmcudW5pdCxtYXJnaW5SaWdodDoyKmUuc3BhY2luZy51bml0fX19O2Z1bmN0aW9uIHAoZSl7dmFyIHQsbj1lLmFic29sdXRlLHI9ZS5jbGFzc2VzLHU9ZS5jbGFzc05hbWUsYz1lLmNvbXBvbmVudCxkPWUuaW5zZXQscD1lLmxpZ2h0LGY9ZS52YXJpYW50LG09KDAsaS5kZWZhdWx0KShlLFtcImFic29sdXRlXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbXBvbmVudFwiLFwiaW5zZXRcIixcImxpZ2h0XCIsXCJ2YXJpYW50XCJdKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYywoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KShyLnJvb3QsKHQ9e30sKDAsYS5kZWZhdWx0KSh0LHIuaW5zZXQsZHx8XCJpbnNldFwiPT09ZiksKDAsYS5kZWZhdWx0KSh0LHIubWlkZGxlLFwibWlkZGxlXCI9PT1mKSwoMCxhLmRlZmF1bHQpKHQsci5hYnNvbHV0ZSxuKSwoMCxhLmRlZmF1bHQpKHQsci5saWdodCxwKSx0KSx1KX0sbSkpfXQuc3R5bGVzPWQscC5kZWZhdWx0UHJvcHM9e2Fic29sdXRlOiExLGNvbXBvbmVudDpcImhyXCIsbGlnaHQ6ITEsdmFyaWFudDpcImZ1bGxXaWR0aFwifTt2YXIgZj0oMCx1LmRlZmF1bHQpKGQse25hbWU6XCJNdWlEaXZpZGVyXCJ9KShwKTt0LmRlZmF1bHQ9Zn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMTIpKSxzPXIobigxNCkpLHU9cihuKDE1KSksYz1yKG4oMTMpKSxkPXIobigxNikpLHA9cihuKDApKSxmPShyKG4oMSkpLHIobig2KSkpLG09KG4oNyksbig3MikpLGc9cihuKDgpKSxoPW4oMjEpLGI9bigzMikseT1yKG4oNzMpKSx2PXtyb290OntkaXNwbGF5OlwiaW5saW5lLWZsZXhcIixmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIscG9zaXRpb246XCJyZWxhdGl2ZVwiLG1pbldpZHRoOjAscGFkZGluZzowLG1hcmdpbjowLGJvcmRlcjowLHZlcnRpY2FsQWxpZ246XCJ0b3BcIn0sbWFyZ2luTm9ybWFsOnttYXJnaW5Ub3A6MTYsbWFyZ2luQm90dG9tOjh9LG1hcmdpbkRlbnNlOnttYXJnaW5Ub3A6OCxtYXJnaW5Cb3R0b206NH0sZnVsbFdpZHRoOnt3aWR0aDpcIjEwMCVcIn19O3Quc3R5bGVzPXY7dmFyIFM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbjsoMCxsLmRlZmF1bHQpKHRoaXMsdCksKG49KDAscy5kZWZhdWx0KSh0aGlzLCgwLHUuZGVmYXVsdCkodCkuY2FsbCh0aGlzKSkpLmhhbmRsZUZvY3VzPWZ1bmN0aW9uKCl7bi5zZXRTdGF0ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5mb2N1c2VkP251bGw6e2ZvY3VzZWQ6ITB9fSl9LG4uaGFuZGxlQmx1cj1mdW5jdGlvbigpe24uc2V0U3RhdGUoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm9jdXNlZD97Zm9jdXNlZDohMX06bnVsbH0pfSxuLmhhbmRsZURpcnR5PWZ1bmN0aW9uKCl7bi5zdGF0ZS5maWxsZWR8fG4uc2V0U3RhdGUoe2ZpbGxlZDohMH0pfSxuLmhhbmRsZUNsZWFuPWZ1bmN0aW9uKCl7bi5zdGF0ZS5maWxsZWQmJm4uc2V0U3RhdGUoe2ZpbGxlZDohMX0pfSxuLnN0YXRlPXthZG9ybmVkU3RhcnQ6ITEsZmlsbGVkOiExLGZvY3VzZWQ6ITF9O3ZhciByPWUuY2hpbGRyZW47cmV0dXJuIHImJnAuZGVmYXVsdC5DaGlsZHJlbi5mb3JFYWNoKHIsZnVuY3Rpb24oZSl7aWYoKDAsYi5pc011aUVsZW1lbnQpKGUsW1wiSW5wdXRcIixcIlNlbGVjdFwiXSkpeygwLG0uaXNGaWxsZWQpKGUucHJvcHMsITApJiYobi5zdGF0ZS5maWxsZWQ9ITApO3ZhciB0PSgwLGIuaXNNdWlFbGVtZW50KShlLFtcIlNlbGVjdFwiXSk/ZS5wcm9wcy5pbnB1dDplO3QmJigwLG0uaXNBZG9ybmVkU3RhcnQpKHQucHJvcHMpJiYobi5zdGF0ZS5hZG9ybmVkU3RhcnQ9ITApfX0pLG59cmV0dXJuKDAsZC5kZWZhdWx0KSh0LGUpLCgwLGMuZGVmYXVsdCkodCxudWxsLFt7a2V5OlwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5kaXNhYmxlZCYmdC5mb2N1c2VkP3tmb2N1c2VkOiExfTpudWxsfX1dKSwoMCxjLmRlZmF1bHQpKHQsW3trZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5wcm9wcyxuPXQuY2xhc3NlcyxyPXQuY2xhc3NOYW1lLGw9dC5jb21wb25lbnQscz10LmRpc2FibGVkLHU9dC5lcnJvcixjPXQuZnVsbFdpZHRoLGQ9dC5tYXJnaW4sbT10LnJlcXVpcmVkLGc9dC52YXJpYW50LGI9KDAsaS5kZWZhdWx0KSh0LFtcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29tcG9uZW50XCIsXCJkaXNhYmxlZFwiLFwiZXJyb3JcIixcImZ1bGxXaWR0aFwiLFwibWFyZ2luXCIsXCJyZXF1aXJlZFwiLFwidmFyaWFudFwiXSksdj10aGlzLnN0YXRlLFM9e2Fkb3JuZWRTdGFydDp2LmFkb3JuZWRTdGFydCxkaXNhYmxlZDpzLGVycm9yOnUsZmlsbGVkOnYuZmlsbGVkLGZvY3VzZWQ6di5mb2N1c2VkLG1hcmdpbjpkLG9uQmx1cjp0aGlzLmhhbmRsZUJsdXIsb25FbXB0eTp0aGlzLmhhbmRsZUNsZWFuLG9uRmlsbGVkOnRoaXMuaGFuZGxlRGlydHksb25Gb2N1czp0aGlzLmhhbmRsZUZvY3VzLHJlcXVpcmVkOm0sdmFyaWFudDpnfTtyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoeS5kZWZhdWx0LlByb3ZpZGVyLHt2YWx1ZTpTfSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTooMCxmLmRlZmF1bHQpKG4ucm9vdCwoZT17fSwoMCxhLmRlZmF1bHQpKGUsbltcIm1hcmdpblwiLmNvbmNhdCgoMCxoLmNhcGl0YWxpemUpKGQpKV0sXCJub25lXCIhPT1kKSwoMCxhLmRlZmF1bHQpKGUsbi5mdWxsV2lkdGgsYyksZSkscil9LGIpKSl9fV0pLHR9KHAuZGVmYXVsdC5Db21wb25lbnQpO1MuZGVmYXVsdFByb3BzPXtjb21wb25lbnQ6XCJkaXZcIixkaXNhYmxlZDohMSxlcnJvcjohMSxmdWxsV2lkdGg6ITEsbWFyZ2luOlwibm9uZVwiLHJlcXVpcmVkOiExLHZhcmlhbnQ6XCJzdGFuZGFyZFwifTt2YXIgRT0oMCxnLmRlZmF1bHQpKHYse25hbWU6XCJNdWlGb3JtQ29udHJvbFwifSkoUyk7dC5kZWZhdWx0PUV9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9cihuKDI1KSksYz1yKG4oOCkpLGQ9cihuKDUyKSkscD1uKDIxKSxmPWZ1bmN0aW9uKGUpe3JldHVybntyb290OntkaXNwbGF5OlwiaW5saW5lLWZsZXhcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCIsY3Vyc29yOlwicG9pbnRlclwiLHZlcnRpY2FsQWxpZ246XCJtaWRkbGVcIixXZWJraXRUYXBIaWdobGlnaHRDb2xvcjpcInRyYW5zcGFyZW50XCIsbWFyZ2luTGVmdDotMTQsbWFyZ2luUmlnaHQ6MTYsXCImJGRpc2FibGVkXCI6e2N1cnNvcjpcImRlZmF1bHRcIn19LGxhYmVsUGxhY2VtZW50U3RhcnQ6e2ZsZXhEaXJlY3Rpb246XCJyb3ctcmV2ZXJzZVwiLG1hcmdpbkxlZnQ6MTYsbWFyZ2luUmlnaHQ6LTE0fSxsYWJlbFBsYWNlbWVudFRvcDp7ZmxleERpcmVjdGlvbjpcImNvbHVtbi1yZXZlcnNlXCIsbWFyZ2luTGVmdDoxNn0sbGFiZWxQbGFjZW1lbnRCb3R0b206e2ZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixtYXJnaW5MZWZ0OjE2fSxkaXNhYmxlZDp7fSxsYWJlbDp7XCImJGRpc2FibGVkXCI6e2NvbG9yOmUucGFsZXR0ZS50ZXh0LmRpc2FibGVkfX19fTtmdW5jdGlvbiBtKGUpe2UuY2hlY2tlZDt2YXIgdCxuPWUuY2xhc3NlcyxyPWUuY2xhc3NOYW1lLHU9ZS5jb250cm9sLGM9ZS5kaXNhYmxlZCxmPShlLmlucHV0UmVmLGUubGFiZWwpLG09ZS5sYWJlbFBsYWNlbWVudCxnPWUubXVpRm9ybUNvbnRyb2wsaD0oZS5uYW1lLGUub25DaGFuZ2UsZS52YWx1ZSwoMCxpLmRlZmF1bHQpKGUsW1wiY2hlY2tlZFwiLFwiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb250cm9sXCIsXCJkaXNhYmxlZFwiLFwiaW5wdXRSZWZcIixcImxhYmVsXCIsXCJsYWJlbFBsYWNlbWVudFwiLFwibXVpRm9ybUNvbnRyb2xcIixcIm5hbWVcIixcIm9uQ2hhbmdlXCIsXCJ2YWx1ZVwiXSkpLGI9Yzt2b2lkIDA9PT1iJiZ2b2lkIDAhPT11LnByb3BzLmRpc2FibGVkJiYoYj11LnByb3BzLmRpc2FibGVkKSx2b2lkIDA9PT1iJiZnJiYoYj1nLmRpc2FibGVkKTt2YXIgeT17ZGlzYWJsZWQ6Yn07cmV0dXJuW1wiY2hlY2tlZFwiLFwibmFtZVwiLFwib25DaGFuZ2VcIixcInZhbHVlXCIsXCJpbnB1dFJlZlwiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZvaWQgMD09PXUucHJvcHNbdF0mJnZvaWQgMCE9PWVbdF0mJih5W3RdPWVbdF0pfSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKG4ucm9vdCwodD17fSwoMCxhLmRlZmF1bHQpKHQsbltcImxhYmVsUGxhY2VtZW50XCIuY29uY2F0KCgwLHAuY2FwaXRhbGl6ZSkobSkpXSxcImVuZFwiIT09bSksKDAsYS5kZWZhdWx0KSh0LG4uZGlzYWJsZWQsYiksdCkscil9LGgpLGwuZGVmYXVsdC5jbG9uZUVsZW1lbnQodSx5KSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLmRlZmF1bHQse2NvbXBvbmVudDpcInNwYW5cIixjbGFzc05hbWU6KDAscy5kZWZhdWx0KShuLmxhYmVsLCgwLGEuZGVmYXVsdCkoe30sbi5kaXNhYmxlZCxiKSl9LGYpKX10LnN0eWxlcz1mLG0uZGVmYXVsdFByb3BzPXtsYWJlbFBsYWNlbWVudDpcImVuZFwifTt2YXIgZz0oMCxjLmRlZmF1bHQpKGYse25hbWU6XCJNdWlGb3JtQ29udHJvbExhYmVsXCJ9KSgoMCx1LmRlZmF1bHQpKG0pKTt0LmRlZmF1bHQ9Z30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMCkpLHM9KHIobigxKSkscihuKDYpKSksdT0obig3KSxyKG4oOCkpKSxjPW4oMjEpLGQ9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e2Rpc3BsYXk6XCJibG9ja1wiLG1hcmdpbjowfSxkaXNwbGF5NDplLnR5cG9ncmFwaHkuZGlzcGxheTQsZGlzcGxheTM6ZS50eXBvZ3JhcGh5LmRpc3BsYXkzLGRpc3BsYXkyOmUudHlwb2dyYXBoeS5kaXNwbGF5MixkaXNwbGF5MTplLnR5cG9ncmFwaHkuZGlzcGxheTEsaGVhZGxpbmU6ZS50eXBvZ3JhcGh5LmhlYWRsaW5lLHRpdGxlOmUudHlwb2dyYXBoeS50aXRsZSxzdWJoZWFkaW5nOmUudHlwb2dyYXBoeS5zdWJoZWFkaW5nLGJvZHkyOmUudHlwb2dyYXBoeS5ib2R5Mixib2R5MTplLnR5cG9ncmFwaHkuYm9keTEsY2FwdGlvbjplLnR5cG9ncmFwaHkuY2FwdGlvbixidXR0b246ZS50eXBvZ3JhcGh5LmJ1dHRvbixoMTplLnR5cG9ncmFwaHkuaDEsaDI6ZS50eXBvZ3JhcGh5LmgyLGgzOmUudHlwb2dyYXBoeS5oMyxoNDplLnR5cG9ncmFwaHkuaDQsaDU6ZS50eXBvZ3JhcGh5Lmg1LGg2OmUudHlwb2dyYXBoeS5oNixzdWJ0aXRsZTE6ZS50eXBvZ3JhcGh5LnN1YnRpdGxlMSxzdWJ0aXRsZTI6ZS50eXBvZ3JhcGh5LnN1YnRpdGxlMixvdmVybGluZTplLnR5cG9ncmFwaHkub3ZlcmxpbmUsc3JPbmx5Ontwb3NpdGlvbjpcImFic29sdXRlXCIsaGVpZ2h0OjEsd2lkdGg6MSxvdmVyZmxvdzpcImhpZGRlblwifSxhbGlnbkxlZnQ6e3RleHRBbGlnbjpcImxlZnRcIn0sYWxpZ25DZW50ZXI6e3RleHRBbGlnbjpcImNlbnRlclwifSxhbGlnblJpZ2h0Ont0ZXh0QWxpZ246XCJyaWdodFwifSxhbGlnbkp1c3RpZnk6e3RleHRBbGlnbjpcImp1c3RpZnlcIn0sbm9XcmFwOntvdmVyZmxvdzpcImhpZGRlblwiLHRleHRPdmVyZmxvdzpcImVsbGlwc2lzXCIsd2hpdGVTcGFjZTpcIm5vd3JhcFwifSxndXR0ZXJCb3R0b206e21hcmdpbkJvdHRvbTpcIjAuMzVlbVwifSxwYXJhZ3JhcGg6e21hcmdpbkJvdHRvbToxNn0sY29sb3JJbmhlcml0Ontjb2xvcjpcImluaGVyaXRcIn0sY29sb3JQcmltYXJ5Ontjb2xvcjplLnBhbGV0dGUucHJpbWFyeS5tYWlufSxjb2xvclNlY29uZGFyeTp7Y29sb3I6ZS5wYWxldHRlLnNlY29uZGFyeS5tYWlufSxjb2xvclRleHRQcmltYXJ5Ontjb2xvcjplLnBhbGV0dGUudGV4dC5wcmltYXJ5fSxjb2xvclRleHRTZWNvbmRhcnk6e2NvbG9yOmUucGFsZXR0ZS50ZXh0LnNlY29uZGFyeX0sY29sb3JFcnJvcjp7Y29sb3I6ZS5wYWxldHRlLmVycm9yLm1haW59LGlubGluZTp7ZGlzcGxheTpcImlubGluZVwifX19O3Quc3R5bGVzPWQ7dmFyIHA9e2Rpc3BsYXk0OlwiaDFcIixkaXNwbGF5MzpcImgyXCIsZGlzcGxheTI6XCJoM1wiLGRpc3BsYXkxOlwiaDRcIixoZWFkbGluZTpcImg1XCIsdGl0bGU6XCJoNlwiLHN1YmhlYWRpbmc6XCJzdWJ0aXRsZTFcIn07dmFyIGY9e2gxOlwiaDFcIixoMjpcImgyXCIsaDM6XCJoM1wiLGg0OlwiaDRcIixoNTpcImg1XCIsaDY6XCJoNlwiLHN1YnRpdGxlMTpcImg2XCIsc3VidGl0bGUyOlwiaDZcIixib2R5MTpcInBcIixib2R5MjpcInBcIixkaXNwbGF5NDpcImgxXCIsZGlzcGxheTM6XCJoMVwiLGRpc3BsYXkyOlwiaDFcIixkaXNwbGF5MTpcImgxXCIsaGVhZGxpbmU6XCJoMVwiLHRpdGxlOlwiaDJcIixzdWJoZWFkaW5nOlwiaDNcIn07ZnVuY3Rpb24gbShlKXt2YXIgdCxuPWUuYWxpZ24scj1lLmNsYXNzZXMsdT1lLmNsYXNzTmFtZSxkPWUuY29sb3IsbT1lLmNvbXBvbmVudCxnPWUuZ3V0dGVyQm90dG9tLGg9ZS5oZWFkbGluZU1hcHBpbmcsYj1lLmlubGluZSx5PShlLmludGVybmFsRGVwcmVjYXRlZFZhcmlhbnQsZS5ub1dyYXApLHY9ZS5wYXJhZ3JhcGgsUz1lLnRoZW1lLEU9ZS52YXJpYW50LHg9KDAsaS5kZWZhdWx0KShlLFtcImFsaWduXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbG9yXCIsXCJjb21wb25lbnRcIixcImd1dHRlckJvdHRvbVwiLFwiaGVhZGxpbmVNYXBwaW5nXCIsXCJpbmxpbmVcIixcImludGVybmFsRGVwcmVjYXRlZFZhcmlhbnRcIixcIm5vV3JhcFwiLFwicGFyYWdyYXBoXCIsXCJ0aGVtZVwiLFwidmFyaWFudFwiXSksdz1mdW5jdGlvbihlLHQpe3ZhciBuPWUudHlwb2dyYXBoeSxyPXQ7cmV0dXJuIHJ8fChyPW4udXNlTmV4dFZhcmlhbnRzP1wiYm9keTJcIjpcImJvZHkxXCIpLG4udXNlTmV4dFZhcmlhbnRzJiYocj1wW3JdfHxyKSxyfShTLEUpLGs9KDAscy5kZWZhdWx0KShyLnJvb3QsKHQ9e30sKDAsYS5kZWZhdWx0KSh0LHJbd10sXCJpbmhlcml0XCIhPT13KSwoMCxhLmRlZmF1bHQpKHQscltcImNvbG9yXCIuY29uY2F0KCgwLGMuY2FwaXRhbGl6ZSkoZCkpXSxcImRlZmF1bHRcIiE9PWQpLCgwLGEuZGVmYXVsdCkodCxyLm5vV3JhcCx5KSwoMCxhLmRlZmF1bHQpKHQsci5ndXR0ZXJCb3R0b20sZyksKDAsYS5kZWZhdWx0KSh0LHIucGFyYWdyYXBoLHYpLCgwLGEuZGVmYXVsdCkodCxyW1wiYWxpZ25cIi5jb25jYXQoKDAsYy5jYXBpdGFsaXplKShuKSldLFwiaW5oZXJpdFwiIT09biksKDAsYS5kZWZhdWx0KSh0LHIuaW5saW5lLGIpLHQpLHUpLF89bXx8KHY/XCJwXCI6aFt3XXx8Zlt3XSl8fFwic3BhblwiO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChfLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTprfSx4KSl9bS5kZWZhdWx0UHJvcHM9e2FsaWduOlwiaW5oZXJpdFwiLGNvbG9yOlwiZGVmYXVsdFwiLGd1dHRlckJvdHRvbTohMSxoZWFkbGluZU1hcHBpbmc6ZixpbmxpbmU6ITEsbm9XcmFwOiExLHBhcmFncmFwaDohMX07dmFyIGc9KDAsdS5kZWZhdWx0KShkLHtuYW1lOlwiTXVpVHlwb2dyYXBoeVwiLHdpdGhUaGVtZTohMH0pKG0pO3QuZGVmYXVsdD1nfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PXIobig4KSksYz17cm9vdDp7ZGlzcGxheTpcImZsZXhcIixmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsZmxleFdyYXA6XCJ3cmFwXCJ9LHJvdzp7ZmxleERpcmVjdGlvbjpcInJvd1wifX07ZnVuY3Rpb24gZChlKXt2YXIgdD1lLmNsYXNzZXMsbj1lLmNsYXNzTmFtZSxyPWUuY2hpbGRyZW4sdT1lLnJvdyxjPSgwLGkuZGVmYXVsdCkoZSxbXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNoaWxkcmVuXCIsXCJyb3dcIl0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHQucm9vdCwoMCxhLmRlZmF1bHQpKHt9LHQucm93LHUpLG4pfSxjKSxyKX10LnN0eWxlcz1jLGQuZGVmYXVsdFByb3BzPXtyb3c6ITF9O3ZhciBwPSgwLHUuZGVmYXVsdCkoYyx7bmFtZTpcIk11aUZvcm1Hcm91cFwifSkoZCk7dC5kZWZhdWx0PXB9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KG4oNykscihuKDMzKSkpLGM9cihuKDI1KSksZD1yKG4oOCkpLHA9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e2NvbG9yOmUucGFsZXR0ZS50ZXh0LnNlY29uZGFyeSxmb250RmFtaWx5OmUudHlwb2dyYXBoeS5mb250RmFtaWx5LGZvbnRTaXplOmUudHlwb2dyYXBoeS5weFRvUmVtKDEyKSx0ZXh0QWxpZ246XCJsZWZ0XCIsbWFyZ2luVG9wOjgsbGluZUhlaWdodDpcIjFlbVwiLG1pbkhlaWdodDpcIjFlbVwiLG1hcmdpbjowLFwiJiRkaXNhYmxlZFwiOntjb2xvcjplLnBhbGV0dGUudGV4dC5kaXNhYmxlZH0sXCImJGVycm9yXCI6e2NvbG9yOmUucGFsZXR0ZS5lcnJvci5tYWlufX0sZXJyb3I6e30sZGlzYWJsZWQ6e30sbWFyZ2luRGVuc2U6e21hcmdpblRvcDo0fSxjb250YWluZWQ6e21hcmdpbjpcIjhweCAxMnB4IDBcIn0sZm9jdXNlZDp7fSxmaWxsZWQ6e30scmVxdWlyZWQ6e319fTtmdW5jdGlvbiBmKGUpe3ZhciB0LG49ZS5jbGFzc2VzLHI9ZS5jbGFzc05hbWUsYz1lLmNvbXBvbmVudCxkPShlLmRpc2FibGVkLGUuZXJyb3IsZS5maWxsZWQsZS5mb2N1c2VkLGUubWFyZ2luLGUubXVpRm9ybUNvbnRyb2wpLHA9KGUucmVxdWlyZWQsZS52YXJpYW50LCgwLGkuZGVmYXVsdCkoZSxbXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbXBvbmVudFwiLFwiZGlzYWJsZWRcIixcImVycm9yXCIsXCJmaWxsZWRcIixcImZvY3VzZWRcIixcIm1hcmdpblwiLFwibXVpRm9ybUNvbnRyb2xcIixcInJlcXVpcmVkXCIsXCJ2YXJpYW50XCJdKSksZj0oMCx1LmRlZmF1bHQpKHtwcm9wczplLG11aUZvcm1Db250cm9sOmQsc3RhdGVzOltcInZhcmlhbnRcIixcIm1hcmdpblwiLFwiZGlzYWJsZWRcIixcImVycm9yXCIsXCJmaWxsZWRcIixcImZvY3VzZWRcIixcInJlcXVpcmVkXCJdfSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGMsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkobi5yb290LCh0PXt9LCgwLGEuZGVmYXVsdCkodCxuLmNvbnRhaW5lZCxcImZpbGxlZFwiPT09Zi52YXJpYW50fHxcIm91dGxpbmVkXCI9PT1mLnZhcmlhbnQpLCgwLGEuZGVmYXVsdCkodCxuLm1hcmdpbkRlbnNlLFwiZGVuc2VcIj09PWYubWFyZ2luKSwoMCxhLmRlZmF1bHQpKHQsbi5kaXNhYmxlZCxmLmRpc2FibGVkKSwoMCxhLmRlZmF1bHQpKHQsbi5lcnJvcixmLmVycm9yKSwoMCxhLmRlZmF1bHQpKHQsbi5maWxsZWQsZi5maWxsZWQpLCgwLGEuZGVmYXVsdCkodCxuLmZvY3VzZWQsZi5mb2N1c2VkKSwoMCxhLmRlZmF1bHQpKHQsbi5yZXF1aXJlZCxmLnJlcXVpcmVkKSx0KSxyKX0scCkpfXQuc3R5bGVzPXAsZi5kZWZhdWx0UHJvcHM9e2NvbXBvbmVudDpcInBcIn07dmFyIG09KDAsZC5kZWZhdWx0KShwLHtuYW1lOlwiTXVpRm9ybUhlbHBlclRleHRcIn0pKCgwLGMuZGVmYXVsdCkoZikpO3QuZGVmYXVsdD1tfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PXIobigzMykpLGM9cihuKDI1KSksZD1yKG4oOCkpLHA9cihuKDc2KSksZj1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDp7dHJhbnNmb3JtT3JpZ2luOlwidG9wIGxlZnRcIn0sZm9jdXNlZDp7fSxkaXNhYmxlZDp7fSxlcnJvcjp7fSxyZXF1aXJlZDp7fSxmb3JtQ29udHJvbDp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLGxlZnQ6MCx0b3A6MCx0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoMCwgMjRweCkgc2NhbGUoMSlcIn0sbWFyZ2luRGVuc2U6e3RyYW5zZm9ybTpcInRyYW5zbGF0ZSgwLCAyMXB4KSBzY2FsZSgxKVwifSxzaHJpbms6e3RyYW5zZm9ybTpcInRyYW5zbGF0ZSgwLCAxLjVweCkgc2NhbGUoMC43NSlcIix0cmFuc2Zvcm1PcmlnaW46XCJ0b3AgbGVmdFwifSxhbmltYXRlZDp7dHJhbnNpdGlvbjplLnRyYW5zaXRpb25zLmNyZWF0ZShbXCJjb2xvclwiLFwidHJhbnNmb3JtXCJdLHtkdXJhdGlvbjplLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXIsZWFzaW5nOmUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VPdXR9KX0sZmlsbGVkOnt6SW5kZXg6MSxwb2ludGVyRXZlbnRzOlwibm9uZVwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZSgxMnB4LCAyMHB4KSBzY2FsZSgxKVwiLFwiJiRtYXJnaW5EZW5zZVwiOnt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoMTJweCwgMTdweCkgc2NhbGUoMSlcIn0sXCImJHNocmlua1wiOnt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoMTJweCwgMTBweCkgc2NhbGUoMC43NSlcIixcIiYkbWFyZ2luRGVuc2VcIjp7dHJhbnNmb3JtOlwidHJhbnNsYXRlKDEycHgsIDdweCkgc2NhbGUoMC43NSlcIn19fSxvdXRsaW5lZDp7ekluZGV4OjEscG9pbnRlckV2ZW50czpcIm5vbmVcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoMTRweCwgMjBweCkgc2NhbGUoMSlcIixcIiYkbWFyZ2luRGVuc2VcIjp7dHJhbnNmb3JtOlwidHJhbnNsYXRlKDE0cHgsIDE3cHgpIHNjYWxlKDEpXCJ9LFwiJiRzaHJpbmtcIjp7dHJhbnNmb3JtOlwidHJhbnNsYXRlKDE0cHgsIC02cHgpIHNjYWxlKDAuNzUpXCJ9fX19O2Z1bmN0aW9uIG0oZSl7dmFyIHQsbj1lLmNoaWxkcmVuLHI9ZS5jbGFzc2VzLGM9ZS5jbGFzc05hbWUsZD1lLmRpc2FibGVBbmltYXRpb24sZj1lLkZvcm1MYWJlbENsYXNzZXMsbT0oZS5tYXJnaW4sZS5tdWlGb3JtQ29udHJvbCksZz1lLnNocmluayxoPShlLnZhcmlhbnQsKDAsaS5kZWZhdWx0KShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImRpc2FibGVBbmltYXRpb25cIixcIkZvcm1MYWJlbENsYXNzZXNcIixcIm1hcmdpblwiLFwibXVpRm9ybUNvbnRyb2xcIixcInNocmlua1wiLFwidmFyaWFudFwiXSkpLGI9Zzt2b2lkIDA9PT1iJiZtJiYoYj1tLmZpbGxlZHx8bS5mb2N1c2VkfHxtLmFkb3JuZWRTdGFydCk7dmFyIHk9KDAsdS5kZWZhdWx0KSh7cHJvcHM6ZSxtdWlGb3JtQ29udHJvbDptLHN0YXRlczpbXCJtYXJnaW5cIixcInZhcmlhbnRcIl19KSx2PSgwLHMuZGVmYXVsdCkoci5yb290LCh0PXt9LCgwLGEuZGVmYXVsdCkodCxyLmZvcm1Db250cm9sLG0pLCgwLGEuZGVmYXVsdCkodCxyLmFuaW1hdGVkLCFkKSwoMCxhLmRlZmF1bHQpKHQsci5zaHJpbmssYiksKDAsYS5kZWZhdWx0KSh0LHIubWFyZ2luRGVuc2UsXCJkZW5zZVwiPT09eS5tYXJnaW4pLCgwLGEuZGVmYXVsdCkodCxyLmZpbGxlZCxcImZpbGxlZFwiPT09eS52YXJpYW50KSwoMCxhLmRlZmF1bHQpKHQsci5vdXRsaW5lZCxcIm91dGxpbmVkXCI9PT15LnZhcmlhbnQpLHQpLGMpO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChwLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7XCJkYXRhLXNocmlua1wiOmIsY2xhc3NOYW1lOnYsY2xhc3NlczooMCxvLmRlZmF1bHQpKHtmb2N1c2VkOnIuZm9jdXNlZCxkaXNhYmxlZDpyLmRpc2FibGVkLGVycm9yOnIuZXJyb3IscmVxdWlyZWQ6ci5yZXF1aXJlZH0sZil9LGgpLG4pfXQuc3R5bGVzPWYsbS5kZWZhdWx0UHJvcHM9e2Rpc2FibGVBbmltYXRpb246ITF9O3ZhciBnPSgwLGQuZGVmYXVsdCkoZix7bmFtZTpcIk11aUlucHV0TGFiZWxcIn0pKCgwLGMuZGVmYXVsdCkobSkpO3QuZGVmYXVsdD1nfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShuKDcpLHIobigzMykpKSxjPXIobigyNSkpLGQ9cihuKDgpKSxwPWZ1bmN0aW9uKGUpe3JldHVybntyb290Ontmb250RmFtaWx5OmUudHlwb2dyYXBoeS5mb250RmFtaWx5LGNvbG9yOmUucGFsZXR0ZS50ZXh0LnNlY29uZGFyeSxmb250U2l6ZTplLnR5cG9ncmFwaHkucHhUb1JlbSgxNiksbGluZUhlaWdodDoxLHBhZGRpbmc6MCxcIiYkZm9jdXNlZFwiOntjb2xvcjplLnBhbGV0dGUucHJpbWFyeVtcImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT9cImRhcmtcIjpcImxpZ2h0XCJdfSxcIiYkZGlzYWJsZWRcIjp7Y29sb3I6ZS5wYWxldHRlLnRleHQuZGlzYWJsZWR9LFwiJiRlcnJvclwiOntjb2xvcjplLnBhbGV0dGUuZXJyb3IubWFpbn19LGZvY3VzZWQ6e30sZGlzYWJsZWQ6e30sZXJyb3I6e30sZmlsbGVkOnt9LHJlcXVpcmVkOnt9LGFzdGVyaXNrOntcIiYkZXJyb3JcIjp7Y29sb3I6ZS5wYWxldHRlLmVycm9yLm1haW59fX19O2Z1bmN0aW9uIGYoZSl7dmFyIHQsbj1lLmNoaWxkcmVuLHI9ZS5jbGFzc2VzLGM9ZS5jbGFzc05hbWUsZD1lLmNvbXBvbmVudCxwPShlLmRpc2FibGVkLGUuZXJyb3IsZS5maWxsZWQsZS5mb2N1c2VkLGUubXVpRm9ybUNvbnRyb2wpLGY9KGUucmVxdWlyZWQsKDAsaS5kZWZhdWx0KShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbXBvbmVudFwiLFwiZGlzYWJsZWRcIixcImVycm9yXCIsXCJmaWxsZWRcIixcImZvY3VzZWRcIixcIm11aUZvcm1Db250cm9sXCIsXCJyZXF1aXJlZFwiXSkpLG09KDAsdS5kZWZhdWx0KSh7cHJvcHM6ZSxtdWlGb3JtQ29udHJvbDpwLHN0YXRlczpbXCJyZXF1aXJlZFwiLFwiZm9jdXNlZFwiLFwiZGlzYWJsZWRcIixcImVycm9yXCIsXCJmaWxsZWRcIl19KTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZCwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KShyLnJvb3QsKHQ9e30sKDAsYS5kZWZhdWx0KSh0LHIuZGlzYWJsZWQsbS5kaXNhYmxlZCksKDAsYS5kZWZhdWx0KSh0LHIuZXJyb3IsbS5lcnJvciksKDAsYS5kZWZhdWx0KSh0LHIuZmlsbGVkLG0uZmlsbGVkKSwoMCxhLmRlZmF1bHQpKHQsci5mb2N1c2VkLG0uZm9jdXNlZCksKDAsYS5kZWZhdWx0KSh0LHIucmVxdWlyZWQsbS5yZXF1aXJlZCksdCksYyl9LGYpLG4sbS5yZXF1aXJlZCYmbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHIuYXN0ZXJpc2ssKDAsYS5kZWZhdWx0KSh7fSxyLmVycm9yLG0uZXJyb3IpKX0sXCLigIkqXCIpKX10LnN0eWxlcz1wLGYuZGVmYXVsdFByb3BzPXtjb21wb25lbnQ6XCJsYWJlbFwifTt2YXIgbT0oMCxkLmRlZmF1bHQpKHAse25hbWU6XCJNdWlGb3JtTGFiZWxcIn0pKCgwLGMuZGVmYXVsdCkoZikpO3QuZGVmYXVsdD1tfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShyKG4oMTcpKSxyKG4oOCkpKSxjPW4oMzEpLGQ9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIixvdmVyZmxvdzpcImhpZGRlblwiLGhlaWdodDo0fSxjb2xvclByaW1hcnk6e2JhY2tncm91bmRDb2xvcjooMCxjLmxpZ2h0ZW4pKGUucGFsZXR0ZS5wcmltYXJ5LmxpZ2h0LC42KX0sY29sb3JTZWNvbmRhcnk6e2JhY2tncm91bmRDb2xvcjooMCxjLmxpZ2h0ZW4pKGUucGFsZXR0ZS5zZWNvbmRhcnkubGlnaHQsLjQpfSxkZXRlcm1pbmF0ZTp7fSxpbmRldGVybWluYXRlOnt9LGJ1ZmZlcjp7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn0scXVlcnk6e3RyYW5zZm9ybTpcInJvdGF0ZSgxODBkZWcpXCJ9LGRhc2hlZDp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLG1hcmdpblRvcDowLGhlaWdodDpcIjEwMCVcIix3aWR0aDpcIjEwMCVcIixhbmltYXRpb246XCJidWZmZXIgM3MgaW5maW5pdGUgbGluZWFyXCIsYW5pbWF0aW9uTmFtZTpcIiRidWZmZXJcIn0sZGFzaGVkQ29sb3JQcmltYXJ5OntiYWNrZ3JvdW5kSW1hZ2U6XCJyYWRpYWwtZ3JhZGllbnQoXCIuY29uY2F0KCgwLGMubGlnaHRlbikoZS5wYWxldHRlLnByaW1hcnkubGlnaHQsLjYpLFwiIDAlLCBcIikuY29uY2F0KCgwLGMubGlnaHRlbikoZS5wYWxldHRlLnByaW1hcnkubGlnaHQsLjYpLFwiIDE2JSwgdHJhbnNwYXJlbnQgNDIlKVwiKSxiYWNrZ3JvdW5kU2l6ZTpcIjEwcHggMTBweFwiLGJhY2tncm91bmRQb3NpdGlvbjpcIjBweCAtMjNweFwifSxkYXNoZWRDb2xvclNlY29uZGFyeTp7YmFja2dyb3VuZEltYWdlOlwicmFkaWFsLWdyYWRpZW50KFwiLmNvbmNhdCgoMCxjLmxpZ2h0ZW4pKGUucGFsZXR0ZS5zZWNvbmRhcnkubGlnaHQsLjQpLFwiIDAlLCBcIikuY29uY2F0KCgwLGMubGlnaHRlbikoZS5wYWxldHRlLnNlY29uZGFyeS5saWdodCwuNiksXCIgMTYlLCB0cmFuc3BhcmVudCA0MiUpXCIpLGJhY2tncm91bmRTaXplOlwiMTBweCAxMHB4XCIsYmFja2dyb3VuZFBvc2l0aW9uOlwiMHB4IC0yM3B4XCJ9LGJhcjp7d2lkdGg6XCIxMDAlXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLGxlZnQ6MCxib3R0b206MCx0b3A6MCx0cmFuc2l0aW9uOlwidHJhbnNmb3JtIDAuMnMgbGluZWFyXCIsdHJhbnNmb3JtT3JpZ2luOlwibGVmdFwifSxiYXJDb2xvclByaW1hcnk6e2JhY2tncm91bmRDb2xvcjplLnBhbGV0dGUucHJpbWFyeS5tYWlufSxiYXJDb2xvclNlY29uZGFyeTp7YmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbn0sYmFyMUluZGV0ZXJtaW5hdGU6e3dpZHRoOlwiYXV0b1wiLGFuaW1hdGlvbjpcIm11aS1pbmRldGVybWluYXRlMSAyLjFzIGN1YmljLWJlemllcigwLjY1LCAwLjgxNSwgMC43MzUsIDAuMzk1KSBpbmZpbml0ZVwiLGFuaW1hdGlvbk5hbWU6XCIkbXVpLWluZGV0ZXJtaW5hdGUxXCJ9LGJhcjFEZXRlcm1pbmF0ZTp7dHJhbnNpdGlvbjpcInRyYW5zZm9ybSAuXCIuY29uY2F0KDQsXCJzIGxpbmVhclwiKX0sYmFyMUJ1ZmZlcjp7ekluZGV4OjEsdHJhbnNpdGlvbjpcInRyYW5zZm9ybSAuXCIuY29uY2F0KDQsXCJzIGxpbmVhclwiKX0sYmFyMkluZGV0ZXJtaW5hdGU6e3dpZHRoOlwiYXV0b1wiLGFuaW1hdGlvbjpcIm11aS1pbmRldGVybWluYXRlMiAyLjFzIGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSkgaW5maW5pdGVcIixhbmltYXRpb25OYW1lOlwiJG11aS1pbmRldGVybWluYXRlMlwiLGFuaW1hdGlvbkRlbGF5OlwiMS4xNXNcIn0sYmFyMkJ1ZmZlcjp7dHJhbnNpdGlvbjpcInRyYW5zZm9ybSAuXCIuY29uY2F0KDQsXCJzIGxpbmVhclwiKX0sXCJAa2V5ZnJhbWVzIG11aS1pbmRldGVybWluYXRlMVwiOntcIjAlXCI6e2xlZnQ6XCItMzUlXCIscmlnaHQ6XCIxMDAlXCJ9LFwiNjAlXCI6e2xlZnQ6XCIxMDAlXCIscmlnaHQ6XCItOTAlXCJ9LFwiMTAwJVwiOntsZWZ0OlwiMTAwJVwiLHJpZ2h0OlwiLTkwJVwifX0sXCJAa2V5ZnJhbWVzIG11aS1pbmRldGVybWluYXRlMlwiOntcIjAlXCI6e2xlZnQ6XCItMjAwJVwiLHJpZ2h0OlwiMTAwJVwifSxcIjYwJVwiOntsZWZ0OlwiMTA3JVwiLHJpZ2h0OlwiLTglXCJ9LFwiMTAwJVwiOntsZWZ0OlwiMTA3JVwiLHJpZ2h0OlwiLTglXCJ9fSxcIkBrZXlmcmFtZXMgYnVmZmVyXCI6e1wiMCVcIjp7b3BhY2l0eToxLGJhY2tncm91bmRQb3NpdGlvbjpcIjBweCAtMjNweFwifSxcIjUwJVwiOntvcGFjaXR5OjAsYmFja2dyb3VuZFBvc2l0aW9uOlwiMHB4IC0yM3B4XCJ9LFwiMTAwJVwiOntvcGFjaXR5OjEsYmFja2dyb3VuZFBvc2l0aW9uOlwiLTIwMHB4IC0yM3B4XCJ9fX19O2Z1bmN0aW9uIHAoZSl7dmFyIHQsbixyLHUsYz1lLmNsYXNzZXMsZD1lLmNsYXNzTmFtZSxwPWUuY29sb3IsZj1lLnZhbHVlLG09ZS52YWx1ZUJ1ZmZlcixnPWUudmFyaWFudCxoPSgwLGkuZGVmYXVsdCkoZSxbXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbG9yXCIsXCJ2YWx1ZVwiLFwidmFsdWVCdWZmZXJcIixcInZhcmlhbnRcIl0pLGI9KDAscy5kZWZhdWx0KShjLnJvb3QsKHQ9e30sKDAsYS5kZWZhdWx0KSh0LGMuY29sb3JQcmltYXJ5LFwicHJpbWFyeVwiPT09cCksKDAsYS5kZWZhdWx0KSh0LGMuY29sb3JTZWNvbmRhcnksXCJzZWNvbmRhcnlcIj09PXApLCgwLGEuZGVmYXVsdCkodCxjLmRldGVybWluYXRlLFwiZGV0ZXJtaW5hdGVcIj09PWcpLCgwLGEuZGVmYXVsdCkodCxjLmluZGV0ZXJtaW5hdGUsXCJpbmRldGVybWluYXRlXCI9PT1nKSwoMCxhLmRlZmF1bHQpKHQsYy5idWZmZXIsXCJidWZmZXJcIj09PWcpLCgwLGEuZGVmYXVsdCkodCxjLnF1ZXJ5LFwicXVlcnlcIj09PWcpLHQpLGQpLHk9KDAscy5kZWZhdWx0KShjLmRhc2hlZCwobj17fSwoMCxhLmRlZmF1bHQpKG4sYy5kYXNoZWRDb2xvclByaW1hcnksXCJwcmltYXJ5XCI9PT1wKSwoMCxhLmRlZmF1bHQpKG4sYy5kYXNoZWRDb2xvclNlY29uZGFyeSxcInNlY29uZGFyeVwiPT09cCksbikpLHY9KDAscy5kZWZhdWx0KShjLmJhciwocj17fSwoMCxhLmRlZmF1bHQpKHIsYy5iYXJDb2xvclByaW1hcnksXCJwcmltYXJ5XCI9PT1wKSwoMCxhLmRlZmF1bHQpKHIsYy5iYXJDb2xvclNlY29uZGFyeSxcInNlY29uZGFyeVwiPT09cCksKDAsYS5kZWZhdWx0KShyLGMuYmFyMUluZGV0ZXJtaW5hdGUsXCJpbmRldGVybWluYXRlXCI9PT1nfHxcInF1ZXJ5XCI9PT1nKSwoMCxhLmRlZmF1bHQpKHIsYy5iYXIxRGV0ZXJtaW5hdGUsXCJkZXRlcm1pbmF0ZVwiPT09ZyksKDAsYS5kZWZhdWx0KShyLGMuYmFyMUJ1ZmZlcixcImJ1ZmZlclwiPT09ZykscikpLFM9KDAscy5kZWZhdWx0KShjLmJhciwodT17fSwoMCxhLmRlZmF1bHQpKHUsYy5iYXJDb2xvclByaW1hcnksXCJwcmltYXJ5XCI9PT1wJiZcImJ1ZmZlclwiIT09ZyksKDAsYS5kZWZhdWx0KSh1LGMuY29sb3JQcmltYXJ5LFwicHJpbWFyeVwiPT09cCYmXCJidWZmZXJcIj09PWcpLCgwLGEuZGVmYXVsdCkodSxjLmJhckNvbG9yU2Vjb25kYXJ5LFwic2Vjb25kYXJ5XCI9PT1wJiZcImJ1ZmZlclwiIT09ZyksKDAsYS5kZWZhdWx0KSh1LGMuY29sb3JTZWNvbmRhcnksXCJzZWNvbmRhcnlcIj09PXAmJlwiYnVmZmVyXCI9PT1nKSwoMCxhLmRlZmF1bHQpKHUsYy5iYXIySW5kZXRlcm1pbmF0ZSxcImluZGV0ZXJtaW5hdGVcIj09PWd8fFwicXVlcnlcIj09PWcpLCgwLGEuZGVmYXVsdCkodSxjLmJhcjJCdWZmZXIsXCJidWZmZXJcIj09PWcpLHUpKSxFPXt9LHg9e2JhcjE6e30sYmFyMjp7fX07cmV0dXJuXCJkZXRlcm1pbmF0ZVwiIT09ZyYmXCJidWZmZXJcIiE9PWd8fHZvaWQgMCE9PWYmJihFW1wiYXJpYS12YWx1ZW5vd1wiXT1NYXRoLnJvdW5kKGYpLHguYmFyMS50cmFuc2Zvcm09XCJzY2FsZVgoXCIuY29uY2F0KGYvMTAwLFwiKVwiKSksXCJidWZmZXJcIj09PWcmJnZvaWQgMCE9PW0mJih4LmJhcjIudHJhbnNmb3JtPVwic2NhbGVYKFwiLmNvbmNhdCgobXx8MCkvMTAwLFwiKVwiKSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6Yixyb2xlOlwicHJvZ3Jlc3NiYXJcIn0sRSxoKSxcImJ1ZmZlclwiPT09Zz9sLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6eX0pOm51bGwsbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOnYsc3R5bGU6eC5iYXIxfSksXCJkZXRlcm1pbmF0ZVwiPT09Zz9udWxsOmwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpTLHN0eWxlOnguYmFyMn0pKX10LnN0eWxlcz1kLHAuZGVmYXVsdFByb3BzPXtjb2xvcjpcInByaW1hcnlcIix2YXJpYW50OlwiaW5kZXRlcm1pbmF0ZVwifTt2YXIgZj0oMCx1LmRlZmF1bHQpKGQse25hbWU6XCJNdWlMaW5lYXJQcm9ncmVzc1wifSkocCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLG4oNykscihuKDYpKSksdT1uKDIxKSxjPXIobig4KSksZD1yKG4oNTIpKSxwPXtyb290Ont9LHVuZGVybGluZU5vbmU6e3RleHREZWNvcmF0aW9uOlwibm9uZVwifSx1bmRlcmxpbmVIb3Zlcjp7dGV4dERlY29yYXRpb246XCJub25lXCIsXCImOmhvdmVyXCI6e3RleHREZWNvcmF0aW9uOlwidW5kZXJsaW5lXCJ9fSx1bmRlcmxpbmVBbHdheXM6e3RleHREZWNvcmF0aW9uOlwidW5kZXJsaW5lXCJ9LGJ1dHRvbjp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLFdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOlwidHJhbnNwYXJlbnRcIixiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwiLG91dGxpbmU6XCJub25lXCIsYm9yZGVyOjAsbWFyZ2luOjAsYm9yZGVyUmFkaXVzOjAscGFkZGluZzowLGN1cnNvcjpcInBvaW50ZXJcIix1c2VyU2VsZWN0Olwibm9uZVwiLHZlcnRpY2FsQWxpZ246XCJtaWRkbGVcIixcIi1tb3otYXBwZWFyYW5jZVwiOlwibm9uZVwiLFwiLXdlYmtpdC1hcHBlYXJhbmNlXCI6XCJub25lXCIsXCImOjotbW96LWZvY3VzLWlubmVyXCI6e2JvcmRlclN0eWxlOlwibm9uZVwifX19O2Z1bmN0aW9uIGYoZSl7dmFyIHQ9ZS5ibG9jayxuPWUuY2hpbGRyZW4scj1lLmNsYXNzZXMsYz1lLmNsYXNzTmFtZSxwPWUuY29tcG9uZW50LGY9ZS5UeXBvZ3JhcGh5Q2xhc3NlcyxtPWUudW5kZXJsaW5lLGc9KDAsaS5kZWZhdWx0KShlLFtcImJsb2NrXCIsXCJjaGlsZHJlblwiLFwiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb21wb25lbnRcIixcIlR5cG9ncmFwaHlDbGFzc2VzXCIsXCJ1bmRlcmxpbmVcIl0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoci5yb290LCgwLGEuZGVmYXVsdCkoe30sci5idXR0b24sXCJidXR0b25cIj09PXApLHJbXCJ1bmRlcmxpbmVcIi5jb25jYXQoKDAsdS5jYXBpdGFsaXplKShtKSldLGMpLGNsYXNzZXM6Zixjb21wb25lbnQ6cCxpbmxpbmU6IXR9LGcpLG4pfXQuc3R5bGVzPXAsZi5kZWZhdWx0UHJvcHM9e2Jsb2NrOiExLGNvbG9yOlwicHJpbWFyeVwiLGNvbXBvbmVudDpcImFcIix1bmRlcmxpbmU6XCJob3ZlclwiLHZhcmlhbnQ6XCJpbmhlcml0XCJ9O3ZhciBtPSgwLGMuZGVmYXVsdCkocCx7bmFtZTpcIk11aUxpbmtcIn0pKGYpO3QuZGVmYXVsdD1tfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig5KSksYT1yKG4oNSkpLGk9cihuKDQpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShuKDcpLHIobig4KSkpLGM9cihuKDc3KSksZD1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDooMCxpLmRlZmF1bHQpKHt9LGUudHlwb2dyYXBoeS5zdWJoZWFkaW5nLHtoZWlnaHQ6MjQsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIix3aWR0aDpcImF1dG9cIixvdmVyZmxvdzpcImhpZGRlblwiLHdoaXRlU3BhY2U6XCJub3dyYXBcIixcIiYkc2VsZWN0ZWRcIjp7fX0pLGd1dHRlcnM6e3BhZGRpbmdMZWZ0OjE2LHBhZGRpbmdSaWdodDoxNn0sc2VsZWN0ZWQ6e319fTtmdW5jdGlvbiBwKGUpe3ZhciB0LG49ZS5jbGFzc2VzLHI9ZS5jbGFzc05hbWUsdT1lLmNvbXBvbmVudCxkPWUuZGlzYWJsZUd1dHRlcnMscD1lLnJvbGUsZj1lLnNlbGVjdGVkLG09KDAsYS5kZWZhdWx0KShlLFtcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29tcG9uZW50XCIsXCJkaXNhYmxlR3V0dGVyc1wiLFwicm9sZVwiLFwic2VsZWN0ZWRcIl0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChjLmRlZmF1bHQsKDAsaS5kZWZhdWx0KSh7YnV0dG9uOiEwLHJvbGU6cCx0YWJJbmRleDotMSxjb21wb25lbnQ6dSxzZWxlY3RlZDpmLGRpc2FibGVHdXR0ZXJzOmQsY2xhc3NOYW1lOigwLHMuZGVmYXVsdCkobi5yb290LCh0PXt9LCgwLG8uZGVmYXVsdCkodCxuLnNlbGVjdGVkLGYpLCgwLG8uZGVmYXVsdCkodCxuLmd1dHRlcnMsIWQpLHQpLHIpfSxtKSl9dC5zdHlsZXM9ZCxwLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OlwibGlcIixkaXNhYmxlR3V0dGVyczohMSxyb2xlOlwibWVudWl0ZW1cIn07dmFyIGY9KDAsdS5kZWZhdWx0KShkLHtuYW1lOlwiTXVpTWVudUl0ZW1cIn0pKHApO3QuZGVmYXVsdD1mfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShuKDcpLHIobig4KSkpLGM9cihuKDUzKSksZD1uKDMyKSxwPXIobig0NDEpKSxmPWZ1bmN0aW9uKGUpe3JldHVybntyb290OntkaXNwbGF5OlwiZmxleFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIixwb3NpdGlvbjpcInJlbGF0aXZlXCIsdGV4dERlY29yYXRpb246XCJub25lXCIsd2lkdGg6XCIxMDAlXCIsYm94U2l6aW5nOlwiYm9yZGVyLWJveFwiLHRleHRBbGlnbjpcImxlZnRcIixwYWRkaW5nVG9wOjExLHBhZGRpbmdCb3R0b206MTEsXCImJHNlbGVjdGVkLCAmJHNlbGVjdGVkOmhvdmVyLCAmJHNlbGVjdGVkOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjplLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkfX0sY29udGFpbmVyOntwb3NpdGlvbjpcInJlbGF0aXZlXCJ9LGZvY3VzVmlzaWJsZTp7fSxkZWZhdWx0Ont9LGRlbnNlOntwYWRkaW5nVG9wOjgscGFkZGluZ0JvdHRvbTo4fSxhbGlnbkl0ZW1zRmxleFN0YXJ0OnthbGlnbkl0ZW1zOlwiZmxleC1zdGFydFwifSxkaXNhYmxlZDp7b3BhY2l0eTouNX0sZGl2aWRlcjp7Ym9yZGVyQm90dG9tOlwiMXB4IHNvbGlkIFwiLmNvbmNhdChlLnBhbGV0dGUuZGl2aWRlciksYmFja2dyb3VuZENsaXA6XCJwYWRkaW5nLWJveFwifSxndXR0ZXJzOntwYWRkaW5nTGVmdDoxNixwYWRkaW5nUmlnaHQ6MTZ9LGJ1dHRvbjp7dHJhbnNpdGlvbjplLnRyYW5zaXRpb25zLmNyZWF0ZShcImJhY2tncm91bmQtY29sb3JcIix7ZHVyYXRpb246ZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVzdH0pLFwiJjpob3ZlclwiOnt0ZXh0RGVjb3JhdGlvbjpcIm5vbmVcIixiYWNrZ3JvdW5kQ29sb3I6ZS5wYWxldHRlLmFjdGlvbi5ob3ZlcixcIkBtZWRpYSAoaG92ZXI6IG5vbmUpXCI6e2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCJ9fSxcIiY6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5hY3Rpb24uaG92ZXJ9fSxzZWNvbmRhcnlBY3Rpb246e3BhZGRpbmdSaWdodDozMn0sc2VsZWN0ZWQ6e319fTtmdW5jdGlvbiBtKGUpe3ZhciB0PWUuYWxpZ25JdGVtcyxuPWUuYnV0dG9uLHI9ZS5jaGlsZHJlbix1PWUuY2xhc3NlcyxmPWUuY2xhc3NOYW1lLG09ZS5jb21wb25lbnQsZz1lLkNvbnRhaW5lckNvbXBvbmVudCxoPWUuQ29udGFpbmVyUHJvcHMsYj0oaD12b2lkIDA9PT1oP3t9OmgpLmNsYXNzTmFtZSx5PSgwLGkuZGVmYXVsdCkoaCxbXCJjbGFzc05hbWVcIl0pLHY9ZS5kZW5zZSxTPWUuZGlzYWJsZWQsRT1lLmRpc2FibGVHdXR0ZXJzLHg9ZS5kaXZpZGVyLHc9ZS5mb2N1c1Zpc2libGVDbGFzc05hbWUsaz1lLnNlbGVjdGVkLF89KDAsaS5kZWZhdWx0KShlLFtcImFsaWduSXRlbXNcIixcImJ1dHRvblwiLFwiY2hpbGRyZW5cIixcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29tcG9uZW50XCIsXCJDb250YWluZXJDb21wb25lbnRcIixcIkNvbnRhaW5lclByb3BzXCIsXCJkZW5zZVwiLFwiZGlzYWJsZWRcIixcImRpc2FibGVHdXR0ZXJzXCIsXCJkaXZpZGVyXCIsXCJmb2N1c1Zpc2libGVDbGFzc05hbWVcIixcInNlbGVjdGVkXCJdKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQocC5kZWZhdWx0LHtkZW5zZTp2LGFsaWduSXRlbXM6dH0sZnVuY3Rpb24oZSl7dmFyIGkscD1lLmRlbnNlLGg9bC5kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkociksdj1oLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuKDAsZC5pc011aUVsZW1lbnQpKGUsW1wiTGlzdEl0ZW1BdmF0YXJcIl0pfSksVD1oLmxlbmd0aCYmKDAsZC5pc011aUVsZW1lbnQpKGhbaC5sZW5ndGgtMV0sW1wiTGlzdEl0ZW1TZWNvbmRhcnlBY3Rpb25cIl0pLEE9KDAscy5kZWZhdWx0KSh1LnJvb3QsdS5kZWZhdWx0LChpPXt9LCgwLGEuZGVmYXVsdCkoaSx1LmRlbnNlLHB8fHYpLCgwLGEuZGVmYXVsdCkoaSx1Lmd1dHRlcnMsIUUpLCgwLGEuZGVmYXVsdCkoaSx1LmRpdmlkZXIseCksKDAsYS5kZWZhdWx0KShpLHUuZGlzYWJsZWQsUyksKDAsYS5kZWZhdWx0KShpLHUuYnV0dG9uLG4pLCgwLGEuZGVmYXVsdCkoaSx1LmFsaWduSXRlbXNGbGV4U3RhcnQsXCJmbGV4LXN0YXJ0XCI9PT10KSwoMCxhLmRlZmF1bHQpKGksdS5zZWNvbmRhcnlBY3Rpb24sVCksKDAsYS5kZWZhdWx0KShpLHUuc2VsZWN0ZWQsayksaSksZiksQz0oMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6QSxkaXNhYmxlZDpTfSxfKSxPPW18fFwibGlcIjtyZXR1cm4gbiYmKEMuY29tcG9uZW50PW18fFwiZGl2XCIsQy5mb2N1c1Zpc2libGVDbGFzc05hbWU9KDAscy5kZWZhdWx0KSh1LmZvY3VzVmlzaWJsZSx3KSxPPWMuZGVmYXVsdCksVD8oTz1DLmNvbXBvbmVudHx8bT9POlwiZGl2XCIsXCJsaVwiPT09ZyYmKFwibGlcIj09PU8/Tz1cImRpdlwiOlwibGlcIj09PUMuY29tcG9uZW50JiYoQy5jb21wb25lbnQ9XCJkaXZcIikpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGcsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkodS5jb250YWluZXIsYil9LHkpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KE8sQyxoKSxoLnBvcCgpKSk6bC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTyxDLGgpfSl9dC5zdHlsZXM9ZixtLmRlZmF1bHRQcm9wcz17YWxpZ25JdGVtczpcImNlbnRlclwiLGJ1dHRvbjohMSxDb250YWluZXJDb21wb25lbnQ6XCJsaVwiLGRlbnNlOiExLGRpc2FibGVkOiExLGRpc2FibGVHdXR0ZXJzOiExLGRpdmlkZXI6ITEsc2VsZWN0ZWQ6ITF9O3ZhciBnPSgwLHUuZGVmYXVsdCkoZix7bmFtZTpcIk11aUxpc3RJdGVtXCJ9KShtKTt0LmRlZmF1bHQ9Z30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMTIpKSxzPXIobigxMykpLHU9cihuKDE0KSksYz1yKG4oMTUpKSxkPXIobigxNikpLHA9cihuKDQ1KSksZj1yKG4oMCkpLG09KHIobigxKSkscihuKDIyKSkpLGc9cihuKDYpKSxoPShuKDcpLHIobig3OCkpKSxiPXIobig4KSkseT1yKG4oNzkpKSx2PW4oNDMyKSxTPXIobig0MzMpKSxFPXIobig0NDApKSx4PXtyb290OntkaXNwbGF5OlwiaW5saW5lLWZsZXhcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCIsanVzdGlmeUNvbnRlbnQ6XCJjZW50ZXJcIixwb3NpdGlvbjpcInJlbGF0aXZlXCIsV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6XCJ0cmFuc3BhcmVudFwiLGJhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCIsb3V0bGluZTpcIm5vbmVcIixib3JkZXI6MCxtYXJnaW46MCxib3JkZXJSYWRpdXM6MCxwYWRkaW5nOjAsY3Vyc29yOlwicG9pbnRlclwiLHVzZXJTZWxlY3Q6XCJub25lXCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwiLFwiLW1vei1hcHBlYXJhbmNlXCI6XCJub25lXCIsXCItd2Via2l0LWFwcGVhcmFuY2VcIjpcIm5vbmVcIix0ZXh0RGVjb3JhdGlvbjpcIm5vbmVcIixjb2xvcjpcImluaGVyaXRcIixcIiY6Oi1tb3otZm9jdXMtaW5uZXJcIjp7Ym9yZGVyU3R5bGU6XCJub25lXCJ9LFwiJiRkaXNhYmxlZFwiOntwb2ludGVyRXZlbnRzOlwibm9uZVwiLGN1cnNvcjpcImRlZmF1bHRcIn19LGRpc2FibGVkOnt9LGZvY3VzVmlzaWJsZTp7fX07dC5zdHlsZXM9eDt2YXIgdz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjsoMCxsLmRlZmF1bHQpKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuKG49KDAsdS5kZWZhdWx0KSh0aGlzLChlPSgwLGMuZGVmYXVsdCkodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8pKSkpLnN0YXRlPXt9LG4ua2V5RG93bj0hMSxuLmZvY3VzVmlzaWJsZUNoZWNrVGltZT01MCxuLmZvY3VzVmlzaWJsZU1heENoZWNrVGltZXM9NSxuLmhhbmRsZU1vdXNlRG93bj0oMCxFLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkoKDAscC5kZWZhdWx0KShuKSksXCJNb3VzZURvd25cIixcInN0YXJ0XCIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQobi5mb2N1c1Zpc2libGVUaW1lb3V0KSxuLnN0YXRlLmZvY3VzVmlzaWJsZSYmbi5zZXRTdGF0ZSh7Zm9jdXNWaXNpYmxlOiExfSl9KSxuLmhhbmRsZU1vdXNlVXA9KDAsRS5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkobikpLFwiTW91c2VVcFwiLFwic3RvcFwiKSxuLmhhbmRsZU1vdXNlTGVhdmU9KDAsRS5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkobikpLFwiTW91c2VMZWF2ZVwiLFwic3RvcFwiLGZ1bmN0aW9uKGUpe24uc3RhdGUuZm9jdXNWaXNpYmxlJiZlLnByZXZlbnREZWZhdWx0KCl9KSxuLmhhbmRsZVRvdWNoU3RhcnQ9KDAsRS5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkobikpLFwiVG91Y2hTdGFydFwiLFwic3RhcnRcIiksbi5oYW5kbGVUb3VjaEVuZD0oMCxFLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkoKDAscC5kZWZhdWx0KShuKSksXCJUb3VjaEVuZFwiLFwic3RvcFwiKSxuLmhhbmRsZVRvdWNoTW92ZT0oMCxFLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkoKDAscC5kZWZhdWx0KShuKSksXCJUb3VjaE1vdmVcIixcInN0b3BcIiksbi5oYW5kbGVDb250ZXh0TWVudT0oMCxFLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkoKDAscC5kZWZhdWx0KShuKSksXCJDb250ZXh0TWVudVwiLFwic3RvcFwiKSxuLmhhbmRsZUJsdXI9KDAsRS5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkobikpLFwiQmx1clwiLFwic3RvcFwiLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KG4uZm9jdXNWaXNpYmxlVGltZW91dCksbi5zdGF0ZS5mb2N1c1Zpc2libGUmJm4uc2V0U3RhdGUoe2ZvY3VzVmlzaWJsZTohMX0pfSksbi5vblJpcHBsZVJlZj1mdW5jdGlvbihlKXtuLnJpcHBsZT1lfSxuLm9uRm9jdXNWaXNpYmxlSGFuZGxlcj1mdW5jdGlvbihlKXtuLmtleURvd249ITEsbi5zZXRTdGF0ZSh7Zm9jdXNWaXNpYmxlOiEwfSksbi5wcm9wcy5vbkZvY3VzVmlzaWJsZSYmbi5wcm9wcy5vbkZvY3VzVmlzaWJsZShlKX0sbi5oYW5kbGVLZXlEb3duPWZ1bmN0aW9uKGUpe3ZhciB0PW4ucHJvcHMscj10LmNvbXBvbmVudCxvPXQuZm9jdXNSaXBwbGUsYT10Lm9uS2V5RG93bixpPXQub25DbGljaztvJiYhbi5rZXlEb3duJiZuLnN0YXRlLmZvY3VzVmlzaWJsZSYmbi5yaXBwbGUmJlwiIFwiPT09ZS5rZXkmJihuLmtleURvd249ITAsZS5wZXJzaXN0KCksbi5yaXBwbGUuc3RvcChlLGZ1bmN0aW9uKCl7bi5yaXBwbGUuc3RhcnQoZSl9KSksYSYmYShlKSxlLnRhcmdldCE9PWUuY3VycmVudFRhcmdldHx8IXJ8fFwiYnV0dG9uXCI9PT1yfHxcIiBcIiE9PWUua2V5JiZcIkVudGVyXCIhPT1lLmtleXx8XCJBXCI9PT1uLmJ1dHRvbi50YWdOYW1lJiZuLmJ1dHRvbi5ocmVmfHwoZS5wcmV2ZW50RGVmYXVsdCgpLGkmJmkoZSkpfSxuLmhhbmRsZUtleVVwPWZ1bmN0aW9uKGUpe24ucHJvcHMuZm9jdXNSaXBwbGUmJlwiIFwiPT09ZS5rZXkmJm4ucmlwcGxlJiZuLnN0YXRlLmZvY3VzVmlzaWJsZSYmKG4ua2V5RG93bj0hMSxlLnBlcnNpc3QoKSxuLnJpcHBsZS5zdG9wKGUsZnVuY3Rpb24oKXtuLnJpcHBsZS5wdWxzYXRlKGUpfSkpLG4ucHJvcHMub25LZXlVcCYmbi5wcm9wcy5vbktleVVwKGUpfSxuLmhhbmRsZUZvY3VzPWZ1bmN0aW9uKGUpe24ucHJvcHMuZGlzYWJsZWR8fChuLmJ1dHRvbnx8KG4uYnV0dG9uPWUuY3VycmVudFRhcmdldCksZS5wZXJzaXN0KCksKDAsdi5kZXRlY3RGb2N1c1Zpc2libGUpKCgwLHAuZGVmYXVsdCkoKDAscC5kZWZhdWx0KShuKSksbi5idXR0b24sZnVuY3Rpb24oKXtuLm9uRm9jdXNWaXNpYmxlSGFuZGxlcihlKX0pLG4ucHJvcHMub25Gb2N1cyYmbi5wcm9wcy5vbkZvY3VzKGUpKX0sbn1yZXR1cm4oMCxkLmRlZmF1bHQpKHQsZSksKDAscy5kZWZhdWx0KSh0LFt7a2V5OlwiY29tcG9uZW50RGlkTW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5idXR0b249bS5kZWZhdWx0LmZpbmRET01Ob2RlKHRoaXMpLCgwLHYubGlzdGVuRm9yRm9jdXNLZXlzKSgoMCxoLmRlZmF1bHQpKHRoaXMuYnV0dG9uKSksdGhpcy5wcm9wcy5hY3Rpb24mJnRoaXMucHJvcHMuYWN0aW9uKHtmb2N1c1Zpc2libGU6ZnVuY3Rpb24oKXtlLnNldFN0YXRlKHtmb2N1c1Zpc2libGU6ITB9KSxlLmJ1dHRvbi5mb2N1cygpfX0pfX0se2tleTpcImNvbXBvbmVudERpZFVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5wcm9wcy5mb2N1c1JpcHBsZSYmIXRoaXMucHJvcHMuZGlzYWJsZVJpcHBsZSYmIXQuZm9jdXNWaXNpYmxlJiZ0aGlzLnN0YXRlLmZvY3VzVmlzaWJsZSYmdGhpcy5yaXBwbGUucHVsc2F0ZSgpfX0se2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5mb2N1c1Zpc2libGVUaW1lb3V0KX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5wcm9wcyxuPSh0LmFjdGlvbix0LmJ1dHRvblJlZikscj10LmNlbnRlclJpcHBsZSxsPXQuY2hpbGRyZW4scz10LmNsYXNzZXMsdT10LmNsYXNzTmFtZSxjPXQuY29tcG9uZW50LGQ9dC5kaXNhYmxlZCxwPXQuZGlzYWJsZVJpcHBsZSxtPSh0LmRpc2FibGVUb3VjaFJpcHBsZSx0LmZvY3VzUmlwcGxlLHQuZm9jdXNWaXNpYmxlQ2xhc3NOYW1lKSxoPSh0Lm9uQmx1cix0Lm9uRm9jdXMsdC5vbkZvY3VzVmlzaWJsZSx0Lm9uS2V5RG93bix0Lm9uS2V5VXAsdC5vbk1vdXNlRG93bix0Lm9uTW91c2VMZWF2ZSx0Lm9uTW91c2VVcCx0Lm9uVG91Y2hFbmQsdC5vblRvdWNoTW92ZSx0Lm9uVG91Y2hTdGFydCx0LnRhYkluZGV4KSxiPXQuVG91Y2hSaXBwbGVQcm9wcyx2PXQudHlwZSxFPSgwLGkuZGVmYXVsdCkodCxbXCJhY3Rpb25cIixcImJ1dHRvblJlZlwiLFwiY2VudGVyUmlwcGxlXCIsXCJjaGlsZHJlblwiLFwiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb21wb25lbnRcIixcImRpc2FibGVkXCIsXCJkaXNhYmxlUmlwcGxlXCIsXCJkaXNhYmxlVG91Y2hSaXBwbGVcIixcImZvY3VzUmlwcGxlXCIsXCJmb2N1c1Zpc2libGVDbGFzc05hbWVcIixcIm9uQmx1clwiLFwib25Gb2N1c1wiLFwib25Gb2N1c1Zpc2libGVcIixcIm9uS2V5RG93blwiLFwib25LZXlVcFwiLFwib25Nb3VzZURvd25cIixcIm9uTW91c2VMZWF2ZVwiLFwib25Nb3VzZVVwXCIsXCJvblRvdWNoRW5kXCIsXCJvblRvdWNoTW92ZVwiLFwib25Ub3VjaFN0YXJ0XCIsXCJ0YWJJbmRleFwiLFwiVG91Y2hSaXBwbGVQcm9wc1wiLFwidHlwZVwiXSkseD0oMCxnLmRlZmF1bHQpKHMucm9vdCwoZT17fSwoMCxhLmRlZmF1bHQpKGUscy5kaXNhYmxlZCxkKSwoMCxhLmRlZmF1bHQpKGUscy5mb2N1c1Zpc2libGUsdGhpcy5zdGF0ZS5mb2N1c1Zpc2libGUpLCgwLGEuZGVmYXVsdCkoZSxtLHRoaXMuc3RhdGUuZm9jdXNWaXNpYmxlKSxlKSx1KSx3PWM7XCJidXR0b25cIj09PXcmJkUuaHJlZiYmKHc9XCJhXCIpO3ZhciBrPXt9O3JldHVyblwiYnV0dG9uXCI9PT13PyhrLnR5cGU9dnx8XCJidXR0b25cIixrLmRpc2FibGVkPWQpOmsucm9sZT1cImJ1dHRvblwiLGYuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHcsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOngsb25CbHVyOnRoaXMuaGFuZGxlQmx1cixvbkZvY3VzOnRoaXMuaGFuZGxlRm9jdXMsb25LZXlEb3duOnRoaXMuaGFuZGxlS2V5RG93bixvbktleVVwOnRoaXMuaGFuZGxlS2V5VXAsb25Nb3VzZURvd246dGhpcy5oYW5kbGVNb3VzZURvd24sb25Nb3VzZUxlYXZlOnRoaXMuaGFuZGxlTW91c2VMZWF2ZSxvbk1vdXNlVXA6dGhpcy5oYW5kbGVNb3VzZVVwLG9uVG91Y2hFbmQ6dGhpcy5oYW5kbGVUb3VjaEVuZCxvblRvdWNoTW92ZTp0aGlzLmhhbmRsZVRvdWNoTW92ZSxvblRvdWNoU3RhcnQ6dGhpcy5oYW5kbGVUb3VjaFN0YXJ0LG9uQ29udGV4dE1lbnU6dGhpcy5oYW5kbGVDb250ZXh0TWVudSxyZWY6bix0YWJJbmRleDpkP1wiLTFcIjpofSxrLEUpLGwscHx8ZD9udWxsOmYuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHkuZGVmYXVsdCxudWxsLGYuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFMuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtpbm5lclJlZjp0aGlzLm9uUmlwcGxlUmVmLGNlbnRlcjpyfSxiKSkpKX19XSxbe2tleTpcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQuZm9jdXNWaXNpYmxlP3tmb2N1c1Zpc2libGU6ITEsbGFzdERpc2FibGVkOmUuZGlzYWJsZWR9OiF0LnByZXZTdGF0ZSYmZS5kaXNhYmxlZCYmdC5mb2N1c1Zpc2libGU/e2ZvY3VzVmlzaWJsZTohMSxsYXN0RGlzYWJsZWQ6ZS5kaXNhYmxlZH06e2xhc3REaXNhYmxlZDplLmRpc2FibGVkfX19XSksdH0oZi5kZWZhdWx0LkNvbXBvbmVudCk7dy5kZWZhdWx0UHJvcHM9e2NlbnRlclJpcHBsZTohMSxjb21wb25lbnQ6XCJidXR0b25cIixkaXNhYmxlUmlwcGxlOiExLGRpc2FibGVUb3VjaFJpcHBsZTohMSxmb2N1c1JpcHBsZTohMSx0YWJJbmRleDpcIjBcIix0eXBlOlwiYnV0dG9uXCJ9O3ZhciBrPSgwLGIuZGVmYXVsdCkoeCx7bmFtZTpcIk11aUJ1dHRvbkJhc2VcIn0pKHcpO3QuZGVmYXVsdD1rfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobigxMikpLGE9cihuKDEzKSksaT1yKG4oMTQpKSxsPXIobigxNSkpLHM9cihuKDE2KSksdT1yKG4oMCkpLGM9KHIobigxKSksbig3KSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjsoMCxvLmRlZmF1bHQpKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkocikscz0wO3M8cjtzKyspYVtzXT1hcmd1bWVudHNbc107cmV0dXJuKG49KDAsaS5kZWZhdWx0KSh0aGlzLChlPSgwLGwuZGVmYXVsdCkodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KGEpKSkpLm1vdW50ZWQ9ITEsbi5zdGF0ZT17bW91bnRlZDohMX0sbn1yZXR1cm4oMCxzLmRlZmF1bHQpKHQsZSksKDAsYS5kZWZhdWx0KSh0LFt7a2V5OlwiY29tcG9uZW50RGlkTW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5tb3VudGVkPSEwLHRoaXMucHJvcHMuZGVmZXI/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7ZS5tb3VudGVkJiZlLnNldFN0YXRlKHttb3VudGVkOiEwfSl9KX0pOnRoaXMuc2V0U3RhdGUoe21vdW50ZWQ6ITB9KX19LHtrZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3VudGVkPSExfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY2hpbGRyZW4sbj1lLmZhbGxiYWNrO3JldHVybiB0aGlzLnN0YXRlLm1vdW50ZWQ/dDpufX1dKSx0fSh1LmRlZmF1bHQuQ29tcG9uZW50KSk7Yy5kZWZhdWx0UHJvcHM9e2RlZmVyOiExLGZhbGxiYWNrOm51bGx9O3ZhciBkPWM7dC5kZWZhdWx0PWR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGV0ZWN0Rm9jdXNWaXNpYmxlPWZ1bmN0aW9uIGUodCxuLHIpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXToxO3QuZm9jdXNWaXNpYmxlVGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGw9KDAsby5kZWZhdWx0KShuKSxzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYWN0aXZlRWxlbWVudDtmb3IoO3QmJnQuc2hhZG93Um9vdCYmdC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7KXQ9dC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIHR9KGwpO2EuZm9jdXNLZXlQcmVzc2VkJiYocz09PW58fG4uY29udGFpbnMocykpP3IoKTppPHQuZm9jdXNWaXNpYmxlTWF4Q2hlY2tUaW1lcyYmZSh0LG4scixpKzEpfSx0LmZvY3VzVmlzaWJsZUNoZWNrVGltZSl9LHQubGlzdGVuRm9yRm9jdXNLZXlzPWZ1bmN0aW9uKGUpe2UuYWRkRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsbCl9O3IobigxNykpO3ZhciBvPXIobigyNikpLGE9e2ZvY3VzS2V5UHJlc3NlZDohMSxrZXlVcEV2ZW50VGltZW91dDotMX07dmFyIGk9WzksMTMsMjcsMzIsMzcsMzgsMzksNDBdO3ZhciBsPWZ1bmN0aW9uKGUpeyhmdW5jdGlvbihlKXtyZXR1cm4gaS5pbmRleE9mKGUua2V5Q29kZSk+LTF9KShlKSYmKGEuZm9jdXNLZXlQcmVzc2VkPSEwLGNsZWFyVGltZW91dChhLmtleVVwRXZlbnRUaW1lb3V0KSxhLmtleVVwRXZlbnRUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmZvY3VzS2V5UHJlc3NlZD0hMX0sNTAwKSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dC5ERUxBWV9SSVBQTEU9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDE0MCkpLGw9cihuKDEyKSkscz1yKG4oMTMpKSx1PXIobigxNCkpLGM9cihuKDE1KSksZD1yKG4oMTYpKSxwPXIobig0NSkpLGY9cihuKDApKSxtPShyKG4oMSkpLHIobigyMikpKSxnPXIobig0MzcpKSxoPXIobig2KSksYj1yKG4oOCkpLHk9cihuKDQzOSkpLHY9NTUwLFM9ODA7dC5ERUxBWV9SSVBQTEU9Uzt2YXIgRT1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDp7ZGlzcGxheTpcImJsb2NrXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLG92ZXJmbG93OlwiaGlkZGVuXCIsYm9yZGVyUmFkaXVzOlwiaW5oZXJpdFwiLHdpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIixsZWZ0OjAsdG9wOjAscG9pbnRlckV2ZW50czpcIm5vbmVcIix6SW5kZXg6MH0scmlwcGxlOnt3aWR0aDo1MCxoZWlnaHQ6NTAsbGVmdDowLHRvcDowLG9wYWNpdHk6MCxwb3NpdGlvbjpcImFic29sdXRlXCJ9LHJpcHBsZVZpc2libGU6e29wYWNpdHk6LjMsdHJhbnNmb3JtOlwic2NhbGUoMSlcIixhbmltYXRpb246XCJtdWktcmlwcGxlLWVudGVyIFwiLmNvbmNhdCh2LFwibXMgXCIpLmNvbmNhdChlLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlSW5PdXQpLGFuaW1hdGlvbk5hbWU6XCIkbXVpLXJpcHBsZS1lbnRlclwifSxyaXBwbGVQdWxzYXRlOnthbmltYXRpb25EdXJhdGlvbjpcIlwiLmNvbmNhdChlLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXIsXCJtc1wiKX0sY2hpbGQ6e29wYWNpdHk6MSxkaXNwbGF5OlwiYmxvY2tcIix3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCIsYm9yZGVyUmFkaXVzOlwiNTAlXCIsYmFja2dyb3VuZENvbG9yOlwiY3VycmVudENvbG9yXCJ9LGNoaWxkTGVhdmluZzp7b3BhY2l0eTowLGFuaW1hdGlvbjpcIm11aS1yaXBwbGUtZXhpdCBcIi5jb25jYXQodixcIm1zIFwiKS5jb25jYXQoZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZUluT3V0KSxhbmltYXRpb25OYW1lOlwiJG11aS1yaXBwbGUtZXhpdFwifSxjaGlsZFB1bHNhdGU6e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixsZWZ0OjAsdG9wOjAsYW5pbWF0aW9uOlwibXVpLXJpcHBsZS1wdWxzYXRlIDI1MDBtcyBcIi5jb25jYXQoZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZUluT3V0LFwiIDIwMG1zIGluZmluaXRlXCIpLGFuaW1hdGlvbk5hbWU6XCIkbXVpLXJpcHBsZS1wdWxzYXRlXCJ9LFwiQGtleWZyYW1lcyBtdWktcmlwcGxlLWVudGVyXCI6e1wiMCVcIjp7dHJhbnNmb3JtOlwic2NhbGUoMClcIixvcGFjaXR5Oi4xfSxcIjEwMCVcIjp7dHJhbnNmb3JtOlwic2NhbGUoMSlcIixvcGFjaXR5Oi4zfX0sXCJAa2V5ZnJhbWVzIG11aS1yaXBwbGUtZXhpdFwiOntcIjAlXCI6e29wYWNpdHk6MX0sXCIxMDAlXCI6e29wYWNpdHk6MH19LFwiQGtleWZyYW1lcyBtdWktcmlwcGxlLXB1bHNhdGVcIjp7XCIwJVwiOnt0cmFuc2Zvcm06XCJzY2FsZSgxKVwifSxcIjUwJVwiOnt0cmFuc2Zvcm06XCJzY2FsZSgwLjkyKVwifSxcIjEwMCVcIjp7dHJhbnNmb3JtOlwic2NhbGUoMSlcIn19fX07dC5zdHlsZXM9RTt2YXIgeD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjsoMCxsLmRlZmF1bHQpKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuKG49KDAsdS5kZWZhdWx0KSh0aGlzLChlPSgwLGMuZGVmYXVsdCkodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8pKSkpLnN0YXRlPXtuZXh0S2V5OjAscmlwcGxlczpbXX0sbi5wdWxzYXRlPWZ1bmN0aW9uKCl7bi5zdGFydCh7fSx7cHVsc2F0ZTohMH0pfSxuLnN0YXJ0PWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LHI9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsbz10LnB1bHNhdGUsYT12b2lkIDAhPT1vJiZvLGk9dC5jZW50ZXIsbD12b2lkIDA9PT1pP24ucHJvcHMuY2VudGVyfHx0LnB1bHNhdGU6aSxzPXQuZmFrZUVsZW1lbnQsdT12b2lkIDAhPT1zJiZzO2lmKFwibW91c2Vkb3duXCI9PT1lLnR5cGUmJm4uaWdub3JpbmdNb3VzZURvd24pbi5pZ25vcmluZ01vdXNlRG93bj0hMTtlbHNle1widG91Y2hzdGFydFwiPT09ZS50eXBlJiYobi5pZ25vcmluZ01vdXNlRG93bj0hMCk7dmFyIGMsZCxmLGc9dT9udWxsOm0uZGVmYXVsdC5maW5kRE9NTm9kZSgoMCxwLmRlZmF1bHQpKCgwLHAuZGVmYXVsdCkobikpKSxoPWc/Zy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTp7d2lkdGg6MCxoZWlnaHQ6MCxsZWZ0OjAsdG9wOjB9O2lmKGx8fDA9PT1lLmNsaWVudFgmJjA9PT1lLmNsaWVudFl8fCFlLmNsaWVudFgmJiFlLnRvdWNoZXMpYz1NYXRoLnJvdW5kKGgud2lkdGgvMiksZD1NYXRoLnJvdW5kKGguaGVpZ2h0LzIpO2Vsc2V7dmFyIGI9ZS5jbGllbnRYP2UuY2xpZW50WDplLnRvdWNoZXNbMF0uY2xpZW50WCx5PWUuY2xpZW50WT9lLmNsaWVudFk6ZS50b3VjaGVzWzBdLmNsaWVudFk7Yz1NYXRoLnJvdW5kKGItaC5sZWZ0KSxkPU1hdGgucm91bmQoeS1oLnRvcCl9aWYobCkoZj1NYXRoLnNxcnQoKDIqTWF0aC5wb3coaC53aWR0aCwyKStNYXRoLnBvdyhoLmhlaWdodCwyKSkvMykpJTI9PTAmJihmKz0xKTtlbHNle3ZhciB2PTIqTWF0aC5tYXgoTWF0aC5hYnMoKGc/Zy5jbGllbnRXaWR0aDowKS1jKSxjKSsyLEU9MipNYXRoLm1heChNYXRoLmFicygoZz9nLmNsaWVudEhlaWdodDowKS1kKSxkKSsyO2Y9TWF0aC5zcXJ0KE1hdGgucG93KHYsMikrTWF0aC5wb3coRSwyKSl9ZS50b3VjaGVzPyhuLnN0YXJ0VGltZXJDb21taXQ9ZnVuY3Rpb24oKXtuLnN0YXJ0Q29tbWl0KHtwdWxzYXRlOmEscmlwcGxlWDpjLHJpcHBsZVk6ZCxyaXBwbGVTaXplOmYsY2I6cn0pfSxuLnN0YXJ0VGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe24uc3RhcnRUaW1lckNvbW1pdCYmKG4uc3RhcnRUaW1lckNvbW1pdCgpLG4uc3RhcnRUaW1lckNvbW1pdD1udWxsKX0sUykpOm4uc3RhcnRDb21taXQoe3B1bHNhdGU6YSxyaXBwbGVYOmMscmlwcGxlWTpkLHJpcHBsZVNpemU6ZixjYjpyfSl9fSxuLnN0YXJ0Q29tbWl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUucHVsc2F0ZSxyPWUucmlwcGxlWCxvPWUucmlwcGxlWSxhPWUucmlwcGxlU2l6ZSxsPWUuY2I7bi5zZXRTdGF0ZShmdW5jdGlvbihlKXtyZXR1cm57bmV4dEtleTplLm5leHRLZXkrMSxyaXBwbGVzOltdLmNvbmNhdCgoMCxpLmRlZmF1bHQpKGUucmlwcGxlcyksW2YuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHkuZGVmYXVsdCx7a2V5OmUubmV4dEtleSxjbGFzc2VzOm4ucHJvcHMuY2xhc3Nlcyx0aW1lb3V0OntleGl0OnYsZW50ZXI6dn0scHVsc2F0ZTp0LHJpcHBsZVg6cixyaXBwbGVZOm8scmlwcGxlU2l6ZTphfSldKX19LGwpfSxuLnN0b3A9ZnVuY3Rpb24oZSx0KXtjbGVhclRpbWVvdXQobi5zdGFydFRpbWVyKTt2YXIgcj1uLnN0YXRlLnJpcHBsZXM7aWYoXCJ0b3VjaGVuZFwiPT09ZS50eXBlJiZuLnN0YXJ0VGltZXJDb21taXQpcmV0dXJuIGUucGVyc2lzdCgpLG4uc3RhcnRUaW1lckNvbW1pdCgpLG4uc3RhcnRUaW1lckNvbW1pdD1udWxsLHZvaWQobi5zdGFydFRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLnN0b3AoZSx0KX0pKTtuLnN0YXJ0VGltZXJDb21taXQ9bnVsbCxyJiZyLmxlbmd0aCYmbi5zZXRTdGF0ZSh7cmlwcGxlczpyLnNsaWNlKDEpfSx0KX0sbn1yZXR1cm4oMCxkLmRlZmF1bHQpKHQsZSksKDAscy5kZWZhdWx0KSh0LFt7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLnN0YXJ0VGltZXIpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PShlLmNlbnRlcixlLmNsYXNzZXMpLG49ZS5jbGFzc05hbWUscj0oMCxhLmRlZmF1bHQpKGUsW1wiY2VudGVyXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIl0pO3JldHVybiBmLmRlZmF1bHQuY3JlYXRlRWxlbWVudChnLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7Y29tcG9uZW50Olwic3BhblwiLGVudGVyOiEwLGV4aXQ6ITAsY2xhc3NOYW1lOigwLGguZGVmYXVsdCkodC5yb290LG4pfSxyKSx0aGlzLnN0YXRlLnJpcHBsZXMpfX1dKSx0fShmLmRlZmF1bHQuUHVyZUNvbXBvbmVudCk7eC5kZWZhdWx0UHJvcHM9e2NlbnRlcjohMX07dmFyIHc9KDAsYi5kZWZhdWx0KShFLHtmbGlwOiExLG5hbWU6XCJNdWlUb3VjaFJpcHBsZVwifSkoeCk7dC5kZWZhdWx0PXd9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLG49bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07cmV0dXJuIG59fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8XCJbb2JqZWN0IEFyZ3VtZW50c11cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPWwobigxKSksbz1sKG4oMCkpLGE9bigxMzMpLGk9big0MzgpO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHMoKXtyZXR1cm4ocz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHUoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9dmFyIGM9T2JqZWN0LnZhbHVlc3x8ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfSxkPWZ1bmN0aW9uKGUpe3ZhciB0LG47ZnVuY3Rpb24gcih0LG4pe3ZhciByLG89KHI9ZS5jYWxsKHRoaXMsdCxuKXx8dGhpcykuaGFuZGxlRXhpdGVkLmJpbmQodSh1KHIpKSk7cmV0dXJuIHIuc3RhdGU9e2hhbmRsZUV4aXRlZDpvLGZpcnN0UmVuZGVyOiEwfSxyfW49ZSwodD1yKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1uO3ZhciBhPXIucHJvdG90eXBlO3JldHVybiBhLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybnt0cmFuc2l0aW9uR3JvdXA6e2lzTW91bnRpbmc6IXRoaXMuYXBwZWFyZWR9fX0sYS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMuYXBwZWFyZWQ9ITAsdGhpcy5tb3VudGVkPSEwfSxhLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5tb3VudGVkPSExfSxyLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz1mdW5jdGlvbihlLHQpe3ZhciBuPXQuY2hpbGRyZW4scj10LmhhbmRsZUV4aXRlZDtyZXR1cm57Y2hpbGRyZW46dC5maXJzdFJlbmRlcj8oMCxpLmdldEluaXRpYWxDaGlsZE1hcHBpbmcpKGUscik6KDAsaS5nZXROZXh0Q2hpbGRNYXBwaW5nKShlLG4sciksZmlyc3RSZW5kZXI6ITF9fSxhLmhhbmRsZUV4aXRlZD1mdW5jdGlvbihlLHQpe3ZhciBuPSgwLGkuZ2V0Q2hpbGRNYXBwaW5nKSh0aGlzLnByb3BzLmNoaWxkcmVuKTtlLmtleSBpbiBufHwoZS5wcm9wcy5vbkV4aXRlZCYmZS5wcm9wcy5vbkV4aXRlZCh0KSx0aGlzLm1vdW50ZWQmJnRoaXMuc2V0U3RhdGUoZnVuY3Rpb24odCl7dmFyIG49cyh7fSx0LmNoaWxkcmVuKTtyZXR1cm4gZGVsZXRlIG5bZS5rZXldLHtjaGlsZHJlbjpufX0pKX0sYS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jb21wb25lbnQsbj1lLmNoaWxkRmFjdG9yeSxyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLFtcImNvbXBvbmVudFwiLFwiY2hpbGRGYWN0b3J5XCJdKSxhPWModGhpcy5zdGF0ZS5jaGlsZHJlbikubWFwKG4pO3JldHVybiBkZWxldGUgci5hcHBlYXIsZGVsZXRlIHIuZW50ZXIsZGVsZXRlIHIuZXhpdCxudWxsPT09dD9hOm8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KHQscixhKX0scn0oby5kZWZhdWx0LkNvbXBvbmVudCk7ZC5jaGlsZENvbnRleHRUeXBlcz17dHJhbnNpdGlvbkdyb3VwOnIuZGVmYXVsdC5vYmplY3QuaXNSZXF1aXJlZH0sZC5wcm9wVHlwZXM9e30sZC5kZWZhdWx0UHJvcHM9e2NvbXBvbmVudDpcImRpdlwiLGNoaWxkRmFjdG9yeTpmdW5jdGlvbihlKXtyZXR1cm4gZX19O3ZhciBwPSgwLGEucG9seWZpbGwpKGQpO3QuZGVmYXVsdD1wLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt0Ll9fZXNNb2R1bGU9ITAsdC5nZXRDaGlsZE1hcHBpbmc9byx0Lm1lcmdlQ2hpbGRNYXBwaW5ncz1hLHQuZ2V0SW5pdGlhbENoaWxkTWFwcGluZz1mdW5jdGlvbihlLHQpe3JldHVybiBvKGUuY2hpbGRyZW4sZnVuY3Rpb24obil7cmV0dXJuKDAsci5jbG9uZUVsZW1lbnQpKG4se29uRXhpdGVkOnQuYmluZChudWxsLG4pLGluOiEwLGFwcGVhcjppKG4sXCJhcHBlYXJcIixlKSxlbnRlcjppKG4sXCJlbnRlclwiLGUpLGV4aXQ6aShuLFwiZXhpdFwiLGUpfSl9KX0sdC5nZXROZXh0Q2hpbGRNYXBwaW5nPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbD1vKGUuY2hpbGRyZW4pLHM9YSh0LGwpO3JldHVybiBPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe3ZhciBhPXNbb107aWYoKDAsci5pc1ZhbGlkRWxlbWVudCkoYSkpe3ZhciB1PW8gaW4gdCxjPW8gaW4gbCxkPXRbb10scD0oMCxyLmlzVmFsaWRFbGVtZW50KShkKSYmIWQucHJvcHMuaW47IWN8fHUmJiFwP2N8fCF1fHxwP2MmJnUmJigwLHIuaXNWYWxpZEVsZW1lbnQpKGQpJiYoc1tvXT0oMCxyLmNsb25lRWxlbWVudCkoYSx7b25FeGl0ZWQ6bi5iaW5kKG51bGwsYSksaW46ZC5wcm9wcy5pbixleGl0OmkoYSxcImV4aXRcIixlKSxlbnRlcjppKGEsXCJlbnRlclwiLGUpfSkpOnNbb109KDAsci5jbG9uZUVsZW1lbnQpKGEse2luOiExfSk6c1tvXT0oMCxyLmNsb25lRWxlbWVudCkoYSx7b25FeGl0ZWQ6bi5iaW5kKG51bGwsYSksaW46ITAsZXhpdDppKGEsXCJleGl0XCIsZSksZW50ZXI6aShhLFwiZW50ZXJcIixlKX0pfX0pLHN9O3ZhciByPW4oMCk7ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGUmJnIuQ2hpbGRyZW4ubWFwKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bZS5rZXldPWZ1bmN0aW9uKGUpe3JldHVybiB0JiYoMCxyLmlzVmFsaWRFbGVtZW50KShlKT90KGUpOmV9KGUpfSksbn1mdW5jdGlvbiBhKGUsdCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gbiBpbiB0P3Rbbl06ZVtuXX1lPWV8fHt9LHQ9dHx8e307dmFyIHIsbz1PYmplY3QuY3JlYXRlKG51bGwpLGE9W107Zm9yKHZhciBpIGluIGUpaSBpbiB0P2EubGVuZ3RoJiYob1tpXT1hLGE9W10pOmEucHVzaChpKTt2YXIgbD17fTtmb3IodmFyIHMgaW4gdCl7aWYob1tzXSlmb3Iocj0wO3I8b1tzXS5sZW5ndGg7cisrKXt2YXIgdT1vW3NdW3JdO2xbb1tzXVtyXV09bih1KX1sW3NdPW4ocyl9Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKylsW2Fbcl1dPW4oYVtyXSk7cmV0dXJuIGx9ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIG51bGwhPW5bdF0/blt0XTplLnByb3BzW3RdfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMTIpKSxzPXIobigxMykpLHU9cihuKDE0KSksYz1yKG4oMTUpKSxkPXIobigxNikpLHA9cihuKDApKSxmPShyKG4oMSkpLHIobig2KSkpLG09cihuKDUxKSksZz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjsoMCxsLmRlZmF1bHQpKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuKG49KDAsdS5kZWZhdWx0KSh0aGlzLChlPSgwLGMuZGVmYXVsdCkodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8pKSkpLnN0YXRlPXt2aXNpYmxlOiExLGxlYXZpbmc6ITF9LG4uaGFuZGxlRW50ZXI9ZnVuY3Rpb24oKXtuLnNldFN0YXRlKHt2aXNpYmxlOiEwfSl9LG4uaGFuZGxlRXhpdD1mdW5jdGlvbigpe24uc2V0U3RhdGUoe2xlYXZpbmc6ITB9KX0sbn1yZXR1cm4oMCxkLmRlZmF1bHQpKHQsZSksKDAscy5kZWZhdWx0KSh0LFt7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0LG49dGhpcy5wcm9wcyxyPW4uY2xhc3NlcyxsPW4uY2xhc3NOYW1lLHM9bi5wdWxzYXRlLHU9bi5yaXBwbGVYLGM9bi5yaXBwbGVZLGQ9bi5yaXBwbGVTaXplLGc9KDAsaS5kZWZhdWx0KShuLFtcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwicHVsc2F0ZVwiLFwicmlwcGxlWFwiLFwicmlwcGxlWVwiLFwicmlwcGxlU2l6ZVwiXSksaD10aGlzLnN0YXRlLGI9aC52aXNpYmxlLHk9aC5sZWF2aW5nLHY9KDAsZi5kZWZhdWx0KShyLnJpcHBsZSwoZT17fSwoMCxhLmRlZmF1bHQpKGUsci5yaXBwbGVWaXNpYmxlLGIpLCgwLGEuZGVmYXVsdCkoZSxyLnJpcHBsZVB1bHNhdGUscyksZSksbCksUz17d2lkdGg6ZCxoZWlnaHQ6ZCx0b3A6LWQvMitjLGxlZnQ6LWQvMit1fSxFPSgwLGYuZGVmYXVsdCkoci5jaGlsZCwodD17fSwoMCxhLmRlZmF1bHQpKHQsci5jaGlsZExlYXZpbmcseSksKDAsYS5kZWZhdWx0KSh0LHIuY2hpbGRQdWxzYXRlLHMpLHQpKTtyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobS5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe29uRW50ZXI6dGhpcy5oYW5kbGVFbnRlcixvbkV4aXQ6dGhpcy5oYW5kbGVFeGl0fSxnKSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOnYsc3R5bGU6U30scC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse2NsYXNzTmFtZTpFfSkpKX19XSksdH0ocC5kZWZhdWx0LkNvbXBvbmVudCk7Zy5kZWZhdWx0UHJvcHM9e3B1bHNhdGU6ITF9O3ZhciBoPWc7dC5kZWZhdWx0PWh9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBmdW5jdGlvbihvKXtyJiZyLmNhbGwoZSxvKTt2YXIgYT0hMTtyZXR1cm4gby5kZWZhdWx0UHJldmVudGVkJiYoYT0hMCksZS5wcm9wcy5kaXNhYmxlVG91Y2hSaXBwbGUmJlwiQmx1clwiIT09dCYmKGE9ITApLCFhJiZlLnJpcHBsZSYmZS5yaXBwbGVbbl0obyksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5wcm9wc1tcIm9uXCIuY29uY2F0KHQpXSYmZS5wcm9wc1tcIm9uXCIuY29uY2F0KHQpXShvKSwhMH19O1widW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3cmJihyPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0pO3ZhciBvPXI7dC5kZWZhdWx0PW99LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDApKSxhPShyKG4oMSkpLHIobigxNDEpKSk7dmFyIGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbGlnbkl0ZW1zLG49ZS5jaGlsZHJlbixyPWUuZGVuc2U7cmV0dXJuIG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KGEuZGVmYXVsdC5Db25zdW1lcixudWxsLGZ1bmN0aW9uKGUpe3ZhciBpPXtkZW5zZTpyfHxlLmRlbnNlfHwhMSxhbGlnbkl0ZW1zOnR9O3JldHVybiBvLmRlZmF1bHQuY3JlYXRlRWxlbWVudChhLmRlZmF1bHQuUHJvdmlkZXIse3ZhbHVlOml9LG4oaSkpfSl9O3QuZGVmYXVsdD1pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig5KSksYT1yKG4oNSkpLGk9cihuKDQpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShyKG4oMTcpKSxuKDcpLHIobig4KSkpLGM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGUuc2hhZG93cy5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7dFtcImVsZXZhdGlvblwiLmNvbmNhdChuKV09e2JveFNoYWRvdzplfX0pLCgwLGkuZGVmYXVsdCkoe3Jvb3Q6e2JhY2tncm91bmRDb2xvcjplLnBhbGV0dGUuYmFja2dyb3VuZC5wYXBlcn0scm91bmRlZDp7Ym9yZGVyUmFkaXVzOmUuc2hhcGUuYm9yZGVyUmFkaXVzfX0sdCl9O2Z1bmN0aW9uIGQoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5jbGFzc05hbWUscj1lLmNvbXBvbmVudCx1PWUuc3F1YXJlLGM9ZS5lbGV2YXRpb24sZD0oMCxhLmRlZmF1bHQpKGUsW1wiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb21wb25lbnRcIixcInNxdWFyZVwiLFwiZWxldmF0aW9uXCJdKSxwPSgwLHMuZGVmYXVsdCkodC5yb290LHRbXCJlbGV2YXRpb25cIi5jb25jYXQoYyldLCgwLG8uZGVmYXVsdCkoe30sdC5yb3VuZGVkLCF1KSxuKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQociwoMCxpLmRlZmF1bHQpKHtjbGFzc05hbWU6cH0sZCkpfXQuc3R5bGVzPWMsZC5kZWZhdWx0UHJvcHM9e2NvbXBvbmVudDpcImRpdlwiLGVsZXZhdGlvbjoyLHNxdWFyZTohMX07dmFyIHA9KDAsdS5kZWZhdWx0KShjLHtuYW1lOlwiTXVpUGFwZXJcIn0pKGQpO3QuZGVmYXVsdD1wfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDEyKSksbD1yKG4oMTMpKSxzPXIobigxNCkpLHU9cihuKDE1KSksYz1yKG4oMTYpKSxkPXIobigwKSkscD0ocihuKDEpKSxyKG4oMjIpKSksZj0ocihuKDE3KSkscihuKDE0MikpKSxtPXIobigxNDMpKSxnPShuKDcpLHIobigyNikpKSxoPXIobig3OCkpLGI9bigyMSkseT1yKG4oOCkpLHY9cihuKDU0KSksUz1yKG4oODcpKSxFPXIobig4MCkpO2Z1bmN0aW9uIHgoZSx0KXt2YXIgbj0wO3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0P249dDpcImNlbnRlclwiPT09dD9uPWUuaGVpZ2h0LzI6XCJib3R0b21cIj09PXQmJihuPWUuaGVpZ2h0KSxufWZ1bmN0aW9uIHcoZSx0KXt2YXIgbj0wO3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0P249dDpcImNlbnRlclwiPT09dD9uPWUud2lkdGgvMjpcInJpZ2h0XCI9PT10JiYobj1lLndpZHRoKSxufWZ1bmN0aW9uIGsoZSl7cmV0dXJuW2UuaG9yaXpvbnRhbCxlLnZlcnRpY2FsXS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/XCJcIi5jb25jYXQoZSxcInB4XCIpOmV9KS5qb2luKFwiIFwiKX1mdW5jdGlvbiBfKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZSgpOmV9dmFyIFQ9e3BhcGVyOntwb3NpdGlvbjpcImFic29sdXRlXCIsb3ZlcmZsb3dZOlwiYXV0b1wiLG92ZXJmbG93WDpcImhpZGRlblwiLG1pbldpZHRoOjE2LG1pbkhlaWdodDoxNixtYXhXaWR0aDpcImNhbGMoMTAwJSAtIDMycHgpXCIsbWF4SGVpZ2h0OlwiY2FsYygxMDAlIC0gMzJweClcIixvdXRsaW5lOlwibm9uZVwifX07dC5zdHlsZXM9VDt2YXIgQT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGU7cmV0dXJuKDAsaS5kZWZhdWx0KSh0aGlzLHQpLChlPSgwLHMuZGVmYXVsdCkodGhpcywoMCx1LmRlZmF1bHQpKHQpLmNhbGwodGhpcykpKS5oYW5kbGVHZXRPZmZzZXRUb3A9eCxlLmhhbmRsZUdldE9mZnNldExlZnQ9dyxlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7ZS5oYW5kbGVSZXNpemUuY2xlYXIoKX0sZS5zZXRQb3NpdGlvbmluZ1N0eWxlcz1mdW5jdGlvbih0KXt2YXIgbj1lLmdldFBvc2l0aW9uaW5nU3R5bGUodCk7bnVsbCE9PW4udG9wJiYodC5zdHlsZS50b3A9bi50b3ApLG51bGwhPT1uLmxlZnQmJih0LnN0eWxlLmxlZnQ9bi5sZWZ0KSx0LnN0eWxlLnRyYW5zZm9ybU9yaWdpbj1uLnRyYW5zZm9ybU9yaWdpbn0sZS5nZXRQb3NpdGlvbmluZ1N0eWxlPWZ1bmN0aW9uKHQpe3ZhciBuPWUucHJvcHMscj1uLmFuY2hvckVsLG89bi5hbmNob3JSZWZlcmVuY2UsYT1uLm1hcmdpblRocmVzaG9sZCxpPWUuZ2V0Q29udGVudEFuY2hvck9mZnNldCh0KSxsPXt3aWR0aDp0Lm9mZnNldFdpZHRoLGhlaWdodDp0Lm9mZnNldEhlaWdodH0scz1lLmdldFRyYW5zZm9ybU9yaWdpbihsLGkpO2lmKFwibm9uZVwiPT09bylyZXR1cm57dG9wOm51bGwsbGVmdDpudWxsLHRyYW5zZm9ybU9yaWdpbjprKHMpfTt2YXIgdT1lLmdldEFuY2hvck9mZnNldChpKSxjPXUudG9wLXMudmVydGljYWwsZD11LmxlZnQtcy5ob3Jpem9udGFsLHA9YytsLmhlaWdodCxmPWQrbC53aWR0aCxtPSgwLGguZGVmYXVsdCkoXyhyKSksZz1tLmlubmVySGVpZ2h0LWEsYj1tLmlubmVyV2lkdGgtYTtpZihjPGEpe3ZhciB5PWMtYTtjLT15LHMudmVydGljYWwrPXl9ZWxzZSBpZihwPmcpe3ZhciB2PXAtZztjLT12LHMudmVydGljYWwrPXZ9aWYoZDxhKXt2YXIgUz1kLWE7ZC09UyxzLmhvcml6b250YWwrPVN9ZWxzZSBpZihmPmIpe3ZhciBFPWYtYjtkLT1FLHMuaG9yaXpvbnRhbCs9RX1yZXR1cm57dG9wOlwiXCIuY29uY2F0KGMsXCJweFwiKSxsZWZ0OlwiXCIuY29uY2F0KGQsXCJweFwiKSx0cmFuc2Zvcm1PcmlnaW46ayhzKX19LGUuaGFuZGxlRW50ZXJpbmc9ZnVuY3Rpb24odCl7ZS5wcm9wcy5vbkVudGVyaW5nJiZlLnByb3BzLm9uRW50ZXJpbmcodCksZS5zZXRQb3NpdGlvbmluZ1N0eWxlcyh0KX0sXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmKGUuaGFuZGxlUmVzaXplPSgwLGYuZGVmYXVsdCkoZnVuY3Rpb24oKXtlLnByb3BzLm9wZW4mJmUuc2V0UG9zaXRpb25pbmdTdHlsZXMoZS5wYXBlclJlZil9LDE2NikpLGV9cmV0dXJuKDAsYy5kZWZhdWx0KSh0LGUpLCgwLGwuZGVmYXVsdCkodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnByb3BzLmFjdGlvbiYmdGhpcy5wcm9wcy5hY3Rpb24oe3VwZGF0ZVBvc2l0aW9uOnRoaXMuaGFuZGxlUmVzaXplfSl9fSx7a2V5OlwiZ2V0QW5jaG9yT2Zmc2V0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQuYW5jaG9yRWwscj10LmFuY2hvck9yaWdpbixvPXQuYW5jaG9yUmVmZXJlbmNlLGE9dC5hbmNob3JQb3NpdGlvbjtpZihcImFuY2hvclBvc2l0aW9uXCI9PT1vKXJldHVybiBhO3ZhciBpPShfKG4pfHwoMCxnLmRlZmF1bHQpKHRoaXMucGFwZXJSZWYpLmJvZHkpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9MD09PWU/ci52ZXJ0aWNhbDpcImNlbnRlclwiO3JldHVybnt0b3A6aS50b3ArdGhpcy5oYW5kbGVHZXRPZmZzZXRUb3AoaSxsKSxsZWZ0OmkubGVmdCt0aGlzLmhhbmRsZUdldE9mZnNldExlZnQoaSxyLmhvcml6b250YWwpfX19LHtrZXk6XCJnZXRDb250ZW50QW5jaG9yT2Zmc2V0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQuZ2V0Q29udGVudEFuY2hvckVsLHI9dC5hbmNob3JSZWZlcmVuY2Usbz0wO2lmKG4mJlwiYW5jaG9yRWxcIj09PXIpe3ZhciBhPW4oZSk7aWYoYSYmZS5jb250YWlucyhhKSl7dmFyIGk9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dCxyPTA7biYmbiE9PWU7KXIrPShuPW4ucGFyZW50Tm9kZSkuc2Nyb2xsVG9wO3JldHVybiByfShlLGEpO289YS5vZmZzZXRUb3ArYS5jbGllbnRIZWlnaHQvMi1pfHwwfX1yZXR1cm4gb319LHtrZXk6XCJnZXRUcmFuc2Zvcm1PcmlnaW5cIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCxuPXRoaXMucHJvcHMudHJhbnNmb3JtT3JpZ2luO3JldHVybnt2ZXJ0aWNhbDp0aGlzLmhhbmRsZUdldE9mZnNldFRvcChlLG4udmVydGljYWwpK3QsaG9yaXpvbnRhbDp0aGlzLmhhbmRsZUdldE9mZnNldExlZnQoZSxuLmhvcml6b250YWwpfX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49KHQuYWN0aW9uLHQuYW5jaG9yRWwpLHI9KHQuYW5jaG9yT3JpZ2luLHQuYW5jaG9yUG9zaXRpb24sdC5hbmNob3JSZWZlcmVuY2UsdC5jaGlsZHJlbiksaT10LmNsYXNzZXMsbD10LmNvbnRhaW5lcixzPXQuZWxldmF0aW9uLHU9KHQuZ2V0Q29udGVudEFuY2hvckVsLHQubWFyZ2luVGhyZXNob2xkLHQuTW9kYWxDbGFzc2VzKSxjPXQub25FbnRlcixmPXQub25FbnRlcmVkLGg9KHQub25FbnRlcmluZyx0Lm9uRXhpdCkseT10Lm9uRXhpdGVkLFM9dC5vbkV4aXRpbmcseD10Lm9wZW4sdz10LlBhcGVyUHJvcHMsaz10LnJvbGUsVD0odC50cmFuc2Zvcm1PcmlnaW4sdC5UcmFuc2l0aW9uQ29tcG9uZW50KSxBPXQudHJhbnNpdGlvbkR1cmF0aW9uLEM9dC5UcmFuc2l0aW9uUHJvcHMsTz12b2lkIDA9PT1DP3t9OkMsST0oMCxhLmRlZmF1bHQpKHQsW1wiYWN0aW9uXCIsXCJhbmNob3JFbFwiLFwiYW5jaG9yT3JpZ2luXCIsXCJhbmNob3JQb3NpdGlvblwiLFwiYW5jaG9yUmVmZXJlbmNlXCIsXCJjaGlsZHJlblwiLFwiY2xhc3Nlc1wiLFwiY29udGFpbmVyXCIsXCJlbGV2YXRpb25cIixcImdldENvbnRlbnRBbmNob3JFbFwiLFwibWFyZ2luVGhyZXNob2xkXCIsXCJNb2RhbENsYXNzZXNcIixcIm9uRW50ZXJcIixcIm9uRW50ZXJlZFwiLFwib25FbnRlcmluZ1wiLFwib25FeGl0XCIsXCJvbkV4aXRlZFwiLFwib25FeGl0aW5nXCIsXCJvcGVuXCIsXCJQYXBlclByb3BzXCIsXCJyb2xlXCIsXCJ0cmFuc2Zvcm1PcmlnaW5cIixcIlRyYW5zaXRpb25Db21wb25lbnRcIixcInRyYW5zaXRpb25EdXJhdGlvblwiLFwiVHJhbnNpdGlvblByb3BzXCJdKSxOPUE7XCJhdXRvXCIhPT1BfHxULm11aVN1cHBvcnRBdXRvfHwoTj12b2lkIDApO3ZhciBSPWx8fChuPygwLGcuZGVmYXVsdCkoXyhuKSkuYm9keTp2b2lkIDApO3JldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh2LmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7Y2xhc3Nlczp1LGNvbnRhaW5lcjpSLG9wZW46eCxCYWNrZHJvcFByb3BzOntpbnZpc2libGU6ITB9fSxJKSxkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChULCgwLG8uZGVmYXVsdCkoe2FwcGVhcjohMCxpbjp4LG9uRW50ZXI6YyxvbkVudGVyZWQ6ZixvbkV4aXQ6aCxvbkV4aXRlZDp5LG9uRXhpdGluZzpTLHJvbGU6ayx0aW1lb3V0Ok59LE8se29uRW50ZXJpbmc6KDAsYi5jcmVhdGVDaGFpbmVkRnVuY3Rpb24pKHRoaXMuaGFuZGxlRW50ZXJpbmcsTy5vbkVudGVyaW5nKX0pLGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEUuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6aS5wYXBlcixlbGV2YXRpb246cyxyZWY6ZnVuY3Rpb24odCl7ZS5wYXBlclJlZj1wLmRlZmF1bHQuZmluZERPTU5vZGUodCl9fSx3KSxkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtLmRlZmF1bHQse3RhcmdldDpcIndpbmRvd1wiLG9uUmVzaXplOnRoaXMuaGFuZGxlUmVzaXplfSkscikpKX19XSksdH0oZC5kZWZhdWx0LkNvbXBvbmVudCk7QS5kZWZhdWx0UHJvcHM9e2FuY2hvclJlZmVyZW5jZTpcImFuY2hvckVsXCIsYW5jaG9yT3JpZ2luOnt2ZXJ0aWNhbDpcInRvcFwiLGhvcml6b250YWw6XCJsZWZ0XCJ9LGVsZXZhdGlvbjo4LG1hcmdpblRocmVzaG9sZDoxNix0cmFuc2Zvcm1PcmlnaW46e3ZlcnRpY2FsOlwidG9wXCIsaG9yaXpvbnRhbDpcImxlZnRcIn0sVHJhbnNpdGlvbkNvbXBvbmVudDpTLmRlZmF1bHQsdHJhbnNpdGlvbkR1cmF0aW9uOlwiYXV0b1wifTt2YXIgQz0oMCx5LmRlZmF1bHQpKFQse25hbWU6XCJNdWlQb3BvdmVyXCJ9KShBKTt0LmRlZmF1bHQ9Q30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMTIpKSxzPXIobigxMykpLHU9cihuKDE0KSksYz1yKG4oMTUpKSxkPXIobigxNikpLHA9cihuKDQ1KSksZj1yKG4oMCkpLG09cihuKDIyKSksZz0ocihuKDEpKSxyKG4oNikpKSxoPShyKG4oMTcpKSxuKDcpLHIobigyNikpKSxiPXIobig4MikpLHk9cihuKDgzKSksdj1uKDIxKSxTPXIobig4KSksRT1yKG4oMTQ0KSkseD1yKG4oODQpKSx3PW4oMTQ4KTtmdW5jdGlvbiBrKGUpe3JldHVybiEhZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5wcm9wcy5oYXNPd25Qcm9wZXJ0eShcImluXCIpfXZhciBfPWZ1bmN0aW9uKGUpe3JldHVybntyb290Ontwb3NpdGlvbjpcImZpeGVkXCIsekluZGV4OmUuekluZGV4Lm1vZGFsLHJpZ2h0OjAsYm90dG9tOjAsdG9wOjAsbGVmdDowfSxoaWRkZW46e3Zpc2liaWxpdHk6XCJoaWRkZW5cIn19fTt0LnN0eWxlcz1fO3ZhciBUPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIG47cmV0dXJuKDAsbC5kZWZhdWx0KSh0aGlzLHQpLChuPSgwLHUuZGVmYXVsdCkodGhpcywoMCxjLmRlZmF1bHQpKHQpLmNhbGwodGhpcykpKS5tb3VudGVkPSExLG4uaGFuZGxlT3Blbj1mdW5jdGlvbigpe3ZhciBlPSgwLGguZGVmYXVsdCkobi5tb3VudE5vZGUpLHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2UoKTplLG0uZGVmYXVsdC5maW5kRE9NTm9kZShlKXx8dH0obi5wcm9wcy5jb250YWluZXIsZS5ib2R5KTtuLnByb3BzLm1hbmFnZXIuYWRkKCgwLHAuZGVmYXVsdCkoKDAscC5kZWZhdWx0KShuKSksdCksZS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIixuLmVuZm9yY2VGb2N1cywhMCksbi5kaWFsb2dSZWYmJm4uaGFuZGxlT3BlbmVkKCl9LG4uaGFuZGxlUmVuZGVyZWQ9ZnVuY3Rpb24oKXtuLnByb3BzLm9uUmVuZGVyZWQmJm4ucHJvcHMub25SZW5kZXJlZCgpLG4ucHJvcHMub3Blbj9uLmhhbmRsZU9wZW5lZCgpOigwLHcuYXJpYUhpZGRlbikobi5tb2RhbFJlZiwhMCl9LG4uaGFuZGxlT3BlbmVkPWZ1bmN0aW9uKCl7bi5hdXRvRm9jdXMoKSxuLnByb3BzLm1hbmFnZXIubW91bnQoKDAscC5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKG4pKSksbi5tb2RhbFJlZi5zY3JvbGxUb3A9MH0sbi5oYW5kbGVDbG9zZT1mdW5jdGlvbihlKXtrKG4ucHJvcHMpJiZuLnByb3BzLmNsb3NlQWZ0ZXJUcmFuc2l0aW9uJiZcInVubW91bnRcIiE9PWV8fG4ucHJvcHMubWFuYWdlci5yZW1vdmUoKDAscC5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKG4pKSksKDAsaC5kZWZhdWx0KShuLm1vdW50Tm9kZSkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsbi5lbmZvcmNlRm9jdXMsITApLG4ucmVzdG9yZUxhc3RGb2N1cygpfSxuLmhhbmRsZUV4aXRlZD1mdW5jdGlvbigpe24ucHJvcHMuY2xvc2VBZnRlclRyYW5zaXRpb24mJm4ucHJvcHMubWFuYWdlci5yZW1vdmUoKDAscC5kZWZhdWx0KSgoMCxwLmRlZmF1bHQpKG4pKSksbi5zZXRTdGF0ZSh7ZXhpdGVkOiEwfSl9LG4uaGFuZGxlQmFja2Ryb3BDbGljaz1mdW5jdGlvbihlKXtlLnRhcmdldD09PWUuY3VycmVudFRhcmdldCYmKG4ucHJvcHMub25CYWNrZHJvcENsaWNrJiZuLnByb3BzLm9uQmFja2Ryb3BDbGljayhlKSwhbi5wcm9wcy5kaXNhYmxlQmFja2Ryb3BDbGljayYmbi5wcm9wcy5vbkNsb3NlJiZuLnByb3BzLm9uQ2xvc2UoZSxcImJhY2tkcm9wQ2xpY2tcIikpfSxuLmhhbmRsZUtleURvd249ZnVuY3Rpb24oZSl7XCJFc2NhcGVcIj09PWUua2V5JiZuLmlzVG9wTW9kYWwoKSYmIWUuZGVmYXVsdFByZXZlbnRlZCYmKGUuc3RvcFByb3BhZ2F0aW9uKCksbi5wcm9wcy5vbkVzY2FwZUtleURvd24mJm4ucHJvcHMub25Fc2NhcGVLZXlEb3duKGUpLCFuLnByb3BzLmRpc2FibGVFc2NhcGVLZXlEb3duJiZuLnByb3BzLm9uQ2xvc2UmJm4ucHJvcHMub25DbG9zZShlLFwiZXNjYXBlS2V5RG93blwiKSl9LG4uZW5mb3JjZUZvY3VzPWZ1bmN0aW9uKCl7aWYobi5pc1RvcE1vZGFsKCkmJiFuLnByb3BzLmRpc2FibGVFbmZvcmNlRm9jdXMmJm4ubW91bnRlZCYmbi5kaWFsb2dSZWYpe3ZhciBlPSgwLGguZGVmYXVsdCkobi5tb3VudE5vZGUpLmFjdGl2ZUVsZW1lbnQ7bi5kaWFsb2dSZWYuY29udGFpbnMoZSl8fG4uZGlhbG9nUmVmLmZvY3VzKCl9fSxuLmhhbmRsZVBvcnRhbFJlZj1mdW5jdGlvbihlKXtuLm1vdW50Tm9kZT1lP2UuZ2V0TW91bnROb2RlKCk6ZX0sbi5oYW5kbGVNb2RhbFJlZj1mdW5jdGlvbihlKXtuLm1vZGFsUmVmPWV9LG4ub25Sb290UmVmPWZ1bmN0aW9uKGUpe24uZGlhbG9nUmVmPWV9LG4uc3RhdGU9e2V4aXRlZDohZS5vcGVufSxufXJldHVybigwLGQuZGVmYXVsdCkodCxlKSwoMCxzLmRlZmF1bHQpKHQsW3trZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3VudGVkPSEwLHRoaXMucHJvcHMub3BlbiYmdGhpcy5oYW5kbGVPcGVuKCl9fSx7a2V5OlwiY29tcG9uZW50RGlkVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5vcGVuJiYhdGhpcy5wcm9wcy5vcGVuP3RoaXMuaGFuZGxlQ2xvc2UoKTohZS5vcGVuJiZ0aGlzLnByb3BzLm9wZW4mJih0aGlzLmxhc3RGb2N1cz0oMCxoLmRlZmF1bHQpKHRoaXMubW91bnROb2RlKS5hY3RpdmVFbGVtZW50LHRoaXMuaGFuZGxlT3BlbigpKX19LHtrZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3VudGVkPSExLCh0aGlzLnByb3BzLm9wZW58fGsodGhpcy5wcm9wcykmJiF0aGlzLnN0YXRlLmV4aXRlZCkmJnRoaXMuaGFuZGxlQ2xvc2UoXCJ1bm1vdW50XCIpfX0se2tleTpcImF1dG9Gb2N1c1wiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMucHJvcHMuZGlzYWJsZUF1dG9Gb2N1cyYmdGhpcy5kaWFsb2dSZWYpe3ZhciBlPSgwLGguZGVmYXVsdCkodGhpcy5tb3VudE5vZGUpLmFjdGl2ZUVsZW1lbnQ7dGhpcy5kaWFsb2dSZWYuY29udGFpbnMoZSl8fCh0aGlzLmRpYWxvZ1JlZi5oYXNBdHRyaWJ1dGUoXCJ0YWJJbmRleFwiKXx8dGhpcy5kaWFsb2dSZWYuc2V0QXR0cmlidXRlKFwidGFiSW5kZXhcIiwtMSksdGhpcy5sYXN0Rm9jdXM9ZSx0aGlzLmRpYWxvZ1JlZi5mb2N1cygpKX19fSx7a2V5OlwicmVzdG9yZUxhc3RGb2N1c1wiLHZhbHVlOmZ1bmN0aW9uKCl7IXRoaXMucHJvcHMuZGlzYWJsZVJlc3RvcmVGb2N1cyYmdGhpcy5sYXN0Rm9jdXMmJih0aGlzLmxhc3RGb2N1cy5mb2N1cyYmdGhpcy5sYXN0Rm9jdXMuZm9jdXMoKSx0aGlzLmxhc3RGb2N1cz1udWxsKX19LHtrZXk6XCJpc1RvcE1vZGFsXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5tYW5hZ2VyLmlzVG9wTW9kYWwodGhpcyl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5CYWNrZHJvcENvbXBvbmVudCxuPWUuQmFja2Ryb3BQcm9wcyxyPWUuY2hpbGRyZW4sbD1lLmNsYXNzZXMscz1lLmNsYXNzTmFtZSx1PShlLmNsb3NlQWZ0ZXJUcmFuc2l0aW9uLGUuY29udGFpbmVyKSxjPShlLmRpc2FibGVBdXRvRm9jdXMsZS5kaXNhYmxlQmFja2Ryb3BDbGljayxlLmRpc2FibGVFbmZvcmNlRm9jdXMsZS5kaXNhYmxlRXNjYXBlS2V5RG93bixlLmRpc2FibGVQb3J0YWwpLGQ9KGUuZGlzYWJsZVJlc3RvcmVGb2N1cyxlLmhpZGVCYWNrZHJvcCkscD1lLmtlZXBNb3VudGVkLG09KGUubWFuYWdlcixlLm9uQmFja2Ryb3BDbGljayxlLm9uQ2xvc2UsZS5vbkVzY2FwZUtleURvd24sZS5vblJlbmRlcmVkLGUub3BlbiksaD0oMCxpLmRlZmF1bHQpKGUsW1wiQmFja2Ryb3BDb21wb25lbnRcIixcIkJhY2tkcm9wUHJvcHNcIixcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNsb3NlQWZ0ZXJUcmFuc2l0aW9uXCIsXCJjb250YWluZXJcIixcImRpc2FibGVBdXRvRm9jdXNcIixcImRpc2FibGVCYWNrZHJvcENsaWNrXCIsXCJkaXNhYmxlRW5mb3JjZUZvY3VzXCIsXCJkaXNhYmxlRXNjYXBlS2V5RG93blwiLFwiZGlzYWJsZVBvcnRhbFwiLFwiZGlzYWJsZVJlc3RvcmVGb2N1c1wiLFwiaGlkZUJhY2tkcm9wXCIsXCJrZWVwTW91bnRlZFwiLFwibWFuYWdlclwiLFwib25CYWNrZHJvcENsaWNrXCIsXCJvbkNsb3NlXCIsXCJvbkVzY2FwZUtleURvd25cIixcIm9uUmVuZGVyZWRcIixcIm9wZW5cIl0pLFM9dGhpcy5zdGF0ZS5leGl0ZWQsRT1rKHRoaXMucHJvcHMpO2lmKCFwJiYhbSYmKCFFfHxTKSlyZXR1cm4gbnVsbDt2YXIgeD17fTtyZXR1cm4gRSYmKHgub25FeGl0ZWQ9KDAsdi5jcmVhdGVDaGFpbmVkRnVuY3Rpb24pKHRoaXMuaGFuZGxlRXhpdGVkLHIucHJvcHMub25FeGl0ZWQpKSx2b2lkIDA9PT1yLnByb3BzLnJvbGUmJih4LnJvbGU9ci5wcm9wcy5yb2xlfHxcImRvY3VtZW50XCIpLHZvaWQgMD09PXIucHJvcHMudGFiSW5kZXgmJih4LnRhYkluZGV4PXIucHJvcHMudGFiSW5kZXh8fFwiLTFcIiksZi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoeS5kZWZhdWx0LHtyZWY6dGhpcy5oYW5kbGVQb3J0YWxSZWYsY29udGFpbmVyOnUsZGlzYWJsZVBvcnRhbDpjLG9uUmVuZGVyZWQ6dGhpcy5oYW5kbGVSZW5kZXJlZH0sZi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwoMCxvLmRlZmF1bHQpKHtyZWY6dGhpcy5oYW5kbGVNb2RhbFJlZixvbktleURvd246dGhpcy5oYW5kbGVLZXlEb3duLHJvbGU6XCJwcmVzZW50YXRpb25cIixjbGFzc05hbWU6KDAsZy5kZWZhdWx0KShsLnJvb3QscywoMCxhLmRlZmF1bHQpKHt9LGwuaGlkZGVuLFMpKX0saCksZD9udWxsOmYuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHQsKDAsby5kZWZhdWx0KSh7b3BlbjptLG9uQ2xpY2s6dGhpcy5oYW5kbGVCYWNrZHJvcENsaWNrfSxuKSksZi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYi5kZWZhdWx0LHtyb290UmVmOnRoaXMub25Sb290UmVmfSxmLmRlZmF1bHQuY2xvbmVFbGVtZW50KHIseCkpKSl9fV0sW3trZXk6XCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5vcGVuP3tleGl0ZWQ6ITF9OmsoZSk/bnVsbDp7ZXhpdGVkOiEwfX19XSksdH0oZi5kZWZhdWx0LkNvbXBvbmVudCk7VC5kZWZhdWx0UHJvcHM9e0JhY2tkcm9wQ29tcG9uZW50OnguZGVmYXVsdCxjbG9zZUFmdGVyVHJhbnNpdGlvbjohMSxkaXNhYmxlQXV0b0ZvY3VzOiExLGRpc2FibGVCYWNrZHJvcENsaWNrOiExLGRpc2FibGVFbmZvcmNlRm9jdXM6ITEsZGlzYWJsZUVzY2FwZUtleURvd246ITEsZGlzYWJsZVBvcnRhbDohMSxkaXNhYmxlUmVzdG9yZUZvY3VzOiExLGhpZGVCYWNrZHJvcDohMSxrZWVwTW91bnRlZDohMSxtYW5hZ2VyOm5ldyBFLmRlZmF1bHR9O3ZhciBBPSgwLFMuZGVmYXVsdCkoXyx7ZmxpcDohMSxuYW1lOlwiTXVpTW9kYWxcIn0pKFQpO3QuZGVmYXVsdD1BfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobigxMikpLGE9cihuKDEzKSksaT1yKG4oMTQpKSxsPXIobigxNSkpLHM9cihuKDE2KSksdT1yKG4oMCkpLGM9cihuKDIyKSksZD0ocihuKDEpKSxuKDcpLG4oMzIpKTt2YXIgcD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuKDAsby5kZWZhdWx0KSh0aGlzLHQpLCgwLGkuZGVmYXVsdCkodGhpcywoMCxsLmRlZmF1bHQpKHQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuKDAscy5kZWZhdWx0KSh0LGUpLCgwLGEuZGVmYXVsdCkodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlZj1jLmRlZmF1bHQuZmluZERPTU5vZGUodGhpcyksKDAsZC5zZXRSZWYpKHRoaXMucHJvcHMucm9vdFJlZix0aGlzLnJlZil9fSx7a2V5OlwiY29tcG9uZW50RGlkVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9Yy5kZWZhdWx0LmZpbmRET01Ob2RlKHRoaXMpO2Uucm9vdFJlZj09PXRoaXMucHJvcHMucm9vdFJlZiYmdGhpcy5yZWY9PT10fHwoZS5yb290UmVmIT09dGhpcy5wcm9wcy5yb290UmVmJiYoMCxkLnNldFJlZikoZS5yb290UmVmLG51bGwpLHRoaXMucmVmPXQsKDAsZC5zZXRSZWYpKHRoaXMucHJvcHMucm9vdFJlZix0aGlzLnJlZikpfX0se2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlZj1udWxsLCgwLGQuc2V0UmVmKSh0aGlzLnByb3BzLnJvb3RSZWYsbnVsbCl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbn19XSksdH0odS5kZWZhdWx0LkNvbXBvbmVudCk7dC5kZWZhdWx0PXB9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDEyKSksYT1yKG4oMTMpKSxpPXIobigxNCkpLGw9cihuKDE1KSkscz1yKG4oMTYpKSx1PXIobigwKSksYz1yKG4oMjIpKSxkPShyKG4oMSkpLHIobigyNikpKTtuKDcpO3ZhciBwPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuOygwLG8uZGVmYXVsdCkodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShyKSxzPTA7czxyO3MrKylhW3NdPWFyZ3VtZW50c1tzXTtyZXR1cm4obj0oMCxpLmRlZmF1bHQpKHRoaXMsKGU9KDAsbC5kZWZhdWx0KSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQoYSkpKSkuZ2V0TW91bnROb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIG4ubW91bnROb2RlfSxufXJldHVybigwLHMuZGVmYXVsdCkodCxlKSwoMCxhLmRlZmF1bHQpKHQsW3trZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRNb3VudE5vZGUodGhpcy5wcm9wcy5jb250YWluZXIpLHRoaXMucHJvcHMuZGlzYWJsZVBvcnRhbHx8dGhpcy5mb3JjZVVwZGF0ZSh0aGlzLnByb3BzLm9uUmVuZGVyZWQpfX0se2tleTpcImNvbXBvbmVudERpZFVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZS5jb250YWluZXI9PT10aGlzLnByb3BzLmNvbnRhaW5lciYmZS5kaXNhYmxlUG9ydGFsPT09dGhpcy5wcm9wcy5kaXNhYmxlUG9ydGFsfHwodGhpcy5zZXRNb3VudE5vZGUodGhpcy5wcm9wcy5jb250YWluZXIpLHRoaXMucHJvcHMuZGlzYWJsZVBvcnRhbHx8dGhpcy5mb3JjZVVwZGF0ZShmdW5jdGlvbigpe3QucHJvcHMub25SZW5kZXJlZCYmKGNsZWFyVGltZW91dCh0LnJlbmRlcmVkVGltZXIpLHQucmVuZGVyZWRUaW1lcj1zZXRUaW1lb3V0KHQucHJvcHMub25SZW5kZXJlZCkpfSkpfX0se2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1vdW50Tm9kZT1udWxsLGNsZWFyVGltZW91dCh0aGlzLnJlbmRlcmVkVGltZXIpfX0se2tleTpcInNldE1vdW50Tm9kZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3RoaXMucHJvcHMuZGlzYWJsZVBvcnRhbD90aGlzLm1vdW50Tm9kZT1jLmRlZmF1bHQuZmluZERPTU5vZGUodGhpcykucGFyZW50RWxlbWVudDp0aGlzLm1vdW50Tm9kZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPVwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZSgpOmUsYy5kZWZhdWx0LmZpbmRET01Ob2RlKGUpfHx0fShlLCh0PXRoaXMsKDAsZC5kZWZhdWx0KShjLmRlZmF1bHQuZmluZERPTU5vZGUodCkpKS5ib2R5KX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNoaWxkcmVuO3JldHVybiBlLmRpc2FibGVQb3J0YWw/dDp0aGlzLm1vdW50Tm9kZT9jLmRlZmF1bHQuY3JlYXRlUG9ydGFsKHQsdGhpcy5tb3VudE5vZGUpOm51bGx9fV0pLHR9KHUuZGVmYXVsdC5Db21wb25lbnQpO3AuZGVmYXVsdFByb3BzPXtkaXNhYmxlUG9ydGFsOiExfTt2YXIgZj1wO3QuZGVmYXVsdD1mfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1cIlwiLGM9XCJcIixkPXQ7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe2lmKHZvaWQgMD09PW4pcmV0dXJuIGUuc3R5bGVbKDAsby5kZWZhdWx0KSh0KV18fCgwLGkuZGVmYXVsdCkoZSkuZ2V0UHJvcGVydHlWYWx1ZSgoMCxhLmRlZmF1bHQpKHQpKTsoZD17fSlbdF09bn1PYmplY3Qua2V5cyhkKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPWRbdF07bnx8MD09PW4/KDAsdS5kZWZhdWx0KSh0KT9jKz10K1wiKFwiK24rXCIpIFwiOnIrPSgwLGEuZGVmYXVsdCkodCkrXCI6IFwiK24rXCI7XCI6KDAsbC5kZWZhdWx0KShlLCgwLGEuZGVmYXVsdCkodCkpfSksYyYmKHIrPXMudHJhbnNmb3JtK1wiOiBcIitjK1wiO1wiKTtlLnN0eWxlLmNzc1RleHQrPVwiO1wiK3J9O3ZhciBvPXIobigxNDUpKSxhPXIobig0NDkpKSxpPXIobig0NTEpKSxsPXIobig0NTIpKSxzPW4oNDUzKSx1PXIobig0NTQpKTtlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfSl9O3ZhciByPS8tKC4pL2c7ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4oMCxvLmRlZmF1bHQpKGUpLnJlcGxhY2UoYSxcIi1tcy1cIil9O3ZhciBvPXIobig0NTApKSxhPS9ebXMtLztlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHIsXCItJDFcIikudG9Mb3dlckNhc2UoKX07dmFyIHI9LyhbQS1aXSkvZztlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe2lmKCFlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJObyBFbGVtZW50IHBhc3NlZCB0byBgZ2V0Q29tcHV0ZWRTdHlsZSgpYFwiKTt2YXIgdD1lLm93bmVyRG9jdW1lbnQ7cmV0dXJuXCJkZWZhdWx0Vmlld1wiaW4gdD90LmRlZmF1bHRWaWV3Lm9wZW5lcj9lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpOndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCk6e2dldFByb3BlcnR5VmFsdWU6ZnVuY3Rpb24odCl7dmFyIG49ZS5zdHlsZTtcImZsb2F0XCI9PSh0PSgwLG8uZGVmYXVsdCkodCkpJiYodD1cInN0eWxlRmxvYXRcIik7dmFyIHI9ZS5jdXJyZW50U3R5bGVbdF18fG51bGw7aWYobnVsbD09ciYmbiYmblt0XSYmKHI9blt0XSksaS50ZXN0KHIpJiYhYS50ZXN0KHQpKXt2YXIgbD1uLmxlZnQscz1lLnJ1bnRpbWVTdHlsZSx1PXMmJnMubGVmdDt1JiYocy5sZWZ0PWUuY3VycmVudFN0eWxlLmxlZnQpLG4ubGVmdD1cImZvbnRTaXplXCI9PT10P1wiMWVtXCI6cixyPW4ucGl4ZWxMZWZ0K1wicHhcIixuLmxlZnQ9bCx1JiYocy5sZWZ0PXUpfXJldHVybiByfX19O3ZhciBvPXIobigxNDUpKSxhPS9eKHRvcHxyaWdodHxib3R0b218bGVmdCkkLyxpPS9eKFsrLV0/KD86XFxkKlxcLnwpXFxkKyg/OltlRV1bKy1dP1xcZCt8KSkoPyFweClbYS16JV0rJC9pO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJyZW1vdmVQcm9wZXJ0eVwiaW4gZS5zdHlsZT9lLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOmUuc3R5bGUucmVtb3ZlQXR0cmlidXRlKHQpfSxlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXQuYW5pbWF0aW9uRW5kPXQuYW5pbWF0aW9uRGVsYXk9dC5hbmltYXRpb25UaW1pbmc9dC5hbmltYXRpb25EdXJhdGlvbj10LmFuaW1hdGlvbk5hbWU9dC50cmFuc2l0aW9uRW5kPXQudHJhbnNpdGlvbkR1cmF0aW9uPXQudHJhbnNpdGlvbkRlbGF5PXQudHJhbnNpdGlvblRpbWluZz10LnRyYW5zaXRpb25Qcm9wZXJ0eT10LnRyYW5zZm9ybT12b2lkIDA7dmFyIG8sYSxpLGwscyx1LGMsZCxwLGYsbSxnPXIobigxNDYpKSxoPVwidHJhbnNmb3JtXCI7aWYodC50cmFuc2Zvcm09aCx0LmFuaW1hdGlvbkVuZD1pLHQudHJhbnNpdGlvbkVuZD1hLHQudHJhbnNpdGlvbkRlbGF5PWMsdC50cmFuc2l0aW9uVGltaW5nPXUsdC50cmFuc2l0aW9uRHVyYXRpb249cyx0LnRyYW5zaXRpb25Qcm9wZXJ0eT1sLHQuYW5pbWF0aW9uRGVsYXk9bSx0LmFuaW1hdGlvblRpbWluZz1mLHQuYW5pbWF0aW9uRHVyYXRpb249cCx0LmFuaW1hdGlvbk5hbWU9ZCxnLmRlZmF1bHQpe3ZhciBiPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQsbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLnN0eWxlLHI9e086ZnVuY3Rpb24oZSl7cmV0dXJuXCJvXCIrZS50b0xvd2VyQ2FzZSgpfSxNb3o6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKX0sV2Via2l0OmZ1bmN0aW9uKGUpe3JldHVyblwid2Via2l0XCIrZX0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuXCJNU1wiK2V9fSxvPU9iamVjdC5rZXlzKHIpLGE9XCJcIixpPTA7aTxvLmxlbmd0aDtpKyspe3ZhciBsPW9baV07aWYobCtcIlRyYW5zaXRpb25Qcm9wZXJ0eVwiaW4gbil7YT1cIi1cIitsLnRvTG93ZXJDYXNlKCksZT1yW2xdKFwiVHJhbnNpdGlvbkVuZFwiKSx0PXJbbF0oXCJBbmltYXRpb25FbmRcIik7YnJlYWt9fSFlJiZcInRyYW5zaXRpb25Qcm9wZXJ0eVwiaW4gbiYmKGU9XCJ0cmFuc2l0aW9uZW5kXCIpOyF0JiZcImFuaW1hdGlvbk5hbWVcImluIG4mJih0PVwiYW5pbWF0aW9uZW5kXCIpO3JldHVybiBuPW51bGwse2FuaW1hdGlvbkVuZDp0LHRyYW5zaXRpb25FbmQ6ZSxwcmVmaXg6YX19KCk7bz1iLnByZWZpeCx0LnRyYW5zaXRpb25FbmQ9YT1iLnRyYW5zaXRpb25FbmQsdC5hbmltYXRpb25FbmQ9aT1iLmFuaW1hdGlvbkVuZCx0LnRyYW5zZm9ybT1oPW8rXCItXCIraCx0LnRyYW5zaXRpb25Qcm9wZXJ0eT1sPW8rXCItdHJhbnNpdGlvbi1wcm9wZXJ0eVwiLHQudHJhbnNpdGlvbkR1cmF0aW9uPXM9bytcIi10cmFuc2l0aW9uLWR1cmF0aW9uXCIsdC50cmFuc2l0aW9uRGVsYXk9Yz1vK1wiLXRyYW5zaXRpb24tZGVsYXlcIix0LnRyYW5zaXRpb25UaW1pbmc9dT1vK1wiLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXCIsdC5hbmltYXRpb25OYW1lPWQ9bytcIi1hbmltYXRpb24tbmFtZVwiLHQuYW5pbWF0aW9uRHVyYXRpb249cD1vK1wiLWFuaW1hdGlvbi1kdXJhdGlvblwiLHQuYW5pbWF0aW9uVGltaW5nPWY9bytcIi1hbmltYXRpb24tZGVsYXlcIix0LmFuaW1hdGlvbkRlbGF5PW09bytcIi1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uXCJ9dmFyIHk9e3RyYW5zZm9ybTpoLGVuZDphLHByb3BlcnR5OmwsdGltaW5nOnUsZGVsYXk6YyxkdXJhdGlvbjpzfTt0LmRlZmF1bHQ9eX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IXIudGVzdChlKSl9O3ZhciByPS9eKCh0cmFuc2xhdGV8cm90YXRlfHNjYWxlKShYfFl8WnwzZCk/fG1hdHJpeCgzZCk/fHBlcnNwZWN0aXZlfHNrZXcoWHxZKT8pJC9pO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuaXNCb2R5PWwsdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PSgwLGEuZGVmYXVsdCkoZSksbj0oMCxpLmRlZmF1bHQpKHQpO2lmKCEoMCxvLmRlZmF1bHQpKHQpJiYhbChlKSlyZXR1cm4gZS5zY3JvbGxIZWlnaHQ+ZS5jbGllbnRIZWlnaHQ7dmFyIHI9bi5nZXRDb21wdXRlZFN0eWxlKHQuYm9keSkscz1wYXJzZUludChyLmdldFByb3BlcnR5VmFsdWUoXCJtYXJnaW4tbGVmdFwiKSwxMCksdT1wYXJzZUludChyLmdldFByb3BlcnR5VmFsdWUoXCJtYXJnaW4tcmlnaHRcIiksMTApO3JldHVybiBzK3QuYm9keS5jbGllbnRXaWR0aCt1PG4uaW5uZXJXaWR0aH07dmFyIG89cihuKDQ1NikpLGE9cihuKDI2KSksaT1yKG4oNzgpKTtmdW5jdGlvbiBsKGUpe3JldHVybiBlJiZcImJvZHlcIj09PWUudGFnTmFtZS50b0xvd2VyQ2FzZSgpfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1lLndpbmRvdz9lOjk9PT1lLm5vZGVUeXBlJiYoZS5kZWZhdWx0Vmlld3x8ZS5wYXJlbnRXaW5kb3cpfSxlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PXIobig4KSksYz1yKG4oODUpKSxkPXtyb290Ont6SW5kZXg6LTEscG9zaXRpb246XCJmaXhlZFwiLHJpZ2h0OjAsYm90dG9tOjAsdG9wOjAsbGVmdDowLGJhY2tncm91bmRDb2xvcjpcInJnYmEoMCwgMCwgMCwgMC41KVwiLFdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOlwidHJhbnNwYXJlbnRcIix0b3VjaEFjdGlvbjpcIm5vbmVcIn0saW52aXNpYmxlOntiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifX07ZnVuY3Rpb24gcChlKXt2YXIgdD1lLmNsYXNzZXMsbj1lLmNsYXNzTmFtZSxyPWUuaW52aXNpYmxlLHU9ZS5vcGVuLGQ9ZS50cmFuc2l0aW9uRHVyYXRpb24scD0oMCxpLmRlZmF1bHQpKGUsW1wiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJpbnZpc2libGVcIixcIm9wZW5cIixcInRyYW5zaXRpb25EdXJhdGlvblwiXSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGMuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtpbjp1LHRpbWVvdXQ6ZH0scCksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkodC5yb290LCgwLGEuZGVmYXVsdCkoe30sdC5pbnZpc2libGUsciksbiksXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSkpfXQuc3R5bGVzPWQscC5kZWZhdWx0UHJvcHM9e2ludmlzaWJsZTohMX07dmFyIGY9KDAsdS5kZWZhdWx0KShkLHtuYW1lOlwiTXVpQmFja2Ryb3BcIn0pKHApO3QuZGVmYXVsdD1mfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDEyKSksbD1yKG4oMTMpKSxzPXIobigxNCkpLHU9cihuKDE1KSksYz1yKG4oMTYpKSxkPXIobigwKSkscD0ocihuKDEpKSxyKG4oNTEpKSksZj1uKDY4KSxtPXIobig4NikpLGc9big3MCksaD17ZW50ZXJpbmc6e29wYWNpdHk6MX0sZW50ZXJlZDp7b3BhY2l0eToxfX0sYj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjsoMCxpLmRlZmF1bHQpKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuKG49KDAscy5kZWZhdWx0KSh0aGlzLChlPSgwLHUuZGVmYXVsdCkodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8pKSkpLmhhbmRsZUVudGVyPWZ1bmN0aW9uKGUpe3ZhciB0PW4ucHJvcHMudGhlbWU7KDAsZy5yZWZsb3cpKGUpO3ZhciByPSgwLGcuZ2V0VHJhbnNpdGlvblByb3BzKShuLnByb3BzLHttb2RlOlwiZW50ZXJcIn0pO2Uuc3R5bGUud2Via2l0VHJhbnNpdGlvbj10LnRyYW5zaXRpb25zLmNyZWF0ZShcIm9wYWNpdHlcIixyKSxlLnN0eWxlLnRyYW5zaXRpb249dC50cmFuc2l0aW9ucy5jcmVhdGUoXCJvcGFjaXR5XCIsciksbi5wcm9wcy5vbkVudGVyJiZuLnByb3BzLm9uRW50ZXIoZSl9LG4uaGFuZGxlRXhpdD1mdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLnRoZW1lLHI9KDAsZy5nZXRUcmFuc2l0aW9uUHJvcHMpKG4ucHJvcHMse21vZGU6XCJleGl0XCJ9KTtlLnN0eWxlLndlYmtpdFRyYW5zaXRpb249dC50cmFuc2l0aW9ucy5jcmVhdGUoXCJvcGFjaXR5XCIsciksZS5zdHlsZS50cmFuc2l0aW9uPXQudHJhbnNpdGlvbnMuY3JlYXRlKFwib3BhY2l0eVwiLHIpLG4ucHJvcHMub25FeGl0JiZuLnByb3BzLm9uRXhpdChlKX0sbn1yZXR1cm4oMCxjLmRlZmF1bHQpKHQsZSksKDAsbC5kZWZhdWx0KSh0LFt7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jaGlsZHJlbixuPShlLm9uRW50ZXIsZS5vbkV4aXQsZS5zdHlsZSkscj0oZS50aGVtZSwoMCxhLmRlZmF1bHQpKGUsW1wiY2hpbGRyZW5cIixcIm9uRW50ZXJcIixcIm9uRXhpdFwiLFwic3R5bGVcIixcInRoZW1lXCJdKSksaT0oMCxvLmRlZmF1bHQpKHt9LG4sZC5kZWZhdWx0LmlzVmFsaWRFbGVtZW50KHQpP3QucHJvcHMuc3R5bGU6e30pO3JldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChwLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7YXBwZWFyOiEwLG9uRW50ZXI6dGhpcy5oYW5kbGVFbnRlcixvbkV4aXQ6dGhpcy5oYW5kbGVFeGl0fSxyKSxmdW5jdGlvbihlLG4pe3JldHVybiBkLmRlZmF1bHQuY2xvbmVFbGVtZW50KHQsKDAsby5kZWZhdWx0KSh7c3R5bGU6KDAsby5kZWZhdWx0KSh7b3BhY2l0eTowfSxoW2VdLGkpfSxuKSl9KX19XSksdH0oZC5kZWZhdWx0LkNvbXBvbmVudCk7Yi5kZWZhdWx0UHJvcHM9e3RpbWVvdXQ6e2VudGVyOmYuZHVyYXRpb24uZW50ZXJpbmdTY3JlZW4sZXhpdDpmLmR1cmF0aW9uLmxlYXZpbmdTY3JlZW59fTt2YXIgeT0oMCxtLmRlZmF1bHQpKCkoYik7dC5kZWZhdWx0PXl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig1KSksaT1yKG4oMTIpKSxsPXIobigxMykpLHM9cihuKDE0KSksdT1yKG4oMTUpKSxjPXIobigxNikpLGQ9cihuKDApKSxwPShyKG4oMSkpLHIobig1MSkpKSxmPXIobig4NikpLG09big3MCk7ZnVuY3Rpb24gZyhlKXtyZXR1cm5cInNjYWxlKFwiLmNvbmNhdChlLFwiLCBcIikuY29uY2F0KE1hdGgucG93KGUsMiksXCIpXCIpfXZhciBoPXtlbnRlcmluZzp7b3BhY2l0eToxLHRyYW5zZm9ybTpnKDEpfSxlbnRlcmVkOntvcGFjaXR5OjEsdHJhbnNmb3JtOlwiXCIuY29uY2F0KGcoMSksXCIgdHJhbnNsYXRlWigwKVwiKX19LGI9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47KDAsaS5kZWZhdWx0KSh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7YSsrKW9bYV09YXJndW1lbnRzW2FdO3JldHVybihuPSgwLHMuZGVmYXVsdCkodGhpcywoZT0oMCx1LmRlZmF1bHQpKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKS5oYW5kbGVFbnRlcj1mdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLHI9dC50aGVtZSxvPXQudGltZW91dDsoMCxtLnJlZmxvdykoZSk7dmFyIGE9KDAsbS5nZXRUcmFuc2l0aW9uUHJvcHMpKG4ucHJvcHMse21vZGU6XCJlbnRlclwifSksaT1hLmR1cmF0aW9uLGw9YS5kZWxheSxzPTA7XCJhdXRvXCI9PT1vPyhzPXIudHJhbnNpdGlvbnMuZ2V0QXV0b0hlaWdodER1cmF0aW9uKGUuY2xpZW50SGVpZ2h0KSxuLmF1dG9UaW1lb3V0PXMpOnM9aSxlLnN0eWxlLnRyYW5zaXRpb249W3IudHJhbnNpdGlvbnMuY3JlYXRlKFwib3BhY2l0eVwiLHtkdXJhdGlvbjpzLGRlbGF5Omx9KSxyLnRyYW5zaXRpb25zLmNyZWF0ZShcInRyYW5zZm9ybVwiLHtkdXJhdGlvbjouNjY2KnMsZGVsYXk6bH0pXS5qb2luKFwiLFwiKSxuLnByb3BzLm9uRW50ZXImJm4ucHJvcHMub25FbnRlcihlKX0sbi5oYW5kbGVFeGl0PWZ1bmN0aW9uKGUpe3ZhciB0PW4ucHJvcHMscj10LnRoZW1lLG89dC50aW1lb3V0LGE9MCxpPSgwLG0uZ2V0VHJhbnNpdGlvblByb3BzKShuLnByb3BzLHttb2RlOlwiZXhpdFwifSksbD1pLmR1cmF0aW9uLHM9aS5kZWxheTtcImF1dG9cIj09PW8/KGE9ci50cmFuc2l0aW9ucy5nZXRBdXRvSGVpZ2h0RHVyYXRpb24oZS5jbGllbnRIZWlnaHQpLG4uYXV0b1RpbWVvdXQ9YSk6YT1sLGUuc3R5bGUudHJhbnNpdGlvbj1bci50cmFuc2l0aW9ucy5jcmVhdGUoXCJvcGFjaXR5XCIse2R1cmF0aW9uOmEsZGVsYXk6c30pLHIudHJhbnNpdGlvbnMuY3JlYXRlKFwidHJhbnNmb3JtXCIse2R1cmF0aW9uOi42NjYqYSxkZWxheTpzfHwuMzMzKmF9KV0uam9pbihcIixcIiksZS5zdHlsZS5vcGFjaXR5PVwiMFwiLGUuc3R5bGUudHJhbnNmb3JtPWcoLjc1KSxuLnByb3BzLm9uRXhpdCYmbi5wcm9wcy5vbkV4aXQoZSl9LG4uYWRkRW5kTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtcImF1dG9cIj09PW4ucHJvcHMudGltZW91dCYmKG4udGltZXI9c2V0VGltZW91dCh0LG4uYXV0b1RpbWVvdXR8fDApKX0sbn1yZXR1cm4oMCxjLmRlZmF1bHQpKHQsZSksKDAsbC5kZWZhdWx0KSh0LFt7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNoaWxkcmVuLG49KGUub25FbnRlcixlLm9uRXhpdCxlLnN0eWxlKSxyPShlLnRoZW1lLGUudGltZW91dCksaT0oMCxhLmRlZmF1bHQpKGUsW1wiY2hpbGRyZW5cIixcIm9uRW50ZXJcIixcIm9uRXhpdFwiLFwic3R5bGVcIixcInRoZW1lXCIsXCJ0aW1lb3V0XCJdKSxsPSgwLG8uZGVmYXVsdCkoe30sbixkLmRlZmF1bHQuaXNWYWxpZEVsZW1lbnQodCk/dC5wcm9wcy5zdHlsZTp7fSk7cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHAuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHthcHBlYXI6ITAsb25FbnRlcjp0aGlzLmhhbmRsZUVudGVyLG9uRXhpdDp0aGlzLmhhbmRsZUV4aXQsYWRkRW5kTGlzdGVuZXI6dGhpcy5hZGRFbmRMaXN0ZW5lcix0aW1lb3V0OlwiYXV0b1wiPT09cj9udWxsOnJ9LGkpLGZ1bmN0aW9uKGUsbil7cmV0dXJuIGQuZGVmYXVsdC5jbG9uZUVsZW1lbnQodCwoMCxvLmRlZmF1bHQpKHtzdHlsZTooMCxvLmRlZmF1bHQpKHtvcGFjaXR5OjAsdHJhbnNmb3JtOmcoLjc1KX0saFtlXSxsKX0sbikpfSl9fV0pLHR9KGQuZGVmYXVsdC5Db21wb25lbnQpO2IuZGVmYXVsdFByb3BzPXt0aW1lb3V0OlwiYXV0b1wifSxiLm11aVN1cHBvcnRBdXRvPSEwO3ZhciB5PSgwLGYuZGVmYXVsdCkoKShiKTt0LmRlZmF1bHQ9eX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDUpKSxpPXIobigwKSksbD0ocihuKDEpKSxuKDcpLHIobig0NjEpKSkscz1yKG4oMzMpKSx1PXIobigyNSkpLGM9cihuKDgpKSxkPXIobigxMjEpKSxwPXIobigxNDkpKSxmPXIobigzNikpLG09big0NjgpLGc9cihuKDE1MCkpLGg9bS5zdHlsZXM7ZnVuY3Rpb24gYihlKXt2YXIgdD1lLmF1dG9XaWR0aCxuPWUuY2hpbGRyZW4scj1lLmNsYXNzZXMsdT1lLmRpc3BsYXlFbXB0eSxjPWUuSWNvbkNvbXBvbmVudCxwPWUuaW5wdXQsZj1lLmlucHV0UHJvcHMsbT1lLk1lbnVQcm9wcyxoPWUubXVpRm9ybUNvbnRyb2wseT1lLm11bHRpcGxlLHY9ZS5uYXRpdmUsUz1lLm9uQ2xvc2UsRT1lLm9uT3Blbix4PWUub3Blbix3PWUucmVuZGVyVmFsdWUsaz1lLlNlbGVjdERpc3BsYXlQcm9wcyxfPShlLnZhcmlhbnQsKDAsYS5kZWZhdWx0KShlLFtcImF1dG9XaWR0aFwiLFwiY2hpbGRyZW5cIixcImNsYXNzZXNcIixcImRpc3BsYXlFbXB0eVwiLFwiSWNvbkNvbXBvbmVudFwiLFwiaW5wdXRcIixcImlucHV0UHJvcHNcIixcIk1lbnVQcm9wc1wiLFwibXVpRm9ybUNvbnRyb2xcIixcIm11bHRpcGxlXCIsXCJuYXRpdmVcIixcIm9uQ2xvc2VcIixcIm9uT3BlblwiLFwib3BlblwiLFwicmVuZGVyVmFsdWVcIixcIlNlbGVjdERpc3BsYXlQcm9wc1wiLFwidmFyaWFudFwiXSkpLFQ9dj9nLmRlZmF1bHQ6bC5kZWZhdWx0LEE9KDAscy5kZWZhdWx0KSh7cHJvcHM6ZSxtdWlGb3JtQ29udHJvbDpoLHN0YXRlczpbXCJ2YXJpYW50XCJdfSk7cmV0dXJuIGkuZGVmYXVsdC5jbG9uZUVsZW1lbnQocCwoMCxvLmRlZmF1bHQpKHtpbnB1dENvbXBvbmVudDpULGlucHV0UHJvcHM6KDAsby5kZWZhdWx0KSh7Y2hpbGRyZW46bixJY29uQ29tcG9uZW50OmMsdmFyaWFudDpBLnZhcmlhbnQsdHlwZTp2b2lkIDAsbXVsdGlwbGU6eX0sdj97fTp7YXV0b1dpZHRoOnQsZGlzcGxheUVtcHR5OnUsTWVudVByb3BzOm0sb25DbG9zZTpTLG9uT3BlbjpFLG9wZW46eCxyZW5kZXJWYWx1ZTp3LFNlbGVjdERpc3BsYXlQcm9wczprfSxmLHtjbGFzc2VzOmY/KDAsZC5kZWZhdWx0KSh7YmFzZUNsYXNzZXM6cixuZXdDbGFzc2VzOmYuY2xhc3NlcyxDb21wb25lbnQ6Yn0pOnJ9LHA/cC5wcm9wcy5pbnB1dFByb3BzOnt9KX0sXykpfXQuc3R5bGVzPWgsYi5kZWZhdWx0UHJvcHM9e2F1dG9XaWR0aDohMSxkaXNwbGF5RW1wdHk6ITEsSWNvbkNvbXBvbmVudDpwLmRlZmF1bHQsaW5wdXQ6aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZi5kZWZhdWx0LG51bGwpLG11bHRpcGxlOiExLG5hdGl2ZTohMX0sYi5tdWlOYW1lPVwiU2VsZWN0XCI7dmFyIHk9KDAsYy5kZWZhdWx0KShoLHtuYW1lOlwiTXVpU2VsZWN0XCJ9KSgoMCx1LmRlZmF1bHQpKGIpKTt0LmRlZmF1bHQ9eX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMTQwKSkscz1yKG4oMTIpKSx1PXIobigxMykpLGM9cihuKDE0KSksZD1yKG4oMTUpKSxwPXIobigxNikpLGY9cihuKDI5KSksbT1yKG4oMCkpLGc9KHIobigxKSkscihuKDYpKSksaD0ocihuKDE3KSksbig3KSxyKG4oNDYyKSkpLGI9big3MikseT1uKDMyKTtmdW5jdGlvbiB2KGUsdCl7cmV0dXJuXCJvYmplY3RcIj09PSgwLGYuZGVmYXVsdCkodCkmJm51bGwhPT10P2U9PT10OlN0cmluZyhlKT09PVN0cmluZyh0KX12YXIgUz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBuO3JldHVybigwLHMuZGVmYXVsdCkodGhpcyx0KSwobj0oMCxjLmRlZmF1bHQpKHRoaXMsKDAsZC5kZWZhdWx0KSh0KS5jYWxsKHRoaXMpKSkuaWdub3JlTmV4dEJsdXI9ITEsbi51cGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ldmVudCxyPWUub3BlbjtuLmlzT3BlbkNvbnRyb2xsZWQ/cj9uLnByb3BzLm9uT3Blbih0KTpuLnByb3BzLm9uQ2xvc2UodCk6bi5zZXRTdGF0ZSh7bWVudU1pbldpZHRoOm4ucHJvcHMuYXV0b1dpZHRoP251bGw6bi5kaXNwbGF5UmVmLmNsaWVudFdpZHRoLG9wZW46cn0pfSxuLmhhbmRsZUNsaWNrPWZ1bmN0aW9uKGUpe24uaWdub3JlTmV4dEJsdXI9ITAsbi51cGRhdGUoe29wZW46ITAsZXZlbnQ6ZX0pfSxuLmhhbmRsZUNsb3NlPWZ1bmN0aW9uKGUpe24udXBkYXRlKHtvcGVuOiExLGV2ZW50OmV9KX0sbi5oYW5kbGVJdGVtQ2xpY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe24ucHJvcHMubXVsdGlwbGV8fG4udXBkYXRlKHtvcGVuOiExLGV2ZW50OnR9KTt2YXIgcj1uLnByb3BzLG89ci5vbkNoYW5nZSxhPXIubmFtZTtpZihvKXt2YXIgaTtpZihuLnByb3BzLm11bHRpcGxlKXt2YXIgcz0oaT1BcnJheS5pc0FycmF5KG4ucHJvcHMudmFsdWUpPygwLGwuZGVmYXVsdCkobi5wcm9wcy52YWx1ZSk6W10pLmluZGV4T2YoZS5wcm9wcy52YWx1ZSk7LTE9PT1zP2kucHVzaChlLnByb3BzLnZhbHVlKTppLnNwbGljZShzLDEpfWVsc2UgaT1lLnByb3BzLnZhbHVlO3QucGVyc2lzdCgpLHQudGFyZ2V0PXt2YWx1ZTppLG5hbWU6YX0sbyh0LGUpfX19LG4uaGFuZGxlQmx1cj1mdW5jdGlvbihlKXtpZighMD09PW4uaWdub3JlTmV4dEJsdXIpcmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCksdm9pZChuLmlnbm9yZU5leHRCbHVyPSExKTtpZihuLnByb3BzLm9uQmx1cil7dmFyIHQ9bi5wcm9wcyxyPXQudmFsdWUsbz10Lm5hbWU7ZS5wZXJzaXN0KCksZS50YXJnZXQ9e3ZhbHVlOnIsbmFtZTpvfSxuLnByb3BzLm9uQmx1cihlKX19LG4uaGFuZGxlS2V5RG93bj1mdW5jdGlvbihlKXtuLnByb3BzLnJlYWRPbmx5fHwtMSE9PVtcIiBcIixcIkFycm93VXBcIixcIkFycm93RG93blwiXS5pbmRleE9mKGUua2V5KSYmKGUucHJldmVudERlZmF1bHQoKSxuLmlnbm9yZU5leHRCbHVyPSEwLG4udXBkYXRlKHtvcGVuOiEwLGV2ZW50OmV9KSl9LG4uaGFuZGxlRGlzcGxheVJlZj1mdW5jdGlvbihlKXtuLmRpc3BsYXlSZWY9ZX0sbi5oYW5kbGVJbnB1dFJlZj1mdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLmlucHV0UmVmO2lmKHQpe3ZhciByPXtub2RlOmUsdmFsdWU6bi5wcm9wcy52YWx1ZSxmb2N1czpmdW5jdGlvbigpe24uZGlzcGxheVJlZi5mb2N1cygpfX07KDAseS5zZXRSZWYpKHQscil9fSxuLmlzT3BlbkNvbnRyb2xsZWQ9dm9pZCAwIT09ZS5vcGVuLG4uc3RhdGU9e21lbnVNaW5XaWR0aDpudWxsLG9wZW46ITF9LG59cmV0dXJuKDAscC5kZWZhdWx0KSh0LGUpLCgwLHUuZGVmYXVsdCkodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzT3BlbkNvbnRyb2xsZWQmJnRoaXMucHJvcHMub3BlbiYmKHRoaXMuZGlzcGxheVJlZi5mb2N1cygpLHRoaXMuZm9yY2VVcGRhdGUoKSksdGhpcy5wcm9wcy5hdXRvRm9jdXMmJnRoaXMuZGlzcGxheVJlZi5mb2N1cygpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxuPXRoaXMscj10aGlzLnByb3BzLGw9ci5hdXRvV2lkdGgscz1yLmNoaWxkcmVuLHU9ci5jbGFzc2VzLGM9ci5jbGFzc05hbWUsZD1yLmRpc2FibGVkLHA9ci5kaXNwbGF5RW1wdHksZj1yLkljb25Db21wb25lbnQseT0oci5pbnB1dFJlZixyLk1lbnVQcm9wcyksUz12b2lkIDA9PT15P3t9OnksRT1yLm11bHRpcGxlLHg9ci5uYW1lLHc9KHIub25CbHVyLHIub25DaGFuZ2Usci5vbkNsb3NlLHIub25Gb2N1cyksaz0oci5vbk9wZW4sci5vcGVuKSxfPXIucmVhZE9ubHksVD1yLnJlbmRlclZhbHVlLEE9KHIucmVxdWlyZWQsci5TZWxlY3REaXNwbGF5UHJvcHMpLEM9ci50YWJJbmRleCxPPXIudHlwZSxJPXZvaWQgMD09PU8/XCJoaWRkZW5cIjpPLE49ci52YWx1ZSxSPXIudmFyaWFudCxQPSgwLGkuZGVmYXVsdCkocixbXCJhdXRvV2lkdGhcIixcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImRpc2FibGVkXCIsXCJkaXNwbGF5RW1wdHlcIixcIkljb25Db21wb25lbnRcIixcImlucHV0UmVmXCIsXCJNZW51UHJvcHNcIixcIm11bHRpcGxlXCIsXCJuYW1lXCIsXCJvbkJsdXJcIixcIm9uQ2hhbmdlXCIsXCJvbkNsb3NlXCIsXCJvbkZvY3VzXCIsXCJvbk9wZW5cIixcIm9wZW5cIixcInJlYWRPbmx5XCIsXCJyZW5kZXJWYWx1ZVwiLFwicmVxdWlyZWRcIixcIlNlbGVjdERpc3BsYXlQcm9wc1wiLFwidGFiSW5kZXhcIixcInR5cGVcIixcInZhbHVlXCIsXCJ2YXJpYW50XCJdKSxNPXRoaXMuaXNPcGVuQ29udHJvbGxlZCYmdGhpcy5kaXNwbGF5UmVmP2s6dGhpcy5zdGF0ZS5vcGVuO2RlbGV0ZSBQW1wiYXJpYS1pbnZhbGlkXCJdO3ZhciBMPVwiXCIsRD1bXSxGPSExOygoMCxiLmlzRmlsbGVkKSh0aGlzLnByb3BzKXx8cCkmJihUP3Q9VChOKTpGPSEwKTt2YXIgQj1tLmRlZmF1bHQuQ2hpbGRyZW4ubWFwKHMsZnVuY3Rpb24oZSl7aWYoIW0uZGVmYXVsdC5pc1ZhbGlkRWxlbWVudChlKSlyZXR1cm4gbnVsbDt2YXIgdDtpZihFKXtpZighQXJyYXkuaXNBcnJheShOKSl0aHJvdyBuZXcgRXJyb3IoXCJNYXRlcmlhbC1VSTogdGhlIGB2YWx1ZWAgcHJvcGVydHkgbXVzdCBiZSBhbiBhcnJheSB3aGVuIHVzaW5nIHRoZSBgU2VsZWN0YCBjb21wb25lbnQgd2l0aCBgbXVsdGlwbGVgLlwiKTsodD1OLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIHYodCxlLnByb3BzLnZhbHVlKX0pKSYmRiYmRC5wdXNoKGUucHJvcHMuY2hpbGRyZW4pfWVsc2UodD12KE4sZS5wcm9wcy52YWx1ZSkpJiZGJiYoTD1lLnByb3BzLmNoaWxkcmVuKTtyZXR1cm4gbS5kZWZhdWx0LmNsb25lRWxlbWVudChlLHtvbkNsaWNrOm4uaGFuZGxlSXRlbUNsaWNrKGUpLHJvbGU6XCJvcHRpb25cIixzZWxlY3RlZDp0LHZhbHVlOnZvaWQgMCxcImRhdGEtdmFsdWVcIjplLnByb3BzLnZhbHVlfSl9KTtGJiYodD1FP0Quam9pbihcIiwgXCIpOkwpO3ZhciBqLFU9dGhpcy5zdGF0ZS5tZW51TWluV2lkdGg7cmV0dXJuIWwmJnRoaXMuaXNPcGVuQ29udHJvbGxlZCYmdGhpcy5kaXNwbGF5UmVmJiYoVT10aGlzLmRpc3BsYXlSZWYuY2xpZW50V2lkdGgpLGo9dm9pZCAwIT09Qz9DOmQ/bnVsbDowLG0uZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTp1LnJvb3R9LG0uZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLGcuZGVmYXVsdCkodS5zZWxlY3QsdS5zZWxlY3RNZW51LChlPXt9LCgwLGEuZGVmYXVsdCkoZSx1LmRpc2FibGVkLGQpLCgwLGEuZGVmYXVsdCkoZSx1LmZpbGxlZCxcImZpbGxlZFwiPT09UiksKDAsYS5kZWZhdWx0KShlLHUub3V0bGluZWQsXCJvdXRsaW5lZFwiPT09UiksZSksYykscmVmOnRoaXMuaGFuZGxlRGlzcGxheVJlZixcImFyaWEtcHJlc3NlZFwiOk0/XCJ0cnVlXCI6XCJmYWxzZVwiLHRhYkluZGV4Omoscm9sZTpcImJ1dHRvblwiLFwiYXJpYS1vd25zXCI6TT9cIm1lbnUtXCIuY29uY2F0KHh8fFwiXCIpOnZvaWQgMCxcImFyaWEtaGFzcG9wdXBcIjpcInRydWVcIixvbktleURvd246dGhpcy5oYW5kbGVLZXlEb3duLG9uQmx1cjp0aGlzLmhhbmRsZUJsdXIsb25DbGljazpkfHxfP251bGw6dGhpcy5oYW5kbGVDbGljayxvbkZvY3VzOncsaWQ6eD9cInNlbGVjdC1cIi5jb25jYXQoeCk6dm9pZCAwfSxBKSx0fHxtLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpcIiYjODIwMztcIn19KSksbS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCgwLG8uZGVmYXVsdCkoe3ZhbHVlOkFycmF5LmlzQXJyYXkoTik/Ti5qb2luKFwiLFwiKTpOLG5hbWU6eCxyZWY6dGhpcy5oYW5kbGVJbnB1dFJlZix0eXBlOkl9LFApKSxtLmRlZmF1bHQuY3JlYXRlRWxlbWVudChmLHtjbGFzc05hbWU6dS5pY29ufSksbS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaC5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe2lkOlwibWVudS1cIi5jb25jYXQoeHx8XCJcIiksYW5jaG9yRWw6dGhpcy5kaXNwbGF5UmVmLG9wZW46TSxvbkNsb3NlOnRoaXMuaGFuZGxlQ2xvc2V9LFMse01lbnVMaXN0UHJvcHM6KDAsby5kZWZhdWx0KSh7cm9sZTpcImxpc3Rib3hcIixkaXNhYmxlTGlzdFdyYXA6ITB9LFMuTWVudUxpc3RQcm9wcyksUGFwZXJQcm9wczooMCxvLmRlZmF1bHQpKHt9LFMuUGFwZXJQcm9wcyx7c3R5bGU6KDAsby5kZWZhdWx0KSh7bWluV2lkdGg6VX0sbnVsbCE9Uy5QYXBlclByb3BzP1MuUGFwZXJQcm9wcy5zdHlsZTpudWxsKX0pfSksQikpfX1dKSx0fShtLmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9U30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDUpKSxpPXIobigxMikpLGw9cihuKDEzKSkscz1yKG4oMTQpKSx1PXIobigxNSkpLGM9cihuKDE2KSksZD1yKG4oMCkpLHA9KHIobigxKSkscihuKDIyKSkpLGY9cihuKDE0NykpLG09cihuKDgpKSxnPXIobig4MSkpLGg9cihuKDg5KSksYj17dmVydGljYWw6XCJ0b3BcIixob3Jpem9udGFsOlwicmlnaHRcIn0seT17dmVydGljYWw6XCJ0b3BcIixob3Jpem9udGFsOlwibGVmdFwifSx2PXtwYXBlcjp7bWF4SGVpZ2h0OlwiY2FsYygxMDAlIC0gOTZweClcIixXZWJraXRPdmVyZmxvd1Njcm9sbGluZzpcInRvdWNoXCJ9fTt0LnN0eWxlcz12O3ZhciBTPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuOygwLGkuZGVmYXVsdCkodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4obj0oMCxzLmRlZmF1bHQpKHRoaXMsKGU9KDAsdS5kZWZhdWx0KSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSkuZ2V0Q29udGVudEFuY2hvckVsPWZ1bmN0aW9uKCl7cmV0dXJuIG4ubWVudUxpc3RSZWYuc2VsZWN0ZWRJdGVtUmVmP3AuZGVmYXVsdC5maW5kRE9NTm9kZShuLm1lbnVMaXN0UmVmLnNlbGVjdGVkSXRlbVJlZik6cC5kZWZhdWx0LmZpbmRET01Ob2RlKG4ubWVudUxpc3RSZWYpLmZpcnN0Q2hpbGR9LG4uZm9jdXM9ZnVuY3Rpb24oKXtpZihuLm1lbnVMaXN0UmVmJiZuLm1lbnVMaXN0UmVmLnNlbGVjdGVkSXRlbVJlZilwLmRlZmF1bHQuZmluZERPTU5vZGUobi5tZW51TGlzdFJlZi5zZWxlY3RlZEl0ZW1SZWYpLmZvY3VzKCk7ZWxzZXt2YXIgZT1wLmRlZmF1bHQuZmluZERPTU5vZGUobi5tZW51TGlzdFJlZik7ZSYmZS5maXJzdENoaWxkJiZlLmZpcnN0Q2hpbGQuZm9jdXMoKX19LG4uaGFuZGxlTWVudUxpc3RSZWY9ZnVuY3Rpb24oZSl7bi5tZW51TGlzdFJlZj1lfSxuLmhhbmRsZUVudGVyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PW4ucHJvcHMscj10LmRpc2FibGVBdXRvRm9jdXNJdGVtLG89dC50aGVtZSxhPXAuZGVmYXVsdC5maW5kRE9NTm9kZShuLm1lbnVMaXN0UmVmKTtpZighMCE9PXImJm4uZm9jdXMoKSxhJiZlLmNsaWVudEhlaWdodDxhLmNsaWVudEhlaWdodCYmIWEuc3R5bGUud2lkdGgpe3ZhciBpPVwiXCIuY29uY2F0KCgwLGYuZGVmYXVsdCkoKSxcInB4XCIpO2Euc3R5bGVbXCJydGxcIj09PW8uZGlyZWN0aW9uP1wicGFkZGluZ0xlZnRcIjpcInBhZGRpbmdSaWdodFwiXT1pLGEuc3R5bGUud2lkdGg9XCJjYWxjKDEwMCUgKyBcIi5jb25jYXQoaSxcIilcIil9bi5wcm9wcy5vbkVudGVyaW5nJiZuLnByb3BzLm9uRW50ZXJpbmcoZSl9LG4uaGFuZGxlTGlzdEtleURvd249ZnVuY3Rpb24oZSl7XCJUYWJcIj09PWUua2V5JiYoZS5wcmV2ZW50RGVmYXVsdCgpLG4ucHJvcHMub25DbG9zZSYmbi5wcm9wcy5vbkNsb3NlKGUsXCJ0YWJLZXlEb3duXCIpKX0sbn1yZXR1cm4oMCxjLmRlZmF1bHQpKHQsZSksKDAsbC5kZWZhdWx0KSh0LFt7a2V5OlwiY29tcG9uZW50RGlkTW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJvcHMub3BlbiYmITAhPT10aGlzLnByb3BzLmRpc2FibGVBdXRvRm9jdXNJdGVtJiZ0aGlzLmZvY3VzKCl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jaGlsZHJlbixuPWUuY2xhc3NlcyxyPShlLmRpc2FibGVBdXRvRm9jdXNJdGVtLGUuTWVudUxpc3RQcm9wcyksaT0oZS5vbkVudGVyaW5nLGUuUGFwZXJQcm9wcyksbD12b2lkIDA9PT1pP3t9Omkscz1lLlBvcG92ZXJDbGFzc2VzLHU9ZS50aGVtZSxjPSgwLGEuZGVmYXVsdCkoZSxbXCJjaGlsZHJlblwiLFwiY2xhc3Nlc1wiLFwiZGlzYWJsZUF1dG9Gb2N1c0l0ZW1cIixcIk1lbnVMaXN0UHJvcHNcIixcIm9uRW50ZXJpbmdcIixcIlBhcGVyUHJvcHNcIixcIlBvcG92ZXJDbGFzc2VzXCIsXCJ0aGVtZVwiXSk7cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGcuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtnZXRDb250ZW50QW5jaG9yRWw6dGhpcy5nZXRDb250ZW50QW5jaG9yRWwsY2xhc3NlczpzLG9uRW50ZXJpbmc6dGhpcy5oYW5kbGVFbnRlcmluZyxhbmNob3JPcmlnaW46XCJydGxcIj09PXUuZGlyZWN0aW9uP2I6eSx0cmFuc2Zvcm1PcmlnaW46XCJydGxcIj09PXUuZGlyZWN0aW9uP2I6eSxQYXBlclByb3BzOigwLG8uZGVmYXVsdCkoe30sbCx7Y2xhc3NlczooMCxvLmRlZmF1bHQpKHt9LGwuY2xhc3Nlcyx7cm9vdDpuLnBhcGVyfSl9KX0sYyksZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaC5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe29uS2V5RG93bjp0aGlzLmhhbmRsZUxpc3RLZXlEb3dufSxyLHtyZWY6dGhpcy5oYW5kbGVNZW51TGlzdFJlZn0pLHQpKX19XSksdH0oZC5kZWZhdWx0LkNvbXBvbmVudCk7Uy5kZWZhdWx0UHJvcHM9e2Rpc2FibGVBdXRvRm9jdXNJdGVtOiExLHRyYW5zaXRpb25EdXJhdGlvbjpcImF1dG9cIn07dmFyIEU9KDAsbS5kZWZhdWx0KSh2LHtuYW1lOlwiTXVpTWVudVwiLHdpdGhUaGVtZTohMH0pKFMpO3QuZGVmYXVsdD1FfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDEyKSksbD1yKG4oMTMpKSxzPXIobigxNCkpLHU9cihuKDE1KSksYz1yKG4oMTYpKSxkPXIobigwKSkscD0ocihuKDEpKSxyKG4oMjIpKSksZj0ocihuKDE3KSkscihuKDI2KSkpLG09cihuKDkwKSksZz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjsoMCxpLmRlZmF1bHQpKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuKG49KDAscy5kZWZhdWx0KSh0aGlzLChlPSgwLHUuZGVmYXVsdCkodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8pKSkpLnN0YXRlPXtjdXJyZW50VGFiSW5kZXg6bnVsbH0sbi5oYW5kbGVCbHVyPWZ1bmN0aW9uKGUpe24uYmx1clRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihuLmxpc3RSZWYpe3ZhciBlPW4ubGlzdFJlZix0PSgwLGYuZGVmYXVsdCkoZSkuYWN0aXZlRWxlbWVudDtlLmNvbnRhaW5zKHQpfHxuLnJlc2V0VGFiSW5kZXgoKX19LDMwKSxuLnByb3BzLm9uQmx1ciYmbi5wcm9wcy5vbkJsdXIoZSl9LG4uaGFuZGxlS2V5RG93bj1mdW5jdGlvbihlKXt2YXIgdD1uLmxpc3RSZWYscj1lLmtleSxvPSgwLGYuZGVmYXVsdCkodCkuYWN0aXZlRWxlbWVudDtcIkFycm93VXBcIiE9PXImJlwiQXJyb3dEb3duXCIhPT1yfHxvJiYoIW98fHQuY29udGFpbnMobykpP1wiQXJyb3dEb3duXCI9PT1yPyhlLnByZXZlbnREZWZhdWx0KCksby5uZXh0RWxlbWVudFNpYmxpbmc/by5uZXh0RWxlbWVudFNpYmxpbmcuZm9jdXMoKTpuLnByb3BzLmRpc2FibGVMaXN0V3JhcHx8dC5maXJzdENoaWxkLmZvY3VzKCkpOlwiQXJyb3dVcFwiPT09cj8oZS5wcmV2ZW50RGVmYXVsdCgpLG8ucHJldmlvdXNFbGVtZW50U2libGluZz9vLnByZXZpb3VzRWxlbWVudFNpYmxpbmcuZm9jdXMoKTpuLnByb3BzLmRpc2FibGVMaXN0V3JhcHx8dC5sYXN0Q2hpbGQuZm9jdXMoKSk6XCJIb21lXCI9PT1yPyhlLnByZXZlbnREZWZhdWx0KCksdC5maXJzdENoaWxkLmZvY3VzKCkpOlwiRW5kXCI9PT1yJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHQubGFzdENoaWxkLmZvY3VzKCkpOm4uc2VsZWN0ZWRJdGVtUmVmP24uc2VsZWN0ZWRJdGVtUmVmLmZvY3VzKCk6dC5maXJzdENoaWxkLmZvY3VzKCksbi5wcm9wcy5vbktleURvd24mJm4ucHJvcHMub25LZXlEb3duKGUpfSxuLmhhbmRsZUl0ZW1Gb2N1cz1mdW5jdGlvbihlKXt2YXIgdD1uLmxpc3RSZWY7aWYodClmb3IodmFyIHI9MDtyPHQuY2hpbGRyZW4ubGVuZ3RoO3IrPTEpaWYodC5jaGlsZHJlbltyXT09PWUuY3VycmVudFRhcmdldCl7bi5zZXRUYWJJbmRleChyKTticmVha319LG59cmV0dXJuKDAsYy5kZWZhdWx0KSh0LGUpLCgwLGwuZGVmYXVsdCkodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlc2V0VGFiSW5kZXgoKX19LHtrZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuYmx1clRpbWVyKX19LHtrZXk6XCJzZXRUYWJJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe2N1cnJlbnRUYWJJbmRleDplfSl9fSx7a2V5OlwiZm9jdXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUuY3VycmVudFRhYkluZGV4LHQ9dGhpcy5saXN0UmVmO3QmJnQuY2hpbGRyZW4mJnQuZmlyc3RDaGlsZCYmKGUmJmU+PTA/dC5jaGlsZHJlbltlXS5mb2N1cygpOnQuZmlyc3RDaGlsZC5mb2N1cygpKX19LHtrZXk6XCJyZXNldFRhYkluZGV4XCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5saXN0UmVmLHQ9KDAsZi5kZWZhdWx0KShlKS5hY3RpdmVFbGVtZW50LG49W10scj0wO3I8ZS5jaGlsZHJlbi5sZW5ndGg7cis9MSluLnB1c2goZS5jaGlsZHJlbltyXSk7dmFyIG89bi5pbmRleE9mKHQpO3JldHVybi0xIT09bz90aGlzLnNldFRhYkluZGV4KG8pOnRoaXMuc2VsZWN0ZWRJdGVtUmVmP3RoaXMuc2V0VGFiSW5kZXgobi5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtUmVmKSk6dGhpcy5zZXRUYWJJbmRleCgwKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5jaGlsZHJlbixyPXQuY2xhc3NOYW1lLGk9KHQub25CbHVyLHQub25LZXlEb3duLHQuZGlzYWJsZUxpc3RXcmFwLCgwLGEuZGVmYXVsdCkodCxbXCJjaGlsZHJlblwiLFwiY2xhc3NOYW1lXCIsXCJvbkJsdXJcIixcIm9uS2V5RG93blwiLFwiZGlzYWJsZUxpc3RXcmFwXCJdKSk7cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KG0uZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtyb2xlOlwibWVudVwiLHJlZjpmdW5jdGlvbih0KXtlLmxpc3RSZWY9cC5kZWZhdWx0LmZpbmRET01Ob2RlKHQpfSxjbGFzc05hbWU6cixvbktleURvd246dGhpcy5oYW5kbGVLZXlEb3duLG9uQmx1cjp0aGlzLmhhbmRsZUJsdXJ9LGkpLGQuZGVmYXVsdC5DaGlsZHJlbi5tYXAobixmdW5jdGlvbih0LG4pe3JldHVybiBkLmRlZmF1bHQuaXNWYWxpZEVsZW1lbnQodCk/ZC5kZWZhdWx0LmNsb25lRWxlbWVudCh0LHt0YWJJbmRleDpuPT09ZS5zdGF0ZS5jdXJyZW50VGFiSW5kZXg/MDotMSxyZWY6dC5wcm9wcy5zZWxlY3RlZD9mdW5jdGlvbih0KXtlLnNlbGVjdGVkSXRlbVJlZj1wLmRlZmF1bHQuZmluZERPTU5vZGUodCl9OnZvaWQgMCxvbkZvY3VzOmUuaGFuZGxlSXRlbUZvY3VzfSk6bnVsbH0pKX19XSksdH0oZC5kZWZhdWx0LkNvbXBvbmVudCk7Zy5kZWZhdWx0UHJvcHM9e2Rpc2FibGVMaXN0V3JhcDohMX07dmFyIGg9Zzt0LmRlZmF1bHQ9aH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMCkpLHM9KHIobigxKSkscihuKDYpKSksdT0obig3KSxyKG4oOCkpKSxjPXIobigxNDEpKSxkPXtyb290OntsaXN0U3R5bGU6XCJub25lXCIsbWFyZ2luOjAscGFkZGluZzowLHBvc2l0aW9uOlwicmVsYXRpdmVcIn0scGFkZGluZzp7cGFkZGluZ1RvcDo4LHBhZGRpbmdCb3R0b206OH0sZGVuc2U6e3BhZGRpbmdUb3A6NCxwYWRkaW5nQm90dG9tOjR9LHN1YmhlYWRlcjp7cGFkZGluZ1RvcDowfX07ZnVuY3Rpb24gcChlKXt2YXIgdCxuPWUuY2hpbGRyZW4scj1lLmNsYXNzZXMsdT1lLmNsYXNzTmFtZSxkPWUuY29tcG9uZW50LHA9ZS5kZW5zZSxmPWUuZGlzYWJsZVBhZGRpbmcsbT1lLnN1YmhlYWRlcixnPSgwLGkuZGVmYXVsdCkoZSxbXCJjaGlsZHJlblwiLFwiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb21wb25lbnRcIixcImRlbnNlXCIsXCJkaXNhYmxlUGFkZGluZ1wiLFwic3ViaGVhZGVyXCJdKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZCwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KShyLnJvb3QsKHQ9e30sKDAsYS5kZWZhdWx0KSh0LHIuZGVuc2UscCYmIWYpLCgwLGEuZGVmYXVsdCkodCxyLnBhZGRpbmcsIWYpLCgwLGEuZGVmYXVsdCkodCxyLnN1YmhlYWRlcixtKSx0KSx1KX0sZyksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYy5kZWZhdWx0LlByb3ZpZGVyLHt2YWx1ZTp7ZGVuc2U6cH19LG0sbikpfXQuc3R5bGVzPWQscC5kZWZhdWx0UHJvcHM9e2NvbXBvbmVudDpcInVsXCIsZGVuc2U6ITEsZGlzYWJsZVBhZGRpbmc6ITF9O3ZhciBmPSgwLHUuZGVmYXVsdCkoZCx7bmFtZTpcIk11aUxpc3RcIn0pKHApO3QuZGVmYXVsdD1mfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig5KSksYT1yKG4oNCkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShuKDcpLHIobigzNykpKSxjPXIobig4KSksZD1mdW5jdGlvbihlKXt2YXIgdD1cImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZSxuPXQ/XCJyZ2JhKDAsIDAsIDAsIDAuNDIpXCI6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNylcIjtyZXR1cm57cm9vdDp7cG9zaXRpb246XCJyZWxhdGl2ZVwifSxmb3JtQ29udHJvbDp7XCJsYWJlbCArICZcIjp7bWFyZ2luVG9wOjE2fX0sZm9jdXNlZDp7fSxkaXNhYmxlZDp7fSx1bmRlcmxpbmU6e1wiJjphZnRlclwiOntib3JkZXJCb3R0b206XCIycHggc29saWQgXCIuY29uY2F0KGUucGFsZXR0ZS5wcmltYXJ5W3Q/XCJkYXJrXCI6XCJsaWdodFwiXSksbGVmdDowLGJvdHRvbTowLGNvbnRlbnQ6J1wiXCInLHBvc2l0aW9uOlwiYWJzb2x1dGVcIixyaWdodDowLHRyYW5zZm9ybTpcInNjYWxlWCgwKVwiLHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoXCJ0cmFuc2Zvcm1cIix7ZHVyYXRpb246ZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVyLGVhc2luZzplLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlT3V0fSkscG9pbnRlckV2ZW50czpcIm5vbmVcIn0sXCImJGZvY3VzZWQ6YWZ0ZXJcIjp7dHJhbnNmb3JtOlwic2NhbGVYKDEpXCJ9LFwiJiRlcnJvcjphZnRlclwiOntib3JkZXJCb3R0b21Db2xvcjplLnBhbGV0dGUuZXJyb3IubWFpbix0cmFuc2Zvcm06XCJzY2FsZVgoMSlcIn0sXCImOmJlZm9yZVwiOntib3JkZXJCb3R0b206XCIxcHggc29saWQgXCIuY29uY2F0KG4pLGxlZnQ6MCxib3R0b206MCxjb250ZW50OidcIlxcXFwwMGEwXCInLHBvc2l0aW9uOlwiYWJzb2x1dGVcIixyaWdodDowLHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoXCJib3JkZXItYm90dG9tLWNvbG9yXCIse2R1cmF0aW9uOmUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlcn0pLHBvaW50ZXJFdmVudHM6XCJub25lXCJ9LFwiJjpob3Zlcjpub3QoJGRpc2FibGVkKTpub3QoJGZvY3VzZWQpOm5vdCgkZXJyb3IpOmJlZm9yZVwiOntib3JkZXJCb3R0b206XCIycHggc29saWQgXCIuY29uY2F0KGUucGFsZXR0ZS50ZXh0LnByaW1hcnkpLFwiQG1lZGlhIChob3Zlcjogbm9uZSlcIjp7Ym9yZGVyQm90dG9tOlwiMXB4IHNvbGlkIFwiLmNvbmNhdChuKX19LFwiJiRkaXNhYmxlZDpiZWZvcmVcIjp7Ym9yZGVyQm90dG9tU3R5bGU6XCJkb3R0ZWRcIn19LGVycm9yOnt9LG11bHRpbGluZTp7fSxmdWxsV2lkdGg6e30saW5wdXQ6e30saW5wdXRNYXJnaW5EZW5zZTp7fSxpbnB1dE11bHRpbGluZTp7fSxpbnB1dFR5cGU6e30saW5wdXRUeXBlU2VhcmNoOnt9fX07ZnVuY3Rpb24gcChlKXt2YXIgdD1lLmRpc2FibGVVbmRlcmxpbmUsbj1lLmNsYXNzZXMscj0oMCxpLmRlZmF1bHQpKGUsW1wiZGlzYWJsZVVuZGVybGluZVwiLFwiY2xhc3Nlc1wiXSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHUuZGVmYXVsdCwoMCxhLmRlZmF1bHQpKHtjbGFzc2VzOigwLGEuZGVmYXVsdCkoe30sbix7cm9vdDooMCxzLmRlZmF1bHQpKG4ucm9vdCwoMCxvLmRlZmF1bHQpKHt9LG4udW5kZXJsaW5lLCF0KSksdW5kZXJsaW5lOm51bGx9KX0scikpfXQuc3R5bGVzPWQsdS5kZWZhdWx0LmRlZmF1bHRQcm9wcz17ZnVsbFdpZHRoOiExLGlucHV0Q29tcG9uZW50OlwiaW5wdXRcIixtdWx0aWxpbmU6ITEsdHlwZTpcInRleHRcIn0scC5tdWlOYW1lPVwiSW5wdXRcIjt2YXIgZj0oMCxjLmRlZmF1bHQpKGQse25hbWU6XCJNdWlJbnB1dFwifSkocCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig5KSksaT1yKG4oNSkpLGw9cihuKDEyKSkscz1yKG4oMTQpKSx1PXIobigxNSkpLGM9cihuKDEzKSksZD1yKG4oMTYpKSxwPXIobigwKSksZj0ocihuKDEpKSxyKG4oMTcpKSxyKG4oNikpKSxtPShuKDcpLHIobigzMykpKSxnPXIobig3MykpLGg9cihuKDI1KSksYj1yKG4oOCkpLHk9bigzMiksdj1yKG4oNDY3KSksUz1uKDcyKSxFPWZ1bmN0aW9uKGUpe3ZhciB0PVwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlLG49e2NvbG9yOlwiY3VycmVudENvbG9yXCIsb3BhY2l0eTp0Py40MjouNSx0cmFuc2l0aW9uOmUudHJhbnNpdGlvbnMuY3JlYXRlKFwib3BhY2l0eVwiLHtkdXJhdGlvbjplLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXJ9KX0scj17b3BhY2l0eTowfSxvPXtvcGFjaXR5OnQ/LjQyOi41fTtyZXR1cm57cm9vdDp7Zm9udEZhbWlseTplLnR5cG9ncmFwaHkuZm9udEZhbWlseSxjb2xvcjplLnBhbGV0dGUudGV4dC5wcmltYXJ5LGZvbnRTaXplOmUudHlwb2dyYXBoeS5weFRvUmVtKDE2KSxsaW5lSGVpZ2h0OlwiMS4xODc1ZW1cIixjdXJzb3I6XCJ0ZXh0XCIsZGlzcGxheTpcImlubGluZS1mbGV4XCIsYWxpZ25JdGVtczpcImNlbnRlclwiLFwiJiRkaXNhYmxlZFwiOntjb2xvcjplLnBhbGV0dGUudGV4dC5kaXNhYmxlZCxjdXJzb3I6XCJkZWZhdWx0XCJ9fSxmb3JtQ29udHJvbDp7fSxmb2N1c2VkOnt9LGRpc2FibGVkOnt9LGFkb3JuZWRTdGFydDp7fSxhZG9ybmVkRW5kOnt9LGVycm9yOnt9LG1hcmdpbkRlbnNlOnt9LG11bHRpbGluZTp7cGFkZGluZzpcIlwiLmNvbmNhdCg2LFwicHggMCBcIikuY29uY2F0KDcsXCJweFwiKX0sZnVsbFdpZHRoOnt3aWR0aDpcIjEwMCVcIn0saW5wdXQ6e2ZvbnQ6XCJpbmhlcml0XCIsY29sb3I6XCJjdXJyZW50Q29sb3JcIixwYWRkaW5nOlwiXCIuY29uY2F0KDYsXCJweCAwIFwiKS5jb25jYXQoNyxcInB4XCIpLGJvcmRlcjowLGJveFNpemluZzpcImNvbnRlbnQtYm94XCIsYmFja2dyb3VuZDpcIm5vbmVcIixtYXJnaW46MCxXZWJraXRUYXBIaWdobGlnaHRDb2xvcjpcInRyYW5zcGFyZW50XCIsZGlzcGxheTpcImJsb2NrXCIsbWluV2lkdGg6MCx3aWR0aDpcIjEwMCVcIixcIiY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJcIjpuLFwiJjo6LW1vei1wbGFjZWhvbGRlclwiOm4sXCImOi1tcy1pbnB1dC1wbGFjZWhvbGRlclwiOm4sXCImOjotbXMtaW5wdXQtcGxhY2Vob2xkZXJcIjpuLFwiJjpmb2N1c1wiOntvdXRsaW5lOjB9LFwiJjppbnZhbGlkXCI6e2JveFNoYWRvdzpcIm5vbmVcIn0sXCImOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uXCI6e1wiLXdlYmtpdC1hcHBlYXJhbmNlXCI6XCJub25lXCJ9LFwibGFiZWxbZGF0YS1zaHJpbms9ZmFsc2VdICsgJGZvcm1Db250cm9sICZcIjp7XCImOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyXCI6cixcIiY6Oi1tb3otcGxhY2Vob2xkZXJcIjpyLFwiJjotbXMtaW5wdXQtcGxhY2Vob2xkZXJcIjpyLFwiJjo6LW1zLWlucHV0LXBsYWNlaG9sZGVyXCI6cixcIiY6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJcIjpvLFwiJjpmb2N1czo6LW1vei1wbGFjZWhvbGRlclwiOm8sXCImOmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlclwiOm8sXCImOmZvY3VzOjotbXMtaW5wdXQtcGxhY2Vob2xkZXJcIjpvfSxcIiYkZGlzYWJsZWRcIjp7b3BhY2l0eToxfX0saW5wdXRNYXJnaW5EZW5zZTp7cGFkZGluZ1RvcDozfSxpbnB1dE11bHRpbGluZTp7cmVzaXplOlwibm9uZVwiLHBhZGRpbmc6MH0saW5wdXRUeXBlOntoZWlnaHQ6XCIxLjE4NzVlbVwifSxpbnB1dFR5cGVTZWFyY2g6e1wiLW1vei1hcHBlYXJhbmNlXCI6XCJ0ZXh0ZmllbGRcIixcIi13ZWJraXQtYXBwZWFyYW5jZVwiOlwidGV4dGZpZWxkXCJ9LGlucHV0QWRvcm5lZFN0YXJ0Ont9LGlucHV0QWRvcm5lZEVuZDp7fX19O3Quc3R5bGVzPUU7dmFyIHg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbjtyZXR1cm4oMCxsLmRlZmF1bHQpKHRoaXMsdCksKG49KDAscy5kZWZhdWx0KSh0aGlzLCgwLHUuZGVmYXVsdCkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e2ZvY3VzZWQ6ITF9LG4uaGFuZGxlRm9jdXM9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcy5tdWlGb3JtQ29udHJvbDsoMCxtLmRlZmF1bHQpKHtwcm9wczpuLnByb3BzLG11aUZvcm1Db250cm9sOnQsc3RhdGVzOltcImRpc2FibGVkXCJdfSkuZGlzYWJsZWQ/ZS5zdG9wUHJvcGFnYXRpb24oKToobi5zZXRTdGF0ZSh7Zm9jdXNlZDohMH0pLG4ucHJvcHMub25Gb2N1cyYmbi5wcm9wcy5vbkZvY3VzKGUpLHQmJnQub25Gb2N1cyYmdC5vbkZvY3VzKGUpKX0sbi5oYW5kbGVCbHVyPWZ1bmN0aW9uKGUpe24uc2V0U3RhdGUoe2ZvY3VzZWQ6ITF9KSxuLnByb3BzLm9uQmx1ciYmbi5wcm9wcy5vbkJsdXIoZSk7dmFyIHQ9bi5wcm9wcy5tdWlGb3JtQ29udHJvbDt0JiZ0Lm9uQmx1ciYmdC5vbkJsdXIoZSl9LG4uaGFuZGxlQ2hhbmdlPWZ1bmN0aW9uKCl7dmFyIGU7KG4uaXNDb250cm9sbGVkfHxuLmNoZWNrRGlydHkobi5pbnB1dFJlZiksbi5wcm9wcy5vbkNoYW5nZSkmJihlPW4ucHJvcHMpLm9uQ2hhbmdlLmFwcGx5KGUsYXJndW1lbnRzKX0sbi5oYW5kbGVSZWZJbnB1dD1mdW5jdGlvbihlKXt2YXIgdDtuLmlucHV0UmVmPWUsbi5wcm9wcy5pbnB1dFJlZj90PW4ucHJvcHMuaW5wdXRSZWY6bi5wcm9wcy5pbnB1dFByb3BzJiZuLnByb3BzLmlucHV0UHJvcHMucmVmJiYodD1uLnByb3BzLmlucHV0UHJvcHMucmVmKSwoMCx5LnNldFJlZikodCxlKX0sbi5oYW5kbGVDbGljaz1mdW5jdGlvbihlKXtuLmlucHV0UmVmJiZlLmN1cnJlbnRUYXJnZXQ9PT1lLnRhcmdldCYmbi5pbnB1dFJlZi5mb2N1cygpLG4ucHJvcHMub25DbGljayYmbi5wcm9wcy5vbkNsaWNrKGUpfSxuLmlzQ29udHJvbGxlZD1udWxsIT1lLnZhbHVlLG4uaXNDb250cm9sbGVkJiZuLmNoZWNrRGlydHkoZSksbn1yZXR1cm4oMCxkLmRlZmF1bHQpKHQsZSksKDAsYy5kZWZhdWx0KSh0LG51bGwsW3trZXk6XCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLmRpc2FibGVkJiZ0LmZvY3VzZWQ/e2ZvY3VzZWQ6ITF9Om51bGx9fV0pLCgwLGMuZGVmYXVsdCkodCxbe2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzQ29udHJvbGxlZHx8dGhpcy5jaGVja0RpcnR5KHRoaXMuaW5wdXRSZWYpfX0se2tleTpcImNvbXBvbmVudERpZFVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCFlLmRpc2FibGVkJiZ0aGlzLnByb3BzLmRpc2FibGVkKXt2YXIgdD10aGlzLnByb3BzLm11aUZvcm1Db250cm9sO3QmJnQub25CbHVyJiZ0Lm9uQmx1cigpfXRoaXMuaXNDb250cm9sbGVkJiZ0aGlzLmNoZWNrRGlydHkodGhpcy5wcm9wcyl9fSx7a2V5OlwiY2hlY2tEaXJ0eVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMubXVpRm9ybUNvbnRyb2w7aWYoKDAsUy5pc0ZpbGxlZCkoZSkpcmV0dXJuIHQmJnQub25GaWxsZWQmJnQub25GaWxsZWQoKSx2b2lkKHRoaXMucHJvcHMub25GaWxsZWQmJnRoaXMucHJvcHMub25GaWxsZWQoKSk7dCYmdC5vbkVtcHR5JiZ0Lm9uRW1wdHkoKSx0aGlzLnByb3BzLm9uRW1wdHkmJnRoaXMucHJvcHMub25FbXB0eSgpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxuPXRoaXMucHJvcHMscj1uLmF1dG9Db21wbGV0ZSxsPW4uYXV0b0ZvY3VzLHM9bi5jbGFzc2VzLHU9bi5jbGFzc05hbWUsYz1uLmRlZmF1bHRWYWx1ZSxkPShuLmRpc2FibGVkLG4uZW5kQWRvcm5tZW50KSxoPShuLmVycm9yLG4uZnVsbFdpZHRoKSxiPW4uaWQseT1uLmlucHV0Q29tcG9uZW50LFM9bi5pbnB1dFByb3BzLEU9KFM9dm9pZCAwPT09Uz97fTpTKS5jbGFzc05hbWUseD0oMCxpLmRlZmF1bHQpKFMsW1wiY2xhc3NOYW1lXCJdKSx3PShuLmlucHV0UmVmLG4ubWFyZ2luLG4ubXVpRm9ybUNvbnRyb2wpLGs9bi5tdWx0aWxpbmUsXz1uLm5hbWUsVD0obi5vbkJsdXIsbi5vbkNoYW5nZSxuLm9uQ2xpY2ssbi5vbkVtcHR5LG4ub25GaWxsZWQsbi5vbkZvY3VzLG4ub25LZXlEb3duKSxBPW4ub25LZXlVcCxDPW4ucGxhY2Vob2xkZXIsTz1uLnJlYWRPbmx5LEk9bi5yZW5kZXJQcmVmaXgsTj1uLnJvd3MsUj1uLnJvd3NNYXgsUD1uLnN0YXJ0QWRvcm5tZW50LE09bi50eXBlLEw9bi52YWx1ZSxEPSgwLGkuZGVmYXVsdCkobixbXCJhdXRvQ29tcGxldGVcIixcImF1dG9Gb2N1c1wiLFwiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJkZWZhdWx0VmFsdWVcIixcImRpc2FibGVkXCIsXCJlbmRBZG9ybm1lbnRcIixcImVycm9yXCIsXCJmdWxsV2lkdGhcIixcImlkXCIsXCJpbnB1dENvbXBvbmVudFwiLFwiaW5wdXRQcm9wc1wiLFwiaW5wdXRSZWZcIixcIm1hcmdpblwiLFwibXVpRm9ybUNvbnRyb2xcIixcIm11bHRpbGluZVwiLFwibmFtZVwiLFwib25CbHVyXCIsXCJvbkNoYW5nZVwiLFwib25DbGlja1wiLFwib25FbXB0eVwiLFwib25GaWxsZWRcIixcIm9uRm9jdXNcIixcIm9uS2V5RG93blwiLFwib25LZXlVcFwiLFwicGxhY2Vob2xkZXJcIixcInJlYWRPbmx5XCIsXCJyZW5kZXJQcmVmaXhcIixcInJvd3NcIixcInJvd3NNYXhcIixcInN0YXJ0QWRvcm5tZW50XCIsXCJ0eXBlXCIsXCJ2YWx1ZVwiXSksRj1EW1wiYXJpYS1kZXNjcmliZWRieVwiXTtkZWxldGUgRFtcImFyaWEtZGVzY3JpYmVkYnlcIl07dmFyIEI9KDAsbS5kZWZhdWx0KSh7cHJvcHM6dGhpcy5wcm9wcyxtdWlGb3JtQ29udHJvbDp3LHN0YXRlczpbXCJkaXNhYmxlZFwiLFwiZXJyb3JcIixcIm1hcmdpblwiLFwicmVxdWlyZWRcIixcImZpbGxlZFwiXX0pLGo9dz93LmZvY3VzZWQ6dGhpcy5zdGF0ZS5mb2N1c2VkLFU9KDAsZi5kZWZhdWx0KShzLnJvb3QsKGU9e30sKDAsYS5kZWZhdWx0KShlLHMuZGlzYWJsZWQsQi5kaXNhYmxlZCksKDAsYS5kZWZhdWx0KShlLHMuZXJyb3IsQi5lcnJvciksKDAsYS5kZWZhdWx0KShlLHMuZnVsbFdpZHRoLGgpLCgwLGEuZGVmYXVsdCkoZSxzLmZvY3VzZWQsaiksKDAsYS5kZWZhdWx0KShlLHMuZm9ybUNvbnRyb2wsdyksKDAsYS5kZWZhdWx0KShlLHMubWFyZ2luRGVuc2UsXCJkZW5zZVwiPT09Qi5tYXJnaW4pLCgwLGEuZGVmYXVsdCkoZSxzLm11bHRpbGluZSxrKSwoMCxhLmRlZmF1bHQpKGUscy5hZG9ybmVkU3RhcnQsUCksKDAsYS5kZWZhdWx0KShlLHMuYWRvcm5lZEVuZCxkKSxlKSx1KSx6PSgwLGYuZGVmYXVsdCkocy5pbnB1dCwodD17fSwoMCxhLmRlZmF1bHQpKHQscy5kaXNhYmxlZCxCLmRpc2FibGVkKSwoMCxhLmRlZmF1bHQpKHQscy5pbnB1dFR5cGUsXCJ0ZXh0XCIhPT1NKSwoMCxhLmRlZmF1bHQpKHQscy5pbnB1dFR5cGVTZWFyY2gsXCJzZWFyY2hcIj09PU0pLCgwLGEuZGVmYXVsdCkodCxzLmlucHV0TXVsdGlsaW5lLGspLCgwLGEuZGVmYXVsdCkodCxzLmlucHV0TWFyZ2luRGVuc2UsXCJkZW5zZVwiPT09Qi5tYXJnaW4pLCgwLGEuZGVmYXVsdCkodCxzLmlucHV0QWRvcm5lZFN0YXJ0LFApLCgwLGEuZGVmYXVsdCkodCxzLmlucHV0QWRvcm5lZEVuZCxkKSx0KSxFKSxIPXksVz0oMCxvLmRlZmF1bHQpKHt9LHgse3JlZjp0aGlzLmhhbmRsZVJlZklucHV0fSk7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIEg/Vz0oMCxvLmRlZmF1bHQpKHtpbnB1dFJlZjp0aGlzLmhhbmRsZVJlZklucHV0LHR5cGU6TX0sVyx7cmVmOm51bGx9KTprP04mJiFSP0g9XCJ0ZXh0YXJlYVwiOihXPSgwLG8uZGVmYXVsdCkoe3Jvd3NNYXg6Uix0ZXh0YXJlYVJlZjp0aGlzLmhhbmRsZVJlZklucHV0fSxXLHtyZWY6bnVsbH0pLEg9di5kZWZhdWx0KTpXPSgwLG8uZGVmYXVsdCkoe3R5cGU6TX0sVykscC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwoMCxvLmRlZmF1bHQpKHtjbGFzc05hbWU6VSxvbkNsaWNrOnRoaXMuaGFuZGxlQ2xpY2t9LEQpLEk/SSgoMCxvLmRlZmF1bHQpKHt9LEIse3N0YXJ0QWRvcm5tZW50OlAsZm9jdXNlZDpqfSkpOm51bGwsUCxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChnLmRlZmF1bHQuUHJvdmlkZXIse3ZhbHVlOm51bGx9LHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEgsKDAsby5kZWZhdWx0KSh7XCJhcmlhLWludmFsaWRcIjpCLmVycm9yLFwiYXJpYS1kZXNjcmliZWRieVwiOkYsYXV0b0NvbXBsZXRlOnIsYXV0b0ZvY3VzOmwsY2xhc3NOYW1lOnosZGVmYXVsdFZhbHVlOmMsZGlzYWJsZWQ6Qi5kaXNhYmxlZCxpZDpiLG5hbWU6XyxvbkJsdXI6dGhpcy5oYW5kbGVCbHVyLG9uQ2hhbmdlOnRoaXMuaGFuZGxlQ2hhbmdlLG9uRm9jdXM6dGhpcy5oYW5kbGVGb2N1cyxvbktleURvd246VCxvbktleVVwOkEscGxhY2Vob2xkZXI6QyxyZWFkT25seTpPLHJlcXVpcmVkOkIucmVxdWlyZWQscm93czpOLHZhbHVlOkx9LFcpKSksZCl9fV0pLHR9KHAuZGVmYXVsdC5Db21wb25lbnQpO3guZGVmYXVsdFByb3BzPXtmdWxsV2lkdGg6ITEsaW5wdXRDb21wb25lbnQ6XCJpbnB1dFwiLG11bHRpbGluZTohMSx0eXBlOlwidGV4dFwifTt2YXIgdz0oMCxiLmRlZmF1bHQpKEUse25hbWU6XCJNdWlJbnB1dEJhc2VcIn0pKCgwLGguZGVmYXVsdCkoeCkpO3QuZGVmYXVsdD13fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDEyKSksbD1yKG4oMTMpKSxzPXIobigxNCkpLHU9cihuKDE1KSksYz1yKG4oMTYpKSxkPXIobigwKSkscD0ocihuKDEpKSxyKG4oNikpKSxmPXIobigxNDIpKSxtPXIobigxNDMpKSxnPXIobig4KSksaD1uKDMyKSxiPTE5LHk9e3Jvb3Q6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIix3aWR0aDpcIjEwMCVcIn0sdGV4dGFyZWE6e3dpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIixyZXNpemU6XCJub25lXCIsZm9udDpcImluaGVyaXRcIixwYWRkaW5nOjAsY3Vyc29yOlwiaW5oZXJpdFwiLGJveFNpemluZzpcImJvcmRlci1ib3hcIixsaW5lSGVpZ2h0OlwiaW5oZXJpdFwiLGJvcmRlcjpcIm5vbmVcIixvdXRsaW5lOlwibm9uZVwiLGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwifSxzaGFkb3c6e292ZXJmbG93OlwiaGlkZGVuXCIsdmlzaWJpbGl0eTpcImhpZGRlblwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIixoZWlnaHQ6XCJhdXRvXCIsd2hpdGVTcGFjZTpcInByZS13cmFwXCJ9fTt0LnN0eWxlcz15O3ZhciB2PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIG47cmV0dXJuKDAsaS5kZWZhdWx0KSh0aGlzLHQpLChuPSgwLHMuZGVmYXVsdCkodGhpcywoMCx1LmRlZmF1bHQpKHQpLmNhbGwodGhpcykpKS5oYW5kbGVSZWZJbnB1dD1mdW5jdGlvbihlKXtuLmlucHV0UmVmPWUsKDAsaC5zZXRSZWYpKG4ucHJvcHMudGV4dGFyZWFSZWYsZSl9LG4uaGFuZGxlUmVmU2luZ2xlbGluZVNoYWRvdz1mdW5jdGlvbihlKXtuLnNpbmdsZWxpbmVTaGFkb3dSZWY9ZX0sbi5oYW5kbGVSZWZTaGFkb3c9ZnVuY3Rpb24oZSl7bi5zaGFkb3dSZWY9ZX0sbi5oYW5kbGVDaGFuZ2U9ZnVuY3Rpb24oZSl7bi52YWx1ZT1lLnRhcmdldC52YWx1ZSxuLmlzQ29udHJvbGxlZHx8KG4uc2hhZG93UmVmLnZhbHVlPW4udmFsdWUsbi5zeW5jSGVpZ2h0V2l0aFNoYWRvdygpKSxuLnByb3BzLm9uQ2hhbmdlJiZuLnByb3BzLm9uQ2hhbmdlKGUpfSxuLmlzQ29udHJvbGxlZD1udWxsIT1lLnZhbHVlLG4udmFsdWU9ZS52YWx1ZXx8ZS5kZWZhdWx0VmFsdWV8fFwiXCIsbi5zdGF0ZT17aGVpZ2h0Ok51bWJlcihlLnJvd3MpKmJ9LFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJihuLmhhbmRsZVJlc2l6ZT0oMCxmLmRlZmF1bHQpKGZ1bmN0aW9uKCl7bi5zeW5jSGVpZ2h0V2l0aFNoYWRvdygpfSwxNjYpKSxufXJldHVybigwLGMuZGVmYXVsdCkodCxlKSwoMCxsLmRlZmF1bHQpKHQsW3trZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zeW5jSGVpZ2h0V2l0aFNoYWRvdygpfX0se2tleTpcImNvbXBvbmVudERpZFVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zeW5jSGVpZ2h0V2l0aFNoYWRvdygpfX0se2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZVJlc2l6ZS5jbGVhcigpfX0se2tleTpcInN5bmNIZWlnaHRXaXRoU2hhZG93XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzO2lmKHRoaXMuc2hhZG93UmVmKXt0aGlzLmlzQ29udHJvbGxlZCYmKHRoaXMuc2hhZG93UmVmLnZhbHVlPW51bGw9PWUudmFsdWU/XCJcIjpTdHJpbmcoZS52YWx1ZSkpO3ZhciB0PXRoaXMuc2luZ2xlbGluZVNoYWRvd1JlZi5zY3JvbGxIZWlnaHQ7dD0wPT09dD9iOnQ7dmFyIG49dGhpcy5zaGFkb3dSZWYuc2Nyb2xsSGVpZ2h0O3ZvaWQgMCE9PW4mJihOdW1iZXIoZS5yb3dzTWF4KT49TnVtYmVyKGUucm93cykmJihuPU1hdGgubWluKE51bWJlcihlLnJvd3NNYXgpKnQsbikpLG49TWF0aC5tYXgobix0KSxNYXRoLmFicyh0aGlzLnN0YXRlLmhlaWdodC1uKT4xJiZ0aGlzLnNldFN0YXRlKHtoZWlnaHQ6bn0pKX19fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jbGFzc2VzLG49ZS5jbGFzc05hbWUscj1lLmRlZmF1bHRWYWx1ZSxpPShlLm9uQ2hhbmdlLGUucm93cyksbD0oZS5yb3dzTWF4LGUuc3R5bGUpLHM9KGUudGV4dGFyZWFSZWYsZS52YWx1ZSksdT0oMCxhLmRlZmF1bHQpKGUsW1wiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJkZWZhdWx0VmFsdWVcIixcIm9uQ2hhbmdlXCIsXCJyb3dzXCIsXCJyb3dzTWF4XCIsXCJzdHlsZVwiLFwidGV4dGFyZWFSZWZcIixcInZhbHVlXCJdKTtyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOnQucm9vdH0sZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobS5kZWZhdWx0LHt0YXJnZXQ6XCJ3aW5kb3dcIixvblJlc2l6ZTp0aGlzLmhhbmRsZVJlc2l6ZX0pLGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwidGV4dGFyZWFcIix7XCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGNsYXNzTmFtZTooMCxwLmRlZmF1bHQpKHQudGV4dGFyZWEsdC5zaGFkb3cpLHJlYWRPbmx5OiEwLHJlZjp0aGlzLmhhbmRsZVJlZlNpbmdsZWxpbmVTaGFkb3cscm93czpcIjFcIix0YWJJbmRleDotMSx2YWx1ZTpcIlwifSksZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiLHtcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3NOYW1lOigwLHAuZGVmYXVsdCkodC50ZXh0YXJlYSx0LnNoYWRvdyksZGVmYXVsdFZhbHVlOnIscmVhZE9ubHk6ITAscmVmOnRoaXMuaGFuZGxlUmVmU2hhZG93LHJvd3M6aSx0YWJJbmRleDotMSx2YWx1ZTpzfSksZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCgwLG8uZGVmYXVsdCkoe3Jvd3M6aSxjbGFzc05hbWU6KDAscC5kZWZhdWx0KSh0LnRleHRhcmVhLG4pLGRlZmF1bHRWYWx1ZTpyLHZhbHVlOnMsb25DaGFuZ2U6dGhpcy5oYW5kbGVDaGFuZ2UscmVmOnRoaXMuaGFuZGxlUmVmSW5wdXQsc3R5bGU6KDAsby5kZWZhdWx0KSh7aGVpZ2h0OnRoaXMuc3RhdGUuaGVpZ2h0fSxsKX0sdSkpKX19XSksdH0oZC5kZWZhdWx0LkNvbXBvbmVudCk7di5kZWZhdWx0UHJvcHM9e3Jvd3M6MX07dmFyIFM9KDAsZy5kZWZhdWx0KSh5LHtuYW1lOlwiTXVpUHJpdmF0ZVRleHRhcmVhXCJ9KSh2KTt0LmRlZmF1bHQ9U30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDUpKSxpPXIobigwKSksbD0ocihuKDEpKSxuKDcpLHIobigxNTApKSkscz1yKG4oOCkpLHU9cihuKDMzKSksYz1yKG4oMjUpKSxkPXIobigxNDkpKSxwPXIobigzNikpLGY9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIix3aWR0aDpcIjEwMCVcIn0sc2VsZWN0OntcIi1tb3otYXBwZWFyYW5jZVwiOlwibm9uZVwiLFwiLXdlYmtpdC1hcHBlYXJhbmNlXCI6XCJub25lXCIsdXNlclNlbGVjdDpcIm5vbmVcIixwYWRkaW5nUmlnaHQ6MzIsYm9yZGVyUmFkaXVzOjAsaGVpZ2h0OlwiMS4xODc1ZW1cIix3aWR0aDpcImNhbGMoMTAwJSAtIDMycHgpXCIsbWluV2lkdGg6MTYsY3Vyc29yOlwicG9pbnRlclwiLFwiJjpmb2N1c1wiOntiYWNrZ3JvdW5kQ29sb3I6XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/XCJyZ2JhKDAsIDAsIDAsIDAuMDUpXCI6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpXCIsYm9yZGVyUmFkaXVzOjB9LFwiJjo6LW1zLWV4cGFuZFwiOntkaXNwbGF5Olwibm9uZVwifSxcIiYkZGlzYWJsZWRcIjp7Y3Vyc29yOlwiZGVmYXVsdFwifSxcIiZbbXVsdGlwbGVdXCI6e2hlaWdodDpcImF1dG9cIn0sXCImOm5vdChbbXVsdGlwbGVdKSBvcHRpb24sICY6bm90KFttdWx0aXBsZV0pIG9wdGdyb3VwXCI6e2JhY2tncm91bmRDb2xvcjplLnBhbGV0dGUuYmFja2dyb3VuZC5wYXBlcn19LGZpbGxlZDp7d2lkdGg6XCJjYWxjKDEwMCUgLSA0NHB4KVwifSxvdXRsaW5lZDp7d2lkdGg6XCJjYWxjKDEwMCUgLSA0NnB4KVwiLGJvcmRlclJhZGl1czplLnNoYXBlLmJvcmRlclJhZGl1c30sc2VsZWN0TWVudTp7d2lkdGg6XCJhdXRvXCIsaGVpZ2h0OlwiYXV0b1wiLHRleHRPdmVyZmxvdzpcImVsbGlwc2lzXCIsd2hpdGVTcGFjZTpcIm5vd3JhcFwiLG92ZXJmbG93OlwiaGlkZGVuXCIsbWluSGVpZ2h0OlwiMS4xODc1ZW1cIn0sZGlzYWJsZWQ6e30saWNvbjp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLHJpZ2h0OjAsdG9wOlwiY2FsYyg1MCUgLSAxMnB4KVwiLGNvbG9yOmUucGFsZXR0ZS5hY3Rpb24uYWN0aXZlLFwicG9pbnRlci1ldmVudHNcIjpcIm5vbmVcIn19fTtmdW5jdGlvbiBtKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmNsYXNzZXMscj1lLkljb25Db21wb25lbnQscz1lLmlucHV0LGM9ZS5pbnB1dFByb3BzLGQ9ZS5tdWlGb3JtQ29udHJvbCxwPShlLnZhcmlhbnQsKDAsYS5kZWZhdWx0KShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJJY29uQ29tcG9uZW50XCIsXCJpbnB1dFwiLFwiaW5wdXRQcm9wc1wiLFwibXVpRm9ybUNvbnRyb2xcIixcInZhcmlhbnRcIl0pKSxmPSgwLHUuZGVmYXVsdCkoe3Byb3BzOmUsbXVpRm9ybUNvbnRyb2w6ZCxzdGF0ZXM6W1widmFyaWFudFwiXX0pO3JldHVybiBpLmRlZmF1bHQuY2xvbmVFbGVtZW50KHMsKDAsby5kZWZhdWx0KSh7aW5wdXRDb21wb25lbnQ6bC5kZWZhdWx0LGlucHV0UHJvcHM6KDAsby5kZWZhdWx0KSh7Y2hpbGRyZW46dCxjbGFzc2VzOm4sSWNvbkNvbXBvbmVudDpyLHZhcmlhbnQ6Zi52YXJpYW50LHR5cGU6dm9pZCAwfSxjLHM/cy5wcm9wcy5pbnB1dFByb3BzOnt9KX0scCkpfXQuc3R5bGVzPWYsbS5kZWZhdWx0UHJvcHM9e0ljb25Db21wb25lbnQ6ZC5kZWZhdWx0LGlucHV0OmkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHAuZGVmYXVsdCxudWxsKX0sbS5tdWlOYW1lPVwiU2VsZWN0XCI7dmFyIGc9KDAscy5kZWZhdWx0KShmLHtuYW1lOlwiTXVpTmF0aXZlU2VsZWN0XCJ9KSgoMCxjLmRlZmF1bHQpKG0pKTt0LmRlZmF1bHQ9Z30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDUpKSxpPXIobigwKSksbD0ocihuKDEpKSxyKG4oNikpKSxzPXIobig4KSksdT1uKDIxKSxjPXIobig0NzApKSxkPWZ1bmN0aW9uKGUpe3JldHVybntyb290OntkaXNwbGF5OlwiaW5saW5lLWZsZXhcIix3aWR0aDo2Mixwb3NpdGlvbjpcInJlbGF0aXZlXCIsZmxleFNocmluazowLHpJbmRleDowLHZlcnRpY2FsQWxpZ246XCJtaWRkbGVcIn0saWNvbjp7Ym94U2hhZG93OmUuc2hhZG93c1sxXSxiYWNrZ3JvdW5kQ29sb3I6XCJjdXJyZW50Q29sb3JcIix3aWR0aDoyMCxoZWlnaHQ6MjAsYm9yZGVyUmFkaXVzOlwiNTAlXCJ9LGljb25DaGVja2VkOntib3hTaGFkb3c6ZS5zaGFkb3dzWzJdfSxzd2l0Y2hCYXNlOntwYWRkaW5nOjAsaGVpZ2h0OjQ4LHdpZHRoOjQ4LGNvbG9yOlwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlP2UucGFsZXR0ZS5ncmV5WzUwXTplLnBhbGV0dGUuZ3JleVs0MDBdLHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoXCJ0cmFuc2Zvcm1cIix7ZHVyYXRpb246ZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVzdH0pfSxjaGVja2VkOnt0cmFuc2Zvcm06XCJ0cmFuc2xhdGVYKDE0cHgpXCIsXCImICsgJGJhclwiOntvcGFjaXR5Oi41fX0sY29sb3JQcmltYXJ5OntcIiYkY2hlY2tlZFwiOntjb2xvcjplLnBhbGV0dGUucHJpbWFyeS5tYWluLFwiJiArICRiYXJcIjp7YmFja2dyb3VuZENvbG9yOmUucGFsZXR0ZS5wcmltYXJ5Lm1haW59fX0sY29sb3JTZWNvbmRhcnk6e1wiJiRjaGVja2VkXCI6e2NvbG9yOmUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbixcIiYgKyAkYmFyXCI6e2JhY2tncm91bmRDb2xvcjplLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW59fX0sZGlzYWJsZWQ6e1wiJiArICRiYXJcIjp7b3BhY2l0eTpcImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT8uMTI6LjF9LFwiJiAkaWNvblwiOntib3hTaGFkb3c6ZS5zaGFkb3dzWzFdfSxcIiYkc3dpdGNoQmFzZVwiOntjb2xvcjpcImxpZ2h0XCI9PT1lLnBhbGV0dGUudHlwZT9lLnBhbGV0dGUuZ3JleVs0MDBdOmUucGFsZXR0ZS5ncmV5WzgwMF0sXCImICsgJGJhclwiOntiYWNrZ3JvdW5kQ29sb3I6XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/ZS5wYWxldHRlLmNvbW1vbi5ibGFjazplLnBhbGV0dGUuY29tbW9uLndoaXRlfX19LGJhcjp7Ym9yZGVyUmFkaXVzOjcsZGlzcGxheTpcImJsb2NrXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLHpJbmRleDotMSx3aWR0aDozNCxoZWlnaHQ6MTQsdG9wOlwiNTAlXCIsbGVmdDpcIjUwJVwiLG1hcmdpblRvcDotNyxtYXJnaW5MZWZ0Oi0xNyx0cmFuc2l0aW9uOmUudHJhbnNpdGlvbnMuY3JlYXRlKFtcIm9wYWNpdHlcIixcImJhY2tncm91bmQtY29sb3JcIl0se2R1cmF0aW9uOmUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlc3R9KSxiYWNrZ3JvdW5kQ29sb3I6XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/ZS5wYWxldHRlLmNvbW1vbi5ibGFjazplLnBhbGV0dGUuY29tbW9uLndoaXRlLG9wYWNpdHk6XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/LjM4Oi4zfX19O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5jbGFzc05hbWUscj1lLmNvbG9yLHM9KDAsYS5kZWZhdWx0KShlLFtcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29sb3JcIl0pO3JldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOigwLGwuZGVmYXVsdCkodC5yb290LG4pfSxpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChjLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7dHlwZTpcImNoZWNrYm94XCIsaWNvbjppLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOnQuaWNvbn0pLGNsYXNzZXM6e3Jvb3Q6KDAsbC5kZWZhdWx0KSh0LnN3aXRjaEJhc2UsdFtcImNvbG9yXCIuY29uY2F0KCgwLHUuY2FwaXRhbGl6ZSkocikpXSksY2hlY2tlZDp0LmNoZWNrZWQsZGlzYWJsZWQ6dC5kaXNhYmxlZH0sY2hlY2tlZEljb246aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse2NsYXNzTmFtZTooMCxsLmRlZmF1bHQpKHQuaWNvbix0Lmljb25DaGVja2VkKX0pfSxzKSksaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse2NsYXNzTmFtZTp0LmJhcn0pKX10LnN0eWxlcz1kLHAuZGVmYXVsdFByb3BzPXtjb2xvcjpcInNlY29uZGFyeVwifTt2YXIgZj0oMCxzLmRlZmF1bHQpKGQse25hbWU6XCJNdWlTd2l0Y2hcIn0pKHApO3QuZGVmYXVsdD1mfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigxMikpLHM9cihuKDEzKSksdT1yKG4oMTQpKSxjPXIobigxNSkpLGQ9cihuKDE2KSkscD1yKG4oMCkpLGY9KHIobigxKSkscihuKDYpKSksbT1yKG4oMjUpKSxnPXIobig4KSksaD1yKG4oOTEpKSxiPXtyb290OntkaXNwbGF5OlwiaW5saW5lLWZsZXhcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCIsdHJhbnNpdGlvbjpcIm5vbmVcIixcIiY6aG92ZXJcIjp7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn19LGNoZWNrZWQ6e30sZGlzYWJsZWQ6e30saW5wdXQ6e2N1cnNvcjpcImluaGVyaXRcIixwb3NpdGlvbjpcImFic29sdXRlXCIsb3BhY2l0eTowLHdpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAscGFkZGluZzowfX07dC5zdHlsZXM9Yjt2YXIgeT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBuO3JldHVybigwLGwuZGVmYXVsdCkodGhpcyx0KSwobj0oMCx1LmRlZmF1bHQpKHRoaXMsKDAsYy5kZWZhdWx0KSh0KS5jYWxsKHRoaXMpKSkuaGFuZGxlRm9jdXM9ZnVuY3Rpb24oZSl7bi5wcm9wcy5vbkZvY3VzJiZuLnByb3BzLm9uRm9jdXMoZSk7dmFyIHQ9bi5wcm9wcy5tdWlGb3JtQ29udHJvbDt0JiZ0Lm9uRm9jdXMmJnQub25Gb2N1cyhlKX0sbi5oYW5kbGVCbHVyPWZ1bmN0aW9uKGUpe24ucHJvcHMub25CbHVyJiZuLnByb3BzLm9uQmx1cihlKTt2YXIgdD1uLnByb3BzLm11aUZvcm1Db250cm9sO3QmJnQub25CbHVyJiZ0Lm9uQmx1cihlKX0sbi5oYW5kbGVJbnB1dENoYW5nZT1mdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5jaGVja2VkO24uaXNDb250cm9sbGVkfHxuLnNldFN0YXRlKHtjaGVja2VkOnR9KSxuLnByb3BzLm9uQ2hhbmdlJiZuLnByb3BzLm9uQ2hhbmdlKGUsdCl9LG4uaXNDb250cm9sbGVkPW51bGwhPWUuY2hlY2tlZCxuLnN0YXRlPXt9LG4uaXNDb250cm9sbGVkfHwobi5zdGF0ZS5jaGVja2VkPXZvaWQgMCE9PWUuZGVmYXVsdENoZWNrZWQmJmUuZGVmYXVsdENoZWNrZWQpLG59cmV0dXJuKDAsZC5kZWZhdWx0KSh0LGUpLCgwLHMuZGVmYXVsdCkodCxbe2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLnByb3BzLG49dC5hdXRvRm9jdXMscj10LmNoZWNrZWQsbD10LmNoZWNrZWRJY29uLHM9dC5jbGFzc2VzLHU9dC5jbGFzc05hbWUsYz10LmRlZmF1bHRDaGVja2VkLGQ9dC5kaXNhYmxlZCxtPXQuaWNvbixnPXQuaWQsYj10LmlucHV0UHJvcHMseT10LmlucHV0UmVmLHY9dC5tdWlGb3JtQ29udHJvbCxTPXQubmFtZSxFPSh0Lm9uQmx1cix0Lm9uQ2hhbmdlLHQub25Gb2N1cyx0LnJlYWRPbmx5KSx4PXQucmVxdWlyZWQsdz10LnRhYkluZGV4LGs9dC50eXBlLF89dC52YWx1ZSxUPSgwLGkuZGVmYXVsdCkodCxbXCJhdXRvRm9jdXNcIixcImNoZWNrZWRcIixcImNoZWNrZWRJY29uXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImRlZmF1bHRDaGVja2VkXCIsXCJkaXNhYmxlZFwiLFwiaWNvblwiLFwiaWRcIixcImlucHV0UHJvcHNcIixcImlucHV0UmVmXCIsXCJtdWlGb3JtQ29udHJvbFwiLFwibmFtZVwiLFwib25CbHVyXCIsXCJvbkNoYW5nZVwiLFwib25Gb2N1c1wiLFwicmVhZE9ubHlcIixcInJlcXVpcmVkXCIsXCJ0YWJJbmRleFwiLFwidHlwZVwiLFwidmFsdWVcIl0pLEE9ZDt2JiZ2b2lkIDA9PT1BJiYoQT12LmRpc2FibGVkKTt2YXIgQz10aGlzLmlzQ29udHJvbGxlZD9yOnRoaXMuc3RhdGUuY2hlY2tlZCxPPVwiY2hlY2tib3hcIj09PWt8fFwicmFkaW9cIj09PWs7cmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGguZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtjb21wb25lbnQ6XCJzcGFuXCIsY2xhc3NOYW1lOigwLGYuZGVmYXVsdCkocy5yb290LChlPXt9LCgwLGEuZGVmYXVsdCkoZSxzLmNoZWNrZWQsQyksKDAsYS5kZWZhdWx0KShlLHMuZGlzYWJsZWQsQSksZSksdSksZGlzYWJsZWQ6QSx0YWJJbmRleDpudWxsLHJvbGU6dm9pZCAwLG9uRm9jdXM6dGhpcy5oYW5kbGVGb2N1cyxvbkJsdXI6dGhpcy5oYW5kbGVCbHVyfSxUKSxDP2w6bSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImlucHV0XCIsKDAsby5kZWZhdWx0KSh7YXV0b0ZvY3VzOm4sY2hlY2tlZDpyLGRlZmF1bHRDaGVja2VkOmMsY2xhc3NOYW1lOnMuaW5wdXQsZGlzYWJsZWQ6QSxpZDpPJiZnLG5hbWU6UyxvbkNoYW5nZTp0aGlzLmhhbmRsZUlucHV0Q2hhbmdlLHJlYWRPbmx5OkUscmVmOnkscmVxdWlyZWQ6eCx0YWJJbmRleDp3LHR5cGU6ayx2YWx1ZTpffSxiKSkpfX1dKSx0fShwLmRlZmF1bHQuQ29tcG9uZW50KSx2PSgwLGcuZGVmYXVsdCkoYix7bmFtZTpcIk11aVByaXZhdGVTd2l0Y2hCYXNlXCJ9KSgoMCxtLmRlZmF1bHQpKHkpKTt0LmRlZmF1bHQ9dn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDkpKSxpPXIobig1KSksbD1yKG4oMCkpLHM9KHIobigxKSkscihuKDYpKSksdT0obig3KSxyKG4oOCkpKSxjPW4oMzEpLGQ9cihuKDUzKSkscD1uKDIxKSxmPWZ1bmN0aW9uKGUpe3JldHVybntyb290Ont0ZXh0QWxpZ246XCJjZW50ZXJcIixmbGV4OlwiMCAwIGF1dG9cIixmb250U2l6ZTplLnR5cG9ncmFwaHkucHhUb1JlbSgyNCkscGFkZGluZzoxMixib3JkZXJSYWRpdXM6XCI1MCVcIixvdmVyZmxvdzpcInZpc2libGVcIixjb2xvcjplLnBhbGV0dGUuYWN0aW9uLmFjdGl2ZSx0cmFuc2l0aW9uOmUudHJhbnNpdGlvbnMuY3JlYXRlKFwiYmFja2dyb3VuZC1jb2xvclwiLHtkdXJhdGlvbjplLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXN0fSksXCImOmhvdmVyXCI6e2JhY2tncm91bmRDb2xvcjooMCxjLmZhZGUpKGUucGFsZXR0ZS5hY3Rpb24uYWN0aXZlLGUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcIkBtZWRpYSAoaG92ZXI6IG5vbmUpXCI6e2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCJ9LFwiJiRkaXNhYmxlZFwiOntiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifX0sXCImJGRpc2FibGVkXCI6e2NvbG9yOmUucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWR9fSxjb2xvckluaGVyaXQ6e2NvbG9yOlwiaW5oZXJpdFwifSxjb2xvclByaW1hcnk6e2NvbG9yOmUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sXCImOmhvdmVyXCI6e2JhY2tncm91bmRDb2xvcjooMCxjLmZhZGUpKGUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFwiQG1lZGlhIChob3Zlcjogbm9uZSlcIjp7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn19fSxjb2xvclNlY29uZGFyeTp7Y29sb3I6ZS5wYWxldHRlLnNlY29uZGFyeS5tYWluLFwiJjpob3ZlclwiOntiYWNrZ3JvdW5kQ29sb3I6KDAsYy5mYWRlKShlLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW4sZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFwiQG1lZGlhIChob3Zlcjogbm9uZSlcIjp7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn19fSxkaXNhYmxlZDp7fSxsYWJlbDp7d2lkdGg6XCIxMDAlXCIsZGlzcGxheTpcImZsZXhcIixhbGlnbkl0ZW1zOlwiaW5oZXJpdFwiLGp1c3RpZnlDb250ZW50OlwiaW5oZXJpdFwifX19O2Z1bmN0aW9uIG0oZSl7dmFyIHQsbj1lLmNoaWxkcmVuLHI9ZS5jbGFzc2VzLHU9ZS5jbGFzc05hbWUsYz1lLmNvbG9yLGY9ZS5kaXNhYmxlZCxtPSgwLGkuZGVmYXVsdCkoZSxbXCJjaGlsZHJlblwiLFwiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb2xvclwiLFwiZGlzYWJsZWRcIl0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoci5yb290LCh0PXt9LCgwLGEuZGVmYXVsdCkodCxyW1wiY29sb3JcIi5jb25jYXQoKDAscC5jYXBpdGFsaXplKShjKSldLFwiZGVmYXVsdFwiIT09YyksKDAsYS5kZWZhdWx0KSh0LHIuZGlzYWJsZWQsZiksdCksdSksY2VudGVyUmlwcGxlOiEwLGZvY3VzUmlwcGxlOiEwLGRpc2FibGVkOmZ9LG0pLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6ci5sYWJlbH0sbikpfXQuc3R5bGVzPWYsbS5kZWZhdWx0UHJvcHM9e2NvbG9yOlwiZGVmYXVsdFwiLGRpc2FibGVkOiExfTt2YXIgZz0oMCx1LmRlZmF1bHQpKGYse25hbWU6XCJNdWlJY29uQnV0dG9uXCJ9KShtKTt0LmRlZmF1bHQ9Z30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQuc3R5bGVzPXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDUpKSxpPXIobigxMikpLGw9cihuKDEzKSkscz1yKG4oMTQpKSx1PXIobigxNSkpLGM9cihuKDE2KSksZD1yKG4oMCkpLHA9KHIobigxKSkscihuKDYpKSksZj0obig3KSxyKG4oOCkpKSxtPXIobigxNTMpKSxnPWZ1bmN0aW9uKGUpe3JldHVybntyb290OntkaXNwbGF5OlwidGFibGVcIixmb250RmFtaWx5OmUudHlwb2dyYXBoeS5mb250RmFtaWx5LHdpZHRoOlwiMTAwJVwiLGJvcmRlckNvbGxhcHNlOlwiY29sbGFwc2VcIixib3JkZXJTcGFjaW5nOjB9fX07dC5zdHlsZXM9Zzt2YXIgaD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjsoMCxpLmRlZmF1bHQpKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuKG49KDAscy5kZWZhdWx0KSh0aGlzLChlPSgwLHUuZGVmYXVsdCkodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8pKSkpLm1lbW9pemVkQ29udGV4dFZhbHVlPXt9LG59cmV0dXJuKDAsYy5kZWZhdWx0KSh0LGUpLCgwLGwuZGVmYXVsdCkodCxbe2tleTpcInVzZU1lbW9cIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9T2JqZWN0LmtleXMoZSksbj0wO248dC5sZW5ndGg7bis9MSl7dmFyIHI9dFtuXTtpZihlW3JdIT09dGhpcy5tZW1vaXplZENvbnRleHRWYWx1ZVtyXSl7dGhpcy5tZW1vaXplZENvbnRleHRWYWx1ZT1lO2JyZWFrfX1yZXR1cm4gdGhpcy5tZW1vaXplZENvbnRleHRWYWx1ZX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNsYXNzZXMsbj1lLmNsYXNzTmFtZSxyPWUuY29tcG9uZW50LGk9ZS5wYWRkaW5nLGw9KDAsYS5kZWZhdWx0KShlLFtcImNsYXNzZXNcIixcImNsYXNzTmFtZVwiLFwiY29tcG9uZW50XCIsXCJwYWRkaW5nXCJdKTtyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobS5kZWZhdWx0LlByb3ZpZGVyLHt2YWx1ZTp0aGlzLnVzZU1lbW8oe3BhZGRpbmc6aX0pfSxkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChyLCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTooMCxwLmRlZmF1bHQpKHQucm9vdCxuKX0sbCkpKX19XSksdH0oZC5kZWZhdWx0LkNvbXBvbmVudCk7aC5kZWZhdWx0UHJvcHM9e2NvbXBvbmVudDpcInRhYmxlXCIscGFkZGluZzpcImRlZmF1bHRcIn07dmFyIGI9KDAsZi5kZWZhdWx0KShnLHtuYW1lOlwiTXVpVGFibGVcIn0pKGgpO3QuZGVmYXVsdD1ifSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDApKSxsPShyKG4oMSkpLHIobig2KSkpLHM9KG4oNykscihuKDgpKSksdT1yKG4oNTUpKSxjPXtyb290OntkaXNwbGF5OlwidGFibGUtcm93LWdyb3VwXCJ9fTt0LnN0eWxlcz1jO3ZhciBkPXt2YXJpYW50OlwiYm9keVwifTtmdW5jdGlvbiBwKGUpe3ZhciB0PWUuY2xhc3NlcyxuPWUuY2xhc3NOYW1lLHI9ZS5jb21wb25lbnQscz0oMCxhLmRlZmF1bHQpKGUsW1wiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb21wb25lbnRcIl0pO3JldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh1LmRlZmF1bHQuUHJvdmlkZXIse3ZhbHVlOmR9LGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHIsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLGwuZGVmYXVsdCkodC5yb290LG4pfSxzKSkpfXAuZGVmYXVsdFByb3BzPXtjb21wb25lbnQ6XCJ0Ym9keVwifTt2YXIgZj0oMCxzLmRlZmF1bHQpKGMse25hbWU6XCJNdWlUYWJsZUJvZHlcIn0pKHApO3QuZGVmYXVsdD1mfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShuKDcpLHIobig4KSkpLGM9bigyMSksZD0ocihuKDQ3NSkpLG4oMzEpKSxwPXIobigxNTMpKSxmPXIobig1NSkpLG09ZnVuY3Rpb24oZSl7cmV0dXJue3Jvb3Q6e2Rpc3BsYXk6XCJ0YWJsZS1jZWxsXCIsdmVydGljYWxBbGlnbjpcImluaGVyaXRcIixib3JkZXJCb3R0b206XCIxcHggc29saWRcXG4gICAgXCIuY29uY2F0KFwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlPygwLGQubGlnaHRlbikoKDAsZC5mYWRlKShlLnBhbGV0dGUuZGl2aWRlciwxKSwuODgpOigwLGQuZGFya2VuKSgoMCxkLmZhZGUpKGUucGFsZXR0ZS5kaXZpZGVyLDEpLC42OCkpLHRleHRBbGlnbjpcImxlZnRcIixwYWRkaW5nOlwiNHB4IDU2cHggNHB4IDI0cHhcIixcIiY6bGFzdC1jaGlsZFwiOntwYWRkaW5nUmlnaHQ6MjR9fSxoZWFkOntjb2xvcjplLnBhbGV0dGUudGV4dC5zZWNvbmRhcnksZm9udFNpemU6ZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTIpLGZvbnRXZWlnaHQ6ZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRNZWRpdW19LGJvZHk6e2NvbG9yOmUucGFsZXR0ZS50ZXh0LnByaW1hcnksZm9udFNpemU6ZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTMpLGZvbnRXZWlnaHQ6ZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRSZWd1bGFyfSxmb290ZXI6e2JvcmRlckJvdHRvbTowLGNvbG9yOmUucGFsZXR0ZS50ZXh0LnNlY29uZGFyeSxmb250U2l6ZTplLnR5cG9ncmFwaHkucHhUb1JlbSgxMil9LG51bWVyaWM6e3RleHRBbGlnbjpcInJpZ2h0XCIsZmxleERpcmVjdGlvbjpcInJvdy1yZXZlcnNlXCJ9LHBhZGRpbmdEZW5zZTp7cGFkZGluZ1JpZ2h0OjI0fSxwYWRkaW5nQ2hlY2tib3g6e3BhZGRpbmc6XCIwIDEycHhcIixcIiY6bGFzdC1jaGlsZFwiOntwYWRkaW5nUmlnaHQ6MTJ9fSxwYWRkaW5nTm9uZTp7cGFkZGluZzowLFwiJjpsYXN0LWNoaWxkXCI6e3BhZGRpbmc6MH19LGFsaWduTGVmdDp7dGV4dEFsaWduOlwibGVmdFwifSxhbGlnbkNlbnRlcjp7dGV4dEFsaWduOlwiY2VudGVyXCJ9LGFsaWduUmlnaHQ6e3RleHRBbGlnbjpcInJpZ2h0XCIsZmxleERpcmVjdGlvbjpcInJvdy1yZXZlcnNlXCJ9LGFsaWduSnVzdGlmeTp7dGV4dEFsaWduOlwianVzdGlmeVwifX19O2Z1bmN0aW9uIGcoZSl7dmFyIHQ9ZS5hbGlnbixuPWUuY2hpbGRyZW4scj1lLmNsYXNzZXMsdT1lLmNsYXNzTmFtZSxkPWUuY29tcG9uZW50LG09ZS5zb3J0RGlyZWN0aW9uLGc9ZS5udW1lcmljLGg9dm9pZCAwIT09ZyYmZyxiPWUucGFkZGluZyx5PWUuc2NvcGUsdj1lLnZhcmlhbnQsUz0oMCxpLmRlZmF1bHQpKGUsW1wiYWxpZ25cIixcImNoaWxkcmVuXCIsXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbXBvbmVudFwiLFwic29ydERpcmVjdGlvblwiLFwibnVtZXJpY1wiLFwicGFkZGluZ1wiLFwic2NvcGVcIixcInZhcmlhbnRcIl0pO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChwLmRlZmF1bHQuQ29uc3VtZXIsbnVsbCxmdW5jdGlvbihlKXtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZi5kZWZhdWx0LkNvbnN1bWVyLG51bGwsZnVuY3Rpb24oaSl7dmFyIHAsZjtmPWR8fChpJiZcImhlYWRcIj09PWkudmFyaWFudD9cInRoXCI6XCJ0ZFwiKTt2YXIgZz15OyFnJiZpJiZcImhlYWRcIj09PWkudmFyaWFudCYmKGc9XCJjb2xcIik7dmFyIEU9Ynx8KGUmJmUucGFkZGluZz9lLnBhZGRpbmc6XCJkZWZhdWx0XCIpLHg9KDAscy5kZWZhdWx0KShyLnJvb3QsKHA9e30sKDAsYS5kZWZhdWx0KShwLHIuaGVhZCx2P1wiaGVhZFwiPT09djppJiZcImhlYWRcIj09PWkudmFyaWFudCksKDAsYS5kZWZhdWx0KShwLHIuYm9keSx2P1wiYm9keVwiPT09djppJiZcImJvZHlcIj09PWkudmFyaWFudCksKDAsYS5kZWZhdWx0KShwLHIuZm9vdGVyLHY/XCJmb290ZXJcIj09PXY6aSYmXCJmb290ZXJcIj09PWkudmFyaWFudCksKDAsYS5kZWZhdWx0KShwLHJbXCJhbGlnblwiLmNvbmNhdCgoMCxjLmNhcGl0YWxpemUpKHQpKV0sXCJpbmhlcml0XCIhPT10KSwoMCxhLmRlZmF1bHQpKHAsci5udW1lcmljLGgpLCgwLGEuZGVmYXVsdCkocCxyW1wicGFkZGluZ1wiLmNvbmNhdCgoMCxjLmNhcGl0YWxpemUpKEUpKV0sXCJkZWZhdWx0XCIhPT1FKSxwKSx1KSx3PW51bGw7cmV0dXJuIG0mJih3PVwiYXNjXCI9PT1tP1wiYXNjZW5kaW5nXCI6XCJkZXNjZW5kaW5nXCIpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGYsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOngsXCJhcmlhLXNvcnRcIjp3LHNjb3BlOmd9LFMpLG4pfSl9KX10LnN0eWxlcz1tLGcuZGVmYXVsdFByb3BzPXthbGlnbjpcImluaGVyaXRcIn07dmFyIGg9KDAsdS5kZWZhdWx0KShtLHtuYW1lOlwiTXVpVGFibGVDZWxsXCJ9KShnKTt0LmRlZmF1bHQ9aH0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oNSkpLGk9cihuKDApKSxsPShyKG4oMSkpLHIobig2KSkpLHM9KG4oNykscihuKDgpKSksdT1yKG4oNTUpKSxjPXtyb290OntkaXNwbGF5OlwidGFibGUtaGVhZGVyLWdyb3VwXCJ9fTt0LnN0eWxlcz1jO3ZhciBkPXt2YXJpYW50OlwiaGVhZFwifTtmdW5jdGlvbiBwKGUpe3ZhciB0PWUuY2xhc3NlcyxuPWUuY2xhc3NOYW1lLHI9ZS5jb21wb25lbnQscz0oMCxhLmRlZmF1bHQpKGUsW1wiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJjb21wb25lbnRcIl0pO3JldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh1LmRlZmF1bHQuUHJvdmlkZXIse3ZhbHVlOmR9LGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHIsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOigwLGwuZGVmYXVsdCkodC5yb290LG4pfSxzKSkpfXAuZGVmYXVsdFByb3BzPXtjb21wb25lbnQ6XCJ0aGVhZFwifTt2YXIgZj0oMCxzLmRlZmF1bHQpKGMse25hbWU6XCJNdWlUYWJsZUhlYWRcIn0pKHApO3QuZGVmYXVsdD1mfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dC5zdHlsZXM9dm9pZCAwO3ZhciBvPXIobig0KSksYT1yKG4oOSkpLGk9cihuKDUpKSxsPXIobigwKSkscz0ocihuKDEpKSxyKG4oNikpKSx1PShuKDcpLHIobig4KSkpLGM9cihuKDU1KSksZD1mdW5jdGlvbihlKXtyZXR1cm57cm9vdDp7Y29sb3I6XCJpbmhlcml0XCIsZGlzcGxheTpcInRhYmxlLXJvd1wiLGhlaWdodDo0OCx2ZXJ0aWNhbEFsaWduOlwibWlkZGxlXCIsb3V0bGluZTpcIm5vbmVcIixcIiYkc2VsZWN0ZWRcIjp7YmFja2dyb3VuZENvbG9yOlwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlP1wicmdiYSgwLCAwLCAwLCAwLjA0KVwiOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KVwifSxcIiYkaG92ZXI6aG92ZXJcIjp7YmFja2dyb3VuZENvbG9yOlwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlP1wicmdiYSgwLCAwLCAwLCAwLjA3KVwiOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KVwifX0sc2VsZWN0ZWQ6e30saG92ZXI6e30saGVhZDp7aGVpZ2h0OjU2fSxmb290ZXI6e2hlaWdodDo1Nn19fTtmdW5jdGlvbiBwKGUpe3ZhciB0PWUuY2xhc3NlcyxuPWUuY2xhc3NOYW1lLHI9ZS5jb21wb25lbnQsdT1lLmhvdmVyLGQ9ZS5zZWxlY3RlZCxwPSgwLGkuZGVmYXVsdCkoZSxbXCJjbGFzc2VzXCIsXCJjbGFzc05hbWVcIixcImNvbXBvbmVudFwiLFwiaG92ZXJcIixcInNlbGVjdGVkXCJdKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYy5kZWZhdWx0LkNvbnN1bWVyLG51bGwsZnVuY3Rpb24oZSl7dmFyIGksYz0oMCxzLmRlZmF1bHQpKHQucm9vdCwoaT17fSwoMCxhLmRlZmF1bHQpKGksdC5oZWFkLGUmJlwiaGVhZFwiPT09ZS52YXJpYW50KSwoMCxhLmRlZmF1bHQpKGksdC5mb290ZXIsZSYmXCJmb290ZXJcIj09PWUudmFyaWFudCksKDAsYS5kZWZhdWx0KShpLHQuaG92ZXIsdSksKDAsYS5kZWZhdWx0KShpLHQuc2VsZWN0ZWQsZCksaSksbik7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHIsKDAsby5kZWZhdWx0KSh7Y2xhc3NOYW1lOmN9LHApKX0pfXQuc3R5bGVzPWQscC5kZWZhdWx0UHJvcHM9e2NvbXBvbmVudDpcInRyXCIsaG92ZXI6ITEsc2VsZWN0ZWQ6ITF9O3ZhciBmPSgwLHUuZGVmYXVsdCkoZCx7bmFtZTpcIk11aVRhYmxlUm93XCJ9KShwKTt0LmRlZmF1bHQ9Zn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgbz1yKG4oNCkpLGE9cihuKDUpKSxpPXIobigxMikpLGw9cihuKDEzKSkscz1yKG4oMTQpKSx1PXIobigxNSkpLGM9cihuKDE2KSksZD1yKG4oMCkpLHA9cihuKDIyKSksZj0ocihuKDE3KSkscihuKDEpKSxyKG4oMzYpKSksbT1yKG4oOTIpKSxnPXIobig5MykpLGg9cihuKDc1KSksYj1yKG4oNzEpKSx5PXIobig3NCkpLHY9cihuKDg4KSksUz17c3RhbmRhcmQ6Zi5kZWZhdWx0LGZpbGxlZDptLmRlZmF1bHQsb3V0bGluZWQ6Zy5kZWZhdWx0fSxFPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIG47cmV0dXJuKDAsaS5kZWZhdWx0KSh0aGlzLHQpLChuPSgwLHMuZGVmYXVsdCkodGhpcywoMCx1LmRlZmF1bHQpKHQpLmNhbGwodGhpcyxlKSkpLmxhYmVsUmVmPWQuZGVmYXVsdC5jcmVhdGVSZWYoKSxufXJldHVybigwLGMuZGVmYXVsdCkodCxlKSwoMCxsLmRlZmF1bHQpKHQsW3trZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7XCJvdXRsaW5lZFwiPT09dGhpcy5wcm9wcy52YXJpYW50JiYodGhpcy5sYWJlbE5vZGU9cC5kZWZhdWx0LmZpbmRET01Ob2RlKHRoaXMubGFiZWxSZWYuY3VycmVudCksdGhpcy5mb3JjZVVwZGF0ZSgpKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmF1dG9Db21wbGV0ZSxuPWUuYXV0b0ZvY3VzLHI9ZS5jaGlsZHJlbixpPWUuY2xhc3NOYW1lLGw9ZS5kZWZhdWx0VmFsdWUscz1lLmVycm9yLHU9ZS5Gb3JtSGVscGVyVGV4dFByb3BzLGM9ZS5mdWxsV2lkdGgscD1lLmhlbHBlclRleHQsZj1lLmlkLG09ZS5JbnB1dExhYmVsUHJvcHMsZz1lLmlucHV0UHJvcHMsRT1lLklucHV0UHJvcHMseD1lLmlucHV0UmVmLHc9ZS5sYWJlbCxrPWUubXVsdGlsaW5lLF89ZS5uYW1lLFQ9ZS5vbkJsdXIsQT1lLm9uQ2hhbmdlLEM9ZS5vbkZvY3VzLE89ZS5wbGFjZWhvbGRlcixJPWUucmVxdWlyZWQsTj1lLnJvd3MsUj1lLnJvd3NNYXgsUD1lLnNlbGVjdCxNPWUuU2VsZWN0UHJvcHMsTD1lLnR5cGUsRD1lLnZhbHVlLEY9ZS52YXJpYW50LEI9KDAsYS5kZWZhdWx0KShlLFtcImF1dG9Db21wbGV0ZVwiLFwiYXV0b0ZvY3VzXCIsXCJjaGlsZHJlblwiLFwiY2xhc3NOYW1lXCIsXCJkZWZhdWx0VmFsdWVcIixcImVycm9yXCIsXCJGb3JtSGVscGVyVGV4dFByb3BzXCIsXCJmdWxsV2lkdGhcIixcImhlbHBlclRleHRcIixcImlkXCIsXCJJbnB1dExhYmVsUHJvcHNcIixcImlucHV0UHJvcHNcIixcIklucHV0UHJvcHNcIixcImlucHV0UmVmXCIsXCJsYWJlbFwiLFwibXVsdGlsaW5lXCIsXCJuYW1lXCIsXCJvbkJsdXJcIixcIm9uQ2hhbmdlXCIsXCJvbkZvY3VzXCIsXCJwbGFjZWhvbGRlclwiLFwicmVxdWlyZWRcIixcInJvd3NcIixcInJvd3NNYXhcIixcInNlbGVjdFwiLFwiU2VsZWN0UHJvcHNcIixcInR5cGVcIixcInZhbHVlXCIsXCJ2YXJpYW50XCJdKSxqPXt9O1wib3V0bGluZWRcIj09PUYmJihtJiZ2b2lkIDAhPT1tLnNocmluayYmKGoubm90Y2hlZD1tLnNocmluayksai5sYWJlbFdpZHRoPXRoaXMubGFiZWxOb2RlJiZ0aGlzLmxhYmVsTm9kZS5vZmZzZXRXaWR0aHx8MCk7dmFyIFU9cCYmZj9cIlwiLmNvbmNhdChmLFwiLWhlbHBlci10ZXh0XCIpOnZvaWQgMCx6PVNbRl0sSD1kLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh6LCgwLG8uZGVmYXVsdCkoe1wiYXJpYS1kZXNjcmliZWRieVwiOlUsYXV0b0NvbXBsZXRlOnQsYXV0b0ZvY3VzOm4sZGVmYXVsdFZhbHVlOmwsZnVsbFdpZHRoOmMsbXVsdGlsaW5lOmssbmFtZTpfLHJvd3M6Tixyb3dzTWF4OlIsdHlwZTpMLHZhbHVlOkQsaWQ6ZixpbnB1dFJlZjp4LG9uQmx1cjpULG9uQ2hhbmdlOkEsb25Gb2N1czpDLHBsYWNlaG9sZGVyOk8saW5wdXRQcm9wczpnfSxqLEUpKTtyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYi5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe2NsYXNzTmFtZTppLGVycm9yOnMsZnVsbFdpZHRoOmMscmVxdWlyZWQ6SSx2YXJpYW50OkZ9LEIpLHcmJmQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGguZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtodG1sRm9yOmYscmVmOnRoaXMubGFiZWxSZWZ9LG0pLHcpLFA/ZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodi5kZWZhdWx0LCgwLG8uZGVmYXVsdCkoe1wiYXJpYS1kZXNjcmliZWRieVwiOlUsdmFsdWU6RCxpbnB1dDpIfSxNKSxyKTpILHAmJmQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHkuZGVmYXVsdCwoMCxvLmRlZmF1bHQpKHtpZDpVfSx1KSxwKSl9fV0pLHR9KGQuZGVmYXVsdC5Db21wb25lbnQpO0UuZGVmYXVsdFByb3BzPXtyZXF1aXJlZDohMSxzZWxlY3Q6ITEsdmFyaWFudDpcInN0YW5kYXJkXCJ9O3ZhciB4PUU7dC5kZWZhdWx0PXh9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDkpKSxhPXIobig0KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9KG4oNykscihuKDM3KSkpLGM9cihuKDgpKSxkPWZ1bmN0aW9uKGUpe3ZhciB0PVwibGlnaHRcIj09PWUucGFsZXR0ZS50eXBlLG49dD9cInJnYmEoMCwgMCwgMCwgMC40MilcIjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KVwiLHI9dD9cInJnYmEoMCwgMCwgMCwgMC4wOSlcIjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOSlcIjtyZXR1cm57cm9vdDp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLGJhY2tncm91bmRDb2xvcjpyLGJvcmRlclRvcExlZnRSYWRpdXM6ZS5zaGFwZS5ib3JkZXJSYWRpdXMsYm9yZGVyVG9wUmlnaHRSYWRpdXM6ZS5zaGFwZS5ib3JkZXJSYWRpdXMsdHJhbnNpdGlvbjplLnRyYW5zaXRpb25zLmNyZWF0ZShcImJhY2tncm91bmQtY29sb3JcIix7ZHVyYXRpb246ZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVyLGVhc2luZzplLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlT3V0fSksXCImOmhvdmVyXCI6e2JhY2tncm91bmRDb2xvcjp0P1wicmdiYSgwLCAwLCAwLCAwLjEzKVwiOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKVwiLFwiQG1lZGlhIChob3Zlcjogbm9uZSlcIjp7YmFja2dyb3VuZENvbG9yOnJ9fSxcIiYkZm9jdXNlZFwiOntiYWNrZ3JvdW5kQ29sb3I6dD9cInJnYmEoMCwgMCwgMCwgMC4wOSlcIjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOSlcIn0sXCImJGRpc2FibGVkXCI6e2JhY2tncm91bmRDb2xvcjp0P1wicmdiYSgwLCAwLCAwLCAwLjEyKVwiOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKVwifX0sdW5kZXJsaW5lOntcIiY6YWZ0ZXJcIjp7Ym9yZGVyQm90dG9tOlwiMnB4IHNvbGlkIFwiLmNvbmNhdChlLnBhbGV0dGUucHJpbWFyeVt0P1wiZGFya1wiOlwibGlnaHRcIl0pLGxlZnQ6MCxib3R0b206MCxjb250ZW50OidcIlwiJyxwb3NpdGlvbjpcImFic29sdXRlXCIscmlnaHQ6MCx0cmFuc2Zvcm06XCJzY2FsZVgoMClcIix0cmFuc2l0aW9uOmUudHJhbnNpdGlvbnMuY3JlYXRlKFwidHJhbnNmb3JtXCIse2R1cmF0aW9uOmUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlcixlYXNpbmc6ZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZU91dH0pLHBvaW50ZXJFdmVudHM6XCJub25lXCJ9LFwiJiRmb2N1c2VkOmFmdGVyXCI6e3RyYW5zZm9ybTpcInNjYWxlWCgxKVwifSxcIiYkZXJyb3I6YWZ0ZXJcIjp7Ym9yZGVyQm90dG9tQ29sb3I6ZS5wYWxldHRlLmVycm9yLm1haW4sdHJhbnNmb3JtOlwic2NhbGVYKDEpXCJ9LFwiJjpiZWZvcmVcIjp7Ym9yZGVyQm90dG9tOlwiMXB4IHNvbGlkIFwiLmNvbmNhdChuKSxsZWZ0OjAsYm90dG9tOjAsY29udGVudDonXCJcXFxcMDBhMFwiJyxwb3NpdGlvbjpcImFic29sdXRlXCIscmlnaHQ6MCx0cmFuc2l0aW9uOmUudHJhbnNpdGlvbnMuY3JlYXRlKFwiYm9yZGVyLWJvdHRvbS1jb2xvclwiLHtkdXJhdGlvbjplLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXJ9KSxwb2ludGVyRXZlbnRzOlwibm9uZVwifSxcIiY6aG92ZXI6bm90KCRkaXNhYmxlZCk6bm90KCRmb2N1c2VkKTpub3QoJGVycm9yKTpiZWZvcmVcIjp7Ym9yZGVyQm90dG9tOlwiMXB4IHNvbGlkIFwiLmNvbmNhdChlLnBhbGV0dGUudGV4dC5wcmltYXJ5KX0sXCImJGRpc2FibGVkOmJlZm9yZVwiOntib3JkZXJCb3R0b206XCIxcHggZG90dGVkIFwiLmNvbmNhdChuKX19LGZvY3VzZWQ6e30sZGlzYWJsZWQ6e30sYWRvcm5lZFN0YXJ0OntwYWRkaW5nTGVmdDoxMn0sYWRvcm5lZEVuZDp7cGFkZGluZ1JpZ2h0OjEyfSxlcnJvcjp7fSxtdWx0aWxpbmU6e3BhZGRpbmc6XCIyN3B4IDEycHggMTBweFwiLGJveFNpemluZzpcImJvcmRlci1ib3hcIn0saW5wdXQ6e3BhZGRpbmc6XCIyN3B4IDEycHggMTBweFwifSxpbnB1dE1hcmdpbkRlbnNlOntwYWRkaW5nVG9wOjI0LHBhZGRpbmdCb3R0b206Nn0saW5wdXRNdWx0aWxpbmU6e3BhZGRpbmc6MH0saW5wdXRBZG9ybmVkU3RhcnQ6e3BhZGRpbmdMZWZ0OjB9LGlucHV0QWRvcm5lZEVuZDp7cGFkZGluZ1JpZ2h0OjB9fX07ZnVuY3Rpb24gcChlKXt2YXIgdD1lLmRpc2FibGVVbmRlcmxpbmUsbj1lLmNsYXNzZXMscj0oMCxpLmRlZmF1bHQpKGUsW1wiZGlzYWJsZVVuZGVybGluZVwiLFwiY2xhc3Nlc1wiXSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHUuZGVmYXVsdCwoMCxhLmRlZmF1bHQpKHtjbGFzc2VzOigwLGEuZGVmYXVsdCkoe30sbix7cm9vdDooMCxzLmRlZmF1bHQpKG4ucm9vdCwoMCxvLmRlZmF1bHQpKHt9LG4udW5kZXJsaW5lLCF0KSksdW5kZXJsaW5lOm51bGx9KX0scikpfXQuc3R5bGVzPWQsdS5kZWZhdWx0LmRlZmF1bHRQcm9wcz17ZnVsbFdpZHRoOiExLGlucHV0Q29tcG9uZW50OlwiaW5wdXRcIixtdWx0aWxpbmU6ITEsdHlwZTpcInRleHRcIn0scC5tdWlOYW1lPVwiSW5wdXRcIjt2YXIgZj0oMCxjLmRlZmF1bHQpKGQse25hbWU6XCJNdWlGaWxsZWRJbnB1dFwifSkocCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDQpKSxhPXIobig1KSksaT1yKG4oMCkpLGw9KHIobigxKSkscihuKDYpKSkscz0obig3KSxyKG4oMzcpKSksdT1yKG4oNDgxKSksYz1yKG4oOCkpLGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJsaWdodFwiPT09ZS5wYWxldHRlLnR5cGU/XCJyZ2JhKDAsIDAsIDAsIDAuMjMpXCI6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjMpXCI7cmV0dXJue3Jvb3Q6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIixcIiYgJG5vdGNoZWRPdXRsaW5lXCI6e2JvcmRlckNvbG9yOnR9LFwiJjpob3Zlcjpub3QoJGRpc2FibGVkKTpub3QoJGZvY3VzZWQpOm5vdCgkZXJyb3IpICRub3RjaGVkT3V0bGluZVwiOntib3JkZXJDb2xvcjplLnBhbGV0dGUudGV4dC5wcmltYXJ5LFwiQG1lZGlhIChob3Zlcjogbm9uZSlcIjp7Ym9yZGVyQ29sb3I6dH19LFwiJiRmb2N1c2VkICRub3RjaGVkT3V0bGluZVwiOntib3JkZXJDb2xvcjplLnBhbGV0dGUucHJpbWFyeS5tYWluLGJvcmRlcldpZHRoOjJ9LFwiJiRlcnJvciAkbm90Y2hlZE91dGxpbmVcIjp7Ym9yZGVyQ29sb3I6ZS5wYWxldHRlLmVycm9yLm1haW59LFwiJiRkaXNhYmxlZCAkbm90Y2hlZE91dGxpbmVcIjp7Ym9yZGVyQ29sb3I6ZS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZH19LGZvY3VzZWQ6e30sZGlzYWJsZWQ6e30sYWRvcm5lZFN0YXJ0OntwYWRkaW5nTGVmdDoxNH0sYWRvcm5lZEVuZDp7cGFkZGluZ1JpZ2h0OjE0fSxlcnJvcjp7fSxtdWx0aWxpbmU6e3BhZGRpbmc6XCIxOC41cHggMTRweFwiLGJveFNpemluZzpcImJvcmRlci1ib3hcIn0sbm90Y2hlZE91dGxpbmU6e30saW5wdXQ6e3BhZGRpbmc6XCIxOC41cHggMTRweFwifSxpbnB1dE1hcmdpbkRlbnNlOntwYWRkaW5nVG9wOjE1LHBhZGRpbmdCb3R0b206MTV9LGlucHV0TXVsdGlsaW5lOntwYWRkaW5nOjB9LGlucHV0QWRvcm5lZFN0YXJ0OntwYWRkaW5nTGVmdDowfSxpbnB1dEFkb3JuZWRFbmQ6e3BhZGRpbmdSaWdodDowfX19O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5sYWJlbFdpZHRoLHI9ZS5ub3RjaGVkLGM9KDAsYS5kZWZhdWx0KShlLFtcImNsYXNzZXNcIixcImxhYmVsV2lkdGhcIixcIm5vdGNoZWRcIl0pO3JldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChzLmRlZmF1bHQsKDAsby5kZWZhdWx0KSh7cmVuZGVyUHJlZml4OmZ1bmN0aW9uKGUpe3JldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh1LmRlZmF1bHQse2NsYXNzTmFtZTp0Lm5vdGNoZWRPdXRsaW5lLGxhYmVsV2lkdGg6bixub3RjaGVkOnZvaWQgMCE9PXI/cjpCb29sZWFuKGUuc3RhcnRBZG9ybm1lbnR8fGUuZmlsbGVkfHxlLmZvY3VzZWQpfSl9LGNsYXNzZXM6KDAsby5kZWZhdWx0KSh7fSx0LHtyb290OigwLGwuZGVmYXVsdCkodC5yb290LHQudW5kZXJsaW5lKSxub3RjaGVkT3V0bGluZTpudWxsfSl9LGMpKX10LnN0eWxlcz1kLHMuZGVmYXVsdC5kZWZhdWx0UHJvcHM9e2Z1bGxXaWR0aDohMSxpbnB1dENvbXBvbmVudDpcImlucHV0XCIsbXVsdGlsaW5lOiExLHR5cGU6XCJ0ZXh0XCJ9LHAubXVpTmFtZT1cIklucHV0XCI7dmFyIGY9KDAsYy5kZWZhdWx0KShkLHtuYW1lOlwiTXVpT3V0bGluZWRJbnB1dFwifSkocCk7dC5kZWZhdWx0PWZ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10LnN0eWxlcz12b2lkIDA7dmFyIG89cihuKDkpKSxhPXIobig0KSksaT1yKG4oNSkpLGw9cihuKDApKSxzPShyKG4oMSkpLHIobig2KSkpLHU9bigxOSksYz1uKDIxKSxkPWZ1bmN0aW9uKGUpe3ZhciB0PVwicnRsXCI9PT1lLmRpcmVjdGlvbj9cInJpZ2h0XCI6XCJsZWZ0XCI7cmV0dXJue3Jvb3Q6e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixib3R0b206MCxyaWdodDowLHRvcDotNSxsZWZ0OjAsbWFyZ2luOjAscGFkZGluZzowLHBvaW50ZXJFdmVudHM6XCJub25lXCIsYm9yZGVyUmFkaXVzOmUuc2hhcGUuYm9yZGVyUmFkaXVzLGJvcmRlclN0eWxlOlwic29saWRcIixib3JkZXJXaWR0aDoxLHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoW1wicGFkZGluZy1cIi5jb25jYXQodCksXCJib3JkZXItY29sb3JcIixcImJvcmRlci13aWR0aFwiXSx7ZHVyYXRpb246ZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVyLGVhc2luZzplLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlT3V0fSl9LGxlZ2VuZDp7dGV4dEFsaWduOlwibGVmdFwiLHBhZGRpbmc6MCxsaW5lSGVpZ2h0OlwiMTFweFwiLHRyYW5zaXRpb246ZS50cmFuc2l0aW9ucy5jcmVhdGUoXCJ3aWR0aFwiLHtkdXJhdGlvbjplLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXIsZWFzaW5nOmUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VPdXR9KX19fTt0LnN0eWxlcz1kO3ZhciBwPSgwLHUud2l0aFN0eWxlcykoZCx7bmFtZTpcIk11aVByaXZhdGVOb3RjaGVkT3V0bGluZVwiLHdpdGhUaGVtZTohMH0pKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW47dmFyIHQ9ZS5jbGFzc2VzLG49ZS5jbGFzc05hbWUscj1lLmxhYmVsV2lkdGgsdT1lLm5vdGNoZWQsZD1lLnN0eWxlLHA9ZS50aGVtZSxmPSgwLGkuZGVmYXVsdCkoZSxbXCJjaGlsZHJlblwiLFwiY2xhc3Nlc1wiLFwiY2xhc3NOYW1lXCIsXCJsYWJlbFdpZHRoXCIsXCJub3RjaGVkXCIsXCJzdHlsZVwiLFwidGhlbWVcIl0pLG09XCJydGxcIj09PXAuZGlyZWN0aW9uP1wicmlnaHRcIjpcImxlZnRcIixnPXI+MD8uNzUqcis4OjA7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZmllbGRzZXRcIiwoMCxhLmRlZmF1bHQpKHtcImFyaWEtaGlkZGVuXCI6ITAsc3R5bGU6KDAsYS5kZWZhdWx0KSgoMCxvLmRlZmF1bHQpKHt9LFwicGFkZGluZ1wiLmNvbmNhdCgoMCxjLmNhcGl0YWxpemUpKG0pKSw4Kyh1PzA6Zy8yKSksZCksY2xhc3NOYW1lOigwLHMuZGVmYXVsdCkodC5yb290LG4pfSxmKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImxlZ2VuZFwiLHtjbGFzc05hbWU6dC5sZWdlbmQsc3R5bGU6e3dpZHRoOnU/ZzouMDF9fSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpcIiYjODIwMztcIn19KSkpfSk7dC5kZWZhdWx0PXB9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDQ4Myksbz1uKDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD10Lk11aVRoZW1lUHJvdmlkZXJPbGQ9dm9pZCAwO3ZhciBhPW8obig0KSksaT1vKG4oOSkpLGw9byhuKDEyKSkscz1vKG4oMTMpKSx1PW8obigxNCkpLGM9byhuKDE1KSksZD1vKG4oMTYpKSxwPW8obigwKSksZj1vKG4oMSkpLG09KG8obigxNykpLG8obig0ODQpKSksZz1uKDcpLGg9cihuKDY5KSksYj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsbil7dmFyIHI7cmV0dXJuKDAsbC5kZWZhdWx0KSh0aGlzLHQpLChyPSgwLHUuZGVmYXVsdCkodGhpcywoMCxjLmRlZmF1bHQpKHQpLmNhbGwodGhpcykpKS5icm9hZGNhc3Q9KDAsbS5kZWZhdWx0KSgpLHIub3V0ZXJUaGVtZT1oLmRlZmF1bHQuaW5pdGlhbChuKSxyLmJyb2FkY2FzdC5zZXRTdGF0ZShyLm1lcmdlT3V0ZXJMb2NhbFRoZW1lKGUudGhlbWUpKSxyfXJldHVybigwLGQuZGVmYXVsdCkodCxlKSwoMCxzLmRlZmF1bHQpKHQsW3trZXk6XCJnZXRDaGlsZENvbnRleHRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5wcm9wcyxuPXQuZGlzYWJsZVN0eWxlc0dlbmVyYXRpb24scj10LnNoZWV0c0NhY2hlLG89dC5zaGVldHNNYW5hZ2VyLGE9dGhpcy5jb250ZXh0Lm11aVRoZW1lUHJvdmlkZXJPcHRpb25zfHx7fTtyZXR1cm4gdm9pZCAwIT09biYmKGEuZGlzYWJsZVN0eWxlc0dlbmVyYXRpb249biksdm9pZCAwIT09ciYmKGEuc2hlZXRzQ2FjaGU9ciksdm9pZCAwIT09byYmKGEuc2hlZXRzTWFuYWdlcj1vKSxlPXt9LCgwLGkuZGVmYXVsdCkoZSxoLkNIQU5ORUwsdGhpcy5icm9hZGNhc3QpLCgwLGkuZGVmYXVsdCkoZSxcIm11aVRoZW1lUHJvdmlkZXJPcHRpb25zXCIsYSksZX19LHtrZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnVuc3Vic2NyaWJlSWQ9aC5kZWZhdWx0LnN1YnNjcmliZSh0aGlzLmNvbnRleHQsZnVuY3Rpb24odCl7ZS5vdXRlclRoZW1lPXQsZS5icm9hZGNhc3Quc2V0U3RhdGUoZS5tZXJnZU91dGVyTG9jYWxUaGVtZShlLnByb3BzLnRoZW1lKSl9KX19LHtrZXk6XCJjb21wb25lbnREaWRVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnByb3BzLnRoZW1lIT09ZS50aGVtZSYmdGhpcy5icm9hZGNhc3Quc2V0U3RhdGUodGhpcy5tZXJnZU91dGVyTG9jYWxUaGVtZSh0aGlzLnByb3BzLnRoZW1lKSl9fSx7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe251bGwhPT10aGlzLnVuc3Vic2NyaWJlSWQmJmguZGVmYXVsdC51bnN1YnNjcmliZSh0aGlzLmNvbnRleHQsdGhpcy51bnN1YnNjcmliZUlkKX19LHtrZXk6XCJtZXJnZU91dGVyTG9jYWxUaGVtZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZSh0aGlzLm91dGVyVGhlbWUpOnRoaXMub3V0ZXJUaGVtZT8oMCxhLmRlZmF1bHQpKHt9LHRoaXMub3V0ZXJUaGVtZSxlKTplfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW59fV0pLHR9KHAuZGVmYXVsdC5Db21wb25lbnQpO3QuTXVpVGhlbWVQcm92aWRlck9sZD1iLGIuY2hpbGRDb250ZXh0VHlwZXM9KDAsYS5kZWZhdWx0KSh7fSxoLmRlZmF1bHQuY29udGV4dFR5cGVzLHttdWlUaGVtZVByb3ZpZGVyT3B0aW9uczpmLmRlZmF1bHQub2JqZWN0fSksYi5jb250ZXh0VHlwZXM9KDAsYS5kZWZhdWx0KSh7fSxoLmRlZmF1bHQuY29udGV4dFR5cGVzLHttdWlUaGVtZVByb3ZpZGVyT3B0aW9uczpmLmRlZmF1bHQub2JqZWN0fSksZy5wb255ZmlsbEdsb2JhbC5fX01VSV9TVFlMRVNfX3x8KGcucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX189e30pLGcucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX18uTXVpVGhlbWVQcm92aWRlcnx8KGcucG9ueWZpbGxHbG9iYWwuX19NVUlfU1RZTEVTX18uTXVpVGhlbWVQcm92aWRlcj1iKTt2YXIgeT1nLnBvbnlmaWxsR2xvYmFsLl9fTVVJX1NUWUxFU19fLk11aVRoZW1lUHJvdmlkZXI7dC5kZWZhdWx0PXl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pKXt2YXIgcj1PYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pOnt9O3IuZ2V0fHxyLnNldD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHIpOnRbbl09ZVtuXX1yZXR1cm4gdC5kZWZhdWx0PWUsdH19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PXt9LG49MSxyPWU7cmV0dXJue2dldFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHNldFN0YXRlOmZ1bmN0aW9uKGUpe3I9ZTtmb3IodmFyIG49T2JqZWN0LmtleXModCksbz0wLGE9bi5sZW5ndGg7bzxhO28rKyl0W25bb11dJiZ0W25bb11dKGUpfSxzdWJzY3JpYmU6ZnVuY3Rpb24oZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoXCJsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24uXCIpO3ZhciByPW47cmV0dXJuIHRbcl09ZSxuKz0xLHJ9LHVuc3Vic2NyaWJlOmZ1bmN0aW9uKGUpe3RbZV09dm9pZCAwfX19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbih0KXt2YXIgcj1mdW5jdGlvbigpe3ZhciBlPVwiUHJpc21cImluIHQsbj1lP3QuUHJpc206dm9pZCAwO3JldHVybiBmdW5jdGlvbigpe2U/dC5QcmlzbT1uOmRlbGV0ZSB0LlByaXNtO2U9dm9pZCAwLG49dm9pZCAwfX0oKTsoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdz9cInVuZGVmaW5lZFwiPT10eXBlb2Ygc2VsZj97fTpzZWxmOndpbmRvdykuUHJpc209e21hbnVhbDohMCxkaXNhYmxlV29ya2VyTWVzc2FnZUhhbmRsZXI6ITB9O3ZhciBvPW4oNDg3KSxhPW4oNDIpLGk9big1MDIpLGw9big1MDMpLHM9big1MDQpLHU9big1MDUpLGM9big1MDYpO3IoKTt2YXIgZD17fS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBwKCl7fXAucHJvdG90eXBlPWk7dmFyIGY9bmV3IHA7ZnVuY3Rpb24gbShlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlfHwhZS5kaXNwbGF5TmFtZSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBgZnVuY3Rpb25gIGZvciBgZ3JhbW1hcmAsIGdvdCBgXCIrZStcImBcIik7dm9pZCAwPT09Zi5sYW5ndWFnZXNbZS5kaXNwbGF5TmFtZV0mJmUoZil9ZS5leHBvcnRzPWYsZi5oaWdobGlnaHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWkuaGlnaGxpZ2h0O2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGBzdHJpbmdgIGZvciBgdmFsdWVgLCBnb3QgYFwiK2UrXCJgXCIpO2lmKFwiT2JqZWN0XCI9PT1mLnV0aWwudHlwZSh0KSluPXQsdD1udWxsO2Vsc2V7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYHN0cmluZ2AgZm9yIGBuYW1lYCwgZ290IGBcIit0K1wiYFwiKTtpZighZC5jYWxsKGYubGFuZ3VhZ2VzLHQpKXRocm93IG5ldyBFcnJvcihcIlVua25vd24gbGFuZ3VhZ2U6IGBcIit0K1wiYCBpcyBub3QgcmVnaXN0ZXJlZFwiKTtuPWYubGFuZ3VhZ2VzW3RdfXJldHVybiByLmNhbGwodGhpcyxlLG4sdCl9LGYucmVnaXN0ZXI9bSxmLnJlZ2lzdGVyZWQ9ZnVuY3Rpb24oZSl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYHN0cmluZ2AgZm9yIGBsYW5ndWFnZWAsIGdvdCBgXCIrZStcImBcIik7cmV0dXJuIGQuY2FsbChmLmxhbmd1YWdlcyxlKX0sbShsKSxtKHMpLG0odSksbShjKSxmLnV0aWwuZW5jb2RlPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxmLlRva2VuLnN0cmluZ2lmeT1mdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJue3R5cGU6XCJ0ZXh0XCIsdmFsdWU6ZX07aWYoXCJBcnJheVwiPT09Zi51dGlsLnR5cGUoZSkpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxvPWUubGVuZ3RoLGE9LTE7Zm9yKDsrK2E8bzspXCJcIiE9PShuPWVbYV0pJiZudWxsIT1uJiZyLnB1c2gobik7YT0tMSxvPXIubGVuZ3RoO2Zvcig7KythPG87KW49clthXSxyW2FdPWYuVG9rZW4uc3RyaW5naWZ5KG4sdCxyKTtyZXR1cm4gcn0oZSx0KTtyPXt0eXBlOmUudHlwZSxjb250ZW50OmYuVG9rZW4uc3RyaW5naWZ5KGUuY29udGVudCx0LG4pLHRhZzpcInNwYW5cIixjbGFzc2VzOltcInRva2VuXCIsZS50eXBlXSxhdHRyaWJ1dGVzOnt9LGxhbmd1YWdlOnQscGFyZW50Om59LGUuYWxpYXMmJihyLmNsYXNzZXM9ci5jbGFzc2VzLmNvbmNhdChlLmFsaWFzKSk7cmV0dXJuIGYuaG9va3MucnVuKFwid3JhcFwiLHIpLG8oci50YWcrXCIuXCIrci5jbGFzc2VzLmpvaW4oXCIuXCIpLGZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUpZVt0XT1hKGVbdF0pO3JldHVybiBlfShyLmF0dHJpYnV0ZXMpLHIuY29udGVudCl9fSkuY2FsbCh0aGlzLG4oMjcpKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uKDQ4OCl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDQ4OSksbz1uKDQ5NykocixcImRpdlwiKTtvLmRpc3BsYXlOYW1lPVwiaHRtbFwiLGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big0OTApLG89big0OTEpLGE9big0OTIpLGk9big0OTMpLGw9big0OTUpLHM9big0OTYpO2UuZXhwb3J0cz1yKFthLG8saSxsLHNdKX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMjMpLG89bigxNTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxuLGE9ZS5sZW5ndGgsaT1bXSxsPVtdLHM9LTE7Zm9yKDsrK3M8YTspdD1lW3NdLGkucHVzaCh0LnByb3BlcnR5KSxsLnB1c2godC5ub3JtYWwpLG49dC5zcGFjZTtyZXR1cm4gbmV3IG8oci5hcHBseShudWxsLGkpLHIuYXBwbHkobnVsbCxsKSxuKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDM4KTtlLmV4cG9ydHM9cih7c3BhY2U6XCJ4bGlua1wiLHRyYW5zZm9ybTpmdW5jdGlvbihlLHQpe3JldHVyblwieGxpbms6XCIrdC5zbGljZSg1KS50b0xvd2VyQ2FzZSgpfSxwcm9wZXJ0aWVzOnt4TGlua0FjdHVhdGU6bnVsbCx4TGlua0FyY1JvbGU6bnVsbCx4TGlua0hyZWY6bnVsbCx4TGlua1JvbGU6bnVsbCx4TGlua1Nob3c6bnVsbCx4TGlua1RpdGxlOm51bGwseExpbmtUeXBlOm51bGx9fSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDM4KTtlLmV4cG9ydHM9cih7c3BhY2U6XCJ4bWxcIix0cmFuc2Zvcm06ZnVuY3Rpb24oZSx0KXtyZXR1cm5cInhtbDpcIit0LnNsaWNlKDMpLnRvTG93ZXJDYXNlKCl9LHByb3BlcnRpZXM6e3htbExhbmc6bnVsbCx4bWxCYXNlOm51bGwseG1sU3BhY2U6bnVsbH19KX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMzgpLG89bigxNjIpO2UuZXhwb3J0cz1yKHtzcGFjZTpcInhtbG5zXCIsYXR0cmlidXRlczp7eG1sbnN4bGluazpcInhtbG5zOnhsaW5rXCJ9LHRyYW5zZm9ybTpvLHByb3BlcnRpZXM6e3htbG5zOm51bGwseG1sbnNYTGluazpudWxsfX0pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQgaW4gZT9lW3RdOnR9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big5NSksbz1uKDM4KSxhPXIuYm9vbGVhbmlzaCxpPXIubnVtYmVyLGw9ci5zcGFjZVNlcGFyYXRlZDtlLmV4cG9ydHM9byh7dHJhbnNmb3JtOmZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJyb2xlXCI9PT10P3Q6XCJhcmlhLVwiK3Quc2xpY2UoNCkudG9Mb3dlckNhc2UoKX0scHJvcGVydGllczp7YXJpYUFjdGl2ZURlc2NlbmRhbnQ6bnVsbCxhcmlhQXRvbWljOmEsYXJpYUF1dG9Db21wbGV0ZTpudWxsLGFyaWFCdXN5OmEsYXJpYUNoZWNrZWQ6YSxhcmlhQ29sQ291bnQ6aSxhcmlhQ29sSW5kZXg6aSxhcmlhQ29sU3BhbjppLGFyaWFDb250cm9sczpsLGFyaWFDdXJyZW50Om51bGwsYXJpYURlc2NyaWJlZEJ5OmwsYXJpYURldGFpbHM6bnVsbCxhcmlhRGlzYWJsZWQ6YSxhcmlhRHJvcEVmZmVjdDpsLGFyaWFFcnJvck1lc3NhZ2U6bnVsbCxhcmlhRXhwYW5kZWQ6YSxhcmlhRmxvd1RvOmwsYXJpYUdyYWJiZWQ6YSxhcmlhSGFzUG9wdXA6bnVsbCxhcmlhSGlkZGVuOmEsYXJpYUludmFsaWQ6bnVsbCxhcmlhS2V5U2hvcnRjdXRzOm51bGwsYXJpYUxhYmVsOm51bGwsYXJpYUxhYmVsbGVkQnk6bCxhcmlhTGV2ZWw6aSxhcmlhTGl2ZTpudWxsLGFyaWFNb2RhbDphLGFyaWFNdWx0aUxpbmU6YSxhcmlhTXVsdGlTZWxlY3RhYmxlOmEsYXJpYU9yaWVudGF0aW9uOm51bGwsYXJpYU93bnM6bCxhcmlhUGxhY2Vob2xkZXI6bnVsbCxhcmlhUG9zSW5TZXQ6aSxhcmlhUHJlc3NlZDphLGFyaWFSZWFkT25seTphLGFyaWFSZWxldmFudDpudWxsLGFyaWFSZXF1aXJlZDphLGFyaWFSb2xlRGVzY3JpcHRpb246bCxhcmlhUm93Q291bnQ6aSxhcmlhUm93SW5kZXg6aSxhcmlhUm93U3BhbjppLGFyaWFTZWxlY3RlZDphLGFyaWFTZXRTaXplOmksYXJpYVNvcnQ6bnVsbCxhcmlhVmFsdWVNYXg6aSxhcmlhVmFsdWVNaW46aSxhcmlhVmFsdWVOb3c6aSxhcmlhVmFsdWVUZXh0Om51bGwscm9sZTpudWxsfX0pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big5NSksbz1uKDM4KSxhPW4oMTYyKSxpPXIuYm9vbGVhbixsPXIub3ZlcmxvYWRlZEJvb2xlYW4scz1yLmJvb2xlYW5pc2gsdT1yLm51bWJlcixjPXIuc3BhY2VTZXBhcmF0ZWQsZD1yLmNvbW1hU2VwYXJhdGVkO2UuZXhwb3J0cz1vKHtzcGFjZTpcImh0bWxcIixhdHRyaWJ1dGVzOnthY2NlcHRjaGFyc2V0OlwiYWNjZXB0LWNoYXJzZXRcIixjbGFzc25hbWU6XCJjbGFzc1wiLGh0bWxmb3I6XCJmb3JcIixodHRwZXF1aXY6XCJodHRwLWVxdWl2XCJ9LHRyYW5zZm9ybTphLG11c3RVc2VQcm9wZXJ0eTpbXCJjaGVja2VkXCIsXCJtdWx0aXBsZVwiLFwibXV0ZWRcIixcInNlbGVjdGVkXCJdLHByb3BlcnRpZXM6e2FiYnI6bnVsbCxhY2NlcHQ6ZCxhY2NlcHRDaGFyc2V0OmMsYWNjZXNzS2V5OmMsYWN0aW9uOm51bGwsYWxsb3dGdWxsU2NyZWVuOmksYWxsb3dQYXltZW50UmVxdWVzdDppLGFsbG93VXNlck1lZGlhOmksYWx0Om51bGwsYXM6bnVsbCxhc3luYzppLGF1dG9DYXBpdGFsaXplOm51bGwsYXV0b0NvbXBsZXRlOmMsYXV0b0ZvY3VzOmksYXV0b1BsYXk6aSxjYXB0dXJlOmksY2hhclNldDpudWxsLGNoZWNrZWQ6aSxjaXRlOm51bGwsY2xhc3NOYW1lOmMsY29sczp1LGNvbFNwYW46bnVsbCxjb250ZW50Om51bGwsY29udGVudEVkaXRhYmxlOnMsY29udHJvbHM6aSxjb250cm9sc0xpc3Q6Yyxjb29yZHM6dXxkLGNyb3NzT3JpZ2luOm51bGwsZGF0YTpudWxsLGRhdGVUaW1lOm51bGwsZGVjb2Rpbmc6bnVsbCxkZWZhdWx0OmksZGVmZXI6aSxkaXI6bnVsbCxkaXJOYW1lOm51bGwsZGlzYWJsZWQ6aSxkb3dubG9hZDpsLGRyYWdnYWJsZTpzLGVuY1R5cGU6bnVsbCxmb3JtOm51bGwsZm9ybUFjdGlvbjpudWxsLGZvcm1FbmNUeXBlOm51bGwsZm9ybU1ldGhvZDpudWxsLGZvcm1Ob1ZhbGlkYXRlOmksZm9ybVRhcmdldDpudWxsLGhlYWRlcnM6YyxoZWlnaHQ6dSxoaWRkZW46aSxoaWdoOnUsaHJlZjpudWxsLGhyZWZMYW5nOm51bGwsaHRtbEZvcjpjLGh0dHBFcXVpdjpjLGlkOm51bGwsaW5wdXRNb2RlOm51bGwsaW50ZWdyaXR5Om51bGwsaXM6bnVsbCxpc01hcDppLGl0ZW1JZDpudWxsLGl0ZW1Qcm9wOmMsaXRlbVJlZjpjLGl0ZW1TY29wZTppLGl0ZW1UeXBlOmMsa2luZDpudWxsLGxhYmVsOm51bGwsbGFuZzpudWxsLGxhbmd1YWdlOm51bGwsbGlzdDpudWxsLGxvb3A6aSxsb3c6dSxtYW5pZmVzdDpudWxsLG1heDpudWxsLG1heExlbmd0aDp1LG1lZGlhOm51bGwsbWV0aG9kOm51bGwsbWluOm51bGwsbWluTGVuZ3RoOnUsbXVsdGlwbGU6aSxtdXRlZDppLG5hbWU6bnVsbCxub25jZTpudWxsLG5vTW9kdWxlOmksbm9WYWxpZGF0ZTppLG9wZW46aSxvcHRpbXVtOnUscGF0dGVybjpudWxsLHBpbmc6YyxwbGFjZWhvbGRlcjpudWxsLHBsYXlzSW5saW5lOmkscG9zdGVyOm51bGwscHJlbG9hZDpudWxsLHJlYWRPbmx5OmkscmVmZXJyZXJQb2xpY3k6bnVsbCxyZWw6YyxyZXF1aXJlZDppLHJldmVyc2VkOmkscm93czp1LHJvd1NwYW46dSxzYW5kYm94OmMsc2NvcGU6bnVsbCxzY29wZWQ6aSxzZWFtbGVzczppLHNlbGVjdGVkOmksc2hhcGU6bnVsbCxzaXplOnUsc2l6ZXM6bnVsbCxzbG90Om51bGwsc3Bhbjp1LHNwZWxsQ2hlY2s6cyxzcmM6bnVsbCxzcmNEb2M6bnVsbCxzcmNMYW5nOm51bGwsc3JjU2V0OmQsc3RhcnQ6dSxzdGVwOm51bGwsc3R5bGU6bnVsbCx0YWJJbmRleDp1LHRhcmdldDpudWxsLHRpdGxlOm51bGwsdHJhbnNsYXRlOm51bGwsdHlwZTpudWxsLHR5cGVNdXN0TWF0Y2g6aSx1c2VNYXA6bnVsbCx2YWx1ZTpzLHdpZHRoOnUsd3JhcDpudWxsLGFsaWduOm51bGwsYUxpbms6bnVsbCxhcmNoaXZlOmMsYXhpczpudWxsLGJhY2tncm91bmQ6bnVsbCxiZ0NvbG9yOm51bGwsYm9yZGVyOnUsYm9yZGVyQ29sb3I6bnVsbCxib3R0b21NYXJnaW46dSxjZWxsUGFkZGluZzpudWxsLGNlbGxTcGFjaW5nOm51bGwsY2hhcjpudWxsLGNoYXJPZmY6bnVsbCxjbGFzc0lkOm51bGwsY2xlYXI6bnVsbCxjb2RlOm51bGwsY29kZUJhc2U6bnVsbCxjb2RlVHlwZTpudWxsLGNvbG9yOm51bGwsY29tcGFjdDppLGRlY2xhcmU6aSxldmVudDpudWxsLGZhY2U6bnVsbCxmcmFtZTpudWxsLGZyYW1lQm9yZGVyOm51bGwsaFNwYWNlOnUsbGVmdE1hcmdpbjp1LGxpbms6bnVsbCxsb25nRGVzYzpudWxsLGxvd1NyYzpudWxsLG1hcmdpbkhlaWdodDp1LG1hcmdpbldpZHRoOnUsbm9SZXNpemU6aSxub0hyZWY6aSxub1NoYWRlOmksbm9XcmFwOmksb2JqZWN0Om51bGwscHJvZmlsZTpudWxsLHByb21wdDpudWxsLHJldjpudWxsLHJpZ2h0TWFyZ2luOnUscnVsZXM6bnVsbCxzY2hlbWU6bnVsbCxzY3JvbGxpbmc6cyxzdGFuZGJ5Om51bGwsc3VtbWFyeTpudWxsLHRleHQ6bnVsbCx0b3BNYXJnaW46dSx2YWx1ZVR5cGU6bnVsbCx2ZXJzaW9uOm51bGwsdkFsaWduOm51bGwsdkxpbms6bnVsbCx2U3BhY2U6dSxhbGxvd1RyYW5zcGFyZW5jeTpudWxsLGF1dG9Db3JyZWN0Om51bGwsYXV0b1NhdmU6bnVsbCxwcmVmaXg6bnVsbCxwcm9wZXJ0eTpudWxsLHJlc3VsdHM6dSxzZWN1cml0eTpudWxsLHVuc2VsZWN0YWJsZTpudWxsfX0pfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big0OTgpLG89big5NCksYT1uKDQ5OSksaT1uKDUwMCkucGFyc2UsbD1uKDUwMSkucGFyc2U7ZnVuY3Rpb24gcyhlLHQsbil7dmFyIHI9bjtyZXR1cm4gZS5udW1iZXJ8fGUucG9zaXRpdmVOdW1iZXI/aXNOYU4ocil8fFwiXCI9PT1yfHwocj1OdW1iZXIocikpOihlLmJvb2xlYW58fGUub3ZlcmxvYWRlZEJvb2xlYW4pJiYoXCJzdHJpbmdcIiE9dHlwZW9mIHJ8fFwiXCIhPT1yJiZvKG4pIT09byh0KXx8KHI9ITApKSxyfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlLHIpe3ZhciBvLGk9YShlLHQpLGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3ImJmZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibGVuZ3RoXCJpbiBlfHxmdW5jdGlvbihlLHQpe3ZhciBuPXQudHlwZTtpZihcImlucHV0XCI9PT1lfHwhbnx8XCJzdHJpbmdcIiE9dHlwZW9mIG4pcmV0dXJuITE7aWYoXCJvYmplY3RcIj09dHlwZW9mIHQuY2hpbGRyZW4mJlwibGVuZ3RoXCJpbiB0LmNoaWxkcmVuKXJldHVybiEwO2lmKG49bi50b0xvd2VyQ2FzZSgpLFwiYnV0dG9uXCI9PT1lKXJldHVyblwibWVudVwiIT09biYmXCJzdWJtaXRcIiE9PW4mJlwicmVzZXRcIiE9PW4mJlwiYnV0dG9uXCIhPT1uO3JldHVyblwidmFsdWVcImluIHR9KHQudGFnTmFtZSxlKX0ocixpKSYmKGwudW5zaGlmdChyKSxyPW51bGwpO2lmKHIpZm9yKG8gaW4gciluKGkucHJvcGVydGllcyxvLHJbb10pOyhmdW5jdGlvbiBlKHQsbil7dmFyIHIsbztpZihcInN0cmluZ1wiIT10eXBlb2YgbiYmXCJudW1iZXJcIiE9dHlwZW9mIG4paWYoXCJvYmplY3RcIj09dHlwZW9mIG4mJlwibGVuZ3RoXCJpbiBuKWZvcihyPS0xLG89bi5sZW5ndGg7KytyPG87KWUodCxuW3JdKTtlbHNle2lmKFwib2JqZWN0XCIhPXR5cGVvZiBufHwhKFwidHlwZVwiaW4gbikpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbm9kZSwgbm9kZXMsIG9yIHN0cmluZywgZ290IGBcIituK1wiYFwiKTt0LnB1c2gobil9ZWxzZSB0LnB1c2goe3R5cGU6XCJ0ZXh0XCIsdmFsdWU6U3RyaW5nKG4pfSl9KShpLmNoaWxkcmVuLGwpLFwidGVtcGxhdGVcIj09PWkudGFnTmFtZSYmKGkuY29udGVudD17dHlwZTpcInJvb3RcIixjaGlsZHJlbjppLmNoaWxkcmVufSxpLmNoaWxkcmVuPVtdKTtyZXR1cm4gaX07ZnVuY3Rpb24gbih0LG4sbyl7dmFyIGEsdSxjO251bGwhPW8mJm89PW8mJihhPXIoZSxuKSx1PWEucHJvcGVydHksXCJzdHJpbmdcIj09dHlwZW9mKGM9bykmJihhLnNwYWNlU2VwYXJhdGVkP2M9aShjKTphLmNvbW1hU2VwYXJhdGVkP2M9bChjKTphLmNvbW1hT3JTcGFjZVNlcGFyYXRlZCYmKGM9aShsKGMpLmpvaW4oXCIgXCIpKSkpLFwic3R5bGVcIj09PXUmJlwic3RyaW5nXCIhPXR5cGVvZiBvJiYoYz1mdW5jdGlvbihlKXt2YXIgdCxuPVtdO2Zvcih0IGluIGUpbi5wdXNoKFt0LGVbdF1dLmpvaW4oXCI6IFwiKSk7cmV0dXJuIG4uam9pbihcIjsgXCIpfShjKSksXCJjbGFzc05hbWVcIj09PXUmJnQuY2xhc3NOYW1lJiYoYz10LmNsYXNzTmFtZS5jb25jYXQoYykpLHRbdV09ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8sYTtpZihcIm9iamVjdFwiIT10eXBlb2Ygbnx8IShcImxlbmd0aFwiaW4gbikpcmV0dXJuIHMoZSx0LG4pO289bi5sZW5ndGgscj0tMSxhPVtdO2Zvcig7KytyPG87KWFbcl09cyhlLHQsbltyXSk7cmV0dXJuIGF9KGEsdSxjKSl9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oOTQpLG89bigxNjApLGE9bigxNjEpLGk9XCJkYXRhXCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49cih0KSxwPXQsZj1hO2lmKG4gaW4gZS5ub3JtYWwpcmV0dXJuIGUucHJvcGVydHlbZS5ub3JtYWxbbl1dO24ubGVuZ3RoPjQmJm4uc2xpY2UoMCw0KT09PWkmJmwudGVzdCh0KSYmKFwiLVwiPT09dC5jaGFyQXQoNCk/cD1mdW5jdGlvbihlKXt2YXIgdD1lLnNsaWNlKDUpLnJlcGxhY2UocyxkKTtyZXR1cm4gaSt0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9KHQpOnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zbGljZSg0KTtpZihzLnRlc3QodCkpcmV0dXJuIGU7XCItXCIhPT0odD10LnJlcGxhY2UodSxjKSkuY2hhckF0KDApJiYodD1cIi1cIit0KTtyZXR1cm4gaSt0fSh0KSxmPW8pO3JldHVybiBuZXcgZihwLHQpfTt2YXIgbD0vXmRhdGFbLWEtejAtOS46X10rJC9pLHM9Ly1bYS16XS9nLHU9L1tBLVpdL2c7ZnVuY3Rpb24gYyhlKXtyZXR1cm5cIi1cIitlLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZS5jaGFyQXQoMSkudG9VcHBlckNhc2UoKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixhLGksbCxzLHU9ZXx8XCJcIixjPXR8fFwiZGl2XCIsZD17fSxwPS0xLGY9dS5sZW5ndGg7Zm9yKDsrK3A8PWY7KShpPXUuY2hhckNvZGVBdChwKSkmJmkhPT1yJiZpIT09b3x8KChsPXUuc2xpY2UocyxwKSkmJihhPT09cj9uP24ucHVzaChsKToobj1bbF0sZC5jbGFzc05hbWU9bik6YT09PW8/ZC5pZD1sOmM9bCkscz1wKzEsYT1pKTtyZXR1cm57dHlwZTpcImVsZW1lbnRcIix0YWdOYW1lOmMscHJvcGVydGllczpkLGNoaWxkcmVuOltdfX07dmFyIHI9XCIuXCIuY2hhckNvZGVBdCgwKSxvPVwiI1wiLmNoYXJDb2RlQXQoMCl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDI0KTt0LnBhcnNlPWZ1bmN0aW9uKGUpe3ZhciB0PXIoU3RyaW5nKGV8fG8pKTtyZXR1cm4gdD09PW8/W106dC5zcGxpdChpKX0sdC5zdHJpbmdpZnk9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS5qb2luKGEpKX07dmFyIG89XCJcIixhPVwiIFwiLGk9L1sgXFx0XFxuXFxyXFxmXSsvZ30sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3QucGFyc2U9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxhPVN0cmluZyhlfHxpKSxsPWEuaW5kZXhPZihvKSxzPTAsdT0hMTtmb3IoOyF1OyktMT09PWwmJihsPWEubGVuZ3RoLHU9ITApLCEodD1yKGEuc2xpY2UocyxsKSkpJiZ1fHxuLnB1c2godCkscz1sKzEsbD1hLmluZGV4T2YobyxzKTtyZXR1cm4gbn0sdC5zdHJpbmdpZnk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10fHx7fSxsPSExPT09bi5wYWRMZWZ0P2k6YSxzPW4ucGFkUmlnaHQ/YTppO2VbZS5sZW5ndGgtMV09PT1pJiYoZT1lLmNvbmNhdChpKSk7cmV0dXJuIHIoZS5qb2luKHMrbytsKSl9O3ZhciByPW4oMjQpLG89XCIsXCIsYT1cIiBcIixpPVwiXCJ9LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7dmFyIG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGU/c2VsZjp7fSxyPWZ1bmN0aW9uKCl7dmFyIGU9L1xcYmxhbmcoPzp1YWdlKT8tKFtcXHctXSspXFxiL2ksdD0wLHI9bi5QcmlzbT17bWFudWFsOm4uUHJpc20mJm4uUHJpc20ubWFudWFsLGRpc2FibGVXb3JrZXJNZXNzYWdlSGFuZGxlcjpuLlByaXNtJiZuLlByaXNtLmRpc2FibGVXb3JrZXJNZXNzYWdlSGFuZGxlcix1dGlsOntlbmNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBvP25ldyBvKGUudHlwZSxyLnV0aWwuZW5jb2RlKGUuY29udGVudCksZS5hbGlhcyk6XCJBcnJheVwiPT09ci51dGlsLnR5cGUoZSk/ZS5tYXAoci51dGlsLmVuY29kZSk6ZS5yZXBsYWNlKC8mL2csXCImYW1wO1wiKS5yZXBsYWNlKC88L2csXCImbHQ7XCIpLnJlcGxhY2UoL1xcdTAwYTAvZyxcIiBcIil9LHR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5tYXRjaCgvXFxbb2JqZWN0IChcXHcrKVxcXS8pWzFdfSxvYmpJZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX2lkfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9faWRcIix7dmFsdWU6Kyt0fSksZS5fX2lkfSxjbG9uZTpmdW5jdGlvbihlLHQpe3ZhciBuPXIudXRpbC50eXBlKGUpO3N3aXRjaCh0PXR8fHt9LG4pe2Nhc2VcIk9iamVjdFwiOmlmKHRbci51dGlsLm9iaklkKGUpXSlyZXR1cm4gdFtyLnV0aWwub2JqSWQoZSldO3ZhciBvPXt9O2Zvcih2YXIgYSBpbiB0W3IudXRpbC5vYmpJZChlKV09byxlKWUuaGFzT3duUHJvcGVydHkoYSkmJihvW2FdPXIudXRpbC5jbG9uZShlW2FdLHQpKTtyZXR1cm4gbztjYXNlXCJBcnJheVwiOmlmKHRbci51dGlsLm9iaklkKGUpXSlyZXR1cm4gdFtyLnV0aWwub2JqSWQoZSldO289W107cmV0dXJuIHRbci51dGlsLm9iaklkKGUpXT1vLGUuZm9yRWFjaChmdW5jdGlvbihlLG4pe29bbl09ci51dGlsLmNsb25lKGUsdCl9KSxvfXJldHVybiBlfX0sbGFuZ3VhZ2VzOntleHRlbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1yLnV0aWwuY2xvbmUoci5sYW5ndWFnZXNbZV0pO2Zvcih2YXIgbyBpbiB0KW5bb109dFtvXTtyZXR1cm4gbn0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBhPShvPW98fHIubGFuZ3VhZ2VzKVtlXTtpZigyPT1hcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGkgaW4gbj1hcmd1bWVudHNbMV0pbi5oYXNPd25Qcm9wZXJ0eShpKSYmKGFbaV09bltpXSk7cmV0dXJuIGF9dmFyIGw9e307Zm9yKHZhciBzIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShzKSl7aWYocz09dClmb3IodmFyIGkgaW4gbiluLmhhc093blByb3BlcnR5KGkpJiYobFtpXT1uW2ldKTtsW3NdPWFbc119cmV0dXJuIHIubGFuZ3VhZ2VzLkRGUyhyLmxhbmd1YWdlcyxmdW5jdGlvbih0LG4pe249PT1vW2VdJiZ0IT1lJiYodGhpc1t0XT1sKX0pLG9bZV09bH0sREZTOmZ1bmN0aW9uKGUsdCxuLG8pe2Zvcih2YXIgYSBpbiBvPW98fHt9LGUpZS5oYXNPd25Qcm9wZXJ0eShhKSYmKHQuY2FsbChlLGEsZVthXSxufHxhKSxcIk9iamVjdFwiIT09ci51dGlsLnR5cGUoZVthXSl8fG9bci51dGlsLm9iaklkKGVbYV0pXT9cIkFycmF5XCIhPT1yLnV0aWwudHlwZShlW2FdKXx8b1tyLnV0aWwub2JqSWQoZVthXSldfHwob1tyLnV0aWwub2JqSWQoZVthXSldPSEwLHIubGFuZ3VhZ2VzLkRGUyhlW2FdLHQsYSxvKSk6KG9bci51dGlsLm9iaklkKGVbYV0pXT0hMCxyLmxhbmd1YWdlcy5ERlMoZVthXSx0LG51bGwsbykpKX19LHBsdWdpbnM6e30saGlnaGxpZ2h0QWxsOmZ1bmN0aW9uKGUsdCl7ci5oaWdobGlnaHRBbGxVbmRlcihkb2N1bWVudCxlLHQpfSxoaWdobGlnaHRBbGxVbmRlcjpmdW5jdGlvbihlLHQsbil7dmFyIG89e2NhbGxiYWNrOm4sc2VsZWN0b3I6J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdLCBbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIGNvZGUsIGNvZGVbY2xhc3MqPVwibGFuZy1cIl0sIFtjbGFzcyo9XCJsYW5nLVwiXSBjb2RlJ307ci5ob29rcy5ydW4oXCJiZWZvcmUtaGlnaGxpZ2h0YWxsXCIsbyk7Zm9yKHZhciBhLGk9by5lbGVtZW50c3x8ZS5xdWVyeVNlbGVjdG9yQWxsKG8uc2VsZWN0b3IpLGw9MDthPWlbbCsrXTspci5oaWdobGlnaHRFbGVtZW50KGEsITA9PT10LG8uY2FsbGJhY2spfSxoaWdobGlnaHRFbGVtZW50OmZ1bmN0aW9uKHQsbyxhKXtmb3IodmFyIGksbCxzPXQ7cyYmIWUudGVzdChzLmNsYXNzTmFtZSk7KXM9cy5wYXJlbnROb2RlO3MmJihpPShzLmNsYXNzTmFtZS5tYXRjaChlKXx8WyxcIlwiXSlbMV0udG9Mb3dlckNhc2UoKSxsPXIubGFuZ3VhZ2VzW2ldKSx0LmNsYXNzTmFtZT10LmNsYXNzTmFtZS5yZXBsYWNlKGUsXCJcIikucmVwbGFjZSgvXFxzKy9nLFwiIFwiKStcIiBsYW5ndWFnZS1cIitpLHQucGFyZW50Tm9kZSYmKHM9dC5wYXJlbnROb2RlLC9wcmUvaS50ZXN0KHMubm9kZU5hbWUpJiYocy5jbGFzc05hbWU9cy5jbGFzc05hbWUucmVwbGFjZShlLFwiXCIpLnJlcGxhY2UoL1xccysvZyxcIiBcIikrXCIgbGFuZ3VhZ2UtXCIraSkpO3ZhciB1PXtlbGVtZW50OnQsbGFuZ3VhZ2U6aSxncmFtbWFyOmwsY29kZTp0LnRleHRDb250ZW50fTtpZihyLmhvb2tzLnJ1bihcImJlZm9yZS1zYW5pdHktY2hlY2tcIix1KSwhdS5jb2RlfHwhdS5ncmFtbWFyKXJldHVybiB1LmNvZGUmJihyLmhvb2tzLnJ1bihcImJlZm9yZS1oaWdobGlnaHRcIix1KSx1LmVsZW1lbnQudGV4dENvbnRlbnQ9dS5jb2RlLHIuaG9va3MucnVuKFwiYWZ0ZXItaGlnaGxpZ2h0XCIsdSkpLHZvaWQgci5ob29rcy5ydW4oXCJjb21wbGV0ZVwiLHUpO2lmKHIuaG9va3MucnVuKFwiYmVmb3JlLWhpZ2hsaWdodFwiLHUpLG8mJm4uV29ya2VyKXt2YXIgYz1uZXcgV29ya2VyKHIuZmlsZW5hbWUpO2Mub25tZXNzYWdlPWZ1bmN0aW9uKGUpe3UuaGlnaGxpZ2h0ZWRDb2RlPWUuZGF0YSxyLmhvb2tzLnJ1bihcImJlZm9yZS1pbnNlcnRcIix1KSx1LmVsZW1lbnQuaW5uZXJIVE1MPXUuaGlnaGxpZ2h0ZWRDb2RlLGEmJmEuY2FsbCh1LmVsZW1lbnQpLHIuaG9va3MucnVuKFwiYWZ0ZXItaGlnaGxpZ2h0XCIsdSksci5ob29rcy5ydW4oXCJjb21wbGV0ZVwiLHUpfSxjLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHtsYW5ndWFnZTp1Lmxhbmd1YWdlLGNvZGU6dS5jb2RlLGltbWVkaWF0ZUNsb3NlOiEwfSkpfWVsc2UgdS5oaWdobGlnaHRlZENvZGU9ci5oaWdobGlnaHQodS5jb2RlLHUuZ3JhbW1hcix1Lmxhbmd1YWdlKSxyLmhvb2tzLnJ1bihcImJlZm9yZS1pbnNlcnRcIix1KSx1LmVsZW1lbnQuaW5uZXJIVE1MPXUuaGlnaGxpZ2h0ZWRDb2RlLGEmJmEuY2FsbCh0KSxyLmhvb2tzLnJ1bihcImFmdGVyLWhpZ2hsaWdodFwiLHUpLHIuaG9va3MucnVuKFwiY29tcGxldGVcIix1KX0saGlnaGxpZ2h0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgYT17Y29kZTplLGdyYW1tYXI6dCxsYW5ndWFnZTpufTtyZXR1cm4gci5ob29rcy5ydW4oXCJiZWZvcmUtdG9rZW5pemVcIixhKSxhLnRva2Vucz1yLnRva2VuaXplKGEuY29kZSxhLmdyYW1tYXIpLHIuaG9va3MucnVuKFwiYWZ0ZXItdG9rZW5pemVcIixhKSxvLnN0cmluZ2lmeShyLnV0aWwuZW5jb2RlKGEudG9rZW5zKSxhLmxhbmd1YWdlKX0sbWF0Y2hHcmFtbWFyOmZ1bmN0aW9uKGUsdCxuLG8sYSxpLGwpe3ZhciBzPXIuVG9rZW47Zm9yKHZhciB1IGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eSh1KSYmblt1XSl7aWYodT09bClyZXR1cm47dmFyIGM9blt1XTtjPVwiQXJyYXlcIj09PXIudXRpbC50eXBlKGMpP2M6W2NdO2Zvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7KytkKXt2YXIgcD1jW2RdLGY9cC5pbnNpZGUsbT0hIXAubG9va2JlaGluZCxnPSEhcC5ncmVlZHksaD0wLGI9cC5hbGlhcztpZihnJiYhcC5wYXR0ZXJuLmdsb2JhbCl7dmFyIHk9cC5wYXR0ZXJuLnRvU3RyaW5nKCkubWF0Y2goL1tpbXV5XSokLylbMF07cC5wYXR0ZXJuPVJlZ0V4cChwLnBhdHRlcm4uc291cmNlLHkrXCJnXCIpfXA9cC5wYXR0ZXJufHxwO2Zvcih2YXIgdj1vLFM9YTt2PHQubGVuZ3RoO1MrPXRbdl0ubGVuZ3RoLCsrdil7dmFyIEU9dFt2XTtpZih0Lmxlbmd0aD5lLmxlbmd0aClyZXR1cm47aWYoIShFIGluc3RhbmNlb2Ygcykpe2lmKGcmJnYhPXQubGVuZ3RoLTEpe2lmKHAubGFzdEluZGV4PVMsIShBPXAuZXhlYyhlKSkpYnJlYWs7Zm9yKHZhciB4PUEuaW5kZXgrKG0/QVsxXS5sZW5ndGg6MCksdz1BLmluZGV4K0FbMF0ubGVuZ3RoLGs9dixfPVMsVD10Lmxlbmd0aDtrPFQmJihfPHd8fCF0W2tdLnR5cGUmJiF0W2stMV0uZ3JlZWR5KTsrK2speD49KF8rPXRba10ubGVuZ3RoKSYmKCsrdixTPV8pO2lmKHRbdl1pbnN0YW5jZW9mIHMpY29udGludWU7Qz1rLXYsRT1lLnNsaWNlKFMsXyksQS5pbmRleC09U31lbHNle3AubGFzdEluZGV4PTA7dmFyIEE9cC5leGVjKEUpLEM9MX1pZihBKXttJiYoaD1BWzFdP0FbMV0ubGVuZ3RoOjApO3c9KHg9QS5pbmRleCtoKSsoQT1BWzBdLnNsaWNlKGgpKS5sZW5ndGg7dmFyIE89RS5zbGljZSgwLHgpLEk9RS5zbGljZSh3KSxOPVt2LENdO08mJigrK3YsUys9Ty5sZW5ndGgsTi5wdXNoKE8pKTt2YXIgUj1uZXcgcyh1LGY/ci50b2tlbml6ZShBLGYpOkEsYixBLGcpO2lmKE4ucHVzaChSKSxJJiZOLnB1c2goSSksQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseSh0LE4pLDEhPUMmJnIubWF0Y2hHcmFtbWFyKGUsdCxuLHYsUywhMCx1KSxpKWJyZWFrfWVsc2UgaWYoaSlicmVha319fX19LHRva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1bZV0sYT10LnJlc3Q7aWYoYSl7Zm9yKHZhciBpIGluIGEpdFtpXT1hW2ldO2RlbGV0ZSB0LnJlc3R9cmV0dXJuIHIubWF0Y2hHcmFtbWFyKGUsbyx0LDAsMCwhMSksb30saG9va3M6e2FsbDp7fSxhZGQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1yLmhvb2tzLmFsbDtuW2VdPW5bZV18fFtdLG5bZV0ucHVzaCh0KX0scnVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49ci5ob29rcy5hbGxbZV07aWYobiYmbi5sZW5ndGgpZm9yKHZhciBvLGE9MDtvPW5bYSsrXTspbyh0KX19fSxvPXIuVG9rZW49ZnVuY3Rpb24oZSx0LG4scixvKXt0aGlzLnR5cGU9ZSx0aGlzLmNvbnRlbnQ9dCx0aGlzLmFsaWFzPW4sdGhpcy5sZW5ndGg9MHwocnx8XCJcIikubGVuZ3RoLHRoaXMuZ3JlZWR5PSEhb307aWYoby5zdHJpbmdpZnk9ZnVuY3Rpb24oZSx0LG4pe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBlO2lmKFwiQXJyYXlcIj09PXIudXRpbC50eXBlKGUpKXJldHVybiBlLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gby5zdHJpbmdpZnkobix0LGUpfSkuam9pbihcIlwiKTt2YXIgYT17dHlwZTplLnR5cGUsY29udGVudDpvLnN0cmluZ2lmeShlLmNvbnRlbnQsdCxuKSx0YWc6XCJzcGFuXCIsY2xhc3NlczpbXCJ0b2tlblwiLGUudHlwZV0sYXR0cmlidXRlczp7fSxsYW5ndWFnZTp0LHBhcmVudDpufTtpZihlLmFsaWFzKXt2YXIgaT1cIkFycmF5XCI9PT1yLnV0aWwudHlwZShlLmFsaWFzKT9lLmFsaWFzOltlLmFsaWFzXTtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhLmNsYXNzZXMsaSl9ci5ob29rcy5ydW4oXCJ3cmFwXCIsYSk7dmFyIGw9T2JqZWN0LmtleXMoYS5hdHRyaWJ1dGVzKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUrJz1cIicrKGEuYXR0cmlidXRlc1tlXXx8XCJcIikucmVwbGFjZSgvXCIvZyxcIiZxdW90O1wiKSsnXCInfSkuam9pbihcIiBcIik7cmV0dXJuXCI8XCIrYS50YWcrJyBjbGFzcz1cIicrYS5jbGFzc2VzLmpvaW4oXCIgXCIpKydcIicrKGw/XCIgXCIrbDpcIlwiKStcIj5cIithLmNvbnRlbnQrXCI8L1wiK2EudGFnK1wiPlwifSwhbi5kb2N1bWVudClyZXR1cm4gbi5hZGRFdmVudExpc3RlbmVyPyhyLmRpc2FibGVXb3JrZXJNZXNzYWdlSGFuZGxlcnx8bi5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGZ1bmN0aW9uKGUpe3ZhciB0PUpTT04ucGFyc2UoZS5kYXRhKSxvPXQubGFuZ3VhZ2UsYT10LmNvZGUsaT10LmltbWVkaWF0ZUNsb3NlO24ucG9zdE1lc3NhZ2Uoci5oaWdobGlnaHQoYSxyLmxhbmd1YWdlc1tvXSxvKSksaSYmbi5jbG9zZSgpfSwhMSksbi5QcmlzbSk6bi5QcmlzbTt2YXIgYT1kb2N1bWVudC5jdXJyZW50U2NyaXB0fHxbXS5zbGljZS5jYWxsKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpKS5wb3AoKTtyZXR1cm4gYSYmKHIuZmlsZW5hbWU9YS5zcmMsci5tYW51YWx8fGEuaGFzQXR0cmlidXRlKFwiZGF0YS1tYW51YWxcIil8fChcImxvYWRpbmdcIiE9PWRvY3VtZW50LnJlYWR5U3RhdGU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHIuaGlnaGxpZ2h0QWxsKTp3aW5kb3cuc2V0VGltZW91dChyLmhpZ2hsaWdodEFsbCwxNik6ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixyLmhpZ2hsaWdodEFsbCkpKSxuLlByaXNtfSgpO2UuZXhwb3J0cyYmKGUuZXhwb3J0cz1yKSx2b2lkIDAhPT10JiYodC5QcmlzbT1yKX0pLmNhbGwodGhpcyxuKDI3KSl9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm1hcmt1cD17Y29tbWVudDovPCEtLVtcXHNcXFNdKj8tLT4vLHByb2xvZzovPFxcP1tcXHNcXFNdKz9cXD8+Lyxkb2N0eXBlOi88IURPQ1RZUEVbXFxzXFxTXSs/Pi9pLGNkYXRhOi88IVxcW0NEQVRBXFxbW1xcc1xcU10qP11dPi9pLHRhZzp7cGF0dGVybjovPFxcLz8oPyFcXGQpW15cXHM+XFwvPSQ8JV0rKD86XFxzK1teXFxzPlxcLz1dKyg/Oj0oPzooXCJ8JykoPzpcXFxcW1xcc1xcU118KD8hXFwxKVteXFxcXF0pKlxcMXxbXlxccydcIj49XSspKT8pKlxccypcXC8/Pi9pLGdyZWVkeTohMCxpbnNpZGU6e3RhZzp7cGF0dGVybjovXjxcXC8/W15cXHM+XFwvXSsvaSxpbnNpZGU6e3B1bmN0dWF0aW9uOi9ePFxcLz8vLG5hbWVzcGFjZTovXlteXFxzPlxcLzpdKzovfX0sXCJhdHRyLXZhbHVlXCI6e3BhdHRlcm46Lz0oPzooXCJ8JykoPzpcXFxcW1xcc1xcU118KD8hXFwxKVteXFxcXF0pKlxcMXxbXlxccydcIj49XSspL2ksaW5zaWRlOntwdW5jdHVhdGlvbjpbL149Lyx7cGF0dGVybjovKF58W15cXFxcXSlbXCInXS8sbG9va2JlaGluZDohMH1dfX0scHVuY3R1YXRpb246L1xcLz8+LyxcImF0dHItbmFtZVwiOntwYXR0ZXJuOi9bXlxccz5cXC9dKy8saW5zaWRlOntuYW1lc3BhY2U6L15bXlxccz5cXC86XSs6L319fX0sZW50aXR5Oi8mIz9bXFxkYS16XXsxLDh9Oy9pfSxlLmxhbmd1YWdlcy5tYXJrdXAudGFnLmluc2lkZVtcImF0dHItdmFsdWVcIl0uaW5zaWRlLmVudGl0eT1lLmxhbmd1YWdlcy5tYXJrdXAuZW50aXR5LGUuaG9va3MuYWRkKFwid3JhcFwiLGZ1bmN0aW9uKGUpe1wiZW50aXR5XCI9PT1lLnR5cGUmJihlLmF0dHJpYnV0ZXMudGl0bGU9ZS5jb250ZW50LnZhbHVlLnJlcGxhY2UoLyZhbXA7LyxcIiZcIikpfSksZS5sYW5ndWFnZXMueG1sPWUubGFuZ3VhZ2VzLm1hcmt1cCxlLmxhbmd1YWdlcy5odG1sPWUubGFuZ3VhZ2VzLm1hcmt1cCxlLmxhbmd1YWdlcy5tYXRobWw9ZS5sYW5ndWFnZXMubWFya3VwLGUubGFuZ3VhZ2VzLnN2Zz1lLmxhbmd1YWdlcy5tYXJrdXB9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm1hcmt1cFwiLHIuYWxpYXNlcz1bXCJ4bWxcIixcImh0bWxcIixcIm1hdGhtbFwiLFwic3ZnXCJdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5jc3M9e2NvbW1lbnQ6L1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vLGF0cnVsZTp7cGF0dGVybjovQFtcXHctXSs/Lio/KD86O3woPz1cXHMqXFx7KSkvaSxpbnNpZGU6e3J1bGU6L0BbXFx3LV0rL319LHVybDovdXJsXFwoKD86KFtcIiddKSg/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDF8Lio/KVxcKS9pLHNlbGVjdG9yOi9bXnt9XFxzXVtee307XSo/KD89XFxzKlxceykvLHN0cmluZzp7cGF0dGVybjovKFwifCcpKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfSxwcm9wZXJ0eTovWy1fYS16XFx4QTAtXFx1RkZGRl1bLVxcd1xceEEwLVxcdUZGRkZdKig/PVxccyo6KS9pLGltcG9ydGFudDovXFxCIWltcG9ydGFudFxcYi9pLGZ1bmN0aW9uOi9bLWEtejAtOV0rKD89XFwoKS9pLHB1bmN0dWF0aW9uOi9bKCl7fTs6XS99LGUubGFuZ3VhZ2VzLmNzcy5hdHJ1bGUuaW5zaWRlLnJlc3Q9ZS5sYW5ndWFnZXMuY3NzLGUubGFuZ3VhZ2VzLm1hcmt1cCYmKGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcIm1hcmt1cFwiLFwidGFnXCIse3N0eWxlOntwYXR0ZXJuOi8oPHN0eWxlW1xcc1xcU10qPz4pW1xcc1xcU10qPyg/PTxcXC9zdHlsZT4pL2ksbG9va2JlaGluZDohMCxpbnNpZGU6ZS5sYW5ndWFnZXMuY3NzLGFsaWFzOlwibGFuZ3VhZ2UtY3NzXCIsZ3JlZWR5OiEwfX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImluc2lkZVwiLFwiYXR0ci12YWx1ZVwiLHtcInN0eWxlLWF0dHJcIjp7cGF0dGVybjovXFxzKnN0eWxlPShcInwnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxL2ksaW5zaWRlOntcImF0dHItbmFtZVwiOntwYXR0ZXJuOi9eXFxzKnN0eWxlL2ksaW5zaWRlOmUubGFuZ3VhZ2VzLm1hcmt1cC50YWcuaW5zaWRlfSxwdW5jdHVhdGlvbjovXlxccyo9XFxzKlsnXCJdfFsnXCJdXFxzKiQvLFwiYXR0ci12YWx1ZVwiOntwYXR0ZXJuOi8uKy9pLGluc2lkZTplLmxhbmd1YWdlcy5jc3N9fSxhbGlhczpcImxhbmd1YWdlLWNzc1wifX0sZS5sYW5ndWFnZXMubWFya3VwLnRhZykpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJjc3NcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmNsaWtlPXtjb21tZW50Olt7cGF0dGVybjovKF58W15cXFxcXSlcXC9cXCpbXFxzXFxTXSo/KD86XFwqXFwvfCQpLyxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W15cXFxcOl0pXFwvXFwvLiovLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfV0sc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfSxcImNsYXNzLW5hbWVcIjp7cGF0dGVybjovKCg/OlxcYig/OmNsYXNzfGludGVyZmFjZXxleHRlbmRzfGltcGxlbWVudHN8dHJhaXR8aW5zdGFuY2VvZnxuZXcpXFxzKyl8KD86Y2F0Y2hcXHMrXFwoKSlbXFx3LlxcXFxdKy9pLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwdW5jdHVhdGlvbjovWy5cXFxcXS99fSxrZXl3b3JkOi9cXGIoPzppZnxlbHNlfHdoaWxlfGRvfGZvcnxyZXR1cm58aW58aW5zdGFuY2VvZnxmdW5jdGlvbnxuZXd8dHJ5fHRocm93fGNhdGNofGZpbmFsbHl8bnVsbHxicmVha3xjb250aW51ZSlcXGIvLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2UpXFxiLyxmdW5jdGlvbjovW2EtejAtOV9dKyg/PVxcKCkvaSxudW1iZXI6L1xcYjB4W1xcZGEtZl0rXFxifCg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OmVbKy1dP1xcZCspPy9pLG9wZXJhdG9yOi8tLT98XFwrXFwrP3whPT89P3w8PT98Pj0/fD09Pz0/fCYmP3xcXHxcXHw/fFxcP3xcXCp8XFwvfH58XFxefCUvLHB1bmN0dWF0aW9uOi9be31bXFxdOygpLC46XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJjbGlrZVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuamF2YXNjcmlwdD1lLmxhbmd1YWdlcy5leHRlbmQoXCJjbGlrZVwiLHtrZXl3b3JkOi9cXGIoPzphc3xhc3luY3xhd2FpdHxicmVha3xjYXNlfGNhdGNofGNsYXNzfGNvbnN0fGNvbnRpbnVlfGRlYnVnZ2VyfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZW51bXxleHBvcnR8ZXh0ZW5kc3xmaW5hbGx5fGZvcnxmcm9tfGZ1bmN0aW9ufGdldHxpZnxpbXBsZW1lbnRzfGltcG9ydHxpbnxpbnN0YW5jZW9mfGludGVyZmFjZXxsZXR8bmV3fG51bGx8b2Z8cGFja2FnZXxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8cmV0dXJufHNldHxzdGF0aWN8c3VwZXJ8c3dpdGNofHRoaXN8dGhyb3d8dHJ5fHR5cGVvZnx2YXJ8dm9pZHx3aGlsZXx3aXRofHlpZWxkKVxcYi8sbnVtYmVyOi9cXGIoPzowW3hYXVtcXGRBLUZhLWZdK3wwW2JCXVswMV0rfDBbb09dWzAtN10rfE5hTnxJbmZpbml0eSlcXGJ8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86W0VlXVsrLV0/XFxkKyk/LyxmdW5jdGlvbjovW18kYS16XFx4QTAtXFx1RkZGRl1bJFxcd1xceEEwLVxcdUZGRkZdKig/PVxccypcXCgpL2ksb3BlcmF0b3I6Ly1bLT1dP3xcXCtbKz1dP3whPT89P3w8PD89P3w+Pj8+Pz0/fD0oPzo9PT98Pik/fCZbJj1dP3xcXHxbfD1dP3xcXCpcXCo/PT98XFwvPT98fnxcXF49P3wlPT98XFw/fFxcLnszfS99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJqYXZhc2NyaXB0XCIsXCJrZXl3b3JkXCIse3JlZ2V4OntwYXR0ZXJuOi8oKD86XnxbXiRcXHdcXHhBMC1cXHVGRkZGLlwiJ1xcXSlcXHNdKVxccyopXFwvKFxcW1teXFxdXFxyXFxuXStdfFxcXFwufFteXFwvXFxcXFxcW1xcclxcbl0pK1xcL1tnaW15dV17MCw1fSg/PVxccyooJHxbXFxyXFxuLC47fSlcXF1dKSkvLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfSxcImZ1bmN0aW9uLXZhcmlhYmxlXCI6e3BhdHRlcm46L1tfJGEtelxceEEwLVxcdUZGRkZdWyRcXHdcXHhBMC1cXHVGRkZGXSooPz1cXHMqPVxccyooPzpmdW5jdGlvblxcYnwoPzpcXChbXigpXSpcXCl8W18kYS16XFx4QTAtXFx1RkZGRl1bJFxcd1xceEEwLVxcdUZGRkZdKilcXHMqPT4pKS9pLGFsaWFzOlwiZnVuY3Rpb25cIn0sY29uc3RhbnQ6L1xcYltBLVpdW0EtWlxcZF9dKlxcYi99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJqYXZhc2NyaXB0XCIsXCJzdHJpbmdcIix7XCJ0ZW1wbGF0ZS1zdHJpbmdcIjp7cGF0dGVybjovYCg/OlxcXFxbXFxzXFxTXXxcXCR7W159XSt9fFteXFxcXGBdKSpgLyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOntwYXR0ZXJuOi9cXCR7W159XSt9LyxpbnNpZGU6e1wiaW50ZXJwb2xhdGlvbi1wdW5jdHVhdGlvblwiOntwYXR0ZXJuOi9eXFwke3x9JC8sYWxpYXM6XCJwdW5jdHVhdGlvblwifSxyZXN0Om51bGx9fSxzdHJpbmc6L1tcXHNcXFNdKy99fX0pLGUubGFuZ3VhZ2VzLmphdmFzY3JpcHRbXCJ0ZW1wbGF0ZS1zdHJpbmdcIl0uaW5zaWRlLmludGVycG9sYXRpb24uaW5zaWRlLnJlc3Q9ZS5sYW5ndWFnZXMuamF2YXNjcmlwdCxlLmxhbmd1YWdlcy5tYXJrdXAmJmUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcIm1hcmt1cFwiLFwidGFnXCIse3NjcmlwdDp7cGF0dGVybjovKDxzY3JpcHRbXFxzXFxTXSo/PilbXFxzXFxTXSo/KD89PFxcL3NjcmlwdD4pL2ksbG9va2JlaGluZDohMCxpbnNpZGU6ZS5sYW5ndWFnZXMuamF2YXNjcmlwdCxhbGlhczpcImxhbmd1YWdlLWphdmFzY3JpcHRcIixncmVlZHk6ITB9fSksZS5sYW5ndWFnZXMuanM9ZS5sYW5ndWFnZXMuamF2YXNjcmlwdH1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiamF2YXNjcmlwdFwiLHIuYWxpYXNlcz1bXCJqc1wiXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuYWJhcD17Y29tbWVudDovXlxcKi4qL20sc3RyaW5nOi8oYHwnKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvbSxcInN0cmluZy10ZW1wbGF0ZVwiOntwYXR0ZXJuOi8oW3x9XSkoPzpcXFxcLnxbXlxcXFx8e1xcclxcbl0pKig/PVt8e10pLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwic3RyaW5nXCJ9LFwiZW9sLWNvbW1lbnRcIjp7cGF0dGVybjovKF58XFxzKVwiLiovbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwiY29tbWVudFwifSxrZXl3b3JkOntwYXR0ZXJuOi8oXFxzfFxcLnxeKSg/OlNDSUVOVElGSUNfV0lUSF9MRUFESU5HX1pFUk98U0NBTEVfUFJFU0VSVklOR19TQ0lFTlRJRklDfFJNQ19DT01NVU5JQ0FUSU9OX0ZBSUxVUkV8RU5ELUVOSEFOQ0VNRU5ULVNFQ1RJT058TVVMVElQTFktQ09SUkVTUE9ORElOR3xTVUJUUkFDVC1DT1JSRVNQT05ESU5HfFZFUklGSUNBVElPTi1NRVNTQUdFfERJVklERS1DT1JSRVNQT05ESU5HfEVOSEFOQ0VNRU5ULVNFQ1RJT058Q1VSUkVOQ1lfQ09OVkVSU0lPTnxSTUNfU1lTVEVNX0ZBSUxVUkV8U1RBUlQtT0YtU0VMRUNUSU9OfE1PVkUtQ09SUkVTUE9ORElOR3xSTUNfSU5WQUxJRF9TVEFUVVN8Q1VTVE9NRVItRlVOQ1RJT058RU5ELU9GLURFRklOSVRJT058RU5IQU5DRU1FTlQtUE9JTlR8U1lTVEVNLUVYQ0VQVElPTlN8QURELUNPUlJFU1BPTkRJTkd8U0NBTEVfUFJFU0VSVklOR3xTRUxFQ1RJT04tU0NSRUVOfENVUlNPUi1TRUxFQ1RJT058RU5ELU9GLVNFTEVDVElPTnxMT0FELU9GLVBST0dSQU18U0NST0xMLUJPVU5EQVJZfFNFTEVDVElPTi1UQUJMRXxFWENFUFRJT04tVEFCTEV8SU1QTEVNRU5UQVRJT05TfFBBUkFNRVRFUi1UQUJMRXxSSUdIVC1KVVNUSUZJRUR8VU5JVF9DT05WRVJTSU9OfEFVVEhPUklUWS1DSEVDS3xMSVNULVBST0NFU1NJTkd8U0lHTl9BU19QT1NURklYfENPTF9CQUNLR1JPVU5EfElNUExFTUVOVEFUSU9OfElOVEVSRkFDRS1QT09MfFRSQU5TRk9STUFUSU9OfElERU5USUZJQ0FUSU9OfEVOREVOSEFOQ0VNRU5UfExJTkUtU0VMRUNUSU9OfElOSVRJQUxJWkFUSU9OfExFRlQtSlVTVElGSUVEfFNFTEVDVC1PUFRJT05TfFNFTEVDVElPTi1TRVRTfENPTU1VTklDQVRJT058Q09SUkVTUE9ORElOR3xERUNJTUFMX1NISUZUfFBSSU5ULUNPTlRST0x8VkFMVUUtUkVRVUVTVHxDSEFJTi1SRVFVRVNUfEZVTkNUSU9OLVBPT0x8RklFTEQtU1lNQk9MU3xGVU5DVElPTkFMSVRZfElOVkVSVEVELURBVEV8U0VMRUNUSU9OLVNFVHxDTEFTUy1NRVRIT0RTfE9VVFBVVC1MRU5HVEh8Q0xBU1MtQ09ESU5HfENPTF9ORUdBVElWRXxFUlJPUk1FU1NBR0V8RklFTEQtR1JPVVBTfEhFTFAtUkVRVUVTVHxOTy1FWFRFTlNJT058Tk8tVE9QT0ZQQUdFfFJFREVGSU5JVElPTnxESVNQTEFZLU1PREV8RU5ESU5URVJGQUNFfEVYSVQtQ09NTUFORHxGSUVMRC1TWU1CT0x8Tk8tU0NST0xMSU5HfFNIT1JURFVNUC1JRHxBQ0NFU1NQT0xJQ1l8Q0xBU1MtRVZFTlRTfENPTF9QT1NJVElWRXxERUNMQVJBVElPTlN8RU5IQU5DRU1FTlRTfEZJTFRFUi1UQUJMRXxTV0lUQ0hTVEFURVN8U1lOVEFYLUNIRUNLfFRSQU5TUE9SVElOR3xBU1lOQ0hST05PVVN8U1lOVEFYLVRSQUNFfFRPS0VOSVpBVElPTnxVU0VSLUNPTU1BTkR8V0lUSC1IRUFESU5HfEFCQVAtU09VUkNFfEJSRUFLLVBPSU5UfENIQUlOLUlOUFVUfENPTVBSRVNTSU9OfEZJWEVELVBPSU5UfE5FVy1TRUNUSU9OfE5PTi1VTklDT0RFfE9DQ1VSUkVOQ0VTfFJFU1BPTlNJQkxFfFNZU1RFTS1DQUxMfFRSQUNFLVRBQkxFfEFCQlJFVklBVEVEfENIQVItVE8tSEVYfEVORC1PRi1GSUxFfEVOREZVTkNUSU9OfEVOVklST05NRU5UfEFTU09DSUFUSU9OfENPTF9IRUFESU5HfEVESVRPUi1DQUxMfEVORC1PRi1QQUdFfEVOR0lORUVSSU5HfElNUExFTUVOVEVEfElOVEVOU0lGSUVEfFJBRElPQlVUVE9OfFNZU1RFTS1FWElUfFRPUC1PRi1QQUdFfFRSQU5TQUNUSU9OfEFQUExJQ0FUSU9OfENPTkNBVEVOQVRFfERFU1RJTkFUSU9OfEVOSEFOQ0VNRU5UfElNTUVESUFURUxZfE5PLUdST1VQSU5HfFBSRUNPTVBJTEVEfFJFUExBQ0VNRU5UfFRJVExFLUxJTkVTfEFDVElWQVRJT058QllURS1PUkRFUnxDTEFTUy1QT09MfENPTk5FQ1RJT058Q09OVkVSU0lPTnxERUZJTklUSU9OfERFUEFSVE1FTlR8RVhQSVJBVElPTnxJTkhFUklUSU5HfE1FU1NBR0UtSUR8Tk8tSEVBRElOR3xQRVJGT1JNSU5HfFFVRVVFLU9OTFl8UklHSFRTUEFDRXxTQ0lFTlRJRklDfFNUQVRVU0lORk98U1RSVUNUVVJFU3xTWU5DUE9JTlRTfFdJVEgtVElUTEV8QVRUUklCVVRFU3xCT1VOREFSSUVTfENMQVNTLURBVEF8Q09MX05PUk1BTHxERFxcL01NXFwvWVlZWXxERVNDRU5ESU5HfElOVEVSRkFDRVN8TElORS1DT1VOVHxNTVxcL0REXFwvWVlZWXxOT04tVU5JUVVFfFBSRVNFUlZJTkd8U0VMRUNUSU9OU3xTVEFURU1FTlRTfFNVQlJPVVRJTkV8VFJVTkNBVElPTnxUWVBFLVBPT0xTfEFSSVRITUVUSUN8QkFDS0dST1VORHxFTkRQUk9WSURFfEVYQ0VQVElPTlN8SURFTlRJRklFUnxJTkRFWC1MSU5FfE9CTElHQVRPUll8UEFSQU1FVEVSU3xQRVJDRU5UQUdFfFBVU0hCVVRUT058UkVTT0xVVElPTnxDT01QT05FTlRTfERFQUxMT0NBVEV8RElTQ09OTkVDVHxEVVBMSUNBVEVTfEZJUlNULUxJTkV8SEVBRC1MSU5FU3xOTy1ESVNQTEFZfE9DQ1VSUkVOQ0V8UkVTUEVDVElOR3xSRVRVUk5DT0RFfFNVQk1BVENIRVN8VFJBQ0UtRklMRXxBU0NFTkRJTkd8QllQQVNTSU5HfEVORE1PRFVMRXxFWENFUFRJT058RVhDTFVESU5HfEVYUE9SVElOR3xJTkNSRU1FTlR8TUFUQ0hDT0RFfFBBUkFNRVRFUnxQQVJUSUFMTFl8UFJFRkVSUkVEfFJFRkVSRU5DRXxSRVBMQUNJTkd8UkVUVVJOSU5HfFNFTEVDVElPTnxTRVBBUkFURUR8U1BFQ0lGSUVEfFNUQVRFTUVOVHxUSU1FU1RBTVB8VFlQRS1QT09MfEFDQ0VQVElOR3xBUFBFTkRBR0V8QVNTSUdOSU5HfENPTF9HUk9VUHxDT01QQVJJTkd8Q09OU1RBTlRTfERBTkdFUk9VU3xJTVBPUlRJTkd8SU5TVEFOQ0VTfExFRlRTUEFDRXxMT0ctUE9JTlR8UVVJQ0tJTkZPfFJFQUQtT05MWXxTQ1JPTExJTkd8U1FMU0NSSVBUfFNURVAtTE9PUHxUT1AtTElORVN8VFJBTlNMQVRFfEFQUEVORElOR3xBVVRIT1JJVFl8Q0hBUkFDVEVSfENPTVBPTkVOVHxDT05ESVRJT058RElSRUNUT1JZfERVUExJQ0FURXxNRVNTQUdJTkd8UkVDRUlWSU5HfFNVQlNDUkVFTnxBQ0NPUkRJTkd8Q09MX1RPVEFMfEVORC1MSU5FU3xFTkRNRVRIT0R8RU5EU0VMRUNUfEVYUEFORElOR3xFWFRFTlNJT058SU5DTFVESU5HfElORk9UWVBFU3xJTlRFUkZBQ0V8SU5URVJWQUxTfExJTkUtU0laRXxQRi1TVEFUVVN8UFJPQ0VEVVJFfFBST1RFQ1RFRHxSRVFVRVNURUR8UkVTVU1BQkxFfFJJR0hUUExVU3xTQVAtU1BPT0x8U0VDT05EQVJZfFNUUlVDVFVSRXxTVUJTVFJJTkd8VEFCTEVWSUVXfE5VTU9GQ0hBUnxBREpBQ0VOVHxBTkFMWVNJU3xBU1NJR05FRHxCQUNLV0FSRHxDSEFOTkVMU3xDSEVDS0JPWHxDT05USU5VRXxDUklUSUNBTHxEQVRBSU5GT3xERFxcL01NXFwvWVl8RFVSQVRJT058RU5DT0RJTkd8RU5EQ0xBU1N8RlVOQ1RJT058TEVGVFBMVVN8TElORUZFRUR8TU1cXC9ERFxcL1lZfE9WRVJGTE9XfFJFQ0VJVkVEfFNLSVBQSU5HfFNPUlRBQkxFfFNUQU5EQVJEfFNVQlRSQUNUfFNVUFBSRVNTfFRBQlNUUklQfFRJVExFQkFSfFRSVU5DQVRFfFVOQVNTSUdOfFdIRU5FVkVSfEFOQUxZWkVSfENPQUxFU0NFfENPTU1FTlRTfENPTkRFTlNFfERFQ0lNQUxTfERFRkVSUkVEfEVORFdISUxFfEVYUExJQ0lUfEtFWVdPUkRTfE1FU1NBR0VTfFBPU0lUSU9OfFBSSU9SSVRZfFJFQ0VJVkVSfFJFTkFNSU5HfFRJTUVaT05FfFRSQUlMSU5HfEFMTE9DQVRFfENFTlRFUkVEfENJUkNVTEFSfENPTlRST0xTfENVUlJFTkNZfERFTEVUSU5HfERFU0NSSUJFfERJU1RBTkNFfEVORENBVENIfEVYUE9ORU5UfEVYVEVOREVEfEdFTkVSQVRFfElHTk9SSU5HfElOQ0xVREVTfElOVEVSTkFMfE1BSk9SLUlEfE1PRElGSUVSfE5FVy1MSU5FfE9QVElPTkFMfFBST1BFUlRZfFJPTExCQUNLfFNUQVJUSU5HfFNVUFBMSUVEfEFCU1RSQUNUfENIQU5HSU5HfENPTlRFWFRTfENSRUFUSU5HfENVU1RPTUVSfERBVEFCQVNFfERBWUxJR0hUfERFRklOSU5HfERJU1RJTkNUfERJVklTSU9OfEVOQUJMSU5HfEVORENIQUlOfEVTQ0FQSU5HfEhBUk1MRVNTfElNUExJQ0lUfElOQUNUSVZFfExBTkdVQUdFfE1JTk9SLUlEfE1VTFRJUExZfE5FVy1QQUdFfE5PLVRJVExFfFBPU19ISUdIfFNFUEFSQVRFfFRFWFRQT09MfFRSQU5TRkVSfFNFTEVDVE9SfERCTUFYTEVOfElURVJBVE9SfFNFTEVDVE9SfEFSQ0hJVkV8QklULVhPUnxCWVRFLUNPfENPTExFQ1R8Q09NTUVOVHxDVVJSRU5UfERFRkFVTFR8RElTUExBWXxFTkRGT1JNfEVYVFJBQ1R8TEVBRElOR3xMSVNUQk9YfExPQ0FUT1J8TUVNQkVSU3xNRVRIT0RTfE5FU1RJTkd8UE9TX0xPV3xQUk9DRVNTfFBST1ZJREV8UkFJU0lOR3xSRVNFUlZFfFNFQ09ORFN8U1VNTUFSWXxWSVNJQkxFfEJFVFdFRU58QklULUFORHxCWVRFLUNTfENMRUFOVVB8Q09NUFVURXxDT05UUk9MfENPTlZFUlR8REFUQVNFVHxFTkRDQVNFfEZPUldBUkR8SEVBREVSU3xIT1RTUE9UfElOQ0xVREV8SU5WRVJTRXxLRUVQSU5HfE5PLVpFUk98T0JKRUNUU3xPVkVSTEFZfFBBRERJTkd8UEFUVEVSTnxQUk9HUkFNfFJFRlJFU0h8U0VDVElPTnxTVU1NSU5HfFRFU1RJTkd8VkVSU0lPTnxXSU5ET1dTfFdJVEhPVVR8QklULU5PVHxCWVRFLUNBfEJZVEUtTkF8Q0FTVElOR3xDT05URVhUfENPVU5UUll8RFlOQU1JQ3xFTkFCTEVEfEVORExPT1B8RVhFQ1VURXxGUklFTkRTfEhBTkRMRVJ8SEVBRElOR3xJTklUSUFMfFxcKi1JTlBVVHxMT0dGSUxFfE1BWElNVU18TUlOSU1VTXxOTy1HQVBTfE5PLVNJR058UFJBR01BU3xQUklNQVJZfFBSSVZBVEV8UkVEVUNFRHxSRVBMQUNFfFJFUVVFU1R8UkVTVUxUU3xVTklDT0RFfFdBUk5JTkd8QUxJQVNFU3xCWVRFLUNOfEJZVEUtTlN8Q0FMTElOR3xDT0xfS0VZfENPTFVNTlN8Q09OTkVDVHxFTkRFWEVDfEVOVFJJRVN8RVhDTFVERXxGSUxURVJTfEZVUlRIRVJ8SEVMUC1JRHxMT0dJQ0FMfE1BUFBJTkd8TUVTU0FHRXxOQU1FVEFCfE9QVElPTlN8UEFDS0FHRXxQRVJGT1JNfFJFQ0VJVkV8U1RBVElDU3xWQVJZSU5HfEJJTkRJTkd8Q0hBUkxFTnxHUkVBVEVSfFhTVFJMRU58QUNDRVBUfEFQUEVORHxERVRBSUx8RUxTRUlGfEVORElOR3xFTkRUUll8Rk9STUFUfEZSQU1FU3xHSVZJTkd8SEFTSEVEfEhFQURFUnxJTVBPUlR8SU5TRVJUfE1BUkdJTnxNT0RVTEV8TkFUSVZFfE9CSkVDVHxPRkZTRVR8UkVNT1RFfFJFU1VNRXxTQVZJTkd8U0lNUExFfFNVQk1JVHxUQUJCRUR8VE9LRU5TfFVOSVFVRXxVTlBBQ0t8VVBEQVRFfFdJTkRPV3xZRUxMT1d8QUNUVUFMfEFTUEVDVHxDRU5URVJ8Q1VSU09SfERFTEVURXxESUFMT0d8RElWSURFfERVUklOR3xFUlJPUlN8RVZFTlRTfEVYVEVORHxGSUxURVJ8SEFORExFfEhBVklOR3xJR05PUkV8TElUVExFfE1FTU9SWXxOTy1HQVB8T0NDVVJTfE9QVElPTnxQRVJTT058UExBQ0VTfFBVQkxJQ3xSRURVQ0V8UkVQT1JUfFJFU1VMVHxTSU5HTEV8U09SVEVEfFNXSVRDSHxTWU5UQVh8VEFSR0VUfFZBTFVFU3xXUklURVJ8QVNTRVJUfEJMT0NLU3xCT1VORFN8QlVGRkVSfENIQU5HRXxDT0xVTU58Q09NTUlUfENPTkNBVHxDT1BJRVN8Q1JFQVRFfERETU1ZWXxERUZJTkV8RU5ESUFOfEVTQ0FQRXxFWFBBTkR8S0VSTkVMfExBWU9VVHxMRUdBQ1l8TEVWRUxTfE1NRERZWXxOVU1CRVJ8T1VUUFVUfFJBTkdFU3xSRUFERVJ8UkVUVVJOfFNDUkVFTnxTRUFSQ0h8U0VMRUNUfFNIQVJFRHxTT1VSQ0V8U1RBQkxFfFNUQVRJQ3xTVUJLRVl8U1VGRklYfFRBQkxFU3xVTldJTkR8WVlNTUREfEFTU0lHTnxCQUNLVVB8QkVGT1JFfEJJTkFSWXxCSVQtT1J8QkxBTktTfENMSUVOVHxDT0RJTkd8Q09NTU9OfERFTUFORHxEWU5QUk98RVhDRVBUfEVYSVNUU3xFWFBPUlR8RklFTERTfEdMT0JBTHxHUk9VUFN8TEVOR1RIfExPQ0FMRXxNRURJVU18TUVUSE9EfE1PRElGWXxORVNURUR8T1RIRVJTfFJFSkVDVHxTQ1JPTEx8U1VQUExZfFNZTUJPTHxFTkRGT1J8U1RSTEVOfEFMSUdOfEJFR0lOfEJPVU5EfEVOREFUfEVOVFJZfEVWRU5UfEZJTkFMfEZMVVNIfEdSQU5UfElOTkVSfFNIT1JUfFVTSU5HfFdSSVRFfEFGVEVSfEJMQUNLfEJMT0NLfENMT0NLfENPTE9SfENPVU5UfERVTU1ZfEVNUFRZfEVORERPfEVORE9OfEdSRUVOfElOREVYfElOT1VUfExFQVZFfExFVkVMfExJTkVTfE1PRElGfE9SREVSfE9VVEVSfFJBTkdFfFJFU0VUfFJFVFJZfFJJR0hUfFNNQVJUfFNQTElUfFNUWUxFfFRBQkxFfFRIUk9XfFVOREVSfFVOVElMfFVQUEVSfFVURi04fFdIRVJFfEFMSUFTfEJMQU5LfENMRUFSfENMT1NFfEVYQUNUfEZFVENIfEZJUlNUfEZPVU5EfEdST1VQfExMQU5HfExPQ0FMfE9USEVSfFJFR0VYfFNQT09MfFRJVExFfFRZUEVTfFZBTElEfFdISUxFfEFMUEhBfEJPWEVEfENBVENIfENIQUlOfENIRUNLfENMQVNTfENPVkVSfEVORElGfEVRVUlWfEZJRUxEfEZMT09SfEZSQU1FfElOUFVUfExPV0VSfE1BVENIfE5PREVTfFBBR0VTfFBSSU5UfFJBSVNFfFJPVU5EfFNISUZUfFNQQUNFfFNQT1RTfFNUQU1QfFNUQVRFfFRBU0tTfFRJTUVTfFRSTUFDfFVMSU5FfFVOSU9OfFZBTFVFfFdJRFRIfEVRVUFMfExPRzEwfFRSVU5DfEJMT0J8Q0FTRXxDRUlMfENMT0J8Q09ORHxFWElUfEZJTEV8R0FQU3xIT0xEfElOQ0x8SU5UT3xLRUVQfEtFWVN8TEFTVHxMSU5FfExPTkd8TFBBRHxNQUlMfE1PREV8T1BFTnxQSU5LfFJFQUR8Uk9XU3xURVNUfFRIRU58WkVST3xBUkVBfEJBQ0t8QkFESXxCWVRFfENBU1R8RURJVHxFWEVDfEZBSUx8RklORHxGS0VRfEZPTlR8RlJFRXxHS0VRfEhJREV8SU5JVHxJVE5PfExBVEV8TE9PUHxNQUlOfE1BUkt8TU9WRXxORVhUfE5VTEx8UklTS3xST0xFfFVOSVR8V0FJVHxaT05FfEJBU0V8Q0FMTHxDT0RFfERBVEF8REFURXxGS0dFfEdLR0V8SElHSHxLSU5EfExFRlR8TElTVHxNQVNLfE1FU0h8TkFNRXxOT0RFfFBBQ0t8UEFHRXxQT09MfFNFTkR8U0lHTnxTSVpFfFNPTUV8U1RPUHxUQVNLfFRFWFR8VElNRXxVU0VSfFZBUll8V0lUSHxXT1JEfEJMVUV8Q09OVnxDT1BZfERFRVB8RUxTRXxGT1JNfEZST018SElOVHxJQ09OfEpPSU58TElLRXxMT0FEfE9OTFl8UEFSVHxTQ0FOfFNLSVB8U09SVHxUWVBFfFVOSVh8VklFV3xXSEVOfFdPUkt8QUNPU3xBU0lOfEFUQU58Q09TSHxFQUNIfEZSQUN8TEVTU3xSVFRJfFNJTkh8U1FSVHxUQU5IfEFWR3xCSVR8RElWfElTT3xMRVR8T1VUfFBBRHxTUUx8QUxMfENJX3xDUEl8RU5EfExPQnxMUEl8TUFYfE1JTnxORVd8T0xFfFJVTnxTRVR8XFw/VE98WUVTfEFCU3xBRER8QU5EfEJJR3xGT1J8SERCfEpPQnxMT1d8Tk9UfFNBUHxUUll8VklBfFhNTHxBTll8R0VUfElEU3xLRVl8TU9EfE9GRnxQVVR8UkFXfFJFRHxSRUZ8U1VNfFRBQnxYU0R8Q05UfENPU3xFWFB8TE9HfFNJTnxUQU58WE9SfEFUfENPfENQfERPfEdUfElEfElGfE5TfE9SfEJUfENBfENTfEdFfE5BfE5CfEVRfElOfExUfE5FfE5PfE9GfE9OfFBGfFRPfEFTfEJZfENOfElTfExFfE5QfFVQfEV8SXxNfE98WnxDfFgpXFxiL2ksbG9va2JlaGluZDohMH0sbnVtYmVyOi9cXGJcXGQrXFxiLyxvcGVyYXRvcjp7cGF0dGVybjovKFxccykoPzpcXCpcXCo/fDxbPT5dP3w+PT98XFw/PXxbLStcXC89XSkoPz1cXHMpLyxsb29rYmVoaW5kOiEwfSxcInN0cmluZy1vcGVyYXRvclwiOntwYXR0ZXJuOi8oXFxzKSYmPyg/PVxccykvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJrZXl3b3JkXCJ9LFwidG9rZW4tb3BlcmF0b3JcIjpbe3BhdHRlcm46LyhcXHcpKD86LT4/fD0+fFt+fHt9XSkoPz1cXHcpLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwicHVuY3R1YXRpb25cIn0se3BhdHRlcm46L1t8e31dLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9XSxwdW5jdHVhdGlvbjovWywuOigpXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJhYmFwXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5hY3Rpb25zY3JpcHQ9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiamF2YXNjcmlwdFwiLHtrZXl3b3JkOi9cXGIoPzphc3xicmVha3xjYXNlfGNhdGNofGNsYXNzfGNvbnN0fGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZXh0ZW5kc3xmaW5hbGx5fGZvcnxmdW5jdGlvbnxpZnxpbXBsZW1lbnRzfGltcG9ydHxpbnxpbnN0YW5jZW9mfGludGVyZmFjZXxpbnRlcm5hbHxpc3xuYXRpdmV8bmV3fG51bGx8cGFja2FnZXxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8cmV0dXJufHN1cGVyfHN3aXRjaHx0aGlzfHRocm93fHRyeXx0eXBlb2Z8dXNlfHZhcnx2b2lkfHdoaWxlfHdpdGh8ZHluYW1pY3xlYWNofGZpbmFsfGdldHxpbmNsdWRlfG5hbWVzcGFjZXxuYXRpdmV8b3ZlcnJpZGV8c2V0fHN0YXRpYylcXGIvLG9wZXJhdG9yOi9cXCtcXCt8LS18KD86WytcXC0qXFwvJV5dfCYmP3xcXHxcXHw/fDw8P3w+Pj8+P3xbIT1dPT8pPT98W34/QF0vfSksZS5sYW5ndWFnZXMuYWN0aW9uc2NyaXB0W1wiY2xhc3MtbmFtZVwiXS5hbGlhcz1cImZ1bmN0aW9uXCIsZS5sYW5ndWFnZXMubWFya3VwJiZlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJhY3Rpb25zY3JpcHRcIixcInN0cmluZ1wiLHt4bWw6e3BhdHRlcm46LyhefFteLl0pPFxcLz9cXHcrKD86XFxzK1teXFxzPlxcLz1dKz0oXCJ8JykoPzpcXFxcW1xcc1xcU118KD8hXFwyKVteXFxcXF0pKlxcMikqXFxzKlxcLz8+Lyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy5tYXJrdXB9fX0pfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJhY3Rpb25zY3JpcHRcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmFkYT17Y29tbWVudDovLS0uKi8sc3RyaW5nOi9cIig/OlwiXCJ8W15cIlxcclxcZlxcbl0pKlwiL2ksbnVtYmVyOlt7cGF0dGVybjovXFxiXFxkKD86Xz9cXGQpKiNbXFxkQS1GXSg/Ol8/W1xcZEEtRl0pKig/OlxcLltcXGRBLUZdKD86Xz9bXFxkQS1GXSkqKT8jKD86RVsrLV0/XFxkKD86Xz9cXGQpKik/L2l9LHtwYXR0ZXJuOi9cXGJcXGQoPzpfP1xcZCkqKD86XFwuXFxkKD86Xz9cXGQpKik/KD86RVsrLV0/XFxkKD86Xz9cXGQpKik/XFxiL2l9XSxcImF0dHItbmFtZVwiOi9cXGInXFx3Ky9pLGtleXdvcmQ6L1xcYig/OmFib3J0fGFic3xhYnN0cmFjdHxhY2NlcHR8YWNjZXNzfGFsaWFzZWR8YWxsfGFuZHxhcnJheXxhdHxiZWdpbnxib2R5fGNhc2V8Y29uc3RhbnR8ZGVjbGFyZXxkZWxheXxkZWx0YXxkaWdpdHN8ZG98ZWxzZXxuZXd8cmV0dXJufGVsc2lmfGVuZHxlbnRyeXxleGNlcHRpb258ZXhpdHxmb3J8ZnVuY3Rpb258Z2VuZXJpY3xnb3RvfGlmfGlufGludGVyZmFjZXxpc3xsaW1pdGVkfGxvb3B8bW9kfG5vdHxudWxsfG9mfG90aGVyc3xvdXR8b3ZlcnJpZGluZ3xwYWNrYWdlfHByYWdtYXxwcml2YXRlfHByb2NlZHVyZXxwcm90ZWN0ZWR8cmFpc2V8cmFuZ2V8cmVjb3JkfHJlbXxyZW5hbWVzfHJlcXVldWV8cmV2ZXJzZXxzZWxlY3R8c2VwYXJhdGV8c29tZXxzdWJ0eXBlfHN5bmNocm9uaXplZHx0YWdnZWR8dGFza3x0ZXJtaW5hdGV8dGhlbnx0eXBlfHVudGlsfHVzZXx3aGVufHdoaWxlfHdpdGh8eG9yKVxcYi9pLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2UpXFxiL2ksb3BlcmF0b3I6LzxbPT5dP3w+PT98PT4/fDo9fFxcLz0/fFxcKlxcKj98WyYrLV0vLHB1bmN0dWF0aW9uOi9cXC5cXC4/fFssOygpOl0vLGNoYXI6LycuJy8sdmFyaWFibGU6L1xcYlthLXpdKD86W19hLXpcXGRdKSpcXGIvaX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImFkYVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuYXBhY2hlY29uZj17Y29tbWVudDovIy4qLyxcImRpcmVjdGl2ZS1pbmxpbmVcIjp7cGF0dGVybjovXihcXHMqKVxcYig/OkFjY2VwdEZpbHRlcnxBY2NlcHRQYXRoSW5mb3xBY2Nlc3NGaWxlTmFtZXxBY3Rpb258QWRkQWx0fEFkZEFsdEJ5RW5jb2Rpbmd8QWRkQWx0QnlUeXBlfEFkZENoYXJzZXR8QWRkRGVmYXVsdENoYXJzZXR8QWRkRGVzY3JpcHRpb258QWRkRW5jb2Rpbmd8QWRkSGFuZGxlcnxBZGRJY29ufEFkZEljb25CeUVuY29kaW5nfEFkZEljb25CeVR5cGV8QWRkSW5wdXRGaWx0ZXJ8QWRkTGFuZ3VhZ2V8QWRkTW9kdWxlSW5mb3xBZGRPdXRwdXRGaWx0ZXJ8QWRkT3V0cHV0RmlsdGVyQnlUeXBlfEFkZFR5cGV8QWxpYXN8QWxpYXNNYXRjaHxBbGxvd3xBbGxvd0NPTk5FQ1R8QWxsb3dFbmNvZGVkU2xhc2hlc3xBbGxvd01ldGhvZHN8QWxsb3dPdmVycmlkZXxBbGxvd092ZXJyaWRlTGlzdHxBbm9ueW1vdXN8QW5vbnltb3VzX0xvZ0VtYWlsfEFub255bW91c19NdXN0R2l2ZUVtYWlsfEFub255bW91c19Ob1VzZXJJRHxBbm9ueW1vdXNfVmVyaWZ5RW1haWx8QXN5bmNSZXF1ZXN0V29ya2VyRmFjdG9yfEF1dGhCYXNpY0F1dGhvcml0YXRpdmV8QXV0aEJhc2ljRmFrZXxBdXRoQmFzaWNQcm92aWRlcnxBdXRoQmFzaWNVc2VEaWdlc3RBbGdvcml0aG18QXV0aERCRFVzZXJQV1F1ZXJ5fEF1dGhEQkRVc2VyUmVhbG1RdWVyeXxBdXRoREJNR3JvdXBGaWxlfEF1dGhEQk1UeXBlfEF1dGhEQk1Vc2VyRmlsZXxBdXRoRGlnZXN0QWxnb3JpdGhtfEF1dGhEaWdlc3REb21haW58QXV0aERpZ2VzdE5vbmNlTGlmZXRpbWV8QXV0aERpZ2VzdFByb3ZpZGVyfEF1dGhEaWdlc3RRb3B8QXV0aERpZ2VzdFNobWVtU2l6ZXxBdXRoRm9ybUF1dGhvcml0YXRpdmV8QXV0aEZvcm1Cb2R5fEF1dGhGb3JtRGlzYWJsZU5vU3RvcmV8QXV0aEZvcm1GYWtlQmFzaWNBdXRofEF1dGhGb3JtTG9jYXRpb258QXV0aEZvcm1Mb2dpblJlcXVpcmVkTG9jYXRpb258QXV0aEZvcm1Mb2dpblN1Y2Nlc3NMb2NhdGlvbnxBdXRoRm9ybUxvZ291dExvY2F0aW9ufEF1dGhGb3JtTWV0aG9kfEF1dGhGb3JtTWltZXR5cGV8QXV0aEZvcm1QYXNzd29yZHxBdXRoRm9ybVByb3ZpZGVyfEF1dGhGb3JtU2l0ZVBhc3NwaHJhc2V8QXV0aEZvcm1TaXplfEF1dGhGb3JtVXNlcm5hbWV8QXV0aEdyb3VwRmlsZXxBdXRoTERBUEF1dGhvcml6ZVByZWZpeHxBdXRoTERBUEJpbmRBdXRob3JpdGF0aXZlfEF1dGhMREFQQmluZEROfEF1dGhMREFQQmluZFBhc3N3b3JkfEF1dGhMREFQQ2hhcnNldENvbmZpZ3xBdXRoTERBUENvbXBhcmVBc1VzZXJ8QXV0aExEQVBDb21wYXJlRE5PblNlcnZlcnxBdXRoTERBUERlcmVmZXJlbmNlQWxpYXNlc3xBdXRoTERBUEdyb3VwQXR0cmlidXRlfEF1dGhMREFQR3JvdXBBdHRyaWJ1dGVJc0ROfEF1dGhMREFQSW5pdGlhbEJpbmRBc1VzZXJ8QXV0aExEQVBJbml0aWFsQmluZFBhdHRlcm58QXV0aExEQVBNYXhTdWJHcm91cERlcHRofEF1dGhMREFQUmVtb3RlVXNlckF0dHJpYnV0ZXxBdXRoTERBUFJlbW90ZVVzZXJJc0ROfEF1dGhMREFQU2VhcmNoQXNVc2VyfEF1dGhMREFQU3ViR3JvdXBBdHRyaWJ1dGV8QXV0aExEQVBTdWJHcm91cENsYXNzfEF1dGhMREFQVXJsfEF1dGhNZXJnaW5nfEF1dGhOYW1lfEF1dGhuQ2FjaGVDb250ZXh0fEF1dGhuQ2FjaGVFbmFibGV8QXV0aG5DYWNoZVByb3ZpZGVGb3J8QXV0aG5DYWNoZVNPQ2FjaGV8QXV0aG5DYWNoZVRpbWVvdXR8QXV0aG56RmNnaUNoZWNrQXV0aG5Qcm92aWRlcnxBdXRobnpGY2dpRGVmaW5lUHJvdmlkZXJ8QXV0aFR5cGV8QXV0aFVzZXJGaWxlfEF1dGh6REJETG9naW5Ub1JlZmVyZXJ8QXV0aHpEQkRRdWVyeXxBdXRoekRCRFJlZGlyZWN0UXVlcnl8QXV0aHpEQk1UeXBlfEF1dGh6U2VuZEZvcmJpZGRlbk9uRmFpbHVyZXxCYWxhbmNlckdyb3d0aHxCYWxhbmNlckluaGVyaXR8QmFsYW5jZXJNZW1iZXJ8QmFsYW5jZXJQZXJzaXN0fEJyb3dzZXJNYXRjaHxCcm93c2VyTWF0Y2hOb0Nhc2V8QnVmZmVyZWRMb2dzfEJ1ZmZlclNpemV8Q2FjaGVEZWZhdWx0RXhwaXJlfENhY2hlRGV0YWlsSGVhZGVyfENhY2hlRGlyTGVuZ3RofENhY2hlRGlyTGV2ZWxzfENhY2hlRGlzYWJsZXxDYWNoZUVuYWJsZXxDYWNoZUZpbGV8Q2FjaGVIZWFkZXJ8Q2FjaGVJZ25vcmVDYWNoZUNvbnRyb2x8Q2FjaGVJZ25vcmVIZWFkZXJzfENhY2hlSWdub3JlTm9MYXN0TW9kfENhY2hlSWdub3JlUXVlcnlTdHJpbmd8Q2FjaGVJZ25vcmVVUkxTZXNzaW9uSWRlbnRpZmllcnN8Q2FjaGVLZXlCYXNlVVJMfENhY2hlTGFzdE1vZGlmaWVkRmFjdG9yfENhY2hlTG9ja3xDYWNoZUxvY2tNYXhBZ2V8Q2FjaGVMb2NrUGF0aHxDYWNoZU1heEV4cGlyZXxDYWNoZU1heEZpbGVTaXplfENhY2hlTWluRXhwaXJlfENhY2hlTWluRmlsZVNpemV8Q2FjaGVOZWdvdGlhdGVkRG9jc3xDYWNoZVF1aWNrSGFuZGxlcnxDYWNoZVJlYWRTaXplfENhY2hlUmVhZFRpbWV8Q2FjaGVSb290fENhY2hlU29jYWNoZXxDYWNoZVNvY2FjaGVNYXhTaXplfENhY2hlU29jYWNoZU1heFRpbWV8Q2FjaGVTb2NhY2hlTWluVGltZXxDYWNoZVNvY2FjaGVSZWFkU2l6ZXxDYWNoZVNvY2FjaGVSZWFkVGltZXxDYWNoZVN0YWxlT25FcnJvcnxDYWNoZVN0b3JlRXhwaXJlZHxDYWNoZVN0b3JlTm9TdG9yZXxDYWNoZVN0b3JlUHJpdmF0ZXxDR0lEU2NyaXB0VGltZW91dHxDR0lNYXBFeHRlbnNpb258Q2hhcnNldERlZmF1bHR8Q2hhcnNldE9wdGlvbnN8Q2hhcnNldFNvdXJjZUVuY3xDaGVja0Nhc2VPbmx5fENoZWNrU3BlbGxpbmd8Q2hyb290RGlyfENvbnRlbnREaWdlc3R8Q29va2llRG9tYWlufENvb2tpZUV4cGlyZXN8Q29va2llTmFtZXxDb29raWVTdHlsZXxDb29raWVUcmFja2luZ3xDb3JlRHVtcERpcmVjdG9yeXxDdXN0b21Mb2d8RGF2fERhdkRlcHRoSW5maW5pdHl8RGF2R2VuZXJpY0xvY2tEQnxEYXZMb2NrREJ8RGF2TWluVGltZW91dHxEQkRFeHB0aW1lfERCREluaXRTUUx8REJES2VlcHxEQkRNYXh8REJETWlufERCRFBhcmFtc3xEQkRQZXJzaXN0fERCRFByZXBhcmVTUUx8REJEcml2ZXJ8RGVmYXVsdEljb258RGVmYXVsdExhbmd1YWdlfERlZmF1bHRSdW50aW1lRGlyfERlZmF1bHRUeXBlfERlZmluZXxEZWZsYXRlQnVmZmVyU2l6ZXxEZWZsYXRlQ29tcHJlc3Npb25MZXZlbHxEZWZsYXRlRmlsdGVyTm90ZXxEZWZsYXRlSW5mbGF0ZUxpbWl0UmVxdWVzdEJvZHl8RGVmbGF0ZUluZmxhdGVSYXRpb0J1cnN0fERlZmxhdGVJbmZsYXRlUmF0aW9MaW1pdHxEZWZsYXRlTWVtTGV2ZWx8RGVmbGF0ZVdpbmRvd1NpemV8RGVueXxEaXJlY3RvcnlDaGVja0hhbmRsZXJ8RGlyZWN0b3J5SW5kZXh8RGlyZWN0b3J5SW5kZXhSZWRpcmVjdHxEaXJlY3RvcnlTbGFzaHxEb2N1bWVudFJvb3R8RFRyYWNlUHJpdmlsZWdlc3xEdW1wSU9JbnB1dHxEdW1wSU9PdXRwdXR8RW5hYmxlRXhjZXB0aW9uSG9va3xFbmFibGVNTUFQfEVuYWJsZVNlbmRmaWxlfEVycm9yfEVycm9yRG9jdW1lbnR8RXJyb3JMb2d8RXJyb3JMb2dGb3JtYXR8RXhhbXBsZXxFeHBpcmVzQWN0aXZlfEV4cGlyZXNCeVR5cGV8RXhwaXJlc0RlZmF1bHR8RXh0ZW5kZWRTdGF0dXN8RXh0RmlsdGVyRGVmaW5lfEV4dEZpbHRlck9wdGlvbnN8RmFsbGJhY2tSZXNvdXJjZXxGaWxlRVRhZ3xGaWx0ZXJDaGFpbnxGaWx0ZXJEZWNsYXJlfEZpbHRlclByb3RvY29sfEZpbHRlclByb3ZpZGVyfEZpbHRlclRyYWNlfEZvcmNlTGFuZ3VhZ2VQcmlvcml0eXxGb3JjZVR5cGV8Rm9yZW5zaWNMb2d8R3Byb2ZEaXJ8R3JhY2VmdWxTaHV0ZG93blRpbWVvdXR8R3JvdXB8SGVhZGVyfEhlYWRlck5hbWV8SGVhcnRiZWF0QWRkcmVzc3xIZWFydGJlYXRMaXN0ZW58SGVhcnRiZWF0TWF4U2VydmVyc3xIZWFydGJlYXRTdG9yYWdlfEhlYXJ0YmVhdFN0b3JhZ2V8SG9zdG5hbWVMb29rdXBzfElkZW50aXR5Q2hlY2t8SWRlbnRpdHlDaGVja1RpbWVvdXR8SW1hcEJhc2V8SW1hcERlZmF1bHR8SW1hcE1lbnV8SW5jbHVkZXxJbmNsdWRlT3B0aW9uYWx8SW5kZXhIZWFkSW5zZXJ0fEluZGV4SWdub3JlfEluZGV4SWdub3JlUmVzZXR8SW5kZXhPcHRpb25zfEluZGV4T3JkZXJEZWZhdWx0fEluZGV4U3R5bGVTaGVldHxJbnB1dFNlZHxJU0FQSUFwcGVuZExvZ1RvRXJyb3JzfElTQVBJQXBwZW5kTG9nVG9RdWVyeXxJU0FQSUNhY2hlRmlsZXxJU0FQSUZha2VBc3luY3xJU0FQSUxvZ05vdFN1cHBvcnRlZHxJU0FQSVJlYWRBaGVhZEJ1ZmZlcnxLZWVwQWxpdmV8S2VlcEFsaXZlVGltZW91dHxLZXB0Qm9keVNpemV8TGFuZ3VhZ2VQcmlvcml0eXxMREFQQ2FjaGVFbnRyaWVzfExEQVBDYWNoZVRUTHxMREFQQ29ubmVjdGlvblBvb2xUVEx8TERBUENvbm5lY3Rpb25UaW1lb3V0fExEQVBMaWJyYXJ5RGVidWd8TERBUE9wQ2FjaGVFbnRyaWVzfExEQVBPcENhY2hlVFRMfExEQVBSZWZlcnJhbEhvcExpbWl0fExEQVBSZWZlcnJhbHN8TERBUFJldHJpZXN8TERBUFJldHJ5RGVsYXl8TERBUFNoYXJlZENhY2hlRmlsZXxMREFQU2hhcmVkQ2FjaGVTaXplfExEQVBUaW1lb3V0fExEQVBUcnVzdGVkQ2xpZW50Q2VydHxMREFQVHJ1c3RlZEdsb2JhbENlcnR8TERBUFRydXN0ZWRNb2RlfExEQVBWZXJpZnlTZXJ2ZXJDZXJ0fExpbWl0SW50ZXJuYWxSZWN1cnNpb258TGltaXRSZXF1ZXN0Qm9keXxMaW1pdFJlcXVlc3RGaWVsZHN8TGltaXRSZXF1ZXN0RmllbGRTaXplfExpbWl0UmVxdWVzdExpbmV8TGltaXRYTUxSZXF1ZXN0Qm9keXxMaXN0ZW58TGlzdGVuQmFja0xvZ3xMb2FkRmlsZXxMb2FkTW9kdWxlfExvZ0Zvcm1hdHxMb2dMZXZlbHxMb2dNZXNzYWdlfEx1YUF1dGh6UHJvdmlkZXJ8THVhQ29kZUNhY2hlfEx1YUhvb2tBY2Nlc3NDaGVja2VyfEx1YUhvb2tBdXRoQ2hlY2tlcnxMdWFIb29rQ2hlY2tVc2VySUR8THVhSG9va0ZpeHVwc3xMdWFIb29rSW5zZXJ0RmlsdGVyfEx1YUhvb2tMb2d8THVhSG9va01hcFRvU3RvcmFnZXxMdWFIb29rVHJhbnNsYXRlTmFtZXxMdWFIb29rVHlwZUNoZWNrZXJ8THVhSW5oZXJpdHxMdWFJbnB1dEZpbHRlcnxMdWFNYXBIYW5kbGVyfEx1YU91dHB1dEZpbHRlcnxMdWFQYWNrYWdlQ1BhdGh8THVhUGFja2FnZVBhdGh8THVhUXVpY2tIYW5kbGVyfEx1YVJvb3R8THVhU2NvcGV8TWF4Q29ubmVjdGlvbnNQZXJDaGlsZHxNYXhLZWVwQWxpdmVSZXF1ZXN0c3xNYXhNZW1GcmVlfE1heFJhbmdlT3ZlcmxhcHN8TWF4UmFuZ2VSZXZlcnNhbHN8TWF4UmFuZ2VzfE1heFJlcXVlc3RXb3JrZXJzfE1heFNwYXJlU2VydmVyc3xNYXhTcGFyZVRocmVhZHN8TWF4VGhyZWFkc3xNZXJnZVRyYWlsZXJzfE1ldGFEaXJ8TWV0YUZpbGVzfE1ldGFTdWZmaXh8TWltZU1hZ2ljRmlsZXxNaW5TcGFyZVNlcnZlcnN8TWluU3BhcmVUaHJlYWRzfE1NYXBGaWxlfE1vZGVtU3RhbmRhcmR8TW9kTWltZVVzZVBhdGhJbmZvfE11bHRpdmlld3NNYXRjaHxNdXRleHxOYW1lVmlydHVhbEhvc3R8Tm9Qcm94eXxOV1NTTFRydXN0ZWRDZXJ0c3xOV1NTTFVwZ3JhZGVhYmxlfE9wdGlvbnN8T3JkZXJ8T3V0cHV0U2VkfFBhc3NFbnZ8UGlkRmlsZXxQcml2aWxlZ2VzTW9kZXxQcm90b2NvbHxQcm90b2NvbEVjaG98UHJveHlBZGRIZWFkZXJzfFByb3h5QmFkSGVhZGVyfFByb3h5QmxvY2t8UHJveHlEb21haW58UHJveHlFcnJvck92ZXJyaWRlfFByb3h5RXhwcmVzc0RCTUZpbGV8UHJveHlFeHByZXNzREJNVHlwZXxQcm94eUV4cHJlc3NFbmFibGV8UHJveHlGdHBEaXJDaGFyc2V0fFByb3h5RnRwRXNjYXBlV2lsZGNhcmRzfFByb3h5RnRwTGlzdE9uV2lsZGNhcmR8UHJveHlIVE1MQnVmU2l6ZXxQcm94eUhUTUxDaGFyc2V0T3V0fFByb3h5SFRNTERvY1R5cGV8UHJveHlIVE1MRW5hYmxlfFByb3h5SFRNTEV2ZW50c3xQcm94eUhUTUxFeHRlbmRlZHxQcm94eUhUTUxGaXh1cHN8UHJveHlIVE1MSW50ZXJwfFByb3h5SFRNTExpbmtzfFByb3h5SFRNTE1ldGF8UHJveHlIVE1MU3RyaXBDb21tZW50c3xQcm94eUhUTUxVUkxNYXB8UHJveHlJT0J1ZmZlclNpemV8UHJveHlNYXhGb3J3YXJkc3xQcm94eVBhc3N8UHJveHlQYXNzSW5oZXJpdHxQcm94eVBhc3NJbnRlcnBvbGF0ZUVudnxQcm94eVBhc3NNYXRjaHxQcm94eVBhc3NSZXZlcnNlfFByb3h5UGFzc1JldmVyc2VDb29raWVEb21haW58UHJveHlQYXNzUmV2ZXJzZUNvb2tpZVBhdGh8UHJveHlQcmVzZXJ2ZUhvc3R8UHJveHlSZWNlaXZlQnVmZmVyU2l6ZXxQcm94eVJlbW90ZXxQcm94eVJlbW90ZU1hdGNofFByb3h5UmVxdWVzdHN8UHJveHlTQ0dJSW50ZXJuYWxSZWRpcmVjdHxQcm94eVNDR0lTZW5kZmlsZXxQcm94eVNldHxQcm94eVNvdXJjZUFkZHJlc3N8UHJveHlTdGF0dXN8UHJveHlUaW1lb3V0fFByb3h5VmlhfFJlYWRtZU5hbWV8UmVjZWl2ZUJ1ZmZlclNpemV8UmVkaXJlY3R8UmVkaXJlY3RNYXRjaHxSZWRpcmVjdFBlcm1hbmVudHxSZWRpcmVjdFRlbXB8UmVmbGVjdG9ySGVhZGVyfFJlbW90ZUlQSGVhZGVyfFJlbW90ZUlQSW50ZXJuYWxQcm94eXxSZW1vdGVJUEludGVybmFsUHJveHlMaXN0fFJlbW90ZUlQUHJveGllc0hlYWRlcnxSZW1vdGVJUFRydXN0ZWRQcm94eXxSZW1vdGVJUFRydXN0ZWRQcm94eUxpc3R8UmVtb3ZlQ2hhcnNldHxSZW1vdmVFbmNvZGluZ3xSZW1vdmVIYW5kbGVyfFJlbW92ZUlucHV0RmlsdGVyfFJlbW92ZUxhbmd1YWdlfFJlbW92ZU91dHB1dEZpbHRlcnxSZW1vdmVUeXBlfFJlcXVlc3RIZWFkZXJ8UmVxdWVzdFJlYWRUaW1lb3V0fFJlcXVpcmV8UmV3cml0ZUJhc2V8UmV3cml0ZUNvbmR8UmV3cml0ZUVuZ2luZXxSZXdyaXRlTWFwfFJld3JpdGVPcHRpb25zfFJld3JpdGVSdWxlfFJMaW1pdENQVXxSTGltaXRNRU18UkxpbWl0TlBST0N8U2F0aXNmeXxTY29yZUJvYXJkRmlsZXxTY3JpcHR8U2NyaXB0QWxpYXN8U2NyaXB0QWxpYXNNYXRjaHxTY3JpcHRJbnRlcnByZXRlclNvdXJjZXxTY3JpcHRMb2d8U2NyaXB0TG9nQnVmZmVyfFNjcmlwdExvZ0xlbmd0aHxTY3JpcHRTb2NrfFNlY3VyZUxpc3RlbnxTZWVSZXF1ZXN0VGFpbHxTZW5kQnVmZmVyU2l6ZXxTZXJ2ZXJBZG1pbnxTZXJ2ZXJBbGlhc3xTZXJ2ZXJMaW1pdHxTZXJ2ZXJOYW1lfFNlcnZlclBhdGh8U2VydmVyUm9vdHxTZXJ2ZXJTaWduYXR1cmV8U2VydmVyVG9rZW5zfFNlc3Npb258U2Vzc2lvbkNvb2tpZU5hbWV8U2Vzc2lvbkNvb2tpZU5hbWUyfFNlc3Npb25Db29raWVSZW1vdmV8U2Vzc2lvbkNyeXB0b0NpcGhlcnxTZXNzaW9uQ3J5cHRvRHJpdmVyfFNlc3Npb25DcnlwdG9QYXNzcGhyYXNlfFNlc3Npb25DcnlwdG9QYXNzcGhyYXNlRmlsZXxTZXNzaW9uREJEQ29va2llTmFtZXxTZXNzaW9uREJEQ29va2llTmFtZTJ8U2Vzc2lvbkRCRENvb2tpZVJlbW92ZXxTZXNzaW9uREJERGVsZXRlTGFiZWx8U2Vzc2lvbkRCREluc2VydExhYmVsfFNlc3Npb25EQkRQZXJVc2VyfFNlc3Npb25EQkRTZWxlY3RMYWJlbHxTZXNzaW9uREJEVXBkYXRlTGFiZWx8U2Vzc2lvbkVudnxTZXNzaW9uRXhjbHVkZXxTZXNzaW9uSGVhZGVyfFNlc3Npb25JbmNsdWRlfFNlc3Npb25NYXhBZ2V8U2V0RW52fFNldEVudklmfFNldEVudklmRXhwcnxTZXRFbnZJZk5vQ2FzZXxTZXRIYW5kbGVyfFNldElucHV0RmlsdGVyfFNldE91dHB1dEZpbHRlcnxTU0lFbmRUYWd8U1NJRXJyb3JNc2d8U1NJRVRhZ3xTU0lMYXN0TW9kaWZpZWR8U1NJTGVnYWN5RXhwclBhcnNlcnxTU0lTdGFydFRhZ3xTU0lUaW1lRm9ybWF0fFNTSVVuZGVmaW5lZEVjaG98U1NMQ0FDZXJ0aWZpY2F0ZUZpbGV8U1NMQ0FDZXJ0aWZpY2F0ZVBhdGh8U1NMQ0FETlJlcXVlc3RGaWxlfFNTTENBRE5SZXF1ZXN0UGF0aHxTU0xDQVJldm9jYXRpb25DaGVja3xTU0xDQVJldm9jYXRpb25GaWxlfFNTTENBUmV2b2NhdGlvblBhdGh8U1NMQ2VydGlmaWNhdGVDaGFpbkZpbGV8U1NMQ2VydGlmaWNhdGVGaWxlfFNTTENlcnRpZmljYXRlS2V5RmlsZXxTU0xDaXBoZXJTdWl0ZXxTU0xDb21wcmVzc2lvbnxTU0xDcnlwdG9EZXZpY2V8U1NMRW5naW5lfFNTTEZJUFN8U1NMSG9ub3JDaXBoZXJPcmRlcnxTU0xJbnNlY3VyZVJlbmVnb3RpYXRpb258U1NMT0NTUERlZmF1bHRSZXNwb25kZXJ8U1NMT0NTUEVuYWJsZXxTU0xPQ1NQT3ZlcnJpZGVSZXNwb25kZXJ8U1NMT0NTUFJlc3BvbmRlclRpbWVvdXR8U1NMT0NTUFJlc3BvbnNlTWF4QWdlfFNTTE9DU1BSZXNwb25zZVRpbWVTa2V3fFNTTE9DU1BVc2VSZXF1ZXN0Tm9uY2V8U1NMT3BlblNTTENvbmZDbWR8U1NMT3B0aW9uc3xTU0xQYXNzUGhyYXNlRGlhbG9nfFNTTFByb3RvY29sfFNTTFByb3h5Q0FDZXJ0aWZpY2F0ZUZpbGV8U1NMUHJveHlDQUNlcnRpZmljYXRlUGF0aHxTU0xQcm94eUNBUmV2b2NhdGlvbkNoZWNrfFNTTFByb3h5Q0FSZXZvY2F0aW9uRmlsZXxTU0xQcm94eUNBUmV2b2NhdGlvblBhdGh8U1NMUHJveHlDaGVja1BlZXJDTnxTU0xQcm94eUNoZWNrUGVlckV4cGlyZXxTU0xQcm94eUNoZWNrUGVlck5hbWV8U1NMUHJveHlDaXBoZXJTdWl0ZXxTU0xQcm94eUVuZ2luZXxTU0xQcm94eU1hY2hpbmVDZXJ0aWZpY2F0ZUNoYWluRmlsZXxTU0xQcm94eU1hY2hpbmVDZXJ0aWZpY2F0ZUZpbGV8U1NMUHJveHlNYWNoaW5lQ2VydGlmaWNhdGVQYXRofFNTTFByb3h5UHJvdG9jb2x8U1NMUHJveHlWZXJpZnl8U1NMUHJveHlWZXJpZnlEZXB0aHxTU0xSYW5kb21TZWVkfFNTTFJlbmVnQnVmZmVyU2l6ZXxTU0xSZXF1aXJlfFNTTFJlcXVpcmVTU0x8U1NMU2Vzc2lvbkNhY2hlfFNTTFNlc3Npb25DYWNoZVRpbWVvdXR8U1NMU2Vzc2lvblRpY2tldEtleUZpbGV8U1NMU1JQVW5rbm93blVzZXJTZWVkfFNTTFNSUFZlcmlmaWVyRmlsZXxTU0xTdGFwbGluZ0NhY2hlfFNTTFN0YXBsaW5nRXJyb3JDYWNoZVRpbWVvdXR8U1NMU3RhcGxpbmdGYWtlVHJ5TGF0ZXJ8U1NMU3RhcGxpbmdGb3JjZVVSTHxTU0xTdGFwbGluZ1Jlc3BvbmRlclRpbWVvdXR8U1NMU3RhcGxpbmdSZXNwb25zZU1heEFnZXxTU0xTdGFwbGluZ1Jlc3BvbnNlVGltZVNrZXd8U1NMU3RhcGxpbmdSZXR1cm5SZXNwb25kZXJFcnJvcnN8U1NMU3RhcGxpbmdTdGFuZGFyZENhY2hlVGltZW91dHxTU0xTdHJpY3RTTklWSG9zdENoZWNrfFNTTFVzZXJOYW1lfFNTTFVzZVN0YXBsaW5nfFNTTFZlcmlmeUNsaWVudHxTU0xWZXJpZnlEZXB0aHxTdGFydFNlcnZlcnN8U3RhcnRUaHJlYWRzfFN1YnN0aXR1dGV8U3VleGVjfFN1ZXhlY1VzZXJHcm91cHxUaHJlYWRMaW1pdHxUaHJlYWRzUGVyQ2hpbGR8VGhyZWFkU3RhY2tTaXplfFRpbWVPdXR8VHJhY2VFbmFibGV8VHJhbnNmZXJMb2d8VHlwZXNDb25maWd8VW5EZWZpbmV8VW5kZWZNYWNyb3xVbnNldEVudnxVc2V8VXNlQ2Fub25pY2FsTmFtZXxVc2VDYW5vbmljYWxQaHlzaWNhbFBvcnR8VXNlcnxVc2VyRGlyfFZIb3N0Q0dJTW9kZXxWSG9zdENHSVByaXZzfFZIb3N0R3JvdXB8Vkhvc3RQcml2c3xWSG9zdFNlY3VyZXxWSG9zdFVzZXJ8VmlydHVhbERvY3VtZW50Um9vdHxWaXJ0dWFsRG9jdW1lbnRSb290SVB8VmlydHVhbFNjcmlwdEFsaWFzfFZpcnR1YWxTY3JpcHRBbGlhc0lQfFdhdGNoZG9nSW50ZXJ2YWx8WEJpdEhhY2t8eG1sMkVuY0FsaWFzfHhtbDJFbmNEZWZhdWx0fHhtbDJTdGFydFBhcnNlKVxcYi9pbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwicHJvcGVydHlcIn0sXCJkaXJlY3RpdmUtYmxvY2tcIjp7cGF0dGVybjovPFxcLz9cXGIoPzpBdXRoblByb3ZpZGVyQWxpYXN8QXV0aHpQcm92aWRlckFsaWFzfERpcmVjdG9yeXxEaXJlY3RvcnlNYXRjaHxFbHNlfEVsc2VJZnxGaWxlc3xGaWxlc01hdGNofElmfElmRGVmaW5lfElmTW9kdWxlfElmVmVyc2lvbnxMaW1pdHxMaW1pdEV4Y2VwdHxMb2NhdGlvbnxMb2NhdGlvbk1hdGNofE1hY3JvfFByb3h5fFJlcXVpcmVBbGx8UmVxdWlyZUFueXxSZXF1aXJlTm9uZXxWaXJ0dWFsSG9zdClcXGIgKi4qPi9pLGluc2lkZTp7XCJkaXJlY3RpdmUtYmxvY2tcIjp7cGF0dGVybjovXjxcXC8/XFx3Ky8saW5zaWRlOntwdW5jdHVhdGlvbjovXjxcXC8/L30sYWxpYXM6XCJ0YWdcIn0sXCJkaXJlY3RpdmUtYmxvY2stcGFyYW1ldGVyXCI6e3BhdHRlcm46Ly4qW14+XS8saW5zaWRlOntwdW5jdHVhdGlvbjovOi8sc3RyaW5nOntwYXR0ZXJuOi8oXCJ8JykuKlxcMS8saW5zaWRlOnt2YXJpYWJsZTovWyQlXVxcez8oPzpcXHdcXC4/Wy0rOl0/KStcXH0/L319fSxhbGlhczpcImF0dHItdmFsdWVcIn0scHVuY3R1YXRpb246Lz4vfSxhbGlhczpcInRhZ1wifSxcImRpcmVjdGl2ZS1mbGFnc1wiOntwYXR0ZXJuOi9cXFsoPzpcXHcsPykrXFxdLyxhbGlhczpcImtleXdvcmRcIn0sc3RyaW5nOntwYXR0ZXJuOi8oXCJ8JykuKlxcMS8saW5zaWRlOnt2YXJpYWJsZTovWyQlXVxcez8oPzpcXHdcXC4/Wy0rOl0/KStcXH0/L319LHZhcmlhYmxlOi9bJCVdXFx7Pyg/Olxcd1xcLj9bLSs6XT8pK1xcfT8vLHJlZ2V4Oi9cXF4/LipcXCR8XFxeLipcXCQ/L319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImFwYWNoZWNvbmZcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmFwbD17Y29tbWVudDovKD864o2dfCNbISBdKS4qJC9tLHN0cmluZzp7cGF0dGVybjovJyg/OlteJ1xcclxcbl18JycpKicvLGdyZWVkeTohMH0sbnVtYmVyOi/Crz8oPzpcXGQqXFwuP1xcZCsoPzplWyvCr10/XFxkKyk/fMKvfOKInikoPzpqwq8/KD86XFxkKlxcLj9cXGQrKD86ZVsrwq9dP1xcZCspP3zCr3ziiJ4pKT8vaSxzdGF0ZW1lbnQ6LzpbQS1aXVthLXpdW0EtWmEtel0qXFxiLyxcInN5c3RlbS1mdW5jdGlvblwiOntwYXR0ZXJuOi/ijpVbQS1aXSsvaSxhbGlhczpcImZ1bmN0aW9uXCJ9LGNvbnN0YW50Oi9b4o2s4oy+I+KOleKNnl0vLGZ1bmN0aW9uOi9bLSvDl8O34oyI4oyK4oijfOKNs+KNuD8q4o2f4peLIeKMuTziiaQ9PuKJpeKJoOKJoeKJouKIiuKNt+KIquKIqX7iiKjiiKfijbHijbLijbQs4o2q4oy94oqW4o2J4oaR4oaT4oqC4oqD4oqG4oqH4oy34o2L4o2S4oqk4oql4o2V4o2O4oqj4oqi4o2B4o2C4omI4o2v4oaXwqTihpJdLyxcIm1vbmFkaWMtb3BlcmF0b3JcIjp7cGF0dGVybjovW1xcXFxcXC/ijL/ijYDCqOKNqOKMtibiiKVdLyxhbGlhczpcIm9wZXJhdG9yXCJ9LFwiZHlhZGljLW9wZXJhdG9yXCI6e3BhdHRlcm46L1su4o2j4o2g4o2k4oiY4oy4QOKMul0vLGFsaWFzOlwib3BlcmF0b3JcIn0sYXNzaWdubWVudDp7cGF0dGVybjov4oaQLyxhbGlhczpcImtleXdvcmRcIn0scHVuY3R1YXRpb246L1tcXFs7XFxdKCnil4fii4RdLyxkZm46e3BhdHRlcm46L1t7feKNuuKNteKNtuKNueKIh+KNqzpdLyxhbGlhczpcImJ1aWx0aW5cIn19fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJhcGxcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmFwcGxlc2NyaXB0PXtjb21tZW50OlsvXFwoXFwqKD86XFwoXFwqW1xcc1xcU10qP1xcKlxcKXxbXFxzXFxTXSkqP1xcKlxcKS8sLy0tLisvLC8jLisvXSxzdHJpbmc6L1wiKD86XFxcXC58W15cIlxcXFxcXHJcXG5dKSpcIi8sbnVtYmVyOi8oPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzplLT9cXGQrKT9cXGIvaSxvcGVyYXRvcjpbL1smPeKJoOKJpOKJpSorXFwtXFwvw7deXXxbPD5dPT8vLC9cXGIoPzooPzpzdGFydHxiZWdpbnxlbmQpcz8gd2l0aHwoPzooPzpkb2VzIG5vdHxkb2Vzbid0KSBjb250YWlufGNvbnRhaW5zPyl8KD86aXN8aXNuJ3R8aXMgbm90KSAoPzppbnxjb250YWluZWQgYnkpfCg/Oig/OmlzfGlzbid0fGlzIG5vdCkgKT8oPzpncmVhdGVyfGxlc3MpIHRoYW4oPzogb3IgZXF1YWwpPyg/OiB0byk/fCg/Oig/OmRvZXMgbm90fGRvZXNuJ3QpIGNvbWV8Y29tZXMpICg/OmJlZm9yZXxhZnRlcil8KD86aXN8aXNuJ3R8aXMgbm90KSBlcXVhbCg/OiB0byk/fCg/Oig/OmRvZXMgbm90fGRvZXNuJ3QpIGVxdWFsfGVxdWFsc3xlcXVhbCB0b3xpc24ndHxpcyBub3QpfCg/OmEgKT8oPzpyZWYoPzogdG8pP3xyZWZlcmVuY2UgdG8pfCg/OmFuZHxvcnxkaXZ8bW9kfGFzfG5vdCkpXFxiL10sa2V5d29yZDovXFxiKD86YWJvdXR8YWJvdmV8YWZ0ZXJ8YWdhaW5zdHxhcGFydCBmcm9tfGFyb3VuZHxhc2lkZSBmcm9tfGF0fGJhY2t8YmVmb3JlfGJlZ2lubmluZ3xiZWhpbmR8YmVsb3d8YmVuZWF0aHxiZXNpZGV8YmV0d2VlbnxidXR8Ynl8Y29uc2lkZXJpbmd8Y29udGludWV8Y29weXxkb2VzfGVpZ2h0aHxlbHNlfGVuZHxlcXVhbHxlcnJvcnxldmVyeXxleGl0fGZhbHNlfGZpZnRofGZpcnN0fGZvcnxmb3VydGh8ZnJvbXxmcm9udHxnZXR8Z2l2ZW58Z2xvYmFsfGlmfGlnbm9yaW5nfGlufGluc3RlYWQgb2Z8aW50b3xpc3xpdHxpdHN8bGFzdHxsb2NhbHxtZXxtaWRkbGV8bXl8bmludGh8b2Z8b258b250b3xvdXQgb2Z8b3Zlcnxwcm9wfHByb3BlcnR5fHB1dHxyZXBlYXR8cmV0dXJufHJldHVybmluZ3xzZWNvbmR8c2V0fHNldmVudGh8c2luY2V8c2l4dGh8c29tZXx0ZWxsfHRlbnRofHRoYXR8dGhlfHRoZW58dGhpcmR8dGhyb3VnaHx0aHJ1fHRpbWVvdXR8dGltZXN8dG98dHJhbnNhY3Rpb258dHJ1ZXx0cnl8dW50aWx8d2hlcmV8d2hpbGV8d2hvc2V8d2l0aHx3aXRob3V0KVxcYi8sY2xhc3M6e3BhdHRlcm46L1xcYig/OmFsaWFzfGFwcGxpY2F0aW9ufGJvb2xlYW58Y2xhc3N8Y29uc3RhbnR8ZGF0ZXxmaWxlfGludGVnZXJ8bGlzdHxudW1iZXJ8UE9TSVggZmlsZXxyZWFsfHJlY29yZHxyZWZlcmVuY2V8UkdCIGNvbG9yfHNjcmlwdHx0ZXh0fGNlbnRpbWV0cmVzfGNlbnRpbWV0ZXJzfGZlZXR8aW5jaGVzfGtpbG9tZXRyZXN8a2lsb21ldGVyc3xtZXRyZXN8bWV0ZXJzfG1pbGVzfHlhcmRzfHNxdWFyZSBmZWV0fHNxdWFyZSBraWxvbWV0cmVzfHNxdWFyZSBraWxvbWV0ZXJzfHNxdWFyZSBtZXRyZXN8c3F1YXJlIG1ldGVyc3xzcXVhcmUgbWlsZXN8c3F1YXJlIHlhcmRzfGN1YmljIGNlbnRpbWV0cmVzfGN1YmljIGNlbnRpbWV0ZXJzfGN1YmljIGZlZXR8Y3ViaWMgaW5jaGVzfGN1YmljIG1ldHJlc3xjdWJpYyBtZXRlcnN8Y3ViaWMgeWFyZHN8Z2FsbG9uc3xsaXRyZXN8bGl0ZXJzfHF1YXJ0c3xncmFtc3xraWxvZ3JhbXN8b3VuY2VzfHBvdW5kc3xkZWdyZWVzIENlbHNpdXN8ZGVncmVlcyBGYWhyZW5oZWl0fGRlZ3JlZXMgS2VsdmluKVxcYi8sYWxpYXM6XCJidWlsdGluXCJ9LHB1bmN0dWF0aW9uOi9be30oKToswqzCq8K744CK44CLXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJhcHBsZXNjcmlwdFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oOTYpO2Z1bmN0aW9uIG8oZSl7ZS5yZWdpc3RlcihyKSxlLmxhbmd1YWdlcy5hcmR1aW5vPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNwcFwiLHtrZXl3b3JkOi9cXGIoPzpzZXR1cHxpZnxlbHNlfHdoaWxlfGRvfGZvcnxyZXR1cm58aW58aW5zdGFuY2VvZnxkZWZhdWx0fGZ1bmN0aW9ufGxvb3B8Z290b3xzd2l0Y2h8Y2FzZXxuZXd8dHJ5fHRocm93fGNhdGNofGZpbmFsbHl8bnVsbHxicmVha3xjb250aW51ZXxib29sZWFufGJvb2x8dm9pZHxieXRlfHdvcmR8c3RyaW5nfFN0cmluZ3xhcnJheXxpbnR8bG9uZ3xpbnRlZ2VyfGRvdWJsZSlcXGIvLGJ1aWx0aW46L1xcYig/OktleWJvYXJkQ29udHJvbGxlcnxNb3VzZUNvbnRyb2xsZXJ8U29mdHdhcmVTZXJpYWx8RXRoZXJuZXRTZXJ2ZXJ8RXRoZXJuZXRDbGllbnR8TGlxdWlkQ3J5c3RhbHxMaXF1aWRDcnlzdGFsX0kyQ3xSb2JvdENvbnRyb2x8R1NNVm9pY2VDYWxsfEV0aGVybmV0VURQfEVzcGxvcmFURlR8SHR0cENsaWVudHxSb2JvdE1vdG9yfFdpRmlDbGllbnR8R1NNU2Nhbm5lcnxGaWxlU3lzdGVtfFNjaGVkdWxlcnxHU01TZXJ2ZXJ8WXVuQ2xpZW50fFl1blNlcnZlcnxJUEFkZHJlc3N8R1NNQ2xpZW50fEdTTU1vZGVtfEtleWJvYXJkfEV0aGVybmV0fENvbnNvbGV8R1NNQmFuZHxFc3Bsb3JhfFN0ZXBwZXJ8UHJvY2Vzc3xXaUZpVURQfEdTTV9TTVN8TWFpbGJveHxVU0JIb3N0fEZpcm1hdGF8UEltYWdlfENsaWVudHxTZXJ2ZXJ8R1NNUElOfEZpbGVJT3xCcmlkZ2V8U2VyaWFsfEVFUFJPTXxTdHJlYW18TW91c2V8QXVkaW98U2Vydm98RmlsZXxUYXNrfEdQUlN8V2lGaXxXaXJlfFRGVHxHU018U1BJfFNEfHJ1blNoZWxsQ29tbWFuZEFzeW5jaHJvbm91c2x5fGFuYWxvZ1dyaXRlUmVzb2x1dGlvbnxyZXRyaWV2ZUNhbGxpbmdOdW1iZXJ8cHJpbnRGaXJtd2FyZVZlcnNpb258YW5hbG9nUmVhZFJlc29sdXRpb258c2VuZERpZ2l0YWxQb3J0UGFpcnxub0xpc3Rlbk9uTG9jYWxob3N0fHJlYWRKb3lzdGlja0J1dHRvbnxzZXRGaXJtd2FyZVZlcnNpb258cmVhZEpveXN0aWNrU3dpdGNofHNjcm9sbERpc3BsYXlSaWdodHxnZXRWb2ljZUNhbGxTdGF0dXN8c2Nyb2xsRGlzcGxheUxlZnR8d3JpdGVNaWNyb3NlY29uZHN8ZGVsYXlNaWNyb3NlY29uZHN8YmVnaW5UcmFuc21pc3Npb258Z2V0U2lnbmFsU3RyZW5ndGh8cnVuQXN5bmNocm9ub3VzbHl8Z2V0QXN5bmNocm9ub3VzbHl8bGlzdGVuT25Mb2NhbGhvc3R8Z2V0Q3VycmVudENhcnJpZXJ8cmVhZEFjY2VsZXJvbWV0ZXJ8bWVzc2FnZUF2YWlsYWJsZXxzZW5kRGlnaXRhbFBvcnRzfGxpbmVGb2xsb3dDb25maWd8Y291bnRyeU5hbWVXcml0ZXxydW5TaGVsbENvbW1hbmR8cmVhZFN0cmluZ1VudGlsfHJld2luZERpcmVjdG9yeXxyZWFkVGVtcGVyYXR1cmV8c2V0Q2xvY2tEaXZpZGVyfHJlYWRMaWdodFNlbnNvcnxlbmRUcmFuc21pc3Npb258YW5hbG9nUmVmZXJlbmNlfGRldGFjaEludGVycnVwdHxjb3VudHJ5TmFtZVJlYWR8YXR0YWNoSW50ZXJydXB0fGVuY3J5cHRpb25UeXBlfHJlYWRCeXRlc1VudGlsfHJvYm90TmFtZVdyaXRlfHJlYWRNaWNyb3Bob25lfHJvYm90TmFtZVJlYWR8Y2l0eU5hbWVXcml0ZXx1c2VyTmFtZVdyaXRlfHJlYWRKb3lzdGlja1l8cmVhZEpveXN0aWNrWHxtb3VzZVJlbGVhc2VkfG9wZW5OZXh0RmlsZXxzY2FuTmV0d29ya3N8bm9JbnRlcnJ1cHRzfGRpZ2l0YWxXcml0ZXxiZWdpblNwZWFrZXJ8bW91c2VQcmVzc2VkfGlzQWN0aW9uRG9uZXxtb3VzZURyYWdnZWR8ZGlzcGxheUxvZ29zfG5vQXV0b3Njcm9sbHxhZGRQYXJhbWV0ZXJ8cmVtb3RlTnVtYmVyfGdldE1vZGlmaWVyc3xrZXlib2FyZFJlYWR8dXNlck5hbWVSZWFkfHdhaXRDb250aW51ZXxwcm9jZXNzSW5wdXR8cGFyc2VDb21tYW5kfHByaW50VmVyc2lvbnxyZWFkTmV0d29ya3N8d3JpdGVNZXNzYWdlfGJsaW5rVmVyc2lvbnxjaXR5TmFtZVJlYWR8cmVhZE1lc3NhZ2V8c2V0RGF0YU1vZGV8cGFyc2VQYWNrZXR8aXNMaXN0ZW5pbmd8c2V0Qml0T3JkZXJ8YmVnaW5QYWNrZXR8aXNEaXJlY3Rvcnl8bW90b3JzV3JpdGV8ZHJhd0NvbXBhc3N8ZGlnaXRhbFJlYWR8Y2xlYXJTY3JlZW58c2VyaWFsRXZlbnR8cmlnaHRUb0xlZnR8c2V0VGV4dFNpemV8bGVmdFRvUmlnaHR8cmVxdWVzdEZyb218a2V5UmVsZWFzZWR8Y29tcGFzc1JlYWR8YW5hbG9nV3JpdGV8aW50ZXJydXB0c3xXaUZpU2VydmVyfGRpc2Nvbm5lY3R8cGxheU1lbG9keXxwYXJzZUZsb2F0fGF1dG9zY3JvbGx8Z2V0UElOVXNlZHxzZXRQSU5Vc2VkfHNldFRpbWVvdXR8c2VuZEFuYWxvZ3xyZWFkU2xpZGVyfGFuYWxvZ1JlYWR8YmVnaW5Xcml0ZXxjcmVhdGVDaGFyfG1vdG9yc1N0b3B8a2V5UHJlc3NlZHx0ZW1wb1dyaXRlfHJlYWRCdXR0b258c3VibmV0TWFza3xkZWJ1Z1ByaW50fG1hY0FkZHJlc3N8d3JpdGVHcmVlbnxyYW5kb21TZWVkfGF0dGFjaEdQUlN8cmVhZFN0cmluZ3xzZW5kU3RyaW5nfHJlbW90ZVBvcnR8cmVsZWFzZUFsbHxtb3VzZU1vdmVkfGJhY2tncm91bmR8Z2V0WENoYW5nZXxnZXRZQ2hhbmdlfGFuc3dlckNhbGx8Z2V0UmVzdWx0fHZvaWNlQ2FsbHxlbmRQYWNrZXR8Y29uc3RyYWlufGdldFNvY2tldHx3cml0ZUpTT058Z2V0QnV0dG9ufGF2YWlsYWJsZXxjb25uZWN0ZWR8ZmluZFVudGlsfHJlYWRCeXRlc3xleGl0VmFsdWV8cmVhZEdyZWVufHdyaXRlQmx1ZXxzdGFydExvb3B8SVBBZGRyZXNzfGlzUHJlc3NlZHxzZW5kU3lzZXh8cGF1c2VNb2RlfGdhdGV3YXlJUHxzZXRDdXJzb3J8Z2V0T2VtS2V5fHR1bmVXcml0ZXxub0Rpc3BsYXl8bG9hZEltYWdlfHN3aXRjaFBJTnxvblJlcXVlc3R8b25SZWNlaXZlfGNoYW5nZVBJTnxwbGF5RmlsZXxub0J1ZmZlcnxwYXJzZUludHxvdmVyZmxvd3xjaGVja1BJTnxrbm9iUmVhZHxiZWdpblRGVHxiaXRDbGVhcnx1cGRhdGVJUnxiaXRXcml0ZXxwb3NpdGlvbnx3cml0ZVJHQnxoaWdoQnl0ZXx3cml0ZVJlZHxzZXRTcGVlZHxyZWFkQmx1ZXxub1N0cm9rZXxyZW1vdGVJUHx0cmFuc2ZlcnxzaHV0ZG93bnxoYW5nQ2FsbHxiZWdpblNNU3xlbmRXcml0ZXxhdHRhY2hlZHxtYWludGFpbnxub0N1cnNvcnxjaGVja1JlZ3xjaGVja1BVS3xzaGlmdE91dHxpc1ZhbGlkfHNoaWZ0SW58cHVsc2VJbnxjb25uZWN0fHByaW50bG58bG9jYWxJUHxwaW5Nb2RlfGdldElNRUl8ZGlzcGxheXxub0JsaW5rfHByb2Nlc3N8Z2V0QmFuZHxydW5uaW5nfGJlZ2luU0R8ZHJhd0JNUHxsb3dCeXRlfHNldEJhbmR8cmVsZWFzZXxiaXRSZWFkfHByZXBhcmV8cG9pbnRUb3xyZWFkUmVkfHNldE1vZGV8bm9GaWxsfHJlbW92ZXxsaXN0ZW58c3Ryb2tlfGRldGFjaHxhdHRhY2h8bm9Ub25lfGV4aXN0c3xidWZmZXJ8aGVpZ2h0fGJpdFNldHxjaXJjbGV8Y29uZmlnfGN1cnNvcnxyYW5kb218SVJyZWFkfHNldEROU3xlbmRTTVN8Z2V0S2V5fG1pY3Jvc3xtaWxsaXN8YmVnaW58cHJpbnR8d3JpdGV8cmVhZHl8Zmx1c2h8d2lkdGh8aXNQSU58Ymxpbmt8Y2xlYXJ8cHJlc3N8bWtkaXJ8cm1kaXJ8Y2xvc2V8cG9pbnR8eWllbGR8aW1hZ2V8QlNTSUR8Y2xpY2t8ZGVsYXl8cmVhZHx0ZXh0fG1vdmV8cGVla3xiZWVwfHJlY3R8bGluZXxvcGVufHNlZWt8ZmlsbHxzaXplfHR1cm58c3RvcHxob21lfGZpbmR8c3RlcHx0b25lfHNxcnR8UlNTSXxTU0lEfGVuZHxiaXR8dGFufGNvc3xzaW58cG93fG1hcHxhYnN8bWF4fG1pbnxnZXR8cnVufHB1dClcXGIvLGNvbnN0YW50Oi9cXGIoPzpESUdJVEFMX01FU1NBR0V8RklSTUFUQV9TVFJJTkd8QU5BTE9HX01FU1NBR0V8UkVQT1JUX0RJR0lUQUx8UkVQT1JUX0FOQUxPR3xJTlBVVF9QVUxMVVB8U0VUX1BJTl9NT0RFfElOVEVSTkFMMlY1NnxTWVNURU1fUkVTRVR8TEVEX0JVSUxUSU58SU5URVJOQUwxVjF8U1lTRVhfU1RBUlR8SU5URVJOQUx8RVhURVJOQUx8REVGQVVMVHxPVVRQVVR8SU5QVVR8SElHSHxMT1cpXFxiL30pfWUuZXhwb3J0cz1vLG8uZGlzcGxheU5hbWU9XCJhcmR1aW5vXCIsby5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5hcmZmPXtjb21tZW50Oi8lLiovLHN0cmluZzp7cGF0dGVybjovKFtcIiddKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLGdyZWVkeTohMH0sa2V5d29yZDovQCg/OmF0dHJpYnV0ZXxkYXRhfGVuZHxyZWxhdGlvbilcXGIvaSxudW1iZXI6L1xcYlxcZCsoPzpcXC5cXGQrKT9cXGIvLHB1bmN0dWF0aW9uOi9be30sXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJhcmZmXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7dmFyIHQ9e3BhdHRlcm46LyheWyBcXHRdKilcXFsoPyFcXFspKD86KFtcIickYF0pKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKlxcMnxcXFsoPzpbXlxcXVxcXFxdfFxcXFwuKSpcXF18W15cXF1cXFxcXXxcXFxcLikqXFxdL20sbG9va2JlaGluZDohMCxpbnNpZGU6e3F1b3RlZDp7cGF0dGVybjovKFskYF0pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKlxcMS8saW5zaWRlOntwdW5jdHVhdGlvbjovXlskYF18WyRgXSQvfX0saW50ZXJwcmV0ZWQ6e3BhdHRlcm46LycoPzpbXidcXFxcXXxcXFxcLikqJy8saW5zaWRlOntwdW5jdHVhdGlvbjovXid8JyQvfX0sc3RyaW5nOi9cIig/OlteXCJcXFxcXXxcXFxcLikqXCIvLHZhcmlhYmxlOi9cXHcrKD89PSkvLHB1bmN0dWF0aW9uOi9eXFxbfFxcXSR8LC8sb3BlcmF0b3I6Lz0vLFwiYXR0ci12YWx1ZVwiOi8oPyFeXFxzKyQpLisvfX07ZS5sYW5ndWFnZXMuYXNjaWlkb2M9e1wiY29tbWVudC1ibG9ja1wiOntwYXR0ZXJuOi9eKFxcL3s0LH0pKD86XFxyP1xcbnxcXHIpKD86W1xcc1xcU10qKD86XFxyP1xcbnxcXHIpKT8/XFwxL20sYWxpYXM6XCJjb21tZW50XCJ9LHRhYmxlOntwYXR0ZXJuOi9eXFx8PXszLH0oPzooPzpcXHI/XFxufFxccikuKikqPyg/Olxccj9cXG58XFxyKVxcfD17Myx9JC9tLGluc2lkZTp7c3BlY2lmaWVyczp7cGF0dGVybjovKD8hXFx8KSg/Oig/Oig/OlxcZCsoPzpcXC5cXGQrKT98XFwuXFxkKylbKypdKT8oPzpbPF4+XSg/OlxcLls8Xj5dKT98XFwuWzxePl0pP1thLXpdKikoPz1cXHwpLyxhbGlhczpcImF0dHItdmFsdWVcIn0scHVuY3R1YXRpb246e3BhdHRlcm46LyhefFteXFxcXF0pW3whXT0qLyxsb29rYmVoaW5kOiEwfX19LFwicGFzc3Rocm91Z2gtYmxvY2tcIjp7cGF0dGVybjovXihcXCt7NCx9KSg/Olxccj9cXG58XFxyKSg/OltcXHNcXFNdKig/Olxccj9cXG58XFxyKSk/P1xcMSQvbSxpbnNpZGU6e3B1bmN0dWF0aW9uOi9eXFwrK3xcXCsrJC99fSxcImxpdGVyYWwtYmxvY2tcIjp7cGF0dGVybjovXigtezQsfXxcXC57NCx9KSg/Olxccj9cXG58XFxyKSg/OltcXHNcXFNdKig/Olxccj9cXG58XFxyKSk/P1xcMSQvbSxpbnNpZGU6e3B1bmN0dWF0aW9uOi9eKD86LSt8XFwuKyl8KD86LSt8XFwuKykkL319LFwib3RoZXItYmxvY2tcIjp7cGF0dGVybjovXigtLXxcXCp7NCx9fF97NCx9fD17NCx9KSg/Olxccj9cXG58XFxyKSg/OltcXHNcXFNdKig/Olxccj9cXG58XFxyKSk/P1xcMSQvbSxpbnNpZGU6e3B1bmN0dWF0aW9uOi9eKD86LSt8XFwqK3xfK3w9Kyl8KD86LSt8XFwqK3xfK3w9KykkL319LFwibGlzdC1wdW5jdHVhdGlvblwiOntwYXR0ZXJuOi8oXlsgXFx0XSopKD86LXxcXCp7MSw1fXxcXC57MSw1fXwoPzpbYS16XXxcXGQrKVxcLnxbeHZpXStcXCkpKD89ICkvaW0sbG9va2JlaGluZDohMCxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LFwibGlzdC1sYWJlbFwiOntwYXR0ZXJuOi8oXlsgXFx0XSopW2EtelxcZF0uKyg/Ojp7Miw0fXw7OykoPz1cXHMpL2ltLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzeW1ib2xcIn0sXCJpbmRlbnRlZC1ibG9ja1wiOntwYXR0ZXJuOi8oKFxccj9cXG58XFxyKVxcMikoWyBcXHRdKylcXFMuKig/Oig/Olxccj9cXG58XFxyKVxcMy4rKSooPz1cXDJ7Mn18JCkvLGxvb2tiZWhpbmQ6ITB9LGNvbW1lbnQ6L15cXC9cXC8uKi9tLHRpdGxlOntwYXR0ZXJuOi9eLisoPzpcXHI/XFxufFxccikoPzo9ezMsfXwtezMsfXx+ezMsfXxcXF57Myx9fFxcK3szLH0pJHxePXsxLDV9ICsuK3xeXFwuKD8hW1xccy5dKS4qL20sYWxpYXM6XCJpbXBvcnRhbnRcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi9eKD86XFwufD0rKXwoPzo9K3wtK3x+K3xcXF4rfFxcKyspJC99fSxcImF0dHJpYnV0ZS1lbnRyeVwiOntwYXR0ZXJuOi9eOlteOlxcclxcbl0rOig/OiAuKj8oPzogXFwrKD86XFxyP1xcbnxcXHIpLio/KSopPyQvbSxhbGlhczpcInRhZ1wifSxhdHRyaWJ1dGVzOnQsaHI6e3BhdHRlcm46L14nezMsfSQvbSxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LFwicGFnZS1icmVha1wiOntwYXR0ZXJuOi9ePHszLH0kL20sYWxpYXM6XCJwdW5jdHVhdGlvblwifSxhZG1vbml0aW9uOntwYXR0ZXJuOi9eKD86VElQfE5PVEV8SU1QT1JUQU5UfFdBUk5JTkd8Q0FVVElPTik6L20sYWxpYXM6XCJrZXl3b3JkXCJ9LGNhbGxvdXQ6W3twYXR0ZXJuOi8oXlsgXFx0XSopPD9cXGQqPi9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzeW1ib2xcIn0se3BhdHRlcm46LzxcXGQrPi8sYWxpYXM6XCJzeW1ib2xcIn1dLG1hY3JvOntwYXR0ZXJuOi9cXGJbYS16XFxkXVthLXpcXGQtXSo6Oj8oPzooPzpcXFMrKT8/XFxbKD86W15cXF1cXFxcXCJdfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqXFwxfFxcXFwuKSpcXF0pLyxpbnNpZGU6e2Z1bmN0aW9uOi9eW2EtelxcZC1dKyg/PTopLyxwdW5jdHVhdGlvbjovXjo6Py8sYXR0cmlidXRlczp7cGF0dGVybjovKD86XFxbKD86W15cXF1cXFxcXCJdfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqXFwxfFxcXFwuKSpcXF0pLyxpbnNpZGU6dC5pbnNpZGV9fX0saW5saW5lOntwYXR0ZXJuOi8oXnxbXlxcXFxdKSg/Oig/OlxcQlxcWyg/OlteXFxdXFxcXFwiXXwoW1wiJ10pKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKlxcMnxcXFxcLikqXFxdKT8oPzpcXGJfKD8hXFxzKSg/OiBffFteX1xcXFxcXHJcXG5dfFxcXFwuKSsoPzooPzpcXHI/XFxufFxccikoPzogX3xbXl9cXFxcXFxyXFxuXXxcXFxcLikrKSpfXFxifFxcQmBgKD8hXFxzKS4rPyg/Oig/Olxccj9cXG58XFxyKS4rPykqJydcXEJ8XFxCYCg/IVxccykoPzogWydgXXwuKSs/KD86KD86XFxyP1xcbnxcXHIpKD86IFsnYF18LikrPykqWydgXVxcQnxcXEIoWycqKyNdKSg/IVxccykoPzogXFwzfCg/IVxcMylbXlxcXFxcXHJcXG5dfFxcXFwuKSsoPzooPzpcXHI/XFxufFxccikoPzogXFwzfCg/IVxcMylbXlxcXFxcXHJcXG5dfFxcXFwuKSspKlxcM1xcQil8KD86XFxbKD86W15cXF1cXFxcXCJdfChbXCInXSkoPzooPyFcXDQpW15cXFxcXXxcXFxcLikqXFw0fFxcXFwuKSpcXF0pPyg/OihfX3xcXCpcXCp8XFwrXFwrXFwrP3wjI3xcXCRcXCR8W35eXSkuKz8oPzooPzpcXHI/XFxufFxccikuKz8pKlxcNXxcXHtbXn1cXHJcXG5dK1xcfXxcXFtcXFtcXFs/Lis/KD86KD86XFxyP1xcbnxcXHIpLis/KSpcXF0/XFxdXFxdfDw8Lis/KD86KD86XFxyP1xcbnxcXHIpLis/KSo+PnxcXChcXChcXCg/Lis/KD86KD86XFxyP1xcbnxcXHIpLis/KSpcXCk/XFwpXFwpKSkvbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7YXR0cmlidXRlczp0LHVybDp7cGF0dGVybjovXig/OlxcW1xcW1xcWz8uKz9cXF0/XFxdXFxdfDw8Lis/Pj4pJC8saW5zaWRlOntwdW5jdHVhdGlvbjovXig/OlxcW1xcW1xcWz98PDwpfCg/OlxcXVxcXVxcXT98Pj4pJC99fSxcImF0dHJpYnV0ZS1yZWZcIjp7cGF0dGVybjovXlxcey4rXFx9JC8saW5zaWRlOnt2YXJpYWJsZTp7cGF0dGVybjovKF5cXHspW2EtelxcZCwrXy1dKy8sbG9va2JlaGluZDohMH0sb3BlcmF0b3I6L15bPT8hIyVAJF18ISg/PVs6fV0pLyxwdW5jdHVhdGlvbjovXlxce3xcXH0kfDo6Py99fSxpdGFsaWM6e3BhdHRlcm46L14oWydfXSlbXFxzXFxTXStcXDEkLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9eKD86Jyc/fF9fPyl8KD86Jyc/fF9fPykkL319LGJvbGQ6e3BhdHRlcm46L15cXCpbXFxzXFxTXStcXCokLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9eXFwqXFwqP3xcXCpcXCo/JC99fSxwdW5jdHVhdGlvbjovXig/OmBgP3xcXCt7MSwzfXwjIz98XFwkXFwkfFt+Xl18XFwoXFwoXFwoPyl8KD86Jyc/fFxcK3sxLDN9fCMjP3xcXCRcXCR8W35eYF18XFwpP1xcKVxcKSkkL319LHJlcGxhY2VtZW50OntwYXR0ZXJuOi9cXCgoPzpDfFRNfFIpXFwpLyxhbGlhczpcImJ1aWx0aW5cIn0sZW50aXR5Oi8mIz9bXFxkYS16XXsxLDh9Oy9pLFwibGluZS1jb250aW51YXRpb25cIjp7cGF0dGVybjovKF58IClcXCskL20sbG9va2JlaGluZDohMCxhbGlhczpcInB1bmN0dWF0aW9uXCJ9fSx0Lmluc2lkZS5pbnRlcnByZXRlZC5pbnNpZGUucmVzdD17bWFjcm86ZS5sYW5ndWFnZXMuYXNjaWlkb2MubWFjcm8saW5saW5lOmUubGFuZ3VhZ2VzLmFzY2lpZG9jLmlubGluZSxyZXBsYWNlbWVudDplLmxhbmd1YWdlcy5hc2NpaWRvYy5yZXBsYWNlbWVudCxlbnRpdHk6ZS5sYW5ndWFnZXMuYXNjaWlkb2MuZW50aXR5fSxlLmxhbmd1YWdlcy5hc2NpaWRvY1tcInBhc3N0aHJvdWdoLWJsb2NrXCJdLmluc2lkZS5yZXN0PXttYWNybzplLmxhbmd1YWdlcy5hc2NpaWRvYy5tYWNyb30sZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJsaXRlcmFsLWJsb2NrXCJdLmluc2lkZS5yZXN0PXtjYWxsb3V0OmUubGFuZ3VhZ2VzLmFzY2lpZG9jLmNhbGxvdXR9LGUubGFuZ3VhZ2VzLmFzY2lpZG9jLnRhYmxlLmluc2lkZS5yZXN0PXtcImNvbW1lbnQtYmxvY2tcIjplLmxhbmd1YWdlcy5hc2NpaWRvY1tcImNvbW1lbnQtYmxvY2tcIl0sXCJwYXNzdGhyb3VnaC1ibG9ja1wiOmUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wicGFzc3Rocm91Z2gtYmxvY2tcIl0sXCJsaXRlcmFsLWJsb2NrXCI6ZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJsaXRlcmFsLWJsb2NrXCJdLFwib3RoZXItYmxvY2tcIjplLmxhbmd1YWdlcy5hc2NpaWRvY1tcIm90aGVyLWJsb2NrXCJdLFwibGlzdC1wdW5jdHVhdGlvblwiOmUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wibGlzdC1wdW5jdHVhdGlvblwiXSxcImluZGVudGVkLWJsb2NrXCI6ZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJpbmRlbnRlZC1ibG9ja1wiXSxjb21tZW50OmUubGFuZ3VhZ2VzLmFzY2lpZG9jLmNvbW1lbnQsdGl0bGU6ZS5sYW5ndWFnZXMuYXNjaWlkb2MudGl0bGUsXCJhdHRyaWJ1dGUtZW50cnlcIjplLmxhbmd1YWdlcy5hc2NpaWRvY1tcImF0dHJpYnV0ZS1lbnRyeVwiXSxhdHRyaWJ1dGVzOmUubGFuZ3VhZ2VzLmFzY2lpZG9jLmF0dHJpYnV0ZXMsaHI6ZS5sYW5ndWFnZXMuYXNjaWlkb2MuaHIsXCJwYWdlLWJyZWFrXCI6ZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJwYWdlLWJyZWFrXCJdLGFkbW9uaXRpb246ZS5sYW5ndWFnZXMuYXNjaWlkb2MuYWRtb25pdGlvbixcImxpc3QtbGFiZWxcIjplLmxhbmd1YWdlcy5hc2NpaWRvY1tcImxpc3QtbGFiZWxcIl0sY2FsbG91dDplLmxhbmd1YWdlcy5hc2NpaWRvYy5jYWxsb3V0LG1hY3JvOmUubGFuZ3VhZ2VzLmFzY2lpZG9jLm1hY3JvLGlubGluZTplLmxhbmd1YWdlcy5hc2NpaWRvYy5pbmxpbmUscmVwbGFjZW1lbnQ6ZS5sYW5ndWFnZXMuYXNjaWlkb2MucmVwbGFjZW1lbnQsZW50aXR5OmUubGFuZ3VhZ2VzLmFzY2lpZG9jLmVudGl0eSxcImxpbmUtY29udGludWF0aW9uXCI6ZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJsaW5lLWNvbnRpbnVhdGlvblwiXX0sZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJvdGhlci1ibG9ja1wiXS5pbnNpZGUucmVzdD17dGFibGU6ZS5sYW5ndWFnZXMuYXNjaWlkb2MudGFibGUsXCJsaXN0LXB1bmN0dWF0aW9uXCI6ZS5sYW5ndWFnZXMuYXNjaWlkb2NbXCJsaXN0LXB1bmN0dWF0aW9uXCJdLFwiaW5kZW50ZWQtYmxvY2tcIjplLmxhbmd1YWdlcy5hc2NpaWRvY1tcImluZGVudGVkLWJsb2NrXCJdLGNvbW1lbnQ6ZS5sYW5ndWFnZXMuYXNjaWlkb2MuY29tbWVudCxcImF0dHJpYnV0ZS1lbnRyeVwiOmUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wiYXR0cmlidXRlLWVudHJ5XCJdLGF0dHJpYnV0ZXM6ZS5sYW5ndWFnZXMuYXNjaWlkb2MuYXR0cmlidXRlcyxocjplLmxhbmd1YWdlcy5hc2NpaWRvYy5ocixcInBhZ2UtYnJlYWtcIjplLmxhbmd1YWdlcy5hc2NpaWRvY1tcInBhZ2UtYnJlYWtcIl0sYWRtb25pdGlvbjplLmxhbmd1YWdlcy5hc2NpaWRvYy5hZG1vbml0aW9uLFwibGlzdC1sYWJlbFwiOmUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wibGlzdC1sYWJlbFwiXSxtYWNybzplLmxhbmd1YWdlcy5hc2NpaWRvYy5tYWNybyxpbmxpbmU6ZS5sYW5ndWFnZXMuYXNjaWlkb2MuaW5saW5lLHJlcGxhY2VtZW50OmUubGFuZ3VhZ2VzLmFzY2lpZG9jLnJlcGxhY2VtZW50LGVudGl0eTplLmxhbmd1YWdlcy5hc2NpaWRvYy5lbnRpdHksXCJsaW5lLWNvbnRpbnVhdGlvblwiOmUubGFuZ3VhZ2VzLmFzY2lpZG9jW1wibGluZS1jb250aW51YXRpb25cIl19LGUubGFuZ3VhZ2VzLmFzY2lpZG9jLnRpdGxlLmluc2lkZS5yZXN0PXttYWNybzplLmxhbmd1YWdlcy5hc2NpaWRvYy5tYWNybyxpbmxpbmU6ZS5sYW5ndWFnZXMuYXNjaWlkb2MuaW5saW5lLHJlcGxhY2VtZW50OmUubGFuZ3VhZ2VzLmFzY2lpZG9jLnJlcGxhY2VtZW50LGVudGl0eTplLmxhbmd1YWdlcy5hc2NpaWRvYy5lbnRpdHl9LGUuaG9va3MuYWRkKFwid3JhcFwiLGZ1bmN0aW9uKGUpe1wiZW50aXR5XCI9PT1lLnR5cGUmJihlLmF0dHJpYnV0ZXMudGl0bGU9ZS5jb250ZW50LnZhbHVlLnJlcGxhY2UoLyZhbXA7LyxcIiZcIikpfSl9KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJhc2NpaWRvY1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuYXNtNjUwMj17Y29tbWVudDovOy4qLyxkaXJlY3RpdmU6e3BhdHRlcm46L1xcLlxcdysoPz0gKS8sYWxpYXM6XCJrZXl3b3JkXCJ9LHN0cmluZzovKFtcIidgXSkoPzpcXFxcLnwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxvcGNvZGU6e3BhdHRlcm46L1xcYig/OmFkY3xhbmR8YXNsfGJjY3xiY3N8YmVxfGJpdHxibWl8Ym5lfGJwbHxicmt8YnZjfGJ2c3xjbGN8Y2xkfGNsaXxjbHZ8Y21wfGNweHxjcHl8ZGVjfGRleHxkZXl8ZW9yfGluY3xpbnh8aW55fGptcHxqc3J8bGRhfGxkeHxsZHl8bHNyfG5vcHxvcmF8cGhhfHBocHxwbGF8cGxwfHJvbHxyb3J8cnRpfHJ0c3xzYmN8c2VjfHNlZHxzZWl8c3RhfHN0eHxzdHl8dGF4fHRheXx0c3h8dHhhfHR4c3x0eWF8QURDfEFORHxBU0x8QkNDfEJDU3xCRVF8QklUfEJNSXxCTkV8QlBMfEJSS3xCVkN8QlZTfENMQ3xDTER8Q0xJfENMVnxDTVB8Q1BYfENQWXxERUN8REVYfERFWXxFT1J8SU5DfElOWHxJTll8Sk1QfEpTUnxMREF8TERYfExEWXxMU1J8Tk9QfE9SQXxQSEF8UEhQfFBMQXxQTFB8Uk9MfFJPUnxSVEl8UlRTfFNCQ3xTRUN8U0VEfFNFSXxTVEF8U1RYfFNUWXxUQVh8VEFZfFRTWHxUWEF8VFhTfFRZQSlcXGIvLGFsaWFzOlwicHJvcGVydHlcIn0saGV4bnVtYmVyOntwYXR0ZXJuOi8jP1xcJFtcXGRhLWZdezIsNH0vaSxhbGlhczpcInN0cmluZ1wifSxiaW5hcnludW1iZXI6e3BhdHRlcm46LyM/JVswMV0rLyxhbGlhczpcInN0cmluZ1wifSxkZWNpbWFsbnVtYmVyOntwYXR0ZXJuOi8jP1xcZCsvLGFsaWFzOlwic3RyaW5nXCJ9LHJlZ2lzdGVyOntwYXR0ZXJuOi9cXGJbeHlhXVxcYi9pLGFsaWFzOlwidmFyaWFibGVcIn19fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJhc202NTAyXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5hc3BuZXQ9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwibWFya3VwXCIse1wicGFnZS1kaXJlY3RpdmUgdGFnXCI6e3BhdHRlcm46LzwlXFxzKkAuKiU+L2ksaW5zaWRlOntcInBhZ2UtZGlyZWN0aXZlIHRhZ1wiOi88JVxccypAXFxzKig/OkFzc2VtYmx5fENvbnRyb2x8SW1wbGVtZW50c3xJbXBvcnR8TWFzdGVyKD86VHlwZSk/fE91dHB1dENhY2hlfFBhZ2V8UHJldmlvdXNQYWdlVHlwZXxSZWZlcmVuY2V8UmVnaXN0ZXIpP3wlPi9pLHJlc3Q6ZS5sYW5ndWFnZXMubWFya3VwLnRhZy5pbnNpZGV9fSxcImRpcmVjdGl2ZSB0YWdcIjp7cGF0dGVybjovPCUuKiU+L2ksaW5zaWRlOntcImRpcmVjdGl2ZSB0YWdcIjovPCVcXHMqP1skPSUjOl17MCwyfXwlPi9pLHJlc3Q6ZS5sYW5ndWFnZXMuY3NoYXJwfX19KSxlLmxhbmd1YWdlcy5hc3BuZXQudGFnLnBhdHRlcm49LzwoPyElKVxcLz9bXlxccz5cXC9dKyg/OlxccytbXlxccz5cXC89XSsoPzo9KD86KFwifCcpKD86XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKSpcXDF8W15cXHMnXCI+PV0rKSk/KSpcXHMqXFwvPz4vaSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJpbnNpZGVcIixcInB1bmN0dWF0aW9uXCIse1wiZGlyZWN0aXZlIHRhZ1wiOmUubGFuZ3VhZ2VzLmFzcG5ldFtcImRpcmVjdGl2ZSB0YWdcIl19LGUubGFuZ3VhZ2VzLmFzcG5ldC50YWcuaW5zaWRlW1wiYXR0ci12YWx1ZVwiXSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiYXNwbmV0XCIsXCJjb21tZW50XCIse1wiYXNwIGNvbW1lbnRcIjovPCUtLVtcXHNcXFNdKj8tLSU+L30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImFzcG5ldFwiLGUubGFuZ3VhZ2VzLmphdmFzY3JpcHQ/XCJzY3JpcHRcIjpcInRhZ1wiLHtcImFzcCBzY3JpcHRcIjp7cGF0dGVybjovKDxzY3JpcHQoPz0uKnJ1bmF0PVsnXCJdP3NlcnZlclsnXCJdPylbXFxzXFxTXSo/PilbXFxzXFxTXSo/KD89PFxcL3NjcmlwdD4pL2ksbG9va2JlaGluZDohMCxpbnNpZGU6ZS5sYW5ndWFnZXMuY3NoYXJwfHx7fX19KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiYXNwbmV0XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5hdXRvaG90a2V5PXtjb21tZW50OntwYXR0ZXJuOi8oXlteXCI7XFxuXSooXCJbXlwiXFxuXSo/XCJbXlwiXFxuXSo/KSopKD86Oy4qJHxeXFxzKlxcL1xcKltcXHNcXFNdKlxcblxcKlxcLykvbSxsb29rYmVoaW5kOiEwfSxzdHJpbmc6L1wiKD86W15cIlxcblxccl18XCJcIikqXCIvbSxmdW5jdGlvbjovW14oKTsgXFx0LFxcbisqXFwtPT8+OlxcXFxcXC88JiVcXFtcXF1dKz8oPz1cXCgpL20sdGFnOi9eWyBcXHRdKlteXFxzOl0rPyg/PTooPzpbXjpdfCQpKS9tLHZhcmlhYmxlOi8lXFx3KyUvLG51bWJlcjovXFxiMHhbXFxkQS1GYS1mXStcXGJ8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86W0VlXS0/XFxkKyk/LyxvcGVyYXRvcjovXFw/fFxcL1xcLz89P3w6PXxcXHxbPXxdP3wmWz0mXT98XFwrWz0rXT98LVs9LV0/fFxcKls9Kl0/fDwoPzo8PT98Pnw9KT98Pj4/PT98Wy5eIT1+XT0/fFxcYig/OkFORHxOT1R8T1IpXFxiLyxwdW5jdHVhdGlvbjovW3t9W1xcXSgpOixdLyxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi8sc2VsZWN0b3I6L1xcYig/OkF1dG9UcmltfEJsb2NrSW5wdXR8QnJlYWt8Q2xpY2t8Q2xpcFdhaXR8Q29udGludWV8Q29udHJvbHxDb250cm9sQ2xpY2t8Q29udHJvbEZvY3VzfENvbnRyb2xHZXR8Q29udHJvbEdldEZvY3VzfENvbnRyb2xHZXRQb3N8Q29udHJvbEdldFRleHR8Q29udHJvbE1vdmV8Q29udHJvbFNlbmR8Q29udHJvbFNlbmRSYXd8Q29udHJvbFNldFRleHR8Q29vcmRNb2RlfENyaXRpY2FsfERldGVjdEhpZGRlblRleHR8RGV0ZWN0SGlkZGVuV2luZG93c3xEcml2ZXxEcml2ZUdldHxEcml2ZVNwYWNlRnJlZXxFbnZBZGR8RW52RGl2fEVudkdldHxFbnZNdWx0fEVudlNldHxFbnZTdWJ8RW52VXBkYXRlfEV4aXR8RXhpdEFwcHxGaWxlQXBwZW5kfEZpbGVDb3B5fEZpbGVDb3B5RGlyfEZpbGVDcmVhdGVEaXJ8RmlsZUNyZWF0ZVNob3J0Y3V0fEZpbGVEZWxldGV8RmlsZUVuY29kaW5nfEZpbGVHZXRBdHRyaWJ8RmlsZUdldFNob3J0Y3V0fEZpbGVHZXRTaXplfEZpbGVHZXRUaW1lfEZpbGVHZXRWZXJzaW9ufEZpbGVJbnN0YWxsfEZpbGVNb3ZlfEZpbGVNb3ZlRGlyfEZpbGVSZWFkfEZpbGVSZWFkTGluZXxGaWxlUmVjeWNsZXxGaWxlUmVjeWNsZUVtcHR5fEZpbGVSZW1vdmVEaXJ8RmlsZVNlbGVjdEZpbGV8RmlsZVNlbGVjdEZvbGRlcnxGaWxlU2V0QXR0cmlifEZpbGVTZXRUaW1lfEZvcm1hdFRpbWV8R2V0S2V5U3RhdGV8R29zdWJ8R290b3xHcm91cEFjdGl2YXRlfEdyb3VwQWRkfEdyb3VwQ2xvc2V8R3JvdXBEZWFjdGl2YXRlfEd1aXxHdWlDb250cm9sfEd1aUNvbnRyb2xHZXR8SG90a2V5fEltYWdlU2VhcmNofEluaURlbGV0ZXxJbmlSZWFkfEluaVdyaXRlfElucHV0fElucHV0Qm94fEtleVdhaXR8TGlzdEhvdGtleXN8TGlzdExpbmVzfExpc3RWYXJzfExvb3B8TWVudXxNb3VzZUNsaWNrfE1vdXNlQ2xpY2tEcmFnfE1vdXNlR2V0UG9zfE1vdXNlTW92ZXxNc2dCb3h8T25FeGl0fE91dHB1dERlYnVnfFBhdXNlfFBpeGVsR2V0Q29sb3J8UGl4ZWxTZWFyY2h8UG9zdE1lc3NhZ2V8UHJvY2Vzc3xQcm9ncmVzc3xSYW5kb218UmVnRGVsZXRlfFJlZ1JlYWR8UmVnV3JpdGV8UmVsb2FkfFJlcGVhdHxSZXR1cm58UnVufFJ1bkFzfFJ1bldhaXR8U2VuZHxTZW5kRXZlbnR8U2VuZElucHV0fFNlbmRNZXNzYWdlfFNlbmRNb2RlfFNlbmRQbGF5fFNlbmRSYXd8U2V0QmF0Y2hMaW5lc3xTZXRDYXBzbG9ja1N0YXRlfFNldENvbnRyb2xEZWxheXxTZXREZWZhdWx0TW91c2VTcGVlZHxTZXRFbnZ8U2V0Rm9ybWF0fFNldEtleURlbGF5fFNldE1vdXNlRGVsYXl8U2V0TnVtbG9ja1N0YXRlfFNldFNjcm9sbExvY2tTdGF0ZXxTZXRTdG9yZUNhcHNsb2NrTW9kZXxTZXRUaW1lcnxTZXRUaXRsZU1hdGNoTW9kZXxTZXRXaW5EZWxheXxTZXRXb3JraW5nRGlyfFNodXRkb3dufFNsZWVwfFNvcnR8U291bmRCZWVwfFNvdW5kR2V0fFNvdW5kR2V0V2F2ZVZvbHVtZXxTb3VuZFBsYXl8U291bmRTZXR8U291bmRTZXRXYXZlVm9sdW1lfFNwbGFzaEltYWdlfFNwbGFzaFRleHRPZmZ8U3BsYXNoVGV4dE9ufFNwbGl0UGF0aHxTdGF0dXNCYXJHZXRUZXh0fFN0YXR1c0JhcldhaXR8U3RyaW5nQ2FzZVNlbnNlfFN0cmluZ0dldFBvc3xTdHJpbmdMZWZ0fFN0cmluZ0xlbnxTdHJpbmdMb3dlcnxTdHJpbmdNaWR8U3RyaW5nUmVwbGFjZXxTdHJpbmdSaWdodHxTdHJpbmdTcGxpdHxTdHJpbmdUcmltTGVmdHxTdHJpbmdUcmltUmlnaHR8U3RyaW5nVXBwZXJ8U3VzcGVuZHxTeXNHZXR8VGhyZWFkfFRvb2xUaXB8VHJhbnNmb3JtfFRyYXlUaXB8VVJMRG93bmxvYWRUb0ZpbGV8V2luQWN0aXZhdGV8V2luQWN0aXZhdGVCb3R0b218V2luQ2xvc2V8V2luR2V0fFdpbkdldEFjdGl2ZVN0YXRzfFdpbkdldEFjdGl2ZVRpdGxlfFdpbkdldENsYXNzfFdpbkdldFBvc3xXaW5HZXRUZXh0fFdpbkdldFRpdGxlfFdpbkhpZGV8V2luS2lsbHxXaW5NYXhpbWl6ZXxXaW5NZW51U2VsZWN0SXRlbXxXaW5NaW5pbWl6ZXxXaW5NaW5pbWl6ZUFsbHxXaW5NaW5pbWl6ZUFsbFVuZG98V2luTW92ZXxXaW5SZXN0b3JlfFdpblNldHxXaW5TZXRUaXRsZXxXaW5TaG93fFdpbldhaXR8V2luV2FpdEFjdGl2ZXxXaW5XYWl0Q2xvc2V8V2luV2FpdE5vdEFjdGl2ZSlcXGIvaSxjb25zdGFudDovXFxiKD86YV9haGtwYXRofGFfYWhrdmVyc2lvbnxhX2FwcGRhdGF8YV9hcHBkYXRhY29tbW9ufGFfYXV0b3RyaW18YV9iYXRjaGxpbmVzfGFfY2FyZXR4fGFfY2FyZXR5fGFfY29tcHV0ZXJuYW1lfGFfY29udHJvbGRlbGF5fGFfY3Vyc29yfGFfZGR8YV9kZGR8YV9kZGRkfGFfZGVmYXVsdG1vdXNlc3BlZWR8YV9kZXNrdG9wfGFfZGVza3RvcGNvbW1vbnxhX2RldGVjdGhpZGRlbnRleHR8YV9kZXRlY3RoaWRkZW53aW5kb3dzfGFfZW5kY2hhcnxhX2V2ZW50aW5mb3xhX2V4aXRyZWFzb258YV9mb3JtYXRmbG9hdHxhX2Zvcm1hdGludGVnZXJ8YV9ndWl8YV9ndWlldmVudHxhX2d1aWNvbnRyb2x8YV9ndWljb250cm9sZXZlbnR8YV9ndWloZWlnaHR8YV9ndWl3aWR0aHxhX2d1aXh8YV9ndWl5fGFfaG91cnxhX2ljb25maWxlfGFfaWNvbmhpZGRlbnxhX2ljb25udW1iZXJ8YV9pY29udGlwfGFfaW5kZXh8YV9pcGFkZHJlc3MxfGFfaXBhZGRyZXNzMnxhX2lwYWRkcmVzczN8YV9pcGFkZHJlc3M0fGFfaXNhZG1pbnxhX2lzY29tcGlsZWR8YV9pc2NyaXRpY2FsfGFfaXNwYXVzZWR8YV9pc3N1c3BlbmRlZHxhX2lzdW5pY29kZXxhX2tleWRlbGF5fGFfbGFuZ3VhZ2V8YV9sYXN0ZXJyb3J8YV9saW5lZmlsZXxhX2xpbmVudW1iZXJ8YV9sb29wZmllbGR8YV9sb29wZmlsZWF0dHJpYnxhX2xvb3BmaWxlZGlyfGFfbG9vcGZpbGVleHR8YV9sb29wZmlsZWZ1bGxwYXRofGFfbG9vcGZpbGVsb25ncGF0aHxhX2xvb3BmaWxlbmFtZXxhX2xvb3BmaWxlc2hvcnRuYW1lfGFfbG9vcGZpbGVzaG9ydHBhdGh8YV9sb29wZmlsZXNpemV8YV9sb29wZmlsZXNpemVrYnxhX2xvb3BmaWxlc2l6ZW1ifGFfbG9vcGZpbGV0aW1lYWNjZXNzZWR8YV9sb29wZmlsZXRpbWVjcmVhdGVkfGFfbG9vcGZpbGV0aW1lbW9kaWZpZWR8YV9sb29wcmVhZGxpbmV8YV9sb29wcmVna2V5fGFfbG9vcHJlZ25hbWV8YV9sb29wcmVnc3Via2V5fGFfbG9vcHJlZ3RpbWVtb2RpZmllZHxhX2xvb3ByZWd0eXBlfGFfbWRheXxhX21pbnxhX21tfGFfbW1tfGFfbW1tbXxhX21vbnxhX21vdXNlZGVsYXl8YV9tc2VjfGFfbXlkb2N1bWVudHN8YV9ub3d8YV9ub3d1dGN8YV9udW1iYXRjaGxpbmVzfGFfb3N0eXBlfGFfb3N2ZXJzaW9ufGFfcHJpb3Job3RrZXl8cHJvZ3JhbWZpbGVzfGFfcHJvZ3JhbWZpbGVzfGFfcHJvZ3JhbXN8YV9wcm9ncmFtc2NvbW1vbnxhX3NjcmVlbmhlaWdodHxhX3NjcmVlbndpZHRofGFfc2NyaXB0ZGlyfGFfc2NyaXB0ZnVsbHBhdGh8YV9zY3JpcHRuYW1lfGFfc2VjfGFfc3BhY2V8YV9zdGFydG1lbnV8YV9zdGFydG1lbnVjb21tb258YV9zdGFydHVwfGFfc3RhcnR1cGNvbW1vbnxhX3N0cmluZ2Nhc2VzZW5zZXxhX3RhYnxhX3RlbXB8YV90aGlzZnVuY3xhX3RoaXNob3RrZXl8YV90aGlzbGFiZWx8YV90aGlzbWVudXxhX3RoaXNtZW51aXRlbXxhX3RoaXNtZW51aXRlbXBvc3xhX3RpY2tjb3VudHxhX3RpbWVpZGxlfGFfdGltZWlkbGVwaHlzaWNhbHxhX3RpbWVzaW5jZXByaW9yaG90a2V5fGFfdGltZXNpbmNldGhpc2hvdGtleXxhX3RpdGxlbWF0Y2htb2RlfGFfdGl0bGVtYXRjaG1vZGVzcGVlZHxhX3VzZXJuYW1lfGFfd2RheXxhX3dpbmRlbGF5fGFfd2luZGlyfGFfd29ya2luZ2RpcnxhX3lkYXl8YV95ZWFyfGFfeXdlZWt8YV95eXl5fGNsaXBib2FyZHxjbGlwYm9hcmRhbGx8Y29tc3BlY3xlcnJvcmxldmVsKVxcYi9pLGJ1aWx0aW46L1xcYig/OmFic3xhY29zfGFzY3xhc2lufGF0YW58Y2VpbHxjaHJ8Y2xhc3N8Y29zfGRsbGNhbGx8ZXhwfGZpbGVleGlzdHxGaWxlb3BlbnxmbG9vcnxpbF9hZGR8aWxfY3JlYXRlfGlsX2Rlc3Ryb3l8aW5zdHJ8c3Vic3RyfGlzZnVuY3xpc2xhYmVsfElzT2JqZWN0fGxufGxvZ3xsdl9hZGR8bHZfZGVsZXRlfGx2X2RlbGV0ZWNvbHxsdl9nZXRjb3VudHxsdl9nZXRuZXh0fGx2X2dldHRleHR8bHZfaW5zZXJ0fGx2X2luc2VydGNvbHxsdl9tb2RpZnl8bHZfbW9kaWZ5Y29sfGx2X3NldGltYWdlbGlzdHxtb2R8b25tZXNzYWdlfG51bWdldHxudW1wdXR8cmVnaXN0ZXJjYWxsYmFja3xyZWdleG1hdGNofHJlZ2V4cmVwbGFjZXxyb3VuZHxzaW58dGFufHNxcnR8c3RybGVufHNiX3NldGljb258c2Jfc2V0cGFydHN8c2Jfc2V0dGV4dHxzdHJzcGxpdHx0dl9hZGR8dHZfZGVsZXRlfHR2X2dldGNoaWxkfHR2X2dldGNvdW50fHR2X2dldG5leHR8dHZfZ2V0fHR2X2dldHBhcmVudHx0dl9nZXRwcmV2fHR2X2dldHNlbGVjdGlvbnx0dl9nZXR0ZXh0fHR2X21vZGlmeXx2YXJzZXRjYXBhY2l0eXx3aW5hY3RpdmV8d2luZXhpc3R8X19OZXd8X19DYWxsfF9fR2V0fF9fU2V0KVxcYi9pLHN5bWJvbDovXFxiKD86YWx0fGFsdGRvd258YWx0dXB8YXBwc2tleXxiYWNrc3BhY2V8YnJvd3Nlcl9iYWNrfGJyb3dzZXJfZmF2b3JpdGVzfGJyb3dzZXJfZm9yd2FyZHxicm93c2VyX2hvbWV8YnJvd3Nlcl9yZWZyZXNofGJyb3dzZXJfc2VhcmNofGJyb3dzZXJfc3RvcHxic3xjYXBzbG9ja3xjdHJsfGN0cmxicmVha3xjdHJsZG93bnxjdHJsdXB8ZGVsfGRlbGV0ZXxkb3dufGVuZHxlbnRlcnxlc2N8ZXNjYXBlfGYxfGYxMHxmMTF8ZjEyfGYxM3xmMTR8ZjE1fGYxNnxmMTd8ZjE4fGYxOXxmMnxmMjB8ZjIxfGYyMnxmMjN8ZjI0fGYzfGY0fGY1fGY2fGY3fGY4fGY5fGhvbWV8aW5zfGluc2VydHxqb3kxfGpveTEwfGpveTExfGpveTEyfGpveTEzfGpveTE0fGpveTE1fGpveTE2fGpveTE3fGpveTE4fGpveTE5fGpveTJ8am95MjB8am95MjF8am95MjJ8am95MjN8am95MjR8am95MjV8am95MjZ8am95Mjd8am95Mjh8am95Mjl8am95M3xqb3kzMHxqb3kzMXxqb3kzMnxqb3k0fGpveTV8am95Nnxqb3k3fGpveTh8am95OXxqb3lheGVzfGpveWJ1dHRvbnN8am95aW5mb3xqb3luYW1lfGpveXBvdnxqb3lyfGpveXV8am95dnxqb3l4fGpveXl8am95enxsYWx0fGxhdW5jaF9hcHAxfGxhdW5jaF9hcHAyfGxhdW5jaF9tYWlsfGxhdW5jaF9tZWRpYXxsYnV0dG9ufGxjb250cm9sfGxjdHJsfGxlZnR8bHNoaWZ0fGx3aW58bHdpbmRvd258bHdpbnVwfG1idXR0b258bWVkaWFfbmV4dHxtZWRpYV9wbGF5X3BhdXNlfG1lZGlhX3ByZXZ8bWVkaWFfc3RvcHxudW1sb2NrfG51bXBhZDB8bnVtcGFkMXxudW1wYWQyfG51bXBhZDN8bnVtcGFkNHxudW1wYWQ1fG51bXBhZDZ8bnVtcGFkN3xudW1wYWQ4fG51bXBhZDl8bnVtcGFkYWRkfG51bXBhZGNsZWFyfG51bXBhZGRlbHxudW1wYWRkaXZ8bnVtcGFkZG90fG51bXBhZGRvd258bnVtcGFkZW5kfG51bXBhZGVudGVyfG51bXBhZGhvbWV8bnVtcGFkaW5zfG51bXBhZGxlZnR8bnVtcGFkbXVsdHxudW1wYWRwZ2RufG51bXBhZHBndXB8bnVtcGFkcmlnaHR8bnVtcGFkc3VifG51bXBhZHVwfHBnZG58cGd1cHxwcmludHNjcmVlbnxyYWx0fHJidXR0b258cmNvbnRyb2x8cmN0cmx8cmlnaHR8cnNoaWZ0fHJ3aW58cndpbmRvd258cndpbnVwfHNjcm9sbGxvY2t8c2hpZnR8c2hpZnRkb3dufHNoaWZ0dXB8c3BhY2V8dGFifHVwfHZvbHVtZV9kb3dufHZvbHVtZV9tdXRlfHZvbHVtZV91cHx3aGVlbGRvd258d2hlZWxsZWZ0fHdoZWVscmlnaHR8d2hlZWx1cHx4YnV0dG9uMXx4YnV0dG9uMilcXGIvaSxpbXBvcnRhbnQ6LyNcXGIoPzpBbGxvd1NhbWVMaW5lQ29tbWVudHN8Q2xpcGJvYXJkVGltZW91dHxDb21tZW50RmxhZ3xFcnJvclN0ZE91dHxFc2NhcGVDaGFyfEhvdGtleUludGVydmFsfEhvdGtleU1vZGlmaWVyVGltZW91dHxIb3RzdHJpbmd8SWZXaW5BY3RpdmV8SWZXaW5FeGlzdHxJZldpbk5vdEFjdGl2ZXxJZldpbk5vdEV4aXN0fEluY2x1ZGV8SW5jbHVkZUFnYWlufEluc3RhbGxLZXliZEhvb2t8SW5zdGFsbE1vdXNlSG9va3xLZXlIaXN0b3J5fExUcmltfE1heEhvdGtleXNQZXJJbnRlcnZhbHxNYXhNZW18TWF4VGhyZWFkc3xNYXhUaHJlYWRzQnVmZmVyfE1heFRocmVhZHNQZXJIb3RrZXl8Tm9FbnZ8Tm9UcmF5SWNvbnxQZXJzaXN0ZW50fFNpbmdsZUluc3RhbmNlfFVzZUhvb2t8V2luQWN0aXZhdGVGb3JjZSlcXGIvaSxrZXl3b3JkOi9cXGIoPzpBYm9ydHxBYm92ZU5vcm1hbHxBZGR8YWhrX2NsYXNzfGFoa19ncm91cHxhaGtfaWR8YWhrX3BpZHxBbGx8QWxudW18QWxwaGF8QWx0U3VibWl0fEFsdFRhYnxBbHRUYWJBbmRNZW51fEFsdFRhYk1lbnV8QWx0VGFiTWVudURpc21pc3N8QWx3YXlzT25Ub3B8QXV0b1NpemV8QmFja2dyb3VuZHxCYWNrZ3JvdW5kVHJhbnN8QmVsb3dOb3JtYWx8YmV0d2VlbnxCaXRBbmR8Qml0Tm90fEJpdE9yfEJpdFNoaWZ0TGVmdHxCaXRTaGlmdFJpZ2h0fEJpdFhPcnxCb2xkfEJvcmRlcnxCdXR0b258QnlSZWZ8Q2hlY2tib3h8Q2hlY2tlZHxDaGVja2VkR3JheXxDaG9vc2V8Q2hvb3NlU3RyaW5nfENsb3NlfENvbG9yfENvbWJvQm94fENvbnRhaW5zfENvbnRyb2xMaXN0fENvdW50fERhdGV8RGF0ZVRpbWV8RGF5c3xEREx8RGVmYXVsdHxEZWxldGVBbGx8RGVsaW1pdGVyfERlcmVmfERlc3Ryb3l8RGlnaXR8RGlzYWJsZXxEaXNhYmxlZHxEcm9wRG93bkxpc3R8RWRpdHxFamVjdHxFbHNlfEVuYWJsZXxFbmFibGVkfEVycm9yfEV4aXN0fEV4cGFuZHxFeFN0eWxlfEZpbGVTeXN0ZW18Rmlyc3R8Rmxhc2h8RmxvYXR8RmxvYXRGYXN0fEZvY3VzfEZvbnR8Zm9yfGdsb2JhbHxHcmlkfEdyb3VwfEdyb3VwQm94fEd1aUNsb3NlfEd1aUNvbnRleHRNZW51fEd1aURyb3BGaWxlc3xHdWlFc2NhcGV8R3VpU2l6ZXxIZHJ8SGlkZGVufEhpZGV8SGlnaHxIS0NDfEhLQ1J8SEtDVXxIS0VZX0NMQVNTRVNfUk9PVHxIS0VZX0NVUlJFTlRfQ09ORklHfEhLRVlfQ1VSUkVOVF9VU0VSfEhLRVlfTE9DQUxfTUFDSElORXxIS0VZX1VTRVJTfEhLTE18SEtVfEhvdXJzfEhTY3JvbGx8SWNvbnxJY29uU21hbGx8SUR8SURMYXN0fElmfElmRXF1YWx8SWZFeGlzdHxJZkdyZWF0ZXJ8SWZHcmVhdGVyT3JFcXVhbHxJZkluU3RyaW5nfElmTGVzc3xJZkxlc3NPckVxdWFsfElmTXNnQm94fElmTm90RXF1YWx8SWZOb3RFeGlzdHxJZk5vdEluU3RyaW5nfElmV2luQWN0aXZlfElmV2luRXhpc3R8SWZXaW5Ob3RBY3RpdmV8SWZXaW5Ob3RFeGlzdHxJZ25vcmV8SW1hZ2VMaXN0fGlufEludGVnZXJ8SW50ZWdlckZhc3R8SW50ZXJydXB0fGlzfGl0YWxpY3xKb2lufExhYmVsfExhc3RGb3VuZHxMYXN0Rm91bmRFeGlzdHxMaW1pdHxMaW5lc3xMaXN0fExpc3RCb3h8TGlzdFZpZXd8bG9jYWx8TG9ja3xMb2dvZmZ8TG93fExvd2VyfExvd2VyY2FzZXxNYWluV2luZG93fE1hcmdpbnxNYXhpbWl6ZXxNYXhpbWl6ZUJveHxNYXhTaXplfE1pbmltaXplfE1pbmltaXplQm94fE1pbk1heHxNaW5TaXplfE1pbnV0ZXN8TW9udGhDYWx8TW91c2V8TW92ZXxNdWx0aXxOQXxOb3xOb0FjdGl2YXRlfE5vRGVmYXVsdHxOb0hpZGV8Tm9JY29ufE5vTWFpbldpbmRvd3xub3JtfE5vcm1hbHxOb1NvcnR8Tm9Tb3J0SGRyfE5vU3RhbmRhcmR8Tm90fE5vVGFifE5vVGltZXJzfE51bWJlcnxPZmZ8T2t8T258T3duRGlhbG9nc3xPd25lcnxQYXJzZXxQYXNzd29yZHxQaWN0dXJlfFBpeGVsfFBvc3xQb3d8UHJpb3JpdHl8UHJvY2Vzc05hbWV8UmFkaW98UmFuZ2V8UmVhZHxSZWFkT25seXxSZWFsdGltZXxSZWRyYXd8UkVHX0JJTkFSWXxSRUdfRFdPUkR8UkVHX0VYUEFORF9TWnxSRUdfTVVMVElfU1p8UkVHX1NafFJlZ2lvbnxSZWxhdGl2ZXxSZW5hbWV8UmVwb3J0fFJlc2l6ZXxSZXN0b3JlfFJldHJ5fFJHQnxTY3JlZW58U2Vjb25kc3xTZWN0aW9ufFNlcmlhbHxTZXRMYWJlbHxTaGlmdEFsdFRhYnxTaG93fFNpbmdsZXxTbGlkZXJ8U29ydERlc2N8U3RhbmRhcmR8c3RhdGljfFN0YXR1c3xTdGF0dXNCYXJ8U3RhdHVzQ0R8c3RyaWtlfFN0eWxlfFN1Ym1pdHxTeXNNZW51fFRhYjJ8VGFiU3RvcHxUZXh0fFRoZW1lfFRpbGV8VG9nZ2xlQ2hlY2t8VG9nZ2xlRW5hYmxlfFRvb2xXaW5kb3d8VG9wfFRvcG1vc3R8VHJhbnNDb2xvcnxUcmFuc3BhcmVudHxUcmF5fFRyZWVWaWV3fFRyeUFnYWlufFR5cGV8VW5DaGVja3x1bmRlcmxpbmV8VW5pY29kZXxVbmxvY2t8VXBEb3dufFVwcGVyfFVwcGVyY2FzZXxVc2VFcnJvckxldmVsfFZpc3xWaXNGaXJzdHxWaXNpYmxlfFZTY3JvbGx8V2FpdHxXYWl0Q2xvc2V8V2FudEN0cmxBfFdhbnRGMnxXYW50UmV0dXJufFdoaWxlfFdyYXB8WGRpZ2l0fHhtfHhwfHhzfFllc3x5bXx5cHx5cylcXGIvaX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImF1dG9ob3RrZXlcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmF1dG9pdD17Y29tbWVudDpbLzsuKi8se3BhdHRlcm46LyheXFxzKikjKD86Y29tbWVudHMtc3RhcnR8Y3MpW1xcc1xcU10qP15cXHMqIyg/OmNvbW1lbnRzLWVuZHxjZSkvbSxsb29rYmVoaW5kOiEwfV0sdXJsOntwYXR0ZXJuOi8oXlxccyojaW5jbHVkZVxccyspKD86PFteXFxyXFxuPl0rPnxcIlteXFxyXFxuXCJdK1wiKS9tLGxvb2tiZWhpbmQ6ITB9LHN0cmluZzp7cGF0dGVybjovKFtcIiddKSg/OlxcMVxcMXwoPyFcXDEpW15cXHJcXG5dKSpcXDEvLGdyZWVkeTohMCxpbnNpZGU6e3ZhcmlhYmxlOi8oWyUkQF0pXFx3K1xcMS99fSxkaXJlY3RpdmU6e3BhdHRlcm46LyheXFxzKikjXFx3Ky9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJrZXl3b3JkXCJ9LGZ1bmN0aW9uOi9cXGJcXHcrKD89XFwoKS8sdmFyaWFibGU6L1skQF1cXHcrLyxrZXl3b3JkOi9cXGIoPzpDYXNlfENvbnN0fENvbnRpbnVlKD86Q2FzZXxMb29wKXxEZWZhdWx0fERpbXxEb3xFbHNlKD86SWYpP3xFbmQoPzpGdW5jfElmfFNlbGVjdHxTd2l0Y2h8V2l0aCl8RW51bXxFeGl0KD86TG9vcCk/fEZvcnxGdW5jfEdsb2JhbHxJZnxJbnxMb2NhbHxOZXh0fE51bGx8UmVEaW18U2VsZWN0fFN0YXRpY3xTdGVwfFN3aXRjaHxUaGVufFRvfFVudGlsfFZvbGF0aWxlfFdFbmR8V2hpbGV8V2l0aClcXGIvaSxudW1iZXI6L1xcYig/OjB4W1xcZGEtZl0rfFxcZCsoPzpcXC5cXGQrKT8oPzplWystXT9cXGQrKT8pXFxiL2ksYm9vbGVhbjovXFxiKD86VHJ1ZXxGYWxzZSlcXGIvaSxvcGVyYXRvcjovPFs9Pl0/fFstKypcXC89Jj5dPT98Wz9eXXxcXGIoPzpBbmR8T3J8Tm90KVxcYi9pLHB1bmN0dWF0aW9uOi9bXFxbXFxdKCkuLDpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImF1dG9pdFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe3ZhciB0PXt2YXJpYWJsZTpbe3BhdHRlcm46L1xcJD9cXChcXChbXFxzXFxTXSs/XFwpXFwpLyxpbnNpZGU6e3ZhcmlhYmxlOlt7cGF0dGVybjovKF5cXCRcXChcXChbXFxzXFxTXSspXFwpXFwpLyxsb29rYmVoaW5kOiEwfSwvXlxcJFxcKFxcKC9dLG51bWJlcjovXFxiMHhbXFxkQS1GYS1mXStcXGJ8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86W0VlXS0/XFxkKyk/LyxvcGVyYXRvcjovLS0/fC09fFxcK1xcKz98XFwrPXwhPT98fnxcXCpcXCo/fFxcKj18XFwvPT98JT0/fDw8PT98Pj49P3w8PT98Pj0/fD09P3wmJj98Jj18XFxePT98XFx8XFx8P3xcXHw9fFxcP3w6LyxwdW5jdHVhdGlvbjovXFwoXFwoP3xcXClcXCk/fCx8Oy99fSx7cGF0dGVybjovXFwkXFwoW14pXStcXCl8YFteYF0rYC8sZ3JlZWR5OiEwLGluc2lkZTp7dmFyaWFibGU6L15cXCRcXCh8XmB8XFwpJHxgJC99fSwvXFwkKD86W1xcdyM/KiFAXSt8XFx7W159XStcXH0pL2ldfTtlLmxhbmd1YWdlcy5iYXNoPXtzaGViYW5nOntwYXR0ZXJuOi9eIyFcXHMqXFwvYmluXFwvYmFzaHxeIyFcXHMqXFwvYmluXFwvc2gvLGFsaWFzOlwiaW1wb3J0YW50XCJ9LGNvbW1lbnQ6e3BhdHRlcm46LyhefFteXCJ7XFxcXF0pIy4qLyxsb29rYmVoaW5kOiEwfSxzdHJpbmc6W3twYXR0ZXJuOi8oKD86XnxbXjxdKTw8XFxzKilbXCInXT8oXFx3Kz8pW1wiJ10/XFxzKlxccj9cXG4oPzpbXFxzXFxTXSkqP1xccj9cXG5cXDIvLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwLGluc2lkZTp0fSx7cGF0dGVybjovKFtcIiddKSg/OlxcXFxbXFxzXFxTXXxcXCRcXChbXildK1xcKXxgW15gXStgfCg/IVxcMSlbXlxcXFxdKSpcXDEvLGdyZWVkeTohMCxpbnNpZGU6dH1dLHZhcmlhYmxlOnQudmFyaWFibGUsZnVuY3Rpb246e3BhdHRlcm46LyhefFtcXHM7fCZdKSg/OmFsaWFzfGFwcm9wb3N8YXB0LWdldHxhcHRpdHVkZXxhc3BlbGx8YXdrfGJhc2VuYW1lfGJhc2h8YmN8Ymd8YnVpbHRpbnxiemlwMnxjYWx8Y2F0fGNkfGNmZGlza3xjaGdycHxjaG1vZHxjaG93bnxjaHJvb3R8Y2hrY29uZmlnfGNrc3VtfGNsZWFyfGNtcHxjb21tfGNvbW1hbmR8Y3B8Y3Jvbnxjcm9udGFifGNzcGxpdHxjdXJsfGN1dHxkYXRlfGRjfGRkfGRkcmVzY3VlfGRmfGRpZmZ8ZGlmZjN8ZGlnfGRpcnxkaXJjb2xvcnN8ZGlybmFtZXxkaXJzfGRtZXNnfGR1fGVncmVwfGVqZWN0fGVuYWJsZXxlbnZ8ZXRodG9vbHxldmFsfGV4ZWN8ZXhwYW5kfGV4cGVjdHxleHBvcnR8ZXhwcnxmZGZvcm1hdHxmZGlza3xmZ3xmZ3JlcHxmaWxlfGZpbmR8Zm10fGZvbGR8Zm9ybWF0fGZyZWV8ZnNja3xmdHB8ZnVzZXJ8Z2F3a3xnZXRvcHRzfGdpdHxncmVwfGdyb3VwYWRkfGdyb3VwZGVsfGdyb3VwbW9kfGdyb3Vwc3xnemlwfGhhc2h8aGVhZHxoZWxwfGhnfGhpc3Rvcnl8aG9zdG5hbWV8aHRvcHxpY29udnxpZHxpZmNvbmZpZ3xpZmRvd258aWZ1cHxpbXBvcnR8aW5zdGFsbHxqb2JzfGpvaW58a2lsbHxraWxsYWxsfGxlc3N8bGlua3xsbnxsb2NhdGV8bG9nbmFtZXxsb2dvdXR8bG9va3xscGN8bHByfGxwcmludHxscHJpbnRkfGxwcmludHF8bHBybXxsc3xsc29mfG1ha2V8bWFufG1rZGlyfG1rZmlmb3xta2lzb2ZzfG1rbm9kfG1vcmV8bW9zdHxtb3VudHxtdG9vbHN8bXRyfG12fG1tdnxuYW5vfG5ldHN0YXR8bmljZXxubHxub2h1cHxub3RpZnktc2VuZHxucG18bnNsb29rdXB8b3BlbnxvcHxwYXNzd2R8cGFzdGV8cGF0aGNoa3xwaW5nfHBraWxsfHBvcGR8cHJ8cHJpbnRjYXB8cHJpbnRlbnZ8cHJpbnRmfHBzfHB1c2hkfHB2fHB3ZHxxdW90YXxxdW90YWNoZWNrfHF1b3RhY3RsfHJhbXxyYXJ8cmNwfHJlYWR8cmVhZGFycmF5fHJlYWRvbmx5fHJlYm9vdHxyZW5hbWV8cmVuaWNlfHJlbXN5bmN8cmV2fHJtfHJtZGlyfHJzeW5jfHNjcmVlbnxzY3B8c2RpZmZ8c2VkfHNlcXxzZXJ2aWNlfHNmdHB8c2hpZnR8c2hvcHR8c2h1dGRvd258c2xlZXB8c2xvY2F0ZXxzb3J0fHNvdXJjZXxzcGxpdHxzc2h8c3RhdHxzdHJhY2V8c3V8c3Vkb3xzdW18c3VzcGVuZHxzeW5jfHRhaWx8dGFyfHRlZXx0ZXN0fHRpbWV8dGltZW91dHx0aW1lc3x0b3VjaHx0b3B8dHJhY2Vyb3V0ZXx0cmFwfHRyfHRzb3J0fHR0eXx0eXBlfHVsaW1pdHx1bWFza3x1bW91bnR8dW5hbGlhc3x1bmFtZXx1bmV4cGFuZHx1bmlxfHVuaXRzfHVucmFyfHVuc2hhcnx1cHRpbWV8dXNlcmFkZHx1c2VyZGVsfHVzZXJtb2R8dXNlcnN8dXVlbmNvZGV8dXVkZWNvZGV8dnx2ZGlyfHZpfHZtc3RhdHx3YWl0fHdhdGNofHdjfHdnZXR8d2hlcmVpc3x3aGljaHx3aG98d2hvYW1pfHdyaXRlfHhhcmdzfHhkZy1vcGVufHllc3x6aXApKD89JHxbXFxzO3wmXSkvLGxvb2tiZWhpbmQ6ITB9LGtleXdvcmQ6e3BhdHRlcm46LyhefFtcXHM7fCZdKSg/OmxldHw6fFxcLnxpZnx0aGVufGVsc2V8ZWxpZnxmaXxmb3J8YnJlYWt8Y29udGludWV8d2hpbGV8aW58Y2FzZXxmdW5jdGlvbnxzZWxlY3R8ZG98ZG9uZXx1bnRpbHxlY2hvfGV4aXR8cmV0dXJufHNldHxkZWNsYXJlKSg/PSR8W1xcczt8Jl0pLyxsb29rYmVoaW5kOiEwfSxib29sZWFuOntwYXR0ZXJuOi8oXnxbXFxzO3wmXSkoPzp0cnVlfGZhbHNlKSg/PSR8W1xcczt8Jl0pLyxsb29rYmVoaW5kOiEwfSxvcGVyYXRvcjovJiY/fFxcfFxcfD98PT0/fCE9P3w8PDw/fD4+fDw9P3w+PT98PX4vLHB1bmN0dWF0aW9uOi9cXCQ/XFwoXFwoP3xcXClcXCk/fFxcLlxcLnxbe31bXFxdO10vfTt2YXIgbj10LnZhcmlhYmxlWzFdLmluc2lkZTtuLnN0cmluZz1lLmxhbmd1YWdlcy5iYXNoLnN0cmluZyxuLmZ1bmN0aW9uPWUubGFuZ3VhZ2VzLmJhc2guZnVuY3Rpb24sbi5rZXl3b3JkPWUubGFuZ3VhZ2VzLmJhc2gua2V5d29yZCxuLmJvb2xlYW49ZS5sYW5ndWFnZXMuYmFzaC5ib29sZWFuLG4ub3BlcmF0b3I9ZS5sYW5ndWFnZXMuYmFzaC5vcGVyYXRvcixuLnB1bmN0dWF0aW9uPWUubGFuZ3VhZ2VzLmJhc2gucHVuY3R1YXRpb24sZS5sYW5ndWFnZXMuc2hlbGw9ZS5sYW5ndWFnZXMuYmFzaH0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImJhc2hcIixyLmFsaWFzZXM9W1wic2hlbGxcIl19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXt2YXIgdD0vJSU/W346XFx3XSslP3whXFxTKyEvLG49e3BhdHRlcm46L1xcL1thLXo/XSsoPz1bIDpdfCQpOj98LVthLXpdXFxifC0tW2Etei1dK1xcYi9pbSxhbGlhczpcImF0dHItbmFtZVwiLGluc2lkZTp7cHVuY3R1YXRpb246LzovfX0scj0vXCJbXlwiXSpcIi8sbz0vKD86XFxifC0pXFxkK1xcYi87ZS5sYW5ndWFnZXMuYmF0Y2g9e2NvbW1lbnQ6Wy9eOjouKi9tLHtwYXR0ZXJuOi8oKD86XnxbJihdKVsgXFx0XSopcmVtXFxiKD86W15eJilcXHJcXG5dfFxcXig/OlxcclxcbnxbXFxzXFxTXSkpKi9pbSxsb29rYmVoaW5kOiEwfV0sbGFiZWw6e3BhdHRlcm46L146LiovbSxhbGlhczpcInByb3BlcnR5XCJ9LGNvbW1hbmQ6W3twYXR0ZXJuOi8oKD86XnxbJihdKVsgXFx0XSopZm9yKD86ID9cXC9bYS16P10oPzpbIDpdKD86XCJbXlwiXSpcInxcXFMrKSk/KSogXFxTKyBpbiBcXChbXildK1xcKSBkby9pbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7a2V5d29yZDovXmZvclxcYnxcXGIoPzppbnxkbylcXGIvaSxzdHJpbmc6cixwYXJhbWV0ZXI6bix2YXJpYWJsZTp0LG51bWJlcjpvLHB1bmN0dWF0aW9uOi9bKCknLF0vfX0se3BhdHRlcm46LygoPzpefFsmKF0pWyBcXHRdKilpZig/OiA/XFwvW2Etej9dKD86WyA6XSg/OlwiW15cIl0qXCJ8XFxTKykpPykqICg/Om5vdCApPyg/OmNtZGV4dHZlcnNpb24gXFxkK3xkZWZpbmVkIFxcdyt8ZXJyb3JsZXZlbCBcXGQrfGV4aXN0IFxcUyt8KD86XCJbXlwiXSpcInxcXFMrKT8oPzo9PXwgKD86ZXF1fG5lcXxsc3N8bGVxfGd0cnxnZXEpICkoPzpcIlteXCJdKlwifFxcUyspKS9pbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7a2V5d29yZDovXmlmXFxifFxcYig/Om5vdHxjbWRleHR2ZXJzaW9ufGRlZmluZWR8ZXJyb3JsZXZlbHxleGlzdClcXGIvaSxzdHJpbmc6cixwYXJhbWV0ZXI6bix2YXJpYWJsZTp0LG51bWJlcjpvLG9wZXJhdG9yOi9cXF58PT18XFxiKD86ZXF1fG5lcXxsc3N8bGVxfGd0cnxnZXEpXFxiL2l9fSx7cGF0dGVybjovKCg/Ol58WyYoKV0pWyBcXHRdKillbHNlXFxiL2ltLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntrZXl3b3JkOi9eZWxzZVxcYi9pfX0se3BhdHRlcm46LygoPzpefFsmKF0pWyBcXHRdKilzZXQoPzogP1xcL1thLXpdKD86WyA6XSg/OlwiW15cIl0qXCJ8XFxTKykpPykqICg/OlteXiYpXFxyXFxuXXxcXF4oPzpcXHJcXG58W1xcc1xcU10pKSovaW0sbG9va2JlaGluZDohMCxpbnNpZGU6e2tleXdvcmQ6L15zZXRcXGIvaSxzdHJpbmc6cixwYXJhbWV0ZXI6bix2YXJpYWJsZTpbdCwvXFx3Kyg/PSg/OlsqXFwvJStcXC0mXnxdfDw8fD4+KT89KS9dLG51bWJlcjpvLG9wZXJhdG9yOi9bKlxcLyUrXFwtJl58XT0/fDw8PT98Pj49P3xbIX5fPV0vLHB1bmN0dWF0aW9uOi9bKCknLF0vfX0se3BhdHRlcm46LygoPzpefFsmKF0pWyBcXHRdKkA/KVxcdytcXGIoPzpbXl4mKVxcclxcbl18XFxeKD86XFxyXFxufFtcXHNcXFNdKSkqL2ltLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntrZXl3b3JkOi9eXFx3K1xcYi9pLHN0cmluZzpyLHBhcmFtZXRlcjpuLGxhYmVsOntwYXR0ZXJuOi8oXlxccyopOlxcUysvbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwicHJvcGVydHlcIn0sdmFyaWFibGU6dCxudW1iZXI6byxvcGVyYXRvcjovXFxeL319XSxvcGVyYXRvcjovWyZAXS8scHVuY3R1YXRpb246L1soKSddL319KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJiYXRjaFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMzQpO2Z1bmN0aW9uIG8oZSl7ZS5yZWdpc3RlcihyKSxlLmxhbmd1YWdlcy5iaXNvbj1lLmxhbmd1YWdlcy5leHRlbmQoXCJjXCIse30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImJpc29uXCIsXCJjb21tZW50XCIse2Jpc29uOntwYXR0ZXJuOi9eW1xcc1xcU10qPyUlW1xcc1xcU10qPyUlLyxpbnNpZGU6e2M6e3BhdHRlcm46LyVcXHtbXFxzXFxTXSo/JVxcfXxcXHsoPzpcXHtbXn1dKlxcfXxbXnt9XSkqXFx9LyxpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXiU/XFx7fCU/XFx9JC8sYWxpYXM6XCJwdW5jdHVhdGlvblwifSxcImJpc29uLXZhcmlhYmxlXCI6e3BhdHRlcm46L1skQF0oPzo8W15cXHM+XSs+KT9bXFx3JF0rLyxhbGlhczpcInZhcmlhYmxlXCIsaW5zaWRlOntwdW5jdHVhdGlvbjovPHw+L319LHJlc3Q6ZS5sYW5ndWFnZXMuY319LGNvbW1lbnQ6ZS5sYW5ndWFnZXMuYy5jb21tZW50LHN0cmluZzplLmxhbmd1YWdlcy5jLnN0cmluZyxwcm9wZXJ0eTovXFxTKyg/PTopLyxrZXl3b3JkOi8lXFx3Ky8sbnVtYmVyOntwYXR0ZXJuOi8oXnxbXkBdKVxcYig/OjB4W1xcZGEtZl0rfFxcZCspL2ksbG9va2JlaGluZDohMH0scHVuY3R1YXRpb246LyVbJT9dfFt8OjtcXFtcXF08Pl0vfX19KX1lLmV4cG9ydHM9byxvLmRpc3BsYXlOYW1lPVwiYmlzb25cIixvLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmJyYWluZnVjaz17cG9pbnRlcjp7cGF0dGVybjovPHw+LyxhbGlhczpcImtleXdvcmRcIn0saW5jcmVtZW50OntwYXR0ZXJuOi9cXCsvLGFsaWFzOlwiaW5zZXJ0ZWRcIn0sZGVjcmVtZW50OntwYXR0ZXJuOi8tLyxhbGlhczpcImRlbGV0ZWRcIn0sYnJhbmNoaW5nOntwYXR0ZXJuOi9cXFt8XFxdLyxhbGlhczpcImltcG9ydGFudFwifSxvcGVyYXRvcjovWy4sXS8sY29tbWVudDovXFxTKy99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJicmFpbmZ1Y2tcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmJybz17Y29tbWVudDp7cGF0dGVybjovKF58W15cXFxcJF0pIy4qLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7aXRhbGljOi9cXGIoPzpUT0RPfEZJWE1FfFhYWClcXGIvfX0sc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfSxib29sZWFuOi9cXGJbVEZdXFxiLyxmdW5jdGlvbjp7cGF0dGVybjovKD86ZnVuY3Rpb258aG9va3xldmVudCkgXFx3Kyg/Ojo6XFx3Kyk/LyxpbnNpZGU6e2tleXdvcmQ6L14oPzpmdW5jdGlvbnxob29rfGV2ZW50KS99fSx2YXJpYWJsZTp7cGF0dGVybjovKD86Z2xvYmFsfGxvY2FsKSBcXHcrL2ksaW5zaWRlOntrZXl3b3JkOi8oPzpnbG9iYWx8bG9jYWwpL319LGJ1aWx0aW46Lyg/OkAoPzpsb2FkKD86LSg/OnNpZ3N8cGx1Z2luKSk/fHVubG9hZHxwcmVmaXhlc3xpZm4/ZGVmfGVsc2V8KD86ZW5kKT9pZnxESVJ8RklMRU5BTUUpKXwoPzomPyg/OnJlZGVmfHByaW9yaXR5fGxvZ3xvcHRpb25hbHxkZWZhdWx0fGFkZF9mdW5jfGRlbGV0ZV9mdW5jfGV4cGlyZV9mdW5jfHJlYWRfZXhwaXJlfHdyaXRlX2V4cGlyZXxjcmVhdGVfZXhwaXJlfHN5bmNocm9uaXplZHxwZXJzaXN0ZW50fHJvdGF0ZV9pbnRlcnZhbHxyb3RhdGVfc2l6ZXxlbmNyeXB0fHJhd19vdXRwdXR8bWVyZ2VhYmxlfGdyb3VwfGVycm9yX2hhbmRsZXJ8dHlwZV9jb2x1bW4pKS8sY29uc3RhbnQ6e3BhdHRlcm46L2NvbnN0IFxcdysvaSxpbnNpZGU6e2tleXdvcmQ6L2NvbnN0L319LGtleXdvcmQ6L1xcYig/OmJyZWFrfG5leHR8Y29udGludWV8YWxhcm18dXNpbmd8b2Z8YWRkfGRlbGV0ZXxleHBvcnR8cHJpbnR8cmV0dXJufHNjaGVkdWxlfHdoZW58dGltZW91dHxhZGRyfGFueXxib29sfGNvdW50fGRvdWJsZXxlbnVtfGZpbGV8aW50fGludGVydmFsfHBhdHRlcm58b3BhcXVlfHBvcnR8cmVjb3JkfHNldHxzdHJpbmd8c3VibmV0fHRhYmxlfHRpbWV8dmVjdG9yfGZvcnxpZnxlbHNlfGlufG1vZHVsZXxmdW5jdGlvbilcXGIvLG9wZXJhdG9yOi8tLT98XFwrXFwrP3whPT89P3w8PT98Pj0/fD09Pz0/fCYmfFxcfFxcfD98XFw/fFxcKnxcXC98fnxcXF58JS8sbnVtYmVyOi9cXGIweFtcXGRhLWZdK1xcYnwoPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzplWystXT9cXGQrKT8vaSxwdW5jdHVhdGlvbjovW3t9W1xcXTsoKSwuOl0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiYnJvXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5jbG9qdXJlPXtjb21tZW50Oi87Ky4qLyxzdHJpbmc6L1wiKD86XFxcXC58W15cXFxcXCJcXHJcXG5dKSpcIi8sb3BlcmF0b3I6Lyg/Ojo6fFs6fCddKVxcYlthLXpdW1xcdyorIT8tXSpcXGIvaSxrZXl3b3JkOntwYXR0ZXJuOi8oW15cXHcrKic/LV0pKD86ZGVmfGlmfGRvfGxldHxcXC5cXC58cXVvdGV8dmFyfC0+PnwtPnxmbnxsb29wfHJlY3VyfHRocm93fHRyeXxtb25pdG9yLWVudGVyfFxcLnxuZXd8c2V0IXxkZWZcXC18ZGVmbnxkZWZuXFwtfGRlZm1hY3JvfGRlZm11bHRpfGRlZm1ldGhvZHxkZWZzdHJ1Y3R8ZGVmb25jZXxkZWNsYXJlfGRlZmlubGluZXxkZWZpbnRlcmZhY2V8ZGVmcHJvdG9jb2x8PT18ZGVmcmVjb3JkfD49fGRlZnR5cGV8PD18ZGVmcHJvamVjdHxuc3xcXCp8XFwrfFxcLXxcXC98PHw9fD58YWNjZXNzb3J8YWdlbnR8YWdlbnQtZXJyb3JzfGFnZXR8YWxlbmd0aHxhbGwtbnN8YWx0ZXJ8YW5kfGFwcGVuZC1jaGlsZHxhcHBseXxhcnJheS1tYXB8YXNldHxhc2V0LWJvb2xlYW58YXNldC1ieXRlfGFzZXQtY2hhcnxhc2V0LWRvdWJsZXxhc2V0LWZsb2F0fGFzZXQtaW50fGFzZXQtbG9uZ3xhc2V0LXNob3J0fGFzc2VydHxhc3NvY3xhd2FpdHxhd2FpdC1mb3J8YmVhbnxiaW5kaW5nfGJpdC1hbmR8Yml0LW5vdHxiaXQtb3J8Yml0LXNoaWZ0LWxlZnR8Yml0LXNoaWZ0LXJpZ2h0fGJpdC14b3J8Ym9vbGVhbnxicmFuY2hcXD98YnV0bGFzdHxieXRlfGNhc3R8Y2hhcnxjaGlsZHJlbnxjbGFzc3xjbGVhci1hZ2VudC1lcnJvcnN8Y29tbWVudHxjb21tdXRlfGNvbXB8Y29tcGFyYXRvcnxjb21wbGVtZW50fGNvbmNhdHxjb25qfGNvbnN8Y29uc3RhbnRseXxjb25kfGlmLW5vdHxjb25zdHJ1Y3QtcHJveHl8Y29udGFpbnNcXD98Y291bnR8Y3JlYXRlLW5zfGNyZWF0ZS1zdHJ1Y3R8Y3ljbGV8ZGVjfGRlcmVmfGRpZmZlcmVuY2V8ZGlzanxkaXNzb2N8ZGlzdGluY3R8ZG9hbGx8ZG9jfGRvcnVufGRvc2VxfGRvc3luY3xkb3RpbWVzfGRvdG98ZG91YmxlfGRvd258ZHJvcHxkcm9wLXdoaWxlfGVkaXR8ZW5kXFw/fGVuc3VyZXxldmFsfGV2ZXJ5XFw/fGZhbHNlXFw/fGZmaXJzdHxmaWxlLXNlcXxmaWx0ZXJ8ZmluZHxmaW5kLWRvY3xmaW5kLW5zfGZpbmQtdmFyfGZpcnN0fGZsb2F0fGZsdXNofGZvcnxmbnNlcXxmcmVzdHxnZW5zeW18Z2V0LXByb3h5LWNsYXNzfGdldHxoYXNoLW1hcHxoYXNoLXNldHxpZGVudGljYWxcXD98aWRlbnRpdHl8aWYtbGV0fGltcG9ydHxpbi1uc3xpbmN8aW5kZXh8aW5zZXJ0LWNoaWxkfGluc2VydC1sZWZ0fGluc2VydC1yaWdodHxpbnNwZWN0LXRhYmxlfGluc3BlY3QtdHJlZXxpbnN0YW5jZVxcP3xpbnR8aW50ZXJsZWF2ZXxpbnRlcnNlY3Rpb258aW50b3xpbnRvLWFycmF5fGl0ZXJhdGV8am9pbnxrZXl8a2V5c3xrZXl3b3JkfGtleXdvcmRcXD98bGFzdHxsYXp5LWNhdHxsYXp5LWNvbnN8bGVmdHxsZWZ0c3xsaW5lLXNlcXxsaXN0XFwqfGxpc3R8bG9hZHxsb2FkLWZpbGV8bG9ja2luZ3xsb25nfGxvb3B8bWFjcm9leHBhbmR8bWFjcm9leHBhbmQtMXxtYWtlLWFycmF5fG1ha2Utbm9kZXxtYXB8bWFwLWludmVydHxtYXBcXD98bWFwY2F0fG1heHxtYXgta2V5fG1lbWZufG1lcmdlfG1lcmdlLXdpdGh8bWV0YXxtaW58bWluLWtleXxuYW1lfG5hbWVzcGFjZXxuZWdcXD98bmV3fG5ld2xpbmV8bmV4dHxuaWxcXD98bm9kZXxub3R8bm90LWFueVxcP3xub3QtZXZlcnlcXD98bm90PXxucy1pbXBvcnRzfG5zLWludGVybnN8bnMtbWFwfG5zLW5hbWV8bnMtcHVibGljc3xucy1yZWZlcnN8bnMtcmVzb2x2ZXxucy11bm1hcHxudGh8bnRocmVzdHxvcnxwYXJzZXxwYXJ0aWFsfHBhdGh8cGVla3xwb3B8cG9zXFw/fHByfHByLXN0cnxwcmludHxwcmludC1zdHJ8cHJpbnRsbnxwcmludGxuLXN0cnxwcm58cHJuLXN0cnxwcm9qZWN0fHByb3h5fHByb3h5LW1hcHBpbmdzfHF1b3R8cmFuZHxyYW5kLWludHxyYW5nZXxyZS1maW5kfHJlLWdyb3Vwc3xyZS1tYXRjaGVyfHJlLW1hdGNoZXN8cmUtcGF0dGVybnxyZS1zZXF8cmVhZHxyZWFkLWxpbmV8cmVkdWNlfHJlZnxyZWYtc2V0fHJlZmVyfHJlbXxyZW1vdmV8cmVtb3ZlLW1ldGhvZHxyZW1vdmUtbnN8cmVuYW1lfHJlbmFtZS1rZXlzfHJlcGVhdHxyZXBsYWNlfHJlcGxpY2F0ZXxyZXNvbHZlfHJlc3R8cmVzdWx0c2V0LXNlcXxyZXZlcnNlfHJmaXJzdHxyaWdodHxyaWdodHN8cm9vdHxycmVzdHxyc2VxfHNlY29uZHxzZWxlY3R8c2VsZWN0LWtleXN8c2VuZHxzZW5kLW9mZnxzZXF8c2VxLXppcHxzZXFcXD98c2V0fHNob3J0fHNsdXJwfHNvbWV8c29ydHxzb3J0LWJ5fHNvcnRlZC1tYXB8c29ydGVkLW1hcC1ieXxzb3J0ZWQtc2V0fHNwZWNpYWwtc3ltYm9sXFw/fHNwbGl0LWF0fHNwbGl0LXdpdGh8c3RyfHN0cmluZ1xcP3xzdHJ1Y3R8c3RydWN0LW1hcHxzdWJzfHN1YnZlY3xzeW1ib2x8c3ltYm9sXFw/fHN5bmN8dGFrZXx0YWtlLW50aHx0YWtlLXdoaWxlfHRlc3R8dGltZXx0by1hcnJheXx0by1hcnJheS0yZHx0cmVlLXNlcXx0cnVlXFw/fHVuaW9ufHVwfHVwZGF0ZS1wcm94eXx2YWx8dmFsc3x2YXItZ2V0fHZhci1zZXR8dmFyXFw/fHZlY3Rvcnx2ZWN0b3ItemlwfHZlY3RvclxcP3x3aGVufHdoZW4tZmlyc3R8d2hlbi1sZXR8d2hlbi1ub3R8d2l0aC1sb2NhbC12YXJzfHdpdGgtbWV0YXx3aXRoLW9wZW58d2l0aC1vdXQtc3RyfHhtbC1zZXF8eG1sLXppcHx6ZXJvXFw/fHppcG1hcHx6aXBwZXIpKD89W15cXHcrKic/LV0pLyxsb29rYmVoaW5kOiEwfSxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlfG5pbClcXGIvLG51bWJlcjovXFxiWzAtOUEtRmEtZl0rXFxiLyxwdW5jdHVhdGlvbjovW3t9XFxbXFxdKCksXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJjbG9qdXJlXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7dmFyIHQ9LyMoPyFcXHspLisvLG49e3BhdHRlcm46LyNcXHtbXn1dK1xcfS8sYWxpYXM6XCJ2YXJpYWJsZVwifTtlLmxhbmd1YWdlcy5jb2ZmZWVzY3JpcHQ9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiamF2YXNjcmlwdFwiLHtjb21tZW50OnQsc3RyaW5nOlt7cGF0dGVybjovJyg/OlxcXFxbXFxzXFxTXXxbXlxcXFwnXSkqJy8sZ3JlZWR5OiEwfSx7cGF0dGVybjovXCIoPzpcXFxcW1xcc1xcU118W15cXFxcXCJdKSpcIi8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjpufX1dLGtleXdvcmQ6L1xcYig/OmFuZHxicmVha3xieXxjYXRjaHxjbGFzc3xjb250aW51ZXxkZWJ1Z2dlcnxkZWxldGV8ZG98ZWFjaHxlbHNlfGV4dGVuZHxleHRlbmRzfGZhbHNlfGZpbmFsbHl8Zm9yfGlmfGlufGluc3RhbmNlb2Z8aXN8aXNudHxsZXR8bG9vcHxuYW1lc3BhY2V8bmV3fG5vfG5vdHxudWxsfG9mfG9mZnxvbnxvcnxvd258cmV0dXJufHN1cGVyfHN3aXRjaHx0aGVufHRoaXN8dGhyb3d8dHJ1ZXx0cnl8dHlwZW9mfHVuZGVmaW5lZHx1bmxlc3N8dW50aWx8d2hlbnx3aGlsZXx3aW5kb3d8d2l0aHx5ZXN8eWllbGQpXFxiLyxcImNsYXNzLW1lbWJlclwiOntwYXR0ZXJuOi9AKD8hXFxkKVxcdysvLGFsaWFzOlwidmFyaWFibGVcIn19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJjb2ZmZWVzY3JpcHRcIixcImNvbW1lbnRcIix7XCJtdWx0aWxpbmUtY29tbWVudFwiOntwYXR0ZXJuOi8jIyNbXFxzXFxTXSs/IyMjLyxhbGlhczpcImNvbW1lbnRcIn0sXCJibG9jay1yZWdleFwiOntwYXR0ZXJuOi9cXC97M31bXFxzXFxTXSo/XFwvezN9LyxhbGlhczpcInJlZ2V4XCIsaW5zaWRlOntjb21tZW50OnQsaW50ZXJwb2xhdGlvbjpufX19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJjb2ZmZWVzY3JpcHRcIixcInN0cmluZ1wiLHtcImlubGluZS1qYXZhc2NyaXB0XCI6e3BhdHRlcm46L2AoPzpcXFxcW1xcc1xcU118W15cXFxcYF0pKmAvLGluc2lkZTp7ZGVsaW1pdGVyOntwYXR0ZXJuOi9eYHxgJC8sYWxpYXM6XCJwdW5jdHVhdGlvblwifSxyZXN0OmUubGFuZ3VhZ2VzLmphdmFzY3JpcHR9fSxcIm11bHRpbGluZS1zdHJpbmdcIjpbe3BhdHRlcm46LycnJ1tcXHNcXFNdKj8nJycvLGdyZWVkeTohMCxhbGlhczpcInN0cmluZ1wifSx7cGF0dGVybjovXCJcIlwiW1xcc1xcU10qP1wiXCJcIi8sZ3JlZWR5OiEwLGFsaWFzOlwic3RyaW5nXCIsaW5zaWRlOntpbnRlcnBvbGF0aW9uOm59fV19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJjb2ZmZWVzY3JpcHRcIixcImtleXdvcmRcIix7cHJvcGVydHk6Lyg/IVxcZClcXHcrKD89XFxzKjooPyE6KSkvfSksZGVsZXRlIGUubGFuZ3VhZ2VzLmNvZmZlZXNjcmlwdFtcInRlbXBsYXRlLXN0cmluZ1wiXX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImNvZmZlZXNjcmlwdFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oOTcpO2Z1bmN0aW9uIG8oZSl7ZS5yZWdpc3RlcihyKSxmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5jcnlzdGFsPWUubGFuZ3VhZ2VzLmV4dGVuZChcInJ1YnlcIix7a2V5d29yZDpbL1xcYig/OmFic3RyYWN0fGFsaWFzfGFzfGFzbXxiZWdpbnxicmVha3xjYXNlfGNsYXNzfGRlZnxkb3xlbHNlfGVsc2lmfGVuZHxlbnN1cmV8ZW51bXxleHRlbmR8Zm9yfGZ1bnxpZnxpbmNsdWRlfGluc3RhbmNlX3NpemVvZnxsaWJ8bWFjcm98bW9kdWxlfG5leHR8b2Z8b3V0fHBvaW50ZXJvZnxwcml2YXRlfHByb3RlY3RlZHxyZXNjdWV8cmV0dXJufHJlcXVpcmV8c2VsZWN0fHNlbGZ8c2l6ZW9mfHN0cnVjdHxzdXBlcnx0aGVufHR5cGV8dHlwZW9mfHVuaW5pdGlhbGl6ZWR8dW5pb258dW5sZXNzfHVudGlsfHdoZW58d2hpbGV8d2l0aHx5aWVsZHxfX0RJUl9ffF9fRU5EX0xJTkVfX3xfX0ZJTEVfX3xfX0xJTkVfXylcXGIvLHtwYXR0ZXJuOi8oXFwuXFxzKikoPzppc19hfHJlc3BvbmRzX3RvKVxcPy8sbG9va2JlaGluZDohMH1dLG51bWJlcjovXFxiKD86MGJbMDFfXSpbMDFdfDBvWzAtN19dKlswLTddfDB4W1xcZGEtZkEtRl9dKltcXGRhLWZBLUZdfCg/OlxcZCg/OltcXGRfXSpcXGQpPykoPzpcXC5bXFxkX10qXFxkKT8oPzpbZUVdWystXT9bXFxkX10qXFxkKT8pKD86Xyg/Olt1aWZdKD86OHwxNnwzMnw2NCkpPyk/XFxiL30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImNyeXN0YWxcIixcInN0cmluZ1wiLHthdHRyaWJ1dGU6e3BhdHRlcm46L0BcXFsuKz9cXF0vLGFsaWFzOlwiYXR0ci1uYW1lXCIsaW5zaWRlOntkZWxpbWl0ZXI6e3BhdHRlcm46L15AXFxbfFxcXSQvLGFsaWFzOlwidGFnXCJ9LHJlc3Q6ZS5sYW5ndWFnZXMuY3J5c3RhbH19LGV4cGFuc2lvbjpbe3BhdHRlcm46L1xce1xcey4rP1xcfVxcfS8saW5zaWRlOntkZWxpbWl0ZXI6e3BhdHRlcm46L15cXHtcXHt8XFx9XFx9JC8sYWxpYXM6XCJ0YWdcIn0scmVzdDplLmxhbmd1YWdlcy5jcnlzdGFsfX0se3BhdHRlcm46L1xceyUuKz8lXFx9LyxpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXlxceyV8JVxcfSQvLGFsaWFzOlwidGFnXCJ9LHJlc3Q6ZS5sYW5ndWFnZXMuY3J5c3RhbH19XX0pfShlKX1lLmV4cG9ydHM9byxvLmRpc3BsYXlOYW1lPVwiY3J5c3RhbFwiLG8uYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuY3NoYXJwPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2tleXdvcmQ6L1xcYig/OmFic3RyYWN0fGFkZHxhbGlhc3xhc3xhc2NlbmRpbmd8YXN5bmN8YXdhaXR8YmFzZXxib29sfGJyZWFrfGJ5dGV8Y2FzZXxjYXRjaHxjaGFyfGNoZWNrZWR8Y2xhc3N8Y29uc3R8Y29udGludWV8ZGVjaW1hbHxkZWZhdWx0fGRlbGVnYXRlfGRlc2NlbmRpbmd8ZG98ZG91YmxlfGR5bmFtaWN8ZWxzZXxlbnVtfGV2ZW50fGV4cGxpY2l0fGV4dGVybnxmYWxzZXxmaW5hbGx5fGZpeGVkfGZsb2F0fGZvcnxmb3JlYWNofGZyb218Z2V0fGdsb2JhbHxnb3RvfGdyb3VwfGlmfGltcGxpY2l0fGlufGludHxpbnRlcmZhY2V8aW50ZXJuYWx8aW50b3xpc3xqb2lufGxldHxsb2NrfGxvbmd8bmFtZXNwYWNlfG5ld3xudWxsfG9iamVjdHxvcGVyYXRvcnxvcmRlcmJ5fG91dHxvdmVycmlkZXxwYXJhbXN8cGFydGlhbHxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8cmVhZG9ubHl8cmVmfHJlbW92ZXxyZXR1cm58c2J5dGV8c2VhbGVkfHNlbGVjdHxzZXR8c2hvcnR8c2l6ZW9mfHN0YWNrYWxsb2N8c3RhdGljfHN0cmluZ3xzdHJ1Y3R8c3dpdGNofHRoaXN8dGhyb3d8dHJ1ZXx0cnl8dHlwZW9mfHVpbnR8dWxvbmd8dW5jaGVja2VkfHVuc2FmZXx1c2hvcnR8dXNpbmd8dmFsdWV8dmFyfHZpcnR1YWx8dm9pZHx2b2xhdGlsZXx3aGVyZXx3aGlsZXx5aWVsZClcXGIvLHN0cmluZzpbe3BhdHRlcm46L0AoXCJ8JykoPzpcXDFcXDF8XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKSpcXDEvLGdyZWVkeTohMH0se3BhdHRlcm46LyhcInwnKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSo/XFwxLyxncmVlZHk6ITB9XSxcImNsYXNzLW5hbWVcIjpbe3BhdHRlcm46L1xcYltBLVpdXFx3Kig/OlxcLlxcdyspKlxcYig/PVxccytcXHcrKS8saW5zaWRlOntwdW5jdHVhdGlvbjovXFwuL319LHtwYXR0ZXJuOi8oXFxbKVtBLVpdXFx3Kig/OlxcLlxcdyspKlxcYi8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cXC4vfX0se3BhdHRlcm46LyhcXGIoPzpjbGFzc3xpbnRlcmZhY2UpXFxzK1tBLVpdXFx3Kig/OlxcLlxcdyspKlxccyo6XFxzKilbQS1aXVxcdyooPzpcXC5cXHcrKSpcXGIvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwdW5jdHVhdGlvbjovXFwuL319LHtwYXR0ZXJuOi8oKD86XFxiKD86Y2xhc3N8aW50ZXJmYWNlfG5ldylcXHMrKXwoPzpjYXRjaFxccytcXCgpKVtBLVpdXFx3Kig/OlxcLlxcdyspKlxcYi8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cXC4vfX1dLG51bWJlcjovXFxiMHhbXFxkYS1mXStcXGJ8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspZj8vaX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImNzaGFycFwiLFwiY2xhc3MtbmFtZVwiLHtcImdlbmVyaWMtbWV0aG9kXCI6e3BhdHRlcm46L1xcdytcXHMqPFtePlxcclxcbl0rPz5cXHMqKD89XFwoKS8saW5zaWRlOntmdW5jdGlvbjovXlxcdysvLFwiY2xhc3MtbmFtZVwiOntwYXR0ZXJuOi9cXGJbQS1aXVxcdyooPzpcXC5cXHcrKSpcXGIvLGluc2lkZTp7cHVuY3R1YXRpb246L1xcLi99fSxrZXl3b3JkOmUubGFuZ3VhZ2VzLmNzaGFycC5rZXl3b3JkLHB1bmN0dWF0aW9uOi9bPD4oKSwuOl0vfX0scHJlcHJvY2Vzc29yOntwYXR0ZXJuOi8oXlxccyopIy4qL20sbG9va2JlaGluZDohMCxhbGlhczpcInByb3BlcnR5XCIsaW5zaWRlOntkaXJlY3RpdmU6e3BhdHRlcm46LyhcXHMqIylcXGIoPzpkZWZpbmV8ZWxpZnxlbHNlfGVuZGlmfGVuZHJlZ2lvbnxlcnJvcnxpZnxsaW5lfHByYWdtYXxyZWdpb258dW5kZWZ8d2FybmluZylcXGIvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJrZXl3b3JkXCJ9fX19KSxlLmxhbmd1YWdlcy5kb3RuZXQ9ZS5sYW5ndWFnZXMuY3NoYXJwfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJjc2hhcnBcIixyLmFsaWFzZXM9W1wiZG90bmV0XCJdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5jc3A9e2RpcmVjdGl2ZTp7cGF0dGVybjovXFxiKD86KD86YmFzZS11cml8Zm9ybS1hY3Rpb258ZnJhbWUtYW5jZXN0b3JzfHBsdWdpbi10eXBlc3xyZWZlcnJlcnxyZWZsZWN0ZWQteHNzfHJlcG9ydC10b3xyZXBvcnQtdXJpfHJlcXVpcmUtc3JpLWZvcnxzYW5kYm94KSB8KD86YmxvY2stYWxsLW1peGVkLWNvbnRlbnR8ZGlzb3duLW9wZW5lcnx1cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzKSg/OiB8Oyl8KD86Y2hpbGR8Y29ubmVjdHxkZWZhdWx0fGZvbnR8ZnJhbWV8aW1nfG1hbmlmZXN0fG1lZGlhfG9iamVjdHxzY3JpcHR8c3R5bGV8d29ya2VyKS1zcmMgKS9pLGFsaWFzOlwia2V5d29yZFwifSxzYWZlOntwYXR0ZXJuOi8nKD86c2VsZnxub25lfHN0cmljdC1keW5hbWljfCg/Om5vbmNlLXxzaGEoPzoyNTZ8Mzg0fDUxMiktKVthLXpBLVpcXGQrPVxcL10rKScvLGFsaWFzOlwic2VsZWN0b3JcIn0sdW5zYWZlOntwYXR0ZXJuOi8oPzondW5zYWZlLWlubGluZSd8J3Vuc2FmZS1ldmFsJ3wndW5zYWZlLWhhc2hlZC1hdHRyaWJ1dGVzJ3xcXCopLyxhbGlhczpcImZ1bmN0aW9uXCJ9fX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiY3NwXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5jc3Muc2VsZWN0b3I9e3BhdHRlcm46L1tee31cXHNdW157fV0qKD89XFxzKlxceykvLGluc2lkZTp7XCJwc2V1ZG8tZWxlbWVudFwiOi86KD86YWZ0ZXJ8YmVmb3JlfGZpcnN0LWxldHRlcnxmaXJzdC1saW5lfHNlbGVjdGlvbil8OjpbLVxcd10rLyxcInBzZXVkby1jbGFzc1wiOi86Wy1cXHddKyg/OlxcKC4qXFwpKT8vLGNsYXNzOi9cXC5bLTouXFx3XSsvLGlkOi8jWy06Llxcd10rLyxhdHRyaWJ1dGU6L1xcW1teXFxdXStcXF0vfX0sZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiY3NzXCIsXCJmdW5jdGlvblwiLHtoZXhjb2RlOi8jW1xcZGEtZl17Myw4fS9pLGVudGl0eTovXFxcXFtcXGRhLWZdezEsOH0vaSxudW1iZXI6L1tcXGQlLl0rL30pfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJjc3NFeHRyYXNcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmQ9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7c3RyaW5nOlsvXFxiW3J4XVwiKD86XFxcXFtcXHNcXFNdfFteXFxcXFwiXSkqXCJbY3dkXT8vLC9cXGJxXCIoPzpcXFtbXFxzXFxTXSo/XFxdfFxcKFtcXHNcXFNdKj9cXCl8PFtcXHNcXFNdKj8+fFxce1tcXHNcXFNdKj9cXH0pXCIvLC9cXGJxXCIoW19hLXpBLVpdW19hLXpBLVpcXGRdKikoPzpcXHI/XFxufFxccilbXFxzXFxTXSo/KD86XFxyP1xcbnxcXHIpXFwxXCIvLC9cXGJxXCIoLilbXFxzXFxTXSo/XFwxXCIvLC8nKD86XFxcXCd8XFxcXD9bXiddKyknLywvKFtcImBdKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxW2N3ZF0/L10sbnVtYmVyOlsvXFxiMHhcXC4/W2EtZlxcZF9dKyg/Oig/IVxcLlxcLilcXC5bYS1mXFxkX10qKT8oPzpwWystXT9bYS1mXFxkX10rKT9bdWxmaV0qL2kse3BhdHRlcm46LygoPzpcXC5cXC4pPykoPzpcXGIwYlxcLj98XFxifFxcLilcXGRbXFxkX10qKD86KD8hXFwuXFwuKVxcLltcXGRfXSopPyg/OmVbKy1dP1xcZFtcXGRfXSopP1t1bGZpXSovaSxsb29rYmVoaW5kOiEwfV0sa2V5d29yZDovXFwkfFxcYig/OmFic3RyYWN0fGFsaWFzfGFsaWdufGFzbXxhc3NlcnR8YXV0b3xib2R5fGJvb2x8YnJlYWt8Ynl0ZXxjYXNlfGNhc3R8Y2F0Y2h8Y2RvdWJsZXxjZW50fGNmbG9hdHxjaGFyfGNsYXNzfGNvbnN0fGNvbnRpbnVlfGNyZWFsfGRjaGFyfGRlYnVnfGRlZmF1bHR8ZGVsZWdhdGV8ZGVsZXRlfGRlcHJlY2F0ZWR8ZG98ZG91YmxlfGVsc2V8ZW51bXxleHBvcnR8ZXh0ZXJufGZhbHNlfGZpbmFsfGZpbmFsbHl8ZmxvYXR8Zm9yfGZvcmVhY2h8Zm9yZWFjaF9yZXZlcnNlfGZ1bmN0aW9ufGdvdG98aWRvdWJsZXxpZnxpZmxvYXR8aW1tdXRhYmxlfGltcG9ydHxpbm91dHxpbnR8aW50ZXJmYWNlfGludmFyaWFudHxpcmVhbHxsYXp5fGxvbmd8bWFjcm98bWl4aW58bW9kdWxlfG5ld3xub3Rocm93fG51bGx8b3V0fG92ZXJyaWRlfHBhY2thZ2V8cHJhZ21hfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xwdXJlfHJlYWx8cmVmfHJldHVybnxzY29wZXxzaGFyZWR8c2hvcnR8c3RhdGljfHN0cnVjdHxzdXBlcnxzd2l0Y2h8c3luY2hyb25pemVkfHRlbXBsYXRlfHRoaXN8dGhyb3d8dHJ1ZXx0cnl8dHlwZWRlZnx0eXBlaWR8dHlwZW9mfHVieXRlfHVjZW50fHVpbnR8dWxvbmd8dW5pb258dW5pdHRlc3R8dXNob3J0fHZlcnNpb258dm9pZHx2b2xhdGlsZXx3Y2hhcnx3aGlsZXx3aXRofF9fKD86KD86RklMRXxNT0RVTEV8TElORXxGVU5DVElPTnxQUkVUVFlfRlVOQ1RJT058REFURXxFT0Z8VElNRXxUSU1FU1RBTVB8VkVORE9SfFZFUlNJT04pX198Z3NoYXJlZHx0cmFpdHN8dmVjdG9yfHBhcmFtZXRlcnMpfHN0cmluZ3x3c3RyaW5nfGRzdHJpbmd8c2l6ZV90fHB0cmRpZmZfdClcXGIvLG9wZXJhdG9yOi9cXHxbfD1dP3wmWyY9XT98XFwrWys9XT98LVstPV0/fFxcLj9cXC5cXC58PVs+PV0/fCEoPzppW25zXVxcYnw8Pj89P3w+PT98PSk/fFxcYmlbbnNdXFxifCg/OjxbPD5dP3w+Pj8+P3xcXF5cXF58WypcXC8lXn5dKT0/L30pLGUubGFuZ3VhZ2VzLmQuY29tbWVudD1bL15cXHMqIyEuKy8se3BhdHRlcm46LyhefFteXFxcXF0pXFwvXFwrKD86XFwvXFwrW1xcc1xcU10qP1xcK1xcL3xbXFxzXFxTXSkqP1xcK1xcLy8sbG9va2JlaGluZDohMH1dLmNvbmNhdChlLmxhbmd1YWdlcy5kLmNvbW1lbnQpLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImRcIixcImNvbW1lbnRcIix7XCJ0b2tlbi1zdHJpbmdcIjp7cGF0dGVybjovXFxicVxceyg/Olxce1tefV0qXFx9fFtefV0pKlxcfS8sYWxpYXM6XCJzdHJpbmdcIn19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJkXCIsXCJrZXl3b3JkXCIse3Byb3BlcnR5Oi9cXEJAXFx3Ki99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJkXCIsXCJmdW5jdGlvblwiLHtyZWdpc3Rlcjp7cGF0dGVybjovXFxiKD86W0FCQ0RdW0xIWF18RVtBQkNEXVh8RT8oPzpCUHxTUHxESXxTSSl8W0VDU0RHRl1TfENSWzAyMzRdfERSWzAxMjM2N118VFJbMy03XXxYP01NWzAtN118UltBQkNEXVh8W0JTXVBMfFJbQlNdUHxbRFNdSUx8UltEU11JfFIoPzpbODldfDFbMC01XSlbQldEXT98WE1NKD86Wzg5XXwxWzAtNV0pfFlNTSg/OjFbMC01XXxcXGQpKVxcYnxcXGJTVCg/OlxcKFswLTddXFwpfFxcYikvLGFsaWFzOlwidmFyaWFibGVcIn19KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuZGFydD1lLmxhbmd1YWdlcy5leHRlbmQoXCJjbGlrZVwiLHtzdHJpbmc6W3twYXR0ZXJuOi9yPyhcIlwiXCJ8JycnKVtcXHNcXFNdKj9cXDEvLGdyZWVkeTohMH0se3BhdHRlcm46L3I/KFwifCcpKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfV0sa2V5d29yZDpbL1xcYig/OmFzeW5jfHN5bmN8eWllbGQpXFwqLywvXFxiKD86YWJzdHJhY3R8YXNzZXJ0fGFzeW5jfGF3YWl0fGJyZWFrfGNhc2V8Y2F0Y2h8Y2xhc3N8Y29uc3R8Y29udGludWV8ZGVmYXVsdHxkZWZlcnJlZHxkb3xkeW5hbWljfGVsc2V8ZW51bXxleHBvcnR8ZXh0ZXJuYWx8ZXh0ZW5kc3xmYWN0b3J5fGZpbmFsfGZpbmFsbHl8Zm9yfGdldHxpZnxpbXBsZW1lbnRzfGltcG9ydHxpbnxsaWJyYXJ5fG5ld3xudWxsfG9wZXJhdG9yfHBhcnR8cmV0aHJvd3xyZXR1cm58c2V0fHN0YXRpY3xzdXBlcnxzd2l0Y2h8dGhpc3x0aHJvd3x0cnl8dHlwZWRlZnx2YXJ8dm9pZHx3aGlsZXx3aXRofHlpZWxkKVxcYi9dLG9wZXJhdG9yOi9cXGJpcyF8XFxiKD86YXN8aXMpXFxifFxcK1xcK3wtLXwmJnxcXHxcXHx8PDw9P3w+Pj0/fH4oPzpcXC89Pyk/fFsrXFwtKlxcLyUmXnw9ITw+XT0/fFxcPy99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJkYXJ0XCIsXCJmdW5jdGlvblwiLHttZXRhZGF0YTp7cGF0dGVybjovQFxcdysvLGFsaWFzOlwic3ltYm9sXCJ9fSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImRhcnRcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmRpZmY9e2Nvb3JkOlsvXig/OlxcKnszfXwtezN9fFxcK3szfSkuKiQvbSwvXkBALipAQCQvbSwvXlxcZCsuKiQvbV0sZGVsZXRlZDovXlstPF0uKiQvbSxpbnNlcnRlZDovXlsrPl0uKiQvbSxkaWZmOntwYXR0ZXJuOi9eISg/ISEpLiskL20sYWxpYXM6XCJpbXBvcnRhbnRcIn19fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJkaWZmXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXt2YXIgdD17cHJvcGVydHk6e3BhdHRlcm46Lyg/Ont7fHslKVtcXHNcXFNdKj8oPzolfXx9fSkvZyxncmVlZHk6ITAsaW5zaWRlOntzdHJpbmc6e3BhdHRlcm46LyhcInwnKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLGdyZWVkeTohMH0sa2V5d29yZDovXFxiKD86XFx8fGxvYWR8dmVyYmF0aW18d2lkdGhyYXRpb3xzc2l8Zmlyc3RvZnxmb3J8dXJsfGlmY2hhbmdlZHxjc3JmX3Rva2VufGxvcmVtfGlmbm90ZXF1YWx8YXV0b2VzY2FwZXxub3d8dGVtcGxhdGV0YWd8ZGVidWd8Y3ljbGV8aWZlcXVhbHxyZWdyb3VwfGNvbW1lbnR8ZmlsdGVyfGVuZGZpbHRlcnxpZnxzcGFjZWxlc3N8d2l0aHxleHRlbmRzfGJsb2NrfGluY2x1ZGV8ZWxzZXxlbXB0eXxlbmRpZnxlbmRmb3J8YXN8ZW5kYmxvY2t8ZW5kYXV0b2VzY2FwZXxlbmR2ZXJiYXRpbXx0cmFuc3xlbmR0cmFuc3xbVHRdcnVlfFtGZl1hbHNlfFtObl1vbmV8aW58aXN8c3RhdGljfG1hY3JvfGVuZG1hY3JvfGNhbGx8ZW5kY2FsbHxzZXR8ZW5kc2V0fHJhd3xlbmRyYXcpXFxiLyxvcGVyYXRvcjovWy0rPV09P3whPXxcXCpcXCo/PT98XFwvXFwvPz0/fDxbPD0+XT98Pls9Pl0/fFsmfF5+XXxcXGIoPzpvcnxhbmR8bm90KVxcYi8sZnVuY3Rpb246L1xcYig/Ol98YWJzfGFkZHxhZGRzbGFzaGVzfGF0dHJ8YmF0Y2h8Y2FsbGFibGV8Y2FwZmlyc3R8Y2FwaXRhbGl6ZXxjZW50ZXJ8Y291bnR8Y3V0fGR8ZGF0ZXxkZWZhdWx0fGRlZmF1bHRfaWZfbm9uZXxkZWZpbmVkfGRpY3Rzb3J0fGRpY3Rzb3J0cmV2ZXJzZWR8ZGl2aXNpYmxlYnl8ZXxlcXVhbHRvfGVzY2FwZXxlc2NhcGVkfGVzY2FwZWpzfGV2ZW58ZmlsZXNpemVmb3JtYXR8Zmlyc3R8ZmxvYXR8ZmxvYXRmb3JtYXR8Zm9yY2VfZXNjYXBlfGZvcmNlZXNjYXBlfGZvcm1hdHxnZXRfZGlnaXR8Z3JvdXBieXxpbmRlbnR8aW50fGlyaWVuY29kZXxpdGVyYWJsZXxqb2lufGxhc3R8bGVuZ3RofGxlbmd0aF9pc3xsaW5lYnJlYWtzfGxpbmVicmVha3NicnxsaW5lbnVtYmVyc3xsaXN0fGxqdXN0fGxvd2VyfG1ha2VfbGlzdHxtYXB8bWFwcGluZ3xudW1iZXJ8b2RkfHBob25lMm51bWVyaWN8cGx1cmFsaXplfHBwcmludHxyYW5kb218cmVqZWN0fHJlamVjdGF0dHJ8cmVtb3ZldGFnc3xyZXBsYWNlfHJldmVyc2V8cmp1c3R8cm91bmR8c2FmZXxzYWZlc2VxfHNhbWVhc3xzZWxlY3R8c2VsZWN0YXR0cnxzZXF1ZW5jZXxzbGljZXxzbHVnaWZ5fHNvcnR8c3RyaW5nfHN0cmluZ2Zvcm1hdHxzdHJpcHRhZ3N8c3VtfHRpbWV8dGltZXNpbmNlfHRpbWV1bnRpbHx0aXRsZXx0cmltfHRydW5jYXRlfHRydW5jYXRlY2hhcnN8dHJ1bmNhdGVjaGFyc19odG1sfHRydW5jYXRld29yZHN8dHJ1bmNhdGV3b3Jkc19odG1sfHVuZGVmaW5lZHx1bm9yZGVyZWRfbGlzdHx1cHBlcnx1cmxlbmNvZGV8dXJsaXplfHVybGl6ZXRydW5jfHdvcmRjb3VudHx3b3Jkd3JhcHx4bWxhdHRyfHllc25vKVxcYi8saW1wb3J0YW50Oi9cXGItP1xcZCsoPzpcXC5cXGQrKT9cXGIvLHZhcmlhYmxlOi9cXGJcXHcrP1xcYi8scHVuY3R1YXRpb246L1tbXFxdOygpLC46XS99fX07ZS5sYW5ndWFnZXMuZGphbmdvPWUubGFuZ3VhZ2VzLmV4dGVuZChcIm1hcmt1cFwiLHtjb21tZW50Oi8oPzo8IS0tfHsjKVtcXHNcXFNdKj8oPzojfXwtLT4pL30pLGUubGFuZ3VhZ2VzLmRqYW5nby50YWcucGF0dGVybj0vPFxcLz8oPyFcXGQpW15cXHM+XFwvPSQ8XSsoPzpcXHMrW15cXHM+XFwvPV0rKD86PSg/OihcInwnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxfFtePj1dKykpPykqXFxzKlxcLz8+L2ksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiZGphbmdvXCIsXCJlbnRpdHlcIix0KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJpbnNpZGVcIixcInRhZ1wiLHQsZS5sYW5ndWFnZXMuZGphbmdvLnRhZyksZS5sYW5ndWFnZXMuamF2YXNjcmlwdCYmKGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImluc2lkZVwiLFwic3RyaW5nXCIsdCxlLmxhbmd1YWdlcy5kamFuZ28uc2NyaXB0KSxlLmxhbmd1YWdlcy5kamFuZ28uc2NyaXB0Lmluc2lkZS5zdHJpbmcuaW5zaWRlPXQpLGUubGFuZ3VhZ2VzLmNzcyYmKGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImluc2lkZVwiLFwiYXRydWxlXCIse3RhZzp0LnByb3BlcnR5fSxlLmxhbmd1YWdlcy5kamFuZ28uc3R5bGUpLGUubGFuZ3VhZ2VzLmRqYW5nby5zdHlsZS5pbnNpZGUuc3RyaW5nLmluc2lkZT10KSxlLmxhbmd1YWdlcy5qaW5qYTI9ZS5sYW5ndWFnZXMuZGphbmdvfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJkamFuZ29cIixyLmFsaWFzZXM9W1wiamluamEyXCJdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5kb2NrZXI9e2tleXdvcmQ6e3BhdHRlcm46LyheXFxzKikoPzpBRER8QVJHfENNRHxDT1BZfEVOVFJZUE9JTlR8RU5WfEVYUE9TRXxGUk9NfEhFQUxUSENIRUNLfExBQkVMfE1BSU5UQUlORVJ8T05CVUlMRHxSVU58U0hFTEx8U1RPUFNJR05BTHxVU0VSfFZPTFVNRXxXT1JLRElSKSg/PVxccykvaW0sbG9va2JlaGluZDohMH0sc3RyaW5nOi8oXCJ8JykoPzooPyFcXDEpW15cXFxcXFxyXFxuXXxcXFxcKD86XFxyXFxufFtcXHNcXFNdKSkqXFwxLyxjb21tZW50Oi8jLiovLHB1bmN0dWF0aW9uOi8tLS18XFwuXFwuXFwufFs6W1xcXXt9XFwtLHw+P10vfSxlLmxhbmd1YWdlcy5kb2NrZXJmaWxlPWUubGFuZ3VhZ2VzLmRvY2tlcn1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZG9ja2VyXCIsci5hbGlhc2VzPVtcImRvY2tlcmZpbGVcIl19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmVpZmZlbD17Y29tbWVudDovLS0uKi8sc3RyaW5nOlt7cGF0dGVybjovXCIoW15bXSopXFxbW1xcc1xcU10qP1xcXVxcMVwiLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi9cIihbXntdKilcXHtbXFxzXFxTXSo/XFx9XFwxXCIvLGdyZWVkeTohMH0se3BhdHRlcm46L1wiKD86JVxccyslfCUufFteJVwiXFxyXFxuXSkqXCIvLGdyZWVkeTohMH1dLGNoYXI6LycoPzolLnxbXiUnXFxyXFxuXSkrJy8sa2V5d29yZDovXFxiKD86YWNyb3NzfGFnZW50fGFsaWFzfGFsbHxhbmR8YXR0YWNoZWR8YXN8YXNzaWdufGF0dHJpYnV0ZXxjaGVja3xjbGFzc3xjb252ZXJ0fGNyZWF0ZXxDdXJyZW50fGRlYnVnfGRlZmVycmVkfGRldGFjaGFibGV8ZG98ZWxzZXxlbHNlaWZ8ZW5kfGVuc3VyZXxleHBhbmRlZHxleHBvcnR8ZXh0ZXJuYWx8ZmVhdHVyZXxmcm9tfGZyb3plbnxpZnxpbXBsaWVzfGluaGVyaXR8aW5zcGVjdHxpbnZhcmlhbnR8bGlrZXxsb2NhbHxsb29wfG5vdHxub3RlfG9ic29sZXRlfG9sZHxvbmNlfG9yfFByZWN1cnNvcnxyZWRlZmluZXxyZW5hbWV8cmVxdWlyZXxyZXNjdWV8UmVzdWx0fHJldHJ5fHNlbGVjdHxzZXBhcmF0ZXxzb21lfHRoZW58dW5kZWZpbmV8dW50aWx8dmFyaWFudHxWb2lkfHdoZW58eG9yKVxcYi9pLGJvb2xlYW46L1xcYig/OlRydWV8RmFsc2UpXFxiL2ksXCJjbGFzcy1uYW1lXCI6e3BhdHRlcm46L1xcYltBLVpdW1xcZEEtWl9dKlxcYi8sYWxpYXM6XCJidWlsdGluXCJ9LG51bWJlcjpbL1xcYjBbeGNiXVtcXGRhLWZdKD86XypbXFxkYS1mXSkqXFxiL2ksLyg/OlxcZCg/Ol8qXFxkKSopP1xcLig/Oig/OlxcZCg/Ol8qXFxkKSopP2VbKy1dPyk/XFxkKD86XypcXGQpKnxcXGQoPzpfKlxcZCkqXFwuPy9pXSxwdW5jdHVhdGlvbjovOj18PDx8Pj58XFwoXFx8fFxcfFxcKXwtPnxcXC4oPz1cXHcpfFt7fVtcXF07KCksOj9dLyxvcGVyYXRvcjovXFxcXFxcXFx8XFx8XFwuXFwuXFx8fFxcLlxcLnxcXC9bflxcLz1dP3xbPjxdPT98Wy0rKl49fl0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZWlmZmVsXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5lbGl4aXI9e2NvbW1lbnQ6e3BhdHRlcm46LyMuKi9tLGxvb2tiZWhpbmQ6ITB9LHJlZ2V4OntwYXR0ZXJuOi9+W3JSXSg/OihcIlwiXCJ8JycnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkrXFwxfChbXFwvfFwiJ10pKD86XFxcXC58KD8hXFwyKVteXFxcXFxcclxcbl0pK1xcMnxcXCgoPzpcXFxcLnxbXlxcXFwpXFxyXFxuXSkrXFwpfFxcWyg/OlxcXFwufFteXFxcXFxcXVxcclxcbl0pK1xcXXxcXHsoPzpcXFxcLnxbXlxcXFx9XFxyXFxuXSkrXFx9fDwoPzpcXFxcLnxbXlxcXFw+XFxyXFxuXSkrPilbdWlzbXhmcl0qLyxncmVlZHk6ITB9LHN0cmluZzpbe3BhdHRlcm46L35bY0NzU3dXXSg/OihcIlwiXCJ8JycnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkrXFwxfChbXFwvfFwiJ10pKD86XFxcXC58KD8hXFwyKVteXFxcXFxcclxcbl0pK1xcMnxcXCgoPzpcXFxcLnxbXlxcXFwpXFxyXFxuXSkrXFwpfFxcWyg/OlxcXFwufFteXFxcXFxcXVxcclxcbl0pK1xcXXxcXHsoPzpcXFxcLnwjXFx7W159XStcXH18W15cXFxcfVxcclxcbl0pK1xcfXw8KD86XFxcXC58W15cXFxcPlxcclxcbl0pKz4pW2NzYV0/LyxncmVlZHk6ITAsaW5zaWRlOnt9fSx7cGF0dGVybjovKFwiXCJcInwnJycpW1xcc1xcU10qP1xcMS8sZ3JlZWR5OiEwLGluc2lkZTp7fX0se3BhdHRlcm46LyhcInwnKSg/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLGdyZWVkeTohMCxpbnNpZGU6e319XSxhdG9tOntwYXR0ZXJuOi8oXnxbXjpdKTpcXHcrLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwic3ltYm9sXCJ9LFwiYXR0ci1uYW1lXCI6L1xcdys6KD8hOikvLGNhcHR1cmU6e3BhdHRlcm46LyhefFteJl0pJig/OlteJlxcc1xcZCgpXVteXFxzKCldKnwoPz1cXCgpKS8sbG9va2JlaGluZDohMCxhbGlhczpcImZ1bmN0aW9uXCJ9LGFyZ3VtZW50OntwYXR0ZXJuOi8oXnxbXiZdKSZcXGQrLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwidmFyaWFibGVcIn0sYXR0cmlidXRlOntwYXR0ZXJuOi9AXFx3Ky8sYWxpYXM6XCJ2YXJpYWJsZVwifSxudW1iZXI6L1xcYig/OjBbYm94XVthLWZcXGRfXSt8XFxkW1xcZF9dKikoPzpcXC5bXFxkX10rKT8oPzplWystXT9bXFxkX10rKT9cXGIvaSxrZXl3b3JkOi9cXGIoPzphZnRlcnxhbGlhc3xhbmR8Y2FzZXxjYXRjaHxjb25kfGRlZig/OmNhbGxiYWNrfGV4Y2VwdGlvbnxpbXBsfG1vZHVsZXxwfHByb3RvY29sfHN0cnVjdCk/fGRvfGVsc2V8ZW5kfGZufGZvcnxpZnxpbXBvcnR8bm90fG9yfHJlcXVpcmV8cmVzY3VlfHRyeXx1bmxlc3N8dXNlfHdoZW4pXFxiLyxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlfG5pbClcXGIvLG9wZXJhdG9yOlsvXFxiaW5cXGJ8JiY/fFxcfFt8Pl0/fFxcXFxcXFxcfDo6fFxcLlxcLlxcLj98XFwrXFwrP3wtWy0+XT98PFstPT5dfD49fCE9PT98XFxCIXw9KD86PT0/fFs+fl0pP3xbKlxcL15dLyx7cGF0dGVybjovKFtePF0pPCg/ITwpLyxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKFtePl0pPig/IT4pLyxsb29rYmVoaW5kOiEwfV0scHVuY3R1YXRpb246Lzw8fD4+fFsuLCVcXFtcXF17fSgpXS99LGUubGFuZ3VhZ2VzLmVsaXhpci5zdHJpbmcuZm9yRWFjaChmdW5jdGlvbih0KXt0Lmluc2lkZT17aW50ZXJwb2xhdGlvbjp7cGF0dGVybjovI1xce1tefV0rXFx9LyxpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXiNcXHt8XFx9JC8sYWxpYXM6XCJwdW5jdHVhdGlvblwifSxyZXN0OmUubGFuZ3VhZ2VzLmVsaXhpcn19fX0pfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJlbGl4aXJcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmVsbT17Y29tbWVudDovLS0uKnx7LVtcXHNcXFNdKj8tfS8sY2hhcjp7cGF0dGVybjovJyg/OlteXFxcXCdcXHJcXG5dfFxcXFwoPzpbYWJmbnJ0dlxcXFwnXXxcXGQrfHhbMC05YS1mQS1GXSspKScvLGdyZWVkeTohMH0sc3RyaW5nOlt7cGF0dGVybjovXCJcIlwiW1xcc1xcU10qP1wiXCJcIi8sZ3JlZWR5OiEwfSx7cGF0dGVybjovXCIoPzpbXlxcXFxcIlxcclxcbl18XFxcXCg/OlthYmZucnR2XFxcXFwiXXxcXGQrfHhbMC05YS1mQS1GXSspKSpcIi8sZ3JlZWR5OiEwfV0saW1wb3J0X3N0YXRlbWVudDp7cGF0dGVybjovXlxccyppbXBvcnRcXHMrW0EtWl1cXHcqKD86XFwuW0EtWl1cXHcqKSooPzpcXHMrYXNcXHMrKFtBLVpdXFx3KikoPzpcXC5bQS1aXVxcdyopKik/KD86XFxzK2V4cG9zaW5nXFxzKyk/L20saW5zaWRlOntrZXl3b3JkOi9cXGIoPzppbXBvcnR8YXN8ZXhwb3NpbmcpXFxiL319LGtleXdvcmQ6L1xcYig/OmFsaWFzfGFzfGNhc2V8ZWxzZXxleHBvc2luZ3xpZnxpbnxpbmZpeGx8aW5maXhyfGxldHxtb2R1bGV8b2Z8dGhlbnx0eXBlKVxcYi8sYnVpbHRpbjovXFxiKD86YWJzfGFjb3N8YWx3YXlzfGFzaW58YXRhbnxhdGFuMnxjZWlsaW5nfGNsYW1wfGNvbXBhcmV8Y29zfGN1cnJ5fGRlZ3JlZXN8ZXxmbGlwfGZsb29yfGZyb21Qb2xhcnxpZGVudGl0eXxpc0luZmluaXRlfGlzTmFOfGxvZ0Jhc2V8bWF4fG1pbnxuZWdhdGV8bmV2ZXJ8bm90fHBpfHJhZGlhbnN8cmVtfHJvdW5kfHNpbnxzcXJ0fHRhbnx0b0Zsb2F0fHRvUG9sYXJ8dG9TdHJpbmd8dHJ1bmNhdGV8dHVybnN8dW5jdXJyeXx4b3IpXFxiLyxudW1iZXI6L1xcYig/OlxcZCsoPzpcXC5cXGQrKT8oPzplWystXT9cXGQrKT98MHhbMC05YS1mXSspXFxiL2ksb3BlcmF0b3I6L1xcc1xcLlxcc3xbK1xcLVxcLyo9LiQ8PjomfF4/JSNAfiFdezIsfXxbK1xcLVxcLyo9JDw+OiZ8Xj8lI0B+IV0vLGh2YXJpYWJsZTovXFxiKD86W0EtWl1cXHcqXFwuKSpbYS16XVxcdypcXGIvLGNvbnN0YW50Oi9cXGIoPzpbQS1aXVxcdypcXC4pKltBLVpdXFx3KlxcYi8scHVuY3R1YXRpb246L1t7fVtcXF18KCksLjpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImVsbVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oOTcpO2Z1bmN0aW9uIG8oZSl7ZS5yZWdpc3RlcihyKSxmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5lcmI9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwicnVieVwiLHt9KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJlcmJcIixcImNvbW1lbnRcIix7ZGVsaW1pdGVyOntwYXR0ZXJuOi9ePCU9P3wlPiQvLGFsaWFzOlwicHVuY3R1YXRpb25cIn19KSxlLmhvb2tzLmFkZChcImJlZm9yZS10b2tlbml6ZVwiLGZ1bmN0aW9uKHQpe2UubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl0uYnVpbGRQbGFjZWhvbGRlcnModCxcImVyYlwiLC88JT0/W1xcc1xcU10rPyU+L2cpfSksZS5ob29rcy5hZGQoXCJhZnRlci10b2tlbml6ZVwiLGZ1bmN0aW9uKHQpe2UubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl0udG9rZW5pemVQbGFjZWhvbGRlcnModCxcImVyYlwiKX0pfShlKX1lLmV4cG9ydHM9byxvLmRpc3BsYXlOYW1lPVwiZXJiXCIsby5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5lcmxhbmc9e2NvbW1lbnQ6LyUuKy8sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlxcXFwufFteXFxcXFwiXFxyXFxuXSkqXCIvLGdyZWVkeTohMH0sXCJxdW90ZWQtZnVuY3Rpb25cIjp7cGF0dGVybjovJyg/OlxcXFwufFteXFxcXCdcXHJcXG5dKSsnKD89XFwoKS8sYWxpYXM6XCJmdW5jdGlvblwifSxcInF1b3RlZC1hdG9tXCI6e3BhdHRlcm46LycoPzpcXFxcLnxbXlxcXFwnXFxyXFxuXSkrJy8sYWxpYXM6XCJhdG9tXCJ9LGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2UpXFxiLyxrZXl3b3JkOi9cXGIoPzpmdW58d2hlbnxjYXNlfG9mfGVuZHxpZnxyZWNlaXZlfGFmdGVyfHRyeXxjYXRjaClcXGIvLG51bWJlcjpbL1xcJFxcXFw/Li8sL1xcZCsjW2EtejAtOV0rL2ksLyg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OmVbKy1dP1xcZCspPy9pXSxmdW5jdGlvbjovXFxiW2Etel1bXFx3QF0qKD89XFwoKS8sdmFyaWFibGU6e3BhdHRlcm46LyhefFteQF0pKD86XFxifFxcPylbQS1aX11bXFx3QF0qLyxsb29rYmVoaW5kOiEwfSxvcGVyYXRvcjpbL1s9XFwvPD46XT18PVs6XFwvXT18XFwrXFwrP3wtLT98Wz0qXFwvIV18XFxiKD86Ym5vdHxkaXZ8cmVtfGJhbmR8Ym9yfGJ4b3J8YnNsfGJzcnxub3R8YW5kfG9yfHhvcnxvcmVsc2V8YW5kYWxzbylcXGIvLHtwYXR0ZXJuOi8oXnxbXjxdKTwoPyE8KS8sbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhefFtePl0pPig/IT4pLyxsb29rYmVoaW5kOiEwfV0sYXRvbTovXFxiW2Etel1bXFx3QF0qLyxwdW5jdHVhdGlvbjovWygpW1xcXXt9OjssLiN8XXw8PHw+Pi99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJlcmxhbmdcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5mbG93PWUubGFuZ3VhZ2VzLmV4dGVuZChcImphdmFzY3JpcHRcIix7fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiZmxvd1wiLFwia2V5d29yZFwiLHt0eXBlOlt7cGF0dGVybjovXFxiKD86W05uXXVtYmVyfFtTc110cmluZ3xbQmJdb29sZWFufEZ1bmN0aW9ufGFueXxtaXhlZHxudWxsfHZvaWQpXFxiLyxhbGlhczpcInRhZ1wifV19KSxlLmxhbmd1YWdlcy5mbG93W1wiZnVuY3Rpb24tdmFyaWFibGVcIl0ucGF0dGVybj0vW18kYS16XFx4QTAtXFx1RkZGRl1bJFxcd1xceEEwLVxcdUZGRkZdKig/PVxccyo9XFxzKig/OmZ1bmN0aW9uXFxifCg/OlxcKFteKCldKlxcKSg/Olxccyo6XFxzKlxcdyspP3xbXyRhLXpcXHhBMC1cXHVGRkZGXVskXFx3XFx4QTAtXFx1RkZGRl0qKVxccyo9PikpL2ksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiZmxvd1wiLFwib3BlcmF0b3JcIix7XCJmbG93LXB1bmN0dWF0aW9uXCI6e3BhdHRlcm46L1xce1xcfHxcXHxcXH0vLGFsaWFzOlwicHVuY3R1YXRpb25cIn19KSxcIkFycmF5XCIhPT1lLnV0aWwudHlwZShlLmxhbmd1YWdlcy5mbG93LmtleXdvcmQpJiYoZS5sYW5ndWFnZXMuZmxvdy5rZXl3b3JkPVtlLmxhbmd1YWdlcy5mbG93LmtleXdvcmRdKSxlLmxhbmd1YWdlcy5mbG93LmtleXdvcmQudW5zaGlmdCh7cGF0dGVybjovKF58W14kXVxcYikoPzp0eXBlfG9wYXF1ZXxkZWNsYXJlfENsYXNzKVxcYig/IVxcJCkvLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXnxbXiRdXFxCKVxcJCg/OmF3YWl0fERpZmZ8RXhhY3R8S2V5c3xPYmpNYXB8UHJvcGVydHlUeXBlfFNoYXBlfFJlY29yZHxTdXBlcnR5cGV8U3VidHlwZXxFbnVtKVxcYig/IVxcJCkvLGxvb2tiZWhpbmQ6ITB9KX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImZsb3dcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmZvcnRyYW49e1wicXVvdGVkLW51bWJlclwiOntwYXR0ZXJuOi9bQk9aXShbJ1wiXSlbQS1GMC05XStcXDEvaSxhbGlhczpcIm51bWJlclwifSxzdHJpbmc6e3BhdHRlcm46Lyg/OlxcdytfKT8oWydcIl0pKD86XFwxXFwxfCYoPzpcXHJcXG4/fFxcbikoPzpcXHMqIS4rKD86XFxyXFxuP3xcXG4pKT98KD8hXFwxKS4pKig/OlxcMXwmKS8saW5zaWRlOntjb21tZW50OntwYXR0ZXJuOi8oJig/Olxcclxcbj98XFxuKVxccyopIS4qLyxsb29rYmVoaW5kOiEwfX19LGNvbW1lbnQ6e3BhdHRlcm46LyEuKi8sZ3JlZWR5OiEwfSxib29sZWFuOi9cXC4oPzpUUlVFfEZBTFNFKVxcLig/Ol9cXHcrKT8vaSxudW1iZXI6Lyg/OlxcYlxcZCsoPzpcXC5cXGQqKT98XFxCXFwuXFxkKykoPzpbRURdWystXT9cXGQrKT8oPzpfXFx3Kyk/L2ksa2V5d29yZDpbL1xcYig/OklOVEVHRVJ8UkVBTHxET1VCTEUgP1BSRUNJU0lPTnxDT01QTEVYfENIQVJBQ1RFUnxMT0dJQ0FMKVxcYi9pLC9cXGIoPzpFTkQgPyk/KD86QkxPQ0sgP0RBVEF8RE98RklMRXxGT1JBTEx8RlVOQ1RJT058SUZ8SU5URVJGQUNFfE1PRFVMRSg/ISBQUk9DRURVUkUpfFBST0dSQU18U0VMRUNUfFNVQlJPVVRJTkV8VFlQRXxXSEVSRSlcXGIvaSwvXFxiKD86QUxMT0NBVEFCTEV8QUxMT0NBVEV8QkFDS1NQQUNFfENBTEx8Q0FTRXxDTE9TRXxDT01NT058Q09OVEFJTlN8Q09OVElOVUV8Q1lDTEV8REFUQXxERUFMTE9DQVRFfERJTUVOU0lPTnxET3xFTkR8RVFVSVZBTEVOQ0V8RVhJVHxFWFRFUk5BTHxGT1JNQVR8R08gP1RPfElNUExJQ0lUKD86IE5PTkUpP3xJTlFVSVJFfElOVEVOVHxJTlRSSU5TSUN8TU9EVUxFIFBST0NFRFVSRXxOQU1FTElTVHxOVUxMSUZZfE9QRU58T1BUSU9OQUx8UEFSQU1FVEVSfFBPSU5URVJ8UFJJTlR8UFJJVkFURXxQVUJMSUN8UkVBRHxSRVRVUk58UkVXSU5EfFNBVkV8U0VMRUNUfFNUT1B8VEFSR0VUfFdISUxFfFdSSVRFKVxcYi9pLC9cXGIoPzpBU1NJR05NRU5UfERFRkFVTFR8RUxFTUVOVEFMfEVMU0V8RUxTRVdIRVJFfEVMU0VJRnxFTlRSWXxJTnxJTkNMVURFfElOT1VUfEtJTkR8TlVMTHxPTkxZfE9QRVJBVE9SfE9VVHxQVVJFfFJFQ1VSU0lWRXxSRVNVTFR8U0VRVUVOQ0V8U1RBVHxUSEVOfFVTRSlcXGIvaV0sb3BlcmF0b3I6Wy9cXCpcXCp8XFwvXFwvfD0+fFs9XFwvXT18Wzw+XT0/fDo6fFsrXFwtKj0lXXxcXC4oPzpFUXxORXxMVHxMRXxHVHxHRXxOT1R8QU5EfE9SfEVRVnxORVFWKVxcLnxcXC5bQS1aXStcXC4vaSx7cGF0dGVybjovKF58KD8hXFwoKS4pXFwvKD8hXFwpKS8sbG9va2JlaGluZDohMH1dLHB1bmN0dWF0aW9uOi9cXChcXC98XFwvXFwpfFsoKSw7OiZdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImZvcnRyYW5cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmZzaGFycD1lLmxhbmd1YWdlcy5leHRlbmQoXCJjbGlrZVwiLHtjb21tZW50Olt7cGF0dGVybjovKF58W15cXFxcXSlcXChcXCpbXFxzXFxTXSo/XFwqXFwpLyxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W15cXFxcOl0pXFwvXFwvLiovLGxvb2tiZWhpbmQ6ITB9XSxrZXl3b3JkOi9cXGIoPzpsZXR8cmV0dXJufHVzZXx5aWVsZCkoPzohXFxCfFxcYil8XFxiKGFic3RyYWN0fGFuZHxhc3xhc3NlcnR8YmFzZXxiZWdpbnxjbGFzc3xkZWZhdWx0fGRlbGVnYXRlfGRvfGRvbmV8ZG93bmNhc3R8ZG93bnRvfGVsaWZ8ZWxzZXxlbmR8ZXhjZXB0aW9ufGV4dGVybnxmYWxzZXxmaW5hbGx5fGZvcnxmdW58ZnVuY3Rpb258Z2xvYmFsfGlmfGlufGluaGVyaXR8aW5saW5lfGludGVyZmFjZXxpbnRlcm5hbHxsYXp5fG1hdGNofG1lbWJlcnxtb2R1bGV8bXV0YWJsZXxuYW1lc3BhY2V8bmV3fG5vdHxudWxsfG9mfG9wZW58b3J8b3ZlcnJpZGV8cHJpdmF0ZXxwdWJsaWN8cmVjfHNlbGVjdHxzdGF0aWN8c3RydWN0fHRoZW58dG98dHJ1ZXx0cnl8dHlwZXx1cGNhc3R8dmFsfHZvaWR8d2hlbnx3aGlsZXx3aXRofGFzcnxsYW5kfGxvcnxsc2x8bHNyfGx4b3J8bW9kfHNpZ3xhdG9taWN8YnJlYWt8Y2hlY2tlZHxjb21wb25lbnR8Y29uc3R8Y29uc3RyYWludHxjb25zdHJ1Y3Rvcnxjb250aW51ZXxlYWdlcnxldmVudHxleHRlcm5hbHxmaXhlZHxmdW5jdG9yfGluY2x1ZGV8bWV0aG9kfG1peGlufG9iamVjdHxwYXJhbGxlbHxwcm9jZXNzfHByb3RlY3RlZHxwdXJlfHNlYWxlZHx0YWlsY2FsbHx0cmFpdHx2aXJ0dWFsfHZvbGF0aWxlKVxcYi8sc3RyaW5nOntwYXR0ZXJuOi8oPzpcIlwiXCJbXFxzXFxTXSo/XCJcIlwifEBcIig/OlwiXCJ8W15cIl0pKlwifChcInwnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxKUI/LyxncmVlZHk6ITB9LG51bWJlcjpbL1xcYjB4W1xcZGEtZkEtRl0rKD86dW58bGZ8TEYpP1xcYi8sL1xcYjBiWzAxXSsoPzp5fHV5KT9cXGIvLC8oPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzpbZm1dfGVbKy1dP1xcZCspP1xcYi9pLC9cXGJcXGQrKD86W0lsTHN5XXx1W2xzeV0/fFVMKT9cXGIvXX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImZzaGFycFwiLFwia2V5d29yZFwiLHtwcmVwcm9jZXNzb3I6e3BhdHRlcm46L15bXlxcclxcblxcU10qIy4qL20sYWxpYXM6XCJwcm9wZXJ0eVwiLGluc2lkZTp7ZGlyZWN0aXZlOntwYXR0ZXJuOi8oXFxzKiMpXFxiKD86ZWxzZXxlbmRpZnxpZnxsaWdodHxsaW5lfG5vd2FybilcXGIvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJrZXl3b3JkXCJ9fX19KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZnNoYXJwXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5nZWRjb209e1wibGluZS12YWx1ZVwiOntwYXR0ZXJuOi8oXlxccypcXGQrICsoPzpAXFx3W1xcdyFcIiQlJicoKSorLFxcLS5cXC86Ozw9Pj9bXFxcXFxcXV5ge3x9flxceDgwLVxceGZlICNdKkAgKyk/XFx3KyArKS4rL20sbG9va2JlaGluZDohMCxpbnNpZGU6e3BvaW50ZXI6e3BhdHRlcm46L15AXFx3W1xcdyFcIiQlJicoKSorLFxcLS5cXC86Ozw9Pj9bXFxcXFxcXV5ge3x9flxceDgwLVxceGZlICNdKkAkLyxhbGlhczpcInZhcmlhYmxlXCJ9fX0sdGFnOntwYXR0ZXJuOi8oXlxccypcXGQrICsoPzpAXFx3W1xcdyFcIiQlJicoKSorLFxcLS5cXC86Ozw9Pj9bXFxcXFxcXV5ge3x9flxceDgwLVxceGZlICNdKkAgKyk/KVxcdysvbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwic3RyaW5nXCJ9LGxldmVsOntwYXR0ZXJuOi8oXlxccyopXFxkKy9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJudW1iZXJcIn0scG9pbnRlcjp7cGF0dGVybjovQFxcd1tcXHchXCIkJSYnKCkqKyxcXC0uXFwvOjs8PT4/W1xcXFxcXF1eYHt8fX5cXHg4MC1cXHhmZSAjXSpALyxhbGlhczpcInZhcmlhYmxlXCJ9fX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZ2VkY29tXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5naGVya2luPXtweXN0cmluZzp7cGF0dGVybjovKFwiXCJcInwnJycpW1xcc1xcU10rP1xcMS8sYWxpYXM6XCJzdHJpbmdcIn0sY29tbWVudDp7cGF0dGVybjovKCg/Ol58XFxyP1xcbnxcXHIpWyBcXHRdKikjLiovLGxvb2tiZWhpbmQ6ITB9LHRhZzp7cGF0dGVybjovKCg/Ol58XFxyP1xcbnxcXHIpWyBcXHRdKilAXFxTKi8sbG9va2JlaGluZDohMH0sZmVhdHVyZTp7cGF0dGVybjovKCg/Ol58XFxyP1xcbnxcXHIpWyBcXHRdKikoPzpBYmlsaXR5fEFob3kgbWF0ZXkhfEFyd2VkZHxBc3Bla3R8QmVzaWdoZWlkIEJlaG9lZnRlfEJ1c2luZXNzIE5lZWR8Q2FyYWN0ZXJpc3RpY2F8Q2FyYWN0ZXLDrXN0aWNhfEVnZW5za2FifEVnZW5za2FwfEVpZ2lubGVpa2l8RmVhdHVyZXxGxKvEjWF8Rml0dXJ8Rm9uY3Rpb25uYWxpdMOpfEZvbmtzeW9uYWxpdGV8RnVuY2lvbmFsaWRhZGV8RnVuY2lvbmFsaXRhdHxGdW5jdGlvbmFsaXRhdGV8RnVuY8WjaW9uYWxpdGF0ZXxGdW5jyJtpb25hbGl0YXRlfEZ1bmN0aW9uYWxpdGVpdHxGdW5nc2l8RnVua2NpYXxGdW5rY2lqYXxGdW5rY2lvbmFsaXTEgXRlfEZ1bmtjaW9uYWxub3N0fEZ1bmtjamF8RnVua3NpZXxGdW5rdGlvbmFsaXTDpHR8RnVua3Rpb25hbGl0w6lpdHxGdW56aW9uYWxpdMOgfEh3YWV0fEh3w6Z0fEplbGxlbXrFkXxLYXJha3RlcmlzdGlrfGxhSHxMYXN0bm9zdHxNYWt8TW9ndWNub3N0fE1vZ3XEh25vc3R8TW96bm9zdGl8TW/Fvm5vc3RpfE9IIEhBSXxPbWFkdXN8T21pbmFpc3V1c3xPc29iaW5hfMOWemVsbGlrfHBlcmJvZ2h8cG9RYm9naCBtYWxqYSd8UG90cnplYmEgYml6bmVzb3dhfFBvxb5hZGF2ZWt8UG/FvmlhZGF2a2F8UHJldHR5IG11Y2h8UWFwfFF1J21lSCAndXR8U2F2eWLEl3xUw61uaCBuxINuZ3xUcmFqdG98VmVybW/Dq3xWbGFzdG5vc8WlfFfFgmHFm2Npd2/Fm8SHfFpuYcSNaWxub3N0fM6Uz4XOvc6xz4TPjM+EzrfPhM6xfM6bzrXOuc+Ezr/Phc+BzrPOr86xfNCc0L7Qs9GD0ZvQvdC+0YHRgnzQnNOp0LzQutC40L3Qu9C10Lp80J7RgdC+0LHQuNC90LB80KHQstC+0LnRgdGC0LLQvnzSrtC30LXQvdGH05nQu9C10LrQu9C10LvQtdC6fNCk0YPQvdC60YbQuNC+0L3QsNC7fNCk0YPQvdC60YbQuNC+0L3QsNC70L3QvtGB0YJ80KTRg9C90LrRhtC40Y980KTRg9C90LrRhtGW0L7QvdCw0Lt816rXm9eV16DXlHzYrtin2LXZitipfNiu2LXZiNi124zYqnzYtdmE2KfYrduM2Kp82qnYp9ix2YjYqNin2LEg2qnbjCDYttix2YjYsdiqfNmI2ZDbjNqY2q/bjHzgpLDgpYLgpKog4KSy4KWH4KSWfOColuCovuCouOCpgOCoheCopHzgqKjgqJXgqLYg4Kio4KmB4Ki54Ki+4KiwfOCoruCpgeCoueCovuCoguCopuCosOCovnzgsJfgsYHgsKPgsK7gsYF84LK54LOG4LKa4LON4LKa4LKzfOC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4geC4suC4o+C4l+C4suC4h+C4mOC4uOC4o+C4geC4tOC4iHzguITguKfguLLguKHguKrguLLguKHguLLguKPguJZ84LmC4LiE4Lij4LiH4Lir4Lil4Lix4LiBfOq4sOuKpXzjg5XjgqPjg7zjg4Hjg6N85Yqf6IO9fOapn+iDvSk6KD86W146XSsoPzpcXHI/XFxufFxccnwkKSkqLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7aW1wb3J0YW50OntwYXR0ZXJuOi8oOilbXlxcclxcbl0rLyxsb29rYmVoaW5kOiEwfSxrZXl3b3JkOi9bXjpcXHJcXG5dKzovfX0sc2NlbmFyaW86e3BhdHRlcm46LygoPzpefFxccj9cXG58XFxyKVsgXFx0XSopKD86QWJzdHJhY3QgU2NlbmFyaW98QWJzdHJha3QgU2NlbmFyaW98QWNodGVyZ3JvbmR8QWVyfMOGcnxBZ3Rlcmdyb25kfEFsbCB5J2FsbHxBbnRlY2VkZW50ZXN8QW50ZWNlZGVudHN8QXRidXLDsGFyw6FzfEF0YnVyw7BhcsOhc2lyfEF3d3csIGxvb2sgbWF0ZXxCNHxCYWNrZ3JvdW5kfEJhZ2dydW5kfEJha2dydW5kfEJha2dydW5ufEJha2dydW5udXJ8QmVpc3BpZWxlfEJlaXNwaWxsZXJ8QuG7kWkgY+G6o25ofENlZm5kaXJ8Q2VuYXJpb3xDZW7DoXJpb3xDZW5hcmlvIGRlIEZ1bmRvfENlbsOhcmlvIGRlIEZ1bmRvfENlbmFyaW9zfENlbsOhcmlvc3xDb250ZXN0b3xDb250ZXh0fENvbnRleHRlfENvbnRleHRvfENvbnRvfENvbnRvaHxDb250b25lfETDpm1pfERhc2FyfERlYWQgbWVuIHRlbGwgbm8gdGFsZXN8RGVsaW5lYWNhbyBkbyBDZW5hcmlvfERlbGluZWHDp8OjbyBkbyBDZW7DoXJpb3xEaXMgaXMgd2hhdCB3ZW50IGRvd258ROG7ryBsaeG7h3V8RHlhZ3JhbSBzZW5hcnlvfER5YWdyYW0gU2VuYXJ5b3xFZ3phbnB8RWplbXBsb3N8RWtzZW1wbGVyfEVremVtcGxvanxFbmdocmVpZmZ0aWF1fEVzYm96byBkbyBlc2NlbmFyaW98RXNjZW5hcml8RXNjZW5hcmlvfEVzZW1waXxFc3F1ZW1hIGRlIGwnZXNjZW5hcml8RXNxdWVtYSBkZWwgZXNjZW5hcmlvfEVzcXVlbWEgZG8gQ2VuYXJpb3xFc3F1ZW1hIGRvIENlbsOhcmlvfEV4YW1wbGVzfEVYQU1QTFp8RXhlbXBlbHxFeGVtcGxlfEV4ZW1wbGVzfEV4ZW1wbG9zfEZpcnN0IG9mZnxGb25vfEZvcmdhdMOza8O2bnl2fEZvcmdhdMOza8O2bnl2IHbDoXpsYXR8RnVuZG98R2XDp21pxZ98Z2hhbnRvSHxHcnVuZGxhZ2V8SGFubmVyZ3JvbmR8SMOhdHTDqXJ8SGVhdmUgdG98SXN0b3Jpa3xKdWh0dW1pZHxLZWFkYWFufEtodW5nIGvhu4tjaCBi4bqjbnxLaHVuZyB0w6xuaCBodeG7kW5nfEvhu4tjaCBi4bqjbnxLb25jZXB0fEtvbnNlcCBza2VuYXJpb3xLb250w6hrc3xLb250ZWtzdHxLb250ZWtzdGFzfEtvbnRla3N0c3xLb250ZXh0fEtvbnR1cm8gZGUgbGEgc2NlbmFyb3xMYXRhciBCZWxha2FuZ3xsdXR8bHV0IGNob3ZuYXRsaHxsdXRtZXl8TMO9c2luZyBBdGJ1csOwYXLDoXNhcnxMw71zaW5nIETDpm1hfE1lbmdnYXJpc2thbiBTZW5hcmlvfE1JU0hVTnxNSVNIVU4gU1JTTFl8bW8nfE7DocSNcnQgU2NlbsOhcmF8TsOhxI1ydCBTY8OpbsOhxZllfE7DocSNcnQgU2NlbsOhcnV8T3JpcyBzY2VuYXJpamF8w5ZybmVrbGVyfE9zbm92YXxPc25vdmEgU2NlbsOhcmF8T3Nub3ZhIHNjw6luw6HFmWV8T3NudXRla3xPemFkamV8UGFyYXVnc3xQYXZ5emTFvmlhaXxQw6lsZMOha3xQaWVtxJNyaXxQbGFuIGR1IHNjw6luYXJpb3xQbGFuIGR1IFNjw6luYXJpb3xQbGFuIHNlbmFyeW98UGxhbiBTZW5hcnlvfFBsYW5nIHZ1bSBTemVuYXJpb3xQb3phZMOtfFBvemFkaWV8UG96YWRpbmF8UHLDrWtsYWR5fFDFmcOta2xhZHl8UHJpbWVyfFByaW1lcml8UHJpbWplcml8UHJ6eWvFgmFkeXxSYWFtc3RzZW5hYXJpdW18UmVja29uIGl0J3MgbGlrZXxSZXJlZm9uc3xTY2Vuw6FyfFNjw6luw6HFmXxTY2VuYXJpZXxTY2VuYXJpanxTY2VuYXJpamFpfFNjZW5hcmlqYXVzIMWhYWJsb25hc3xTY2VuYXJpaml8U2NlbsSBcmlqc3xTY2VuxIFyaWpzIHDEk2MgcGFyYXVnYXxTY2VuYXJpanVzfFNjZW5hcmlvfFNjw6luYXJpb3xTY2VuYXJpbyBBbWxpbmVsbG9sfFNjZW5hcmlvIE91dGxpbmV8U2NlbmFyaW8gVGVtcGxhdGV8U2NlbmFyaW9tYWx8U2NlbmFyaW9tYWxsfFNjZW5hcmlvc3xTY2VuYXJpdXxTY2VuYXJpdXN6fFNjZW5hcm98U2NoZW1hIGRlbGxvIHNjZW5hcmlvfFNlIMOwZXxTZSB0aGV8U2Ugw75lfFNlbmFyaW98U2VuYXJ5b3xTZW5hcnlvIGRlc2tyaXBzeW9ufFNlbmFyeW8gRGVza3JpcHN5b258U2VuYXJ5byB0YXNsYcSfxLF8U2hpdmVyIG1lIHRpbWJlcnN8U2l0dcSBY2lqYXxTaXR1YWl8U2l0dWFzaWV8U2l0dWFzaWUgVWl0ZWVuc2V0dGluZ3xTa2VuYXJpb3xTa2VuYXJpbyBrb25zZXB8U2tpY2F8U3RydWN0dXJhIHNjZW5hcml1fFN0cnVjdHVyxIMgc2NlbmFyaXV8U3RydWt0dXJhIHNjZW5hcmlqYXxTdHNlbmFhcml1bXxTd2F8U3dhIGh3YWVyIHN3YXxTd2EgaHfDpnIgc3dhfFN6YWJsb24gc2NlbmFyaXVzemF8U3plbmFyaW98U3plbmFyaW9ncnVuZHJpc3N8VGFwYXVrc2V0fFRhcGF1c3xUYXBhdXNhaWhpb3xUYXVzdHxUYXVzdGF8VGVtcGxhdGUgS2VhZGFhbnxUZW1wbGF0ZSBTZW5hcmlvfFRlbXBsYXRlIFNpdHVhaXxUaGUgdGhpbmcgb2YgaXQgaXN8VMOsbmggaHXhu5FuZ3xWYXJpYW50YWl8Vm9vcmJlZWxkZXxWb29yYmVlbGRlbnxXaGFycmltZWFuIGlzfFlvXFwtaG9cXC1ob3xZb3UnbGwgd2FubmF8WmHFgm/FvGVuaWF8zqDOsc+BzrHOtM61zq/Os868zrHPhM6xfM6gzrXPgc65zrPPgc6xz4bOriDOo861zr3Osc+Bzq/Ov8+FfM6jzrXOvc6sz4HOuc6xfM6jzrXOvc6sz4HOuc6/fM6lz4DPjM6yzrHOuM+Bzr980JrQtdGA0LXRiHzQmtC+0L3RgtC10LrRgdGCfNCa0L7QvdGG0LXQv9GCfNCc0LjRgdCw0LvQu9Cw0YB80JzQuNGB0L7Qu9C70LDRgHzQntGB0L3QvtCy0LB80J/QtdGA0LXQtNGD0LzQvtCy0LB80J/QvtC30LDQtNC40L3QsHzQn9GA0LXQtNC40YHRgtC+0YDQuNGPfNCf0YDQtdC00YvRgdGC0L7RgNC40Y980J/RgNC40LrQu9Cw0LTQuHzQn9GA0LjQvNC10YB80J/RgNC40LzQtdGA0Lh80J/RgNC40LzQtdGA0Yt80KDQsNC80LrQsCDQvdCwINGB0YbQtdC90LDRgNC40Ll80KHQutC40YbQsHzQodGC0YDRg9C60YLRg9GA0LAg0YHRhtC10L3QsNGA0LjRmNCwfNCh0YLRgNGD0LrRgtGD0YDQsCDRgdGG0LXQvdCw0YDQuNGPfNCh0YLRgNGD0LrRgtGD0YDQsCDRgdGG0LXQvdCw0YDRltGOfNCh0YbQtdC90LDRgNC40Ll80KHRhtC10L3QsNGA0LjQuSDRgdGC0YDRg9C60YLRg9GA0LDRgdC4fNCh0YbQtdC90LDRgNC40LnQvdGL0qMg0YLTqdC30LXQu9C10YjQtXzQodGG0LXQvdCw0YDQuNGY0Lh80KHRhtC10L3QsNGA0LjQvnzQodGG0LXQvdCw0YDRltC5fNCi0LDRgNC40YV80q7RgNC905nQutC705nRgHzXk9eV15LXnteQ15XXqnzXqNen16J816rXkdeg15nXqiDXqteo15fXmdepfNeq16jXl9eZ16l82KfZhNiu2YTZgdmK2Kl82KfZhNqv2YjbjCDYs9mG2KfYsduM2Yh82KfZhdir2YTYqXzZvtizINmF2YbYuNixfNiy2YXbjNmG2Yd82LPZhtin2LHbjNmIfNiz2YrZhtin2LHZitmIfNiz2YrZhtin2LHZitmIINmF2K7Yt9i3fNmF2KvYp9mE24zaunzZhdmG2LjYsSDZhtin2YXbkiDaqdinINiu2KfaqduBfNmF2YbYuNix2YbYp9mF24F82YbZhdmI2YbZhyDZh9infOCkieCkpuCkvuCkueCksOCko3zgpKrgpLDgpL/gpKbgpYPgpLbgpY3gpK984KSq4KSw4KS/4KSm4KWD4KS24KWN4KSvIOCksOClguCkquCksOClh+CkluCkvnzgpKrgpYPgpLfgpY3gpKDgpK3gpYLgpK7gpL984KiJ4Kim4Ki+4Ki54Kiw4Kio4Ki+4KiCfOCoquCon+ColeCopeCovnzgqKrgqJ/gqJXgqKXgqL4g4Kii4Ki+4KiC4Kia4Ki+fOCoquCon+ColeCopeCoviDgqLDgqYLgqKog4Kiw4KmH4KiW4Ki+fOCoquCov+Com+Cpi+ColeCpnHzgsIngsKbgsL7gsLngsLDgsKPgsLLgsYF84LCV4LCl4LCo4LCCfOCwqOCxh+CwquCwpeCxjeCwr+CwgnzgsLjgsKjgsY3gsKjgsL/gsLXgsYfgsLbgsIJ84LKJ4LKm4LK+4LK54LKw4LKj4LOG4LKX4LKz4LOBfOCyleCypeCyvuCyuOCyvuCysOCyvuCyguCytnzgsrXgsr/gsrXgsrDgsqPgs4Z84LK54LK/4LKo4LON4LKo4LOG4LKy4LOGfOC5guC4hOC4o+C4h+C4quC4o+C5ieC4suC4h+C4guC4reC4h+C5gOC4q+C4leC4uOC4geC4suC4o+C4k+C5jHzguIrguLjguJTguILguK3guIfguJXguLHguKfguK3guKLguYjguLLguId84LiK4Li44LiU4LiC4Lit4LiH4LmA4Lir4LiV4Li44LiB4Liy4Lij4LiT4LmMfOC5geC4meC4p+C4hOC4tOC4lHzguKrguKPguLjguJvguYDguKvguJXguLjguIHguLLguKPguJPguYx84LmA4Lir4LiV4Li44LiB4Liy4Lij4LiT4LmMfOuwsOqyvXzsi5zrgpjrpqzsmKR87Iuc64KY66as7JikIOqwnOyalHzsmIh844K144Oz44OX44OrfOOCt+ODiuODquOCqnzjgrfjg4rjg6rjgqrjgqLjgqbjg4jjg6njgqTjg7N844K344OK44Oq44Kq44OG44Oz44OX44OsfOOCt+ODiuODquOCquODhuODs+ODl+ODrOODvOODiHzjg4bjg7Pjg5fjg6x85L6LfOS+i+WtkHzliafmnKx85Ymn5pys5aSn57qyfOWKh+acrHzliofmnKzlpKfntrF85Zy65pmvfOWcuuaZr+Wkp+e6snzloLTmma985aC05pmv5aSn57axfOiDjOaZryk6W146XFxyXFxuXSovLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntpbXBvcnRhbnQ6e3BhdHRlcm46Lyg6KVteXFxyXFxuXSovLGxvb2tiZWhpbmQ6ITB9LGtleXdvcmQ6L1teOlxcclxcbl0rOi99fSxcInRhYmxlLWJvZHlcIjp7cGF0dGVybjovKCg/Olxccj9cXG58XFxyKVsgXFx0XSpcXHwuK1xcfFteXFxyXFxuXSopKy8sbG9va2JlaGluZDohMCxpbnNpZGU6e291dGxpbmU6e3BhdHRlcm46LzxbXj5dKz8+LyxhbGlhczpcInZhcmlhYmxlXCJ9LHRkOntwYXR0ZXJuOi9cXHMqW15cXHN8XVtefF0qLyxhbGlhczpcInN0cmluZ1wifSxwdW5jdHVhdGlvbjovXFx8L319LFwidGFibGUtaGVhZFwiOntwYXR0ZXJuOi8oPzpcXHI/XFxufFxccilbIFxcdF0qXFx8LitcXHxbXlxcclxcbl0qLyxpbnNpZGU6e3RoOntwYXR0ZXJuOi9cXHMqW15cXHN8XVtefF0qLyxhbGlhczpcInZhcmlhYmxlXCJ9LHB1bmN0dWF0aW9uOi9cXHwvfX0sYXRydWxlOntwYXR0ZXJuOi8oKD86XFxyP1xcbnxcXHIpWyBcXHRdKykoPzonYWNofCdhfCdlanw3fGF8QSB0YWvDqXxBIHRha3RpZcW+fEEgdGllxb58QSB6w6Fyb3ZlxYh8QWJlcnxBY3xBZG90dHxBa2tvcnxBa3xBbGVzaG9yZXN8QWxlfEFsaXxBbGxvcmF8QWxvcnN8QWxzfEFtYXxBbWVubnlpYmVufEFtaWtvcnxBbXBha3xhbnxBTnxBbmFuZ2luZ3xBbmQgeSdhbGx8QW5kfEFuZ2Vub21tZW58QW5yaGVnZWRpZyBhfEFufEFwYWJpbGF8QXTDqHN8QXRlc2F8QXR1bmNpfEF2YXN0IXxBeWV8QXxhd2VyfEJhZ2l8QmFuanVyfEJldHxCaeG6v3R8QmxpbWV5IXxCdWh8QnV0IGF0IHRoZSBlbmQgb2YgdGhlIGRheSBJIHJlY2tvbnxCdXQgeSdhbGx8QnV0fEJVVHxDYWx8Q8OibmR8Q2FuZG98Q2FuZHxDZXxDdWFuZG98xIxlfMOQYSDDsGV8w5BhfERhZGFzfERhZGF8RGFkb3N8RGFkb3xEYUggZ2h1JyBiZWpsdSd8ZGFubnxEYW5ufERhbm98RGFufERhcnxEYXQgZmlpbmR8RGF0YXxEYXRlIGZpaW5kfERhdGV8RGF0aSBmaWluZHxEYXRpfERhxaNpIGZpaW5kfERhyJtpIGZpaW5kfERhdG98REVOfERlbiB5b3VzZSBnb3R0YXxEZW5nYW58RGV8RGliZXJpfERpeWVsaW0ga2l8RG9uYWRhfERvbmF0fERvbml0YcS1b3xEb3xEdW58RHVvdGF8w5B1cmh8RWVsZGFkZXN8RWZ8RcSfZXIga2l8RW50YW98RW50w6NvfEVudMOzbnxFbnRvbmNlc3xFbnxFcGl8RXzDiXN8RXRhbnQgZG9ubsOpZXxFdGFudCBkb25uw6l8RXR8w4l0YW50IGRvbm7DqWVzfMOJdGFudCBkb25uw6llfMOJdGFudCBkb25uw6l8RXRhbnQgZG9ubsOpZXN8RXRhbnQgZG9ubsOpc3zDiXRhbnQgZG9ubsOpc3xGYWthdHxHYW5nd2F5IXxHZHl8R2VnZWJlbiBzZWllbnxHZWdlYmVuIHNlaXxHZWdldmVufEdlZ2V3ZXxnaHUnIG5vYmx1J3xHaXR0fEdpdmVuIHknYWxsfEdpdmVufEdpdmV0fEdpdnVufEhhfENob3xJIENBTiBIQVp8SW58SXJ8SXQncyBqdXN0IHVuYmVsaWV2YWJsZXxJfEphfEplxZtsaXxKZcW8ZWxpfEthZGFyfEthZGF8S2FkfEthaXxLYWp8S2R5xb58S2XEj3xLZW11ZGlhbnxLZXRpa2F8S2hpfEtpZWR5fEtvfEt1aWR8S3VpfEt1bnxMYW58bGF0bGh8TGUgc2EgYXxMZXQgZ28gYW5kIGhhdWx8TGV8TMOoIHNhIGF8TMOofExvZ298TG9yc3F1Jzx8TG9yc3F1ZXxtw6R8TWFhcnxNYWlzfE1hasSFY3xNYWpkfE1ha2F8TWFuYXdhfE1hc3xNYXxNZW5hd2F8TWVufE11dHRhfE5hbGlrYW5pbmd8TmFsaWthfE5hbmdpbmd8TsOlcnxOw6RyfE5hdG98TmjGsG5nfE5paW58Tmp1a3xPIHphbWFufE9nfE9jaHxPbGV0ZXRhYW58T25kYXxPbmR8T3JhenxQYWt8UGVyb3xQZXLDsnxQb2Rhbm98UG9raWHEvnxQb2t1ZHxQb3RlbXxQb3RvbXxQcml2emV0b3xQcnlkfHFhU0RJJ3xRdWFuZG98UXVhbmR8UXVhbnxTw6V8U2VkfFNlfFNpaXN8U2lwb3plIGtlfFNpcG96ZSBLZXxTaXBvemV8U2l8xZ5pfMiYaXxTb2l0fFN0ZWx8VGFkYXxUYWR8VGFrcmF0fFRha3xUYXBpfFRlcnxUZXRhcGl8VGhhIHRoZXxUaGF8VGhlbiB5J2FsbHxUaGVufFRow6x8VGh1cmh8VG9kYXxUb28gcmlnaHR8dWdlaG9sbHxVbmR8VW58VsOgfHZhanxWZW5kYXJ8VmV8d2FubnxXYW5uZWVyfFdFTnxXZW5ufFdoZW4geSdhbGx8V2hlbnxXdGVkeXxXdW58WSdrbm93fFllYWggbmFofFluYXxZb3VzZSBrbm93IGxpa2Ugd2hlbnxZb3VzZSBrbm93IHdoZW4geW91c2UgZ290fFl8WmEgcHJlZHBva2xhZHV8WmEgcMWZZWRwb2tsYWR1fFphZGFuaXxaYWRhbm98WmFkYW58WmFkYXRlfFphZGF0b3xaYWvFgmFkYWrEhWN8WmFyYWRpfFphdGF0aXzDnmEgw75lfMOeYXzDnsOhfMOeZWdhcnzDnnVyaHzOkc67zrvOrHzOlM61zrTOv868zq3Ovc6/z4V8zprOsc65fM6Mz4TOsc69fM6kz4zPhM61fNCQINGC0LDQutC+0LZ80JDQs9Cw0YB80JDQu9C1fNCQ0LvQuHzQkNC80LzQvnzQkHzTmNCz05nRgHzTmNC50YLQuNC6fNOY0LzQvNCwfNCR0LjRgNC+0Lp80JLQsHzQktOZfNCU0LDQtNC10L3QvnzQlNCw0L3QvnzQlNC+0L/Rg9GB0YLQuNC8fNCV0YHQu9C4fNCX0LDQtNCw0YLQtXzQl9Cw0LTQsNGC0Lh80JfQsNC00LDRgtC+fNCYfNCGfNCaINGC0L7QvNGDINC20LV80JrQsNC00LB80JrQsNC0fNCa0L7Qs9Cw0YLQvnzQmtC+0LPQtNCwfNCa0L7Qu9C4fNCb05nQutC40L180JvQtdC60LjQvXzQndOZ0YLQuNKX05nQtNOZfNCd0LXRhdCw0Ll80J3QvnzQntC90LTQsHzQn9GA0LjQv9GD0YHRgtC40LzQviwg0YnQvnzQn9GA0LjQv9GD0YHRgtC40LzQvnzQn9GD0YHRgtGMfNCi0LDQutC20LV80KLQsHzQotC+0LPQtNCwfNCi0L7QtNGWfNCi0L580KPQvdC00LB80rrTmdC8fNCv0LrRidC+fNeQ15HXnHzXkNeW15l815DXlnzXkdeU15nXoNeq159815XXktedfNeb15DXqdeofNii2Ybar9in2Yd82KfYsNin2Yt82Kfar9ixfNin2YXYp3zYp9mI2LF82KjYpyDZgdix2LZ82KjYp9mE2YHYsdi2fNio2YHYsdi2fNm+2r7YsXzYqtiofNir2YV82KzYqHzYudmG2K/ZhdinfNmB2LHYtiDaqduM2Kd82YTZg9mGfNmE24zaqdmGfNmF2KrZiXzZh9mG2q/Yp9mF24x82Yh84KSF4KSX4KSwfOCklOCksHzgpJXgpKbgpL584KSV4KS/4KSo4KWN4KSk4KWBfOCkmuClguCkguCkleCkv3zgpJzgpKx84KSk4KSl4KS+fOCkpOCkpuCkvnzgpKTgpKx84KSq4KSw4KSo4KWN4KSk4KWBfOCkquCksHzgpK/gpKbgpL984KiF4Kik4KmHfOConOCopuCpi+CognzgqJzgqL/gqLXgqYfgqIIg4KiV4Ki/fOConOCph+ColeCosHzgqKTgqKZ84Kiq4KiwfOCwheCwquCxjeCwquCxgeCwoeCxgXzgsIgg4LCq4LCw4LC/4LC44LGN4LCl4LC/4LCk4LC/4LCy4LGLfOCwleCwvuCwqOCwv3zgsJrgsYbgsKrgsY3gsKrgsKzgsKHgsL/gsKjgsKbgsL984LCu4LCw4LC/4LCv4LGBfOCyhuCypuCysOCzhnzgsqjgsoLgsqTgsrB84LKo4LK/4LOV4LKh4LK/4LKmfOCyruCypOCzjeCypOCzgXzgsrjgs43gsqXgsr/gsqTgsr/gsq/gsqjgs43gsqjgs4F84LiB4Liz4Lir4LiZ4LiU4LmD4Lir4LmJfOC4lOC4seC4h+C4meC4seC5ieC4mXzguYHguJXguYh84LmA4Lih4Li34LmI4LitfOC5geC4peC4sHzqt7jrn6zrqbQ8fOq3uOumrOqzoDx864uoPHzrp4zslb08fOunjOydvDx866i87KCAPHzsobDqsbQ8fO2VmOyngOunjDx844GL44GkPHzjgZfjgYvjgZc8fOOBn+OBoOOBlzx844Gq44KJ44GwPHzjgoLjgZc8fOS4puS4lDx85L2G44GXPHzkvYbmmK88fOWBh+Wmgjx85YGH5a6aPHzlgYfoqK08fOWBh+iuvjx85YmN5o+QPHzlkIzml7Y8fOWQjOaZgjx85bm25LiUPHzlvZM8fOeVtjx86ICM5LiUPHzpgqPkuYg8fOmCo+m6vDwpKD89WyBcXHRdKykvLGxvb2tiZWhpbmQ6ITB9LHN0cmluZzp7cGF0dGVybjovXCIoPzpcXFxcLnxbXlwiXFxcXFxcclxcbl0pKlwifCcoPzpcXFxcLnxbXidcXFxcXFxyXFxuXSkqJy8saW5zaWRlOntvdXRsaW5lOntwYXR0ZXJuOi88W14+XSs/Pi8sYWxpYXM6XCJ2YXJpYWJsZVwifX19LG91dGxpbmU6e3BhdHRlcm46LzxbXj5dKz8+LyxhbGlhczpcInZhcmlhYmxlXCJ9fX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZ2hlcmtpblwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuZ2l0PXtjb21tZW50Oi9eIy4qL20sZGVsZXRlZDovXlst4oCTXS4qL20saW5zZXJ0ZWQ6L15cXCsuKi9tLHN0cmluZzovKFwifCcpKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS9tLGNvbW1hbmQ6e3BhdHRlcm46L14uKlxcJCBnaXQgLiokL20saW5zaWRlOntwYXJhbWV0ZXI6L1xccy0tP1xcdysvbX19LGNvb3JkOi9eQEAuKkBAJC9tLGNvbW1pdF9zaGExOi9eY29tbWl0IFxcd3s0MH0kL219fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJnaXRcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmdsc2w9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7Y29tbWVudDpbL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vLC9cXC9cXC8oPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXxbXlxcXFxcXHJcXG5dKSovXSxudW1iZXI6Lyg/OlxcYjB4W1xcZGEtZl0rfCg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OmVbKy1dP1xcZCspPylbdWxmXSovaSxrZXl3b3JkOi9cXGIoPzphdHRyaWJ1dGV8Y29uc3R8dW5pZm9ybXx2YXJ5aW5nfGJ1ZmZlcnxzaGFyZWR8Y29oZXJlbnR8dm9sYXRpbGV8cmVzdHJpY3R8cmVhZG9ubHl8d3JpdGVvbmx5fGF0b21pY191aW50fGxheW91dHxjZW50cm9pZHxmbGF0fHNtb290aHxub3BlcnNwZWN0aXZlfHBhdGNofHNhbXBsZXxicmVha3xjb250aW51ZXxkb3xmb3J8d2hpbGV8c3dpdGNofGNhc2V8ZGVmYXVsdHxpZnxlbHNlfHN1YnJvdXRpbmV8aW58b3V0fGlub3V0fGZsb2F0fGRvdWJsZXxpbnR8dm9pZHxib29sfHRydWV8ZmFsc2V8aW52YXJpYW50fHByZWNpc2V8ZGlzY2FyZHxyZXR1cm58ZD9tYXRbMjM0XSg/OnhbMjM0XSk/fFtpYmR1XT92ZWNbMjM0XXx1aW50fGxvd3B8bWVkaXVtcHxoaWdocHxwcmVjaXNpb258W2l1XT9zYW1wbGVyWzEyM11EfFtpdV0/c2FtcGxlckN1YmV8c2FtcGxlclsxMl1EU2hhZG93fHNhbXBsZXJDdWJlU2hhZG93fFtpdV0/c2FtcGxlclsxMl1EQXJyYXl8c2FtcGxlclsxMl1EQXJyYXlTaGFkb3d8W2l1XT9zYW1wbGVyMkRSZWN0fHNhbXBsZXIyRFJlY3RTaGFkb3d8W2l1XT9zYW1wbGVyQnVmZmVyfFtpdV0/c2FtcGxlcjJETVMoPzpBcnJheSk/fFtpdV0/c2FtcGxlckN1YmVBcnJheXxzYW1wbGVyQ3ViZUFycmF5U2hhZG93fFtpdV0/aW1hZ2VbMTIzXUR8W2l1XT9pbWFnZTJEUmVjdHxbaXVdP2ltYWdlQ3ViZXxbaXVdP2ltYWdlQnVmZmVyfFtpdV0/aW1hZ2VbMTJdREFycmF5fFtpdV0/aW1hZ2VDdWJlQXJyYXl8W2l1XT9pbWFnZTJETVMoPzpBcnJheSk/fHN0cnVjdHxjb21tb258cGFydGl0aW9ufGFjdGl2ZXxhc218Y2xhc3N8dW5pb258ZW51bXx0eXBlZGVmfHRlbXBsYXRlfHRoaXN8cmVzb3VyY2V8Z290b3xpbmxpbmV8bm9pbmxpbmV8cHVibGljfHN0YXRpY3xleHRlcm58ZXh0ZXJuYWx8aW50ZXJmYWNlfGxvbmd8c2hvcnR8aGFsZnxmaXhlZHx1bnNpZ25lZHxzdXBlcnB8aW5wdXR8b3V0cHV0fGh2ZWNbMjM0XXxmdmVjWzIzNF18c2FtcGxlcjNEUmVjdHxmaWx0ZXJ8c2l6ZW9mfGNhc3R8bmFtZXNwYWNlfHVzaW5nKVxcYi99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJnbHNsXCIsXCJjb21tZW50XCIse3ByZXByb2Nlc3Nvcjp7cGF0dGVybjovKF5bIFxcdF0qKSMoPzooPzpkZWZpbmV8dW5kZWZ8aWZ8aWZkZWZ8aWZuZGVmfGVsc2V8ZWxpZnxlbmRpZnxlcnJvcnxwcmFnbWF8ZXh0ZW5zaW9ufHZlcnNpb258bGluZSlcXGIpPy9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJidWlsdGluXCJ9fSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImdsc2xcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmdvPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2tleXdvcmQ6L1xcYig/OmJyZWFrfGNhc2V8Y2hhbnxjb25zdHxjb250aW51ZXxkZWZhdWx0fGRlZmVyfGVsc2V8ZmFsbHRocm91Z2h8Zm9yfGZ1bmN8Z28oPzp0byk/fGlmfGltcG9ydHxpbnRlcmZhY2V8bWFwfHBhY2thZ2V8cmFuZ2V8cmV0dXJufHNlbGVjdHxzdHJ1Y3R8c3dpdGNofHR5cGV8dmFyKVxcYi8sYnVpbHRpbjovXFxiKD86Ym9vbHxieXRlfGNvbXBsZXgoPzo2NHwxMjgpfGVycm9yfGZsb2F0KD86MzJ8NjQpfHJ1bmV8c3RyaW5nfHU/aW50KD86OHwxNnwzMnw2NCk/fHVpbnRwdHJ8YXBwZW5kfGNhcHxjbG9zZXxjb21wbGV4fGNvcHl8ZGVsZXRlfGltYWd8bGVufG1ha2V8bmV3fHBhbmljfHByaW50KD86bG4pP3xyZWFsfHJlY292ZXIpXFxiLyxib29sZWFuOi9cXGIoPzpffGlvdGF8bmlsfHRydWV8ZmFsc2UpXFxiLyxvcGVyYXRvcjovWypcXC8lXiE9XT0/fFxcK1s9K10/fC1bPS1dP3xcXHxbPXxdP3wmKD86PXwmfFxcXj0/KT98Pig/Oj49P3w9KT98PCg/Ojw9P3w9fC0pP3w6PXxcXC5cXC5cXC4vLG51bWJlcjovKD86XFxiMHhbYS1mXFxkXSt8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86ZVstK10/XFxkKyk/KWk/L2ksc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ2BdKShcXFxcW1xcc1xcU118KD8hXFwxKVteXFxcXF0pKlxcMS8sZ3JlZWR5OiEwfX0pLGRlbGV0ZSBlLmxhbmd1YWdlcy5nb1tcImNsYXNzLW5hbWVcIl19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImdvXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5ncmFwaHFsPXtjb21tZW50Oi8jLiovLHN0cmluZzp7cGF0dGVybjovXCIoPzpcXFxcLnxbXlxcXFxcIlxcclxcbl0pKlwiLyxncmVlZHk6ITB9LG51bWJlcjovKD86XFxCLXxcXGIpXFxkKyg/OlxcLlxcZCspPyg/OmVbKy1dP1xcZCspP1xcYi9pLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2UpXFxiLyx2YXJpYWJsZTovXFwkW2Etel9dXFx3Ki9pLGRpcmVjdGl2ZTp7cGF0dGVybjovQFthLXpfXVxcdyovaSxhbGlhczpcImZ1bmN0aW9uXCJ9LFwiYXR0ci1uYW1lXCI6L1thLXpfXVxcdyooPz1cXHMqOikvaSxrZXl3b3JkOlt7cGF0dGVybjovKGZyYWdtZW50XFxzKyg/IW9uKVthLXpfXVxcdypcXHMrfFxcLnszfVxccyopb25cXGIvLGxvb2tiZWhpbmQ6ITB9LC9cXGIoPzpxdWVyeXxmcmFnbWVudHxtdXRhdGlvbilcXGIvXSxvcGVyYXRvcjovIXw9fFxcLnszfS8scHVuY3R1YXRpb246L1shKCl7fVxcW1xcXTo9LF0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiZ3JhcGhxbFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuZ3Jvb3Z5PWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2tleXdvcmQ6L1xcYig/OmFzfGRlZnxpbnxhYnN0cmFjdHxhc3NlcnR8Ym9vbGVhbnxicmVha3xieXRlfGNhc2V8Y2F0Y2h8Y2hhcnxjbGFzc3xjb25zdHxjb250aW51ZXxkZWZhdWx0fGRvfGRvdWJsZXxlbHNlfGVudW18ZXh0ZW5kc3xmaW5hbHxmaW5hbGx5fGZsb2F0fGZvcnxnb3RvfGlmfGltcGxlbWVudHN8aW1wb3J0fGluc3RhbmNlb2Z8aW50fGludGVyZmFjZXxsb25nfG5hdGl2ZXxuZXd8cGFja2FnZXxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8cmV0dXJufHNob3J0fHN0YXRpY3xzdHJpY3RmcHxzdXBlcnxzd2l0Y2h8c3luY2hyb25pemVkfHRoaXN8dGhyb3d8dGhyb3dzfHRyYWl0fHRyYW5zaWVudHx0cnl8dm9pZHx2b2xhdGlsZXx3aGlsZSlcXGIvLHN0cmluZzpbe3BhdHRlcm46LyhcIlwiXCJ8JycnKVtcXHNcXFNdKj9cXDF8KD86XFwkXFwvKSg/OlxcJFxcL1xcJHxbXFxzXFxTXSkqP1xcL1xcJC8sZ3JlZWR5OiEwfSx7cGF0dGVybjovKFtcIidcXC9dKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLGdyZWVkeTohMH1dLG51bWJlcjovXFxiKD86MGJbMDFfXSt8MHhbXFxkYS1mX10rKD86XFwuW1xcZGEtZl9wXFwtXSspP3xbXFxkX10rKD86XFwuW1xcZF9dKyk/KD86ZVsrLV0/W1xcZF0rKT8pW2dsaWRmXT9cXGIvaSxvcGVyYXRvcjp7cGF0dGVybjovKF58W14uXSkoPzp+fD09P34/fFxcP1suOl0/fFxcKig/OlsuPV18XFwqPT8pP3xcXC5bQCZdfFxcLlxcLjx8XFwuezEsMn0oPyFcXC4pfC1bLT0+XT98XFwrWys9XT98IT0/fDwoPzo8PT98PT4/KT98Pig/Oj4+Pz0/fD0pP3wmWyY9XT98XFx8W3w9XT98XFwvPT98XFxePT98JT0/KS8sbG9va2JlaGluZDohMH0scHVuY3R1YXRpb246L1xcLit8W3t9W1xcXTsoKSw6JF0vfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiZ3Jvb3Z5XCIsXCJzdHJpbmdcIix7c2hlYmFuZzp7cGF0dGVybjovIyEuKy8sYWxpYXM6XCJjb21tZW50XCJ9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiZ3Jvb3Z5XCIsXCJwdW5jdHVhdGlvblwiLHtcInNwb2NrLWJsb2NrXCI6L1xcYig/OnNldHVwfGdpdmVufHdoZW58dGhlbnxhbmR8Y2xlYW51cHxleHBlY3R8d2hlcmUpOi99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJncm9vdnlcIixcImZ1bmN0aW9uXCIse2Fubm90YXRpb246e2FsaWFzOlwicHVuY3R1YXRpb25cIixwYXR0ZXJuOi8oXnxbXi5dKUBcXHcrLyxsb29rYmVoaW5kOiEwfX0pLGUuaG9va3MuYWRkKFwid3JhcFwiLGZ1bmN0aW9uKHQpe2lmKFwiZ3Jvb3Z5XCI9PT10Lmxhbmd1YWdlJiZcInN0cmluZ1wiPT09dC50eXBlKXt2YXIgbj10LmNvbnRlbnQudmFsdWVbMF07aWYoXCInXCIhPW4pe3ZhciByPS8oW15cXFxcXSkoPzpcXCQoPzpcXHsuKj9cXH18W1xcdy5dKykpLztcIiRcIj09PW4mJihyPS8oW15cXCRdKSg/OlxcJCg/Olxcey4qP1xcfXxbXFx3Ll0rKSkvKSx0LmNvbnRlbnQudmFsdWU9dC5jb250ZW50LnZhbHVlLnJlcGxhY2UoLyZsdDsvZyxcIjxcIikucmVwbGFjZSgvJmFtcDsvZyxcIiZcIiksdC5jb250ZW50PWUuaGlnaGxpZ2h0KHQuY29udGVudC52YWx1ZSx7ZXhwcmVzc2lvbjp7cGF0dGVybjpyLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOmUubGFuZ3VhZ2VzLmdyb292eX19KSx0LmNsYXNzZXMucHVzaChcIi9cIj09PW4/XCJyZWdleFwiOlwiZ3N0cmluZ1wiKX19fSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImdyb292eVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLmhhbWw9e1wibXVsdGlsaW5lLWNvbW1lbnRcIjp7cGF0dGVybjovKCg/Ol58XFxyP1xcbnxcXHIpKFtcXHQgXSopKSg/OlxcL3wtIykuKig/Oig/Olxccj9cXG58XFxyKVxcMltcXHQgXSsuKykqLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwiY29tbWVudFwifSxcIm11bHRpbGluZS1jb2RlXCI6W3twYXR0ZXJuOi8oKD86XnxcXHI/XFxufFxccikoW1xcdCBdKikoPzpbfi1dfFsmIV0/PSkpLiosW1xcdCBdKig/Oig/Olxccj9cXG58XFxyKVxcMltcXHQgXSsuKixbXFx0IF0qKSooPzooPzpcXHI/XFxufFxccilcXDJbXFx0IF0rLispLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy5ydWJ5fX0se3BhdHRlcm46LygoPzpefFxccj9cXG58XFxyKShbXFx0IF0qKSg/Olt+LV18WyYhXT89KSkuKlxcfFtcXHQgXSooPzooPzpcXHI/XFxufFxccilcXDJbXFx0IF0rLipcXHxbXFx0IF0qKSovLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntyZXN0OmUubGFuZ3VhZ2VzLnJ1Ynl9fV0sZmlsdGVyOntwYXR0ZXJuOi8oKD86XnxcXHI/XFxufFxccikoW1xcdCBdKikpOltcXHctXSsoPzooPzpcXHI/XFxufFxccikoPzpcXDJbXFx0IF0rLit8XFxzKj8oPz1cXHI/XFxufFxccikpKSsvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntcImZpbHRlci1uYW1lXCI6e3BhdHRlcm46L146W1xcdy1dKy8sYWxpYXM6XCJ2YXJpYWJsZVwifX19LG1hcmt1cDp7cGF0dGVybjovKCg/Ol58XFxyP1xcbnxcXHIpW1xcdCBdKik8LisvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntyZXN0OmUubGFuZ3VhZ2VzLm1hcmt1cH19LGRvY3R5cGU6e3BhdHRlcm46LygoPzpefFxccj9cXG58XFxyKVtcXHQgXSopISEhKD86IC4rKT8vLGxvb2tiZWhpbmQ6ITB9LHRhZzp7cGF0dGVybjovKCg/Ol58XFxyP1xcbnxcXHIpW1xcdCBdKilbJS4jXVtcXHdcXC0jLl0qW1xcd1xcLV0oPzpcXChbXildK1xcKXxcXHsoPzpcXHtbXn1dK1xcfXxbXn1dKStcXH18XFxbW15cXF1dK1xcXSkqW1xcLzw+XSovLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOnthdHRyaWJ1dGVzOlt7cGF0dGVybjovKF58W14jXSlcXHsoPzpcXHtbXn1dK1xcfXxbXn1dKStcXH0vLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntyZXN0OmUubGFuZ3VhZ2VzLnJ1Ynl9fSx7cGF0dGVybjovXFwoW14pXStcXCkvLGluc2lkZTp7XCJhdHRyLXZhbHVlXCI6e3BhdHRlcm46Lyg9XFxzKikoPzpcIig/OlxcXFwufFteXFxcXFwiXFxyXFxuXSkqXCJ8W14pXFxzXSspLyxsb29rYmVoaW5kOiEwfSxcImF0dHItbmFtZVwiOi9bXFx3Oi1dKyg/PVxccyohPz18XFxzKlssKV0pLyxwdW5jdHVhdGlvbjovWz0oKSxdL319LHtwYXR0ZXJuOi9cXFtbXlxcXV0rXFxdLyxpbnNpZGU6e3Jlc3Q6ZS5sYW5ndWFnZXMucnVieX19XSxwdW5jdHVhdGlvbjovWzw+XS99fSxjb2RlOntwYXR0ZXJuOi8oKD86XnxcXHI/XFxufFxccilbXFx0IF0qKD86W34tXXxbJiFdPz0pKS4rLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy5ydWJ5fX0saW50ZXJwb2xhdGlvbjp7cGF0dGVybjovI1xce1tefV0rXFx9LyxpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXiNcXHt8XFx9JC8sYWxpYXM6XCJwdW5jdHVhdGlvblwifSxyZXN0OmUubGFuZ3VhZ2VzLnJ1Ynl9fSxwdW5jdHVhdGlvbjp7cGF0dGVybjovKCg/Ol58XFxyP1xcbnxcXHIpW1xcdCBdKilbfj1cXC0mIV0rLyxsb29rYmVoaW5kOiEwfX07Zm9yKHZhciB0PVtcImNzc1wiLHtmaWx0ZXI6XCJjb2ZmZWVcIixsYW5ndWFnZTpcImNvZmZlZXNjcmlwdFwifSxcImVyYlwiLFwiamF2YXNjcmlwdFwiLFwibGVzc1wiLFwibWFya2Rvd25cIixcInJ1YnlcIixcInNjc3NcIixcInRleHRpbGVcIl0sbj17fSxyPTAsbz10Lmxlbmd0aDtyPG87cisrKXt2YXIgYT10W3JdO2E9XCJzdHJpbmdcIj09dHlwZW9mIGE/e2ZpbHRlcjphLGxhbmd1YWdlOmF9OmEsZS5sYW5ndWFnZXNbYS5sYW5ndWFnZV0mJihuW1wiZmlsdGVyLVwiK2EuZmlsdGVyXT17cGF0dGVybjpSZWdFeHAoXCIoKD86XnxcXFxccj9cXFxcbnxcXFxccikoW1xcXFx0IF0qKSk6e3tmaWx0ZXJfbmFtZX19KD86KD86XFxcXHI/XFxcXG58XFxcXHIpKD86XFxcXDJbXFxcXHQgXSsuK3xcXFxccyo/KD89XFxcXHI/XFxcXG58XFxcXHIpKSkrXCIucmVwbGFjZShcInt7ZmlsdGVyX25hbWV9fVwiLGEuZmlsdGVyKSksbG9va2JlaGluZDohMCxpbnNpZGU6e1wiZmlsdGVyLW5hbWVcIjp7cGF0dGVybjovXjpbXFx3LV0rLyxhbGlhczpcInZhcmlhYmxlXCJ9LHJlc3Q6ZS5sYW5ndWFnZXNbYS5sYW5ndWFnZV19fSl9ZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiaGFtbFwiLFwiZmlsdGVyXCIsbil9KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJoYW1sXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7ZS5sYW5ndWFnZXMuaGFuZGxlYmFycz17Y29tbWVudDovXFx7XFx7IVtcXHNcXFNdKj9cXH1cXH0vLGRlbGltaXRlcjp7cGF0dGVybjovXlxce1xce1xcez98XFx9XFx9XFx9PyQvaSxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LHN0cmluZzovKFtcIiddKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLG51bWJlcjovXFxiMHhbXFxkQS1GYS1mXStcXGJ8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86W0VlXVsrLV0/XFxkKyk/Lyxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi8sYmxvY2s6e3BhdHRlcm46L14oXFxzKn4/XFxzKilbI1xcL11cXFMrPyg/PVxccyp+P1xccyokfFxccykvaSxsb29rYmVoaW5kOiEwLGFsaWFzOlwia2V5d29yZFwifSxicmFja2V0czp7cGF0dGVybjovXFxbW15cXF1dK1xcXS8saW5zaWRlOntwdW5jdHVhdGlvbjovXFxbfFxcXS8sdmFyaWFibGU6L1tcXHNcXFNdKy99fSxwdW5jdHVhdGlvbjovWyFcIiMlJicoKSorLC5cXC87PD0+QFxcW1xcXFxcXF1eYHt8fX5dLyx2YXJpYWJsZTovW14hXCIjJSYnKCkqKywuXFwvOzw9PkBcXFtcXFxcXFxdXmB7fH1+XFxzXSsvfSxlLmhvb2tzLmFkZChcImJlZm9yZS10b2tlbml6ZVwiLGZ1bmN0aW9uKHQpe2UubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl0uYnVpbGRQbGFjZWhvbGRlcnModCxcImhhbmRsZWJhcnNcIiwvXFx7XFx7XFx7W1xcc1xcU10rP1xcfVxcfVxcfXxcXHtcXHtbXFxzXFxTXSs/XFx9XFx9L2cpfSksZS5ob29rcy5hZGQoXCJhZnRlci10b2tlbml6ZVwiLGZ1bmN0aW9uKHQpe2UubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl0udG9rZW5pemVQbGFjZWhvbGRlcnModCxcImhhbmRsZWJhcnNcIil9KX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImhhbmRsZWJhcnNcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmhhc2tlbGw9e2NvbW1lbnQ6e3BhdHRlcm46LyhefFteLSEjJCUqKz0/JkB8fi46PD5eXFxcXFxcL10pKD86LS1bXi0hIyQlKis9PyZAfH4uOjw+XlxcXFxcXC9dLip8ey1bXFxzXFxTXSo/LX0pL20sbG9va2JlaGluZDohMH0sY2hhcjovJyg/OlteXFxcXCddfFxcXFwoPzpbYWJmbnJ0dlxcXFxcIicmXXxcXF5bQS1aQFtcXF1eX118TlVMfFNPSHxTVFh8RVRYfEVPVHxFTlF8QUNLfEJFTHxCU3xIVHxMRnxWVHxGRnxDUnxTT3xTSXxETEV8REMxfERDMnxEQzN8REM0fE5BS3xTWU58RVRCfENBTnxFTXxTVUJ8RVNDfEZTfEdTfFJTfFVTfFNQfERFTHxcXGQrfG9bMC03XSt8eFswLTlhLWZBLUZdKykpJy8sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlteXFxcXFwiXXxcXFxcKD86W2FiZm5ydHZcXFxcXCInJl18XFxeW0EtWkBbXFxdXl9dfE5VTHxTT0h8U1RYfEVUWHxFT1R8RU5RfEFDS3xCRUx8QlN8SFR8TEZ8VlR8RkZ8Q1J8U098U0l8RExFfERDMXxEQzJ8REMzfERDNHxOQUt8U1lOfEVUQnxDQU58RU18U1VCfEVTQ3xGU3xHU3xSU3xVU3xTUHxERUx8XFxkK3xvWzAtN10rfHhbMC05YS1mQS1GXSspfFxcXFxcXHMrXFxcXCkqXCIvLGdyZWVkeTohMH0sa2V5d29yZDovXFxiKD86Y2FzZXxjbGFzc3xkYXRhfGRlcml2aW5nfGRvfGVsc2V8aWZ8aW58aW5maXhsfGluZml4cnxpbnN0YW5jZXxsZXR8bW9kdWxlfG5ld3R5cGV8b2Z8cHJpbWl0aXZlfHRoZW58dHlwZXx3aGVyZSlcXGIvLGltcG9ydF9zdGF0ZW1lbnQ6e3BhdHRlcm46LygoPzpcXHI/XFxufFxccnxeKVxccyopaW1wb3J0XFxzKyg/OnF1YWxpZmllZFxccyspPyg/OltBLVpdW1xcdyddKikoPzpcXC5bQS1aXVtcXHcnXSopKig/Olxccythc1xccysoPzpbQS1aXVtfYS16QS1aMC05J10qKSg/OlxcLltBLVpdW1xcdyddKikqKT8oPzpcXHMraGlkaW5nXFxiKT8vbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7a2V5d29yZDovXFxiKD86aW1wb3J0fHF1YWxpZmllZHxhc3xoaWRpbmcpXFxiL319LGJ1aWx0aW46L1xcYig/OmFic3xhY29zfGFjb3NofGFsbHxhbmR8YW55fGFwcGVuZEZpbGV8YXBwcm94UmF0aW9uYWx8YXNUeXBlT2Z8YXNpbnxhc2luaHxhdGFufGF0YW4yfGF0YW5ofGJhc2ljSU9SdW58YnJlYWt8Y2F0Y2h8Y2VpbGluZ3xjaHJ8Y29tcGFyZXxjb25jYXR8Y29uY2F0TWFwfGNvbnN0fGNvc3xjb3NofGN1cnJ5fGN5Y2xlfGRlY29kZUZsb2F0fGRlbm9taW5hdG9yfGRpZ2l0VG9JbnR8ZGl2fGRpdk1vZHxkcm9wfGRyb3BXaGlsZXxlaXRoZXJ8ZWxlbXxlbmNvZGVGbG9hdHxlbnVtRnJvbXxlbnVtRnJvbVRoZW58ZW51bUZyb21UaGVuVG98ZW51bUZyb21Ub3xlcnJvcnxldmVufGV4cHxleHBvbmVudHxmYWlsfGZpbHRlcnxmbGlwfGZsb2F0RGlnaXRzfGZsb2F0UmFkaXh8ZmxvYXRSYW5nZXxmbG9vcnxmbWFwfGZvbGRsfGZvbGRsMXxmb2xkcnxmb2xkcjF8ZnJvbURvdWJsZXxmcm9tRW51bXxmcm9tSW50fGZyb21JbnRlZ2VyfGZyb21JbnRlZ3JhbHxmcm9tUmF0aW9uYWx8ZnN0fGdjZHxnZXRDaGFyfGdldENvbnRlbnRzfGdldExpbmV8Z3JvdXB8aGVhZHxpZHxpblJhbmdlfGluZGV4fGluaXR8aW50VG9EaWdpdHxpbnRlcmFjdHxpb0Vycm9yfGlzQWxwaGF8aXNBbHBoYU51bXxpc0FzY2lpfGlzQ29udHJvbHxpc0Rlbm9ybWFsaXplZHxpc0RpZ2l0fGlzSGV4RGlnaXR8aXNJRUVFfGlzSW5maW5pdGV8aXNMb3dlcnxpc05hTnxpc05lZ2F0aXZlWmVyb3xpc09jdERpZ2l0fGlzUHJpbnR8aXNTcGFjZXxpc1VwcGVyfGl0ZXJhdGV8bGFzdHxsY218bGVuZ3RofGxleHxsZXhEaWdpdHN8bGV4TGl0Q2hhcnxsaW5lc3xsb2d8bG9nQmFzZXxsb29rdXB8bWFwfG1hcE18bWFwTV98bWF4fG1heEJvdW5kfG1heGltdW18bWF5YmV8bWlufG1pbkJvdW5kfG1pbmltdW18bW9kfG5lZ2F0ZXxub3R8bm90RWxlbXxudWxsfG51bWVyYXRvcnxvZGR8b3J8b3JkfG90aGVyd2lzZXxwYWNrfHBpfHByZWR8cHJpbUV4aXRXaXRofHByaW50fHByb2R1Y3R8cHJvcGVyRnJhY3Rpb258cHV0Q2hhcnxwdXRTdHJ8cHV0U3RyTG58cXVvdHxxdW90UmVtfHJhbmdlfHJhbmdlU2l6ZXxyZWFkfHJlYWREZWN8cmVhZEZpbGV8cmVhZEZsb2F0fHJlYWRIZXh8cmVhZElPfHJlYWRJbnR8cmVhZExpc3R8cmVhZExpdENoYXJ8cmVhZExufHJlYWRPY3R8cmVhZFBhcmVufHJlYWRTaWduZWR8cmVhZHN8cmVhZHNQcmVjfHJlYWxUb0ZyYWN8cmVjaXB8cmVtfHJlcGVhdHxyZXBsaWNhdGV8cmV0dXJufHJldmVyc2V8cm91bmR8c2NhbGVGbG9hdHxzY2FubHxzY2FubDF8c2NhbnJ8c2NhbnIxfHNlcXxzZXF1ZW5jZXxzZXF1ZW5jZV98c2hvd3xzaG93Q2hhcnxzaG93SW50fHNob3dMaXN0fHNob3dMaXRDaGFyfHNob3dQYXJlbnxzaG93U2lnbmVkfHNob3dTdHJpbmd8c2hvd3N8c2hvd3NQcmVjfHNpZ25pZmljYW5kfHNpZ251bXxzaW58c2luaHxzbmR8c29ydHxzcGFufHNwbGl0QXR8c3FydHxzdWJ0cmFjdHxzdWNjfHN1bXx0YWlsfHRha2V8dGFrZVdoaWxlfHRhbnx0YW5ofHRocmVhZFRvSU9SZXN1bHR8dG9FbnVtfHRvSW50fHRvSW50ZWdlcnx0b0xvd2VyfHRvUmF0aW9uYWx8dG9VcHBlcnx0cnVuY2F0ZXx1bmN1cnJ5fHVuZGVmaW5lZHx1bmxpbmVzfHVudGlsfHVud29yZHN8dW56aXB8dW56aXAzfHVzZXJFcnJvcnx3b3Jkc3x3cml0ZUZpbGV8emlwfHppcDN8emlwV2l0aHx6aXBXaXRoMylcXGIvLG51bWJlcjovXFxiKD86XFxkKyg/OlxcLlxcZCspPyg/OmVbKy1dP1xcZCspP3wwb1swLTddK3wweFswLTlhLWZdKylcXGIvaSxvcGVyYXRvcjovXFxzXFwuXFxzfFstISMkJSorPT8mQHx+Ljo8Pl5cXFxcXFwvXSpcXC5bLSEjJCUqKz0/JkB8fi46PD5eXFxcXFxcL10rfFstISMkJSorPT8mQHx+Ljo8Pl5cXFxcXFwvXStcXC5bLSEjJCUqKz0/JkB8fi46PD5eXFxcXFxcL10qfFstISMkJSorPT8mQHx+Ojw+XlxcXFxcXC9dK3xgKFtBLVpdW1xcdyddKlxcLikqW19hLXpdW1xcdyddKmAvLGh2YXJpYWJsZTovXFxiKD86W0EtWl1bXFx3J10qXFwuKSpbX2Etel1bXFx3J10qXFxiLyxjb25zdGFudDovXFxiKD86W0EtWl1bXFx3J10qXFwuKSpbQS1aXVtcXHcnXSpcXGIvLHB1bmN0dWF0aW9uOi9be31bXFxdOygpLC46XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJoYXNrZWxsXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5oYXhlPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse3N0cmluZzp7cGF0dGVybjovKFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFxbXFxzXFxTXSkqXFwxLyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOntwYXR0ZXJuOi8oXnxbXlxcXFxdKVxcJCg/Olxcdyt8XFx7W159XStcXH0pLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp7cGF0dGVybjovXlxcJFxcdyovLGFsaWFzOlwidmFyaWFibGVcIn19fX19LGtleXdvcmQ6L1xcYnRoaXNcXGJ8XFxiKD86YWJzdHJhY3R8YXN8YnJlYWt8Y2FzZXxjYXN0fGNhdGNofGNsYXNzfGNvbnRpbnVlfGRlZmF1bHR8ZG98ZHluYW1pY3xlbHNlfGVudW18ZXh0ZW5kc3xleHRlcm58ZnJvbXxmb3J8ZnVuY3Rpb258aWZ8aW1wbGVtZW50c3xpbXBvcnR8aW58aW5saW5lfGludGVyZmFjZXxtYWNyb3xuZXd8bnVsbHxvdmVycmlkZXxwdWJsaWN8cHJpdmF0ZXxyZXR1cm58c3RhdGljfHN1cGVyfHN3aXRjaHx0aHJvd3x0b3x0cnl8dHlwZWRlZnx1c2luZ3x2YXJ8d2hpbGUpKD8hXFwuKVxcYi8sb3BlcmF0b3I6L1xcLnszfXxcXCtcXCs/fC1bLT5dP3xbPSFdPT98JiY/fFxcfFxcfD98PFs8PV0/fD5bPj1dP3xbKlxcLyV+Xl0vfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiaGF4ZVwiLFwiY2xhc3MtbmFtZVwiLHtyZWdleDp7cGF0dGVybjovflxcLyg/OlteXFwvXFxcXFxcclxcbl18XFxcXC4pK1xcL1tpZ21zdV0qLyxncmVlZHk6ITB9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiaGF4ZVwiLFwia2V5d29yZFwiLHtwcmVwcm9jZXNzb3I6e3BhdHRlcm46LyNcXHcrLyxhbGlhczpcImJ1aWx0aW5cIn0sbWV0YWRhdGE6e3BhdHRlcm46L0A6P1xcdysvLGFsaWFzOlwic3ltYm9sXCJ9LHJlaWZpY2F0aW9uOntwYXR0ZXJuOi9cXCQoPzpcXHcrfCg/PVxceykpLyxhbGlhczpcInZhcmlhYmxlXCJ9fSksZS5sYW5ndWFnZXMuaGF4ZS5zdHJpbmcuaW5zaWRlLmludGVycG9sYXRpb24uaW5zaWRlLnJlc3Q9ZS5sYW5ndWFnZXMuaGF4ZSxkZWxldGUgZS5sYW5ndWFnZXMuaGF4ZVtcImNsYXNzLW5hbWVcIl19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImhheGVcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmhwa3A9e2RpcmVjdGl2ZTp7cGF0dGVybjovXFxiKD86KD86aW5jbHVkZVN1YkRvbWFpbnN8cHJlbG9hZHxzdHJpY3QpKD86IHw7KXxwaW4tc2hhMjU2PVwiW2EtekEtWlxcZCs9XFwvXStcInwoPzptYXgtYWdlfHJlcG9ydC11cmkpPXxyZXBvcnQtdG8gKS8sYWxpYXM6XCJrZXl3b3JkXCJ9LHNhZmU6e3BhdHRlcm46L1xcZHs3LH0vLGFsaWFzOlwic2VsZWN0b3JcIn0sdW5zYWZlOntwYXR0ZXJuOi9cXGR7MCw2fS8sYWxpYXM6XCJmdW5jdGlvblwifX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImhwa3BcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmhzdHM9e2RpcmVjdGl2ZTp7cGF0dGVybjovXFxiKD86bWF4LWFnZT18aW5jbHVkZVN1YkRvbWFpbnN8cHJlbG9hZCkvLGFsaWFzOlwia2V5d29yZFwifSxzYWZlOntwYXR0ZXJuOi9cXGR7OCx9LyxhbGlhczpcInNlbGVjdG9yXCJ9LHVuc2FmZTp7cGF0dGVybjovXFxkezAsN30vLGFsaWFzOlwiZnVuY3Rpb25cIn19fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJoc3RzXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5odHRwPXtcInJlcXVlc3QtbGluZVwiOntwYXR0ZXJuOi9eKD86UE9TVHxHRVR8UFVUfERFTEVURXxPUFRJT05TfFBBVENIfFRSQUNFfENPTk5FQ1QpXFxzKD86aHR0cHM/OlxcL1xcL3xcXC8pXFxTK1xcc0hUVFBcXC9bMC05Ll0rL20saW5zaWRlOntwcm9wZXJ0eTovXig/OlBPU1R8R0VUfFBVVHxERUxFVEV8T1BUSU9OU3xQQVRDSHxUUkFDRXxDT05ORUNUKVxcYi8sXCJhdHRyLW5hbWVcIjovOlxcdysvfX0sXCJyZXNwb25zZS1zdGF0dXNcIjp7cGF0dGVybjovXkhUVFBcXC8xLlswMV0gXFxkKy4qL20saW5zaWRlOntwcm9wZXJ0eTp7cGF0dGVybjovKF5IVFRQXFwvMS5bMDFdIClcXGQrLiovaSxsb29rYmVoaW5kOiEwfX19LFwiaGVhZGVyLW5hbWVcIjp7cGF0dGVybjovXltcXHctXSs6KD89LikvbSxhbGlhczpcImtleXdvcmRcIn19O3ZhciB0PXtcImFwcGxpY2F0aW9uL2pzb25cIjplLmxhbmd1YWdlcy5qYXZhc2NyaXB0LFwiYXBwbGljYXRpb24veG1sXCI6ZS5sYW5ndWFnZXMubWFya3VwLFwidGV4dC94bWxcIjplLmxhbmd1YWdlcy5tYXJrdXAsXCJ0ZXh0L2h0bWxcIjplLmxhbmd1YWdlcy5tYXJrdXB9O2Zvcih2YXIgbiBpbiB0KWlmKHRbbl0pe3ZhciByPXt9O3Jbbl09e3BhdHRlcm46bmV3IFJlZ0V4cChcIihjb250ZW50LXR5cGU6XFxcXHMqXCIrbitcIltcXFxcd1xcXFxXXSo/KSg/OlxcXFxyP1xcXFxufFxcXFxyKXsyfVtcXFxcd1xcXFxXXSpcIixcImlcIiksbG9va2JlaGluZDohMCxpbnNpZGU6e3Jlc3Q6dFtuXX19LGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImh0dHBcIixcImhlYWRlci1uYW1lXCIscil9fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJodHRwXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5pY2hpZ29qYW09e2NvbW1lbnQ6Lyg/OlxcQid8UkVNKSg/OlteXFxuXFxyXSopL2ksc3RyaW5nOntwYXR0ZXJuOi9cIig/OlwiXCJ8WyEjJCUmJygpKixcXC86Ozw9Pj9eXyArXFwtLkEtWlxcZF0pKlwiL2ksZ3JlZWR5OiEwfSxudW1iZXI6L1xcQiNbMC05QS1GXSt8XFxCYFswMV0rfCg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OkVbKy1dP1xcZCspPy9pLGtleXdvcmQ6L1xcYig/OkJFRVB8QlBTfENBU0V8Q0xFQVJ8Q0xLfENMT3xDTFB8Q0xTfENMVHxDTFZ8Q09OVHxDT1BZfEVMU0V8RU5EfEZJTEV8RklMRVN8Rk9SfEdPU1VCfEdTQnxHT1RPfElGfElOUFVUfEtCRHxMRUR8TEVUfExJU1R8TE9BRHxMT0NBVEV8TFJVTnxORVd8TkVYVHxPVVR8UklHSFR8UExBWXxQT0tFfFBSSU5UfFBXTXxSRU18UkVOVU18UkVTRVR8UkVUVVJOfFJUTnxSVU58U0FWRXxTQ1JPTEx8U0xFRVB8U1JORHxTVEVQfFNUT1B8U1VCfFRFTVBPfFRIRU58VE98VUFSVHxWSURFT3xXQUlUKSg/OlxcJHxcXGIpL2ksZnVuY3Rpb246L1xcYig/OkFCU3xBTkF8QVNDfEJJTnxCVE58REVDfEVORHxGUkVFfEhFTFB8SEVYfEkyQ1J8STJDV3xJTnxJTktFWXxMRU58TElORXxQRUVLfFJORHxTQ1J8U09VTkR8U1RSfFRJQ0t8VVNSfFZFUnxWUEVFS3xaRVIpKD86XFwkfFxcYikvaSxsYWJlbDovKD86XFxCQFteXFxzXSspL2ksb3BlcmF0b3I6LzxbPT5dP3w+PT98XFx8XFx8fCYmfFsrXFwtKlxcLz18Jl5+IV18XFxiKD86QU5EfE5PVHxPUilcXGIvaSxwdW5jdHVhdGlvbjovW1xcWyw7OigpXFxdXS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJpY2hpZ29qYW1cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmljb249e2NvbW1lbnQ6LyMuKi8sc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86KD8hXFwxKVteXFxcXFxcclxcbl9dfFxcXFwufF8oPyFcXDEpKD86XFxyXFxufFtcXHNcXFNdKSkqXFwxLyxncmVlZHk6ITB9LG51bWJlcjovXFxiKD86XFxkK3JbYS16XFxkXSt8XFxkKyg/OlxcLlxcZCspPyg/OmVbKy1dP1xcZCspPylcXGJ8XFwuXFxkK1xcYi9pLFwiYnVpbHRpbi1rZXl3b3JkXCI6e3BhdHRlcm46LyYoPzphbGxvY2F0ZWR8YXNjaWl8Y2xvY2t8Y29sbGVjdGlvbnN8Y3NldHxjdXJyZW50fGRhdGV8ZGF0ZWxpbmV8ZGlnaXRzfGR1bXB8ZXxlcnJvcig/Om51bWJlcnx0ZXh0fHZhbHVlKT98ZXJyb3V0fGZhaWx8ZmVhdHVyZXN8ZmlsZXxob3N0fGlucHV0fGxjYXNlfGxldHRlcnN8bGV2ZWx8bGluZXxtYWlufG51bGx8b3V0cHV0fHBoaXxwaXxwb3N8cHJvZ25hbWV8cmFuZG9tfHJlZ2lvbnN8c291cmNlfHN0b3JhZ2V8c3ViamVjdHx0aW1lfHRyYWNlfHVjYXNlfHZlcnNpb24pXFxiLyxhbGlhczpcInZhcmlhYmxlXCJ9LGRpcmVjdGl2ZTp7cGF0dGVybjovXFwkXFx3Ky8sYWxpYXM6XCJidWlsdGluXCJ9LGtleXdvcmQ6L1xcYig/OmJyZWFrfGJ5fGNhc2V8Y3JlYXRlfGRlZmF1bHR8ZG98ZWxzZXxlbmR8ZXZlcnl8ZmFpbHxnbG9iYWx8aWZ8aW5pdGlhbHxpbnZvY2FibGV8bGlua3xsb2NhbHxuZXh0fG5vdHxvZnxwcm9jZWR1cmV8cmVjb3JkfHJlcGVhdHxyZXR1cm58c3RhdGljfHN1c3BlbmR8dGhlbnx0b3x1bnRpbHx3aGlsZSlcXGIvLGZ1bmN0aW9uOi8oPyFcXGQpXFx3Kyg/PVxccypbKHtdfFxccyohXFxzKlxcWykvLG9wZXJhdG9yOi9bKy1dOig/IT0pfCg/OltcXC8/QF4lJl18XFwrXFwrP3wtLT98PT0/PT98fj09Pz0/fFxcKlxcKj98XFx8XFx8XFx8P3w8KD86LT4/fDw/PT8pfD4+Pz0/KSg/Ojo9KT98Oig/Oj06Pyk/fFshLlxcXFx8fl0vLHB1bmN0dWF0aW9uOi9bXFxbXFxdKCl7fSw7XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJpY29uXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5pbmZvcm03PXtzdHJpbmc6e3BhdHRlcm46L1wiW15cIl0qXCIvLGluc2lkZTp7c3Vic3RpdHV0aW9uOntwYXR0ZXJuOi9cXFtbXlxcXV0rXFxdLyxpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXFxbfFxcXS8sYWxpYXM6XCJwdW5jdHVhdGlvblwifX19fX0sY29tbWVudDp7cGF0dGVybjovXFxbW15cXF1dK1xcXS8sZ3JlZWR5OiEwfSx0aXRsZTp7cGF0dGVybjovXlsgXFx0XSooPzp2b2x1bWV8Ym9va3xwYXJ0KD8hIG9mKXxjaGFwdGVyfHNlY3Rpb258dGFibGUpXFxiLisvaW0sYWxpYXM6XCJpbXBvcnRhbnRcIn0sbnVtYmVyOntwYXR0ZXJuOi8oXnxbXi1dKSg/OlxcYlxcZCsoPzpcXC5cXGQrKT8oPzpcXF5cXGQrKT9cXHcqfFxcYig/Om9uZXx0d298dGhyZWV8Zm91cnxmaXZlfHNpeHxzZXZlbnxlaWdodHxuaW5lfHRlbnxlbGV2ZW58dHdlbHZlKSlcXGIoPyEtKS9pLGxvb2tiZWhpbmQ6ITB9LHZlcmI6e3BhdHRlcm46LyhefFteLV0pXFxiKD86YXBwbHlpbmcgdG98YXJlfGF0dGFja2luZ3xhbnN3ZXJpbmd8YXNraW5nfGJlKD86aW5nKT98YnVybmluZ3xidXlpbmd8Y2FsbGVkfGNhcnJpZXN8Y2FycnkoPyEgb3V0KXxjYXJyeWluZ3xjbGltYmluZ3xjbG9zaW5nfGNvbmNlYWwoPzpzfGluZyk/fGNvbnN1bHRpbmd8Y29udGFpbig/OnN8aW5nKT98Y3V0dGluZ3xkcmlua2luZ3xkcm9wcGluZ3xlYXRpbmd8ZW5jbG9zKD86ZXM/fGluZyl8ZW50ZXJpbmd8ZXhhbWluaW5nfGV4aXRpbmd8Z2V0dGluZ3xnaXZpbmd8Z29pbmd8aGEoPzp2ZXxzfHZpbmcpfGhvbGQoPzpzfGluZyk/fGltcGwoPzp5fGllcyl8aW5jb3Jwb3JhdCg/OmVzP3xpbmcpfGluc2VydGluZ3xpc3xqdW1waW5nfGtpc3Npbmd8bGlzdGVuaW5nfGxvY2tpbmd8bG9va2luZ3xtZWFuKD86c3xpbmcpP3xvcGVuaW5nfHByb3ZpZCg/OmVzP3xpbmcpfHB1bGxpbmd8cHVzaGluZ3xwdXR0aW5nfHJlbGF0KD86ZXM/fGluZyl8cmVtb3Zpbmd8c2VhcmNoaW5nfHNlZSg/OnN8aW5nKT98c2V0dGluZ3xzaG93aW5nfHNpbmdpbmd8c2xlZXBpbmd8c21lbGxpbmd8c3F1ZWV6aW5nfHN3aXRjaGluZ3xzdXBwb3J0KD86c3xpbmcpP3xzd2VhcmluZ3x0YWtpbmd8dGFzdGluZ3x0ZWxsaW5nfHRoaW5raW5nfHRocm93aW5nfHRvdWNoaW5nfHR1cm5pbmd8dHlpbmd8dW5sb2NrKD86c3xpbmcpP3x2YXIoPzp5fGllc3x5aW5nKXx3YWl0aW5nfHdha2luZ3x3YXZpbmd8d2Vhcig/OnN8aW5nKT8pXFxiKD8hLSkvaSxsb29rYmVoaW5kOiEwLGFsaWFzOlwib3BlcmF0b3JcIn0sa2V5d29yZDp7cGF0dGVybjovKF58W14tXSlcXGIoPzphZnRlcnxiZWZvcmV8Y2Fycnkgb3V0fGNoZWNrfGNvbnRpbnVlIHRoZSBhY3Rpb258ZGVmaW5pdGlvbig/PSAqOil8ZG8gbm90aGluZ3xlbHNlfGVuZCAoPzppZnx1bmxlc3N8dGhlIHN0b3J5KXxldmVyeSB0dXJufGlmfGluY2x1ZGV8aW5zdGVhZCg/OiBvZik/fGxldHxtb3ZlfG5vfG5vd3xvdGhlcndpc2V8cmVwZWF0fHJlcG9ydHxyZXN1bWUgdGhlIHN0b3J5fHJ1bGUgZm9yfHJ1bm5pbmcgdGhyb3VnaHxzYXkoPzppbmcpP3xzdG9wIHRoZSBhY3Rpb258dGVzdHx0cnkoPzppbmcpP3x1bmRlcnN0YW5kfHVubGVzc3x1c2V8d2hlbnx3aGlsZXx5ZXMpXFxiKD8hLSkvaSxsb29rYmVoaW5kOiEwfSxwcm9wZXJ0eTp7cGF0dGVybjovKF58W14tXSlcXGIoPzphZGphY2VudCg/ISB0byl8Y2FycmllZHxjbG9zZWR8Y29uY2VhbGVkfGNvbnRhaW5lZHxkYXJrfGRlc2NyaWJlZHxlZGlibGV8ZW1wdHl8ZW5jbG9zZWR8ZW50ZXJhYmxlfGV2ZW58ZmVtYWxlfGZpeGVkIGluIHBsYWNlfGZ1bGx8aGFuZGxlZHxoZWxkfGltcHJvcGVyLW5hbWVkfGluY29ycG9yYXRlZHxpbmVkaWJsZXxpbnZpc2libGV8bGlnaHRlZHxsaXR8bG9jayg/OmFibGV8ZWQpfG1hbGV8bWFya2VkIGZvciBsaXN0aW5nfG1lbnRpb25lZHxuZWdhdGl2ZXxuZXV0ZXJ8bm9uLSg/OmVtcHR5fGZ1bGx8cmVjdXJyaW5nKXxvZGR8b3BhcXVlfG9wZW4oPzphYmxlKT98cGx1cmFsLW5hbWVkfHBvcnRhYmxlfHBvc2l0aXZlfHByaXZhdGVseS1uYW1lZHxwcm9wZXItbmFtZWR8cHJvdmlkZWR8cHVibGljYWxseS1uYW1lZHxwdXNoYWJsZSBiZXR3ZWVuIHJvb21zfHJlY3VycmluZ3xyZWxhdGVkfHJ1YmJpbmd8c2NlbmVyeXxzZWVufHNpbmd1bGFyLW5hbWVkfHN1cHBvcnRlZHxzd2luZ2luZ3xzd2l0Y2goPzphYmxlfGVkKD86IG9ufCBvZmYpPyl8dG91Y2goPzphYmxlfGVkKXx0cmFuc3BhcmVudHx1bmNvbmNlYWxlZHx1bmRlc2NyaWJlZHx1bmxpdHx1bmxvY2tlZHx1bm1hcmtlZCBmb3IgbGlzdGluZ3x1bm1lbnRpb25lZHx1bm9wZW5hYmxlfHVudG91Y2hhYmxlfHVudmlzaXRlZHx2YXJpYWJsZXx2aXNpYmxlfHZpc2l0ZWR8d2VhcmFibGV8d29ybilcXGIoPyEtKS9pLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzeW1ib2xcIn0scG9zaXRpb246e3BhdHRlcm46LyhefFteLV0pXFxiKD86YWJvdmV8YWRqYWNlbnQgdG98YmFjayBzaWRlIG9mfGJlbG93fGJldHdlZW58ZG93bnxlYXN0fGV2ZXJ5d2hlcmV8ZnJvbnQgc2lkZXxoZXJlfGlufGluc2lkZSg/OiBmcm9tKT98bm9ydGgoPzplYXN0fHdlc3QpP3xub3doZXJlfG9uKD86IHRvcCBvZik/fG90aGVyIHNpZGV8b3V0c2lkZSg/OiBmcm9tKT98cGFydHM/IG9mfHJlZ2lvbmFsbHkgaW58c291dGgoPzplYXN0fHdlc3QpP3x0aHJvdWdofHVwfHdlc3R8d2l0aGluKVxcYig/IS0pL2ksbG9va2JlaGluZDohMCxhbGlhczpcImtleXdvcmRcIn0sdHlwZTp7cGF0dGVybjovKF58W14tXSlcXGIoPzphY3Rpb25zP3xhY3Rpdml0KD86eXxpZXMpfGFjdG9ycz98YW5pbWFscz98YmFja2Ryb3BzP3xjb250YWluZXJzP3xkZXZpY2VzP3xkaXJlY3Rpb25zP3xkb29ycz98aG9sZGVycz98a2luZHM/fGxpc3RzP3xtW2FlXW58bm9ib2R5fG5vdGhpbmd8bm91bnM/fG51bWJlcnM/fG9iamVjdHM/fHBlb3BsZXxwZXJzb25zP3xwbGF5ZXIoPzoncyBob2xkYWxsKT98cmVnaW9ucz98cmVsYXRpb25zP3xyb29tcz98cnVsZSg/OmJvb2spP3M/fHNjZW5lcz98c29tZW9uZXxzb21ldGhpbmd8c3VwcG9ydGVycz98dGFibGVzP3x0ZXh0cz98dGhpbmdzP3x0aW1lfHZlaGljbGVzP3x3b21bYWVdbilcXGIoPyEtKS9pLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJ2YXJpYWJsZVwifSxwdW5jdHVhdGlvbjovWy4sOjsoKXt9XS99LGUubGFuZ3VhZ2VzLmluZm9ybTcuc3RyaW5nLmluc2lkZS5zdWJzdGl0dXRpb24uaW5zaWRlLnJlc3Q9ZS5sYW5ndWFnZXMuaW5mb3JtNyxlLmxhbmd1YWdlcy5pbmZvcm03LnN0cmluZy5pbnNpZGUuc3Vic3RpdHV0aW9uLmluc2lkZS5yZXN0LnRleHQ9e3BhdHRlcm46L1xcUyg/OlxccypcXFMpKi8sYWxpYXM6XCJjb21tZW50XCJ9fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJpbmZvcm03XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5pbmk9e2NvbW1lbnQ6L15bIFxcdF0qOy4qJC9tLHNlbGVjdG9yOi9eWyBcXHRdKlxcWy4qP1xcXS9tLGNvbnN0YW50Oi9eWyBcXHRdKlteXFxzPV0rPyg/PVsgXFx0XSo9KS9tLFwiYXR0ci12YWx1ZVwiOntwYXR0ZXJuOi89LiovLGluc2lkZTp7cHVuY3R1YXRpb246L15bPV0vfX19fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJpbmlcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmlvPXtjb21tZW50Olt7cGF0dGVybjovKF58W15cXFxcXSlcXC9cXCpbXFxzXFxTXSo/KD86XFwqXFwvfCQpLyxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W15cXFxcXSlcXC9cXC8uKi8sbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhefFteXFxcXF0pIy4qLyxsb29rYmVoaW5kOiEwfV0sXCJ0cmlwbGUtcXVvdGVkLXN0cmluZ1wiOntwYXR0ZXJuOi9cIlwiXCIoPzpcXFxcW1xcc1xcU118KD8hXCJcIlwiKVteXFxcXF0pKlwiXCJcIi8sZ3JlZWR5OiEwLGFsaWFzOlwic3RyaW5nXCJ9LHN0cmluZzp7cGF0dGVybjovXCIoPzpcXFxcLnxbXlxcXFxcXHJcXG5cIl0pKlwiLyxncmVlZHk6ITB9LGtleXdvcmQ6L1xcYig/OmFjdGl2YXRlfGFjdGl2ZUNvcm9Db3VudHxhc1N0cmluZ3xibG9ja3xicmVha3xjYXRjaHxjbG9uZXxjb2xsZWN0R2FyYmFnZXxjb21waWxlU3RyaW5nfGNvbnRpbnVlfGRvfGRvRmlsZXxkb01lc3NhZ2V8ZG9TdHJpbmd8ZWxzZXxlbHNlaWZ8ZXhpdHxmb3J8Zm9yZWFjaHxmb3J3YXJkfGdldFNsb3R8Z2V0RW52aXJvbm1lbnRWYXJpYWJsZXxoYXNTbG90fGlmfGlmRmFsc2V8aWZOaWx8aWZOaWxFdmFsfGlmVHJ1ZXxpc0FjdGl2ZXxpc05pbHxpc1Jlc3VtYWJsZXxsaXN0fG1lc3NhZ2V8bWV0aG9kfHBhcmVudHxwYXNzfHBhdXNlfHBlcmZvcm18cGVyZm9ybVdpdGhBcmdMaXN0fHByaW50fHByaW50bG58cHJvdG98cmFpc2V8cmFpc2VSZXN1bWFibGV8cmVtb3ZlU2xvdHxyZXNlbmR8cmVzdW1lfHNjaGVkdWxlclNsZWVwU2Vjb25kc3xzZWxmfHNlbmRlcnxzZXRTY2hlZHVsZXJTbGVlcFNlY29uZHN8c2V0U2xvdHxzaGFsbG93Q29weXxzbG90TmFtZXN8c3VwZXJ8c3lzdGVtfHRoZW58dGhpc0Jsb2NrfHRoaXNDb250ZXh0fGNhbGx8dHJ5fHR5cGV8dW5pcXVlSWR8dXBkYXRlU2xvdHx3YWl0fHdoaWxlfHdyaXRlfHlpZWxkKVxcYi8sYnVpbHRpbjovXFxiKD86QXJyYXl8QXVkaW9EZXZpY2V8QXVkaW9NaXhlcnxCbG9ja3xCb3h8QnVmZmVyfENGdW5jdGlvbnxDR0l8Q29sb3J8Q3Vyc2VzfERCTXxETlNSZXNvbHZlcnxET0Nvbm5lY3Rpb258RE9Qcm94eXxET1NlcnZlcnxEYXRlfERpcmVjdG9yeXxEdXJhdGlvbnxEeW5MaWJ8RXJyb3J8RXhjZXB0aW9ufEZGVHxGaWxlfEZubWF0Y2h8Rm9udHxGdXR1cmV8R0x8R0xFfEdMU2Npc3NvcnxHTFV8R0xVQ3lsaW5kZXJ8R0xVUXVhZHJpY3xHTFVTcGhlcmV8R0xVVHxIb3N0fEltYWdlfEltcG9ydGVyfExpbmtMaXN0fExpc3R8TG9iYnl8TG9jYWxzfE1ENXxNUDNEZWNvZGVyfE1QM0VuY29kZXJ8TWFwfE1lc3NhZ2V8TW92aWV8Tm90aWZpY2F0aW9ufE51bWJlcnxPYmplY3R8T3BlbkdMfFBvaW50fFByb3Rvc3xSZWdleHxTR01MfFNHTUxFbGVtZW50fFNHTUxQYXJzZXJ8U1FMaXRlfFNlcnZlcnxTZXF1ZW5jZXxTaG93TWVzc2FnZXxTbGVlcHlDYXR8U2xlZXB5Q2F0Q3Vyc29yfFNvY2tldHxTb2NrZXRNYW5hZ2VyfFNvdW5kfFNvdXB8U3RvcmV8U3RyaW5nfFRyZWV8VURQU2VuZGVyfFVQRFJlY2VpdmVyfFVSTHxVc2VyfFdhcm5pbmd8V2Vha0xpbmt8UmFuZG9tfEJpZ051bXxTZXF1ZW5jZSlcXGIvLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2V8bmlsKVxcYi8sbnVtYmVyOi9cXGIweFtcXGRhLWZdK1xcYnwoPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzplLT9cXGQrKT8vaSxvcGVyYXRvcjovWz0hKlxcLyUrLV4mfF09fD4+Pz0/fDw8Pz0/fDo/Oj89fFxcK1xcKz98LS0/fFxcKlxcKj98XFwvXFwvP3wlfFxcfFxcfD98JiY/fChcXGIoPzpyZXR1cm58YW5kfG9yfG5vdClcXGIpfEBAP3xcXD9cXD8/fFxcLlxcLi8scHVuY3R1YXRpb246L1t7fVtcXF07KCksLjpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImlvXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5qPXtjb21tZW50Oi9cXGJOQlxcLi4qLyxzdHJpbmc6e3BhdHRlcm46LycoPzonJ3xbXidcXHJcXG5dKSonLyxncmVlZHk6ITB9LGtleXdvcmQ6L1xcYig/Oig/OmFkdmVyYnxjb25qdW5jdGlvbnxDUnxkZWZ8ZGVmaW5lfGR5YWR8TEZ8bW9uYWR8bm91bnx2ZXJiKVxcYnwoPzphc3NlcnR8YnJlYWt8Y2FzZXxjYXRjaFtkdF0/fGNvbnRpbnVlfGRvfGVsc2V8ZWxzZWlmfGVuZHxmY2FzZXxmb3J8Zm9yX1xcdyt8Z290b19cXHcrfGlmfGxhYmVsX1xcdyt8cmV0dXJufHNlbGVjdHx0aHJvd3x0cnl8d2hpbGV8d2hpbHN0KVxcLikvLHZlcmI6e3BhdHRlcm46Lyg/IVxcXjp8O1xcLnxbPSFdWy46XSkoPzpcXHsoPzpcXC58Ojo/KT98cCg/OlxcLlxcLj98Oil8Wz0hXFxdXXxbPD4rKlxcLSUkfCwjXVsuOl0/fFs/Xl1cXC4/fFs7XFxbXTo/fFt+fVwiaV1bLjpdfFtBQ2VFSWpMb3JdXFwufCg/OltfXFwvXFxcXHFzdXhdfF8/XFxkKTopLyxhbGlhczpcImtleXdvcmRcIn0sbnVtYmVyOi9cXGJfPyg/Oig/IVxcZDopXFxkKyg/OlxcLlxcZCspPyg/Oig/OltlanB4XXxhZHxhcilfP1xcZCsoPzpcXC5cXGQrKT8pKig/OmJfP1tcXGRhLXpdKyg/OlxcLltcXGRhLXpdKyk/KT98Xyg/IVxcLikpLyxhZHZlcmI6e3BhdHRlcm46L1t+fV18W1xcL1xcXFxdXFwuP3xbYmZNXVxcLnx0Wy46XS8sYWxpYXM6XCJidWlsdGluXCJ9LG9wZXJhdG9yOi9bPWFdWy46XXxfXFwuLyxjb25qdW5jdGlvbjp7cGF0dGVybjovJig/OlxcLjo/fDopP3xbLjpAXVsuOl0/fFshRF1bLjpdfFs7ZEhUXVxcLnxgOj98W1xcXkxTXTp8XCIvLGFsaWFzOlwidmFyaWFibGVcIn0scHVuY3R1YXRpb246L1soKV0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwialwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuam9saWU9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7a2V5d29yZDovXFxiKD86aW5jbHVkZXxkZWZpbmV8aXNfZGVmaW5lZHx1bmRlZnxtYWlufGluaXR8b3V0cHV0UG9ydHxpbnB1dFBvcnR8TG9jYXRpb258UHJvdG9jb2x8SW50ZXJmYWNlc3xSZXF1ZXN0UmVzcG9uc2V8T25lV2F5fHR5cGV8aW50ZXJmYWNlfGV4dGVuZGVyfHRocm93c3xjc2V0fGNzZXRzfGZvcndhcmR8QWdncmVnYXRlc3xSZWRpcmVjdHN8ZW1iZWRkZWR8Y291cmllcnxleGVjdXRpb258c2VxdWVudGlhbHxjb25jdXJyZW50fHNpbmdsZXxzY29wZXxpbnN0YWxsfHRocm93fGNvbXB8Y0h8ZGVmYXVsdHxnbG9iYWx8bGlua0lufGxpbmtPdXR8c3luY2hyb25pemVkfHRoaXN8bmV3fGZvcnxpZnxlbHNlfHdoaWxlfGlufEpvbGllfEphdmF8SmF2YXNjcmlwdHxudWxsUHJvY2Vzc3xzcGF3bnxjb25zdGFudHN8d2l0aHxwcm92aWRlfHVudGlsfGV4aXR8Zm9yZWFjaHxpbnN0YW5jZW9mfG92ZXJ8c2VydmljZSlcXGIvLGJ1aWx0aW46L1xcYig/OnVuZGVmaW5lZHxzdHJpbmd8aW50fHZvaWR8bG9uZ3xCeXRlfGJvb2x8ZG91YmxlfGZsb2F0fGNoYXJ8YW55KVxcYi8sbnVtYmVyOi8oPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzplWystXT9cXGQrKT9sPy9pLG9wZXJhdG9yOi8tWy09Pl0/fFxcK1srPV0/fDxbPD1dP3xbPj0qIV09P3wmJnxcXHxcXHx8Wzo/XFwvJV5dLyxzeW1ib2w6L1t8O0BdLyxwdW5jdHVhdGlvbjovWywuXS8sc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfX0pLGRlbGV0ZSBlLmxhbmd1YWdlcy5qb2xpZVtcImNsYXNzLW5hbWVcIl0sZGVsZXRlIGUubGFuZ3VhZ2VzLmpvbGllLmZ1bmN0aW9uLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImpvbGllXCIsXCJrZXl3b3JkXCIse2Z1bmN0aW9uOntwYXR0ZXJuOi8oKD86XFxiKD86b3V0cHV0UG9ydHxpbnB1dFBvcnR8aW58c2VydmljZXxjb3VyaWVyKVxcYnxAKVxccyopXFx3Ky8sbG9va2JlaGluZDohMH0sYWdncmVnYXRlczp7cGF0dGVybjovKFxcYkFnZ3JlZ2F0ZXNcXHMqOlxccyopKD86XFx3Kyg/Olxccyt3aXRoXFxzK1xcdyspP1xccyosXFxzKikqXFx3Kyg/Olxccyt3aXRoXFxzK1xcdyspPy8sbG9va2JlaGluZDohMCxpbnNpZGU6e3dpdGhFeHRlbnNpb246e3BhdHRlcm46L1xcYndpdGhcXHMrXFx3Ky8saW5zaWRlOntrZXl3b3JkOi9cXGJ3aXRoXFxiL319LGZ1bmN0aW9uOntwYXR0ZXJuOi9cXHcrL30scHVuY3R1YXRpb246e3BhdHRlcm46LywvfX19LHJlZGlyZWN0czp7cGF0dGVybjovKFxcYlJlZGlyZWN0c1xccyo6XFxzKikoPzpcXHcrXFxzKj0+XFxzKlxcdytcXHMqLFxccyopKig/OlxcdytcXHMqPT5cXHMqXFx3KykvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwdW5jdHVhdGlvbjp7cGF0dGVybjovLC99LGZ1bmN0aW9uOntwYXR0ZXJuOi9cXHcrL30sc3ltYm9sOntwYXR0ZXJuOi89Pi99fX19KX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiam9saWVcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLmpzb249e3Byb3BlcnR5Oi9cIig/OlxcXFwufFteXFxcXFwiXFxyXFxuXSkqXCIoPz1cXHMqOikvaSxzdHJpbmc6e3BhdHRlcm46L1wiKD86XFxcXC58W15cXFxcXCJcXHJcXG5dKSpcIig/IVxccyo6KS8sZ3JlZWR5OiEwfSxudW1iZXI6L1xcYjB4W1xcZEEtRmEtZl0rXFxifCg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OltFZV1bKy1dP1xcZCspPy8scHVuY3R1YXRpb246L1t7fVtcXF0pOyxdLyxvcGVyYXRvcjovOi9nLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2UpXFxiL2ksbnVsbDovXFxibnVsbFxcYi9pfSxlLmxhbmd1YWdlcy5qc29ucD1lLmxhbmd1YWdlcy5qc29ufWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJqc29uXCIsci5hbGlhc2VzPVtcImpzb25wXCJdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5qdWxpYT17Y29tbWVudDp7cGF0dGVybjovKF58W15cXFxcXSkjLiovLGxvb2tiZWhpbmQ6ITB9LHN0cmluZzovKFwiXCJcInwnJycpW1xcc1xcU10rP1xcMXwoXCJ8JykoPzpcXFxcLnwoPyFcXDIpW15cXFxcXFxyXFxuXSkqXFwyLyxrZXl3b3JkOi9cXGIoPzphYnN0cmFjdHxiYXJlbW9kdWxlfGJlZ2lufGJpdHN0eXBlfGJyZWFrfGNhdGNofGNjYWxsfGNvbnN0fGNvbnRpbnVlfGRvfGVsc2V8ZWxzZWlmfGVuZHxleHBvcnR8ZmluYWxseXxmb3J8ZnVuY3Rpb258Z2xvYmFsfGlmfGltbXV0YWJsZXxpbXBvcnR8aW1wb3J0YWxsfGxldHxsb2NhbHxtYWNyb3xtb2R1bGV8cHJpbnR8cHJpbnRsbnxxdW90ZXxyZXR1cm58dHJ5fHR5cGV8dHlwZWFsaWFzfHVzaW5nfHdoaWxlKVxcYi8sYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvLG51bWJlcjovKD86XFxiKD89XFxkKXxcXEIoPz1cXC4pKSg/OjBbYm94XSk/KD86W1xcZGEtZl0rXFwuP1xcZCp8XFwuXFxkKykoPzpbZWZwXVsrLV0/XFxkKyk/aj8vaSxvcGVyYXRvcjovWy0rKl4lw7cmJFxcXFxdPT98XFwvW1xcLz1dP3whPT89P3xcXHxbPT5dP3w8KD86PD0/fFs9Ol0pP3w+KD86PXw+Pj89Pyk/fD09Pz0/fFt+4omg4omk4omlXS8scHVuY3R1YXRpb246L1t7fVtcXF07KCksLjpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImp1bGlhXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5rZXltYW49e2NvbW1lbnQ6L1xcYmNcXHMuKi9pLGZ1bmN0aW9uOi9cXFtcXHMqKD86KD86Q1RSTHxTSElGVHxBTFR8TENUUkx8UkNUUkx8TEFMVHxSQUxUfENBUFN8TkNBUFMpXFxzKykqKD86W1RLVV1fW1xcdz9dK3xcIi4rP1wifCcuKz8nKVxccypcXF0vaSxzdHJpbmc6LyhcInwnKS4qP1xcMS8sYm9sZDpbLyYoPzpiYXNlbGF5b3V0fGJpdG1hcHxjYXBzb25vbmx5fGNhcHNhbHdheXNvZmZ8c2hpZnRmcmVlc2NhcHN8Y29weXJpZ2h0fGV0aG5vbG9ndWVjb2RlfGhvdGtleXxpbmNsdWRlY29kZXN8a2V5Ym9hcmR2ZXJzaW9ufGttd19lbWJlZGNzc3xrbXdfZW1iZWRqc3xrbXdfaGVscGZpbGV8a213X2hlbHB0ZXh0fGttd19ydGx8bGFuZ3VhZ2V8bGF5ZXJ8bGF5b3V0ZmlsZXxtZXNzYWdlfG1uZW1vbmljbGF5b3V0fG5hbWV8b2xkY2hhcnBvc21hdGNoaW5nfHBsYXRmb3JtfHRhcmdldHN8dmVyc2lvbnx2aXN1YWxrZXlib2FyZHx3aW5kb3dzbGFuZ3VhZ2VzKVxcYi9pLC9cXGIoPzpiaXRtYXB8Yml0bWFwc3xjYXBzIG9uIG9ubHl8Y2FwcyBhbHdheXMgb2ZmfHNoaWZ0IGZyZWVzIGNhcHN8Y29weXJpZ2h0fGhvdGtleXxsYW5ndWFnZXxsYXlvdXR8bWVzc2FnZXxuYW1lfHZlcnNpb24pXFxiL2ldLGtleXdvcmQ6L1xcYig/OmFueXxiYXNlbGF5b3V0fGJlZXB8Y2FsbHxjb250ZXh0fGRlYWRrZXl8ZGt8aWZ8aW5kZXh8bGF5ZXJ8bm90YW55fG51bHxvdXRzfHBsYXRmb3JtfHJldHVybnxyZXNldHxzYXZlfHNldHxzdG9yZXx1c2UpXFxiL2ksYXRydWxlOi9cXGIoPzphbnNpfGJlZ2lufHVuaWNvZGV8Z3JvdXB8dXNpbmcga2V5c3xtYXRjaHxub21hdGNoKVxcYi9pLG51bWJlcjovXFxiKD86VVxcK1tcXGRBLUZdK3xkXFxkK3x4W1xcZGEtZl0rfFxcZCspXFxiL2ksb3BlcmF0b3I6L1srPlxcXFwsKCldLyx0YWc6L1xcJCg/OmtleW1hbnxrbWZsfHdlYXZlcnxrZXltYW53ZWJ8a2V5bWFub25seSk6L2l9fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJrZXltYW5cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5rb3RsaW49ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7a2V5d29yZDp7cGF0dGVybjovKF58W14uXSlcXGIoPzphYnN0cmFjdHxhY3R1YWx8YW5ub3RhdGlvbnxhc3xicmVha3xieXxjYXRjaHxjbGFzc3xjb21wYW5pb258Y29uc3R8Y29uc3RydWN0b3J8Y29udGludWV8Y3Jvc3NpbmxpbmV8ZGF0YXxkb3xkeW5hbWljfGVsc2V8ZW51bXxleHBlY3R8ZXh0ZXJuYWx8ZmluYWx8ZmluYWxseXxmb3J8ZnVufGdldHxpZnxpbXBvcnR8aW58aW5maXh8aW5pdHxpbmxpbmV8aW5uZXJ8aW50ZXJmYWNlfGludGVybmFsfGlzfGxhdGVpbml0fG5vaW5saW5lfG51bGx8b2JqZWN0fG9wZW58b3BlcmF0b3J8b3V0fG92ZXJyaWRlfHBhY2thZ2V8cHJpdmF0ZXxwcm90ZWN0ZWR8cHVibGljfHJlaWZpZWR8cmV0dXJufHNlYWxlZHxzZXR8c3VwZXJ8c3VzcGVuZHx0YWlscmVjfHRoaXN8dGhyb3d8dG98dHJ5fHR5cGVhbGlhc3x2YWx8dmFyfHZhcmFyZ3x3aGVufHdoZXJlfHdoaWxlKVxcYi8sbG9va2JlaGluZDohMH0sZnVuY3Rpb246Wy9cXHcrKD89XFxzKlxcKCkvLHtwYXR0ZXJuOi8oXFwuKVxcdysoPz1cXHMqXFx7KS8sbG9va2JlaGluZDohMH1dLG51bWJlcjovXFxiKD86MFt4WF1bXFxkYS1mQS1GXSsoPzpfW1xcZGEtZkEtRl0rKSp8MFtiQl1bMDFdKyg/Ol9bMDFdKykqfFxcZCsoPzpfXFxkKykqKD86XFwuXFxkKyg/Ol9cXGQrKSopPyg/OltlRV1bKy1dP1xcZCsoPzpfXFxkKykqKT9bZkZMXT8pXFxiLyxvcGVyYXRvcjovXFwrWys9XT98LVstPT5dP3w9PT89P3whKD86IXw9PT8pP3xbXFwvKiU8Pl09P3xbPzpdOj98XFwuXFwufCYmfFxcfFxcfHxcXGIoPzphbmR8aW52fG9yfHNobHxzaHJ8dXNocnx4b3IpXFxiL30pLGRlbGV0ZSBlLmxhbmd1YWdlcy5rb3RsaW5bXCJjbGFzcy1uYW1lXCJdLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImtvdGxpblwiLFwic3RyaW5nXCIse1wicmF3LXN0cmluZ1wiOntwYXR0ZXJuOi8oXCJcIlwifCcnJylbXFxzXFxTXSo/XFwxLyxhbGlhczpcInN0cmluZ1wifX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImtvdGxpblwiLFwia2V5d29yZFwiLHthbm5vdGF0aW9uOntwYXR0ZXJuOi9cXEJAKD86XFx3KzopPyg/OltBLVpdXFx3KnxcXFtbXlxcXV0rXFxdKS8sYWxpYXM6XCJidWlsdGluXCJ9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwia290bGluXCIsXCJmdW5jdGlvblwiLHtsYWJlbDp7cGF0dGVybjovXFx3K0B8QFxcdysvLGFsaWFzOlwic3ltYm9sXCJ9fSk7dmFyIHQ9W3twYXR0ZXJuOi9cXCRcXHtbXn1dK1xcfS8saW5zaWRlOntkZWxpbWl0ZXI6e3BhdHRlcm46L15cXCRcXHt8XFx9JC8sYWxpYXM6XCJ2YXJpYWJsZVwifSxyZXN0OmUubGFuZ3VhZ2VzLmtvdGxpbn19LHtwYXR0ZXJuOi9cXCRcXHcrLyxhbGlhczpcInZhcmlhYmxlXCJ9XTtlLmxhbmd1YWdlcy5rb3RsaW4uc3RyaW5nLmluc2lkZT1lLmxhbmd1YWdlcy5rb3RsaW5bXCJyYXctc3RyaW5nXCJdLmluc2lkZT17aW50ZXJwb2xhdGlvbjp0fX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImtvdGxpblwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe3ZhciB0PS9cXFxcKD86W15hLXooKVtcXF1dfFthLXoqXSspL2ksbj17XCJlcXVhdGlvbi1jb21tYW5kXCI6e3BhdHRlcm46dCxhbGlhczpcInJlZ2V4XCJ9fTtlLmxhbmd1YWdlcy5sYXRleD17Y29tbWVudDovJS4qL20sY2RhdGE6e3BhdHRlcm46LyhcXFxcYmVnaW5cXHsoKD86dmVyYmF0aW18bHN0bGlzdGluZylcXCo/KVxcfSlbXFxzXFxTXSo/KD89XFxcXGVuZFxce1xcMlxcfSkvLGxvb2tiZWhpbmQ6ITB9LGVxdWF0aW9uOlt7cGF0dGVybjovXFwkKD86XFxcXFtcXHNcXFNdfFteXFxcXCRdKSpcXCR8XFxcXFxcKFtcXHNcXFNdKj9cXFxcXFwpfFxcXFxcXFtbXFxzXFxTXSo/XFxcXFxcXS8saW5zaWRlOm4sYWxpYXM6XCJzdHJpbmdcIn0se3BhdHRlcm46LyhcXFxcYmVnaW5cXHsoKD86ZXF1YXRpb258bWF0aHxlcW5hcnJheXxhbGlnbnxtdWx0bGluZXxnYXRoZXIpXFwqPylcXH0pW1xcc1xcU10qPyg/PVxcXFxlbmRcXHtcXDJcXH0pLyxsb29rYmVoaW5kOiEwLGluc2lkZTpuLGFsaWFzOlwic3RyaW5nXCJ9XSxrZXl3b3JkOntwYXR0ZXJuOi8oXFxcXCg/OmJlZ2lufGVuZHxyZWZ8Y2l0ZXxsYWJlbHx1c2VwYWNrYWdlfGRvY3VtZW50Y2xhc3MpKD86XFxbW15cXF1dK1xcXSk/XFx7KVtefV0rKD89XFx9KS8sbG9va2JlaGluZDohMH0sdXJsOntwYXR0ZXJuOi8oXFxcXHVybFxceylbXn1dKyg/PVxcfSkvLGxvb2tiZWhpbmQ6ITB9LGhlYWRsaW5lOntwYXR0ZXJuOi8oXFxcXCg/OnBhcnR8Y2hhcHRlcnxzZWN0aW9ufHN1YnNlY3Rpb258ZnJhbWV0aXRsZXxzdWJzdWJzZWN0aW9ufHBhcmFncmFwaHxzdWJwYXJhZ3JhcGh8c3Vic3VicGFyYWdyYXBofHN1YnN1YnN1YnBhcmFncmFwaClcXCo/KD86XFxbW15cXF1dK1xcXSk/XFx7KVtefV0rKD89XFx9KD86XFxbW15cXF1dK1xcXSk/KS8sbG9va2JlaGluZDohMCxhbGlhczpcImNsYXNzLW5hbWVcIn0sZnVuY3Rpb246e3BhdHRlcm46dCxhbGlhczpcInNlbGVjdG9yXCJ9LHB1bmN0dWF0aW9uOi9bW1xcXXt9Jl0vfX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImxhdGV4XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5sZXNzPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNzc1wiLHtjb21tZW50OlsvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy8se3BhdHRlcm46LyhefFteXFxcXF0pXFwvXFwvLiovLGxvb2tiZWhpbmQ6ITB9XSxhdHJ1bGU6e3BhdHRlcm46L0BbXFx3LV0rPyg/OlxcKFtee31dK1xcKXxbXigpe307XSkqPyg/PVxccypcXHspL2ksaW5zaWRlOntwdW5jdHVhdGlvbjovWzooKV0vfX0sc2VsZWN0b3I6e3BhdHRlcm46Lyg/OkBcXHtbXFx3LV0rXFx9fFtee307XFxzQF0pKD86QFxce1tcXHctXStcXH18XFwoW157fV0qXFwpfFtee307QF0pKj8oPz1cXHMqXFx7KS8saW5zaWRlOnt2YXJpYWJsZTovQCtbXFx3LV0rL319LHByb3BlcnR5Oi8oPzpAXFx7W1xcdy1dK1xcfXxbXFx3LV0pKyg/OlxcK18/KT8oPz1cXHMqOikvaSxwdW5jdHVhdGlvbjovW3t9KCk7OixdLyxvcGVyYXRvcjovWytcXC0qXFwvXS99KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJsZXNzXCIsXCJwdW5jdHVhdGlvblwiLHtmdW5jdGlvbjplLmxhbmd1YWdlcy5sZXNzLmZ1bmN0aW9ufSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwibGVzc1wiLFwicHJvcGVydHlcIix7dmFyaWFibGU6W3twYXR0ZXJuOi9AW1xcdy1dK1xccyo6LyxpbnNpZGU6e3B1bmN0dWF0aW9uOi86L319LC9AQD9bXFx3LV0rL10sXCJtaXhpbi11c2FnZVwiOntwYXR0ZXJuOi8oW3s7XVxccyopWy4jXSg/IVxcZClbXFx3LV0rLio/KD89Wyg7XSkvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJmdW5jdGlvblwifX0pfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJsZXNzXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5saXF1aWQ9e2tleXdvcmQ6L1xcYig/OmNvbW1lbnR8ZW5kY29tbWVudHxpZnxlbHNpZnxlbHNlfGVuZGlmfHVubGVzc3xlbmR1bmxlc3N8Zm9yfGVuZGZvcnxjYXNlfGVuZGNhc2V8d2hlbnxpbnxicmVha3xhc3NpZ258Y29udGludWV8bGltaXR8b2Zmc2V0fHJhbmdlfHJldmVyc2VkfHJhd3xlbmRyYXd8Y2FwdHVyZXxlbmRjYXB0dXJlfHRhYmxlcm93fGVuZHRhYmxlcm93KVxcYi8sbnVtYmVyOi9cXGIwYlswMV0rXFxifFxcYjB4W1xcZGEtZl0qXFwuP1tcXGRhLWZwLV0rXFxifCg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OmVbKy1dP1xcZCspP1tkZl0/L2ksb3BlcmF0b3I6e3BhdHRlcm46LyhefFteLl0pKD86XFwrWys9XT98LVstPV0/fCE9P3w8PD89P3w+Pj8+Pz0/fD09P3wmWyY9XT98XFx8W3w9XT98XFwqPT98XFwvPT98JT0/fFxcXj0/fFs/On5dKS9tLGxvb2tiZWhpbmQ6ITB9LGZ1bmN0aW9uOntwYXR0ZXJuOi8oXnxbXFxzO3wmXSkoPzphcHBlbmR8cHJlcGVuZHxjYXBpdGFsaXplfGN5Y2xlfGNvbHN8aW5jcmVtZW50fGRlY3JlbWVudHxhYnN8YXRfbGVhc3R8YXRfbW9zdHxjZWlsfGNvbXBhY3R8Y29uY2F0fGRhdGV8ZGVmYXVsdHxkaXZpZGVkX2J5fGRvd25jYXNlfGVzY2FwZXxlc2NhcGVfb25jZXxmaXJzdHxmbG9vcnxqb2lufGxhc3R8bHN0cmlwfG1hcHxtaW51c3xtb2R1bG98bmV3bGluZV90b19icnxwbHVzfHJlbW92ZXxyZW1vdmVfZmlyc3R8cmVwbGFjZXxyZXBsYWNlX2ZpcnN0fHJldmVyc2V8cm91bmR8cnN0cmlwfHNpemV8c2xpY2V8c29ydHxzb3J0X25hdHVyYWx8c3BsaXR8c3RyaXB8c3RyaXBfaHRtbHxzdHJpcF9uZXdsaW5lc3x0aW1lc3x0cnVuY2F0ZXx0cnVuY2F0ZXdvcmRzfHVuaXF8dXBjYXNlfHVybF9kZWNvZGV8dXJsX2VuY29kZXxpbmNsdWRlfHBhZ2luYXRlKSg/PSR8W1xcczt8Jl0pLyxsb29rYmVoaW5kOiEwfX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cImxpcXVpZFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBSZWdFeHAoXCIoXFxcXCgpXCIrZStcIig/PVtcXFxcc1xcXFwpXSlcIil9ZnVuY3Rpb24gbihlKXtyZXR1cm4gbmV3IFJlZ0V4cChcIihbXFxcXHMoW10pXCIrZStcIig/PVtcXFxccyldKVwiKX12YXIgcj1cIlstKyovX34hQCQlXj08Pnt9XFxcXHddK1wiLG89XCIoXFxcXCgpXCIsYT17aGVhZGluZzp7cGF0dGVybjovOzs7LiovLGFsaWFzOltcImNvbW1lbnRcIixcInRpdGxlXCJdfSxjb21tZW50Oi87LiovLHN0cmluZzp7cGF0dGVybjovXCIoPzpbXlwiXFxcXF0qfFxcXFwuKSpcIi8sZ3JlZWR5OiEwLGluc2lkZTp7YXJndW1lbnQ6L1stQS1aXSsoPz1bLixcXHNdKS8sc3ltYm9sOm5ldyBSZWdFeHAoXCJgXCIrcitcIidcIil9fSxcInF1b3RlZC1zeW1ib2xcIjp7cGF0dGVybjpuZXcgUmVnRXhwKFwiIz8nXCIrciksYWxpYXM6W1widmFyaWFibGVcIixcInN5bWJvbFwiXX0sXCJsaXNwLXByb3BlcnR5XCI6e3BhdHRlcm46bmV3IFJlZ0V4cChcIjpcIityKSxhbGlhczpcInByb3BlcnR5XCJ9LHNwbGljZTp7cGF0dGVybjpuZXcgUmVnRXhwKFwiLEA/XCIrciksYWxpYXM6W1wic3ltYm9sXCIsXCJ2YXJpYWJsZVwiXX0sa2V5d29yZDpbe3BhdHRlcm46bmV3IFJlZ0V4cChvK1wiKD86KD86bGV4aWNhbC0pP2xldFxcXFwqP3woPzpjbC0pP2xldGZ8aWZ8d2hlbnx3aGlsZXx1bmxlc3N8Y29uc3xjbC1sb29wfGFuZHxvcnxub3R8Y29uZHxzZXRxfGVycm9yfG1lc3NhZ2V8bnVsbHxyZXF1aXJlfHByb3ZpZGV8dXNlLXBhY2thZ2UpKD89XFxcXHMpXCIpLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOm5ldyBSZWdFeHAobytcIig/OmZvcnxkb3xjb2xsZWN0fHJldHVybnxmaW5hbGx5fGFwcGVuZHxjb25jYXR8aW58YnkpKD89XFxcXHMpXCIpLGxvb2tiZWhpbmQ6ITB9XSxkZWNsYXJlOntwYXR0ZXJuOnQoXCJkZWNsYXJlXCIpLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJrZXl3b3JkXCJ9LGludGVyYWN0aXZlOntwYXR0ZXJuOnQoXCJpbnRlcmFjdGl2ZVwiKSxsb29rYmVoaW5kOiEwLGFsaWFzOlwia2V5d29yZFwifSxib29sZWFuOntwYXR0ZXJuOm4oXCIoPzp0fG5pbClcIiksbG9va2JlaGluZDohMH0sbnVtYmVyOntwYXR0ZXJuOm4oXCJbLStdP1xcXFxkKyg/OlxcXFwuXFxcXGQqKT9cIiksbG9va2JlaGluZDohMH0sZGVmdmFyOntwYXR0ZXJuOm5ldyBSZWdFeHAobytcImRlZig/OnZhcnxjb25zdHxjdXN0b218Z3JvdXApXFxcXHMrXCIrciksbG9va2JlaGluZDohMCxpbnNpZGU6e2tleXdvcmQ6L15kZWZbYS16XSsvLHZhcmlhYmxlOm5ldyBSZWdFeHAocil9fSxkZWZ1bjp7cGF0dGVybjpuZXcgUmVnRXhwKG8rXCIoPzpjbC0pPyg/OmRlZnVuXFxcXCo/fGRlZm1hY3JvKVxcXFxzK1wiK3IrXCJcXFxccytcXFxcKFtcXFxcc1xcXFxTXSo/XFxcXClcIiksbG9va2JlaGluZDohMCxpbnNpZGU6e2tleXdvcmQ6L14oPzpjbC0pP2RlZlxcUysvLGFyZ3VtZW50czpudWxsLGZ1bmN0aW9uOntwYXR0ZXJuOm5ldyBSZWdFeHAoXCIoXlxcXFxzKVwiK3IpLGxvb2tiZWhpbmQ6ITB9LHB1bmN0dWF0aW9uOi9bKCldL319LGxhbWJkYTp7cGF0dGVybjpuZXcgUmVnRXhwKG8rXCJsYW1iZGFcXFxccytcXFxcKCg/OiY/XCIrcitcIlxcXFxzKikqXFxcXClcIiksbG9va2JlaGluZDohMCxpbnNpZGU6e2tleXdvcmQ6L15sYW1iZGEvLGFyZ3VtZW50czpudWxsLHB1bmN0dWF0aW9uOi9bKCldL319LGNhcjp7cGF0dGVybjpuZXcgUmVnRXhwKG8rciksbG9va2JlaGluZDohMH0scHVuY3R1YXRpb246Wy8oWydgLF0/XFwofFspXFxbXFxdXSkvLHtwYXR0ZXJuOi8oXFxzKVxcLig/PVxccykvLGxvb2tiZWhpbmQ6ITB9XX0saT17XCJsaXNwLW1hcmtlclwiOm5ldyBSZWdFeHAoXCImWy0rKi9ffiFAJCVePTw+e31cXFxcd10rXCIpLHJlc3Q6e2FyZ3VtZW50OntwYXR0ZXJuOm5ldyBSZWdFeHAociksYWxpYXM6XCJ2YXJpYWJsZVwifSx2YXJmb3JtOntwYXR0ZXJuOm5ldyBSZWdFeHAobytyK1wiXFxcXHMrXFxcXFNbXFxcXHNcXFxcU10qKD89XFxcXCkpXCIpLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntzdHJpbmc6YS5zdHJpbmcsYm9vbGVhbjphLmJvb2xlYW4sbnVtYmVyOmEubnVtYmVyLHN5bWJvbDphLnN5bWJvbCxwdW5jdHVhdGlvbjovWygpXS99fX19LGw9XCJcXFxcUysoPzpcXFxccytcXFxcUyspKlwiLHM9e3BhdHRlcm46bmV3IFJlZ0V4cChvK1wiW1xcXFxzXFxcXFNdKig/PVxcXFwpKVwiKSxsb29rYmVoaW5kOiEwLGluc2lkZTp7XCJyZXN0LXZhcnNcIjp7cGF0dGVybjpuZXcgUmVnRXhwKFwiJig/OnJlc3R8Ym9keSlcXFxccytcIitsKSxpbnNpZGU6aX0sXCJvdGhlci1tYXJrZXItdmFyc1wiOntwYXR0ZXJuOm5ldyBSZWdFeHAoXCImKD86b3B0aW9uYWx8YXV4KVxcXFxzK1wiK2wpLGluc2lkZTppfSxrZXlzOntwYXR0ZXJuOm5ldyBSZWdFeHAoXCIma2V5XFxcXHMrXCIrbCtcIig/OlxcXFxzKyZhbGxvdy1vdGhlci1rZXlzKT9cIiksaW5zaWRlOml9LGFyZ3VtZW50OntwYXR0ZXJuOm5ldyBSZWdFeHAociksYWxpYXM6XCJ2YXJpYWJsZVwifSxwdW5jdHVhdGlvbjovWygpXS99fTthLmxhbWJkYS5pbnNpZGUuYXJndW1lbnRzPXMsYS5kZWZ1bi5pbnNpZGUuYXJndW1lbnRzPWUudXRpbC5jbG9uZShzKSxhLmRlZnVuLmluc2lkZS5hcmd1bWVudHMuaW5zaWRlLnN1Ymxpc3Q9cyxlLmxhbmd1YWdlcy5saXNwPWEsZS5sYW5ndWFnZXMuZWxpc3A9YSxlLmxhbmd1YWdlcy5lbWFjcz1hLGUubGFuZ3VhZ2VzW1wiZW1hY3MtbGlzcFwiXT1hfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibGlzcFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubGl2ZXNjcmlwdD17Y29tbWVudDpbe3BhdHRlcm46LyhefFteXFxcXF0pXFwvXFwqW1xcc1xcU10qP1xcKlxcLy8sbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhefFteXFxcXF0pIy4qLyxsb29rYmVoaW5kOiEwfV0sXCJpbnRlcnBvbGF0ZWQtc3RyaW5nXCI6e3BhdHRlcm46LyhefFteXCJdKShcIlwiXCJ8XCIpKD86XFxcXFtcXHNcXFNdfCg/IVxcMilbXlxcXFxdKSpcXDIoPyFcIikvLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwLGluc2lkZTp7dmFyaWFibGU6e3BhdHRlcm46LyhefFteXFxcXF0pI1thLXpfXSg/Oi0/W2Etel18W1xcZF9dKSovbSxsb29rYmVoaW5kOiEwfSxpbnRlcnBvbGF0aW9uOntwYXR0ZXJuOi8oXnxbXlxcXFxdKSNcXHtbXn1dK1xcfS9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntcImludGVycG9sYXRpb24tcHVuY3R1YXRpb25cIjp7cGF0dGVybjovXiNcXHt8XFx9JC8sYWxpYXM6XCJ2YXJpYWJsZVwifX19LHN0cmluZzovW1xcc1xcU10rL319LHN0cmluZzpbe3BhdHRlcm46LygnJyd8JykoPzpcXFxcW1xcc1xcU118KD8hXFwxKVteXFxcXF0pKlxcMS8sZ3JlZWR5OiEwfSx7cGF0dGVybjovPFxcW1tcXHNcXFNdKj9cXF0+LyxncmVlZHk6ITB9LC9cXFxcW15cXHMsO1xcXSl9XSsvXSxyZWdleDpbe3BhdHRlcm46L1xcL1xcLyhcXFsuKz9dfFxcXFwufCg/IVxcL1xcLylbXlxcXFxdKStcXC9cXC9bZ2lteXVdezAsNX0vLGdyZWVkeTohMCxpbnNpZGU6e2NvbW1lbnQ6e3BhdHRlcm46LyhefFteXFxcXF0pIy4qLyxsb29rYmVoaW5kOiEwfX19LHtwYXR0ZXJuOi9cXC8oXFxbLis/XXxcXFxcLnxbXlxcL1xcXFxcXHJcXG5dKStcXC9bZ2lteXVdezAsNX0vLGdyZWVkeTohMH1dLGtleXdvcmQ6e3BhdHRlcm46LyhefCg/IS0pLilcXGIoPzpicmVha3xjYXNlfGNhdGNofGNsYXNzfGNvbnN0fGNvbnRpbnVlfGRlZmF1bHR8ZG98ZWxzZXxleHRlbmRzfGZhbGx0aHJvdWdofGZpbmFsbHl8Zm9yKD86IGV2ZXIpP3xmdW5jdGlvbnxpZnxpbXBsZW1lbnRzfGl0fGxldHxsb29wfG5ld3xudWxsfG90aGVyd2lzZXxvd258cmV0dXJufHN1cGVyfHN3aXRjaHx0aGF0fHRoZW58dGhpc3x0aHJvd3x0cnl8dW5sZXNzfHVudGlsfHZhcnx2b2lkfHdoZW58d2hpbGV8eWllbGQpKD8hLSlcXGIvbSxsb29rYmVoaW5kOiEwfSxcImtleXdvcmQtb3BlcmF0b3JcIjp7cGF0dGVybjovKF58W14tXSlcXGIoPzooPzpkZWxldGV8cmVxdWlyZXx0eXBlb2YpIXwoPzphbmR8Ynl8ZGVsZXRlfGV4cG9ydHxmcm9tfGltcG9ydCg/OiBhbGwpP3xpbnxpbnN0YW5jZW9mfGlzKD86bnR8IG5vdCk/fG5vdHxvZnxvcnx0aWx8dG98dHlwZW9mfHdpdGh8eG9yKSg/IS0pXFxiKS9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJvcGVyYXRvclwifSxib29sZWFuOntwYXR0ZXJuOi8oXnxbXi1dKVxcYig/OmZhbHNlfG5vfG9mZnxvbnx0cnVlfHllcykoPyEtKVxcYi9tLGxvb2tiZWhpbmQ6ITB9LGFyZ3VtZW50OntwYXR0ZXJuOi8oXnwoPyFcXC4mXFwuKVteJl0pJig/ISYpXFxkKi9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJ2YXJpYWJsZVwifSxudW1iZXI6L1xcYig/OlxcZCt+W1xcZGEtel0rfFxcZFtcXGRfXSooPzpcXC5cXGRbXFxkX10qKT8oPzpbYS16XVxcdyopPykvaSxpZGVudGlmaWVyOi9bYS16X10oPzotP1thLXpdfFtcXGRfXSkqL2ksb3BlcmF0b3I6W3twYXR0ZXJuOi8oIClcXC4oPz0gKS8sbG9va2JlaGluZDohMH0sL1xcLig/Ols9fl18XFwuXFwuPyl8XFwuKD86WyZ8Xl18PDx8Pj4+PylcXC58Oig/Oj18Oj0/KXwmJnxcXHxbfD5dfDwoPzo8PD88P3wtLT8hP3x+fj8hP3xbfD0/XSk/fD5bPj0/XT98LSg/Oi0+P3w+KT98XFwrXFwrP3xAQD98JSU/fFxcKlxcKj98ISg/On4/PXwtLT8+fH4/fj4pP3x+KD86fj8+fD0pP3w9PT98XFxeXFxeP3xbXFwvP10vXSxwdW5jdHVhdGlvbjovWygpe31cXFtcXF18Liw6O2BdL30sZS5sYW5ndWFnZXMubGl2ZXNjcmlwdFtcImludGVycG9sYXRlZC1zdHJpbmdcIl0uaW5zaWRlLmludGVycG9sYXRpb24uaW5zaWRlLnJlc3Q9ZS5sYW5ndWFnZXMubGl2ZXNjcmlwdH1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibGl2ZXNjcmlwdFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubG9sY29kZT17Y29tbWVudDpbL1xcYk9CVFdcXHMrW1xcc1xcU10qP1xccytUTERSXFxiLywvXFxiQlRXLisvXSxzdHJpbmc6e3BhdHRlcm46L1wiKD86Oi58W15cIl0pKlwiLyxpbnNpZGU6e3ZhcmlhYmxlOi86XFx7W159XStcXH0vLHN5bWJvbDpbLzpcXChbYS1mXFxkXStcXCkvaSwvOlxcW1teXFxdXStcXF0vLC86Wyk+b1wiOl0vXX0sZ3JlZWR5OiEwfSxudW1iZXI6Lyg/OlxcQi0pPyg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKS8sc3ltYm9sOntwYXR0ZXJuOi8oXnxcXHMpKD86QSApPyg/OllBUk58TlVNQlJ8TlVNQkFSfFRST09GfEJVS0tJVHxOT09CKSg/PVxcc3wsfCQpLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7a2V5d29yZDovQSg/PVxccykvfX0sbGFiZWw6e3BhdHRlcm46LygoPzpefFxccykoPzpJTSBJTiBZUnxJTSBPVVRUQSBZUikgKVthLXpBLVpdXFx3Ki8sbG9va2JlaGluZDohMCxhbGlhczpcInN0cmluZ1wifSxmdW5jdGlvbjp7cGF0dGVybjovKCg/Ol58XFxzKSg/OkkgSVp8SE9XIElaIEl8SVopIClbYS16QS1aXVxcdyovLGxvb2tiZWhpbmQ6ITB9LGtleXdvcmQ6W3twYXR0ZXJuOi8oXnxcXHMpKD86TyBIQUkgSU18S1RIWHxIQUl8S1RIWEJZRXxJIEhBUyBBfElUWig/OiBBKT98UnxBTnxNS0FZfFNNT09TSHxNQUVLfElTIE5PVyg/OiBBKT98VklTSUJMRXxHSU1NRUh8TyBSTFlcXD98WUEgUkxZfE5PIFdBSXxPSUN8TUVCQkV8V1RGXFw/fE9NR3xPTUdXVEZ8R1RGT3xJTSBJTiBZUnxJTSBPVVRUQSBZUnxGT1VORCBZUnxZUnxUSUx8V0lMRXxVUFBJTnxORVJGSU58SSBJWnxIT1cgSVogSXxJRiBVIFNBWSBTT3xTUlN8SEFTIEF8TElFSyg/OiBBKT98SVopKD89XFxzfCx8JCkvLGxvb2tiZWhpbmQ6ITB9LC8nWig/PVxcc3wsfCQpL10sYm9vbGVhbjp7cGF0dGVybjovKF58XFxzKSg/OldJTnxGQUlMKSg/PVxcc3wsfCQpLyxsb29rYmVoaW5kOiEwfSx2YXJpYWJsZTp7cGF0dGVybjovKF58XFxzKUlUKD89XFxzfCx8JCkvLGxvb2tiZWhpbmQ6ITB9LG9wZXJhdG9yOntwYXR0ZXJuOi8oXnxcXHMpKD86Tk9UfEJPVEggU0FFTXxESUZGUklOVHwoPzpTVU18RElGRnxQUk9EVUtUfFFVT1NIVU5UfE1PRHxCSUdHUnxTTUFMTFJ8Qk9USHxFSVRIRVJ8V09OfEFMTHxBTlkpIE9GKSg/PVxcc3wsfCQpLyxsb29rYmVoaW5kOiEwfSxwdW5jdHVhdGlvbjovXFwuezN9fOKApnwsfCEvfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibG9sY29kZVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubHVhPXtjb21tZW50Oi9eIyEuK3wtLSg/OlxcWyg9KilcXFtbXFxzXFxTXSo/XFxdXFwxXFxdfC4qKS9tLHN0cmluZzp7cGF0dGVybjovKFtcIiddKSg/Oig/IVxcMSlbXlxcXFxcXHJcXG5dfFxcXFx6KD86XFxyXFxufFxccyl8XFxcXCg/OlxcclxcbnxbXFxzXFxTXSkpKlxcMXxcXFsoPSopXFxbW1xcc1xcU10qP1xcXVxcMlxcXS8sZ3JlZWR5OiEwfSxudW1iZXI6L1xcYjB4W2EtZlxcZF0rXFwuP1thLWZcXGRdKig/OnBbKy1dP1xcZCspP1xcYnxcXGJcXGQrKD86XFwuXFxCfFxcLj9cXGQqKD86ZVsrLV0/XFxkKyk/XFxiKXxcXEJcXC5cXGQrKD86ZVsrLV0/XFxkKyk/XFxiL2ksa2V5d29yZDovXFxiKD86YW5kfGJyZWFrfGRvfGVsc2V8ZWxzZWlmfGVuZHxmYWxzZXxmb3J8ZnVuY3Rpb258Z290b3xpZnxpbnxsb2NhbHxuaWx8bm90fG9yfHJlcGVhdHxyZXR1cm58dGhlbnx0cnVlfHVudGlsfHdoaWxlKVxcYi8sZnVuY3Rpb246Lyg/IVxcZClcXHcrKD89XFxzKig/Olsoe10pKS8sb3BlcmF0b3I6Wy9bLSsqJV4mfCNdfFxcL1xcLz98PFs8PV0/fD5bPj1dP3xbPX5dPT8vLHtwYXR0ZXJuOi8oXnxbXi5dKVxcLlxcLig/IVxcLikvLGxvb2tiZWhpbmQ6ITB9XSxwdW5jdHVhdGlvbjovW1xcW1xcXSgpe30sO118XFwuK3w6Ky99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJsdWFcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm1ha2VmaWxlPXtjb21tZW50OntwYXR0ZXJuOi8oXnxbXlxcXFxdKSMoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXxbXlxcXFxcXHJcXG5dKSovLGxvb2tiZWhpbmQ6ITB9LHN0cmluZzp7cGF0dGVybjovKFtcIiddKSg/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLGdyZWVkeTohMH0sYnVpbHRpbjovXFwuW0EtWl1bXjojPVxcc10rKD89XFxzKjooPyE9KSkvLHN5bWJvbDp7cGF0dGVybjovXlteOj1cXHJcXG5dKyg/PVxccyo6KD8hPSkpL20saW5zaWRlOnt2YXJpYWJsZTovXFwkKyg/OlteKCl7fTojPVxcc10rfCg/PVsoe10pKS99fSx2YXJpYWJsZTovXFwkKyg/OlteKCl7fTojPVxcc10rfFxcKFtAKiU8Xis/XVtERl1cXCl8KD89Wyh7XSkpLyxrZXl3b3JkOlsvLWluY2x1ZGVcXGJ8XFxiKD86ZGVmaW5lfGVsc2V8ZW5kZWZ8ZW5kaWZ8ZXhwb3J0fGlmbj9kZWZ8aWZuP2VxfGluY2x1ZGV8b3ZlcnJpZGV8cHJpdmF0ZXxzaW5jbHVkZXx1bmRlZmluZXx1bmV4cG9ydHx2cGF0aClcXGIvLHtwYXR0ZXJuOi8oXFwoKSg/OmFkZHN1ZmZpeHxhYnNwYXRofGFuZHxiYXNlbmFtZXxjYWxsfGRpcnxlcnJvcnxldmFsfGZpbGV8ZmlsdGVyKD86LW91dCk/fGZpbmRzdHJpbmd8Zmlyc3R3b3JkfGZsYXZvcnxmb3JlYWNofGd1aWxlfGlmfGluZm98am9pbnxsYXN0d29yZHxsb2FkfG5vdGRpcnxvcnxvcmlnaW58cGF0c3Vic3R8cmVhbHBhdGh8c2hlbGx8c29ydHxzdHJpcHxzdWJzdHxzdWZmaXh8dmFsdWV8d2FybmluZ3x3aWxkY2FyZHx3b3JkKD86c3xsaXN0KT8pKD89WyBcXHRdKS8sbG9va2JlaGluZDohMH1dLG9wZXJhdG9yOi8oPzo6OnxbPzorIV0pPz18W3xAXS8scHVuY3R1YXRpb246L1s6Oygpe31dL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm1ha2VmaWxlXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5tYXJrZG93bj1lLmxhbmd1YWdlcy5leHRlbmQoXCJtYXJrdXBcIix7fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwibWFya2Rvd25cIixcInByb2xvZ1wiLHtibG9ja3F1b3RlOntwYXR0ZXJuOi9ePig/OltcXHQgXSo+KSovbSxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LGNvZGU6W3twYXR0ZXJuOi9eKD86IHs0fXxcXHQpLisvbSxhbGlhczpcImtleXdvcmRcIn0se3BhdHRlcm46L2BgLis/YGB8YFteYFxcbl0rYC8sYWxpYXM6XCJrZXl3b3JkXCJ9XSx0aXRsZTpbe3BhdHRlcm46L1xcdysuKig/Olxccj9cXG58XFxyKSg/Oj09K3wtLSspLyxhbGlhczpcImltcG9ydGFudFwiLGluc2lkZTp7cHVuY3R1YXRpb246Lz09KyR8LS0rJC99fSx7cGF0dGVybjovKF5cXHMqKSMrLisvbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwiaW1wb3J0YW50XCIsaW5zaWRlOntwdW5jdHVhdGlvbjovXiMrfCMrJC99fV0saHI6e3BhdHRlcm46LyheXFxzKikoWyotXSkoPzpbXFx0IF0qXFwyKXsyLH0oPz1cXHMqJCkvbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwicHVuY3R1YXRpb25cIn0sbGlzdDp7cGF0dGVybjovKF5cXHMqKSg/OlsqKy1dfFxcZCtcXC4pKD89W1xcdCBdLikvbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwicHVuY3R1YXRpb25cIn0sXCJ1cmwtcmVmZXJlbmNlXCI6e3BhdHRlcm46LyE/XFxbW15cXF1dK1xcXTpbXFx0IF0rKD86XFxTK3w8KD86XFxcXC58W14+XFxcXF0pKz4pKD86W1xcdCBdKyg/OlwiKD86XFxcXC58W15cIlxcXFxdKSpcInwnKD86XFxcXC58W14nXFxcXF0pKid8XFwoKD86XFxcXC58W14pXFxcXF0pKlxcKSkpPy8saW5zaWRlOnt2YXJpYWJsZTp7cGF0dGVybjovXighP1xcWylbXlxcXV0rLyxsb29rYmVoaW5kOiEwfSxzdHJpbmc6Lyg/OlwiKD86XFxcXC58W15cIlxcXFxdKSpcInwnKD86XFxcXC58W14nXFxcXF0pKid8XFwoKD86XFxcXC58W14pXFxcXF0pKlxcKSkkLyxwdW5jdHVhdGlvbjovXltcXFtcXF0hOl18Wzw+XS99LGFsaWFzOlwidXJsXCJ9LGJvbGQ6e3BhdHRlcm46LyhefFteXFxcXF0pKFxcKlxcKnxfXykoPzooPzpcXHI/XFxufFxccikoPyFcXHI/XFxufFxccil8LikrP1xcMi8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9eXFwqXFwqfF5fX3xcXCpcXCokfF9fJC99fSxpdGFsaWM6e3BhdHRlcm46LyhefFteXFxcXF0pKFsqX10pKD86KD86XFxyP1xcbnxcXHIpKD8hXFxyP1xcbnxcXHIpfC4pKz9cXDIvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwdW5jdHVhdGlvbjovXlsqX118WypfXSQvfX0sdXJsOntwYXR0ZXJuOi8hP1xcW1teXFxdXStcXF0oPzpcXChbXlxccyldKyg/OltcXHQgXStcIig/OlxcXFwufFteXCJcXFxcXSkqXCIpP1xcKXwgP1xcW1teXFxdXFxuXSpcXF0pLyxpbnNpZGU6e3ZhcmlhYmxlOntwYXR0ZXJuOi8oIT9cXFspW15cXF1dKyg/PVxcXSQpLyxsb29rYmVoaW5kOiEwfSxzdHJpbmc6e3BhdHRlcm46L1wiKD86XFxcXC58W15cIlxcXFxdKSpcIig/PVxcKSQpL319fX0pLGUubGFuZ3VhZ2VzLm1hcmtkb3duLmJvbGQuaW5zaWRlLnVybD1lLmxhbmd1YWdlcy5tYXJrZG93bi51cmwsZS5sYW5ndWFnZXMubWFya2Rvd24uaXRhbGljLmluc2lkZS51cmw9ZS5sYW5ndWFnZXMubWFya2Rvd24udXJsLGUubGFuZ3VhZ2VzLm1hcmtkb3duLmJvbGQuaW5zaWRlLml0YWxpYz1lLmxhbmd1YWdlcy5tYXJrZG93bi5pdGFsaWMsZS5sYW5ndWFnZXMubWFya2Rvd24uaXRhbGljLmluc2lkZS5ib2xkPWUubGFuZ3VhZ2VzLm1hcmtkb3duLmJvbGR9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm1hcmtkb3duXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlc1tcIm1hcmt1cC10ZW1wbGF0aW5nXCJdPXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl0se2J1aWxkUGxhY2Vob2xkZXJzOnt2YWx1ZTpmdW5jdGlvbih0LG4scixvKXt0Lmxhbmd1YWdlPT09biYmKHQudG9rZW5TdGFjaz1bXSx0LmNvZGU9dC5jb2RlLnJlcGxhY2UocixmdW5jdGlvbihlKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBvJiYhbyhlKSlyZXR1cm4gZTtmb3IodmFyIHI9dC50b2tlblN0YWNrLmxlbmd0aDstMSE9PXQuY29kZS5pbmRleE9mKFwiX19fXCIrbi50b1VwcGVyQ2FzZSgpK3IrXCJfX19cIik7KSsrcjtyZXR1cm4gdC50b2tlblN0YWNrW3JdPWUsXCJfX19cIituLnRvVXBwZXJDYXNlKCkrcitcIl9fX1wifSksdC5ncmFtbWFyPWUubGFuZ3VhZ2VzLm1hcmt1cCl9fSx0b2tlbml6ZVBsYWNlaG9sZGVyczp7dmFsdWU6ZnVuY3Rpb24odCxuKXtpZih0Lmxhbmd1YWdlPT09biYmdC50b2tlblN0YWNrKXt0LmdyYW1tYXI9ZS5sYW5ndWFnZXNbbl07dmFyIHI9MCxvPU9iamVjdC5rZXlzKHQudG9rZW5TdGFjayksYT1mdW5jdGlvbihpKXtpZighKHI+PW8ubGVuZ3RoKSlmb3IodmFyIGw9MDtsPGkubGVuZ3RoO2wrKyl7dmFyIHM9aVtsXTtpZihcInN0cmluZ1wiPT10eXBlb2Ygc3x8cy5jb250ZW50JiZcInN0cmluZ1wiPT10eXBlb2Ygcy5jb250ZW50KXt2YXIgdT1vW3JdLGM9dC50b2tlblN0YWNrW3VdLGQ9XCJzdHJpbmdcIj09dHlwZW9mIHM/czpzLmNvbnRlbnQscD1kLmluZGV4T2YoXCJfX19cIituLnRvVXBwZXJDYXNlKCkrdStcIl9fX1wiKTtpZihwPi0xKXsrK3I7dmFyIGYsbT1kLnN1YnN0cmluZygwLHApLGc9bmV3IGUuVG9rZW4obixlLnRva2VuaXplKGMsdC5ncmFtbWFyLG4pLFwibGFuZ3VhZ2UtXCIrbixjKSxoPWQuc3Vic3RyaW5nKHArKFwiX19fXCIrbi50b1VwcGVyQ2FzZSgpK3UrXCJfX19cIikubGVuZ3RoKTtpZihtfHxoPyhmPVttLGcsaF0uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pLGEoZikpOmY9ZyxcInN0cmluZ1wiPT10eXBlb2Ygcz9BcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGksW2wsMV0uY29uY2F0KGYpKTpzLmNvbnRlbnQ9ZixyPj1vLmxlbmd0aClicmVha319ZWxzZSBzLmNvbnRlbnQmJlwic3RyaW5nXCIhPXR5cGVvZiBzLmNvbnRlbnQmJmEocy5jb250ZW50KX19O2EodC50b2tlbnMpfX19fSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm1hcmt1cFRlbXBsYXRpbmdcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm1hdGxhYj17Y29tbWVudDpbLyVcXHtbXFxzXFxTXSo/XFx9JS8sLyUuKy9dLHN0cmluZzp7cGF0dGVybjovXFxCJyg/OicnfFteJ1xcclxcbl0pKicvLGdyZWVkeTohMH0sbnVtYmVyOi8oPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzpbZUVdWystXT9cXGQrKT8oPzpbaWpdKT98XFxiW2lqXVxcYi8sa2V5d29yZDovXFxiKD86YnJlYWt8Y2FzZXxjYXRjaHxjb250aW51ZXxlbHNlfGVsc2VpZnxlbmR8Zm9yfGZ1bmN0aW9ufGlmfGluZnxOYU58b3RoZXJ3aXNlfHBhcmZvcnxwYXVzZXxwaXxyZXR1cm58c3dpdGNofHRyeXx3aGlsZSlcXGIvLGZ1bmN0aW9uOi8oPyFcXGQpXFx3Kyg/PVxccypcXCgpLyxvcGVyYXRvcjovXFwuP1sqXlxcL1xcXFwnXXxbK1xcLTpAXXxbPD49fl09P3wmJj98XFx8XFx8Py8scHVuY3R1YXRpb246L1xcLnszfXxbLiw7XFxbXFxdKCl7fSFdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm1hdGxhYlwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubWVsPXtjb21tZW50Oi9cXC9cXC8uKi8sY29kZTp7cGF0dGVybjovYCg/OlxcXFwufFteXFxcXGBcXHJcXG5dKSpgLyxncmVlZHk6ITAsYWxpYXM6XCJpdGFsaWNcIixpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXmB8YCQvLGFsaWFzOlwicHVuY3R1YXRpb25cIn19fSxzdHJpbmc6e3BhdHRlcm46L1wiKD86XFxcXC58W15cXFxcXCJcXHJcXG5dKSpcIi8sZ3JlZWR5OiEwfSx2YXJpYWJsZTovXFwkXFx3Ky8sbnVtYmVyOi9cXGIweFtcXGRhLWZBLUZdK1xcYnxcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKy8sZmxhZzp7cGF0dGVybjovLVteXFxkXFxXXVxcdyovLGFsaWFzOlwib3BlcmF0b3JcIn0sa2V5d29yZDovXFxiKD86YnJlYWt8Y2FzZXxjb250aW51ZXxkZWZhdWx0fGRvfGVsc2V8ZmxvYXR8Zm9yfGdsb2JhbHxpZnxpbnxpbnR8bWF0cml4fHByb2N8cmV0dXJufHN0cmluZ3xzd2l0Y2h8dmVjdG9yfHdoaWxlKVxcYi8sZnVuY3Rpb246L1xcdysoPz1cXCgpfFxcYig/OmFib3V0fGFic3xhZGRBdHRyfGFkZEF0dHJpYnV0ZUVkaXRvck5vZGVIZWxwfGFkZER5bmFtaWN8YWRkTmV3U2hlbGZUYWJ8YWRkUFB8YWRkUGFuZWxDYXRlZ29yeXxhZGRQcmVmaXhUb05hbWV8YWR2YW5jZVRvTmV4dERyaXZlbktleXxhZmZlY3RlZE5ldHxhZmZlY3RzfGFpbUNvbnN0cmFpbnR8YWlyfGFsaWFzfGFsaWFzQXR0cnxhbGlnbnxhbGlnbkN0eHxhbGlnbkN1cnZlfGFsaWduU3VyZmFjZXxhbGxWaWV3Rml0fGFtYmllbnRMaWdodHxhbmdsZXxhbmdsZUJldHdlZW58YW5pbUNvbmV8YW5pbUN1cnZlRWRpdG9yfGFuaW1EaXNwbGF5fGFuaW1WaWV3fGFubm90YXRlfGFwcGVuZFN0cmluZ0FycmF5fGFwcGxpY2F0aW9uTmFtZXxhcHBseUF0dHJQcmVzZXR8YXBwbHlUYWtlfGFyY0xlbkRpbUNvbnRleHR8YXJjTGVuZ3RoRGltZW5zaW9ufGFyY2xlbnxhcnJheU1hcHBlcnxhcnQzZFBhaW50Q3R4fGFydEF0dHJDdHh8YXJ0QXR0clBhaW50VmVydGV4Q3R4fGFydEF0dHJTa2luUGFpbnRDdHh8YXJ0QXR0clRvb2x8YXJ0QnVpbGRQYWludE1lbnV8YXJ0Rmx1aWRBdHRyQ3R4fGFydFB1dHR5Q3R4fGFydFNlbGVjdEN0eHxhcnRTZXRQYWludEN0eHxhcnRVc2VyUGFpbnRDdHh8YXNzaWduQ29tbWFuZHxhc3NpZ25JbnB1dERldmljZXxhc3NpZ25WaWV3cG9ydEZhY3Rvcmllc3xhdHRhY2hDdXJ2ZXxhdHRhY2hEZXZpY2VBdHRyfGF0dGFjaFN1cmZhY2V8YXR0ckNvbG9yU2xpZGVyR3JwfGF0dHJDb21wYXRpYmlsaXR5fGF0dHJDb250cm9sR3JwfGF0dHJFbnVtT3B0aW9uTWVudXxhdHRyRW51bU9wdGlvbk1lbnVHcnB8YXR0ckZpZWxkR3JwfGF0dHJGaWVsZFNsaWRlckdycHxhdHRyTmF2aWdhdGlvbkNvbnRyb2xHcnB8YXR0clByZXNldEVkaXRXaW58YXR0cmlidXRlRXhpc3RzfGF0dHJpYnV0ZUluZm98YXR0cmlidXRlTWVudXxhdHRyaWJ1dGVRdWVyeXxhdXRvS2V5ZnJhbWV8YXV0b1BsYWNlfGJha2VDbGlwfGJha2VGbHVpZFNoYWRpbmd8YmFrZVBhcnRpYWxIaXN0b3J5fGJha2VSZXN1bHRzfGJha2VTaW11bGF0aW9ufGJhc2VuYW1lfGJhc2VuYW1lRXh8YmF0Y2hSZW5kZXJ8YmVzc2VsfGJldmVsfGJldmVsUGx1c3xiaW5NZW1iZXJzaGlwfGJpbmRTa2lufGJsZW5kMnxibGVuZFNoYXBlfGJsZW5kU2hhcGVFZGl0b3J8YmxlbmRTaGFwZVBhbmVsfGJsZW5kVHdvQXR0cnxibGluZERhdGFUeXBlfGJvbmVMYXR0aWNlfGJvdW5kYXJ5fGJveERvbGx5Q3R4fGJveFpvb21DdHh8YnVmZmVyQ3VydmV8YnVpbGRCb29rbWFya01lbnV8YnVpbGRLZXlmcmFtZU1lbnV8YnV0dG9ufGJ1dHRvbk1hbmlwfENCR3xjYWNoZUZpbGV8Y2FjaGVGaWxlQ29tYmluZXxjYWNoZUZpbGVNZXJnZXxjYWNoZUZpbGVUcmFja3xjYW1lcmF8Y2FtZXJhVmlld3xjYW5DcmVhdGVNYW5pcHxjYW52YXN8Y2FwaXRhbGl6ZVN0cmluZ3xjYXRjaHxjYXRjaFF1aWV0fGNlaWx8Y2hhbmdlU3ViZGl2Q29tcG9uZW50RGlzcGxheUxldmVsfGNoYW5nZVN1YmRpdlJlZ2lvbnxjaGFubmVsQm94fGNoYXJhY3RlcnxjaGFyYWN0ZXJNYXB8Y2hhcmFjdGVyT3V0bGluZUVkaXRvcnxjaGFyYWN0ZXJpemV8Y2hkaXJ8Y2hlY2tCb3h8Y2hlY2tCb3hHcnB8Y2hlY2tEZWZhdWx0UmVuZGVyR2xvYmFsc3xjaG9pY2V8Y2lyY2xlfGNpcmN1bGFyRmlsbGV0fGNsYW1wfGNsZWFyfGNsZWFyQ2FjaGV8Y2xpcHxjbGlwRWRpdG9yfGNsaXBFZGl0b3JDdXJyZW50VGltZUN0eHxjbGlwU2NoZWR1bGV8Y2xpcFNjaGVkdWxlck91dGxpbmVyfGNsaXBUcmltQmVmb3JlfGNsb3NlQ3VydmV8Y2xvc2VTdXJmYWNlfGNsdXN0ZXJ8Y21kRmlsZU91dHB1dHxjbWRTY3JvbGxGaWVsZEV4ZWN1dGVyfGNtZFNjcm9sbEZpZWxkUmVwb3J0ZXJ8Y21kU2hlbGx8Y29hcnNlblN1YmRpdlNlbGVjdGlvbkxpc3R8Y29sbGlzaW9ufGNvbG9yfGNvbG9yQXRQb2ludHxjb2xvckVkaXRvcnxjb2xvckluZGV4fGNvbG9ySW5kZXhTbGlkZXJHcnB8Y29sb3JTbGlkZXJCdXR0b25HcnB8Y29sb3JTbGlkZXJHcnB8Y29sdW1uTGF5b3V0fGNvbW1hbmRFY2hvfGNvbW1hbmRMaW5lfGNvbW1hbmRQb3J0fGNvbXBhY3RIYWlyU3lzdGVtfGNvbXBvbmVudEVkaXRvcnxjb21wb3NpdGluZ0ludGVyb3B8Y29tcHV0ZVBvbHlzZXRWb2x1bWV8Y29uZGl0aW9ufGNvbmV8Y29uZmlybURpYWxvZ3xjb25uZWN0QXR0cnxjb25uZWN0Q29udHJvbHxjb25uZWN0RHluYW1pY3xjb25uZWN0Sm9pbnR8Y29ubmVjdGlvbkluZm98Y29uc3RyYWlufGNvbnN0cmFpblZhbHVlfGNvbnN0cnVjdGlvbkhpc3Rvcnl8Y29udGFpbmVyfGNvbnRhaW5zTXVsdGlieXRlfGNvbnRleHRJbmZvfGNvbnRyb2x8Y29udmVydEZyb21PbGRMYXllcnN8Y29udmVydElmZlRvUHNkfGNvbnZlcnRMaWdodG1hcHxjb252ZXJ0U29saWRUeHxjb252ZXJ0VGVzc2VsbGF0aW9ufGNvbnZlcnRVbml0fGNvcHlBcnJheXxjb3B5RmxleG9yfGNvcHlLZXl8Y29weVNraW5XZWlnaHRzfGNvc3xjcEJ1dHRvbnxjcENhY2hlfGNwQ2xvdGhTZXR8Y3BDb2xsaXNpb258Y3BDb25zdHJhaW50fGNwQ29udkNsb3RoVG9NZXNofGNwRm9yY2VzfGNwR2V0U29sdmVyQXR0cnxjcFBhbmVsfGNwUHJvcGVydHl8Y3BSaWdpZENvbGxpc2lvbkZpbHRlcnxjcFNlYW18Y3BTZXRFZGl0fGNwU2V0U29sdmVyQXR0cnxjcFNvbHZlcnxjcFNvbHZlclR5cGVzfGNwVG9vbHxjcFVwZGF0ZUNsb3RoVVZzfGNyZWF0ZURpc3BsYXlMYXllcnxjcmVhdGVEcmF3Q3R4fGNyZWF0ZUVkaXRvcnxjcmVhdGVMYXllcmVkUHNkRmlsZXxjcmVhdGVNb3Rpb25GaWVsZHxjcmVhdGVOZXdTaGVsZnxjcmVhdGVOb2RlfGNyZWF0ZVJlbmRlckxheWVyfGNyZWF0ZVN1YmRpdlJlZ2lvbnxjcm9zc3xjcm9zc1Byb2R1Y3R8Y3R4QWJvcnR8Y3R4Q29tcGxldGlvbnxjdHhFZGl0TW9kZXxjdHhUcmF2ZXJzZXxjdXJyZW50Q3R4fGN1cnJlbnRUaW1lfGN1cnJlbnRUaW1lQ3R4fGN1cnJlbnRVbml0fGN1cnZlfGN1cnZlQWRkUHRDdHh8Y3VydmVDVkN0eHxjdXJ2ZUVQQ3R4fGN1cnZlRWRpdG9yQ3R4fGN1cnZlSW50ZXJzZWN0fGN1cnZlTW92ZUVQQ3R4fGN1cnZlT25TdXJmYWNlfGN1cnZlU2tldGNoQ3R4fGN1dEtleXxjeWNsZUNoZWNrfGN5bGluZGVyfGRhZ1Bvc2V8ZGF0ZXxkZWZhdWx0TGlnaHRMaXN0Q2hlY2tCb3h8ZGVmYXVsdE5hdmlnYXRpb258ZGVmaW5lRGF0YVNlcnZlcnxkZWZpbmVWaXJ0dWFsRGV2aWNlfGRlZm9ybWVyfGRlZ190b19yYWR8ZGVsZXRlfGRlbGV0ZUF0dHJ8ZGVsZXRlU2hhZGluZ0dyb3Vwc0FuZE1hdGVyaWFsc3xkZWxldGVTaGVsZlRhYnxkZWxldGVVSXxkZWxldGVVbnVzZWRCcnVzaGVzfGRlbHJhbmRzdHJ8ZGV0YWNoQ3VydmV8ZGV0YWNoRGV2aWNlQXR0cnxkZXRhY2hTdXJmYWNlfGRldmljZUVkaXRvcnxkZXZpY2VQYW5lbHxkZ0luZm98ZGdkaXJ0eXxkZ2V2YWx8ZGd0aW1lcnxkaW1XaGVufGRpcmVjdEtleUN0eHxkaXJlY3Rpb25hbExpZ2h0fGRpcm1hcHxkaXJuYW1lfGRpc2FibGV8ZGlzY29ubmVjdEF0dHJ8ZGlzY29ubmVjdEpvaW50fGRpc2tDYWNoZXxkaXNwbGFjZW1lbnRUb1BvbHl8ZGlzcGxheUFmZmVjdGVkfGRpc3BsYXlDb2xvcnxkaXNwbGF5Q3VsbHxkaXNwbGF5TGV2ZWxPZkRldGFpbHxkaXNwbGF5UHJlZnxkaXNwbGF5UkdCQ29sb3J8ZGlzcGxheVNtb290aG5lc3N8ZGlzcGxheVN0YXRzfGRpc3BsYXlTdHJpbmd8ZGlzcGxheVN1cmZhY2V8ZGlzdGFuY2VEaW1Db250ZXh0fGRpc3RhbmNlRGltZW5zaW9ufGRvQmx1cnxkb2xseXxkb2xseUN0eHxkb3BlU2hlZXRFZGl0b3J8ZG90fGRvdFByb2R1Y3R8ZG91YmxlUHJvZmlsZUJpcmFpbFN1cmZhY2V8ZHJhZ3xkcmFnQXR0ckNvbnRleHR8ZHJhZ2dlckNvbnRleHR8ZHJvcG9mZkxvY2F0b3J8ZHVwbGljYXRlfGR1cGxpY2F0ZUN1cnZlfGR1cGxpY2F0ZVN1cmZhY2V8ZHluQ2FjaGV8ZHluQ29udHJvbHxkeW5FeHBvcnR8ZHluRXhwcmVzc2lvbnxkeW5HbG9iYWxzfGR5blBhaW50RWRpdG9yfGR5blBhcnRpY2xlQ3R4fGR5blByZWZ8ZHluUmVsRWRQYW5lbHxkeW5SZWxFZGl0b3J8ZHluYW1pY0xvYWR8ZWRpdEF0dHJMaW1pdHN8ZWRpdERpc3BsYXlMYXllckdsb2JhbHN8ZWRpdERpc3BsYXlMYXllck1lbWJlcnN8ZWRpdFJlbmRlckxheWVyQWRqdXN0bWVudHxlZGl0UmVuZGVyTGF5ZXJHbG9iYWxzfGVkaXRSZW5kZXJMYXllck1lbWJlcnN8ZWRpdG9yfGVkaXRvclRlbXBsYXRlfGVmZmVjdG9yfGVtaXR8ZW1pdHRlcnxlbmFibGVEZXZpY2V8ZW5jb2RlU3RyaW5nfGVuZFN0cmluZ3xlbmRzV2l0aHxlbnZ8ZXF1aXZhbGVudHxlcXVpdmFsZW50VG9sfGVyZnxlcnJvcnxldmFsfGV2YWxEZWZlcnJlZHxldmFsRWNob3xldmVudHxleGFjdFdvcmxkQm91bmRpbmdCb3h8ZXhjbHVzaXZlTGlnaHRDaGVja0JveHxleGVjfGV4ZWN1dGVGb3JFYWNoT2JqZWN0fGV4aXN0c3xleHB8ZXhwcmVzc2lvbnxleHByZXNzaW9uRWRpdG9yTGlzdGVufGV4dGVuZEN1cnZlfGV4dGVuZFN1cmZhY2V8ZXh0cnVkZXxmY2hlY2t8ZmNsb3NlfGZlb2Z8ZmZsdXNofGZnZXRsaW5lfGZnZXR3b3JkfGZpbGV8ZmlsZUJyb3dzZXJEaWFsb2d8ZmlsZURpYWxvZ3xmaWxlRXh0ZW5zaW9ufGZpbGVJbmZvfGZpbGV0ZXN0fGZpbGxldEN1cnZlfGZpbHRlcnxmaWx0ZXJDdXJ2ZXxmaWx0ZXJFeHBhbmR8ZmlsdGVyU3R1ZGlvSW1wb3J0fGZpbmRBbGxJbnRlcnNlY3Rpb25zfGZpbmRBbmltQ3VydmVzfGZpbmRLZXlmcmFtZXxmaW5kTWVudUl0ZW18ZmluZFJlbGF0ZWRTa2luQ2x1c3RlcnxmaW5kZXJ8Zmlyc3RQYXJlbnRPZnxmaXRCc3BsaW5lfGZsZXhvcnxmbG9hdEVxfGZsb2F0RmllbGR8ZmxvYXRGaWVsZEdycHxmbG9hdFNjcm9sbEJhcnxmbG9hdFNsaWRlcnxmbG9hdFNsaWRlcjJ8ZmxvYXRTbGlkZXJCdXR0b25HcnB8ZmxvYXRTbGlkZXJHcnB8Zmxvb3J8Zmxvd3xmbHVpZENhY2hlSW5mb3xmbHVpZEVtaXR0ZXJ8Zmx1aWRWb3hlbEluZm98Zmx1c2hVbmRvfGZtb2R8Zm9udERpYWxvZ3xmb3Blbnxmb3JtTGF5b3V0fGZvcm1hdHxmcHJpbnR8ZnJhbWVMYXlvdXR8ZnJlYWR8ZnJlZUZvcm1GaWxsZXR8ZnJld2luZHxmcm9tTmF0aXZlUGF0aHxmd3JpdGV8Z2FtbWF8Z2F1c3N8Z2VvbWV0cnlDb25zdHJhaW50fGdldEFwcGxpY2F0aW9uVmVyc2lvbkFzRmxvYXR8Z2V0QXR0cnxnZXRDbGFzc2lmaWNhdGlvbnxnZXREZWZhdWx0QnJ1c2h8Z2V0RmlsZUxpc3R8Z2V0Rmx1aWRBdHRyfGdldElucHV0RGV2aWNlUmFuZ2V8Z2V0TWF5YVBhbmVsVHlwZXN8Z2V0TW9kaWZpZXJzfGdldFBhbmVsfGdldFBhcnRpY2xlQXR0cnxnZXRQbHVnaW5SZXNvdXJjZXxnZXRlbnZ8Z2V0cGlkfGdsUmVuZGVyfGdsUmVuZGVyRWRpdG9yfGdsb2JhbFN0aXRjaHxnbWF0Y2h8Z29hbHxnb3RvQmluZFBvc2V8Z3JhYkNvbG9yfGdyYWRpZW50Q29udHJvbHxncmFkaWVudENvbnRyb2xOb0F0dHJ8Z3JhcGhEb2xseUN0eHxncmFwaFNlbGVjdENvbnRleHR8Z3JhcGhUcmFja0N0eHxncmF2aXR5fGdyaWR8Z3JpZExheW91dHxncm91cHxncm91cE9iamVjdHNCeU5hbWV8SGZBZGRBdHRyYWN0b3JUb0FTfEhmQXNzaWduQVN8SGZCdWlsZEVxdWFsTWFwfEhmQnVpbGRGdXJGaWxlc3xIZkJ1aWxkRnVySW1hZ2VzfEhmQ2FuY2VsQUZSfEhmQ29ubmVjdEFTVG9IRnxIZkNyZWF0ZUF0dHJhY3RvcnxIZkRlbGV0ZUFTfEhmRWRpdEFTfEhmUGVyZm9ybUNyZWF0ZUFTfEhmUmVtb3ZlQXR0cmFjdG9yRnJvbUFTfEhmU2VsZWN0QXR0YWNoZWR8SGZTZWxlY3RBdHRyYWN0b3JzfEhmVW5Bc3NpZ25BU3xoYXJkZW5Qb2ludEN1cnZlfGhhcmR3YXJlfGhhcmR3YXJlUmVuZGVyUGFuZWx8aGVhZHNVcERpc3BsYXl8aGVhZHNVcE1lc3NhZ2V8aGVscHxoZWxwTGluZXxoZXJtaXRlfGhpZGV8aGlsaXRlfGhpdFRlc3R8aG90Qm94fGhvdGtleXxob3RrZXlDaGVja3xoc3ZfdG9fcmdifGh1ZEJ1dHRvbnxodWRTbGlkZXJ8aHVkU2xpZGVyQnV0dG9ufGh3UmVmbGVjdGlvbk1hcHxod1JlbmRlcnxod1JlbmRlckxvYWR8aHlwZXJHcmFwaHxoeXBlclBhbmVsfGh5cGVyU2hhZGV8aHlwb3R8aWNvblRleHRCdXR0b258aWNvblRleHRDaGVja0JveHxpY29uVGV4dFJhZGlvQnV0dG9ufGljb25UZXh0UmFkaW9Db2xsZWN0aW9ufGljb25UZXh0U2Nyb2xsTGlzdHxpY29uVGV4dFN0YXRpY0xhYmVsfGlrSGFuZGxlfGlrSGFuZGxlQ3R4fGlrSGFuZGxlRGlzcGxheVNjYWxlfGlrU29sdmVyfGlrU3BsaW5lSGFuZGxlQ3R4fGlrU3lzdGVtfGlrU3lzdGVtSW5mb3xpa2ZrRGlzcGxheU1ldGhvZHxpbGx1c3RyYXRvckN1cnZlc3xpbWFnZXxpbWZQbHVnaW5zfGluaGVyaXRUcmFuc2Zvcm18aW5zZXJ0Sm9pbnR8aW5zZXJ0Sm9pbnRDdHh8aW5zZXJ0S2V5Q3R4fGluc2VydEtub3RDdXJ2ZXxpbnNlcnRLbm90U3VyZmFjZXxpbnN0YW5jZXxpbnN0YW5jZWFibGV8aW5zdGFuY2VyfGludEZpZWxkfGludEZpZWxkR3JwfGludFNjcm9sbEJhcnxpbnRTbGlkZXJ8aW50U2xpZGVyR3JwfGludGVyVG9VSXxpbnRlcm5hbFZhcnxpbnRlcnNlY3R8aXByRW5naW5lfGlzQW5pbUN1cnZlfGlzQ29ubmVjdGVkfGlzRGlydHl8aXNQYXJlbnRPZnxpc1NhbWVPYmplY3R8aXNUcnVlfGlzVmFsaWRPYmplY3ROYW1lfGlzVmFsaWRTdHJpbmd8aXNWYWxpZFVpTmFtZXxpc29sYXRlU2VsZWN0fGl0ZW1GaWx0ZXJ8aXRlbUZpbHRlckF0dHJ8aXRlbUZpbHRlclJlbmRlcnxpdGVtRmlsdGVyVHlwZXxqb2ludHxqb2ludENsdXN0ZXJ8am9pbnRDdHh8am9pbnREaXNwbGF5U2NhbGV8am9pbnRMYXR0aWNlfGtleVRhbmdlbnR8a2V5ZnJhbWV8a2V5ZnJhbWVPdXRsaW5lcnxrZXlmcmFtZVJlZ2lvbkN1cnJlbnRUaW1lQ3R4fGtleWZyYW1lUmVnaW9uRGlyZWN0S2V5Q3R4fGtleWZyYW1lUmVnaW9uRG9sbHlDdHh8a2V5ZnJhbWVSZWdpb25JbnNlcnRLZXlDdHh8a2V5ZnJhbWVSZWdpb25Nb3ZlS2V5Q3R4fGtleWZyYW1lUmVnaW9uU2NhbGVLZXlDdHh8a2V5ZnJhbWVSZWdpb25TZWxlY3RLZXlDdHh8a2V5ZnJhbWVSZWdpb25TZXRLZXlDdHh8a2V5ZnJhbWVSZWdpb25UcmFja0N0eHxrZXlmcmFtZVN0YXRzfGxhc3NvQ29udGV4dHxsYXR0aWNlfGxhdHRpY2VEZWZvcm1LZXlDdHh8bGF1bmNofGxhdW5jaEltYWdlRWRpdG9yfGxheWVyQnV0dG9ufGxheWVyZWRTaGFkZXJQb3J0fGxheWVyZWRUZXh0dXJlUG9ydHxsYXlvdXR8bGF5b3V0RGlhbG9nfGxpZ2h0TGlzdHxsaWdodExpc3RFZGl0b3J8bGlnaHRMaXN0UGFuZWx8bGlnaHRsaW5rfGxpbmVJbnRlcnNlY3Rpb258bGluZWFyUHJlY2lzaW9ufGxpbnN0ZXB8bGlzdEFuaW1hdGFibGV8bGlzdEF0dHJ8bGlzdENhbWVyYXN8bGlzdENvbm5lY3Rpb25zfGxpc3REZXZpY2VBdHRhY2htZW50c3xsaXN0SGlzdG9yeXxsaXN0SW5wdXREZXZpY2VBeGVzfGxpc3RJbnB1dERldmljZUJ1dHRvbnN8bGlzdElucHV0RGV2aWNlc3xsaXN0TWVudUFubm90YXRpb258bGlzdE5vZGVUeXBlc3xsaXN0UGFuZWxDYXRlZ29yaWVzfGxpc3RSZWxhdGl2ZXN8bGlzdFNldHN8bGlzdFRyYW5zZm9ybXN8bGlzdFVuc2VsZWN0ZWR8bGlzdGVyRWRpdG9yfGxvYWRGbHVpZHxsb2FkTmV3U2hlbGZ8bG9hZFBsdWdpbnxsb2FkUGx1Z2luTGFuZ3VhZ2VSZXNvdXJjZXN8bG9hZFByZWZPYmplY3RzfGxvY2FsaXplZFBhbmVsTGFiZWx8bG9ja05vZGV8bG9mdHxsb2d8bG9uZ05hbWVPZnxsb29rVGhydXxsc3xsc1Rocm91Z2hGaWx0ZXJ8bHNUeXBlfGxzVUl8TWF5YXRvbXJ8bWFnfG1ha2VJZGVudGl0eXxtYWtlTGl2ZXxtYWtlUGFpbnRhYmxlfG1ha2VSb2xsfG1ha2VTaW5nbGVTdXJmYWNlfG1ha2VUdWJlT258bWFrZWJvdHxtYW5pcE1vdmVDb250ZXh0fG1hbmlwTW92ZUxpbWl0c0N0eHxtYW5pcE9wdGlvbnN8bWFuaXBSb3RhdGVDb250ZXh0fG1hbmlwUm90YXRlTGltaXRzQ3R4fG1hbmlwU2NhbGVDb250ZXh0fG1hbmlwU2NhbGVMaW1pdHNDdHh8bWFya2VyfG1hdGNofG1heHxtZW1vcnl8bWVudXxtZW51QmFyTGF5b3V0fG1lbnVFZGl0b3J8bWVudUl0ZW18bWVudUl0ZW1Ub1NoZWxmfG1lbnVTZXR8bWVudVNldFByZWZ8bWVzc2FnZUxpbmV8bWlufG1pbmltaXplQXBwfG1pcnJvckpvaW50fG1vZGVsQ3VycmVudFRpbWVDdHh8bW9kZWxFZGl0b3J8bW9kZWxQYW5lbHxtb3VzZXxtb3ZJbnxtb3ZPdXR8bW92ZXxtb3ZlSUt0b0ZLfG1vdmVLZXlDdHh8bW92ZVZlcnRleEFsb25nRGlyZWN0aW9ufG11bHRpUHJvZmlsZUJpcmFpbFN1cmZhY2V8bXV0ZXxuUGFydGljbGV8bmFtZUNvbW1hbmR8bmFtZUZpZWxkfG5hbWVzcGFjZXxuYW1lc3BhY2VJbmZvfG5ld1BhbmVsSXRlbXN8bmV3dG9ufG5vZGVDYXN0fG5vZGVJY29uQnV0dG9ufG5vZGVPdXRsaW5lcnxub2RlUHJlc2V0fG5vZGVUeXBlfG5vaXNlfG5vbkxpbmVhcnxub3JtYWxDb25zdHJhaW50fG5vcm1hbGl6ZXxudXJic0Jvb2xlYW58bnVyYnNDb3B5VVZTZXR8bnVyYnNDdWJlfG51cmJzRWRpdFVWfG51cmJzUGxhbmV8bnVyYnNTZWxlY3R8bnVyYnNTcXVhcmV8bnVyYnNUb1BvbHl8bnVyYnNUb1BvbHlnb25zUHJlZnxudXJic1RvU3ViZGl2fG51cmJzVG9TdWJkaXZQcmVmfG51cmJzVVZTZXR8bnVyYnNWaWV3RGlyZWN0aW9uVmVjdG9yfG9iakV4aXN0c3xvYmplY3RDZW50ZXJ8b2JqZWN0TGF5ZXJ8b2JqZWN0VHlwZXxvYmplY3RUeXBlVUl8b2Jzb2xldGVQcm9jfG9jZWFuTnVyYnNQcmV2aWV3UGxhbmV8b2Zmc2V0Q3VydmV8b2Zmc2V0Q3VydmVPblN1cmZhY2V8b2Zmc2V0U3VyZmFjZXxvcGVuR0xFeHRlbnNpb258b3Blbk1heWFQcmVmfG9wdGlvbk1lbnV8b3B0aW9uTWVudUdycHxvcHRpb25WYXJ8b3JiaXR8b3JiaXRDdHh8b3JpZW50Q29uc3RyYWludHxvdXRsaW5lckVkaXRvcnxvdXRsaW5lclBhbmVsfG92ZXJyaWRlTW9kaWZpZXJ8cGFpbnRFZmZlY3RzRGlzcGxheXxwYWlyQmxlbmR8cGFsZXR0ZVBvcnR8cGFuZUxheW91dHxwYW5lbHxwYW5lbENvbmZpZ3VyYXRpb258cGFuZWxIaXN0b3J5fHBhcmFtRGltQ29udGV4dHxwYXJhbURpbWVuc2lvbnxwYXJhbUxvY2F0b3J8cGFyZW50fHBhcmVudENvbnN0cmFpbnR8cGFydGljbGV8cGFydGljbGVFeGlzdHN8cGFydGljbGVJbnN0YW5jZXJ8cGFydGljbGVSZW5kZXJJbmZvfHBhcnRpdGlvbnxwYXN0ZUtleXxwYXRoQW5pbWF0aW9ufHBhdXNlfHBjbG9zZXxwZXJjZW50fHBlcmZvcm1hbmNlT3B0aW9uc3xwZnhzdHJva2VzfHBpY2tXYWxrfHBpY3R1cmV8cGl4ZWxNb3ZlfHBsYW5hclNyZnxwbGFuZXxwbGF5fHBsYXliYWNrT3B0aW9uc3xwbGF5Ymxhc3R8cGx1Z0F0dHJ8cGx1Z05vZGV8cGx1Z2luSW5mb3xwbHVnaW5SZXNvdXJjZVV0aWx8cG9pbnRDb25zdHJhaW50fHBvaW50Q3VydmVDb25zdHJhaW50fHBvaW50TGlnaHR8cG9pbnRNYXRyaXhNdWx0fHBvaW50T25DdXJ2ZXxwb2ludE9uU3VyZmFjZXxwb2ludFBvc2l0aW9ufHBvbGVWZWN0b3JDb25zdHJhaW50fHBvbHlBcHBlbmR8cG9seUFwcGVuZEZhY2V0Q3R4fHBvbHlBcHBlbmRWZXJ0ZXh8cG9seUF1dG9Qcm9qZWN0aW9ufHBvbHlBdmVyYWdlTm9ybWFsfHBvbHlBdmVyYWdlVmVydGV4fHBvbHlCZXZlbHxwb2x5QmxlbmRDb2xvcnxwb2x5QmxpbmREYXRhfHBvbHlCb29sT3B8cG9seUJyaWRnZUVkZ2V8cG9seUNhY2hlTW9uaXRvcnxwb2x5Q2hlY2t8cG9seUNoaXBPZmZ8cG9seUNsaXBib2FyZHxwb2x5Q2xvc2VCb3JkZXJ8cG9seUNvbGxhcHNlRWRnZXxwb2x5Q29sbGFwc2VGYWNldHxwb2x5Q29sb3JCbGluZERhdGF8cG9seUNvbG9yRGVsfHBvbHlDb2xvclBlclZlcnRleHxwb2x5Q29sb3JTZXR8cG9seUNvbXBhcmV8cG9seUNvbmV8cG9seUNvcHlVVnxwb2x5Q3JlYXNlfHBvbHlDcmVhc2VDdHh8cG9seUNyZWF0ZUZhY2V0fHBvbHlDcmVhdGVGYWNldEN0eHxwb2x5Q3ViZXxwb2x5Q3V0fHBvbHlDdXRDdHh8cG9seUN5bGluZGVyfHBvbHlDeWxpbmRyaWNhbFByb2plY3Rpb258cG9seURlbEVkZ2V8cG9seURlbEZhY2V0fHBvbHlEZWxWZXJ0ZXh8cG9seUR1cGxpY2F0ZUFuZENvbm5lY3R8cG9seUR1cGxpY2F0ZUVkZ2V8cG9seUVkaXRVVnxwb2x5RWRpdFVWU2hlbGx8cG9seUV2YWx1YXRlfHBvbHlFeHRydWRlRWRnZXxwb2x5RXh0cnVkZUZhY2V0fHBvbHlFeHRydWRlVmVydGV4fHBvbHlGbGlwRWRnZXxwb2x5RmxpcFVWfHBvbHlGb3JjZVVWfHBvbHlHZW9TYW1wbGVyfHBvbHlIZWxpeHxwb2x5SW5mb3xwb2x5SW5zdGFsbEFjdGlvbnxwb2x5TGF5b3V0VVZ8cG9seUxpc3RDb21wb25lbnRDb252ZXJzaW9ufHBvbHlNYXBDdXR8cG9seU1hcERlbHxwb2x5TWFwU2V3fHBvbHlNYXBTZXdNb3ZlfHBvbHlNZXJnZUVkZ2V8cG9seU1lcmdlRWRnZUN0eHxwb2x5TWVyZ2VGYWNldHxwb2x5TWVyZ2VGYWNldEN0eHxwb2x5TWVyZ2VVVnxwb2x5TWVyZ2VWZXJ0ZXh8cG9seU1pcnJvckZhY2V8cG9seU1vdmVFZGdlfHBvbHlNb3ZlRmFjZXR8cG9seU1vdmVGYWNldFVWfHBvbHlNb3ZlVVZ8cG9seU1vdmVWZXJ0ZXh8cG9seU5vcm1hbHxwb2x5Tm9ybWFsUGVyVmVydGV4fHBvbHlOb3JtYWxpemVVVnxwb2x5T3B0VXZzfHBvbHlPcHRpb25zfHBvbHlPdXRwdXR8cG9seVBpcGV8cG9seVBsYW5hclByb2plY3Rpb258cG9seVBsYW5lfHBvbHlQbGF0b25pY1NvbGlkfHBvbHlQb2tlfHBvbHlQcmltaXRpdmV8cG9seVByaXNtfHBvbHlQcm9qZWN0aW9ufHBvbHlQeXJhbWlkfHBvbHlRdWFkfHBvbHlRdWVyeUJsaW5kRGF0YXxwb2x5UmVkdWNlfHBvbHlTZWxlY3R8cG9seVNlbGVjdENvbnN0cmFpbnR8cG9seVNlbGVjdENvbnN0cmFpbnRNb25pdG9yfHBvbHlTZWxlY3RDdHh8cG9seVNlbGVjdEVkaXRDdHh8cG9seVNlcGFyYXRlfHBvbHlTZXRUb0ZhY2VOb3JtYWx8cG9seVNld0VkZ2V8cG9seVNob3J0ZXN0UGF0aEN0eHxwb2x5U21vb3RofHBvbHlTb2Z0RWRnZXxwb2x5U3BoZXJlfHBvbHlTcGhlcmljYWxQcm9qZWN0aW9ufHBvbHlTcGxpdHxwb2x5U3BsaXRDdHh8cG9seVNwbGl0RWRnZXxwb2x5U3BsaXRSaW5nfHBvbHlTcGxpdFZlcnRleHxwb2x5U3RyYWlnaHRlblVWQm9yZGVyfHBvbHlTdWJkaXZpZGVFZGdlfHBvbHlTdWJkaXZpZGVGYWNldHxwb2x5VG9TdWJkaXZ8cG9seVRvcnVzfHBvbHlUcmFuc2Zlcnxwb2x5VHJpYW5ndWxhdGV8cG9seVVWU2V0fHBvbHlVbml0ZXxwb2x5V2VkZ2VGYWNlfHBvcGVufHBvcHVwTWVudXxwb3NlfHBvd3xwcmVsb2FkUmVmRWR8cHJpbnR8cHJvZ3Jlc3NCYXJ8cHJvZ3Jlc3NXaW5kb3d8cHJvakZpbGVWaWV3ZXJ8cHJvamVjdEN1cnZlfHByb2plY3RUYW5nZW50fHByb2plY3Rpb25Db250ZXh0fHByb2plY3Rpb25NYW5pcHxwcm9tcHREaWFsb2d8cHJvcE1vZEN0eHxwcm9wTW92ZXxwc2RDaGFubmVsT3V0bGluZXJ8cHNkRWRpdFRleHR1cmVGaWxlfHBzZEV4cG9ydHxwc2RUZXh0dXJlRmlsZXxwdXRlbnZ8cHdkfHB5dGhvbnxxdWVyeVN1YmRpdnxxdWl0fHJhZF90b19kZWd8cmFkaWFsfHJhZGlvQnV0dG9ufHJhZGlvQnV0dG9uR3JwfHJhZGlvQ29sbGVjdGlvbnxyYWRpb01lbnVJdGVtQ29sbGVjdGlvbnxyYW1wQ29sb3JQb3J0fHJhbmR8cmFuZG9taXplRm9sbGljbGVzfHJhbmRzdGF0ZXxyYW5nZUNvbnRyb2x8cmVhZFRha2V8cmVidWlsZEN1cnZlfHJlYnVpbGRTdXJmYWNlfHJlY29yZEF0dHJ8cmVjb3JkRGV2aWNlfHJlZG98cmVmZXJlbmNlfHJlZmVyZW5jZUVkaXR8cmVmZXJlbmNlUXVlcnl8cmVmaW5lU3ViZGl2U2VsZWN0aW9uTGlzdHxyZWZyZXNofHJlZnJlc2hBRXxyZWdpc3RlclBsdWdpblJlc291cmNlfHJlaGFzaHxyZWxvYWRJbWFnZXxyZW1vdmVKb2ludHxyZW1vdmVNdWx0aUluc3RhbmNlfHJlbW92ZVBhbmVsQ2F0ZWdvcnl8cmVuYW1lfHJlbmFtZUF0dHJ8cmVuYW1lU2VsZWN0aW9uTGlzdHxyZW5hbWVVSXxyZW5kZXJ8cmVuZGVyR2xvYmFsc05vZGV8cmVuZGVySW5mb3xyZW5kZXJMYXllckJ1dHRvbnxyZW5kZXJMYXllclBhcmVudHxyZW5kZXJMYXllclBvc3RQcm9jZXNzfHJlbmRlckxheWVyVW5wYXJlbnR8cmVuZGVyTWFuaXB8cmVuZGVyUGFydGl0aW9ufHJlbmRlclF1YWxpdHlOb2RlfHJlbmRlclNldHRpbmdzfHJlbmRlclRodW1ibmFpbFVwZGF0ZXxyZW5kZXJXaW5kb3dFZGl0b3J8cmVuZGVyV2luZG93U2VsZWN0Q29udGV4dHxyZW5kZXJlcnxyZW9yZGVyfHJlb3JkZXJEZWZvcm1lcnN8cmVxdWlyZXN8cmVyb290fHJlc2FtcGxlRmx1aWR8cmVzZXRBRXxyZXNldFBmeFRvUG9seUNhbWVyYXxyZXNldFRvb2x8cmVzb2x1dGlvbk5vZGV8cmV0YXJnZXR8cmV2ZXJzZUN1cnZlfHJldmVyc2VTdXJmYWNlfHJldm9sdmV8cmdiX3RvX2hzdnxyaWdpZEJvZHl8cmlnaWRTb2x2ZXJ8cm9sbHxyb2xsQ3R4fHJvb3RPZnxyb3R8cm90YXRlfHJvdGF0aW9uSW50ZXJwb2xhdGlvbnxyb3VuZENvbnN0YW50UmFkaXVzfHJvd0NvbHVtbkxheW91dHxyb3dMYXlvdXR8cnVuVGltZUNvbW1hbmR8cnVudXB8c2FtcGxlSW1hZ2V8c2F2ZUFsbFNoZWx2ZXN8c2F2ZUF0dHJQcmVzZXR8c2F2ZUZsdWlkfHNhdmVJbWFnZXxzYXZlSW5pdGlhbFN0YXRlfHNhdmVNZW51fHNhdmVQcmVmT2JqZWN0c3xzYXZlUHJlZnN8c2F2ZVNoZWxmfHNhdmVUb29sU2V0dGluZ3N8c2NhbGV8c2NhbGVCcnVzaEJyaWdodG5lc3N8c2NhbGVDb21wb25lbnRzfHNjYWxlQ29uc3RyYWludHxzY2FsZUtleXxzY2FsZUtleUN0eHxzY2VuZUVkaXRvcnxzY2VuZVVJUmVwbGFjZW1lbnR8c2NtaHxzY3JpcHRDdHh8c2NyaXB0RWRpdG9ySW5mb3xzY3JpcHRKb2J8c2NyaXB0Tm9kZXxzY3JpcHRUYWJsZXxzY3JpcHRUb1NoZWxmfHNjcmlwdGVkUGFuZWx8c2NyaXB0ZWRQYW5lbFR5cGV8c2Nyb2xsRmllbGR8c2Nyb2xsTGF5b3V0fHNjdWxwdHxzZWFyY2hQYXRoQXJyYXl8c2VlZHxzZWxMb2FkU2V0dGluZ3N8c2VsZWN0fHNlbGVjdENvbnRleHR8c2VsZWN0Q3VydmVDVnxzZWxlY3RLZXl8c2VsZWN0S2V5Q3R4fHNlbGVjdEtleWZyYW1lUmVnaW9uQ3R4fHNlbGVjdE1vZGV8c2VsZWN0UHJlZnxzZWxlY3RQcmlvcml0eXxzZWxlY3RUeXBlfHNlbGVjdGVkTm9kZXN8c2VsZWN0aW9uQ29ubmVjdGlvbnxzZXBhcmF0b3J8c2V0QXR0cnxzZXRBdHRyRW51bVJlc291cmNlfHNldEF0dHJNYXBwaW5nfHNldEF0dHJOaWNlTmFtZVJlc291cmNlfHNldENvbnN0cmFpbnRSZXN0UG9zaXRpb258c2V0RGVmYXVsdFNoYWRpbmdHcm91cHxzZXREcml2ZW5LZXlmcmFtZXxzZXREeW5hbWljfHNldEVkaXRDdHh8c2V0RWRpdG9yfHNldEZsdWlkQXR0cnxzZXRGb2N1c3xzZXRJbmZpbml0eXxzZXRJbnB1dERldmljZU1hcHBpbmd8c2V0S2V5Q3R4fHNldEtleVBhdGh8c2V0S2V5ZnJhbWV8c2V0S2V5ZnJhbWVCbGVuZHNoYXBlVGFyZ2V0V3RzfHNldE1lbnVNb2RlfHNldE5vZGVOaWNlTmFtZVJlc291cmNlfHNldE5vZGVUeXBlRmxhZ3xzZXRQYXJlbnR8c2V0UGFydGljbGVBdHRyfHNldFBmeFRvUG9seUNhbWVyYXxzZXRQbHVnaW5SZXNvdXJjZXxzZXRQcm9qZWN0fHNldFN0YW1wRGVuc2l0eXxzZXRTdGFydHVwTWVzc2FnZXxzZXRTdGF0ZXxzZXRUb29sVG98c2V0VUlUZW1wbGF0ZXxzZXRYZm9ybU1hbmlwfHNldHN8c2hhZGluZ0Nvbm5lY3Rpb258c2hhZGluZ0dlb21ldHJ5UmVsQ3R4fHNoYWRpbmdMaWdodFJlbEN0eHxzaGFkaW5nTmV0d29ya0NvbXBhcmV8c2hhZGluZ05vZGV8c2hhcGVDb21wYXJlfHNoZWxmQnV0dG9ufHNoZWxmTGF5b3V0fHNoZWxmVGFiTGF5b3V0fHNoZWxsRmllbGR8c2hvcnROYW1lT2Z8c2hvd0hlbHB8c2hvd0hpZGRlbnxzaG93TWFuaXBDdHh8c2hvd1NlbGVjdGlvbkluVGl0bGV8c2hvd1NoYWRpbmdHcm91cEF0dHJFZGl0b3J8c2hvd1dpbmRvd3xzaWdufHNpbXBsaWZ5fHNpbnxzaW5nbGVQcm9maWxlQmlyYWlsU3VyZmFjZXxzaXplfHNpemVCeXRlc3xza2luQ2x1c3Rlcnxza2luUGVyY2VudHxzbW9vdGhDdXJ2ZXxzbW9vdGhUYW5nZW50U3VyZmFjZXxzbW9vdGhzdGVwfHNuYXAydG8yfHNuYXBLZXl8c25hcE1vZGV8c25hcFRvZ2V0aGVyQ3R4fHNuYXBzaG90fHNvZnR8c29mdE1vZHxzb2Z0TW9kQ3R4fHNvcnR8c291bmR8c291bmRDb250cm9sfHNvdXJjZXxzcGFjZUxvY2F0b3J8c3BoZXJlfHNwaHJhbmR8c3BvdExpZ2h0fHNwb3RMaWdodFByZXZpZXdQb3J0fHNwcmVhZFNoZWV0RWRpdG9yfHNwcmluZ3xzcXJ0fHNxdWFyZVN1cmZhY2V8c3J0Q29udGV4dHxzdGFja1RyYWNlfHN0YXJ0U3RyaW5nfHN0YXJ0c1dpdGh8c3RpdGNoQW5kRXhwbG9kZVNoZWxsfHN0aXRjaFN1cmZhY2V8c3RpdGNoU3VyZmFjZVBvaW50c3xzdHJjbXB8c3RyaW5nQXJyYXlDYXRlbmF0ZXxzdHJpbmdBcnJheUNvbnRhaW5zfHN0cmluZ0FycmF5Q291bnR8c3RyaW5nQXJyYXlJbnNlcnRBdEluZGV4fHN0cmluZ0FycmF5SW50ZXJzZWN0b3J8c3RyaW5nQXJyYXlSZW1vdmV8c3RyaW5nQXJyYXlSZW1vdmVBdEluZGV4fHN0cmluZ0FycmF5UmVtb3ZlRHVwbGljYXRlc3xzdHJpbmdBcnJheVJlbW92ZUV4YWN0fHN0cmluZ0FycmF5VG9TdHJpbmd8c3RyaW5nVG9TdHJpbmdBcnJheXxzdHJpcHxzdHJpcFByZWZpeEZyb21OYW1lfHN0cm9rZXxzdWJkQXV0b1Byb2plY3Rpb258c3ViZENsZWFuVG9wb2xvZ3l8c3ViZENvbGxhcHNlfHN1YmREdXBsaWNhdGVBbmRDb25uZWN0fHN1YmRFZGl0VVZ8c3ViZExpc3RDb21wb25lbnRDb252ZXJzaW9ufHN1YmRNYXBDdXR8c3ViZE1hcFNld01vdmV8c3ViZE1hdGNoVG9wb2xvZ3l8c3ViZE1pcnJvcnxzdWJkVG9CbGluZHxzdWJkVG9Qb2x5fHN1YmRUcmFuc2ZlclVWc1RvQ2FjaGV8c3ViZGl2fHN1YmRpdkNyZWFzZXxzdWJkaXZEaXNwbGF5U21vb3RobmVzc3xzdWJzdGl0dXRlfHN1YnN0aXR1dGVBbGxTdHJpbmd8c3Vic3RpdHV0ZUdlb21ldHJ5fHN1YnN0cmluZ3xzdXJmYWNlfHN1cmZhY2VTYW1wbGVyfHN1cmZhY2VTaGFkZXJMaXN0fHN3YXRjaERpc3BsYXlQb3J0fHN3aXRjaFRhYmxlfHN5bWJvbEJ1dHRvbnxzeW1ib2xDaGVja0JveHxzeXNGaWxlfHN5c3RlbXx0YWJMYXlvdXR8dGFufHRhbmdlbnRDb25zdHJhaW50fHRleExhdHRpY2VEZWZvcm1Db250ZXh0fHRleE1hbmlwQ29udGV4dHx0ZXhNb3ZlQ29udGV4dHx0ZXhNb3ZlVVZTaGVsbENvbnRleHR8dGV4Um90YXRlQ29udGV4dHx0ZXhTY2FsZUNvbnRleHR8dGV4U2VsZWN0Q29udGV4dHx0ZXhTZWxlY3RTaG9ydGVzdFBhdGhDdHh8dGV4U211ZGdlVVZDb250ZXh0fHRleFdpblRvb2xDdHh8dGV4dHx0ZXh0Q3VydmVzfHRleHRGaWVsZHx0ZXh0RmllbGRCdXR0b25HcnB8dGV4dEZpZWxkR3JwfHRleHRNYW5pcHx0ZXh0U2Nyb2xsTGlzdHx0ZXh0VG9TaGVsZnx0ZXh0dXJlRGlzcGxhY2VQbGFuZXx0ZXh0dXJlSGFpckNvbG9yfHRleHR1cmVQbGFjZW1lbnRDb250ZXh0fHRleHR1cmVXaW5kb3d8dGhyZWFkQ291bnR8dGhyZWVQb2ludEFyY0N0eHx0aW1lQ29udHJvbHx0aW1lUG9ydHx0aW1lclh8dG9OYXRpdmVQYXRofHRvZ2dsZXx0b2dnbGVBeGlzfHRvZ2dsZVdpbmRvd1Zpc2liaWxpdHl8dG9rZW5pemV8dG9rZW5pemVMaXN0fHRvbGVyYW5jZXx0b2xvd2VyfHRvb2xCdXR0b258dG9vbENvbGxlY3Rpb258dG9vbERyb3BwZWR8dG9vbEhhc09wdGlvbnN8dG9vbFByb3BlcnR5V2luZG93fHRvcnVzfHRvdXBwZXJ8dHJhY2V8dHJhY2t8dHJhY2tDdHh8dHJhbnNmZXJBdHRyaWJ1dGVzfHRyYW5zZm9ybUNvbXBhcmV8dHJhbnNmb3JtTGltaXRzfHRyYW5zbGF0b3J8dHJpbXx0cnVuY3x0cnVuY2F0ZUZsdWlkQ2FjaGV8dHJ1bmNhdGVIYWlyQ2FjaGV8dHVtYmxlfHR1bWJsZUN0eHx0dXJidWxlbmNlfHR3b1BvaW50QXJjQ3R4fHVpUmVzfHVpVGVtcGxhdGV8dW5hc3NpZ25JbnB1dERldmljZXx1bmRvfHVuZG9JbmZvfHVuZ3JvdXB8dW5pZm9ybXx1bml0fHVubG9hZFBsdWdpbnx1bnRhbmdsZVVWfHVudGl0bGVkRmlsZU5hbWV8dW50cmltfHVwQXhpc3x1cGRhdGVBRXx1c2VyQ3R4fHV2TGlua3x1dlNuYXBzaG90fHZhbGlkYXRlU2hlbGZOYW1lfHZlY3Rvcml6ZXx2aWV3MmRUb29sQ3R4fHZpZXdDYW1lcmF8dmlld0NsaXBQbGFuZXx2aWV3Rml0fHZpZXdIZWFkT258dmlld0xvb2tBdHx2aWV3TWFuaXB8dmlld1BsYWNlfHZpZXdTZXR8dmlzb3J8dm9sdW1lQXhpc3x2b3J0ZXh8d2FpdEN1cnNvcnx3YXJuaW5nfHdlYkJyb3dzZXJ8d2ViQnJvd3NlclByZWZzfHdoYXRJc3x3aW5kb3d8d2luZG93UHJlZnx3aXJlfHdpcmVDb250ZXh0fHdvcmtzcGFjZXx3cmlua2xlfHdyaW5rbGVDb250ZXh0fHdyaXRlVGFrZXx4Ym1MYW5nUGF0aExpc3R8eGZvcm0pXFxiLyxvcGVyYXRvcjpbL1xcK1srPV0/fC1bLT1dP3wmJnxcXHxcXHx8Wzw+XT18WypcXC8hPV09P3xbJV5dLyx7cGF0dGVybjovKF58W148XSk8KD8hPCkvLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXnxbXj5dKT4oPyE+KS8sbG9va2JlaGluZDohMH1dLHB1bmN0dWF0aW9uOi88PHw+PnxbLiw6Oz9cXFtcXF0oKXt9XS99LGUubGFuZ3VhZ2VzLm1lbC5jb2RlLmluc2lkZS5yZXN0PWUubGFuZ3VhZ2VzLm1lbH1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibWVsXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5taXphcj17Y29tbWVudDovOjouKy8sa2V5d29yZDovQHByb29mXFxifFxcYig/OmFjY29yZGluZ3xhZ2dyZWdhdGV8YWxsfGFuZHxhbnRvbnltfGFyZXxhc3xhc3NvY2lhdGl2aXR5fGFzc3VtZXxhc3ltbWV0cnl8YXR0cnxiZXxiZWdpbnxiZWluZ3xieXxjYW5jZWxlZHxjYXNlfGNhc2VzfGNsdXN0ZXJzP3xjb2hlcmVuY2V8Y29tbXV0YXRpdml0eXxjb21wYXRpYmlsaXR5fGNvbm5lY3RlZG5lc3N8Y29uc2lkZXJ8Y29uc2lzdGVuY3l8Y29uc3RydWN0b3JzfGNvbnRyYWRpY3Rpb258Y29ycmVjdG5lc3N8ZGVmfGRlZmZ1bmN8ZGVmaW5lfGRlZmluaXRpb25zP3xkZWZwcmVkfGRvfGRvZXN8ZXF1YWxzfGVuZHxlbnZpcm9ufGV4fGV4YWN0bHl8ZXhpc3RlbmNlfGZvcnxmcm9tfGZ1bmN8Z2l2ZW58aGVuY2V8aGVyZWJ5fGhvbGRzfGlkZW1wb3RlbmNlfGlkZW50aXR5fGlmZj98aW1wbGllc3xpbnZvbHV0aXZlbmVzc3xpcnJlZmxleGl2aXR5fGlzfGl0fGxldHxtZWFuc3xtb2RlfG5vbnxub3R8bm90YXRpb25zP3xub3d8b2Z8b3J8b3RoZXJ3aXNlfG92ZXJ8cGVyfHByZWR8cHJlZml4fHByb2plY3Rpdml0eXxwcm9vZnxwcm92aWRlZHxxdWF8cmVjb25zaWRlcnxyZWRlZmluZXxyZWR1Y2V8cmVkdWNpYmlsaXR5fHJlZmxleGl2aXR5fHJlZ2lzdHJhdGlvbnM/fHJlcXVpcmVtZW50c3xyZXNlcnZlfHNjaHxzY2hlbWVzP3xzZWN0aW9ufHNlbGVjdG9yfHNldHxzZXRob29kfHN0fHN0cnVjdHxzdWNofHN1cHBvc2V8c3ltbWV0cnl8c3lub255bXx0YWtlfHRoYXR8dGhlfHRoZW58dGhlb3JlbXM/fHRoZXNpc3x0aHVzfHRvfHRyYW5zaXRpdml0eXx1bmlxdWVuZXNzfHZvY2FidWxhcig/Onl8aWVzKXx3aGVufHdoZXJlfHdpdGh8d3J0KVxcYi8scGFyYW1ldGVyOntwYXR0ZXJuOi9cXCQoPzoxMHxcXGQpLyxhbGlhczpcInZhcmlhYmxlXCJ9LHZhcmlhYmxlOi9cXHcrKD89OikvLG51bWJlcjovKD86XFxifC0pXFxkK1xcYi8sb3BlcmF0b3I6L1xcLlxcLlxcLnwtPnwmfFxcLj89LyxwdW5jdHVhdGlvbjovXFwoI3wjXFwpfFssOjtcXFtcXF0oKXt9XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJtaXphclwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMubW9ua2V5PXtzdHJpbmc6L1wiW15cIlxcclxcbl0qXCIvLGNvbW1lbnQ6W3twYXR0ZXJuOi9eI1JlbVxccytbXFxzXFxTXSo/XiNFbmQvaW0sZ3JlZWR5OiEwfSx7cGF0dGVybjovJy4rLyxncmVlZHk6ITB9XSxwcmVwcm9jZXNzb3I6e3BhdHRlcm46LyheWyBcXHRdKikjLisvbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwiY29tbWVudFwifSxmdW5jdGlvbjovXFx3Kyg/PVxcKCkvLFwidHlwZS1jaGFyXCI6e3BhdHRlcm46LyhcXHcpWz8lIyRdLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwidmFyaWFibGVcIn0sbnVtYmVyOntwYXR0ZXJuOi8oKD86XFwuXFwuKT8pKD86KD86XFxifFxcQi1cXC4/fFxcQlxcLilcXGQrKD86KD8hXFwuXFwuKVxcLlxcZCopP3xcXCRbXFxkYS1mXSspL2ksbG9va2JlaGluZDohMH0sa2V5d29yZDovXFxiKD86Vm9pZHxTdHJpY3R8UHVibGljfFByaXZhdGV8UHJvcGVydHl8Qm9vbHxJbnR8RmxvYXR8U3RyaW5nfEFycmF5fE9iamVjdHxDb250aW51ZXxFeGl0fEltcG9ydHxFeHRlcm58TmV3fFNlbGZ8U3VwZXJ8VHJ5fENhdGNofEVhY2hpbnxUcnVlfEZhbHNlfEV4dGVuZHN8QWJzdHJhY3R8RmluYWx8U2VsZWN0fENhc2V8RGVmYXVsdHxDb25zdHxMb2NhbHxHbG9iYWx8RmllbGR8TWV0aG9kfEZ1bmN0aW9ufENsYXNzfEVuZHxJZnxUaGVufEVsc2V8RWxzZUlmfEVuZElmfFdoaWxlfFdlbmR8UmVwZWF0fFVudGlsfEZvcmV2ZXJ8Rm9yfFRvfFN0ZXB8TmV4dHxSZXR1cm58TW9kdWxlfEludGVyZmFjZXxJbXBsZW1lbnRzfElubGluZXxUaHJvd3xOdWxsKVxcYi9pLG9wZXJhdG9yOi9cXC5cXC58PFs9Pl0/fD49P3w6Pz18KD86WytcXC0qXFwvJn58XXxcXGIoPzpNb2R8U2hsfFNocilcXGIpPT98XFxiKD86QW5kfE5vdHxPcilcXGIvaSxwdW5jdHVhdGlvbjovWy4sOjsoKVxcW1xcXV0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwibW9ua2V5XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5uNGpzPWUubGFuZ3VhZ2VzLmV4dGVuZChcImphdmFzY3JpcHRcIix7a2V5d29yZDovXFxiKD86YW55fEFycmF5fGJvb2xlYW58YnJlYWt8Y2FzZXxjYXRjaHxjbGFzc3xjb25zdHxjb25zdHJ1Y3Rvcnxjb250aW51ZXxkZWJ1Z2dlcnxkZWNsYXJlfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZW51bXxleHBvcnR8ZXh0ZW5kc3xmYWxzZXxmaW5hbGx5fGZvcnxmcm9tfGZ1bmN0aW9ufGdldHxpZnxpbXBsZW1lbnRzfGltcG9ydHxpbnxpbnN0YW5jZW9mfGludGVyZmFjZXxsZXR8bW9kdWxlfG5ld3xudWxsfG51bWJlcnxwYWNrYWdlfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZXR1cm58c2V0fHN0YXRpY3xzdHJpbmd8c3VwZXJ8c3dpdGNofHRoaXN8dGhyb3d8dHJ1ZXx0cnl8dHlwZW9mfHZhcnx2b2lkfHdoaWxlfHdpdGh8eWllbGQpXFxiL30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcIm40anNcIixcImNvbnN0YW50XCIse2Fubm90YXRpb246e3BhdHRlcm46L0ArXFx3Ky8sYWxpYXM6XCJvcGVyYXRvclwifX0pLGUubGFuZ3VhZ2VzLm40anNkPWUubGFuZ3VhZ2VzLm40anN9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm40anNcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm5hc209e2NvbW1lbnQ6LzsuKiQvbSxzdHJpbmc6LyhbXCInYF0pKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sbGFiZWw6e3BhdHRlcm46LyheXFxzKilbQS1aYS16Ll8/JF1bXFx3Lj8kQH4jXSo6L20sbG9va2JlaGluZDohMCxhbGlhczpcImZ1bmN0aW9uXCJ9LGtleXdvcmQ6Wy9cXFs/QklUUyAoPzoxNnwzMnw2NClcXF0/Lyx7cGF0dGVybjovKF5cXHMqKXNlY3Rpb25cXHMqW2EtekEtWi5dKzo/L2ltLGxvb2tiZWhpbmQ6ITB9LC8oPzpleHRlcm58Z2xvYmFsKVteO1xcclxcbl0qL2ksLyg/OkNQVXxGTE9BVHxERUZBVUxUKS4qJC9tXSxyZWdpc3Rlcjp7cGF0dGVybjovXFxiKD86c3RcXGR8W3h5el1tbVxcZFxcZD98W2NkdF1yXFxkfHJcXGRcXGQ/W2J3ZF0/fFtlcl0/W2FiY2RdeHxbYWJjZF1baGxdfFtlcl0/KD86YnB8c3B8c2l8ZGkpfFtjZGVmZ3NdcylcXGIvaSxhbGlhczpcInZhcmlhYmxlXCJ9LG51bWJlcjovKD86XFxifCg/PVxcJCkpKD86MFtoeF1bXFxkYS1mXSpcXC4/W1xcZGEtZl0rKD86cFsrLV0/XFxkKyk/fFxcZFtcXGRhLWZdK1toeF18XFwkXFxkW1xcZGEtZl0qfDBbb3FdWzAtN10rfFswLTddK1tvcV18MFtieV1bMDFdK3xbMDFdK1tieV18MFtkdF1cXGQrfFxcZCpcXC4/XFxkKyg/OlxcLj9lWystXT9cXGQrKT9bZHRdPylcXGIvaSxvcGVyYXRvcjovW1xcW1xcXSorXFwtXFwvJTw+PSZ8JCFdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm5hc21cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm5naW54PWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2NvbW1lbnQ6e3BhdHRlcm46LyhefFteXCJ7XFxcXF0pIy4qLyxsb29rYmVoaW5kOiEwfSxrZXl3b3JkOi9cXGIoPzpDT05URU5UX3xET0NVTUVOVF98R0FURVdBWV98SFRUUF98SFRUUFN8aWZfbm90X2VtcHR5fFBBVEhffFFVRVJZX3xSRURJUkVDVF98UkVNT1RFX3xSRVFVRVNUX3xTQ0dJfFNDUklQVF98U0VSVkVSX3xodHRwfGV2ZW50c3xhY2NlcHRfbXV0ZXh8YWNjZXB0X211dGV4X2RlbGF5fGFjY2Vzc19sb2d8YWRkX2FmdGVyX2JvZHl8YWRkX2JlZm9yZV9ib2R5fGFkZF9oZWFkZXJ8YWRkaXRpb25fdHlwZXN8YWlvfGFsaWFzfGFsbG93fGFuY2llbnRfYnJvd3NlcnxhbmNpZW50X2Jyb3dzZXJfdmFsdWV8YXV0aHxhdXRoX2Jhc2ljfGF1dGhfYmFzaWNfdXNlcl9maWxlfGF1dGhfaHR0cHxhdXRoX2h0dHBfaGVhZGVyfGF1dGhfaHR0cF90aW1lb3V0fGF1dG9pbmRleHxhdXRvaW5kZXhfZXhhY3Rfc2l6ZXxhdXRvaW5kZXhfbG9jYWx0aW1lfGJyZWFrfGNoYXJzZXR8Y2hhcnNldF9tYXB8Y2hhcnNldF90eXBlc3xjaHVua2VkX3RyYW5zZmVyX2VuY29kaW5nfGNsaWVudF9ib2R5X2J1ZmZlcl9zaXplfGNsaWVudF9ib2R5X2luX2ZpbGVfb25seXxjbGllbnRfYm9keV9pbl9zaW5nbGVfYnVmZmVyfGNsaWVudF9ib2R5X3RlbXBfcGF0aHxjbGllbnRfYm9keV90aW1lb3V0fGNsaWVudF9oZWFkZXJfYnVmZmVyX3NpemV8Y2xpZW50X2hlYWRlcl90aW1lb3V0fGNsaWVudF9tYXhfYm9keV9zaXplfGNvbm5lY3Rpb25fcG9vbF9zaXplfGNyZWF0ZV9mdWxsX3B1dF9wYXRofGRhZW1vbnxkYXZfYWNjZXNzfGRhdl9tZXRob2RzfGRlYnVnX2Nvbm5lY3Rpb258ZGVidWdfcG9pbnRzfGRlZmF1bHRfdHlwZXxkZW55fGRldnBvbGxfY2hhbmdlc3xkZXZwb2xsX2V2ZW50c3xkaXJlY3Rpb3xkaXJlY3Rpb19hbGlnbm1lbnR8ZGlzYWJsZV9zeW1saW5rc3xlbXB0eV9naWZ8ZW52fGVwb2xsX2V2ZW50c3xlcnJvcl9sb2d8ZXJyb3JfcGFnZXxleHBpcmVzfGZhc3RjZ2lfYnVmZmVyX3NpemV8ZmFzdGNnaV9idWZmZXJzfGZhc3RjZ2lfYnVzeV9idWZmZXJzX3NpemV8ZmFzdGNnaV9jYWNoZXxmYXN0Y2dpX2NhY2hlX2J5cGFzc3xmYXN0Y2dpX2NhY2hlX2tleXxmYXN0Y2dpX2NhY2hlX2xvY2t8ZmFzdGNnaV9jYWNoZV9sb2NrX3RpbWVvdXR8ZmFzdGNnaV9jYWNoZV9tZXRob2RzfGZhc3RjZ2lfY2FjaGVfbWluX3VzZXN8ZmFzdGNnaV9jYWNoZV9wYXRofGZhc3RjZ2lfY2FjaGVfcHVyZ2V8ZmFzdGNnaV9jYWNoZV91c2Vfc3RhbGV8ZmFzdGNnaV9jYWNoZV92YWxpZHxmYXN0Y2dpX2Nvbm5lY3RfdGltZW91dHxmYXN0Y2dpX2hpZGVfaGVhZGVyfGZhc3RjZ2lfaWdub3JlX2NsaWVudF9hYm9ydHxmYXN0Y2dpX2lnbm9yZV9oZWFkZXJzfGZhc3RjZ2lfaW5kZXh8ZmFzdGNnaV9pbnRlcmNlcHRfZXJyb3JzfGZhc3RjZ2lfa2VlcF9jb25ufGZhc3RjZ2lfbWF4X3RlbXBfZmlsZV9zaXplfGZhc3RjZ2lfbmV4dF91cHN0cmVhbXxmYXN0Y2dpX25vX2NhY2hlfGZhc3RjZ2lfcGFyYW18ZmFzdGNnaV9wYXNzfGZhc3RjZ2lfcGFzc19oZWFkZXJ8ZmFzdGNnaV9yZWFkX3RpbWVvdXR8ZmFzdGNnaV9yZWRpcmVjdF9lcnJvcnN8ZmFzdGNnaV9zZW5kX3RpbWVvdXR8ZmFzdGNnaV9zcGxpdF9wYXRoX2luZm98ZmFzdGNnaV9zdG9yZXxmYXN0Y2dpX3N0b3JlX2FjY2Vzc3xmYXN0Y2dpX3RlbXBfZmlsZV93cml0ZV9zaXplfGZhc3RjZ2lfdGVtcF9wYXRofGZsdnxnZW98Z2VvaXBfY2l0eXxnZW9pcF9jb3VudHJ5fGdvb2dsZV9wZXJmdG9vbHNfcHJvZmlsZXN8Z3ppcHxnemlwX2J1ZmZlcnN8Z3ppcF9jb21wX2xldmVsfGd6aXBfZGlzYWJsZXxnemlwX2h0dHBfdmVyc2lvbnxnemlwX21pbl9sZW5ndGh8Z3ppcF9wcm94aWVkfGd6aXBfc3RhdGljfGd6aXBfdHlwZXN8Z3ppcF92YXJ5fGlmfGlmX21vZGlmaWVkX3NpbmNlfGlnbm9yZV9pbnZhbGlkX2hlYWRlcnN8aW1hZ2VfZmlsdGVyfGltYWdlX2ZpbHRlcl9idWZmZXJ8aW1hZ2VfZmlsdGVyX2pwZWdfcXVhbGl0eXxpbWFnZV9maWx0ZXJfc2hhcnBlbnxpbWFnZV9maWx0ZXJfdHJhbnNwYXJlbmN5fGltYXBfY2FwYWJpbGl0aWVzfGltYXBfY2xpZW50X2J1ZmZlcnxpbmNsdWRlfGluZGV4fGludGVybmFsfGlwX2hhc2h8a2VlcGFsaXZlfGtlZXBhbGl2ZV9kaXNhYmxlfGtlZXBhbGl2ZV9yZXF1ZXN0c3xrZWVwYWxpdmVfdGltZW91dHxrcXVldWVfY2hhbmdlc3xrcXVldWVfZXZlbnRzfGxhcmdlX2NsaWVudF9oZWFkZXJfYnVmZmVyc3xsaW1pdF9jb25ufGxpbWl0X2Nvbm5fbG9nX2xldmVsfGxpbWl0X2Nvbm5fem9uZXxsaW1pdF9leGNlcHR8bGltaXRfcmF0ZXxsaW1pdF9yYXRlX2FmdGVyfGxpbWl0X3JlcXxsaW1pdF9yZXFfbG9nX2xldmVsfGxpbWl0X3JlcV96b25lfGxpbWl0X3pvbmV8bGluZ2VyaW5nX2Nsb3NlfGxpbmdlcmluZ190aW1lfGxpbmdlcmluZ190aW1lb3V0fGxpc3Rlbnxsb2NhdGlvbnxsb2NrX2ZpbGV8bG9nX2Zvcm1hdHxsb2dfZm9ybWF0X2NvbWJpbmVkfGxvZ19ub3RfZm91bmR8bG9nX3N1YnJlcXVlc3R8bWFwfG1hcF9oYXNoX2J1Y2tldF9zaXplfG1hcF9oYXNoX21heF9zaXplfG1hc3Rlcl9wcm9jZXNzfG1heF9yYW5nZXN8bWVtY2FjaGVkX2J1ZmZlcl9zaXplfG1lbWNhY2hlZF9jb25uZWN0X3RpbWVvdXR8bWVtY2FjaGVkX25leHRfdXBzdHJlYW18bWVtY2FjaGVkX3Bhc3N8bWVtY2FjaGVkX3JlYWRfdGltZW91dHxtZW1jYWNoZWRfc2VuZF90aW1lb3V0fG1lcmdlX3NsYXNoZXN8bWluX2RlbGV0ZV9kZXB0aHxtb2Rlcm5fYnJvd3Nlcnxtb2Rlcm5fYnJvd3Nlcl92YWx1ZXxtcDR8bXA0X2J1ZmZlcl9zaXplfG1wNF9tYXhfYnVmZmVyX3NpemV8bXNpZV9wYWRkaW5nfG1zaWVfcmVmcmVzaHxtdWx0aV9hY2NlcHR8b3Blbl9maWxlX2NhY2hlfG9wZW5fZmlsZV9jYWNoZV9lcnJvcnN8b3Blbl9maWxlX2NhY2hlX21pbl91c2VzfG9wZW5fZmlsZV9jYWNoZV92YWxpZHxvcGVuX2xvZ19maWxlX2NhY2hlfG9wdGltaXplX3NlcnZlcl9uYW1lc3xvdmVycmlkZV9jaGFyc2V0fHBjcmVfaml0fHBlcmx8cGVybF9tb2R1bGVzfHBlcmxfcmVxdWlyZXxwZXJsX3NldHxwaWR8cG9wM19hdXRofHBvcDNfY2FwYWJpbGl0aWVzfHBvcnRfaW5fcmVkaXJlY3R8cG9zdF9hY3Rpb258cG9zdHBvbmVfb3V0cHV0fHByb3RvY29sfHByb3h5fHByb3h5X2J1ZmZlcnxwcm94eV9idWZmZXJfc2l6ZXxwcm94eV9idWZmZXJpbmd8cHJveHlfYnVmZmVyc3xwcm94eV9idXN5X2J1ZmZlcnNfc2l6ZXxwcm94eV9jYWNoZXxwcm94eV9jYWNoZV9ieXBhc3N8cHJveHlfY2FjaGVfa2V5fHByb3h5X2NhY2hlX2xvY2t8cHJveHlfY2FjaGVfbG9ja190aW1lb3V0fHByb3h5X2NhY2hlX21ldGhvZHN8cHJveHlfY2FjaGVfbWluX3VzZXN8cHJveHlfY2FjaGVfcGF0aHxwcm94eV9jYWNoZV91c2Vfc3RhbGV8cHJveHlfY2FjaGVfdmFsaWR8cHJveHlfY29ubmVjdF90aW1lb3V0fHByb3h5X2Nvb2tpZV9kb21haW58cHJveHlfY29va2llX3BhdGh8cHJveHlfaGVhZGVyc19oYXNoX2J1Y2tldF9zaXplfHByb3h5X2hlYWRlcnNfaGFzaF9tYXhfc2l6ZXxwcm94eV9oaWRlX2hlYWRlcnxwcm94eV9odHRwX3ZlcnNpb258cHJveHlfaWdub3JlX2NsaWVudF9hYm9ydHxwcm94eV9pZ25vcmVfaGVhZGVyc3xwcm94eV9pbnRlcmNlcHRfZXJyb3JzfHByb3h5X21heF90ZW1wX2ZpbGVfc2l6ZXxwcm94eV9tZXRob2R8cHJveHlfbmV4dF91cHN0cmVhbXxwcm94eV9ub19jYWNoZXxwcm94eV9wYXNzfHByb3h5X3Bhc3NfZXJyb3JfbWVzc2FnZXxwcm94eV9wYXNzX2hlYWRlcnxwcm94eV9wYXNzX3JlcXVlc3RfYm9keXxwcm94eV9wYXNzX3JlcXVlc3RfaGVhZGVyc3xwcm94eV9yZWFkX3RpbWVvdXR8cHJveHlfcmVkaXJlY3R8cHJveHlfcmVkaXJlY3RfZXJyb3JzfHByb3h5X3NlbmRfbG93YXR8cHJveHlfc2VuZF90aW1lb3V0fHByb3h5X3NldF9ib2R5fHByb3h5X3NldF9oZWFkZXJ8cHJveHlfc3NsX3Nlc3Npb25fcmV1c2V8cHJveHlfc3RvcmV8cHJveHlfc3RvcmVfYWNjZXNzfHByb3h5X3RlbXBfZmlsZV93cml0ZV9zaXplfHByb3h5X3RlbXBfcGF0aHxwcm94eV90aW1lb3V0fHByb3h5X3Vwc3RyZWFtX2ZhaWxfdGltZW91dHxwcm94eV91cHN0cmVhbV9tYXhfZmFpbHN8cmFuZG9tX2luZGV4fHJlYWRfYWhlYWR8cmVhbF9pcF9oZWFkZXJ8cmVjdXJzaXZlX2Vycm9yX3BhZ2VzfHJlcXVlc3RfcG9vbF9zaXplfHJlc2V0X3RpbWVkb3V0X2Nvbm5lY3Rpb258cmVzb2x2ZXJ8cmVzb2x2ZXJfdGltZW91dHxyZXR1cm58cmV3cml0ZXxyb290fHJ0c2lnX292ZXJmbG93X2V2ZW50c3xydHNpZ19vdmVyZmxvd190ZXN0fHJ0c2lnX292ZXJmbG93X3RocmVzaG9sZHxydHNpZ19zaWdub3xzYXRpc2Z5fHNhdGlzZnlfYW55fHNlY3VyZV9saW5rX3NlY3JldHxzZW5kX2xvd2F0fHNlbmRfdGltZW91dHxzZW5kZmlsZXxzZW5kZmlsZV9tYXhfY2h1bmt8c2VydmVyfHNlcnZlcl9uYW1lfHNlcnZlcl9uYW1lX2luX3JlZGlyZWN0fHNlcnZlcl9uYW1lc19oYXNoX2J1Y2tldF9zaXplfHNlcnZlcl9uYW1lc19oYXNoX21heF9zaXplfHNlcnZlcl90b2tlbnN8c2V0fHNldF9yZWFsX2lwX2Zyb218c210cF9hdXRofHNtdHBfY2FwYWJpbGl0aWVzfHNvX2tlZXBhbGl2ZXxzb3VyY2VfY2hhcnNldHxzcGxpdF9jbGllbnRzfHNzaXxzc2lfc2lsZW50X2Vycm9yc3xzc2lfdHlwZXN8c3NpX3ZhbHVlX2xlbmd0aHxzc2x8c3NsX2NlcnRpZmljYXRlfHNzbF9jZXJ0aWZpY2F0ZV9rZXl8c3NsX2NpcGhlcnN8c3NsX2NsaWVudF9jZXJ0aWZpY2F0ZXxzc2xfY3JsfHNzbF9kaHBhcmFtfHNzbF9lbmdpbmV8c3NsX3ByZWZlcl9zZXJ2ZXJfY2lwaGVyc3xzc2xfcHJvdG9jb2xzfHNzbF9zZXNzaW9uX2NhY2hlfHNzbF9zZXNzaW9uX3RpbWVvdXR8c3NsX3ZlcmlmeV9jbGllbnR8c3NsX3ZlcmlmeV9kZXB0aHxzdGFydHRsc3xzdHViX3N0YXR1c3xzdWJfZmlsdGVyfHN1Yl9maWx0ZXJfb25jZXxzdWJfZmlsdGVyX3R5cGVzfHRjcF9ub2RlbGF5fHRjcF9ub3B1c2h8dGltZW91dHx0aW1lcl9yZXNvbHV0aW9ufHRyeV9maWxlc3x0eXBlc3x0eXBlc19oYXNoX2J1Y2tldF9zaXplfHR5cGVzX2hhc2hfbWF4X3NpemV8dW5kZXJzY29yZXNfaW5faGVhZGVyc3x1bmluaXRpYWxpemVkX3ZhcmlhYmxlX3dhcm58dXBzdHJlYW18dXNlfHVzZXJ8dXNlcmlkfHVzZXJpZF9kb21haW58dXNlcmlkX2V4cGlyZXN8dXNlcmlkX25hbWV8dXNlcmlkX3AzcHx1c2VyaWRfcGF0aHx1c2VyaWRfc2VydmljZXx2YWxpZF9yZWZlcmVyc3x2YXJpYWJsZXNfaGFzaF9idWNrZXRfc2l6ZXx2YXJpYWJsZXNfaGFzaF9tYXhfc2l6ZXx3b3JrZXJfY29ubmVjdGlvbnN8d29ya2VyX2NwdV9hZmZpbml0eXx3b3JrZXJfcHJpb3JpdHl8d29ya2VyX3Byb2Nlc3Nlc3x3b3JrZXJfcmxpbWl0X2NvcmV8d29ya2VyX3JsaW1pdF9ub2ZpbGV8d29ya2VyX3JsaW1pdF9zaWdwZW5kaW5nfHdvcmtpbmdfZGlyZWN0b3J5fHhjbGllbnR8eG1sX2VudGl0aWVzfHhzbHRfZW50aXRpZXN8eHNsdF9zdHlsZXNoZWV0fHhzbHRfdHlwZXMpXFxiL2l9KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJuZ2lueFwiLFwia2V5d29yZFwiLHt2YXJpYWJsZTovXFwkW2Etel9dKy9pfSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cIm5naW54XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5uaW09e2NvbW1lbnQ6LyMuKi8sc3RyaW5nOntwYXR0ZXJuOi8oPzooPzpcXGIoPyFcXGQpKD86XFx3fFxcXFx4WzgtOWEtZkEtRl1bMC05YS1mQS1GXSkrKT8oPzpcIlwiXCJbXFxzXFxTXSo/XCJcIlwiKD8hXCIpfFwiKD86XFxcXFtcXHNcXFNdfFwiXCJ8W15cIlxcXFxdKSpcIil8Jyg/OlxcXFwoPzpcXGQrfHhbXFxkYS1mQS1GXXsyfXwuKXxbXiddKScpLyxncmVlZHk6ITB9LG51bWJlcjovXFxiKD86MFt4WG9PYkJdW1xcZGEtZkEtRl9dK3xcXGRbXFxkX10qKD86KD8hXFwuXFwuKVxcLltcXGRfXSopPyg/OltlRV1bKy1dP1xcZFtcXGRfXSopPykoPzonP1tpdWZdXFxkKik/LyxrZXl3b3JkOi9cXGIoPzphZGRyfGFzfGFzbXxhdG9taWN8YmluZHxibG9ja3xicmVha3xjYXNlfGNhc3R8Y29uY2VwdHxjb25zdHxjb250aW51ZXxjb252ZXJ0ZXJ8ZGVmZXJ8ZGlzY2FyZHxkaXN0aW5jdHxkb3xlbGlmfGVsc2V8ZW5kfGVudW18ZXhjZXB0fGV4cG9ydHxmaW5hbGx5fGZvcnxmcm9tfGZ1bmN8Z2VuZXJpY3xpZnxpbXBvcnR8aW5jbHVkZXxpbnRlcmZhY2V8aXRlcmF0b3J8bGV0fG1hY3JvfG1ldGhvZHxtaXhpbnxuaWx8b2JqZWN0fG91dHxwcm9jfHB0cnxyYWlzZXxyZWZ8cmV0dXJufHN0YXRpY3x0ZW1wbGF0ZXx0cnl8dHVwbGV8dHlwZXx1c2luZ3x2YXJ8d2hlbnx3aGlsZXx3aXRofHdpdGhvdXR8eWllbGQpXFxiLyxmdW5jdGlvbjp7cGF0dGVybjovKD86KD8hXFxkKSg/Olxcd3xcXFxceFs4LTlhLWZBLUZdWzAtOWEtZkEtRl0pK3xgW15gXFxyXFxuXStgKVxcKj8oPzpcXFtbXlxcXV0rXFxdKT8oPz1cXHMqXFwoKS8saW5zaWRlOntvcGVyYXRvcjovXFwqJC99fSxpZ25vcmU6e3BhdHRlcm46L2BbXmBcXHJcXG5dK2AvLGluc2lkZTp7cHVuY3R1YXRpb246L2AvfX0sb3BlcmF0b3I6e3BhdHRlcm46LyhefFsoe1xcW10oPz1cXC5cXC4pfCg/IVsoe1xcW11cXC4pLikoPzooPzpbPStcXC0qXFwvPD5AJH4mJXwhP146XFxcXF18XFwuXFwufFxcLig/IVspfVxcXV0pKSt8XFxiKD86YW5kfGRpdnxvZnxvcnxpbnxpc3xpc25vdHxtb2R8bm90fG5vdGlufHNobHxzaHJ8eG9yKVxcYikvbSxsb29rYmVoaW5kOiEwfSxwdW5jdHVhdGlvbjovWyh7XFxbXVxcLnxcXC5bKX1cXF1dfFtgKCl7fVxcW1xcXSw6XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJuaW1cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm5peD17Y29tbWVudDovXFwvXFwqW1xcc1xcU10qP1xcKlxcL3wjLiovLHN0cmluZzp7cGF0dGVybjovXCIoPzpbXlwiXFxcXF18XFxcXFtcXHNcXFNdKSpcInwnJyg/Oig/IScnKVtcXHNcXFNdfCcnKD86J3xcXFxcfFxcJFxceykpKicnLyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOntwYXR0ZXJuOi8oXnwoPzpefCg/IScnKS4pW15cXFxcXSlcXCRcXHsoPzpbXn1dfFxce1tefV0qXFx9KSp9Lyxsb29rYmVoaW5kOiEwLGluc2lkZTp7YW50aXF1b3RhdGlvbjp7cGF0dGVybjovXlxcJCg/PVxceykvLGFsaWFzOlwidmFyaWFibGVcIn19fX19LHVybDpbL1xcYig/OlthLXpdezMsN306XFwvXFwvKVtcXHdcXC0rJX5cXC8uOiM9PyZdKy8se3BhdHRlcm46LyhbXlxcL10pKD86W1xcd1xcLSslfi46Iz0/Jl0qKD8hXFwvXFwvKVtcXHdcXC0rJX5cXC8uOiM9PyZdKT8oPyFcXC9cXC8pXFwvW1xcd1xcLSslflxcLy46Iz0/Jl0qLyxsb29rYmVoaW5kOiEwfV0sYW50aXF1b3RhdGlvbjp7cGF0dGVybjovXFwkKD89XFx7KS8sYWxpYXM6XCJ2YXJpYWJsZVwifSxudW1iZXI6L1xcYlxcZCtcXGIvLGtleXdvcmQ6L1xcYig/OmFzc2VydHxidWlsdGluc3xlbHNlfGlmfGlufGluaGVyaXR8bGV0fG51bGx8b3J8dGhlbnx3aXRoKVxcYi8sZnVuY3Rpb246L1xcYig/OmFib3J0fGFkZHxhbGx8YW55fGF0dHJOYW1lc3xhdHRyVmFsdWVzfGJhc2VOYW1lT2Z8Y29tcGFyZVZlcnNpb25zfGNvbmNhdExpc3RzfGN1cnJlbnRTeXN0ZW18ZGVlcFNlcXxkZXJpdmF0aW9ufGRpck9mfGRpdnxlbGVtKD86QXQpP3xmZXRjaCg/OnVybHxUYXJiYWxsKXxmaWx0ZXIoPzpTb3VyY2UpP3xmcm9tSlNPTnxnZW5MaXN0fGdldEF0dHJ8Z2V0RW52fGhhc0F0dHJ8aGFzaFN0cmluZ3xoZWFkfGltcG9ydHxpbnRlcnNlY3RBdHRyc3xpcyg/OkF0dHJzfEJvb2x8RnVuY3Rpb258SW50fExpc3R8TnVsbHxTdHJpbmcpfGxlbmd0aHxsZXNzVGhhbnxsaXN0VG9BdHRyc3xtYXB8bXVsfHBhcnNlRHJ2TmFtZXxwYXRoRXhpc3RzfHJlYWQoPzpEaXJ8RmlsZSl8cmVtb3ZlQXR0cnN8cmVwbGFjZVN0cmluZ3N8c2VxfHNvcnR8c3RyaW5nTGVuZ3RofHN1Yig/OnN0cmluZyk/fHRhaWx8dGhyb3d8dG8oPzpGaWxlfEpTT058UGF0aHxTdHJpbmd8WE1MKXx0cmFjZXx0eXBlT2YpXFxifFxcYmZvbGRsJ1xcQi8sYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvLG9wZXJhdG9yOi9bPSE8Pl09P3xcXCtcXCs/fFxcfFxcfHwmJnxcXC9cXC98LT4/fFs/QF0vLHB1bmN0dWF0aW9uOi9be30oKVtcXF0uLDo7XS99LGUubGFuZ3VhZ2VzLm5peC5zdHJpbmcuaW5zaWRlLmludGVycG9sYXRpb24uaW5zaWRlLnJlc3Q9ZS5sYW5ndWFnZXMubml4fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJuaXhcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm5zaXM9e2NvbW1lbnQ6e3BhdHRlcm46LyhefFteXFxcXF0pKFxcL1xcKltcXHNcXFNdKj9cXCpcXC98WyM7XS4qKS8sbG9va2JlaGluZDohMH0sc3RyaW5nOntwYXR0ZXJuOi8oXCJ8JykoPzpcXFxcLnwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITB9LGtleXdvcmQ6e3BhdHRlcm46LyheXFxzKikoPzpBYm9ydHxBZGQoPzpCcmFuZGluZ0ltYWdlfFNpemUpfEFkdlNwbGFzaHxBbGxvdyg/OlJvb3REaXJJbnN0YWxsfFNraXBGaWxlcyl8QXV0b0Nsb3NlV2luZG93fEJhbm5lcnxCRyg/OkZvbnR8R3JhZGllbnR8SW1hZ2UpfEJyYW5kaW5nVGV4dHxCcmluZ1RvRnJvbnR8Q2FsbCg/Okluc3RETEwpP3xDYXB0aW9ufENoYW5nZVVJfENoZWNrQml0bWFwfENsZWFyRXJyb3JzfENvbXBsZXRlZFRleHR8Q29tcG9uZW50VGV4dHxDb3B5RmlsZXN8Q1JDQ2hlY2t8Q3JlYXRlKD86RGlyZWN0b3J5fEZvbnR8U2hvcnRDdXQpfERlbGV0ZSg/OklOSVNlY3xJTklTdHJ8UmVnS2V5fFJlZ1ZhbHVlKT98RGV0YWlsKD86UHJpbnR8c0J1dHRvblRleHQpfERpYWxlcnxEaXIoPzpUZXh0fFZhcnxWZXJpZnkpfEVuYWJsZVdpbmRvd3xFbnVtKD86UmVnS2V5fFJlZ1ZhbHVlKXxFeGNofEV4ZWMoPzpTaGVsbCg/OldhaXQpP3xXYWl0KT98RXhwYW5kRW52U3RyaW5nc3xGaWxlKD86QnVmU2l6ZXxDbG9zZXxFcnJvclRleHR8T3BlbnxSZWFkfFJlYWRCeXRlfFJlYWRVVEYxNkxFfFJlYWRXb3JkfFdyaXRlVVRGMTZMRXxTZWVrfFdyaXRlfFdyaXRlQnl0ZXxXcml0ZVdvcmQpP3xGaW5kKD86Q2xvc2V8Rmlyc3R8TmV4dHxXaW5kb3cpfEZsdXNoSU5JfEdldCg/OkN1ckluc3RUeXBlfEN1cnJlbnRBZGRyZXNzfERsZ0l0ZW18RExMVmVyc2lvbig/OkxvY2FsKT98RXJyb3JMZXZlbHxGaWxlVGltZSg/OkxvY2FsKT98RnVsbFBhdGhOYW1lfEZ1bmN0aW9uKD86QWRkcmVzc3xFbmQpP3xJbnN0RGlyRXJyb3J8TGFiZWxBZGRyZXNzfFRlbXBGaWxlTmFtZSl8R290b3xIaWRlV2luZG93fEljb258SWYoPzpBYm9ydHxFcnJvcnN8RmlsZUV4aXN0c3xSZWJvb3RGbGFnfFNpbGVudCl8SW5pdFBsdWdpbnNEaXJ8SW5zdGFsbCg/OkJ1dHRvblRleHR8Q29sb3JzfERpcig/OlJlZ0tleSk/KXxJbnN0UHJvZ3Jlc3NGbGFnc3xJbnN0KD86VHlwZSg/OkdldFRleHR8U2V0VGV4dCk/KXxJbnQoPzo2NHxQdHIpP0NtcFU/fEludCg/OjY0KT9GbXR8SW50KD86UHRyKT9PcHxJc1dpbmRvd3xMYW5nKD86RExMfFN0cmluZyl8TGljZW5zZSg/OkJrQ29sb3J8RGF0YXxGb3JjZVNlbGVjdGlvbnxMYW5nU3RyaW5nfFRleHQpfExvYWRMYW5ndWFnZUZpbGV8TG9ja1dpbmRvd3xMb2coPzpTZXR8VGV4dCl8TWFuaWZlc3QoPzpEUElBd2FyZXxTdXBwb3J0ZWRPUyl8TWF0aHxNZXNzYWdlQm94fE1pc2NCdXR0b25UZXh0fE5hbWV8Tm9wfG5zKD86RGlhbG9nc3xFeGVjKXxOU0lTZGx8T3V0RmlsZXxQYWdlKD86Q2FsbGJhY2tzKT98UEUoPzpEbGxDaGFyYWN0ZXJpc3RpY3N8U3Vic3lzVmVyKXxQb3B8UHVzaHxRdWl0fFJlYWQoPzpFbnZTdHJ8SU5JU3RyfFJlZ0RXT1JEfFJlZ1N0cil8UmVib290fFJlZ0RMTHxSZW5hbWV8UmVxdWVzdEV4ZWN1dGlvbkxldmVsfFJlc2VydmVGaWxlfFJldHVybnxSTURpcnxTZWFyY2hQYXRofFNlY3Rpb24oPzpFbmR8R2V0RmxhZ3N8R2V0SW5zdFR5cGVzfEdldFNpemV8R2V0VGV4dHxHcm91cHxJbnxTZXRGbGFnc3xTZXRJbnN0VHlwZXN8U2V0U2l6ZXxTZXRUZXh0KT98U2VuZE1lc3NhZ2V8U2V0KD86QXV0b0Nsb3NlfEJyYW5kaW5nSW1hZ2V8Q29tcHJlc3N8Q29tcHJlc3Nvcig/OkRpY3RTaXplKT98Q3RsQ29sb3JzfEN1ckluc3RUeXBlfERhdGFibG9ja09wdGltaXplfERhdGVTYXZlfERldGFpbHMoPzpQcmludHxWaWV3KXxFcnJvckxldmVsfEVycm9yc3xGaWxlQXR0cmlidXRlc3xGb250fE91dFBhdGh8T3ZlcndyaXRlfFBsdWdpblVubG9hZHxSZWJvb3RGbGFnfFJlZ1ZpZXd8U2hlbGxWYXJDb250ZXh0fFNpbGVudCl8U2hvdyg/Okluc3REZXRhaWxzfFVuaW5zdERldGFpbHN8V2luZG93KXxTaWxlbnQoPzpJbnN0YWxsfFVuSW5zdGFsbCl8U2xlZXB8U3BhY2VUZXh0c3xTcGxhc2h8U3RhcnRNZW51fFN0cig/OkNtcFM/fENweXxMZW4pfFN1YkNhcHRpb258U3lzdGVtfFVuaWNvZGV8VW5pbnN0YWxsKD86QnV0dG9uVGV4dHxDYXB0aW9ufEljb258U3ViQ2FwdGlvbnxUZXh0KXxVbmluc3RQYWdlfFVuUmVnRExMfFVzZXJJbmZvfFZhcnxWSSg/OkFkZFZlcnNpb25LZXl8RmlsZVZlcnNpb258UHJvZHVjdFZlcnNpb24pfFZQYXRjaHxXaW5kb3dJY29ufFdyaXRlKD86SU5JU3RyfFJlZyg/OkJpbnxEV09SRHxFeHBhbmRTdHJ8TXVsdGlTdHJ8Tm9uZXxTdHIpfFVuaW5zdGFsbGVyKXxYUFN0eWxlKVxcYi9tLGxvb2tiZWhpbmQ6ITB9LHByb3BlcnR5Oi9cXGIoPzphZG1pbnxhbGx8YXV0b3xib3RofGNvbG9yZWR8ZmFsc2V8Zm9yY2V8aGlkZXxoaWdoZXN0fGxhc3R1c2VkfGxlYXZlfGxpc3Rvbmx5fG5vbmV8bm9ybWFsfG5vdHNldHxvZmZ8b258b3BlbnxwcmludHxzaG93fHNpbGVudHxzaWxlbnRsb2d8c21vb3RofHRleHRvbmx5fHRydWV8dXNlcnxBUkNISVZFfEZJTEVfKEFUVFJJQlVURV9BUkNISVZFfEFUVFJJQlVURV9OT1JNQUx8QVRUUklCVVRFX09GRkxJTkV8QVRUUklCVVRFX1JFQURPTkxZfEFUVFJJQlVURV9TWVNURU18QVRUUklCVVRFX1RFTVBPUkFSWSl8SEsoKENSfENVfExNKSgzMnw2NCk/fEREfFBEfFUpfEhLRVlfKENMQVNTRVNfUk9PVHxDVVJSRU5UX0NPTkZJR3xDVVJSRU5UX1VTRVJ8RFlOX0RBVEF8TE9DQUxfTUFDSElORXxQRVJGT1JNQU5DRV9EQVRBfFVTRVJTKXxJRChBQk9SVHxDQU5DRUx8SUdOT1JFfE5PfE9LfFJFVFJZfFlFUyl8TUJfKEFCT1JUUkVUUllJR05PUkV8REVGQlVUVE9OMXxERUZCVVRUT04yfERFRkJVVFRPTjN8REVGQlVUVE9ONHxJQ09ORVhDTEFNQVRJT058SUNPTklORk9STUFUSU9OfElDT05RVUVTVElPTnxJQ09OU1RPUHxPS3xPS0NBTkNFTHxSRVRSWUNBTkNFTHxSSUdIVHxSVExSRUFESU5HfFNFVEZPUkVHUk9VTkR8VE9QTU9TVHxVU0VSSUNPTnxZRVNOTyl8Tk9STUFMfE9GRkxJTkV8UkVBRE9OTFl8U0hDVFh8U0hFTExfQ09OVEVYVHxTWVNURU18VEVNUE9SQVJZKVxcYi8sY29uc3RhbnQ6L1xcJHtbXFx3XFwuOlxcXi1dK318XFwkXFwoW1xcd1xcLjpcXF4tXStcXCkvaSx2YXJpYWJsZTovXFwkXFx3Ky9pLG51bWJlcjovXFxiMHhbXFxkQS1GYS1mXStcXGJ8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86W0VlXS0/XFxkKyk/LyxvcGVyYXRvcjovLS0/fFxcK1xcKz98PD0/fD49P3w9PT89P3wmJj98XFx8XFx8P3xbPypcXC9+XiVdLyxwdW5jdHVhdGlvbjovW3t9W1xcXTsoKSwuOl0vLGltcG9ydGFudDp7cGF0dGVybjovKF5cXHMqKSEoPzphZGRpbmNsdWRlZGlyfGFkZHBsdWdpbmRpcnxhcHBlbmRmaWxlfGNkfGRlZmluZXxkZWxmaWxlfGVjaG98ZWxzZXxlbmRpZnxlcnJvcnxleGVjdXRlfGZpbmFsaXplfGdldGRsbHZlcnNpb258Z2V0dGxidmVyc2lvbnxpZmRlZnxpZm1hY3JvZGVmfGlmbWFjcm9uZGVmfGlmbmRlZnxpZnxpbmNsdWRlfGluc2VydG1hY3JvfG1hY3JvZW5kfG1hY3JvfG1ha2Vuc2lzfHBhY2toZHJ8cHJhZ21hfHNlYXJjaHBhcnNlfHNlYXJjaHJlcGxhY2V8c3lzdGVtfHRlbXBmaWxlfHVuZGVmfHZlcmJvc2V8d2FybmluZylcXGIvaW0sbG9va2JlaGluZDohMH19fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJuc2lzXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigzNCk7ZnVuY3Rpb24gbyhlKXtlLnJlZ2lzdGVyKHIpLGUubGFuZ3VhZ2VzLm9iamVjdGl2ZWM9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY1wiLHtrZXl3b3JkOi9cXGIoPzphc218dHlwZW9mfGlubGluZXxhdXRvfGJyZWFrfGNhc2V8Y2hhcnxjb25zdHxjb250aW51ZXxkZWZhdWx0fGRvfGRvdWJsZXxlbHNlfGVudW18ZXh0ZXJufGZsb2F0fGZvcnxnb3RvfGlmfGludHxsb25nfHJlZ2lzdGVyfHJldHVybnxzaG9ydHxzaWduZWR8c2l6ZW9mfHN0YXRpY3xzdHJ1Y3R8c3dpdGNofHR5cGVkZWZ8dW5pb258dW5zaWduZWR8dm9pZHx2b2xhdGlsZXx3aGlsZXxpbnxzZWxmfHN1cGVyKVxcYnwoPzpAaW50ZXJmYWNlfEBlbmR8QGltcGxlbWVudGF0aW9ufEBwcm90b2NvbHxAY2xhc3N8QHB1YmxpY3xAcHJvdGVjdGVkfEBwcml2YXRlfEBwcm9wZXJ0eXxAdHJ5fEBjYXRjaHxAZmluYWxseXxAdGhyb3d8QHN5bnRoZXNpemV8QGR5bmFtaWN8QHNlbGVjdG9yKVxcYi8sc3RyaW5nOi8oXCJ8JykoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxfEBcIig/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfFteXCJcXFxcXFxyXFxuXSkqXCIvLG9wZXJhdG9yOi8tWy0+XT98XFwrXFwrP3whPT98PDw/PT98Pj4/PT98PT0/fCYmP3xcXHxcXHw/fFt+XiU/KlxcL0BdL30pfWUuZXhwb3J0cz1vLG8uZGlzcGxheU5hbWU9XCJvYmplY3RpdmVjXCIsby5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5vY2FtbD17Y29tbWVudDovXFwoXFwqW1xcc1xcU10qP1xcKlxcKS8sc3RyaW5nOlt7cGF0dGVybjovXCIoPzpcXFxcLnxbXlxcXFxcXHJcXG5cIl0pKlwiLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi8oWydgXSkoPzpcXFxcKD86XFxkK3x4W1xcZGEtZl0rfC4pfCg/IVxcMSlbXlxcXFxcXHJcXG5dKVxcMS9pLGdyZWVkeTohMH1dLG51bWJlcjovXFxiKD86MHhbXFxkYS1mXVtcXGRhLWZfXSt8KD86MFtib10pP1xcZFtcXGRfXSpcXC4/W1xcZF9dKig/OmVbKy1dP1tcXGRfXSspPykvaSx0eXBlOntwYXR0ZXJuOi9cXEJbJ2BdXFx3Ki8sYWxpYXM6XCJ2YXJpYWJsZVwifSxkaXJlY3RpdmU6e3BhdHRlcm46L1xcQiNcXHcrLyxhbGlhczpcImZ1bmN0aW9uXCJ9LGtleXdvcmQ6L1xcYig/OmFzfGFzc2VydHxiZWdpbnxjbGFzc3xjb25zdHJhaW50fGRvfGRvbmV8ZG93bnRvfGVsc2V8ZW5kfGV4Y2VwdGlvbnxleHRlcm5hbHxmb3J8ZnVufGZ1bmN0aW9ufGZ1bmN0b3J8aWZ8aW58aW5jbHVkZXxpbmhlcml0fGluaXRpYWxpemVyfGxhenl8bGV0fG1hdGNofG1ldGhvZHxtb2R1bGV8bXV0YWJsZXxuZXd8b2JqZWN0fG9mfG9wZW58cHJlZml4fHByaXZhdGV8cmVjfHRoZW58c2lnfHN0cnVjdHx0b3x0cnl8dHlwZXx2YWx8dmFsdWV8dmlydHVhbHx3aGVyZXx3aGlsZXx3aXRoKVxcYi8sYm9vbGVhbjovXFxiKD86ZmFsc2V8dHJ1ZSlcXGIvLG9wZXJhdG9yOi86PXxbPTw+QF58JitcXC0qXFwvJCUhP35dWyEkJSYqK1xcLS5cXC86PD0+P0BefH5dKnxcXGIoPzphbmR8YXNyfGxhbmR8bG9yfGx4b3J8bHNsfGxzcnxtb2R8bm9yfG9yKVxcYi8scHVuY3R1YXRpb246L1soKXt9XFxbXFxdfF8uLDo7XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJvY2FtbFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMzQpLG89big5Nik7ZnVuY3Rpb24gYShlKXtlLnJlZ2lzdGVyKHIpLGUucmVnaXN0ZXIobyksZnVuY3Rpb24oZSl7ZS5sYW5ndWFnZXMub3BlbmNsPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNcIix7a2V5d29yZDovXFxiKD86X19hdHRyaWJ1dGVfX3woPzpfXyk/KD86Y29uc3RhbnR8Z2xvYmFsfGtlcm5lbHxsb2NhbHxwcml2YXRlfHJlYWRfb25seXxyZWFkX3dyaXRlfHdyaXRlX29ubHkpfF9jbF8oPzpjb21tYW5kX3F1ZXVlfGNvbnRleHR8ZGV2aWNlX2lkfGV2ZW50fGtlcm5lbHxtZW18cGxhdGZvcm1faWR8cHJvZ3JhbXxzYW1wbGVyKXxhdXRvfGJyZWFrfGNhc2V8Y2xfKD86aW1hZ2VfZm9ybWF0fG1lbV9mZW5jZV9mbGFncyl8Y2xrX2V2ZW50X3R8Y29tcGxleHxjb25zdHxjb250aW51ZXxkZWZhdWx0fGRvfCg/OmZsb2F0fGRvdWJsZSkoPzoxNig/OngoPzoxfDE2fDJ8NHw4KSk/fDF4KD86MXwxNnwyfDR8OCl8Mig/OngoPzoxfDE2fDJ8NHw4KSk/fDN8NCg/OngoPzoxfDE2fDJ8NHw4KSk/fDgoPzp4KD86MXwxNnwyfDR8OCkpPyk/fGVsc2V8ZW51bXxldmVudF90fGV4dGVybnxmb3J8Z290b3woPzp1Pyg/OmNoYXJ8c2hvcnR8aW50fGxvbmcpfGhhbGZ8cXVhZHxib29sKSg/OjJ8M3w0fDh8MTYpP3xpZnxpbWFnZSg/OjFkXyg/OmFycmF5X3xidWZmZXJfKT90fDJkXyg/OmFycmF5Xyg/OmRlcHRoX3xtc2FhX2RlcHRoX3xtc2FhXyk/fGRlcHRoX3xtc2FhX2RlcHRoX3xtc2FhXyk/dHwzZF90KXxpbWFnaW5hcnl8aW5saW5lfGludHB0cl90fG5kcmFuZ2VfdHxwYWNrZWR8cGlwZXxwdHJkaWZmX3R8cXVldWVfdHxyZWdpc3RlcnxyZXNlcnZlX2lkX3R8cmVzdHJpY3R8cmV0dXJufHNhbXBsZXJfdHxzaWduZWR8c2l6ZV90fHNpemVvZnxzdGF0aWN8c3RydWN0fHN3aXRjaHx0eXBlZGVmfHVpbnRwdHJfdHx1bmlmb3JtfHVuaW9ufHVuc2lnbmVkfHZvaWR8dm9sYXRpbGV8d2hpbGUpXFxiLyxcImZ1bmN0aW9uLW9wZW5jbC1rZXJuZWxcIjp7cGF0dGVybjovXFxiKD86YWJzKD86X2RpZmYpP3xhPyg/OmNvc3xzaW4pKD86aHxwaSk/fGFkZF9zYXR8YWxpZ25lZHxhbGx8YW5kfGFueXxhc3luYyg/Ol93b3JrX2dyb3VwX2NvcHl8X3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KT98YXRhbig/OjI/KD86cGkpP3xoKT98YXRvbV8oPzphZGR8YW5kfGNtcHhjaGd8ZGVjfGluY3xtYXh8bWlufG9yfHN1Ynx4Y2hnfHhvcil8YmFycmllcnxiaXRzZWxlY3R8Y2JydHxjZWlsfGNsYW1wfGNsenxjb3BpZXN8Y29weXNpZ258Y3Jvc3N8ZGVncmVlc3xkaXN0YW5jZXxkb3R8ZW5kaWFufGVyZnxlcmZjfGV4cCg/OjJ8MTApP3xleHBtMXxmYWJzfGZhc3RfKD86ZGlzdGFuY2V8bGVuZ3RofG5vcm1hbGl6ZSl8ZmRpbXxmbG9vcnxmbWF8Zm1heHxmbWlufGZyYWN0fGZyZXhwfGZyb3xmcm9tfGdldF8oPzpnbG9iYWxfKD86aWR8b2Zmc2V0fHNpemUpfGdyb3VwX2lkfGltYWdlXyg/OmNoYW5uZWxfZGF0YV90eXBlfGNoYW5uZWxfb3JkZXJ8ZGVwdGh8ZGltfGhlaWdodHx3aWR0aCl8bG9jYWwoPzpfaWR8X3NpemUpfG51bV9ncm91cHN8d29ya19kaW0pfGhhZGR8KD86aGFsZnxuYXRpdmUpXyg/OmNvc3xkaXZpZGV8ZXhwKD86MnwxMCk/fGxvZyg/OjJ8MTApP3xwb3dyfHJlY2lwfHI/c3FydHxzaW58dGFuKXxoeXBvdHxpbG9nYnxpcyg/OmVxdWFsfGZpbml0ZXxncmVhdGVyKD86ZXF1YWwpP3xpbmZ8bGVzcyg/OmVxdWFsfGdyZWF0ZXIpP3xuYW58bm9ybWFsfG5vdGVxdWFsfCg/OnVuKT9vcmRlcmVkKXxsZGV4cHxsZW5ndGh8bGdhbW1hfGxnYW1tYV9yfGxvZyg/OmJ8MXB8MnwxMCk/fG1hZCg/OjI0fF9oaXxfc2F0KT98bWF4fG1lbSg/Ol9mZW5jZSk/fG1pbnxtaXh8bW9kZnxtdWwyNHxtdWxfaGl8bmFufG5leHRhZnRlcnxub3JtYWxpemV8cG93W25yXT98cHJlZmV0Y2h8cmFkaWFuc3xyZWFkXyg/OmltYWdlKSg/OmZ8aHx1P2kpfHJlYWRfbWVtX2ZlbmNlfHJlbWFpbmRlcnxyZW1xdW98cmVxZF93b3JrX2dyb3VwX3NpemV8cmhhZGR8cmludHxyb290bnxyb3RhdGV8cm91bmR8cnNxcnR8c2VsZWN0fHNodWZmbGUyP3xzaWdufHNpZ25iaXR8c2luY29zfHNtb290aHN0ZXB8c3FydHxzdGVwfHN1Yl9zYXR8dGFufHRhbmh8dGFucGl8dGdhbW1hfHRvfHRydW5jfHVwc2FtcGxlfHZlY18oPzpzdGVwfHR5cGVfaGludCl8dig/OmxvYWR8c3RvcmUpKD86X2hhbGYpPyg/OjJ8M3w0fDh8MTYpP3x2KD86bG9hZGFfaGFsZnxzdG9yZWE/KD86X2hhbGYpPykoPzoyfDN8NHw4fDE2KT8oPzpfKD86cnRlfHJ0bnxydHB8cnR6KSk/fHdhaXRfZ3JvdXBfZXZlbnRzfHdvcmtfZ3JvdXBfc2l6ZV9oaW50fHdyaXRlX2ltYWdlKD86ZnxofHU/aSl8d3JpdGVfbWVtX2ZlbmNlKVxcYi8sYWxpYXM6XCJmdW5jdGlvblwifSxcImNvbnN0YW50LW9wZW5jbC1rZXJuZWxcIjp7cGF0dGVybjovXFxiKD86Q0hBUl8oPzpCSVR8TUFYfE1JTil8Q0xLXyg/OkFERFJFU1NfKD86Q0xBTVAoPzpfVE9fRURHRSk/fE5PTkV8UkVQRUFUKXxGSUxURVJfKD86TElORUFSfE5FQVJFU1QpfCg/OkxPQ0FMfEdMT0JBTClfTUVNX0ZFTkNFfE5PUk1BTElaRURfQ09PUkRTXyg/OkZBTFNFfFRSVUUpKXxDTF8oPzpCR1JBfCg/OkhBTEZfKT9GTE9BVHxJTlRFTlNJVFl8TFVNSU5BTkNFfEE/Uj9HP0I/W0F4XT98KD86KD86VU4pP1NJR05FRHxbVVNdTk9STSlfKD86SU5UKD86OHwxNnwzMikpfFVOT1JNXyg/OklOVF8xMDEwMTB8U0hPUlRfKD86NTU1fDU2NSkpKXwoPzpEQkx8RkxUKV8oPzpESUd8RVBTSUxPTnxNQU5UX0RJR3woPzpNSU58TUFYKSg/Oig/Ol8xMCk/X0VYUCk/KXxGTFRfUkFESVh8SFVHRV9WQUxGfElORklOSVRZfCg/OklOVHxMT05HfFNDSEFSfFNIUlR8VUNIQVJ8VUlOVHxVTE9ORylfKD86TUFYfE1JTil8TUFYRkxPQVR8TV8oPzpbMTJdX1BJfDJfU1FSVFBJfEV8TE4oPzoyfDEwKXxMT0coPzoxMHwyKUU/fFBJWzI0XT98U1FSVCg/OjFfMnwyKSl8TkFOKVxcYi8sYWxpYXM6XCJjb25zdGFudFwifX0pO3ZhciB0PXtcInR5cGUtb3BlbmNsLWhvc3RcIjp7cGF0dGVybjovXFxiKD86Y2xfKD86R0xlbnVtfEdMaW50fEdMdWlufGFkZHJlc3NpbmdfbW9kZXxiaXRmaWVsZHxib29sfGJ1ZmZlcl9jcmVhdGVfdHlwZXxidWlsZF9zdGF0dXN8Y2hhbm5lbF8oPzpvcmRlcnx0eXBlKXwoPzp1Pyg/OmNoYXJ8c2hvcnR8aW50fGxvbmcpfGZsb2F0fGRvdWJsZSkoPzoyfDN8NHw4fDE2KT98Y29tbWFuZF8oPzpxdWV1ZSg/Ol9pbmZvfF9wcm9wZXJ0aWVzKT98dHlwZSl8Y29udGV4dCg/Ol9pbmZvfF9wcm9wZXJ0aWVzKT98ZGV2aWNlXyg/OmV4ZWNfY2FwYWJpbGl0aWVzfGZwX2NvbmZpZ3xpZHxpbmZvfGxvY2FsX21lbV90eXBlfG1lbV9jYWNoZV90eXBlfHR5cGUpfCg/OmV2ZW50fHNhbXBsZXIpKD86X2luZm8pP3xmaWx0ZXJfbW9kZXxoYWxmfGltYWdlX2luZm98a2VybmVsKD86X2luZm98X3dvcmtfZ3JvdXBfaW5mbyk/fG1hcF9mbGFnc3xtZW0oPzpfZmxhZ3N8X2luZm98X29iamVjdF90eXBlKT98cGxhdGZvcm1fKD86aWR8aW5mbyl8cHJvZmlsaW5nX2luZm98cHJvZ3JhbSg/Ol9idWlsZF9pbmZvfF9pbmZvKT8pKVxcYi8sYWxpYXM6XCJrZXl3b3JkXCJ9LFwiYm9vbGVhbi1vcGVuY2wtaG9zdFwiOntwYXR0ZXJuOi9cXGJDTF8oPzpUUlVFfEZBTFNFKVxcYi8sYWxpYXM6XCJib29sZWFuXCJ9LFwiY29uc3RhbnQtb3BlbmNsLWhvc3RcIjp7cGF0dGVybjovXFxiQ0xfKD86QXxBQkdSfEFERFJFU1NfKD86Q0xBTVAoPzpfVE9fRURHRSk/fE1JUlJPUkVEX1JFUEVBVHxOT05FfFJFUEVBVCl8QVJHQnxCR1JBfEJMT0NLSU5HfEJVRkZFUl9DUkVBVEVfVFlQRV9SRUdJT058QlVJTERfKD86RVJST1J8SU5fUFJPR1JFU1N8Tk9ORXxQUk9HUkFNX0ZBSUxVUkV8U1VDQ0VTUyl8Q09NTUFORF8oPzpBQ1FVSVJFX0dMX09CSkVDVFN8QkFSUklFUnxDT1BZXyg/OkJVRkZFUig/Ol9SRUNUfF9UT19JTUFHRSk/fElNQUdFKD86X1RPX0JVRkZFUik/KXxGSUxMXyg/OkJVRkZFUnxJTUFHRSl8TUFQKD86X0JVRkZFUnxfSU1BR0UpfE1BUktFUnxNSUdSQVRFKD86X1NWTSk/X01FTV9PQkpFQ1RTfE5BVElWRV9LRVJORUx8TkRSQU5HRV9LRVJORUx8UkVBRF8oPzpCVUZGRVIoPzpfUkVDVCk/fElNQUdFKXxSRUxFQVNFX0dMX09CSkVDVFN8U1ZNXyg/OkZSRUV8TUFQfE1FTUNQWXxNRU1GSUxMfFVOTUFQKXxUQVNLfFVOTUFQX01FTV9PQkpFQ1R8VVNFUnxXUklURV8oPzpCVUZGRVIoPzpfUkVDVCk/fElNQUdFKSl8Q09NUElMRVJfTk9UX0FWQUlMQUJMRXxDT01QSUxFX1BST0dSQU1fRkFJTFVSRXxDT01QTEVURXxDT05URVhUXyg/OkRFVklDRVN8SU5URVJPUF9VU0VSX1NZTkN8TlVNX0RFVklDRVN8UExBVEZPUk18UFJPUEVSVElFU3xSRUZFUkVOQ0VfQ09VTlQpfERFUFRIKD86X1NURU5DSUwpP3xERVZJQ0VfKD86QUREUkVTU19CSVRTfEFGRklOSVRZX0RPTUFJTl8oPzpMWzEtNF1fQ0FDSEV8TkVYVF9QQVJUSVRJT05BQkxFfE5VTUEpfEFWQUlMQUJMRXxCVUlMVF9JTl9LRVJORUxTfENPTVBJTEVSX0FWQUlMQUJMRXxET1VCTEVfRlBfQ09ORklHfEVORElBTl9MSVRUTEV8RVJST1JfQ09SUkVDVElPTl9TVVBQT1JUfEVYRUNVVElPTl9DQVBBQklMSVRJRVN8RVhURU5TSU9OU3xHTE9CQUxfKD86TUVNXyg/OkNBQ0hFTElORV9TSVpFfENBQ0hFX1NJWkV8Q0FDSEVfVFlQRXxTSVpFKXxWQVJJQUJMRV9QUkVGRVJSRURfVE9UQUxfU0laRSl8SE9TVF9VTklGSUVEX01FTU9SWXxJTF9WRVJTSU9OfElNQUdFKD86MkRfTUFYXyg/OkhFSUdIVHxXSURUSCl8M0RfTUFYXyg/OkRFUFRIfEhFSUdIVHxXSURUSCl8X0JBU0VfQUREUkVTU19BTElHTk1FTlR8X01BWF9BUlJBWV9TSVpFfF9NQVhfQlVGRkVSX1NJWkV8X1BJVENIX0FMSUdOTUVOVHxfU1VQUE9SVCl8TElOS0VSX0FWQUlMQUJMRXxMT0NBTF9NRU1fU0laRXxMT0NBTF9NRU1fVFlQRXxNQVhfKD86Q0xPQ0tfRlJFUVVFTkNZfENPTVBVVEVfVU5JVFN8Q09OU1RBTlRfQVJHU3xDT05TVEFOVF9CVUZGRVJfU0laRXxHTE9CQUxfVkFSSUFCTEVfU0laRXxNRU1fQUxMT0NfU0laRXxOVU1fU1VCX0dST1VQU3xPTl9ERVZJQ0VfKD86RVZFTlRTfFFVRVVFUyl8UEFSQU1FVEVSX1NJWkV8UElQRV9BUkdTfFJFQURfSU1BR0VfQVJHU3xSRUFEX1dSSVRFX0lNQUdFX0FSR1N8U0FNUExFUlN8V09SS19HUk9VUF9TSVpFfFdPUktfSVRFTV9ESU1FTlNJT05TfFdPUktfSVRFTV9TSVpFU3xXUklURV9JTUFHRV9BUkdTKXxNRU1fQkFTRV9BRERSX0FMSUdOfE1JTl9EQVRBX1RZUEVfQUxJR05fU0laRXxOQU1FfE5BVElWRV9WRUNUT1JfV0lEVEhfKD86Q0hBUnxET1VCTEV8RkxPQVR8SEFMRnxJTlR8TE9OR3xTSE9SVCl8Tk9UXyg/OkFWQUlMQUJMRXxGT1VORCl8T1BFTkNMX0NfVkVSU0lPTnxQQVJFTlRfREVWSUNFfFBBUlRJVElPTl8oPzpBRkZJTklUWV9ET01BSU58QllfQUZGSU5JVFlfRE9NQUlOfEJZX0NPVU5UU3xCWV9DT1VOVFNfTElTVF9FTkR8RVFVQUxMWXxGQUlMRUR8TUFYX1NVQl9ERVZJQ0VTfFBST1BFUlRJRVN8VFlQRSl8UElQRV9NQVhfKD86QUNUSVZFX1JFU0VSVkFUSU9OU3xQQUNLRVRfU0laRSl8UExBVEZPUk18UFJFRkVSUkVEXyg/OkdMT0JBTF9BVE9NSUNfQUxJR05NRU5UfElOVEVST1BfVVNFUl9TWU5DfExPQ0FMX0FUT01JQ19BTElHTk1FTlR8UExBVEZPUk1fQVRPTUlDX0FMSUdOTUVOVHxWRUNUT1JfV0lEVEhfKD86Q0hBUnxET1VCTEV8RkxPQVR8SEFMRnxJTlR8TE9OR3xTSE9SVCkpfFBSSU5URl9CVUZGRVJfU0laRXxQUk9GSUxFfFBST0ZJTElOR19USU1FUl9SRVNPTFVUSU9OfFFVRVVFXyg/Ok9OXyg/OkRFVklDRV8oPzpNQVhfU0laRXxQUkVGRVJSRURfU0laRXxQUk9QRVJUSUVTKXxIT1NUX1BST1BFUlRJRVMpfFBST1BFUlRJRVMpfFJFRkVSRU5DRV9DT1VOVHxTSU5HTEVfRlBfQ09ORklHfFNVQl9HUk9VUF9JTkRFUEVOREVOVF9GT1JXQVJEX1BST0dSRVNTfFNWTV8oPzpBVE9NSUNTfENBUEFCSUxJVElFU3xDT0FSU0VfR1JBSU5fQlVGRkVSfEZJTkVfR1JBSU5fQlVGRkVSfEZJTkVfR1JBSU5fU1lTVEVNKXxUWVBFKD86X0FDQ0VMRVJBVE9SfF9BTEx8X0NQVXxfQ1VTVE9NfF9ERUZBVUxUfF9HUFUpP3xWRU5ET1IoPzpfSUQpP3xWRVJTSU9OKXxEUklWRVJfVkVSU0lPTnxFVkVOVF8oPzpDT01NQU5EXyg/OkVYRUNVVElPTl9TVEFUVVN8UVVFVUV8VFlQRSl8Q09OVEVYVHxSRUZFUkVOQ0VfQ09VTlQpfEVYRUNfKD86S0VSTkVMfE5BVElWRV9LRVJORUx8U1RBVFVTX0VSUk9SX0ZPUl9FVkVOVFNfSU5fV0FJVF9MSVNUKXxGSUxURVJfKD86TElORUFSfE5FQVJFU1QpfEZMT0FUfEZQXyg/OkNPUlJFQ1RMWV9ST1VOREVEX0RJVklERV9TUVJUfERFTk9STXxGTUF8SU5GX05BTnxST1VORF9UT19JTkZ8Uk9VTkRfVE9fTkVBUkVTVHxST1VORF9UT19aRVJPfFNPRlRfRkxPQVQpfEdMT0JBTHxIQUxGX0ZMT0FUfElNQUdFXyg/OkFSUkFZX1NJWkV8QlVGRkVSfERFUFRIfEVMRU1FTlRfU0laRXxGT1JNQVR8Rk9STUFUX01JU01BVENIfEZPUk1BVF9OT1RfU1VQUE9SVEVEfEhFSUdIVHxOVU1fTUlQX0xFVkVMU3xOVU1fU0FNUExFU3xST1dfUElUQ0h8U0xJQ0VfUElUQ0h8V0lEVEgpfElOVEVOU0lUWXxJTlZBTElEXyg/OkFSR19JTkRFWHxBUkdfU0laRXxBUkdfVkFMVUV8QklOQVJZfEJVRkZFUl9TSVpFfEJVSUxEX09QVElPTlN8Q09NTUFORF9RVUVVRXxDT01QSUxFUl9PUFRJT05TfENPTlRFWFR8REVWSUNFfERFVklDRV9QQVJUSVRJT05fQ09VTlR8REVWSUNFX1FVRVVFfERFVklDRV9UWVBFfEVWRU5UfEVWRU5UX1dBSVRfTElTVHxHTE9CQUxfT0ZGU0VUfEdMT0JBTF9XT1JLX1NJWkV8R0xfT0JKRUNUfEhPU1RfUFRSfElNQUdFX0RFU0NSSVBUT1J8SU1BR0VfRk9STUFUX0RFU0NSSVBUT1J8SU1BR0VfU0laRXxLRVJORUx8S0VSTkVMX0FSR1N8S0VSTkVMX0RFRklOSVRJT058S0VSTkVMX05BTUV8TElOS0VSX09QVElPTlN8TUVNX09CSkVDVHxNSVBfTEVWRUx8T1BFUkFUSU9OfFBJUEVfU0laRXxQTEFURk9STXxQUk9HUkFNfFBST0dSQU1fRVhFQ1VUQUJMRXxQUk9QRVJUWXxRVUVVRV9QUk9QRVJUSUVTfFNBTVBMRVJ8VkFMVUV8V09SS19ESU1FTlNJT058V09SS19HUk9VUF9TSVpFfFdPUktfSVRFTV9TSVpFKXxLRVJORUxfKD86QVJHXyg/OkFDQ0VTU18oPzpOT05FfFFVQUxJRklFUnxSRUFEX09OTFl8UkVBRF9XUklURXxXUklURV9PTkxZKXxBRERSRVNTXyg/OkNPTlNUQU5UfEdMT0JBTHxMT0NBTHxQUklWQVRFfFFVQUxJRklFUil8SU5GT19OT1RfQVZBSUxBQkxFfE5BTUV8VFlQRV8oPzpDT05TVHxOQU1FfE5PTkV8UElQRXxRVUFMSUZJRVJ8UkVTVFJJQ1R8Vk9MQVRJTEUpKXxBVFRSSUJVVEVTfENPTVBJTEVfTlVNX1NVQl9HUk9VUFN8Q09NUElMRV9XT1JLX0dST1VQX1NJWkV8Q09OVEVYVHxFWEVDX0lORk9fU1ZNX0ZJTkVfR1JBSU5fU1lTVEVNfEVYRUNfSU5GT19TVk1fUFRSU3xGVU5DVElPTl9OQU1FfEdMT0JBTF9XT1JLX1NJWkV8TE9DQUxfTUVNX1NJWkV8TE9DQUxfU0laRV9GT1JfU1VCX0dST1VQX0NPVU5UfE1BWF9OVU1fU1VCX0dST1VQU3xNQVhfU1VCX0dST1VQX1NJWkVfRk9SX05EUkFOR0V8TlVNX0FSR1N8UFJFRkVSUkVEX1dPUktfR1JPVVBfU0laRV9NVUxUSVBMRXxQUklWQVRFX01FTV9TSVpFfFBST0dSQU18UkVGRVJFTkNFX0NPVU5UfFNVQl9HUk9VUF9DT1VOVF9GT1JfTkRSQU5HRXxXT1JLX0dST1VQX1NJWkUpfExJTktFUl9OT1RfQVZBSUxBQkxFfExJTktfUFJPR1JBTV9GQUlMVVJFfExPQ0FMfExVTUlOQU5DRXxNQVBfKD86RkFJTFVSRXxSRUFEfFdSSVRFfFdSSVRFX0lOVkFMSURBVEVfUkVHSU9OKXxNRU1fKD86QUxMT0NfSE9TVF9QVFJ8QVNTT0NJQVRFRF9NRU1PQkpFQ1R8Q09OVEVYVHxDT1BZX0hPU1RfUFRSfENPUFlfT1ZFUkxBUHxGTEFHU3xIT1NUX05PX0FDQ0VTU3xIT1NUX1BUUnxIT1NUX1JFQURfT05MWXxIT1NUX1dSSVRFX09OTFl8S0VSTkVMX1JFQURfQU5EX1dSSVRFfE1BUF9DT1VOVHxPQkpFQ1RfKD86QUxMT0NBVElPTl9GQUlMVVJFfEJVRkZFUnxJTUFHRTFEfElNQUdFMURfQVJSQVl8SU1BR0UxRF9CVUZGRVJ8SU1BR0UyRHxJTUFHRTJEX0FSUkFZfElNQUdFM0R8UElQRSl8T0ZGU0VUfFJFQURfT05MWXxSRUFEX1dSSVRFfFJFRkVSRU5DRV9DT1VOVHxTSVpFfFNWTV9BVE9NSUNTfFNWTV9GSU5FX0dSQUlOX0JVRkZFUnxUWVBFfFVTRVNfU1ZNX1BPSU5URVJ8VVNFX0hPU1RfUFRSfFdSSVRFX09OTFkpfE1JR1JBVEVfTUVNX09CSkVDVF8oPzpDT05URU5UX1VOREVGSU5FRHxIT1NUKXxNSVNBTElHTkVEX1NVQl9CVUZGRVJfT0ZGU0VUfE5PTkV8Tk9OX0JMT0NLSU5HfE9VVF9PRl8oPzpIT1NUX01FTU9SWXxSRVNPVVJDRVMpfFBJUEVfKD86TUFYX1BBQ0tFVFN8UEFDS0VUX1NJWkUpfFBMQVRGT1JNXyg/OkVYVEVOU0lPTlN8SE9TVF9USU1FUl9SRVNPTFVUSU9OfE5BTUV8UFJPRklMRXxWRU5ET1J8VkVSU0lPTil8UFJPRklMSU5HXyg/OkNPTU1BTkRfKD86Q09NUExFVEV8RU5EfFFVRVVFRHxTVEFSVHxTVUJNSVQpfElORk9fTk9UX0FWQUlMQUJMRSl8UFJPR1JBTV8oPzpCSU5BUklFU3xCSU5BUllfU0laRVN8QklOQVJZX1RZUEUoPzpfQ09NUElMRURfT0JKRUNUfF9FWEVDVVRBQkxFfF9MSUJSQVJZfF9OT05FKT98QlVJTERfKD86R0xPQkFMX1ZBUklBQkxFX1RPVEFMX1NJWkV8TE9HfE9QVElPTlN8U1RBVFVTKXxDT05URVhUfERFVklDRVN8SUx8S0VSTkVMX05BTUVTfE5VTV9ERVZJQ0VTfE5VTV9LRVJORUxTfFJFRkVSRU5DRV9DT1VOVHxTT1VSQ0UpfFFVRVVFRHxRVUVVRV8oPzpDT05URVhUfERFVklDRXxERVZJQ0VfREVGQVVMVHxPTl9ERVZJQ0V8T05fREVWSUNFX0RFRkFVTFR8T1VUX09GX09SREVSX0VYRUNfTU9ERV9FTkFCTEV8UFJPRklMSU5HX0VOQUJMRXxQUk9QRVJUSUVTfFJFRkVSRU5DRV9DT1VOVHxTSVpFKXxSfFJBfFJFQURfKD86T05MWXxXUklURSlfQ0FDSEV8Ukd8UkdCfFJHQkF8UkdCeHxSR3h8UlVOTklOR3xSeHxTQU1QTEVSXyg/OkFERFJFU1NJTkdfTU9ERXxDT05URVhUfEZJTFRFUl9NT0RFfExPRF9NQVh8TE9EX01JTnxNSVBfRklMVEVSX01PREV8Tk9STUFMSVpFRF9DT09SRFN8UkVGRVJFTkNFX0NPVU5UKXwoPzpVTik/U0lHTkVEX0lOVCg/Ojh8MTZ8MzIpfFNOT1JNX0lOVCg/Ojh8MTYpfFNVQk1JVFRFRHxTVUNDRVNTfFVOT1JNX0lOVCg/OjE2fDI0fDh8XzEwMTAxMHxfMTAxMDEwXzIpfFVOT1JNX1NIT1JUXyg/OjU1NXw1NjUpfFZFUlNJT05fKD86MV8wfDFfMXwxXzJ8Ml8wfDJfMSl8c0JHUkF8c1JHQnxzUkdCQXxzUkdCeClcXGIvLGFsaWFzOlwiY29uc3RhbnRcIn0sXCJmdW5jdGlvbi1vcGVuY2wtaG9zdFwiOntwYXR0ZXJuOi9cXGJjbCg/OkJ1aWxkUHJvZ3JhbXxDbG9uZUtlcm5lbHxDb21waWxlUHJvZ3JhbXxDcmVhdGUoPzpCdWZmZXJ8Q29tbWFuZFF1ZXVlKD86V2l0aFByb3BlcnRpZXMpP3xDb250ZXh0fENvbnRleHRGcm9tVHlwZXxJbWFnZXxJbWFnZTJEfEltYWdlM0R8S2VybmVsfEtlcm5lbHNJblByb2dyYW18UGlwZXxQcm9ncmFtV2l0aCg/OkJpbmFyeXxCdWlsdEluS2VybmVsc3xJTHxTb3VyY2UpfFNhbXBsZXJ8U2FtcGxlcldpdGhQcm9wZXJ0aWVzfFN1YkJ1ZmZlcnxTdWJEZXZpY2VzfFVzZXJFdmVudCl8RW5xdWV1ZSg/Oig/OkJhcnJpZXJ8TWFya2VyKSg/OldpdGhXYWl0TGlzdCk/fENvcHkoPzpCdWZmZXIoPzpSZWN0fFRvSW1hZ2UpP3xJbWFnZSg/OlRvQnVmZmVyKT8pfCg/OkZpbGx8TWFwKSg/OkJ1ZmZlcnxJbWFnZSl8TWlncmF0ZU1lbU9iamVjdHN8TkRSYW5nZUtlcm5lbHxOYXRpdmVLZXJuZWx8KD86UmVhZHxXcml0ZSkoPzpCdWZmZXIoPzpSZWN0KT98SW1hZ2UpfFNWTSg/OkZyZWV8TWFwfE1lbUZpbGx8TWVtY3B5fE1pZ3JhdGVNZW18VW5tYXApfFRhc2t8VW5tYXBNZW1PYmplY3R8V2FpdEZvckV2ZW50cyl8RmluaXNofEZsdXNofEdldCg/OkNvbW1hbmRRdWV1ZUluZm98Q29udGV4dEluZm98RGV2aWNlKD86QW5kSG9zdFRpbWVyfElEc3xJbmZvKXxFdmVudCg/OlByb2ZpbGluZyk/SW5mb3xFeHRlbnNpb25GdW5jdGlvbkFkZHJlc3MoPzpGb3JQbGF0Zm9ybSk/fEhvc3RUaW1lcnxJbWFnZUluZm98S2VybmVsKD86QXJnSW5mb3xJbmZvfFN1Ykdyb3VwSW5mb3xXb3JrR3JvdXBJbmZvKXxNZW1PYmplY3RJbmZvfFBpcGVJbmZvfFBsYXRmb3JtKD86SURzfEluZm8pfFByb2dyYW0oPzpCdWlsZCk/SW5mb3xTYW1wbGVySW5mb3xTdXBwb3J0ZWRJbWFnZUZvcm1hdHMpfExpbmtQcm9ncmFtfCg/OlJlbGVhc2V8UmV0YWluKSg/OkNvbW1hbmRRdWV1ZXxDb250ZXh0fERldmljZXxFdmVudHxLZXJuZWx8TWVtT2JqZWN0fFByb2dyYW18U2FtcGxlcil8U1ZNKD86QWxsb2N8RnJlZSl8U2V0KD86Q29tbWFuZFF1ZXVlUHJvcGVydHl8RGVmYXVsdERldmljZUNvbW1hbmRRdWV1ZXxFdmVudENhbGxiYWNrfEtlcm5lbCg/OkFyZyg/OlNWTVBvaW50ZXIpP3xFeGVjSW5mbyl8S2VybmVsfE1lbU9iamVjdERlc3RydWN0b3JDYWxsYmFja3xVc2VyRXZlbnRTdGF0dXMpfFVubG9hZCg/OlBsYXRmb3JtKT9Db21waWxlcnxXYWl0Rm9yRXZlbnRzKVxcYi8sYWxpYXM6XCJmdW5jdGlvblwifX07ZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiY1wiLFwia2V5d29yZFwiLHQpLHRbXCJ0eXBlLW9wZW5jbC1ob3N0LWMrK1wiXT17cGF0dGVybjovXFxiKD86QnVmZmVyfEJ1ZmZlckdMfEJ1ZmZlclJlbmRlckdMfENvbW1hbmRRdWV1ZXxDb250ZXh0fERldmljZXxEZXZpY2VDb21tYW5kUXVldWV8RW5xdWV1ZUFyZ3N8RXZlbnR8SW1hZ2V8SW1hZ2UxRHxJbWFnZTFEQXJyYXl8SW1hZ2UxREJ1ZmZlcnxJbWFnZTJEfEltYWdlMkRBcnJheXxJbWFnZTJER0x8SW1hZ2UzRHxJbWFnZTNER0x8SW1hZ2VGb3JtYXR8SW1hZ2VHTHxLZXJuZWx8S2VybmVsRnVuY3RvcnxMb2NhbFNwYWNlQXJnfE1lbW9yeXxORFJhbmdlfFBpcGV8UGxhdGZvcm18UHJvZ3JhbXxTYW1wbGVyfFNWTUFsbG9jYXRvcnxTVk1UcmFpdEF0b21pY3xTVk1UcmFpdENvYXJzZXxTVk1UcmFpdEZpbmV8U1ZNVHJhaXRSZWFkT25seXxTVk1UcmFpdFJlYWRXcml0ZXxTVk1UcmFpdFdyaXRlT25seXxVc2VyRXZlbnQpXFxiLyxhbGlhczpcImtleXdvcmRcIn0sZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwiY3BwXCIsXCJrZXl3b3JkXCIsdCl9KGUpfWUuZXhwb3J0cz1hLGEuZGlzcGxheU5hbWU9XCJvcGVuY2xcIixhLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLm96PXtjb21tZW50Oi9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvfCUuKi8sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlteXCJcXFxcXXxcXFxcW1xcc1xcU10pKlwiLyxncmVlZHk6ITB9LGF0b206e3BhdHRlcm46LycoPzpbXidcXFxcXXxcXFxcW1xcc1xcU10pKicvLGdyZWVkeTohMCxhbGlhczpcImJ1aWx0aW5cIn0sa2V5d29yZDovWyRfXXxcXFtcXF18XFxiKD86YXR8YXR0cnxjYXNlfGNhdGNofGNob2ljZXxjbGFzc3xjb25kfGRlY2xhcmV8ZGVmaW5lfGRpc3xlbHNlKD86Y2FzZXxpZik/fGVuZHxleHBvcnR8ZmFpbHxmYWxzZXxmZWF0fGZpbmFsbHl8ZnJvbXxmdW58ZnVuY3RvcnxpZnxpbXBvcnR8aW58bG9jYWx8bG9ja3xtZXRofG5pbHxub3R8b2Z8b3J8cHJlcGFyZXxwcm9jfHByb3B8cmFpc2V8cmVxdWlyZXxzZWxmfHNraXB8dGhlbnx0aHJlYWR8dHJ1ZXx0cnl8dW5pdClcXGIvLGZ1bmN0aW9uOlsvW2Etel1bQS1aYS16XFxkXSooPz1cXCgpLyx7cGF0dGVybjovKFxceylbQS1aXVtBLVphLXpcXGRdKi8sbG9va2JlaGluZDohMH1dLG51bWJlcjovXFxiKD86MFtieF1bXFxkYS1mXSt8XFxkK1xcLj9cXGQqKD86ZX4/XFxkKyk/XFxiKXwmKD86W15cXFxcXXxcXFxcKD86XFxkezN9fC4pKS9pLHZhcmlhYmxlOi9cXGJbQS1aXVtBLVphLXpcXGRdKnxgKD86W15gXFxcXF18XFxcXC4pK2AvLFwiYXR0ci1uYW1lXCI6L1xcdysoPz06KS8sb3BlcmF0b3I6LzooPzo9fDo6Pyl8PFstOj1dP3w9KD86PXw8Pzo/KXw+PT86P3xcXFxcPTo/fCEhP3xbfCMrXFwtKlxcLyx+XkBdfFxcYig/OmFuZHRoZW58ZGl2fG1vZHxvcmVsc2UpXFxiLyxwdW5jdHVhdGlvbjovW1xcW1xcXSgpe30uOjs/XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJvelwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ7ZS5sYW5ndWFnZXMucGFyaWdwPXtjb21tZW50Oi9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvfFxcXFxcXFxcLiovLHN0cmluZzp7cGF0dGVybjovXCIoPzpbXlwiXFxcXFxcclxcbl18XFxcXC4pKlwiLyxncmVlZHk6ITB9LGtleXdvcmQ6KHQ9W1wiYnJlYWtwb2ludFwiLFwiYnJlYWtcIixcImRiZ19kb3duXCIsXCJkYmdfZXJyXCIsXCJkYmdfdXBcIixcImRiZ194XCIsXCJmb3Jjb21wb3NpdGVcIixcImZvcmRpdlwiLFwiZm9yZWxsXCIsXCJmb3JwYXJ0XCIsXCJmb3JwcmltZVwiLFwiZm9yc3RlcFwiLFwiZm9yc3ViZ3JvdXBcIixcImZvcnZlY1wiLFwiZm9yXCIsXCJpZmVyclwiLFwiaWZcIixcImxvY2FsXCIsXCJteVwiLFwibmV4dFwiLFwicmV0dXJuXCIsXCJ1bnRpbFwiLFwid2hpbGVcIl0sdD10Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdChcIlwiKS5qb2luKFwiICpcIil9KS5qb2luKFwifFwiKSxSZWdFeHAoXCJcXFxcYig/OlwiK3QrXCIpXFxcXGJcIikpLGZ1bmN0aW9uOi9cXHdbXFx3IF0qPyg/PSAqXFwoKS8sbnVtYmVyOntwYXR0ZXJuOi8oKD86XFwuICpcXC4gKik/KSg/OlxcZCg/OiAqXFxkKSooPzogKig/IVxcLiAqXFwuKVxcLig/OiAqXFxkKSopP3xcXC4gKlxcZCg/OiAqXFxkKSopKD86ICplICpbKy1dPyAqXFxkKD86ICpcXGQpKik/L2ksbG9va2JlaGluZDohMH0sb3BlcmF0b3I6L1xcLiAqXFwufFsqXFwvIV0oPzogKj0pP3wlKD86ICo9fCg/OiAqIyk/KD86IConKSopP3xcXCsoPzogKlsrPV0pP3wtKD86ICpbLT0+XSk/fDwoPzooPzogKjwpPyg/OiAqPSk/fCAqPik/fD4oPzogKj4pPyg/OiAqPSk/fD0oPzogKj0pezAsMn18XFxcXCg/OiAqXFwvKT8oPzogKj0pP3wmKD86IComKT98XFx8ICpcXHx8Wycjfl5dLyxwdW5jdHVhdGlvbjovW1xcW1xcXXt9KCkuLDo7fF0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicGFyaWdwXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5wYXJzZXI9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwibWFya3VwXCIse2tleXdvcmQ6e3BhdHRlcm46LyhefFteXl0pKD86XFxeKD86Y2FzZXxldmFsfGZvcnxpZnxzd2l0Y2h8dGhyb3cpXFxifEAoPzpCQVNFfENMQVNTfEdFVCg/Ol9ERUZBVUxUKT98T1BUSU9OU3xTRVRfREVGQVVMVHxVU0UpXFxiKS8sbG9va2JlaGluZDohMH0sdmFyaWFibGU6e3BhdHRlcm46LyhefFteXl0pXFxCXFwkKD86XFx3K3woPz1bLntdKSkoPzooPzpcXC58Ojo/KVxcdyspKig/OlxcLnw6Oj8pPy8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cXC58OisvfX0sZnVuY3Rpb246e3BhdHRlcm46LyhefFteXl0pXFxCW0BeXVxcdysoPzooPzpcXC58Ojo/KVxcdyspKig/OlxcLnw6Oj8pPy8sbG9va2JlaGluZDohMCxpbnNpZGU6e2tleXdvcmQ6e3BhdHRlcm46LyheQCkoPzpHRVRffFNFVF8pLyxsb29rYmVoaW5kOiEwfSxwdW5jdHVhdGlvbjovXFwufDorL319LGVzY2FwZTp7cGF0dGVybjovXFxeKD86WyReO0AoKVxcW1xcXXt9XCInOl18I1thLWZcXGRdKikvaSxhbGlhczpcImJ1aWx0aW5cIn0scHVuY3R1YXRpb246L1tcXFtcXF0oKXt9O10vfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwicGFyc2VyXCIsXCJrZXl3b3JkXCIse1wicGFyc2VyLWNvbW1lbnRcIjp7cGF0dGVybjovKFxccykjLiovLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJjb21tZW50XCJ9LGV4cHJlc3Npb246e3BhdHRlcm46LyhefFteXl0pXFwoKD86W14oKV18XFwoKD86W14oKV18XFwoKD86W14oKV0pKlxcKSkqXFwpKSpcXCkvLGdyZWVkeTohMCxsb29rYmVoaW5kOiEwLGluc2lkZTp7c3RyaW5nOntwYXR0ZXJuOi8oXnxbXl5dKShbXCInXSkoPzooPyFcXDIpW15eXXxcXF5bXFxzXFxTXSkqXFwyLyxsb29rYmVoaW5kOiEwfSxrZXl3b3JkOmUubGFuZ3VhZ2VzLnBhcnNlci5rZXl3b3JkLHZhcmlhYmxlOmUubGFuZ3VhZ2VzLnBhcnNlci52YXJpYWJsZSxmdW5jdGlvbjplLmxhbmd1YWdlcy5wYXJzZXIuZnVuY3Rpb24sYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvLG51bWJlcjovXFxiKD86MHhbYS1mXFxkXSt8XFxkK1xcLj9cXGQqKD86ZVsrLV0/XFxkKyk/KVxcYi9pLGVzY2FwZTplLmxhbmd1YWdlcy5wYXJzZXIuZXNjYXBlLG9wZXJhdG9yOi9bfisqXFwvXFxcXCVdfCEoPzpcXHxcXHw/fD0pP3wmJj98XFx8XFx8P3w9PXw8Wzw9XT98Pls+PV0/fC1bZmRdP3xcXGIoPzpkZWZ8ZXF8Z2V8Z3R8aW58aXN8bGV8bHR8bmUpXFxiLyxwdW5jdHVhdGlvbjplLmxhbmd1YWdlcy5wYXJzZXIucHVuY3R1YXRpb259fX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcImluc2lkZVwiLFwicHVuY3R1YXRpb25cIix7ZXhwcmVzc2lvbjplLmxhbmd1YWdlcy5wYXJzZXIuZXhwcmVzc2lvbixrZXl3b3JkOmUubGFuZ3VhZ2VzLnBhcnNlci5rZXl3b3JkLHZhcmlhYmxlOmUubGFuZ3VhZ2VzLnBhcnNlci52YXJpYWJsZSxmdW5jdGlvbjplLmxhbmd1YWdlcy5wYXJzZXIuZnVuY3Rpb24sZXNjYXBlOmUubGFuZ3VhZ2VzLnBhcnNlci5lc2NhcGUsXCJwYXJzZXItcHVuY3R1YXRpb25cIjp7cGF0dGVybjplLmxhbmd1YWdlcy5wYXJzZXIucHVuY3R1YXRpb24sYWxpYXM6XCJwdW5jdHVhdGlvblwifX0sZS5sYW5ndWFnZXMucGFyc2VyLnRhZy5pbnNpZGVbXCJhdHRyLXZhbHVlXCJdKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicGFyc2VyXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5wYXNjYWw9e2NvbW1lbnQ6Wy9cXChcXCpbXFxzXFxTXSs/XFwqXFwpLywvXFx7W1xcc1xcU10rP1xcfS8sL1xcL1xcLy4qL10sc3RyaW5nOntwYXR0ZXJuOi8oPzonKD86Jyd8W14nXFxyXFxuXSkqJ3wjWyYkJV0/W2EtZlxcZF0rKSt8XFxeW2Etel0vaSxncmVlZHk6ITB9LGtleXdvcmQ6W3twYXR0ZXJuOi8oXnxbXiZdKVxcYig/OmFic29sdXRlfGFycmF5fGFzbXxiZWdpbnxjYXNlfGNvbnN0fGNvbnN0cnVjdG9yfGRlc3RydWN0b3J8ZG98ZG93bnRvfGVsc2V8ZW5kfGZpbGV8Zm9yfGZ1bmN0aW9ufGdvdG98aWZ8aW1wbGVtZW50YXRpb258aW5oZXJpdGVkfGlubGluZXxpbnRlcmZhY2V8bGFiZWx8bmlsfG9iamVjdHxvZnxvcGVyYXRvcnxwYWNrZWR8cHJvY2VkdXJlfHByb2dyYW18cmVjb3JkfHJlaW50cm9kdWNlfHJlcGVhdHxzZWxmfHNldHxzdHJpbmd8dGhlbnx0b3x0eXBlfHVuaXR8dW50aWx8dXNlc3x2YXJ8d2hpbGV8d2l0aClcXGIvaSxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W14mXSlcXGIoPzpkaXNwb3NlfGV4aXR8ZmFsc2V8bmV3fHRydWUpXFxiL2ksbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhefFteJl0pXFxiKD86Y2xhc3N8ZGlzcGludGVyZmFjZXxleGNlcHR8ZXhwb3J0c3xmaW5hbGl6YXRpb258ZmluYWxseXxpbml0aWFsaXphdGlvbnxpbmxpbmV8bGlicmFyeXxvbnxvdXR8cGFja2VkfHByb3BlcnR5fHJhaXNlfHJlc291cmNlc3RyaW5nfHRocmVhZHZhcnx0cnkpXFxiL2ksbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhefFteJl0pXFxiKD86YWJzb2x1dGV8YWJzdHJhY3R8YWxpYXN8YXNzZW1ibGVyfGJpdHBhY2tlZHxicmVha3xjZGVjbHxjb250aW51ZXxjcHBkZWNsfGN2YXJ8ZGVmYXVsdHxkZXByZWNhdGVkfGR5bmFtaWN8ZW51bWVyYXRvcnxleHBlcmltZW50YWx8ZXhwb3J0fGV4dGVybmFsfGZhcnxmYXIxNnxmb3J3YXJkfGdlbmVyaWN8aGVscGVyfGltcGxlbWVudHN8aW5kZXh8aW50ZXJydXB0fGlvY2hlY2tzfGxvY2FsfG1lc3NhZ2V8bmFtZXxuZWFyfG5vZGVmYXVsdHxub3JldHVybnxub3N0YWNrZnJhbWV8b2xkZnBjY2FsbHxvdGhlcndpc2V8b3ZlcmxvYWR8b3ZlcnJpZGV8cGFzY2FsfHBsYXRmb3JtfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xwdWJsaXNoZWR8cmVhZHxyZWdpc3RlcnxyZWludHJvZHVjZXxyZXN1bHR8c2FmZWNhbGx8c2F2ZXJlZ2lzdGVyc3xzb2Z0ZmxvYXR8c3BlY2lhbGl6ZXxzdGF0aWN8c3RkY2FsbHxzdG9yZWR8c3RyaWN0fHVuYWxpZ25lZHx1bmltcGxlbWVudGVkfHZhcmFyZ3N8dmlydHVhbHx3cml0ZSlcXGIvaSxsb29rYmVoaW5kOiEwfV0sbnVtYmVyOlsvKD86WyYlXVxcZCt8XFwkW2EtZlxcZF0rKS9pLC9cXGJcXGQrKD86XFwuXFxkKyk/KD86ZVsrLV0/XFxkKyk/L2ldLG9wZXJhdG9yOlsvXFwuXFwufFxcKlxcKnw6PXw8Wzw9Pl0/fD5bPj1dP3xbK1xcLSpcXC9dPT98W0BePV0vaSx7cGF0dGVybjovKF58W14mXSlcXGIoPzphbmR8YXN8ZGl2fGV4Y2x1ZGV8aW58aW5jbHVkZXxpc3xtb2R8bm90fG9yfHNobHxzaHJ8eG9yKVxcYi8sbG9va2JlaGluZDohMH1dLHB1bmN0dWF0aW9uOi9cXChcXC58XFwuXFwpfFsoKVxcW1xcXTo7LC5dL30sZS5sYW5ndWFnZXMub2JqZWN0cGFzY2FsPWUubGFuZ3VhZ2VzLnBhc2NhbH1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicGFzY2FsXCIsci5hbGlhc2VzPVtcIm9iamVjdHBhc2NhbFwiXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucGVybD17Y29tbWVudDpbe3BhdHRlcm46LyheXFxzKik9XFx3K1tcXHNcXFNdKj89Y3V0LiovbSxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W15cXFxcJF0pIy4qLyxsb29rYmVoaW5kOiEwfV0sc3RyaW5nOlt7cGF0dGVybjovXFxiKD86cXxxcXxxeHxxdylcXHMqKFteYS16QS1aMC05XFxzeyhcXFs8XSkoPzooPyFcXDEpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMS8sZ3JlZWR5OiEwfSx7cGF0dGVybjovXFxiKD86cXxxcXxxeHxxdylcXHMrKFthLXpBLVowLTldKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFxbXFxzXFxTXSkqXFwxLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi9cXGIoPzpxfHFxfHF4fHF3KVxccypcXCgoPzpbXigpXFxcXF18XFxcXFtcXHNcXFNdKSpcXCkvLGdyZWVkeTohMH0se3BhdHRlcm46L1xcYig/OnF8cXF8cXh8cXcpXFxzKlxceyg/Oltee31cXFxcXXxcXFxcW1xcc1xcU10pKlxcfS8sZ3JlZWR5OiEwfSx7cGF0dGVybjovXFxiKD86cXxxcXxxeHxxdylcXHMqXFxbKD86W15bXFxdXFxcXF18XFxcXFtcXHNcXFNdKSpcXF0vLGdyZWVkeTohMH0se3BhdHRlcm46L1xcYig/OnF8cXF8cXh8cXcpXFxzKjwoPzpbXjw+XFxcXF18XFxcXFtcXHNcXFNdKSo+LyxncmVlZHk6ITB9LHtwYXR0ZXJuOi8oXCJ8YCkoPzooPyFcXDEpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMS8sZ3JlZWR5OiEwfSx7cGF0dGVybjovJyg/OlteJ1xcXFxcXHJcXG5dfFxcXFwuKSonLyxncmVlZHk6ITB9XSxyZWdleDpbe3BhdHRlcm46L1xcYig/Om18cXIpXFxzKihbXmEtekEtWjAtOVxcc3soXFxbPF0pKD86KD8hXFwxKVteXFxcXF18XFxcXFtcXHNcXFNdKSpcXDFbbXNpeHBvZHVhbG5nY10qLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi9cXGIoPzptfHFyKVxccysoW2EtekEtWjAtOV0pKD86KD8hXFwxKVteXFxcXF18XFxcXFtcXHNcXFNdKSpcXDFbbXNpeHBvZHVhbG5nY10qLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi9cXGIoPzptfHFyKVxccypcXCgoPzpbXigpXFxcXF18XFxcXFtcXHNcXFNdKSpcXClbbXNpeHBvZHVhbG5nY10qLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi9cXGIoPzptfHFyKVxccypcXHsoPzpbXnt9XFxcXF18XFxcXFtcXHNcXFNdKSpcXH1bbXNpeHBvZHVhbG5nY10qLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi9cXGIoPzptfHFyKVxccypcXFsoPzpbXltcXF1cXFxcXXxcXFxcW1xcc1xcU10pKlxcXVttc2l4cG9kdWFsbmdjXSovLGdyZWVkeTohMH0se3BhdHRlcm46L1xcYig/Om18cXIpXFxzKjwoPzpbXjw+XFxcXF18XFxcXFtcXHNcXFNdKSo+W21zaXhwb2R1YWxuZ2NdKi8sZ3JlZWR5OiEwfSx7cGF0dGVybjovKF58W14tXVxcYikoPzpzfHRyfHkpXFxzKihbXmEtekEtWjAtOVxcc3soXFxbPF0pKD86KD8hXFwyKVteXFxcXF18XFxcXFtcXHNcXFNdKSpcXDIoPzooPyFcXDIpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMlttc2l4cG9kdWFsbmdjZXJdKi8sbG9va2JlaGluZDohMCxncmVlZHk6ITB9LHtwYXR0ZXJuOi8oXnxbXi1dXFxiKSg/OnN8dHJ8eSlcXHMrKFthLXpBLVowLTldKSg/Oig/IVxcMilbXlxcXFxdfFxcXFxbXFxzXFxTXSkqXFwyKD86KD8hXFwyKVteXFxcXF18XFxcXFtcXHNcXFNdKSpcXDJbbXNpeHBvZHVhbG5nY2VyXSovLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfSx7cGF0dGVybjovKF58W14tXVxcYikoPzpzfHRyfHkpXFxzKlxcKCg/OlteKClcXFxcXXxcXFxcW1xcc1xcU10pKlxcKVxccypcXCgoPzpbXigpXFxcXF18XFxcXFtcXHNcXFNdKSpcXClbbXNpeHBvZHVhbG5nY2VyXSovLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfSx7cGF0dGVybjovKF58W14tXVxcYikoPzpzfHRyfHkpXFxzKlxceyg/Oltee31cXFxcXXxcXFxcW1xcc1xcU10pKlxcfVxccypcXHsoPzpbXnt9XFxcXF18XFxcXFtcXHNcXFNdKSpcXH1bbXNpeHBvZHVhbG5nY2VyXSovLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfSx7cGF0dGVybjovKF58W14tXVxcYikoPzpzfHRyfHkpXFxzKlxcWyg/OlteW1xcXVxcXFxdfFxcXFxbXFxzXFxTXSkqXFxdXFxzKlxcWyg/OlteW1xcXVxcXFxdfFxcXFxbXFxzXFxTXSkqXFxdW21zaXhwb2R1YWxuZ2Nlcl0qLyxsb29rYmVoaW5kOiEwLGdyZWVkeTohMH0se3BhdHRlcm46LyhefFteLV1cXGIpKD86c3x0cnx5KVxccyo8KD86W148PlxcXFxdfFxcXFxbXFxzXFxTXSkqPlxccyo8KD86W148PlxcXFxdfFxcXFxbXFxzXFxTXSkqPlttc2l4cG9kdWFsbmdjZXJdKi8sbG9va2JlaGluZDohMCxncmVlZHk6ITB9LHtwYXR0ZXJuOi9cXC8oPzpbXlxcL1xcXFxcXHJcXG5dfFxcXFwuKSpcXC9bbXNpeHBvZHVhbG5nY10qKD89XFxzKig/OiR8W1xcclxcbiwuO30pJnxcXC0rKn48PiE/Xl18KGx0fGd0fGxlfGdlfGVxfG5lfGNtcHxub3R8YW5kfG9yfHhvcnx4KVxcYikpLyxncmVlZHk6ITB9XSx2YXJpYWJsZTpbL1smKiRAJV1cXHtcXF5bQS1aXStcXH0vLC9bJiokQCVdXFxeW0EtWl9dLywvWyYqJEAlXSM/KD89XFx7KS8sL1smKiRAJV0jPyg/Oig/Ojo6KSonPyg/IVxcZClbXFx3JF0rKSsoPzo6OikqL2ksL1smKiRAJV1cXGQrLywvKD8hJT0pWyRAJV1bIVwiIyQlJicoKSorLFxcLS5cXC86Ozw9Pj9AW1xcXFxcXF1eX2B7fH1+XS9dLGZpbGVoYW5kbGU6e3BhdHRlcm46LzwoPyFbPD1dKVxcUyo+fFxcYl9cXGIvLGFsaWFzOlwic3ltYm9sXCJ9LHZzdHJpbmc6e3BhdHRlcm46L3ZcXGQrKD86XFwuXFxkKykqfFxcZCsoPzpcXC5cXGQrKXsyLH0vLGFsaWFzOlwic3RyaW5nXCJ9LGZ1bmN0aW9uOntwYXR0ZXJuOi9zdWIgW2EtejAtOV9dKy9pLGluc2lkZTp7a2V5d29yZDovc3ViL319LGtleXdvcmQ6L1xcYig/OmFueXxicmVha3xjb250aW51ZXxkZWZhdWx0fGRlbGV0ZXxkaWV8ZG98ZWxzZXxlbHNpZnxldmFsfGZvcnxmb3JlYWNofGdpdmVufGdvdG98aWZ8bGFzdHxsb2NhbHxteXxuZXh0fG91cnxwYWNrYWdlfHByaW50fHJlZG98cmVxdWlyZXxzYXl8c3RhdGV8c3VifHN3aXRjaHx1bmRlZnx1bmxlc3N8dW50aWx8dXNlfHdoZW58d2hpbGUpXFxiLyxudW1iZXI6L1xcYig/OjB4W1xcZEEtRmEtZl0oPzpfP1tcXGRBLUZhLWZdKSp8MGJbMDFdKD86Xz9bMDFdKSp8KD86XFxkKD86Xz9cXGQpKik/XFwuP1xcZCg/Ol8/XFxkKSooPzpbRWVdWystXT9cXGQrKT8pXFxiLyxvcGVyYXRvcjovLVtyd3hvUldYT2V6c2ZkbHBTYmN0dWdrVEJNQUNdXFxifFxcK1srPV0/fC1bLT0+XT98XFwqXFwqPz0/fFxcL1xcLz89P3w9Wz1+Pl0/fH5bfj1dP3xcXHxcXHw/PT98JiY/PT98PCg/Oj0+P3w8PT8pP3w+Pj89P3whW349XT98WyVeXT0/fFxcLig/Oj18XFwuXFwuPyk/fFtcXFxcP118XFxieCg/Oj18XFxiKXxcXGIoPzpsdHxndHxsZXxnZXxlcXxuZXxjbXB8bm90fGFuZHxvcnx4b3IpXFxiLyxwdW5jdHVhdGlvbjovW3t9W1xcXTsoKSw6XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJwZXJsXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigxNjYpO2Z1bmN0aW9uIG8oZSl7ZS5yZWdpc3RlcihyKSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJwaHBcIixcInZhcmlhYmxlXCIse3RoaXM6L1xcJHRoaXNcXGIvLGdsb2JhbDovXFwkKD86Xyg/OlNFUlZFUnxHRVR8UE9TVHxGSUxFU3xSRVFVRVNUfFNFU1NJT058RU5WfENPT0tJRSl8R0xPQkFMU3xIVFRQX1JBV19QT1NUX0RBVEF8YXJnY3xhcmd2fHBocF9lcnJvcm1zZ3xodHRwX3Jlc3BvbnNlX2hlYWRlcilcXGIvLHNjb3BlOntwYXR0ZXJuOi9cXGJbXFx3XFxcXF0rOjovLGluc2lkZTp7a2V5d29yZDovc3RhdGljfHNlbGZ8cGFyZW50LyxwdW5jdHVhdGlvbjovOjp8XFxcXC99fX0pfWUuZXhwb3J0cz1vLG8uZGlzcGxheU5hbWU9XCJwaHBFeHRyYXNcIixvLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDE2Nyk7ZnVuY3Rpb24gbyhlKXtlLnJlZ2lzdGVyKHIpLGUubGFuZ3VhZ2VzLnBsc3FsPWUubGFuZ3VhZ2VzLmV4dGVuZChcInNxbFwiLHtjb21tZW50OlsvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy8sLy0tLiovXX0pLFwiQXJyYXlcIiE9PWUudXRpbC50eXBlKGUubGFuZ3VhZ2VzLnBsc3FsLmtleXdvcmQpJiYoZS5sYW5ndWFnZXMucGxzcWwua2V5d29yZD1bZS5sYW5ndWFnZXMucGxzcWwua2V5d29yZF0pLGUubGFuZ3VhZ2VzLnBsc3FsLmtleXdvcmQudW5zaGlmdCgvXFxiKD86QUNDRVNTfEFHRU5UfEFHR1JFR0FURXxBUlJBWXxBUlJPV3xBVHxBVFRSSUJVVEV8QVVESVR8QVVUSElEfEJGSUxFX0JBU0V8QkxPQl9CQVNFfEJMT0NLfEJPRFl8Qk9USHxCT1VORHxCWVRFfENBTExJTkd8Q0hBUl9CQVNFfENIQVJTRVQoPzpGT1JNfElEKXxDTE9CX0JBU0V8Q09MQVVUSHxDT0xMRUNUfENMVVNURVJTP3xDT01QSUxFRHxDT01QUkVTU3xDT05TVEFOVHxDT05TVFJVQ1RPUnxDT05URVhUfENSQVNIfENVU1RPTURBVFVNfERBTkdMSU5HfERBVEVfQkFTRXxERUZJTkV8REVURVJNSU5JU1RJQ3xEVVJBVElPTnxFTEVNRU5UfEVNUFRZfEVYQ0VQVElPTlM/fEVYQ0xVU0lWRXxFWFRFUk5BTHxGSU5BTHxGT1JBTEx8Rk9STXxGT1VORHxHRU5FUkFMfEhFQVB8SElEREVOfElERU5USUZJRUR8SU1NRURJQVRFfElOQ0xVRElOR3xJTkNSRU1FTlR8SU5ESUNBVE9SfElOREVYRVN8SU5ESUNFU3xJTkZJTklURXxJTklUSUFMfElTT1BFTnxJTlNUQU5USUFCTEV8SU5URVJGQUNFfElOVkFMSURBVEV8SkFWQXxMQVJHRXxMRUFESU5HfExFTkdUSHxMSUJSQVJZfExJS0VbMjRDXXxMSU1JVEVEfExPTkd8TE9PUHxNQVB8TUFYRVhURU5UU3xNQVhMRU58TUVNQkVSfE1JTlVTfE1MU0xBQkVMfE1VTFRJU0VUfE5BTUV8TkFOfE5BVElWRXxORVd8Tk9BVURJVHxOT0NPTVBSRVNTfE5PQ09QWXxOT1RGT1VORHxOT1dBSVR8TlVNQkVSKD86X0JBU0UpP3xPQkpFQ1R8T0NJKD86Q09MTHxEQVRFfERBVEVUSU1FfERVUkFUSU9OfElOVEVSVkFMfExPQkxPQ0FUT1J8TlVNQkVSfFJBV3xSRUZ8UkVGQ1VSU09SfFJPV0lEfFNUUklOR3xUWVBFKXxPRkZMSU5FfE9OTElORXxPTkxZfE9QQVFVRXxPUEVSQVRPUnxPUkFDTEV8T1JBREFUQXxPUkdBTklaQVRJT058T1JMKD86QU5ZfFZBUlkpfE9USEVSU3xPVkVSTEFQU3xPVkVSUklESU5HfFBBQ0tBR0V8UEFSQUxMRUxfRU5BQkxFfFBBUkFNRVRFUlM/fFBBU0NBTHxQQ1RGUkVFfFBJUEUoPzpMSU5FRCk/fFBSQUdNQXxQUklPUnxQUklWQVRFfFJBSVNFfFJBTkdFfFJBV3xSRUNPUkR8UkVGfFJFRkVSRU5DRXxSRU18UkVNQUlOREVSfFJFU1VMVHxSRVNPVVJDRXxSRVRVUk5JTkd8UkVWRVJTRXxST1coPzpJRHxOVU18VFlQRSl8U0FNUExFfFNCWzEyNF18U0VHTUVOVHxTRUxGfFNFUEFSQVRFfFNFUVVFTkNFfFNIT1JUfFNJWkUoPzpfVCk/fFNQQVJTRXxTUUwoPzpDT0RFfERBVEF8TkFNRXxTVEFURSl8U1RBTkRBUkR8U1RBVElDfFNURERFVnxTVE9SRUR8U1RSSU5HfFNUUlVDVHxTVFlMRXxTVUJNVUxUSVNFVHxTVUJQQVJUSVRJT058U1VCU1RJVFVUQUJMRXxTVUJUWVBFfFNVQ0NFU1NGVUx8U1lOT05ZTXxTWVNEQVRFfFRBQkFVVEh8VERPfFRIRXxUSU1FWk9ORV8oPzpBQkJSfEhPVVJ8TUlOVVRFfFJFR0lPTil8VFJBSUxJTkd8VFJBTlNBQyg/OlRJT05BTCk/fFRSVVNURUR8VUJbMTI0XXxVSUR8VU5ERVJ8VU5UUlVTVEVEfFZBTElEQVRFfFZBTElTVHxWQVJDSEFSMnxWQVJJQUJMRXxWQVJJQU5DRXxWQVJSQVl8VklFV1N8Vk9JRHxXSEVORVZFUnxXUkFQUEVEfFpPTkUpXFxiL2kpLFwiQXJyYXlcIiE9PWUudXRpbC50eXBlKGUubGFuZ3VhZ2VzLnBsc3FsLm9wZXJhdG9yKSYmKGUubGFuZ3VhZ2VzLnBsc3FsLm9wZXJhdG9yPVtlLmxhbmd1YWdlcy5wbHNxbC5vcGVyYXRvcl0pLGUubGFuZ3VhZ2VzLnBsc3FsLm9wZXJhdG9yLnVuc2hpZnQoLzo9Lyl9ZS5leHBvcnRzPW8sby5kaXNwbGF5TmFtZT1cInBsc3FsXCIsby5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5wb3dlcnNoZWxsPXtjb21tZW50Olt7cGF0dGVybjovKF58W15gXSk8I1tcXHNcXFNdKj8jPi8sbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhefFteYF0pIy4qLyxsb29rYmVoaW5kOiEwfV0sc3RyaW5nOlt7cGF0dGVybjovXCIoPzpgW1xcc1xcU118W15gXCJdKSpcIi8sZ3JlZWR5OiEwLGluc2lkZTp7ZnVuY3Rpb246e3BhdHRlcm46LyhefFteYF0pXFwkXFwoKD86XFwkXFwoLio/XFwpfCg/IVxcJFxcKClbXlxcclxcbildKSpcXCkvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOnt9fX19LHtwYXR0ZXJuOi8nKD86W14nXXwnJykqJy8sZ3JlZWR5OiEwfV0sbmFtZXNwYWNlOi9cXFtbYS16XSg/OlxcWyg/OlxcW1teXFxdXSpdfFteXFxbXFxdXSkqXXxbXlxcW1xcXV0pKl0vaSxib29sZWFuOi9cXCQoPzp0cnVlfGZhbHNlKVxcYi9pLHZhcmlhYmxlOi9cXCRcXHcrXFxiL2ksZnVuY3Rpb246Wy9cXGIoPzpBZGQtKD86Q29tcHV0ZXJ8Q29udGVudHxIaXN0b3J5fE1lbWJlcnxQU1NuYXBpbnxUeXBlKXxDaGVja3BvaW50LUNvbXB1dGVyfENsZWFyLSg/OkNvbnRlbnR8RXZlbnRMb2d8SGlzdG9yeXxJdGVtfEl0ZW1Qcm9wZXJ0eXxWYXJpYWJsZSl8Q29tcGFyZS1PYmplY3R8Q29tcGxldGUtVHJhbnNhY3Rpb258Q29ubmVjdC1QU1Nlc3Npb258Q29udmVydEZyb20tKD86Q3N2fEpzb258U3RyaW5nRGF0YSl8Q29udmVydC1QYXRofENvbnZlcnRUby0oPzpDc3Z8SHRtbHxKc29ufFhtbCl8Q29weS0oPzpJdGVtfEl0ZW1Qcm9wZXJ0eSl8RGVidWctUHJvY2Vzc3xEaXNhYmxlLSg/OkNvbXB1dGVyUmVzdG9yZXxQU0JyZWFrcG9pbnR8UFNSZW1vdGluZ3xQU1Nlc3Npb25Db25maWd1cmF0aW9uKXxEaXNjb25uZWN0LVBTU2Vzc2lvbnxFbmFibGUtKD86Q29tcHV0ZXJSZXN0b3JlfFBTQnJlYWtwb2ludHxQU1JlbW90aW5nfFBTU2Vzc2lvbkNvbmZpZ3VyYXRpb24pfEVudGVyLVBTU2Vzc2lvbnxFeGl0LVBTU2Vzc2lvbnxFeHBvcnQtKD86QWxpYXN8Q2xpeG1sfENvbnNvbGV8Q3N2fEZvcm1hdERhdGF8TW9kdWxlTWVtYmVyfFBTU2Vzc2lvbil8Rm9yRWFjaC1PYmplY3R8Rm9ybWF0LSg/OkN1c3RvbXxMaXN0fFRhYmxlfFdpZGUpfEdldC0oPzpBbGlhc3xDaGlsZEl0ZW18Q29tbWFuZHxDb21wdXRlclJlc3RvcmVQb2ludHxDb250ZW50fENvbnRyb2xQYW5lbEl0ZW18Q3VsdHVyZXxEYXRlfEV2ZW50fEV2ZW50TG9nfEV2ZW50U3Vic2NyaWJlcnxGb3JtYXREYXRhfEhlbHB8SGlzdG9yeXxIb3N0fEhvdEZpeHxJdGVtfEl0ZW1Qcm9wZXJ0eXxKb2J8TG9jYXRpb258TWVtYmVyfE1vZHVsZXxQcm9jZXNzfFBTQnJlYWtwb2ludHxQU0NhbGxTdGFja3xQU0RyaXZlfFBTUHJvdmlkZXJ8UFNTZXNzaW9ufFBTU2Vzc2lvbkNvbmZpZ3VyYXRpb258UFNTbmFwaW58UmFuZG9tfFNlcnZpY2V8VHJhY2VTb3VyY2V8VHJhbnNhY3Rpb258VHlwZURhdGF8VUlDdWx0dXJlfFVuaXF1ZXxWYXJpYWJsZXxXbWlPYmplY3QpfEdyb3VwLU9iamVjdHxJbXBvcnQtKD86QWxpYXN8Q2xpeG1sfENzdnxMb2NhbGl6ZWREYXRhfE1vZHVsZXxQU1Nlc3Npb24pfEludm9rZS0oPzpDb21tYW5kfEV4cHJlc3Npb258SGlzdG9yeXxJdGVtfFJlc3RNZXRob2R8V2ViUmVxdWVzdHxXbWlNZXRob2QpfEpvaW4tUGF0aHxMaW1pdC1FdmVudExvZ3xNZWFzdXJlLSg/OkNvbW1hbmR8T2JqZWN0KXxNb3ZlLSg/Okl0ZW18SXRlbVByb3BlcnR5KXxOZXctKD86QWxpYXN8RXZlbnR8RXZlbnRMb2d8SXRlbXxJdGVtUHJvcGVydHl8TW9kdWxlfE1vZHVsZU1hbmlmZXN0fE9iamVjdHxQU0RyaXZlfFBTU2Vzc2lvbnxQU1Nlc3Npb25Db25maWd1cmF0aW9uRmlsZXxQU1Nlc3Npb25PcHRpb258UFNUcmFuc3BvcnRPcHRpb258U2VydmljZXxUaW1lU3BhbnxWYXJpYWJsZXxXZWJTZXJ2aWNlUHJveHkpfE91dC0oPzpEZWZhdWx0fEZpbGV8R3JpZFZpZXd8SG9zdHxOdWxsfFByaW50ZXJ8U3RyaW5nKXxQb3AtTG9jYXRpb258UHVzaC1Mb2NhdGlvbnxSZWFkLUhvc3R8UmVjZWl2ZS0oPzpKb2J8UFNTZXNzaW9uKXxSZWdpc3Rlci0oPzpFbmdpbmVFdmVudHxPYmplY3RFdmVudHxQU1Nlc3Npb25Db25maWd1cmF0aW9ufFdtaUV2ZW50KXxSZW1vdmUtKD86Q29tcHV0ZXJ8RXZlbnR8RXZlbnRMb2d8SXRlbXxJdGVtUHJvcGVydHl8Sm9ifE1vZHVsZXxQU0JyZWFrcG9pbnR8UFNEcml2ZXxQU1Nlc3Npb258UFNTbmFwaW58VHlwZURhdGF8VmFyaWFibGV8V21pT2JqZWN0KXxSZW5hbWUtKD86Q29tcHV0ZXJ8SXRlbXxJdGVtUHJvcGVydHkpfFJlc2V0LUNvbXB1dGVyTWFjaGluZVBhc3N3b3JkfFJlc29sdmUtUGF0aHxSZXN0YXJ0LSg/OkNvbXB1dGVyfFNlcnZpY2UpfFJlc3RvcmUtQ29tcHV0ZXJ8UmVzdW1lLSg/OkpvYnxTZXJ2aWNlKXxTYXZlLUhlbHB8U2VsZWN0LSg/Ok9iamVjdHxTdHJpbmd8WG1sKXxTZW5kLU1haWxNZXNzYWdlfFNldC0oPzpBbGlhc3xDb250ZW50fERhdGV8SXRlbXxJdGVtUHJvcGVydHl8TG9jYXRpb258UFNCcmVha3BvaW50fFBTRGVidWd8UFNTZXNzaW9uQ29uZmlndXJhdGlvbnxTZXJ2aWNlfFN0cmljdE1vZGV8VHJhY2VTb3VyY2V8VmFyaWFibGV8V21pSW5zdGFuY2UpfFNob3ctKD86Q29tbWFuZHxDb250cm9sUGFuZWxJdGVtfEV2ZW50TG9nKXxTb3J0LU9iamVjdHxTcGxpdC1QYXRofFN0YXJ0LSg/OkpvYnxQcm9jZXNzfFNlcnZpY2V8U2xlZXB8VHJhbnNhY3Rpb24pfFN0b3AtKD86Q29tcHV0ZXJ8Sm9ifFByb2Nlc3N8U2VydmljZSl8U3VzcGVuZC0oPzpKb2J8U2VydmljZSl8VGVlLU9iamVjdHxUZXN0LSg/OkNvbXB1dGVyU2VjdXJlQ2hhbm5lbHxDb25uZWN0aW9ufE1vZHVsZU1hbmlmZXN0fFBhdGh8UFNTZXNzaW9uQ29uZmlndXJhdGlvbkZpbGUpfFRyYWNlLUNvbW1hbmR8VW5ibG9jay1GaWxlfFVuZG8tVHJhbnNhY3Rpb258VW5yZWdpc3Rlci0oPzpFdmVudHxQU1Nlc3Npb25Db25maWd1cmF0aW9uKXxVcGRhdGUtKD86Rm9ybWF0RGF0YXxIZWxwfExpc3R8VHlwZURhdGEpfFVzZS1UcmFuc2FjdGlvbnxXYWl0LSg/OkV2ZW50fEpvYnxQcm9jZXNzKXxXaGVyZS1PYmplY3R8V3JpdGUtKD86RGVidWd8RXJyb3J8RXZlbnRMb2d8SG9zdHxPdXRwdXR8UHJvZ3Jlc3N8VmVyYm9zZXxXYXJuaW5nKSlcXGIvaSwvXFxiKD86YWN8Y2F0fGNoZGlyfGNsY3xjbGl8Y2xwfGNsdnxjb21wYXJlfGNvcHl8Y3B8Y3BpfGNwcHxjdnBhfGRicHxkZWx8ZGlmZnxkaXJ8ZWJwfGVjaG98ZXBhbHxlcGNzdnxlcHNufGVyYXNlfGZjfGZsfGZ0fGZ3fGdhbHxnYnB8Z2N8Z2NpfGdjc3xnZHJ8Z2l8Z2x8Z218Z3B8Z3BzfGdyb3VwfGdzdnxndXxndnxnd21pfGlleHxpaXxpcGFsfGlwY3N2fGlwc258aXJtfGl3bWl8aXdyfGtpbGx8bHB8bHN8bWVhc3VyZXxtaXxtb3VudHxtb3ZlfG1wfG12fG5hbHxuZHJ8bml8bnZ8b2d2fHBvcGR8cHN8cHVzaGR8cHdkfHJicHxyZHxyZHJ8cmVufHJpfHJtfHJtZGlyfHJuaXxybnB8cnB8cnZ8cnZwYXxyd21pfHNhbHxzYXBzfHNhc3Z8c2JwfHNjfHNlbGVjdHxzZXR8c2hjbXxzaXxzbHxzbGVlcHxzbHN8c29ydHxzcHxzcHBzfHNwc3Z8c3RhcnR8c3Z8c3dtaXx0ZWV8dHJjbXx0eXBlfHdyaXRlKVxcYi9pXSxrZXl3b3JkOi9cXGIoPzpCZWdpbnxCcmVha3xDYXRjaHxDbGFzc3xDb250aW51ZXxEYXRhfERlZmluZXxEb3xEeW5hbWljUGFyYW18RWxzZXxFbHNlSWZ8RW5kfEV4aXR8RmlsdGVyfEZpbmFsbHl8Rm9yfEZvckVhY2h8RnJvbXxGdW5jdGlvbnxJZnxJbmxpbmVTY3JpcHR8UGFyYWxsZWx8UGFyYW18UHJvY2Vzc3xSZXR1cm58U2VxdWVuY2V8U3dpdGNofFRocm93fFRyYXB8VHJ5fFVudGlsfFVzaW5nfFZhcnxXaGlsZXxXb3JrZmxvdylcXGIvaSxvcGVyYXRvcjp7cGF0dGVybjovKFxcVz8pKD86IXwtKGVxfG5lfGd0fGdlfGx0fGxlfHNoW2xyXXxub3R8Yj8oPzphbmR8eD9vcil8KD86Tm90KT8oPzpMaWtlfE1hdGNofENvbnRhaW5zfEluKXxSZXBsYWNlfEpvaW58aXMoPzpOb3QpP3xhcylcXGJ8LVstPV0/fFxcK1srPV0/fFsqXFwvJV09PykvaSxsb29rYmVoaW5kOiEwfSxwdW5jdHVhdGlvbjovW3x7fVtcXF07KCksLl0vfSxlLmxhbmd1YWdlcy5wb3dlcnNoZWxsLnN0cmluZ1swXS5pbnNpZGUuYm9vbGVhbj1lLmxhbmd1YWdlcy5wb3dlcnNoZWxsLmJvb2xlYW4sZS5sYW5ndWFnZXMucG93ZXJzaGVsbC5zdHJpbmdbMF0uaW5zaWRlLnZhcmlhYmxlPWUubGFuZ3VhZ2VzLnBvd2Vyc2hlbGwudmFyaWFibGUsZS5sYW5ndWFnZXMucG93ZXJzaGVsbC5zdHJpbmdbMF0uaW5zaWRlLmZ1bmN0aW9uLmluc2lkZT1lLmxhbmd1YWdlcy5wb3dlcnNoZWxsfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJwb3dlcnNoZWxsXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5wcm9jZXNzaW5nPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2tleXdvcmQ6L1xcYig/OmJyZWFrfGNhdGNofGNhc2V8Y2xhc3N8Y29udGludWV8ZGVmYXVsdHxlbHNlfGV4dGVuZHN8ZmluYWx8Zm9yfGlmfGltcGxlbWVudHN8aW1wb3J0fG5ld3xudWxsfHByaXZhdGV8cHVibGljfHJldHVybnxzdGF0aWN8c3VwZXJ8c3dpdGNofHRoaXN8dHJ5fHZvaWR8d2hpbGUpXFxiLyxvcGVyYXRvcjovPFs8PV0/fD5bPj1dP3wmJj98XFx8XFx8P3xbJT9dfFshPStcXC0qXFwvXT0/L30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInByb2Nlc3NpbmdcIixcIm51bWJlclwiLHtjb25zdGFudDovXFxiKD8hWE1MXFxiKVtBLVpdW0EtWlxcZF9dK1xcYi8sdHlwZTp7cGF0dGVybjovXFxiKD86Ym9vbGVhbnxieXRlfGNoYXJ8Y29sb3J8ZG91YmxlfGZsb2F0fGludHxYTUx8W0EtWl1cXHcqKVxcYi8sYWxpYXM6XCJ2YXJpYWJsZVwifX0pLGUubGFuZ3VhZ2VzLnByb2Nlc3NpbmcuZnVuY3Rpb24ucGF0dGVybj0vXFx3Kyg/PVxccypcXCgpLyxlLmxhbmd1YWdlcy5wcm9jZXNzaW5nW1wiY2xhc3MtbmFtZVwiXS5hbGlhcz1cInZhcmlhYmxlXCJ9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInByb2Nlc3NpbmdcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnByb2xvZz17Y29tbWVudDpbLyUuKy8sL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vXSxzdHJpbmc6e3BhdHRlcm46LyhbXCInXSkoPzpcXDFcXDF8XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfSxidWlsdGluOi9cXGIoPzpmeHxmeXx4Zlt4eV0/fHlmeD8pXFxiLyx2YXJpYWJsZTovXFxiW0EtWl9dXFx3Ki8sZnVuY3Rpb246L1xcYlthLXpdXFx3Kig/Oig/PVxcKCl8XFwvXFxkKykvLG51bWJlcjovXFxiXFxkK1xcLj9cXGQqLyxvcGVyYXRvcjovWzpcXFxcPT48XFwtPypAXFwvOytefCEkLl0rfFxcYig/OmlzfG1vZHxub3R8eG9yKVxcYi8scHVuY3R1YXRpb246L1soKXt9XFxbXFxdLF0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicHJvbG9nXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5wcm9wZXJ0aWVzPXtjb21tZW50Oi9eWyBcXHRdKlsjIV0uKiQvbSxcImF0dHItdmFsdWVcIjp7cGF0dGVybjovKF5bIFxcdF0qKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8W15cXFxcXFxzOj1dKSs/KD86ICpbPTpdICp8ICkpKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8W15cXFxcXFxyXFxuXSkrL20sbG9va2JlaGluZDohMH0sXCJhdHRyLW5hbWVcIjovXlsgXFx0XSooPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXxbXlxcXFxcXHM6PV0pKz8oPz0gKls9Ol0gKnwgKS9tLHB1bmN0dWF0aW9uOi9bPTpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInByb3BlcnRpZXNcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnByb3RvYnVmPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2tleXdvcmQ6L1xcYig/OnBhY2thZ2V8aW1wb3J0fG1lc3NhZ2V8ZW51bSlcXGIvLGJ1aWx0aW46L1xcYig/OnJlcXVpcmVkfHJlcGVhdGVkfG9wdGlvbmFsfHJlc2VydmVkKVxcYi8scHJpbWl0aXZlOntwYXR0ZXJuOi9cXGIoPzpkb3VibGV8ZmxvYXR8aW50MzJ8aW50NjR8dWludDMyfHVpbnQ2NHxzaW50MzJ8c2ludDY0fGZpeGVkMzJ8Zml4ZWQ2NHxzZml4ZWQzMnxzZml4ZWQ2NHxib29sfHN0cmluZ3xieXRlcylcXGIvLGFsaWFzOlwic3ltYm9sXCJ9fSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInByb3RvYnVmXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7ZS5sYW5ndWFnZXMucHVnPXtjb21tZW50OntwYXR0ZXJuOi8oXihbXFx0IF0qKSlcXC9cXC8uKig/Oig/Olxccj9cXG58XFxyKVxcMltcXHQgXSsuKykqL20sbG9va2JlaGluZDohMH0sXCJtdWx0aWxpbmUtc2NyaXB0XCI6e3BhdHRlcm46LyheKFtcXHQgXSopc2NyaXB0XFxiLipcXC5bXFx0IF0qKSg/Oig/Olxccj9cXG58XFxyKD8hXFxuKSkoPzpcXDJbXFx0IF0rLit8XFxzKj8oPz1cXHI/XFxufFxccikpKSsvbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy5qYXZhc2NyaXB0fX0sZmlsdGVyOntwYXR0ZXJuOi8oXihbXFx0IF0qKSk6LisoPzooPzpcXHI/XFxufFxccig/IVxcbikpKD86XFwyW1xcdCBdKy4rfFxccyo/KD89XFxyP1xcbnxcXHIpKSkrL20sbG9va2JlaGluZDohMCxpbnNpZGU6e1wiZmlsdGVyLW5hbWVcIjp7cGF0dGVybjovXjpbXFx3LV0rLyxhbGlhczpcInZhcmlhYmxlXCJ9fX0sXCJtdWx0aWxpbmUtcGxhaW4tdGV4dFwiOntwYXR0ZXJuOi8oXihbXFx0IF0qKVtcXHdcXC0jLl0rXFwuW1xcdCBdKikoPzooPzpcXHI/XFxufFxccig/IVxcbikpKD86XFwyW1xcdCBdKy4rfFxccyo/KD89XFxyP1xcbnxcXHIpKSkrL20sbG9va2JlaGluZDohMH0sbWFya3VwOntwYXR0ZXJuOi8oXltcXHQgXSopPC4rL20sbG9va2JlaGluZDohMCxpbnNpZGU6e3Jlc3Q6ZS5sYW5ndWFnZXMubWFya3VwfX0sZG9jdHlwZTp7cGF0dGVybjovKCg/Ol58XFxuKVtcXHQgXSopZG9jdHlwZSg/OiAuKyk/Lyxsb29rYmVoaW5kOiEwfSxcImZsb3ctY29udHJvbFwiOntwYXR0ZXJuOi8oXltcXHQgXSopKD86aWZ8dW5sZXNzfGVsc2V8Y2FzZXx3aGVufGRlZmF1bHR8ZWFjaHx3aGlsZSlcXGIoPzogLispPy9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntlYWNoOntwYXR0ZXJuOi9eZWFjaCAuKz8gaW5cXGIvLGluc2lkZTp7a2V5d29yZDovXFxiKD86ZWFjaHxpbilcXGIvLHB1bmN0dWF0aW9uOi8sL319LGJyYW5jaDp7cGF0dGVybjovXig/OmlmfHVubGVzc3xlbHNlfGNhc2V8d2hlbnxkZWZhdWx0fHdoaWxlKVxcYi8sYWxpYXM6XCJrZXl3b3JkXCJ9LHJlc3Q6ZS5sYW5ndWFnZXMuamF2YXNjcmlwdH19LGtleXdvcmQ6e3BhdHRlcm46LyheW1xcdCBdKikoPzpibG9ja3xleHRlbmRzfGluY2x1ZGV8YXBwZW5kfHByZXBlbmQpXFxiLisvbSxsb29rYmVoaW5kOiEwfSxtaXhpbjpbe3BhdHRlcm46LyheW1xcdCBdKiltaXhpbiAuKy9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntrZXl3b3JkOi9ebWl4aW4vLGZ1bmN0aW9uOi9cXHcrKD89XFxzKlxcKHxcXHMqJCkvLHB1bmN0dWF0aW9uOi9bKCksLl0vfX0se3BhdHRlcm46LyheW1xcdCBdKilcXCsuKy9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntuYW1lOntwYXR0ZXJuOi9eXFwrXFx3Ky8sYWxpYXM6XCJmdW5jdGlvblwifSxyZXN0OmUubGFuZ3VhZ2VzLmphdmFzY3JpcHR9fV0sc2NyaXB0OntwYXR0ZXJuOi8oXltcXHQgXSpzY3JpcHQoPzooPzomW14oXSspP1xcKFteKV0rXFwpKSpbXFx0IF0rKS4rL20sbG9va2JlaGluZDohMCxpbnNpZGU6e3Jlc3Q6ZS5sYW5ndWFnZXMuamF2YXNjcmlwdH19LFwicGxhaW4tdGV4dFwiOntwYXR0ZXJuOi8oXltcXHQgXSooPyEtKVtcXHdcXC0jLl0qW1xcd1xcLV0oPzooPzomW14oXSspP1xcKFteKV0rXFwpKSpcXC8/W1xcdCBdKykuKy9tLGxvb2tiZWhpbmQ6ITB9LHRhZzp7cGF0dGVybjovKF5bXFx0IF0qKSg/IS0pW1xcd1xcLSMuXSpbXFx3XFwtXSg/Oig/OiZbXihdKyk/XFwoW14pXStcXCkpKlxcLz86Py9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOnthdHRyaWJ1dGVzOlt7cGF0dGVybjovJlteKF0rXFwoW14pXStcXCkvLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy5qYXZhc2NyaXB0fX0se3BhdHRlcm46L1xcKFteKV0rXFwpLyxpbnNpZGU6e1wiYXR0ci12YWx1ZVwiOntwYXR0ZXJuOi8oPVxccyopKD86XFx7W159XSpcXH18W14sKVxcclxcbl0rKS8sbG9va2JlaGluZDohMCxpbnNpZGU6e3Jlc3Q6ZS5sYW5ndWFnZXMuamF2YXNjcmlwdH19LFwiYXR0ci1uYW1lXCI6L1tcXHctXSsoPz1cXHMqIT89fFxccypbLCldKS8scHVuY3R1YXRpb246L1shPSgpLF0rL319XSxwdW5jdHVhdGlvbjovOi99fSxjb2RlOlt7cGF0dGVybjovKF5bXFx0IF0qKD86LXwhPz0pKS4rL20sbG9va2JlaGluZDohMCxpbnNpZGU6e3Jlc3Q6ZS5sYW5ndWFnZXMuamF2YXNjcmlwdH19XSxwdW5jdHVhdGlvbjovWy5cXC0hPXxdKy99O2Zvcih2YXIgdD1be2ZpbHRlcjpcImF0cGxcIixsYW5ndWFnZTpcInR3aWdcIn0se2ZpbHRlcjpcImNvZmZlZVwiLGxhbmd1YWdlOlwiY29mZmVlc2NyaXB0XCJ9LFwiZWpzXCIsXCJoYW5kbGViYXJzXCIsXCJob2dhblwiLFwibGVzc1wiLFwibGl2ZXNjcmlwdFwiLFwibWFya2Rvd25cIixcIm11c3RhY2hlXCIsXCJwbGF0ZXNcIix7ZmlsdGVyOlwic2Fzc1wiLGxhbmd1YWdlOlwic2Nzc1wifSxcInN0eWx1c1wiLFwic3dpZ1wiXSxuPXt9LHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe3ZhciBhPXRbcl07YT1cInN0cmluZ1wiPT10eXBlb2YgYT97ZmlsdGVyOmEsbGFuZ3VhZ2U6YX06YSxlLmxhbmd1YWdlc1thLmxhbmd1YWdlXSYmKG5bXCJmaWx0ZXItXCIrYS5maWx0ZXJdPXtwYXR0ZXJuOlJlZ0V4cChcIiheKFtcXFxcdCBdKikpOnt7ZmlsdGVyX25hbWV9fSg/Oig/OlxcXFxyP1xcXFxufFxcXFxyKD8hXFxcXG4pKSg/OlxcXFwyW1xcXFx0IF0rLit8XFxcXHMqPyg/PVxcXFxyP1xcXFxufFxcXFxyKSkpK1wiLnJlcGxhY2UoXCJ7e2ZpbHRlcl9uYW1lfX1cIixhLmZpbHRlciksXCJtXCIpLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntcImZpbHRlci1uYW1lXCI6e3BhdHRlcm46L146W1xcdy1dKy8sYWxpYXM6XCJ2YXJpYWJsZVwifSxyZXN0OmUubGFuZ3VhZ2VzW2EubGFuZ3VhZ2VdfX0pfWUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInB1Z1wiLFwiZmlsdGVyXCIsbil9KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJwdWdcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5wdXBwZXQ9e2hlcmVkb2M6W3twYXR0ZXJuOi8oQFxcKFwiKFteXCJcXHJcXG5cXC8pOl0rKVwiKD86XFwvW25ydHMkdUxdKik/XFwpLiooPzpcXHI/XFxufFxccikpKD86LiooPzpcXHI/XFxufFxccikpKj9bIFxcdF0qXFx8P1sgXFx0XSotP1sgXFx0XSpcXDIvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzdHJpbmdcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi8oPz1cXFMpLipcXFMoPz0gKiQpL319LHtwYXR0ZXJuOi8oQFxcKChbXlwiXFxyXFxuXFwvKTpdKykoPzpcXC9bbnJ0cyR1TF0qKT9cXCkuKig/Olxccj9cXG58XFxyKSkoPzouKig/Olxccj9cXG58XFxyKSkqP1sgXFx0XSpcXHw/WyBcXHRdKi0/WyBcXHRdKlxcMi8sbG9va2JlaGluZDohMCxncmVlZHk6ITAsYWxpYXM6XCJzdHJpbmdcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi8oPz1cXFMpLipcXFMoPz0gKiQpL319LHtwYXR0ZXJuOi9AXFwoXCI/KD86W15cIlxcclxcblxcLyk6XSspXCI/KD86XFwvW25ydHMkdUxdKik/XFwpLyxhbGlhczpcInN0cmluZ1wiLGluc2lkZTp7cHVuY3R1YXRpb246e3BhdHRlcm46LyhcXCgpLis/KD89XFwpKS8sbG9va2JlaGluZDohMH19fV0sXCJtdWx0aWxpbmUtY29tbWVudFwiOntwYXR0ZXJuOi8oXnxbXlxcXFxdKVxcL1xcKltcXHNcXFNdKj9cXCpcXC8vLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwLGFsaWFzOlwiY29tbWVudFwifSxyZWdleDp7cGF0dGVybjovKCg/OlxcYm5vZGVcXHMrfFt+PVxcKFxcW1xceyxdXFxzKnxbPStdPlxccyp8XlxccyopKVxcLyg/OlteXFwvXFxcXF18XFxcXFtcXHNcXFNdKStcXC8oPzpbaW14XStcXGJ8XFxCKS8sbG9va2JlaGluZDohMCxncmVlZHk6ITAsaW5zaWRlOntcImV4dGVuZGVkLXJlZ2V4XCI6e3BhdHRlcm46L15cXC8oPzpbXlxcL1xcXFxdfFxcXFxbXFxzXFxTXSkrXFwvW2ltXSp4W2ltXSokLyxpbnNpZGU6e2NvbW1lbnQ6LyMuKi99fX19LGNvbW1lbnQ6e3BhdHRlcm46LyhefFteXFxcXF0pIy4qLyxsb29rYmVoaW5kOiEwLGdyZWVkeTohMH0sc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86XFwkXFx7KD86W14nXCJ9XXwoW1wiJ10pKD86KD8hXFwyKVteXFxcXF18XFxcXFtcXHNcXFNdKSpcXDIpK1xcfXwoPyFcXDEpW15cXFxcXXxcXFxcW1xcc1xcU10pKlxcMS8sZ3JlZWR5OiEwLGluc2lkZTp7XCJkb3VibGUtcXVvdGVkXCI6e3BhdHRlcm46L15cIltcXHNcXFNdKlwiJC8saW5zaWRlOnt9fX19LHZhcmlhYmxlOntwYXR0ZXJuOi9cXCQoPzo6Oik/XFx3Kyg/Ojo6XFx3KykqLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi86Oi99fSxcImF0dHItbmFtZVwiOi8oPzpcXHcrfFxcKikoPz1cXHMqPT4pLyxmdW5jdGlvbjpbe3BhdHRlcm46LyhcXC4pKD8hXFxkKVxcdysvLGxvb2tiZWhpbmQ6ITB9LC9cXGIoPzpjb250YWlufGRlYnVnfGVycnxmYWlsfGluY2x1ZGV8aW5mb3xub3RpY2V8cmVhbGl6ZXxyZXF1aXJlfHRhZ3x3YXJuaW5nKVxcYnxcXGIoPyFcXGQpXFx3Kyg/PVxcKCkvXSxudW1iZXI6L1xcYig/OjB4W2EtZlxcZF0rfFxcZCsoPzpcXC5cXGQrKT8oPzplLT9cXGQrKT8pXFxiL2ksYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvLGtleXdvcmQ6L1xcYig/OmFwcGxpY2F0aW9ufGF0dHJ8Y2FzZXxjbGFzc3xjb25zdW1lc3xkZWZhdWx0fGRlZmluZXxlbHNlfGVsc2lmfGZ1bmN0aW9ufGlmfGltcG9ydHxpbmhlcml0c3xub2RlfHByaXZhdGV8cHJvZHVjZXN8dHlwZXx1bmRlZnx1bmxlc3MpXFxiLyxkYXRhdHlwZTp7cGF0dGVybjovXFxiKD86QW55fEFycmF5fEJvb2xlYW58Q2FsbGFibGV8Q2F0YWxvZ2VudHJ5fENsYXNzfENvbGxlY3Rpb258RGF0YXxEZWZhdWx0fEVudW18RmxvYXR8SGFzaHxJbnRlZ2VyfE5vdFVuZGVmfE51bWVyaWN8T3B0aW9uYWx8UGF0dGVybnxSZWdleHB8UmVzb3VyY2V8UnVudGltZXxTY2FsYXJ8U3RyaW5nfFN0cnVjdHxUdXBsZXxUeXBlfFVuZGVmfFZhcmlhbnQpXFxiLyxhbGlhczpcInN5bWJvbFwifSxvcGVyYXRvcjovPVs9fj5dP3whWz1+XT98PCg/OjxcXHw/fFs9fnwtXSk/fD5bPj1dP3wtPj98fj58XFx8Pj8+P3xbKlxcLyUrP118XFxiKD86YW5kfGlufG9yKVxcYi8scHVuY3R1YXRpb246L1tcXFtcXF17fSgpLiw7XXw6Ky99O3ZhciB0PVt7cGF0dGVybjovKF58W15cXFxcXSlcXCRcXHsoPzpbXidcInt9XXxcXHtbXn1dKlxcfXwoW1wiJ10pKD86KD8hXFwyKVteXFxcXF18XFxcXFtcXHNcXFNdKSpcXDIpK1xcfS8sbG9va2JlaGluZDohMCxpbnNpZGU6e1wic2hvcnQtdmFyaWFibGVcIjp7cGF0dGVybjovKF5cXCRcXHspKD8hXFx3K1xcKCkoPzo6Oik/XFx3Kyg/Ojo6XFx3KykqLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwidmFyaWFibGVcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi86Oi99fSxkZWxpbWl0ZXI6e3BhdHRlcm46L15cXCQvLGFsaWFzOlwidmFyaWFibGVcIn0scmVzdDplLmxhbmd1YWdlcy5wdXBwZXR9fSx7cGF0dGVybjovKF58W15cXFxcXSlcXCQoPzo6Oik/XFx3Kyg/Ojo6XFx3KykqLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwidmFyaWFibGVcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi86Oi99fV07ZS5sYW5ndWFnZXMucHVwcGV0LmhlcmVkb2NbMF0uaW5zaWRlLmludGVycG9sYXRpb249dCxlLmxhbmd1YWdlcy5wdXBwZXQuc3RyaW5nLmluc2lkZVtcImRvdWJsZS1xdW90ZWRcIl0uaW5zaWRlLmludGVycG9sYXRpb249dH0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInB1cHBldFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oMzQpO2Z1bmN0aW9uIG8oZSl7ZS5yZWdpc3RlcihyKSxmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5wdXJlPXtjb21tZW50Olt7cGF0dGVybjovKF58W15cXFxcXSlcXC9cXCpbXFxzXFxTXSo/XFwqXFwvLyxsb29rYmVoaW5kOiEwfSx7cGF0dGVybjovKF58W15cXFxcOl0pXFwvXFwvLiovLGxvb2tiZWhpbmQ6ITB9LC8jIS4rL10sXCJpbmxpbmUtbGFuZ1wiOntwYXR0ZXJuOi8lPFtcXHNcXFNdKz8lPi8sZ3JlZWR5OiEwLGluc2lkZTp7bGFuZzp7cGF0dGVybjovKF4lPCAqKS1cXCotLis/LVxcKi0vLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJjb21tZW50XCJ9LGRlbGltaXRlcjp7cGF0dGVybjovXiU8Lip8JT4kLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9fX0sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlxcXFwufFteXCJcXFxcXFxyXFxuXSkqXCIvLGdyZWVkeTohMH0sbnVtYmVyOntwYXR0ZXJuOi8oKD86XFwuXFwuKT8pKD86XFxiKD86aW5mfG5hbilcXGJ8XFxiMHhbXFxkYS1mXSt8KD86XFxiKD86MGIpP1xcZCsoPzpcXC5cXGQpP3xcXEJcXC5cXGQpXFxkKig/OmVbKy1dP1xcZCspP0w/KS9pLGxvb2tiZWhpbmQ6ITB9LGtleXdvcmQ6L1xcYig/OmFuc3xicmVha3xidHxjYXNlfGNhdGNofGNkfGNsZWFyfGNvbnN0fGRlZnxkZWx8ZHVtcHxlbHNlfGVuZHxleGl0fGV4dGVybnxmYWxzZXxmb3JjZXxoZWxwfGlmfGluZml4W2xyXT98aW50ZXJmYWNlfGxldHxsc3xtZW18bmFtZXNwYWNlfG5vbmZpeHxOVUxMfG9mfG90aGVyd2lzZXxvdXRmaXh8b3ZlcnJpZGV8cG9zdGZpeHxwcmVmaXh8cHJpdmF0ZXxwdWJsaWN8cHdkfHF1aXR8cnVufHNhdmV8c2hvd3xzdGF0c3x0aGVufHRocm93fHRyYWNlfHRydWV8dHlwZXx1bmRlcnJpZGV8dXNpbmd8d2hlbnx3aXRoKVxcYi8sZnVuY3Rpb246L1xcYig/OmFic3xhZGRfKD86KD86ZnVuZGVmfGludGVyZmFjZXxtYWNkZWZ8dHlwZWRlZikoPzpfYXQpP3xhZGRyfGNvbnN0ZGVmfHZhcmRlZil8YWxsfGFueXxhcHBscD98YXJpdHl8YmlnaW50cD98YmxvYig/Ol9jcmN8X3NpemV8cCk/fGJvb2xwP3xieXRlXyg/Om1hdHJpeHxwb2ludGVyKXxieXRlX2M/c3RyaW5nKD86X3BvaW50ZXIpP3xjYWxsb2N8Y2F0fGNhdG1hcHxjZWlsfGNoYXJbcHNdP3xjaGVja19wdHJ0YWd8Y2hyfGNsZWFyX3NlbnRyeXxjbGVhcnN5bXxjbG9zdXJlcD98Y21hdHJpeHA/fGNvbHM/fGNvbGNhdCg/Om1hcCk/fGNvbG1hcHxjb2xyZXZ8Y29sdmVjdG9yKD86cHxzZXEpP3xjb21wbGV4KD86X2Zsb2F0Xyg/Om1hdHJpeHxwb2ludGVyKXxfbWF0cml4KD86X3ZpZXcpP3xfcG9pbnRlcnxwKT98Y29uanxjb29rZWRwP3xjc3R8Y3N0cmluZyg/Ol8oPzpkdXB8bGlzdHx2ZWN0b3IpKT98Y3VycnkzP3xjeWNsZW4/fGRlbF8oPzpjb25zdGRlZnxmdW5kZWZ8aW50ZXJmYWNlfG1hY2RlZnx0eXBlZGVmfHZhcmRlZil8ZGVsZXRlfGRpYWcoPzptYXQpP3xkaW18ZG1hdHJpeHA/fGRvfGRvdWJsZSg/Ol9tYXRyaXgoPzpfdmlldyk/fF9wb2ludGVyfHApP3xkb3dpdGgzP3xkcm9wfGRyb3B3aGlsZXxldmFsKD86Y21kKT98ZXhhY3RwfGZpbHRlcnxmaXh8Zml4aXR5fGZsaXB8ZmxvYXQoPzpfbWF0cml4fF9wb2ludGVyKXxmbG9vcnxmb2xkW2xyXTE/fGZyYWN8ZnJlZXxmdW5wP3xmdW5jdGlvbnA/fGdjZHxnZXQoPzpfKD86Ynl0ZXxjb25zdGRlZnxkb3VibGV8ZmxvYXR8ZnVuZGVmfGludCg/OjY0KT98aW50ZXJmYWNlKD86X3R5cGVkZWYpP3xsb25nfG1hY2RlZnxwb2ludGVyfHB0cnRhZ3xzaG9ydHxzZW50cnl8c3RyaW5nfHR5cGVkZWZ8dmFyZGVmKSk/fGdsb2JzeW18aGFzaHxoZWFkfGlkfGltfGltYXRyaXhwP3xpbmRleHxpbmV4YWN0cHxpbmZwfGluaXR8aW5zZXJ0fGludCg/Ol9tYXRyaXgoPzpfdmlldyk/fF9wb2ludGVyfHApP3xpbnQ2NF8oPzptYXRyaXh8cG9pbnRlcil8aW50ZWdlcnA/fGl0ZXJhdGVuP3xpdGVyd2hpbGV8am9pbnxrZXlzP3xsYW1iZGFwP3xsYXN0KD86ZXJyKD86cG9zKT8pP3xsY2R8bGlzdFsycF0/fGxpc3RtYXB8bWFrZV9wdHJ0YWd8bWFsbG9jfG1hcHxtYXRjYXR8bWF0cml4cD98bWF4fG1lbWJlcnxtaW58bmFucHxuYXJnc3xubWF0cml4cD98bnVsbHxudW1iZXJwP3xvcmR8cGFjayg/OmVkKT98cG9pbnRlcig/Ol9jYXN0fF90YWd8X3R5cGV8cCk/fHBvd3xwcmVkfHB0cnRhZ3xwdXQoPzpfKD86Ynl0ZXxkb3VibGV8ZmxvYXR8aW50KD86NjQpP3xsb25nfHBvaW50ZXJ8c2hvcnR8c3RyaW5nKSk/fHJhdGlvbmFscD98cmV8cmVhbHA/fHJlYWxsb2N8cmVjb3JkcD98cmVkaW18cmVkdWNlKD86X3dpdGgpP3xyZWZwP3xyZXBlYXRuP3xyZXZlcnNlfHJsaXN0cD98cm91bmR8cm93cz98cm93Y2F0KD86bWFwKT98cm93bWFwfHJvd3Jldnxyb3d2ZWN0b3IoPzpwfHNlcSk/fHNhbWV8c2Nhbltscl0xP3xzZW50cnl8c2dufHNob3J0Xyg/Om1hdHJpeHxwb2ludGVyKXxzbGljZXxzbWF0cml4cD98c29ydHxzcGxpdHxzdHJ8c3RyY2F0fHN0cmVhbXxzdHJpZGV8c3RyaW5nKD86Xyg/OmR1cHxsaXN0fHZlY3Rvcil8cCk/fHN1YmRpYWcoPzptYXQpP3xzdWJtYXR8c3Vic2VxMj98c3Vic3RyfHN1Y2N8c3VwZGlhZyg/Om1hdCk/fHN5bWJvbHA/fHRhaWx8dGFrZXx0YWtld2hpbGV8dGh1bmtwP3x0cmFuc3Bvc2V8dHJ1bmN8dHVwbGVwP3x0eXBlcHx1Ynl0ZXx1aW50KD86NjQpP3x1bG9uZ3x1bmN1cnJ5Mz98dW5yZWZ8dW56aXAzP3x1cGRhdGV8dXNob3J0fHZhbHM/fHZhcnA/fHZlY3Rvcig/OnB8c2VxKT98dm9pZHx6aXAzP3x6aXB3aXRoMz8pXFxiLyxzcGVjaWFsOntwYXR0ZXJuOi9cXGJfX1thLXpdK19fXFxiL2ksYWxpYXM6XCJidWlsdGluXCJ9LG9wZXJhdG9yOi8oPz1cXGJffFteX10pWyFcIiMkJSYnKissXFwtLlxcLzo8PT4/QFxcXFxeX2B8flxcdTAwYTEtXFx1MDBiZlxcdTAwZDctXFx1MDBmN1xcdTIwZDAtXFx1MmJmZl0rfFxcYig/OmFuZHxkaXZ8bW9kfG5vdHxvcilcXGIvLHB1bmN0dWF0aW9uOi9bKCl7fVxcW1xcXTssfF0vfTtbXCJjXCIse2xhbmc6XCJjKytcIixhbGlhczpcImNwcFwifSxcImZvcnRyYW5cIixcImF0c1wiLFwiZHNwXCJdLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49dDtpZihcInN0cmluZ1wiIT10eXBlb2YgdCYmKG49dC5hbGlhcyx0PXQubGFuZyksZS5sYW5ndWFnZXNbbl0pe3ZhciByPXt9O3JbXCJpbmxpbmUtbGFuZy1cIituXT17cGF0dGVybjpSZWdFeHAoXCIlPCAqLVxcXFwqLSAqe2xhbmd9XFxcXGQqICotXFxcXCotW1xcXFxzXFxcXFNdKz8lPlwiLnJlcGxhY2UoXCJ7bGFuZ31cIix0LnJlcGxhY2UoLyhbLisqP1xcL1xcXFwoKXt9XFxbXFxdXSkvZyxcIlxcXFwkMVwiKSksXCJpXCIpLGluc2lkZTplLnV0aWwuY2xvbmUoZS5sYW5ndWFnZXMucHVyZVtcImlubGluZS1sYW5nXCJdLmluc2lkZSl9LHJbXCJpbmxpbmUtbGFuZy1cIituXS5pbnNpZGUucmVzdD1lLnV0aWwuY2xvbmUoZS5sYW5ndWFnZXNbbl0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInB1cmVcIixcImlubGluZS1sYW5nXCIscil9fSksZS5sYW5ndWFnZXMuYyYmKGUubGFuZ3VhZ2VzLnB1cmVbXCJpbmxpbmUtbGFuZ1wiXS5pbnNpZGUucmVzdD1lLnV0aWwuY2xvbmUoZS5sYW5ndWFnZXMuYykpfShlKX1lLmV4cG9ydHM9byxvLmRpc3BsYXlOYW1lPVwicHVyZVwiLG8uYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucHl0aG9uPXtjb21tZW50OntwYXR0ZXJuOi8oXnxbXlxcXFxdKSMuKi8sbG9va2JlaGluZDohMH0sXCJ0cmlwbGUtcXVvdGVkLXN0cmluZ1wiOntwYXR0ZXJuOi8oXCJcIlwifCcnJylbXFxzXFxTXSs/XFwxLyxncmVlZHk6ITAsYWxpYXM6XCJzdHJpbmdcIn0sc3RyaW5nOntwYXR0ZXJuOi8oXCJ8JykoPzpcXFxcLnwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxncmVlZHk6ITB9LGZ1bmN0aW9uOntwYXR0ZXJuOi8oKD86XnxcXHMpZGVmWyBcXHRdKylbYS16QS1aX11cXHcqKD89XFxzKlxcKCkvZyxsb29rYmVoaW5kOiEwfSxcImNsYXNzLW5hbWVcIjp7cGF0dGVybjovKFxcYmNsYXNzXFxzKylcXHcrL2ksbG9va2JlaGluZDohMH0sa2V5d29yZDovXFxiKD86YXN8YXNzZXJ0fGFzeW5jfGF3YWl0fGJyZWFrfGNsYXNzfGNvbnRpbnVlfGRlZnxkZWx8ZWxpZnxlbHNlfGV4Y2VwdHxleGVjfGZpbmFsbHl8Zm9yfGZyb218Z2xvYmFsfGlmfGltcG9ydHxpbnxpc3xsYW1iZGF8bm9ubG9jYWx8cGFzc3xwcmludHxyYWlzZXxyZXR1cm58dHJ5fHdoaWxlfHdpdGh8eWllbGQpXFxiLyxidWlsdGluOi9cXGIoPzpfX2ltcG9ydF9ffGFic3xhbGx8YW55fGFwcGx5fGFzY2lpfGJhc2VzdHJpbmd8YmlufGJvb2x8YnVmZmVyfGJ5dGVhcnJheXxieXRlc3xjYWxsYWJsZXxjaHJ8Y2xhc3NtZXRob2R8Y21wfGNvZXJjZXxjb21waWxlfGNvbXBsZXh8ZGVsYXR0cnxkaWN0fGRpcnxkaXZtb2R8ZW51bWVyYXRlfGV2YWx8ZXhlY2ZpbGV8ZmlsZXxmaWx0ZXJ8ZmxvYXR8Zm9ybWF0fGZyb3plbnNldHxnZXRhdHRyfGdsb2JhbHN8aGFzYXR0cnxoYXNofGhlbHB8aGV4fGlkfGlucHV0fGludHxpbnRlcm58aXNpbnN0YW5jZXxpc3N1YmNsYXNzfGl0ZXJ8bGVufGxpc3R8bG9jYWxzfGxvbmd8bWFwfG1heHxtZW1vcnl2aWV3fG1pbnxuZXh0fG9iamVjdHxvY3R8b3BlbnxvcmR8cG93fHByb3BlcnR5fHJhbmdlfHJhd19pbnB1dHxyZWR1Y2V8cmVsb2FkfHJlcHJ8cmV2ZXJzZWR8cm91bmR8c2V0fHNldGF0dHJ8c2xpY2V8c29ydGVkfHN0YXRpY21ldGhvZHxzdHJ8c3VtfHN1cGVyfHR1cGxlfHR5cGV8dW5pY2hyfHVuaWNvZGV8dmFyc3x4cmFuZ2V8emlwKVxcYi8sYm9vbGVhbjovXFxiKD86VHJ1ZXxGYWxzZXxOb25lKVxcYi8sbnVtYmVyOi8oPzpcXGIoPz1cXGQpfFxcQig/PVxcLikpKD86MFtib10pPyg/Oig/OlxcZHwweFtcXGRhLWZdKVtcXGRhLWZdKlxcLj9cXGQqfFxcLlxcZCspKD86ZVsrLV0/XFxkKyk/aj9cXGIvaSxvcGVyYXRvcjovWy0rJT1dPT98IT18XFwqXFwqPz0/fFxcL1xcLz89P3w8Wzw9Pl0/fD5bPT5dP3xbJnxefl18XFxiKD86b3J8YW5kfG5vdClcXGIvLHB1bmN0dWF0aW9uOi9be31bXFxdOygpLC46XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJweXRob25cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnE9e3N0cmluZzovXCIoPzpcXFxcLnxbXlwiXFxcXFxcclxcbl0pKlwiLyxjb21tZW50Olt7cGF0dGVybjovKFtcXHQgKVxcXX1dKVxcLy4qLyxsb29rYmVoaW5kOiEwLGdyZWVkeTohMH0se3BhdHRlcm46LyhefFxccj9cXG58XFxyKVxcL1tcXHQgXSooPzooPzpcXHI/XFxufFxccikoPzouKig/Olxccj9cXG58XFxyKSkqPyg/OlxcXFwoPz1bXFx0IF0qKD86XFxyP1xcbnxcXHIpKXwkKXxcXFMuKikvLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfSx7cGF0dGVybjovXlxcXFxbXFx0IF0qKD86XFxyP1xcbnxcXHIpW1xcc1xcU10rL20sZ3JlZWR5OiEwfSx7cGF0dGVybjovXiMhLisvbSxncmVlZHk6ITB9XSxzeW1ib2w6L2AoPzo6XFxTK3xbXFx3Ll0qKS8sZGF0ZXRpbWU6e3BhdHRlcm46LzBOW21kenV2dF18MFdbZHR6XXxcXGR7NH1cXC5cXGRcXGQoPzptfFxcLlxcZFxcZCg/OlQoPzpcXGRcXGQoPzo6XFxkXFxkKD86OlxcZFxcZCg/OlsuOl1cXGRcXGRcXGQpPyk/KT8pPyk/W2R6XT8pfFxcZFxcZDpcXGRcXGQoPzo6XFxkXFxkKD86Wy46XVxcZFxcZFxcZCk/KT9bdXZ0XT8vLGFsaWFzOlwibnVtYmVyXCJ9LG51bWJlcjovXFxiKD8hWzAxXTopKD86MFt3bl18MFdbaGpdP3wwTltoamVdP3wweFtcXGRhLWZBLUZdK3xcXGQrXFwuP1xcZCooPzplWystXT9cXGQrKT9baGpmZWJdPykvLGtleXdvcmQ6L1xcXFxcXHcrXFxifFxcYig/OmFic3xhY29zfGFqMD98YWxsfGFuZHxhbnl8YXNjfGFzaW58YXNvZnxhdGFufGF0dHJ8YXZncz98Ymlucj98Ynl8Y2VpbGluZ3xjb2xzfGNvcnxjb3N8Y291bnR8Y292fGNyb3NzfGNzdnxjdXR8ZGVsZXRlfGRlbHRhc3xkZXNjfGRldnxkaWZmZXJ8ZGlzdGluY3R8ZGl2fGRvfGRzYXZlfGVqfGVubGlzdHxldmFsfGV4Y2VwdHxleGVjfGV4aXR8ZXhwfGZieXxmaWxsc3xmaXJzdHxma2V5c3xmbGlwfGZsb29yfGZyb218Z2V0fGdldGVudnxncm91cHxndGltZXxoY2xvc2V8aGNvdW50fGhkZWx8aG9wZW58aHN5bXxpYXNjfGlkZW50aXR5fGlkZXNjfGlmfGlqfGlufGluc2VydHxpbnRlcnxpbnZ8a2V5cz98bGFzdHxsaWtlfGxpc3R8bGpmP3xsb2FkfGxvZ3xsb3dlcnxsc3F8bHRpbWV8bHRyaW18bWF2Z3xtYXhzP3xtY291bnR8bWQ1fG1kZXZ8bWVkfG1ldGF8bWlucz98bW1heHxtbWlufG1tdXxtb2R8bXN1bXxuZWd8bmV4dHxub3R8bnVsbHxvcnxvdmVyfHBhcnNlfHBlYWNofHBqfHBsaXN0fHByZHM/fHByZXZ8cHJpb3J8cmFuZHxyYW5rfHJhdGlvc3xyYXplfHJlYWQwfHJlYWQxfHJlY2lwcm9jYWx8cmV2YWx8cmV2ZXJzZXxybG9hZHxyb3RhdGV8cnNhdmV8cnRyaW18c2F2ZXxzY2FufHNjb3Z8c2RldnxzZWxlY3R8c2V0fHNldGVudnxzaG93fHNpZ251bXxzaW58c3FydHxzc3I/fHN0cmluZ3xzdWJsaXN0fHN1bXM/fHN2fHN2YXJ8c3lzdGVtfHRhYmxlc3x0YW58dGlsfHRyaW18dHhmfHR5cGV8dWp8dW5ncm91cHx1bmlvbnx1cGRhdGV8dXBwZXJ8dXBzZXJ0fHZhbHVlfHZhcnx2aWV3cz98dnN8d2F2Z3x3aGVyZXx3aGlsZXx3aXRoaW58d2oxP3x3c3VtfHd3fHhhc2N8eGJhcnx4Y29scz98eGRlc2N8eGV4cHx4Z3JvdXB8eGtleXx4bG9nfHhwcmV2fHhyYW5rKVxcYi8sYWR2ZXJiOntwYXR0ZXJuOi9bJ1xcL1xcXFxdOj98XFxiZWFjaFxcYi8sYWxpYXM6XCJmdW5jdGlvblwifSx2ZXJiOntwYXR0ZXJuOi8oPzpcXEJcXC5cXEJ8XFxiWzAxXTp8PFs9Pl0/fD49P3xbOitcXC0qJSwhP19+PXwkJiNAXl0pOj8vLGFsaWFzOlwib3BlcmF0b3JcIn0scHVuY3R1YXRpb246L1soKXt9XFxbXFxdOy5dL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInFcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnFvcmU9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwiY2xpa2VcIix7Y29tbWVudDp7cGF0dGVybjovKF58W15cXFxcXSkoPzpcXC9cXCpbXFxzXFxTXSo/XFwqXFwvfCg/OlxcL1xcL3wjKS4qKS8sbG9va2JlaGluZDohMH0sc3RyaW5nOntwYXR0ZXJuOi8oXCJ8JykoXFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKSpcXDEvLGdyZWVkeTohMH0sdmFyaWFibGU6L1xcJCg/IVxcZClcXHcrXFxiLyxrZXl3b3JkOi9cXGIoPzphYnN0cmFjdHxhbnl8YXNzZXJ0fGJpbmFyeXxib29sfGJvb2xlYW58YnJlYWt8Ynl0ZXxjYXNlfGNhdGNofGNoYXJ8Y2xhc3N8Y29kZXxjb25zdHxjb250aW51ZXxkYXRhfGRlZmF1bHR8ZG98ZG91YmxlfGVsc2V8ZW51bXxleHRlbmRzfGZpbmFsfGZpbmFsbHl8ZmxvYXR8Zm9yfGdvdG98aGFzaHxpZnxpbXBsZW1lbnRzfGltcG9ydHxpbmhlcml0c3xpbnN0YW5jZW9mfGludHxpbnRlcmZhY2V8bG9uZ3xteXxuYXRpdmV8bmV3fG5vdGhpbmd8bnVsbHxvYmplY3R8b3VyfG93bnxwcml2YXRlfHJlZmVyZW5jZXxyZXRocm93fHJldHVybnxzaG9ydHxzb2Z0KD86aW50fGZsb2F0fG51bWJlcnxib29sfHN0cmluZ3xkYXRlfGxpc3QpfHN0YXRpY3xzdHJpY3RmcHxzdHJpbmd8c3VifHN1cGVyfHN3aXRjaHxzeW5jaHJvbml6ZWR8dGhpc3x0aHJvd3x0aHJvd3N8dHJhbnNpZW50fHRyeXx2b2lkfHZvbGF0aWxlfHdoaWxlKVxcYi8sbnVtYmVyOi9cXGIoPzowYlswMV0rfDB4W1xcZGEtZl0qXFwuP1tcXGRhLWZwXFwtXSt8XFxkKlxcLj9cXGQrZT9cXGQqW2RmXXxcXGQqXFwuP1xcZCspXFxiL2ksYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvaSxvcGVyYXRvcjp7cGF0dGVybjovKF58W14uXSkoPzpcXCtbKz1dP3wtWy09XT98WyE9XSg/Oj09P3x+KT98Pj4/PT98PCg/Oj0+P3w8PT8pP3wmWyY9XT98XFx8W3w9XT98WypcXC8lXl09P3xbfj9dKS8sbG9va2JlaGluZDohMH0sZnVuY3Rpb246L1xcJD9cXGIoPyFcXGQpXFx3Kyg/PVxcKCkvfSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInFvcmVcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnI9e2NvbW1lbnQ6LyMuKi8sc3RyaW5nOntwYXR0ZXJuOi8oWydcIl0pKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfSxcInBlcmNlbnQtb3BlcmF0b3JcIjp7cGF0dGVybjovJVteJVxcc10qJS8sYWxpYXM6XCJvcGVyYXRvclwifSxib29sZWFuOi9cXGIoPzpUUlVFfEZBTFNFKVxcYi8sZWxsaXBzaXM6L1xcLlxcLig/OlxcLnxcXGQrKS8sbnVtYmVyOlsvXFxiKD86TmFOfEluZilcXGIvLC8oPzpcXGIweFtcXGRBLUZhLWZdKyg/OlxcLlxcZCopP3xcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzpbRWVQcF1bKy1dP1xcZCspP1tpTF0/L10sa2V5d29yZDovXFxiKD86aWZ8ZWxzZXxyZXBlYXR8d2hpbGV8ZnVuY3Rpb258Zm9yfGlufG5leHR8YnJlYWt8TlVMTHxOQXxOQV9pbnRlZ2VyX3xOQV9yZWFsX3xOQV9jb21wbGV4X3xOQV9jaGFyYWN0ZXJfKVxcYi8sb3BlcmF0b3I6Ly0+Pz4/fDwoPzo9fDw/LSk/fFs+PSFdPT98Ojo/fCYmP3xcXHxcXHw/fFsrKlxcL14kQH5dLyxwdW5jdHVhdGlvbjovWygpe31cXFtcXF0sO10vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwiclwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucmVhc29uPWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse2NvbW1lbnQ6e3BhdHRlcm46LyhefFteXFxcXF0pXFwvXFwqW1xcc1xcU10qP1xcKlxcLy8sbG9va2JlaGluZDohMH0sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfFteXFxcXFxcclxcblwiXSkqXCIvLGdyZWVkeTohMH0sXCJjbGFzcy1uYW1lXCI6L1xcYltBLVpdXFx3Ki8sa2V5d29yZDovXFxiKD86YW5kfGFzfGFzc2VydHxiZWdpbnxjbGFzc3xjb25zdHJhaW50fGRvfGRvbmV8ZG93bnRvfGVsc2V8ZW5kfGV4Y2VwdGlvbnxleHRlcm5hbHxmb3J8ZnVufGZ1bmN0aW9ufGZ1bmN0b3J8aWZ8aW58aW5jbHVkZXxpbmhlcml0fGluaXRpYWxpemVyfGxhenl8bGV0fG1ldGhvZHxtb2R1bGV8bXV0YWJsZXxuZXd8bm9ucmVjfG9iamVjdHxvZnxvcGVufG9yfHByaXZhdGV8cmVjfHNpZ3xzdHJ1Y3R8c3dpdGNofHRoZW58dG98dHJ5fHR5cGV8dmFsfHZpcnR1YWx8d2hlbnx3aGlsZXx3aXRoKVxcYi8sb3BlcmF0b3I6L1xcLnszfXw6Wzo9XXw9KD86PT0/fD4pP3w8PT98Pj0/fFt8Xj8nIyF+YF18WytcXC0qXFwvXVxcLj98XFxiKD86bW9kfGxhbmR8bG9yfGx4b3J8bHNsfGxzcnxhc3IpXFxiL30pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInJlYXNvblwiLFwiY2xhc3MtbmFtZVwiLHtjaGFyYWN0ZXI6e3BhdHRlcm46LycoPzpcXFxceFtcXGRhLWZdezJ9fFxcXFxvWzAtM11bMC03XVswLTddfFxcXFxcXGR7M318XFxcXC58W14nXFxcXFxcclxcbl0pJy8sYWxpYXM6XCJzdHJpbmdcIn0sY29uc3RydWN0b3I6e3BhdHRlcm46L1xcYltBLVpdXFx3KlxcYig/IVxccypcXC4pLyxhbGlhczpcInZhcmlhYmxlXCJ9LGxhYmVsOntwYXR0ZXJuOi9cXGJbYS16XVxcdyooPz06OikvLGFsaWFzOlwic3ltYm9sXCJ9fSksZGVsZXRlIGUubGFuZ3VhZ2VzLnJlYXNvbi5mdW5jdGlvbn1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicmVhc29uXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5yZW5weT17Y29tbWVudDp7cGF0dGVybjovKF58W15cXFxcXSkjLisvLGxvb2tiZWhpbmQ6ITB9LHN0cmluZzp7cGF0dGVybjovKFwiXCJcInwnJycpW1xcc1xcU10rP1xcMXwoXCJ8JykoPzpcXFxcLnwoPyFcXDIpW15cXFxcXFxyXFxuXSkqXFwyfCg/Ol4jPyg/Oig/OlswLTlhLWZBLUZdezJ9KXszfXwoPzpbMC05YS1mQS1GXSl7M30pJCkvbSxncmVlZHk6ITB9LGZ1bmN0aW9uOi9bYS16X11cXHcqKD89XFwoKS9pLHByb3BlcnR5Oi9cXGIoPzppbnNlbnNpdGl2ZXxpZGxlfGhvdmVyfHNlbGVjdGVkX2lkbGV8c2VsZWN0ZWRfaG92ZXJ8YmFja2dyb3VuZHxwb3NpdGlvbnxhbHR8eHBvc3x5cG9zfHBvc3x4YW5jaG9yfHlhbmNob3J8YW5jaG9yfHhhbGlnbnx5YWxpZ258YWxpZ258eGNlbnRlcnx5Y2VudGVyfHhvZnNzZXR8eW9mZnNldHx5bWF4aW11bXxtYXhpbXVtfHhtYXhpbXVtfHhtaW5pbXVtfHltaW5pbXVtfG1pbmltdW18eHNpemV8eXNpemV4eXNpemV8eGZpbGx8eWZpbGx8YXJlYXxhbnRpYWxpYXN8YmxhY2tfY29sb3J8Ym9sZHxjYXJldHxjb2xvcnxmaXJzdF9pbmRlbnR8Zm9udHxzaXplfGl0YWxpY3xqdXN0aWZ5fGtlcm5pbmd8bGFuZ3VhZ2V8bGF5b3V0fGxpbmVfbGVhZGluZ3xsaW5lX292ZXJsYXBfc3BsaXR8bGluZV9zcGFjaW5nfG1pbl93aWR0aHxuZXdsaW5lX2luZGVudHxvdXRsaW5lc3xyZXN0X2luZGVudHxydWJ5X3N0eWxlfHNsb3dfY3BzfHNsb3dfY3BzX211bHRpcGxpZXJ8c3RyaWtldGhyb3VnaHx0ZXh0X2FsaWdufHVuZGVybGluZXxoeXBlcmxpbmtfZnVuY3Rpb25zfHZlcnRpY2FsfGhpbnRpbmd8Zm9yZWdyb3VuZHxsZWZ0X21hcmdpbnx4bWFyZ2lufHRvcF9tYXJnaW58Ym90dG9tX21hcmdpbnx5bWFyZ2lufGxlZnRfcGFkZGluZ3xyaWdodF9wYWRkaW5nfHhwYWRkaW5nfHRvcF9wYWRkaW5nfGJvdHRvbV9wYWRkaW5nfHlwYWRkaW5nfHNpemVfZ3JvdXB8Y2hpbGR8aG92ZXJfc291bmR8YWN0aXZhdGVfc291bmR8bW91c2V8Zm9jdXNfbWFza3xrZXlib2FyZF9mb2N1c3xiYXJfdmVydGljYWx8YmFyX2ludmVydHxiYXJfcmVzaXppbmd8bGVmdF9ndXR0ZXJ8cmlnaHRfZ3V0dGVyfHRvcF9ndXR0ZXJ8Ym90dG9tX2d1dHRlcnxsZWZ0X2JhcnxyaWdodF9iYXJ8dG9wX2Jhcnxib3R0b21fYmFyfHRodW1ifHRodW1iX3NoYWRvd3x0aHVtYl9vZmZzZXR8dW5zY3JvbGxhYmxlfHNwYWNpbmd8Zmlyc3Rfc3BhY2luZ3xib3hfcmV2ZXJzZXxib3hfd3JhcHxvcmRlcl9yZXZlcnNlfGZpdF9maXJzdHx5c2l6ZXx0aHVtYm5haWxfd2lkdGh8dGh1bWJuYWlsX2hlaWdodHxoZWxwfHRleHRfeXBvc3x0ZXh0X3hwb3N8aWRsZV9jb2xvcnxob3Zlcl9jb2xvcnxzZWxlY3RlZF9pZGxlX2NvbG9yfHNlbGVjdGVkX2hvdmVyX2NvbG9yfGluc2Vuc2l0aXZlX2NvbG9yfGFscGhhfGluc2Vuc2l0aXZlX2JhY2tncm91bmR8aG92ZXJfYmFja2dyb3VuZHx6b3JkZXJ8dmFsdWV8d2lkdGh8eGFkanVzdG1lbnR8eGFuY2hvcmFyb3VuZHx4YXJvdW5kfHhpbml0aWFsfHhvZmZzZXR8eHpvb218eWFkanVzdG1lbnR8eWFuY2hvcmFyb3VuZHx5YXJvdW5kfHlpbml0aWFsfHl6b29tfHpvb218Z3JvdW5kfGhlaWdodHx0ZXh0X3N0eWxlfHRleHRfeV9mdWRnZXxzZWxlY3RlZF9pbnNlbnNpdGl2ZXxoYXNfc291bmR8aGFzX211c2ljfGhhc192b2ljZXxmb2N1c3xob3ZlcmVkfGltYWdlX3N0eWxlfGxlbmd0aHxtaW53aWR0aHxtb3VzZXdoZWVsfG9mZnNldHxwcmVmaXh8cmFkaXVzfHJhbmdlfHJpZ2h0X21hcmdpbnxyb3RhdGV8cm90YXRlX3BhZHxkZXZlbG9wZXJ8c2NyZWVuX3dpZHRofHNjcmVlbl9oZWlnaHR8d2luZG93X3RpdGxlfG5hbWV8dmVyc2lvbnx3aW5kb3dzX2ljb258ZGVmYXVsdF9mdWxsc2NyZWVufGRlZmF1bHRfdGV4dF9jcHN8ZGVmYXVsdF9hZm1fdGltZXxtYWluX21lbnVfbXVzaWN8c2FtcGxlX3NvdW5kfGVudGVyX3NvdW5kfGV4aXRfc291bmR8c2F2ZV9kaXJlY3Rvcnl8ZW50ZXJfdHJhbnNpdGlvbnxleGl0X3RyYW5zaXRpb258aW50cmFfdHJhbnNpdGlvbnxtYWluX2dhbWVfdHJhbnNpdGlvbnxnYW1lX21haW5fdHJhbnNpdGlvbnxlbmRfc3BsYXNoX3RyYW5zaXRpb258ZW5kX2dhbWVfdHJhbnNpdGlvbnxhZnRlcl9sb2FkX3RyYW5zaXRpb258d2luZG93X3Nob3dfdHJhbnNpdGlvbnx3aW5kb3dfaGlkZV90cmFuc2l0aW9ufGFkdl9udmxfdHJhbnNpdGlvbnxudmxfYWR2X3RyYW5zaXRpb258ZW50ZXJfeWVzbm9fdHJhbnNpdGlvbnxleGl0X3llc25vX3RyYW5zaXRpb258ZW50ZXJfcmVwbGF5X3RyYW5zaXRpb258ZXhpdF9yZXBsYXlfdHJhbnNpdGlvbnxzYXlfYXR0cmlidXRlX3RyYW5zaXRpb258ZGlyZWN0b3J5X25hbWV8ZXhlY3V0YWJsZV9uYW1lfGluY2x1ZGVfdXBkYXRlfHdpbmRvd19pY29ufG1vZGFsfGdvb2dsZV9wbGF5X2tleXxnb29nbGVfcGxheV9zYWx0fGRyYWdfbmFtZXxkcmFnX2hhbmRsZXxkcmFnZ2FibGV8ZHJhZ2dlZHxkcm9wcGFibGV8ZHJvcHBlZHxuYXJyYXRvcl9tZW51fGFjdGlvbnxkZWZhdWx0X2FmbV9lbmFibGV8dmVyc2lvbl9uYW1lfHZlcnNpb25fdHVwbGV8aW5zaWRlfGZhZGVvdXR8ZmFkZWlufGxheWVyc3xsYXllcl9jbGlwcGluZ3xsaW5lYXJ8c2Nyb2xsYmFyc3xzaWRlX3hwb3N8c2lkZV95cG9zfHNpZGVfc3BhY2luZ3xlZGdlc2Nyb2xsfGRyYWdfam9pbmVkfGRyYWdfcmFpc2V8ZHJvcF9zaGFkb3d8ZHJvcF9zaGFkb3dfY29sb3J8c3VicGl4ZWx8ZWFzZWlufGVhc2VvdXR8dGltZXxjcm9wfGF1dG98dXBkYXRlfGdldF9pbnN0YWxsZWRfcGFja2FnZXN8Y2FuX3VwZGF0ZXxVcGRhdGVWZXJzaW9ufFVwZGF0ZXxvdmVybGF5X2Z1bmN0aW9uc3x0cmFuc2xhdGlvbnN8d2luZG93X2xlZnRfcGFkZGluZ3xzaG93X3NpZGVfaW1hZ2V8c2hvd190d29fd2luZG93KVxcYi8sdGFnOi9cXGIoPzpsYWJlbHxpbWFnZXxtZW51fFtodl1ib3h8ZnJhbWV8dGV4dHxpbWFnZW1hcHxpbWFnZWJ1dHRvbnxiYXJ8dmJhcnxzY3JlZW58dGV4dGJ1dHRvbnxidXR0b3NjcmVlbm58Zml4ZWR8Z3JpZHxpbnB1dHxrZXl8bW91c2VhcmVhfHNpZGV8dGltZXJ8dmlld3BvcnR8d2luZG93fGhvdHNwb3R8aG90YmFyfHNlbGZ8YnV0dG9ufGRyYWd8ZHJhZ2dyb3VwfHRhZ3xtbV9tZW51X2ZyYW1lfG52bHxibG9ja3xwYXJhbGxlbClcXGJ8XFwkLyxrZXl3b3JkOi9cXGIoPzphc3xhc3NlcnR8YnJlYWt8Y2xhc3N8Y29udGludWV8ZGVmfGRlbHxlbGlmfGVsc2V8ZXhjZXB0fGV4ZWN8ZmluYWxseXxmb3J8ZnJvbXxnbG9iYWx8aWZ8aW1wb3J0fGlufGlzfGxhbWJkYXxwYXNzfHByaW50fHJhaXNlfHJldHVybnx0cnl8d2hpbGV8eWllbGR8YWRqdXN0bWVudHxhbGlnbmFyb3VuZHxhbGxvd3xhbmdsZXxhcm91bmR8Ym94X2xheW91dHxjYWNoZXxjaGFuZ2VkfGNoaWxkX3NpemV8Y2xpY2tlZHxjbGlwcGluZ3xjb3JuZXIxfGNvcm5lcjJ8ZGVmYXVsdHxkZWxheXxleGNsdWRlfHNjb3BlfHNsb3d8c2xvd19hYm9ydGFibGV8c2xvd19kb25lfHNvdW5kfHN0eWxlX2dyb3VwfHN1YnN0aXR1dGV8c3VmZml4fHRyYW5zZm9ybV9hbmNob3J8dHJhbnNwb3NlfHVuaG92ZXJlZHxjb25maWd8dGhlbWV8bW1fcm9vdHxnbV9yb290fHJvdW5kZWRfd2luZG93fGJ1aWxkfGRpc2FibGVkX3RleHR8ZGlzYWJsZWR8d2lkZ2V0X3NlbGVjdGVkfHdpZGdldF90ZXh0fHdpZGdldF9ob3Zlcnx3aWRnZXR8dXBkYXRlcnxiZWhpbmR8Y2FsbHxleHByZXNzaW9ufGhpZGV8aW5pdHxqdW1wfG9ubGF5ZXJ8cHl0aG9ufHJlbnB5fHNjZW5lfHNldHxzaG93fHRyYW5zZm9ybXxwbGF5fHF1ZXVlfHN0b3B8cGF1c2V8ZGVmaW5lfHdpbmRvd3xyZXBlYXR8Y29udGFpbnN8Y2hvaWNlfG9ufGZ1bmN0aW9ufGV2ZW50fGFuaW1hdGlvbnxjbG9ja3dpc2V8Y291bnRlcmNsb2Nrd2lzZXxjaXJjbGVzfGtub3R8bnVsbHxOb25lfHJhbmRvbXxoYXN8YWRkfHVzZXxmYWRlfGRpc3NvbHZlfHN0eWxlfHN0b3JlfGlkfHZvaWNlfGNlbnRlcnxsZWZ0fHJpZ2h0fGxlc3Nfcm91bmRlZHxtdXNpY3xtb3ZpZXxjbGVhcnxwZXJzaXN0ZW50fHVpKVxcYi8sYm9vbGVhbjovXFxiKD86W1R0XXJ1ZXxbRmZdYWxzZSlcXGIvLG51bWJlcjovKD86XFxiKD86MFtib10pPyg/Oig/OlxcZHwweFtcXGRhLWZdKVtcXGRhLWZdKlxcLj9cXGQqKXxcXEJcXC5cXGQrKSg/OmVbKy1dP1xcZCspP2o/L2ksb3BlcmF0b3I6L1stKyU9XT0/fCE9fFxcKlxcKj89P3xcXC9cXC8/PT98PFs8PT5dP3w+Wz0+XT98WyZ8Xn5dfFxcYig/Om9yfGFuZHxub3R8d2l0aHxhdClcXGIvLHB1bmN0dWF0aW9uOi9be31bXFxdOygpLC46XS99fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJyZW5weVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucmVzdD17dGFibGU6W3twYXR0ZXJuOi8oXFxzKikoPzpcXCtbPS1dKykrXFwrKD86XFxyP1xcbnxcXHIpKD86XFwxKD86Wyt8XS4rKStbK3xdKD86XFxyP1xcbnxcXHIpKStcXDEoPzpcXCtbPS1dKykrXFwrLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cHVuY3R1YXRpb246L1xcfHwoPzpcXCtbPS1dKykrXFwrL319LHtwYXR0ZXJuOi8oXFxzKikoPzo9KyArKSs9Kyg/Oig/Olxccj9cXG58XFxyKVxcMS4rKSsoPzpcXHI/XFxufFxccilcXDEoPzo9KyArKSs9Kyg/PSg/Olxccj9cXG58XFxyKXsyfXxcXHMqJCkvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwdW5jdHVhdGlvbjovWz0tXSsvfX1dLFwic3Vic3RpdHV0aW9uLWRlZlwiOntwYXR0ZXJuOi8oXlxccypcXC5cXC4gKVxcfCg/OltefFxcc10oPzpbXnxdKltefFxcc10pPylcXHwgW146XSs6Oi9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntzdWJzdGl0dXRpb246e3BhdHRlcm46L15cXHwoPzpbXnxcXHNdfFtefFxcc11bXnxdKltefFxcc10pXFx8LyxhbGlhczpcImF0dHItdmFsdWVcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi9eXFx8fFxcfCQvfX0sZGlyZWN0aXZlOntwYXR0ZXJuOi8oICspW146XSs6Oi8sbG9va2JlaGluZDohMCxhbGlhczpcImZ1bmN0aW9uXCIsaW5zaWRlOntwdW5jdHVhdGlvbjovOjokL319fX0sXCJsaW5rLXRhcmdldFwiOlt7cGF0dGVybjovKF5cXHMqXFwuXFwuIClcXFtbXlxcXV0rXFxdL20sbG9va2JlaGluZDohMCxhbGlhczpcInN0cmluZ1wiLGluc2lkZTp7cHVuY3R1YXRpb246L15cXFt8XFxdJC99fSx7cGF0dGVybjovKF5cXHMqXFwuXFwuIClfKD86YFteYF0rYHwoPzpbXjpcXFxcXXxcXFxcLikrKTovbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwic3RyaW5nXCIsaW5zaWRlOntwdW5jdHVhdGlvbjovXl98OiQvfX1dLGRpcmVjdGl2ZTp7cGF0dGVybjovKF5cXHMqXFwuXFwuIClbXjpdKzo6L20sbG9va2JlaGluZDohMCxhbGlhczpcImZ1bmN0aW9uXCIsaW5zaWRlOntwdW5jdHVhdGlvbjovOjokL319LGNvbW1lbnQ6e3BhdHRlcm46LyheXFxzKlxcLlxcLikoPzooPzogLispPyg/Oig/Olxccj9cXG58XFxyKS4rKSt8IC4rKSg/PSg/Olxccj9cXG58XFxyKXsyfXwkKS9tLGxvb2tiZWhpbmQ6ITB9LHRpdGxlOlt7cGF0dGVybjovXigoWyFcIiMkJSYnKCkqKyxcXC0uXFwvOjs8PT4/QFxcW1xcXFxcXF1eX2B7fH1+XSlcXDIrKSg/Olxccj9cXG58XFxyKS4rKD86XFxyP1xcbnxcXHIpXFwxJC9tLGluc2lkZTp7cHVuY3R1YXRpb246L15bIVwiIyQlJicoKSorLFxcLS5cXC86Ozw9Pj9AXFxbXFxcXFxcXV5fYHt8fX5dK3xbIVwiIyQlJicoKSorLFxcLS5cXC86Ozw9Pj9AXFxbXFxcXFxcXV5fYHt8fX5dKyQvLGltcG9ydGFudDovLisvfX0se3BhdHRlcm46LyhefCg/Olxccj9cXG58XFxyKXsyfSkuKyg/Olxccj9cXG58XFxyKShbIVwiIyQlJicoKSorLFxcLS5cXC86Ozw9Pj9AXFxbXFxcXFxcXV5fYHt8fX5dKVxcMisoPz1cXHI/XFxufFxccnwkKS8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9bIVwiIyQlJicoKSorLFxcLS5cXC86Ozw9Pj9AXFxbXFxcXFxcXV5fYHt8fX5dKyQvLGltcG9ydGFudDovLisvfX1dLGhyOntwYXR0ZXJuOi8oKD86XFxyP1xcbnxcXHIpezJ9KShbIVwiIyQlJicoKSorLFxcLS5cXC86Ozw9Pj9AXFxbXFxcXFxcXV5fYHt8fX5dKVxcMnszLH0oPz0oPzpcXHI/XFxufFxccil7Mn0pLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwicHVuY3R1YXRpb25cIn0sZmllbGQ6e3BhdHRlcm46LyheXFxzKik6W146XFxyXFxuXSs6KD89ICkvbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwiYXR0ci1uYW1lXCJ9LFwiY29tbWFuZC1saW5lLW9wdGlvblwiOntwYXR0ZXJuOi8oXlxccyopKD86WystXVthLXpcXGRdfCg/Oi0tfFxcLylbYS16XFxkLV0rKSg/OlsgPV0oPzpbYS16XVtcXHctXSp8PFtePD5dKz4pKT8oPzosICg/OlsrLV1bYS16XFxkXXwoPzotLXxcXC8pW2EtelxcZC1dKykoPzpbID1dKD86W2Etel1bXFx3LV0qfDxbXjw+XSs+KSk/KSooPz0oPzpcXHI/XFxufFxccik/IHsyLH1cXFMpL2ltLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzeW1ib2xcIn0sXCJsaXRlcmFsLWJsb2NrXCI6e3BhdHRlcm46Lzo6KD86XFxyP1xcbnxcXHIpezJ9KFsgXFx0XSspLisoPzooPzpcXHI/XFxufFxccilcXDEuKykqLyxpbnNpZGU6e1wibGl0ZXJhbC1ibG9jay1wdW5jdHVhdGlvblwiOntwYXR0ZXJuOi9eOjovLGFsaWFzOlwicHVuY3R1YXRpb25cIn19fSxcInF1b3RlZC1saXRlcmFsLWJsb2NrXCI6e3BhdHRlcm46Lzo6KD86XFxyP1xcbnxcXHIpezJ9KFshXCIjJCUmJygpKissXFwtLlxcLzo7PD0+P0BcXFtcXFxcXFxdXl9ge3x9fl0pLiooPzooPzpcXHI/XFxufFxccilcXDEuKikqLyxpbnNpZGU6e1wibGl0ZXJhbC1ibG9jay1wdW5jdHVhdGlvblwiOntwYXR0ZXJuOi9eKD86Ojp8KFshXCIjJCUmJygpKissXFwtLlxcLzo7PD0+P0BcXFtcXFxcXFxdXl9ge3x9fl0pXFwxKikvbSxhbGlhczpcInB1bmN0dWF0aW9uXCJ9fX0sXCJsaXN0LWJ1bGxldFwiOntwYXR0ZXJuOi8oXlxccyopKD86WyorXFwt4oCi4oCj4oGDXXxcXCg/KD86XFxkK3xbYS16XXxbaXZ4ZGNsbV0rKVxcKXwoPzpcXGQrfFthLXpdfFtpdnhkY2xtXSspXFwuKSg/PSApL2ltLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJwdW5jdHVhdGlvblwifSxcImRvY3Rlc3QtYmxvY2tcIjp7cGF0dGVybjovKF5cXHMqKT4+PiAuKyg/Oig/Olxccj9cXG58XFxyKS4rKSovbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7cHVuY3R1YXRpb246L14+Pj4vfX0saW5saW5lOlt7cGF0dGVybjovKF58W1xcc1xcLTpcXC8nXCI8KFxcW3tdKSg/OjpbXjpdKzpgLio/YHxgLio/YDpbXjpdKzp8KFxcKlxcKj98YGA/fFxcfCkoPyFcXHMpLio/W15cXHNdXFwyKD89W1xcc1xcLS4sOjshP1xcXFxcXC8nXCIpXFxdfV18JCkpL20sbG9va2JlaGluZDohMCxpbnNpZGU6e2JvbGQ6e3BhdHRlcm46LyheXFwqXFwqKS4rKD89XFwqXFwqJCkvLGxvb2tiZWhpbmQ6ITB9LGl0YWxpYzp7cGF0dGVybjovKF5cXCopLisoPz1cXCokKS8sbG9va2JlaGluZDohMH0sXCJpbmxpbmUtbGl0ZXJhbFwiOntwYXR0ZXJuOi8oXmBgKS4rKD89YGAkKS8sbG9va2JlaGluZDohMCxhbGlhczpcInN5bWJvbFwifSxyb2xlOntwYXR0ZXJuOi9eOlteOl0rOnw6W146XSs6JC8sYWxpYXM6XCJmdW5jdGlvblwiLGluc2lkZTp7cHVuY3R1YXRpb246L146fDokL319LFwiaW50ZXJwcmV0ZWQtdGV4dFwiOntwYXR0ZXJuOi8oXmApLisoPz1gJCkvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJhdHRyLXZhbHVlXCJ9LHN1YnN0aXR1dGlvbjp7cGF0dGVybjovKF5cXHwpLisoPz1cXHwkKS8sbG9va2JlaGluZDohMCxhbGlhczpcImF0dHItdmFsdWVcIn0scHVuY3R1YXRpb246L1xcKlxcKj98YGA/fFxcfC99fV0sbGluazpbe3BhdHRlcm46L1xcW1teXFxdXStcXF1fKD89W1xcc1xcLS4sOjshP1xcXFxcXC8nXCIpXFxdfV18JCkvLGFsaWFzOlwic3RyaW5nXCIsaW5zaWRlOntwdW5jdHVhdGlvbjovXlxcW3xcXF1fJC99fSx7cGF0dGVybjovKD86XFxiW2EtelxcZF0oPzpbXy46K10/W2EtelxcZF0rKSpfP198YFteYF0rYF8/X3xfYFteYF0rYCkoPz1bXFxzXFwtLiw6OyE/XFxcXFxcLydcIilcXF19XXwkKS9pLGFsaWFzOlwic3RyaW5nXCIsaW5zaWRlOntwdW5jdHVhdGlvbjovXl8/YHxgJHxgP18/XyQvfX1dLHB1bmN0dWF0aW9uOntwYXR0ZXJuOi8oXlxccyopKD86XFx8KD89IHwkKXwoPzotLS0/fOKAlHxcXC5cXC58X18pKD89ICl8XFwuXFwuJCkvbSxsb29rYmVoaW5kOiEwfX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInJlc3RcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnJpcD17Y29tbWVudDovIy4qLyxrZXl3b3JkOi8oPzo9PnwtPil8XFxiKD86Y2xhc3N8aWZ8ZWxzZXxzd2l0Y2h8Y2FzZXxyZXR1cm58ZXhpdHx0cnl8Y2F0Y2h8ZmluYWxseXxyYWlzZSlcXGIvLGJ1aWx0aW46L0B8XFxiU3lzdGVtXFxiLyxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi8sZGF0ZTovXFxiXFxkezR9LVxcZHsyfS1cXGR7Mn1cXGIvLHRpbWU6L1xcYlxcZHsyfTpcXGR7Mn06XFxkezJ9XFxiLyxkYXRldGltZTovXFxiXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn1cXGIvLGNoYXJhY3RlcjovXFxCYFteXFxzYCdcIiwuOjsjXFwvXFxcXCgpPD5cXFtcXF17fV1cXGIvLHJlZ2V4OntwYXR0ZXJuOi8oXnxbXlxcL10pXFwvKD8hXFwvKShcXFsuKz9dfFxcXFwufFteXFwvXFxcXFxcclxcbl0pK1xcLyg/PVxccyooJHxbXFxyXFxuLC47fSldKSkvLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfSxzeW1ib2w6LzpbXlxcZFxcc2AnXCIsLjo7I1xcL1xcXFwoKTw+XFxbXFxde31dW15cXHNgJ1wiLC46OyNcXC9cXFxcKCk8PlxcW1xcXXt9XSovLHN0cmluZzp7cGF0dGVybjovKFwifCcpKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfSxudW1iZXI6L1srLV0/KD86KD86XFxkK1xcLlxcZCspfCg/OlxcZCspKS8scHVuY3R1YXRpb246Lyg/OlxcLnsyLDN9KXxbYCwuOjs9XFwvXFxcXCgpPD5cXFtcXF17fV0vLHJlZmVyZW5jZTovW15cXGRcXHNgJ1wiLC46OyNcXC9cXFxcKCk8PlxcW1xcXXt9XVteXFxzYCdcIiwuOjsjXFwvXFxcXCgpPD5cXFtcXF17fV0qL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInJpcFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMucm9ib2NvbmY9e2NvbW1lbnQ6LyMuKi8sa2V5d29yZDp7cGF0dGVybjovKF58XFxzKSg/Oig/OmZhY2V0fGluc3RhbmNlIG9mKSg/PVsgXFx0XStbXFx3LV0rWyBcXHRdKlxceyl8KD86ZXh0ZXJuYWx8aW1wb3J0KVxcYikvLGxvb2tiZWhpbmQ6ITB9LGNvbXBvbmVudDp7cGF0dGVybjovW1xcdy1dKyg/PVsgXFx0XSpcXHspLyxhbGlhczpcInZhcmlhYmxlXCJ9LHByb3BlcnR5Oi9bXFx3Li1dKyg/PVsgXFx0XSo6KS8sdmFsdWU6e3BhdHRlcm46Lyg9WyBcXHRdKilbXiw7XSsvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJhdHRyLXZhbHVlXCJ9LG9wdGlvbmFsOntwYXR0ZXJuOi9cXChvcHRpb25hbFxcKS8sYWxpYXM6XCJidWlsdGluXCJ9LHdpbGRjYXJkOntwYXR0ZXJuOi8oXFwuKVxcKi8sbG9va2JlaGluZDohMCxhbGlhczpcIm9wZXJhdG9yXCJ9LHB1bmN0dWF0aW9uOi9be30sLjs6PV0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicm9ib2NvbmZcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnJ1c3Q9e2NvbW1lbnQ6W3twYXR0ZXJuOi8oXnxbXlxcXFxdKVxcL1xcKltcXHNcXFNdKj9cXCpcXC8vLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXnxbXlxcXFw6XSlcXC9cXC8uKi8sbG9va2JlaGluZDohMH1dLHN0cmluZzpbe3BhdHRlcm46L2I/cigjKilcIig/OlxcXFwufCg/IVwiXFwxKVteXFxcXFxcclxcbl0pKlwiXFwxLyxncmVlZHk6ITB9LHtwYXR0ZXJuOi9iP1wiKD86XFxcXC58W15cXFxcXFxyXFxuXCJdKSpcIi8sZ3JlZWR5OiEwfV0sY2hhcjp7cGF0dGVybjovYj8nKD86XFxcXCg/OnhbMC03XVtcXGRhLWZBLUZdfHV7KD86W1xcZGEtZkEtRl1fKil7MSw2fXwuKXxbXlxcXFxcXHJcXG5cXHQnXSknLyxhbGlhczpcInN0cmluZ1wifSxcImxpZmV0aW1lLWFubm90YXRpb25cIjp7cGF0dGVybjovJ1teXFxzPiddKy8sYWxpYXM6XCJzeW1ib2xcIn0sa2V5d29yZDovXFxiKD86YWJzdHJhY3R8YWxpZ25vZnxhc3xiZXxib3h8YnJlYWt8Y29uc3R8Y29udGludWV8Y3JhdGV8ZG98ZWxzZXxlbnVtfGV4dGVybnxmYWxzZXxmaW5hbHxmbnxmb3J8aWZ8aW1wbHxpbnxsZXR8bG9vcHxtYXRjaHxtb2R8bW92ZXxtdXR8b2Zmc2V0b2Z8b25jZXxvdmVycmlkZXxwcml2fHB1YnxwdXJlfHJlZnxyZXR1cm58c2l6ZW9mfHN0YXRpY3xzZWxmfHN0cnVjdHxzdXBlcnx0cnVlfHRyYWl0fHR5cGV8dHlwZW9mfHVuc2FmZXx1bnNpemVkfHVzZXx2aXJ0dWFsfHdoZXJlfHdoaWxlfHlpZWxkKVxcYi8sYXR0cmlidXRlOntwYXR0ZXJuOi8jIT9cXFsuKz9cXF0vLGdyZWVkeTohMCxhbGlhczpcImF0dHItbmFtZVwifSxmdW5jdGlvbjpbL1xcdysoPz1cXHMqXFwoKS8sL1xcdyshKD89XFxzKlxcKHxcXFspL10sXCJtYWNyby1ydWxlc1wiOntwYXR0ZXJuOi9cXHcrIS8sYWxpYXM6XCJmdW5jdGlvblwifSxudW1iZXI6L1xcYig/OjB4W1xcZEEtRmEtZl0oPzpfP1tcXGRBLUZhLWZdKSp8MG9bMC03XSg/Ol8/WzAtN10pKnwwYlswMV0oPzpfP1swMV0pKnwoXFxkKD86Xz9cXGQpKik/XFwuP1xcZCg/Ol8/XFxkKSooPzpbRWVdWystXT9cXGQrKT8pKD86Xz8oPzpbaXVdKD86OHwxNnwzMnw2NCk/fGYzMnxmNjQpKT9cXGIvLFwiY2xvc3VyZS1wYXJhbXNcIjp7cGF0dGVybjovXFx8W158XSpcXHwoPz1cXHMqW3stXSkvLGluc2lkZTp7cHVuY3R1YXRpb246L1t8OixdLyxvcGVyYXRvcjovWyYqXS99fSxwdW5jdHVhdGlvbjovW3t9W1xcXTsoKSw6XXxcXC4rfC0+LyxvcGVyYXRvcjovWy0rKlxcLyUhXl09P3w9Wz0+XT98QHwmWyY9XT98XFx8W3w9XT98PDw/PT98Pj4/PT8vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwicnVzdFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuc2FzPXtkYXRhbGluZXM6e3BhdHRlcm46L15cXHMqKD86KD86ZGF0YSk/bGluZXN8Y2FyZHMpO1tcXHNcXFNdKz8oPzpcXHI/XFxufFxccik7L2ltLGFsaWFzOlwic3RyaW5nXCIsaW5zaWRlOntrZXl3b3JkOntwYXR0ZXJuOi9eKFxccyopKD86KD86ZGF0YSk/bGluZXN8Y2FyZHMpL2ksbG9va2JlaGluZDohMH0scHVuY3R1YXRpb246LzsvfX0sY29tbWVudDpbe3BhdHRlcm46LyheXFxzKnw7XFxzKilcXCouKjsvbSxsb29rYmVoaW5kOiEwfSwvXFwvXFwqW1xcc1xcU10rP1xcKlxcLy9dLGRhdGV0aW1lOntwYXR0ZXJuOi8nW14nXSsnKD86ZHQ/fHQpXFxiL2ksYWxpYXM6XCJudW1iZXJcIn0sc3RyaW5nOntwYXR0ZXJuOi8oW1wiJ10pKD86XFwxXFwxfCg/IVxcMSlbXFxzXFxTXSkqXFwxLyxncmVlZHk6ITB9LGtleXdvcmQ6L1xcYig/OmRhdGF8ZWxzZXxmb3JtYXR8aWZ8aW5wdXR8cHJvY1xcc1xcdyt8cXVpdHxydW58dGhlbilcXGIvaSxudW1iZXI6L1xcYig/OltcXGRhLWZdK3h8XFxkKyg/OlxcLlxcZCspPyg/OmVbKy1dP1xcZCspPykvaSxvcGVyYXRvcjovXFwqXFwqP3xcXHxcXHw/fCEhP3zCpsKmP3w8Wz49XT98Pls8PV0/fFstK1xcLz0mXXxbfsKsXl09P3xcXGIoPzplcXxuZXxndHxsdHxnZXxsZXxpbnxub3QpXFxiL2kscHVuY3R1YXRpb246L1skJUAuKCl7fVxcW1xcXTssXFxcXF0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwic2FzXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7ZS5sYW5ndWFnZXMuc2Fzcz1lLmxhbmd1YWdlcy5leHRlbmQoXCJjc3NcIix7Y29tbWVudDp7cGF0dGVybjovXihbIFxcdF0qKVxcL1tcXC8qXS4qKD86KD86XFxyP1xcbnxcXHIpXFwxWyBcXHRdKy4rKSovbSxsb29rYmVoaW5kOiEwfX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInNhc3NcIixcImF0cnVsZVwiLHtcImF0cnVsZS1saW5lXCI6e3BhdHRlcm46L14oPzpbIFxcdF0qKVtAKz1dLisvbSxpbnNpZGU6e2F0cnVsZTovKD86QFtcXHctXSt8Wys9XSkvbX19fSksZGVsZXRlIGUubGFuZ3VhZ2VzLnNhc3MuYXRydWxlO3ZhciB0PS9cXCRbLVxcd10rfCNcXHtcXCRbLVxcd10rXFx9LyxuPVsvWysqXFwvJV18Wz0hXT18PD0/fD49P3xcXGIoPzphbmR8b3J8bm90KVxcYi8se3BhdHRlcm46LyhcXHMrKS0oPz1cXHMpLyxsb29rYmVoaW5kOiEwfV07ZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwic2Fzc1wiLFwicHJvcGVydHlcIix7XCJ2YXJpYWJsZS1saW5lXCI6e3BhdHRlcm46L15bIFxcdF0qXFwkLisvbSxpbnNpZGU6e3B1bmN0dWF0aW9uOi86Lyx2YXJpYWJsZTp0LG9wZXJhdG9yOm59fSxcInByb3BlcnR5LWxpbmVcIjp7cGF0dGVybjovXlsgXFx0XSooPzpbXjpcXHNdKyAqOi4qfDpbXjpcXHNdKy4qKS9tLGluc2lkZTp7cHJvcGVydHk6Wy9bXjpcXHNdKyg/PVxccyo6KS8se3BhdHRlcm46Lyg6KVteOlxcc10rLyxsb29rYmVoaW5kOiEwfV0scHVuY3R1YXRpb246LzovLHZhcmlhYmxlOnQsb3BlcmF0b3I6bixpbXBvcnRhbnQ6ZS5sYW5ndWFnZXMuc2Fzcy5pbXBvcnRhbnR9fX0pLGRlbGV0ZSBlLmxhbmd1YWdlcy5zYXNzLnByb3BlcnR5LGRlbGV0ZSBlLmxhbmd1YWdlcy5zYXNzLmltcG9ydGFudCxkZWxldGUgZS5sYW5ndWFnZXMuc2Fzcy5zZWxlY3RvcixlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJzYXNzXCIsXCJwdW5jdHVhdGlvblwiLHtzZWxlY3Rvcjp7cGF0dGVybjovKFsgXFx0XSopXFxTKD86LD9bXixcXHJcXG5dKykqKD86LCg/Olxccj9cXG58XFxyKVxcMVsgXFx0XStcXFMoPzosP1teLFxcclxcbl0rKSopKi8sbG9va2JlaGluZDohMH19KX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInNhc3NcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDE2NCk7ZnVuY3Rpb24gbyhlKXtlLnJlZ2lzdGVyKHIpLGUubGFuZ3VhZ2VzLnNjYWxhPWUubGFuZ3VhZ2VzLmV4dGVuZChcImphdmFcIix7a2V5d29yZDovPC18PT58XFxiKD86YWJzdHJhY3R8Y2FzZXxjYXRjaHxjbGFzc3xkZWZ8ZG98ZWxzZXxleHRlbmRzfGZpbmFsfGZpbmFsbHl8Zm9yfGZvclNvbWV8aWZ8aW1wbGljaXR8aW1wb3J0fGxhenl8bWF0Y2h8bmV3fG51bGx8b2JqZWN0fG92ZXJyaWRlfHBhY2thZ2V8cHJpdmF0ZXxwcm90ZWN0ZWR8cmV0dXJufHNlYWxlZHxzZWxmfHN1cGVyfHRoaXN8dGhyb3d8dHJhaXR8dHJ5fHR5cGV8dmFsfHZhcnx3aGlsZXx3aXRofHlpZWxkKVxcYi8sc3RyaW5nOlt7cGF0dGVybjovXCJcIlwiW1xcc1xcU10qP1wiXCJcIi8sZ3JlZWR5OiEwfSx7cGF0dGVybjovKFwifCcpKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwfV0sYnVpbHRpbjovXFxiKD86U3RyaW5nfEludHxMb25nfFNob3J0fEJ5dGV8Qm9vbGVhbnxEb3VibGV8RmxvYXR8Q2hhcnxBbnl8QW55UmVmfEFueVZhbHxVbml0fE5vdGhpbmcpXFxiLyxudW1iZXI6L1xcYjB4W1xcZGEtZl0qXFwuP1tcXGRhLWZdK3woPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzplXFxkKyk/W2RmbF0/L2ksc3ltYm9sOi8nW15cXGRcXHNcXFxcXVxcdyovfSksZGVsZXRlIGUubGFuZ3VhZ2VzLnNjYWxhW1wiY2xhc3MtbmFtZVwiXSxkZWxldGUgZS5sYW5ndWFnZXMuc2NhbGEuZnVuY3Rpb259ZS5leHBvcnRzPW8sby5kaXNwbGF5TmFtZT1cInNjYWxhXCIsby5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy5zY2hlbWU9e2NvbW1lbnQ6LzsuKi8sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlteXCJcXFxcXFxyXFxuXXxcXFxcLikqXCJ8J1teKCdcXHNdKi8sZ3JlZWR5OiEwfSxrZXl3b3JkOntwYXR0ZXJuOi8oXFwoKSg/OmRlZmluZSg/Oi1zeW50YXh8LWxpYnJhcnl8LXZhbHVlcyk/fCg/OmNhc2UtKT9sYW1iZGF8bGV0KD86XFwqfHJlYyk/KD86LXZhbHVlcyk/fGVsc2V8aWZ8Y29uZHxiZWdpbnxkZWxheSg/Oi1mb3JjZSk/fHBhcmFtZXRlcml6ZXxndWFyZHxzZXQhfCg/OnF1YXNpLSk/cXVvdGV8c3ludGF4LXJ1bGVzKS8sbG9va2JlaGluZDohMH0sYnVpbHRpbjp7cGF0dGVybjovKFxcKCkoPzooPzpjb25zfGNhcnxjZHJ8bGlzdHxjYWxsLXdpdGgtY3VycmVudC1jb250aW51YXRpb258Y2FsbFxcL2NjfGFwcGVuZHxhYnN8YXBwbHl8ZXZhbClcXGJ8bnVsbFxcP3xwYWlyXFw/fGJvb2xlYW5cXD98ZW9mLW9iamVjdFxcP3xjaGFyXFw/fHByb2NlZHVyZVxcP3xudW1iZXJcXD98cG9ydFxcP3xzdHJpbmdcXD98dmVjdG9yXFw/fHN5bWJvbFxcP3xieXRldmVjdG9yXFw/KS8sbG9va2JlaGluZDohMH0sbnVtYmVyOntwYXR0ZXJuOi8oXFxzfFsoKV0pWy0rXT9cXGQqXFwuP1xcZCsoPzpcXHMqWy0rXVxccypcXGQqXFwuP1xcZCtpKT9cXGIvLGxvb2tiZWhpbmQ6ITB9LGJvb2xlYW46LyNbdGZdLyxvcGVyYXRvcjp7cGF0dGVybjovKFxcKCkoPzpbLSsqJVxcL118Wzw+XT0/fD0+PykvLGxvb2tiZWhpbmQ6ITB9LGZ1bmN0aW9uOntwYXR0ZXJuOi8oXFwoKVteXFxzKCldKig/PVxccykvLGxvb2tiZWhpbmQ6ITB9LHB1bmN0dWF0aW9uOi9bKCldL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInNjaGVtZVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuc2Nzcz1lLmxhbmd1YWdlcy5leHRlbmQoXCJjc3NcIix7Y29tbWVudDp7cGF0dGVybjovKF58W15cXFxcXSkoPzpcXC9cXCpbXFxzXFxTXSo/XFwqXFwvfFxcL1xcLy4qKS8sbG9va2JlaGluZDohMH0sYXRydWxlOntwYXR0ZXJuOi9AW1xcdy1dKyg/OlxcKFteKCldK1xcKXxbXihdKSo/KD89XFxzK1t7O10pLyxpbnNpZGU6e3J1bGU6L0BbXFx3LV0rL319LHVybDovKD86Wy1hLXpdKy0pKnVybCg/PVxcKCkvaSxzZWxlY3Rvcjp7cGF0dGVybjovKD89XFxTKVteQDt7fSgpXT8oPzpbXkA7e30oKV18JnwjXFx7XFwkWy1cXHddK1xcfSkrKD89XFxzKlxceyg/OlxcfXxcXHN8W159XStbOntdW159XSspKS9tLGluc2lkZTp7cGFyZW50OntwYXR0ZXJuOi8mLyxhbGlhczpcImltcG9ydGFudFwifSxwbGFjZWhvbGRlcjovJVstXFx3XSsvLHZhcmlhYmxlOi9cXCRbLVxcd10rfCNcXHtcXCRbLVxcd10rXFx9L319fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwic2Nzc1wiLFwiYXRydWxlXCIse2tleXdvcmQ6Wy9AKD86aWZ8ZWxzZSg/OiBpZik/fGZvcnxlYWNofHdoaWxlfGltcG9ydHxleHRlbmR8ZGVidWd8d2FybnxtaXhpbnxpbmNsdWRlfGZ1bmN0aW9ufHJldHVybnxjb250ZW50KS9pLHtwYXR0ZXJuOi8oICspKD86ZnJvbXx0aHJvdWdoKSg/PSApLyxsb29rYmVoaW5kOiEwfV19KSxlLmxhbmd1YWdlcy5zY3NzLnByb3BlcnR5PXtwYXR0ZXJuOi8oPzpbXFx3LV18XFwkWy1cXHddK3wjXFx7XFwkWy1cXHddK1xcfSkrKD89XFxzKjopL2ksaW5zaWRlOnt2YXJpYWJsZTovXFwkWy1cXHddK3wjXFx7XFwkWy1cXHddK1xcfS99fSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJzY3NzXCIsXCJpbXBvcnRhbnRcIix7dmFyaWFibGU6L1xcJFstXFx3XSt8I1xce1xcJFstXFx3XStcXH0vfSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwic2Nzc1wiLFwiZnVuY3Rpb25cIix7cGxhY2Vob2xkZXI6e3BhdHRlcm46LyVbLVxcd10rLyxhbGlhczpcInNlbGVjdG9yXCJ9LHN0YXRlbWVudDp7cGF0dGVybjovXFxCISg/OmRlZmF1bHR8b3B0aW9uYWwpXFxiL2ksYWxpYXM6XCJrZXl3b3JkXCJ9LGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2UpXFxiLyxudWxsOi9cXGJudWxsXFxiLyxvcGVyYXRvcjp7cGF0dGVybjovKFxccykoPzpbLSsqXFwvJV18Wz0hXT18PD0/fD49P3xhbmR8b3J8bm90KSg/PVxccykvLGxvb2tiZWhpbmQ6ITB9fSksZS5sYW5ndWFnZXMuc2Nzcy5hdHJ1bGUuaW5zaWRlLnJlc3Q9ZS5sYW5ndWFnZXMuc2Nzc31lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwic2Nzc1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMuc21hbGx0YWxrPXtjb21tZW50Oi9cIig/OlwiXCJ8W15cIl0pK1wiLyxzdHJpbmc6LycoPzonJ3xbXiddKSsnLyxzeW1ib2w6LyNbXFxkYS16XSt8Iyg/Oi18KFsrXFwvXFxcXCp+PD49QCV8Jj8hXSlcXDE/KXwjKD89XFwoKS9pLFwiYmxvY2stYXJndW1lbnRzXCI6e3BhdHRlcm46LyhcXFtcXHMqKTpbXlxcW3xdKlxcfC8sbG9va2JlaGluZDohMCxpbnNpZGU6e3ZhcmlhYmxlOi86W1xcZGEtel0rL2kscHVuY3R1YXRpb246L1xcfC99fSxcInRlbXBvcmFyeS12YXJpYWJsZXNcIjp7cGF0dGVybjovXFx8W158XStcXHwvLGluc2lkZTp7dmFyaWFibGU6L1tcXGRhLXpdKy9pLHB1bmN0dWF0aW9uOi9cXHwvfX0sa2V5d29yZDovXFxiKD86bmlsfHRydWV8ZmFsc2V8c2VsZnxzdXBlcnxuZXcpXFxiLyxjaGFyYWN0ZXI6e3BhdHRlcm46L1xcJC4vLGFsaWFzOlwic3RyaW5nXCJ9LG51bWJlcjpbL1xcZCtyLT9bXFxkQS1aXSsoPzpcXC5bXFxkQS1aXSspPyg/OmUtP1xcZCspPy8sL1xcYlxcZCsoPzpcXC5cXGQrKT8oPzplLT9cXGQrKT8vXSxvcGVyYXRvcjovWzw9XT0/fDo9fH5bfj1dfFxcL1xcLz98XFxcXFxcXFx8Pls+PV0/fFshXitcXC0qJnwsQF0vLHB1bmN0dWF0aW9uOi9bLjs6P1xcW1xcXSgpe31dL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInNtYWxsdGFsa1wiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLnNtYXJ0eT17Y29tbWVudDovXFx7XFwqW1xcc1xcU10qP1xcKlxcfS8sZGVsaW1pdGVyOntwYXR0ZXJuOi9eXFx7fFxcfSQvaSxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LHN0cmluZzovKFtcIiddKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLG51bWJlcjovXFxiMHhbXFxkQS1GYS1mXSt8KD86XFxiXFxkK1xcLj9cXGQqfFxcQlxcLlxcZCspKD86W0VlXVstK10/XFxkKyk/Lyx2YXJpYWJsZTpbL1xcJCg/IVxcZClcXHcrLywvIyg/IVxcZClcXHcrIy8se3BhdHRlcm46LyhcXC58LT4pKD8hXFxkKVxcdysvLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXFxbKSg/IVxcZClcXHcrKD89XFxdKS8sbG9va2JlaGluZDohMH1dLGZ1bmN0aW9uOlt7cGF0dGVybjovKFxcfFxccyopQD8oPyFcXGQpXFx3Ky8sbG9va2JlaGluZDohMH0sL15cXC8/KD8hXFxkKVxcdysvLC8oPyFcXGQpXFx3Kyg/PVxcKCkvXSxcImF0dHItbmFtZVwiOntwYXR0ZXJuOi9cXHcrXFxzKj1cXHMqKD86KD8hXFxkKVxcdyspPy8saW5zaWRlOnt2YXJpYWJsZTp7cGF0dGVybjovKD1cXHMqKSg/IVxcZClcXHcrLyxsb29rYmVoaW5kOiEwfSxvcGVyYXRvcjovPS99fSxwdW5jdHVhdGlvbjpbL1tcXFtcXF0oKS4sOmBdfC0+L10sb3BlcmF0b3I6Wy9bK1xcLSpcXC8lXXw9PT89P3xbITw+XT0/fCYmfFxcfFxcfD8vLC9cXGJpc1xccysoPzpub3RcXHMrKT8oPzpkaXZ8ZXZlbnxvZGQpKD86XFxzK2J5KT9cXGIvLC9cXGIoPzplcXxuZXE/fGd0fGx0fGd0P2V8bHQ/ZXxub3R8bW9kfG9yfGFuZClcXGIvXSxrZXl3b3JkOi9cXGIoPzpmYWxzZXxvZmZ8b258bm98dHJ1ZXx5ZXMpXFxiL30sZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwic21hcnR5XCIsXCJ0YWdcIix7XCJzbWFydHktY29tbWVudFwiOntwYXR0ZXJuOi9cXHtcXCpbXFxzXFxTXSo/XFwqXFx9LyxhbGlhczpbXCJzbWFydHlcIixcImNvbW1lbnRcIl19fSksZS5ob29rcy5hZGQoXCJiZWZvcmUtdG9rZW5pemVcIixmdW5jdGlvbih0KXt2YXIgbj0hMTtlLmxhbmd1YWdlc1tcIm1hcmt1cC10ZW1wbGF0aW5nXCJdLmJ1aWxkUGxhY2Vob2xkZXJzKHQsXCJzbWFydHlcIiwvXFx7XFwqW1xcc1xcU10qP1xcKlxcfXxcXHtbXFxzXFxTXSs/XFx9L2csZnVuY3Rpb24oZSl7cmV0dXJuXCJ7L2xpdGVyYWx9XCI9PT1lJiYobj0hMSksIW4mJihcIntsaXRlcmFsfVwiPT09ZSYmKG49ITApLCEwKX0pfSksZS5ob29rcy5hZGQoXCJhZnRlci10b2tlbml6ZVwiLGZ1bmN0aW9uKHQpe2UubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl0udG9rZW5pemVQbGFjZWhvbGRlcnModCxcInNtYXJ0eVwiKX0pfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwic21hcnR5XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7dmFyIHQ9LyhbXCInXSkoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxuPS9cXGJcXGQrKD86XFwuXFxkKyk/KD86W2VFXVsrLV0/XFxkKyk/XFxifFxcYjB4W1xcZEEtRl0rXFxiLztlLmxhbmd1YWdlcy5zb3k9e2NvbW1lbnQ6Wy9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvLyx7cGF0dGVybjovKFxccylcXC9cXC8uKi8sbG9va2JlaGluZDohMCxncmVlZHk6ITB9XSxcImNvbW1hbmQtYXJnXCI6e3BhdHRlcm46Lyh7K1xcLz9cXHMqKD86YWxpYXN8Y2FsbHxkZWxjYWxsfGRlbHBhY2thZ2V8ZGVsdGVtcGxhdGV8bmFtZXNwYWNlfHRlbXBsYXRlKVxccyspXFwuP1tcXHcuXSsvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzdHJpbmdcIixpbnNpZGU6e3B1bmN0dWF0aW9uOi9cXC4vfX0scGFyYW1ldGVyOntwYXR0ZXJuOi8oeytcXC8/XFxzKkA/cGFyYW1cXD8/XFxzKylcXC4/W1xcdy5dKy8sbG9va2JlaGluZDohMCxhbGlhczpcInZhcmlhYmxlXCJ9LGtleXdvcmQ6W3twYXR0ZXJuOi8oeytcXC8/W15cXFNcXHJcXG5dKikoPzpcXFxcW25ydF18YWxpYXN8Y2FsbHxjYXNlfGNzc3xkZWZhdWx0fGRlbGNhbGx8ZGVscGFja2FnZXxkZWx0ZW1wbGF0ZXxlbHNlKD86aWYpP3xmYWxsYmFja21zZ3xmb3IoPzplYWNoKT98aWYoPzplbXB0eSk/fGxifGxldHxsaXRlcmFsfG1zZ3xuYW1lc3BhY2V8bmlsfEA/cGFyYW1cXD8/fHJifHNwfHN3aXRjaHx0ZW1wbGF0ZXx4aWQpLyxsb29rYmVoaW5kOiEwfSwvXFxiKD86YW55fGFzfGF0dHJpYnV0ZXN8Ym9vbHxjc3N8ZmxvYXR8aW58aW50fGpzfGh0bWx8bGlzdHxtYXB8bnVsbHxudW1iZXJ8c3RyaW5nfHVyaSlcXGIvXSxkZWxpbWl0ZXI6e3BhdHRlcm46L157K1xcLz98XFwvP30rJC8sYWxpYXM6XCJwdW5jdHVhdGlvblwifSxwcm9wZXJ0eTovXFx3Kyg/PT0pLyx2YXJpYWJsZTp7cGF0dGVybjovXFwkW15cXFdcXGRdXFx3Kig/OlxcPz8oPzpcXC5cXHcrfFxcW1teXFxdXStdKSkqLyxpbnNpZGU6e3N0cmluZzp7cGF0dGVybjp0LGdyZWVkeTohMH0sbnVtYmVyOm4scHVuY3R1YXRpb246L1tcXFtcXF0uP10vfX0sc3RyaW5nOntwYXR0ZXJuOnQsZ3JlZWR5OiEwfSxmdW5jdGlvbjpbL1xcdysoPz1cXCgpLyx7cGF0dGVybjovKFxcfFteXFxTXFxyXFxuXSopXFx3Ky8sbG9va2JlaGluZDohMH1dLGJvb2xlYW46L1xcYig/OnRydWV8ZmFsc2UpXFxiLyxudW1iZXI6bixvcGVyYXRvcjovXFw/Oj98PD0/fD49P3w9PT98IT18WysqXFwvJS1dfFxcYig/OmFuZHxub3R8b3IpXFxiLyxwdW5jdHVhdGlvbjovW3t9KClcXFtcXF18Liw6XS99LGUuaG9va3MuYWRkKFwiYmVmb3JlLXRva2VuaXplXCIsZnVuY3Rpb24odCl7dmFyIG49ITE7ZS5sYW5ndWFnZXNbXCJtYXJrdXAtdGVtcGxhdGluZ1wiXS5idWlsZFBsYWNlaG9sZGVycyh0LFwic295XCIsL3t7Lis/fX18ey4rP318XFxzXFwvXFwvLip8XFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLGZ1bmN0aW9uKGUpe3JldHVyblwiey9saXRlcmFsfVwiPT09ZSYmKG49ITEpLCFuJiYoXCJ7bGl0ZXJhbH1cIj09PWUmJihuPSEwKSwhMCl9KX0pLGUuaG9va3MuYWRkKFwiYWZ0ZXItdG9rZW5pemVcIixmdW5jdGlvbih0KXtlLmxhbmd1YWdlc1tcIm1hcmt1cC10ZW1wbGF0aW5nXCJdLnRva2VuaXplUGxhY2Vob2xkZXJzKHQsXCJzb3lcIil9KX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInNveVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe3ZhciB0PXt1cmw6L3VybFxcKChbXCInXT8pLio/XFwxXFwpL2ksc3RyaW5nOntwYXR0ZXJuOi8oXCJ8JykoPzooPyFcXDEpW15cXFxcXFxyXFxuXXxcXFxcKD86XFxyXFxufFtcXHNcXFNdKSkqXFwxLyxncmVlZHk6ITB9LGludGVycG9sYXRpb246bnVsbCxmdW5jOm51bGwsaW1wb3J0YW50Oi9cXEIhKD86aW1wb3J0YW50fG9wdGlvbmFsKVxcYi9pLGtleXdvcmQ6e3BhdHRlcm46LyhefFxccyspKD86KD86aWZ8ZWxzZXxmb3J8cmV0dXJufHVubGVzcykoPz1cXHMrfCQpfEBbXFx3LV0rKS8sbG9va2JlaGluZDohMH0saGV4Y29kZTovI1tcXGRhLWZdezMsNn0vaSxudW1iZXI6L1xcYlxcZCsoPzpcXC5cXGQrKT8lPy8sYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvLG9wZXJhdG9yOlsvfnxbKyFcXC8lPD4/PV09P3xbLTpdPXxcXCpbKj1dP3xcXC4rfCYmfFxcfFxcfHxcXEItXFxCfFxcYig/OmFuZHxpbnxpcyg/OiBhfCBkZWZpbmVkfCBub3R8bnQpP3xub3R8b3IpXFxiL10scHVuY3R1YXRpb246L1t7fSgpXFxbXFxdOzosXS99O3QuaW50ZXJwb2xhdGlvbj17cGF0dGVybjovXFx7W15cXHJcXG59Ol0rXFx9LyxhbGlhczpcInZhcmlhYmxlXCIsaW5zaWRlOntkZWxpbWl0ZXI6e3BhdHRlcm46L157fH0kLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LHJlc3Q6dH19LHQuZnVuYz17cGF0dGVybjovW1xcdy1dK1xcKFteKV0qXFwpLiovLGluc2lkZTp7ZnVuY3Rpb246L15bXihdKy8scmVzdDp0fX0sZS5sYW5ndWFnZXMuc3R5bHVzPXtjb21tZW50OntwYXR0ZXJuOi8oXnxbXlxcXFxdKShcXC9cXCpbXFxzXFxTXSo/XFwqXFwvfFxcL1xcLy4qKS8sbG9va2JlaGluZDohMH0sXCJhdHJ1bGUtZGVjbGFyYXRpb25cIjp7cGF0dGVybjovKF5cXHMqKUAuKy9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOnthdHJ1bGU6L15AW1xcdy1dKy8scmVzdDp0fX0sXCJ2YXJpYWJsZS1kZWNsYXJhdGlvblwiOntwYXR0ZXJuOi8oXlsgXFx0XSopW1xcdyQtXStcXHMqLj89WyBcXHRdKig/Oig/Olxce1tefV0qXFx9fC4rKXwkKS9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOnt2YXJpYWJsZTovXlxcUysvLHJlc3Q6dH19LHN0YXRlbWVudDp7cGF0dGVybjovKF5bIFxcdF0qKSg/OmlmfGVsc2V8Zm9yfHJldHVybnx1bmxlc3MpWyBcXHRdKy4rL20sbG9va2JlaGluZDohMCxpbnNpZGU6e2tleXdvcmQ6L15cXFMrLyxyZXN0OnR9fSxcInByb3BlcnR5LWRlY2xhcmF0aW9uXCI6e3BhdHRlcm46LygoPzpefFxceykoWyBcXHRdKikpKD86W1xcdy1dfFxce1tefVxcclxcbl0rXFx9KSsoPzpcXHMqOlxccyp8WyBcXHRdKylbXntcXHJcXG5dKig/Ojt8W157XFxyXFxuLF0oPz0kKSg/IShcXHI/XFxufFxccikoPzpcXHt8XFwyWyBcXHRdKykpKS9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwcm9wZXJ0eTp7cGF0dGVybjovXlteXFxzOl0rLyxpbnNpZGU6e2ludGVycG9sYXRpb246dC5pbnRlcnBvbGF0aW9ufX0scmVzdDp0fX0sc2VsZWN0b3I6e3BhdHRlcm46LyheWyBcXHRdKikoPzooPz1cXFMpKD86W157fVxcclxcbjooKV18Ojo/W1xcdy1dKyg/OlxcKFteKVxcclxcbl0qXFwpKT98XFx7W159XFxyXFxuXStcXH0pKykoPzooPzpcXHI/XFxufFxccikoPzpcXDEoPzooPz1cXFMpKD86W157fVxcclxcbjooKV18Ojo/W1xcdy1dKyg/OlxcKFteKVxcclxcbl0qXFwpKT98XFx7W159XFxyXFxuXStcXH0pKykpKSooPzosJHxcXHt8KD89KD86XFxyP1xcbnxcXHIpKD86XFx7fFxcMVsgXFx0XSspKSkvbSxsb29rYmVoaW5kOiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp0LmludGVycG9sYXRpb24scHVuY3R1YXRpb246L1t7fSxdL319LGZ1bmM6dC5mdW5jLHN0cmluZzp0LnN0cmluZyxpbnRlcnBvbGF0aW9uOnQuaW50ZXJwb2xhdGlvbixwdW5jdHVhdGlvbjovW3t9KClcXFtcXF07Oi5dL319KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJzdHlsdXNcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnN3aWZ0PWUubGFuZ3VhZ2VzLmV4dGVuZChcImNsaWtlXCIse3N0cmluZzp7cGF0dGVybjovKFwifCcpKFxcXFwoPzpcXCgoPzpbXigpXXxcXChbXildK1xcKSkrXFwpfFxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp7cGF0dGVybjovXFxcXFxcKCg/OlteKCldfFxcKFteKV0rXFwpKStcXCkvLGluc2lkZTp7ZGVsaW1pdGVyOntwYXR0ZXJuOi9eXFxcXFxcKHxcXCkkLyxhbGlhczpcInZhcmlhYmxlXCJ9fX19fSxrZXl3b3JkOi9cXGIoPzphc3xhc3NvY2lhdGl2aXR5fGJyZWFrfGNhc2V8Y2F0Y2h8Y2xhc3N8Y29udGludWV8Y29udmVuaWVuY2V8ZGVmYXVsdHxkZWZlcnxkZWluaXR8ZGlkU2V0fGRvfGR5bmFtaWMoPzpUeXBlKT98ZWxzZXxlbnVtfGV4dGVuc2lvbnxmYWxsdGhyb3VnaHxmaW5hbHxmb3J8ZnVuY3xnZXR8Z3VhcmR8aWZ8aW1wb3J0fGlufGluZml4fGluaXR8aW5vdXR8aW50ZXJuYWx8aXN8bGF6eXxsZWZ0fGxldHxtdXRhdGluZ3xuZXd8bm9uZXxub25tdXRhdGluZ3xvcGVyYXRvcnxvcHRpb25hbHxvdmVycmlkZXxwb3N0Zml4fHByZWNlZGVuY2V8cHJlZml4fHByaXZhdGV8cHJvdG9jb2x8cHVibGljfHJlcGVhdHxyZXF1aXJlZHxyZXRocm93c3xyZXR1cm58cmlnaHR8c2FmZXxzZWxmfFNlbGZ8c2V0fHN0YXRpY3xzdHJ1Y3R8c3Vic2NyaXB0fHN1cGVyfHN3aXRjaHx0aHJvd3M/fHRyeXxUeXBlfHR5cGVhbGlhc3x1bm93bmVkfHVuc2FmZXx2YXJ8d2Vha3x3aGVyZXx3aGlsZXx3aWxsU2V0fF9fKD86Q09MVU1OX198RklMRV9ffEZVTkNUSU9OX198TElORV9fKSlcXGIvLG51bWJlcjovXFxiKD86W1xcZF9dKyg/OlxcLltcXGRlX10rKT98MHhbYS1mMC05X10rKD86XFwuW2EtZjAtOXBfXSspP3wwYlswMV9dK3wwb1swLTdfXSspXFxiL2ksY29uc3RhbnQ6L1xcYig/Om5pbHxbQS1aX117Mix9fGtbQS1aXVtBLVphLXpfXSspXFxiLyxhdHJ1bGU6L0BcXGIoPzpJQig/Ok91dGxldHxEZXNpZ25hYmxlfEFjdGlvbnxJbnNwZWN0YWJsZSl8Y2xhc3NfcHJvdG9jb2x8ZXhwb3J0ZWR8bm9yZXR1cm58TlMoPzpDb3B5aW5nfE1hbmFnZWQpfG9iamN8VUlBcHBsaWNhdGlvbk1haW58YXV0b19jbG9zdXJlKVxcYi8sYnVpbHRpbjovXFxiKD86W0EtWl1cXFMrfGFic3xhZHZhbmNlfGFsaWdub2YoPzpWYWx1ZSk/fGFzc2VydHxjb250YWluc3xjb3VudCg/OkVsZW1lbnRzKT98ZGVidWdQcmludCg/OmxuKT98ZGlzdGFuY2V8ZHJvcCg/OkZpcnN0fExhc3QpfGR1bXB8ZW51bWVyYXRlfGVxdWFsfGZpbHRlcnxmaW5kfGZpcnN0fGdldFZhTGlzdHxpbmRpY2VzfGlzRW1wdHl8am9pbnxsYXN0fGxleGljb2dyYXBoaWNhbENvbXBhcmV8bWFwfG1heCg/OkVsZW1lbnQpP3xtaW4oPzpFbGVtZW50KT98bnVtZXJpY0Nhc3R8b3ZlcmxhcHN8cGFydGl0aW9ufHByaW50KD86bG4pP3xyZWR1Y2V8cmVmbGVjdHxyZXZlcnNlfHNpemVvZig/OlZhbHVlKT98c29ydCg/OmVkKT98c3BsaXR8c3RhcnRzV2l0aHxzdHJpZGUoPzpvZig/OlZhbHVlKT8pP3xzdWZmaXh8c3dhcHx0b0RlYnVnU3RyaW5nfHRvU3RyaW5nfHRyYW5zY29kZXx1bmRlcmVzdGltYXRlQ291bnR8dW5zYWZlQml0Q2FzdHx3aXRoKD86RXh0ZW5kZWRMaWZldGltZXxVbnNhZmUoPzpNdXRhYmxlUG9pbnRlcnM/fFBvaW50ZXJzPyl8VmFMaXN0KSlcXGIvfSksZS5sYW5ndWFnZXMuc3dpZnQuc3RyaW5nLmluc2lkZS5pbnRlcnBvbGF0aW9uLmluc2lkZS5yZXN0PWUubGFuZ3VhZ2VzLnN3aWZ0fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJzd2lmdFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMudGFwPXtmYWlsOi9ub3Qgb2tbXiN7XFxuXFxyXSovLHBhc3M6L29rW14je1xcblxccl0qLyxwcmFnbWE6L3ByYWdtYSBbKy1dW2Etel0rLyxiYWlsb3V0Oi9iYWlsIG91dCEuKi9pLHZlcnNpb246L1RBUCB2ZXJzaW9uIFxcZCsvaSxwbGFuOi9cXGQrXFwuXFwuXFxkKyg/OiArIy4qKT8vLHN1YnRlc3Q6e3BhdHRlcm46LyMgU3VidGVzdCg/OjogLiopPy8sZ3JlZWR5OiEwfSxwdW5jdHVhdGlvbjovW3t9XS8sZGlyZWN0aXZlOi8jLiovLHlhbWxpc2g6e3BhdHRlcm46LyheW15cXFNcXHJcXG5dKiktLS0oPzpcXHJcXG4/fFxcbikoPzouKig/Olxcclxcbj98XFxuKSkqP1teXFxTXFxyXFxuXSpcXC5cXC5cXC4kL20sbG9va2JlaGluZDohMCxpbnNpZGU6ZS5sYW5ndWFnZXMueWFtbCxhbGlhczpcImxhbmd1YWdlLXlhbWxcIn19fWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJ0YXBcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnRjbD17Y29tbWVudDp7cGF0dGVybjovKF58W15cXFxcXSkjLiovLGxvb2tiZWhpbmQ6ITB9LHN0cmluZzp7cGF0dGVybjovXCIoPzpbXlwiXFxcXFxcclxcbl18XFxcXCg/OlxcclxcbnxbXFxzXFxTXSkpKlwiLyxncmVlZHk6ITB9LHZhcmlhYmxlOlt7cGF0dGVybjovKFxcJCkoPzo6Oik/KD86W2EtekEtWjAtOV0rOjopKlxcdysvLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXFwkKXtbXn1dK30vLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXlxccypzZXRbIFxcdF0rKSg/Ojo6KT8oPzpbYS16QS1aMC05XSs6OikqXFx3Ky9tLGxvb2tiZWhpbmQ6ITB9XSxmdW5jdGlvbjp7cGF0dGVybjovKF5cXHMqcHJvY1sgXFx0XSspW15cXHNdKy9tLGxvb2tiZWhpbmQ6ITB9LGJ1aWx0aW46W3twYXR0ZXJuOi8oXlxccyopKD86cHJvY3xyZXR1cm58Y2xhc3N8ZXJyb3J8ZXZhbHxleGl0fGZvcnxmb3JlYWNofGlmfHN3aXRjaHx3aGlsZXxicmVha3xjb250aW51ZSlcXGIvbSxsb29rYmVoaW5kOiEwfSwvXFxiKD86ZWxzZWlmfGVsc2UpXFxiL10sc2NvcGU6e3BhdHRlcm46LyheXFxzKikoPzpnbG9iYWx8dXB2YXJ8dmFyaWFibGUpXFxiL20sbG9va2JlaGluZDohMCxhbGlhczpcImNvbnN0YW50XCJ9LGtleXdvcmQ6e3BhdHRlcm46LyheXFxzKnxcXFspKD86YWZ0ZXJ8YXBwZW5kfGFwcGx5fGFycmF5fGF1dG9fKD86ZXhlY29rfGltcG9ydHxsb2FkfG1raW5kZXh8cXVhbGlmeXxyZXNldCl8YXV0b21raW5kZXhfb2xkfGJnZXJyb3J8YmluYXJ5fGNhdGNofGNkfGNoYW58Y2xvY2t8Y2xvc2V8Y29uY2F0fGRkZXxkaWN0fGVuY29kaW5nfGVvZnxleGVjfGV4cHJ8ZmJsb2NrZWR8ZmNvbmZpZ3VyZXxmY29weXxmaWxlKD86ZXZlbnR8bmFtZSk/fGZsdXNofGdldHN8Z2xvYnxoaXN0b3J5fGh0dHB8aW5jcnxpbmZvfGludGVycHxqb2lufGxhcHBlbmR8bGFzc2lnbnxsaW5kZXh8bGluc2VydHxsaXN0fGxsZW5ndGh8bG9hZHxscmFuZ2V8bHJlcGVhdHxscmVwbGFjZXxscmV2ZXJzZXxsc2VhcmNofGxzZXR8bHNvcnR8bWF0aCg/OmZ1bmN8b3ApfG1lbW9yeXxtc2djYXR8bmFtZXNwYWNlfG9wZW58cGFja2FnZXxwYXJyYXl8cGlkfHBrZ19ta0luZGV4fHBsYXRmb3JtfHB1dHN8cHdkfHJlX3N5bnRheHxyZWFkfHJlZmNoYW58cmVnZXhwfHJlZ2lzdHJ5fHJlZ3N1YnxyZW5hbWV8U2FmZV9CYXNlfHNjYW58c2Vla3xzZXR8c29ja2V0fHNvdXJjZXxzcGxpdHxzdHJpbmd8c3Vic3R8VGNsfHRjbCg/Ol9lbmRPZldvcmR8X2ZpbmRMaWJyYXJ5fHN0YXJ0T2YoPzpOZXh0fFByZXZpb3VzKVdvcmR8d29yZEJyZWFrKD86QWZ0ZXJ8QmVmb3JlKXx0ZXN0fHZhcnMpfHRlbGx8dGltZXx0bXx0cmFjZXx1bmtub3dufHVubG9hZHx1bnNldHx1cGRhdGV8dXBsZXZlbHx2d2FpdClcXGIvbSxsb29rYmVoaW5kOiEwfSxvcGVyYXRvcjovIT0/fFxcKlxcKj98PT18JiY/fFxcfFxcfD98PFs9PF0/fD5bPT5dP3xbLSt+XFwvJT9eXXxcXGIoPzplcXxuZXxpbnxuaSlcXGIvLHB1bmN0dWF0aW9uOi9be30oKVxcW1xcXV0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwidGNsXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7dmFyIHQ9XCIoPzpcXFxcKFtefCldK1xcXFwpfFxcXFxbW15cXFxcXV0rXFxcXF18XFxcXHtbXn1dK1xcXFx9KStcIixuPXtjc3M6e3BhdHRlcm46L1xce1tefV0rXFx9LyxpbnNpZGU6e3Jlc3Q6ZS5sYW5ndWFnZXMuY3NzfX0sXCJjbGFzcy1pZFwiOntwYXR0ZXJuOi8oXFwoKVteKV0rKD89XFwpKS8sbG9va2JlaGluZDohMCxhbGlhczpcImF0dHItdmFsdWVcIn0sbGFuZzp7cGF0dGVybjovKFxcWylbXlxcXV0rKD89XFxdKS8sbG9va2JlaGluZDohMCxhbGlhczpcImF0dHItdmFsdWVcIn0scHVuY3R1YXRpb246L1tcXFxcXFwvXVxcZCt8XFxTL307ZS5sYW5ndWFnZXMudGV4dGlsZT1lLmxhbmd1YWdlcy5leHRlbmQoXCJtYXJrdXBcIix7cGhyYXNlOntwYXR0ZXJuOi8oXnxcXHJ8XFxuKVxcU1tcXHNcXFNdKj8oPz0kfFxccj9cXG5cXHI/XFxufFxcclxccikvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntcImJsb2NrLXRhZ1wiOntwYXR0ZXJuOlJlZ0V4cChcIl5bYS16XVxcXFx3Kig/OlwiK3QrXCJ8Wzw+PSgpXSkqXFxcXC5cIiksaW5zaWRlOnttb2RpZmllcjp7cGF0dGVybjpSZWdFeHAoXCIoXlthLXpdXFxcXHcqKSg/OlwiK3QrXCJ8Wzw+PSgpXSkrKD89XFxcXC4pXCIpLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOm59LHRhZzovXlthLXpdXFx3Ki8scHVuY3R1YXRpb246L1xcLiQvfX0sbGlzdDp7cGF0dGVybjpSZWdFeHAoXCJeWyojXSsoPzpcIit0K1wiKT9cXFxccysuK1wiLFwibVwiKSxpbnNpZGU6e21vZGlmaWVyOntwYXR0ZXJuOlJlZ0V4cChcIiheWyojXSspXCIrdCksbG9va2JlaGluZDohMCxpbnNpZGU6bn0scHVuY3R1YXRpb246L15bKiNdKy99fSx0YWJsZTp7cGF0dGVybjpSZWdFeHAoXCJeKD86KD86XCIrdCtcInxbPD49KClefl0pK1xcXFwuXFxcXHMqKT8oPzpcXFxcfCg/Oig/OlwiK3QrXCJ8Wzw+PSgpXn5fXXxbXFxcXFxcXFwvXVxcXFxkKykrXFxcXC4pP1tefF0qKStcXFxcfFwiLFwibVwiKSxpbnNpZGU6e21vZGlmaWVyOntwYXR0ZXJuOlJlZ0V4cChcIihefFxcXFx8KD86XFxcXHI/XFxcXG58XFxcXHIpPykoPzpcIit0K1wifFs8Pj0oKV5+X118W1xcXFxcXFxcL11cXFxcZCspKyg/PVxcXFwuKVwiKSxsb29rYmVoaW5kOiEwLGluc2lkZTpufSxwdW5jdHVhdGlvbjovXFx8fF5cXC4vfX0saW5saW5lOntwYXR0ZXJuOlJlZ0V4cChcIihcXFxcKlxcXFwqfF9ffFxcXFw/XFxcXD98WypfJUArXFxcXC1efl0pKD86XCIrdCtcIik/Lis/XFxcXDFcIiksaW5zaWRlOntib2xkOntwYXR0ZXJuOlJlZ0V4cChcIiheKFxcXFwqXFxcXCo/KSg/OlwiK3QrXCIpPykuKz8oPz1cXFxcMilcIiksbG9va2JlaGluZDohMH0saXRhbGljOntwYXR0ZXJuOlJlZ0V4cChcIiheKF9fPykoPzpcIit0K1wiKT8pLis/KD89XFxcXDIpXCIpLGxvb2tiZWhpbmQ6ITB9LGNpdGU6e3BhdHRlcm46UmVnRXhwKFwiKF5cXFxcP1xcXFw/KD86XCIrdCtcIik/KS4rPyg/PVxcXFw/XFxcXD8pXCIpLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzdHJpbmdcIn0sY29kZTp7cGF0dGVybjpSZWdFeHAoXCIoXkAoPzpcIit0K1wiKT8pLis/KD89QClcIiksbG9va2JlaGluZDohMCxhbGlhczpcImtleXdvcmRcIn0saW5zZXJ0ZWQ6e3BhdHRlcm46UmVnRXhwKFwiKF5cXFxcKyg/OlwiK3QrXCIpPykuKz8oPz1cXFxcKylcIiksbG9va2JlaGluZDohMH0sZGVsZXRlZDp7cGF0dGVybjpSZWdFeHAoXCIoXi0oPzpcIit0K1wiKT8pLis/KD89LSlcIiksbG9va2JlaGluZDohMH0sc3Bhbjp7cGF0dGVybjpSZWdFeHAoXCIoXiUoPzpcIit0K1wiKT8pLis/KD89JSlcIiksbG9va2JlaGluZDohMH0sbW9kaWZpZXI6e3BhdHRlcm46UmVnRXhwKFwiKF5cXFxcKlxcXFwqfF9ffFxcXFw/XFxcXD98WypfJUArXFxcXC1efl0pXCIrdCksbG9va2JlaGluZDohMCxpbnNpZGU6bn0scHVuY3R1YXRpb246L1sqXyU/QCtcXC1efl0rL319LFwibGluay1yZWZcIjp7cGF0dGVybjovXlxcW1teXFxdXStcXF1cXFMrJC9tLGluc2lkZTp7c3RyaW5nOntwYXR0ZXJuOi8oXFxbKVteXFxdXSsoPz1cXF0pLyxsb29rYmVoaW5kOiEwfSx1cmw6e3BhdHRlcm46LyhcXF0pXFxTKyQvLGxvb2tiZWhpbmQ6ITB9LHB1bmN0dWF0aW9uOi9bXFxbXFxdXS99fSxsaW5rOntwYXR0ZXJuOlJlZ0V4cCgnXCIoPzonK3QrJyk/W15cIl0rXCI6Lis/KD89W15cXFxcdy9dPyg/OlxcXFxzfCQpKScpLGluc2lkZTp7dGV4dDp7cGF0dGVybjpSZWdFeHAoJyheXCIoPzonK3QrJyk/KVteXCJdKyg/PVwiKScpLGxvb2tiZWhpbmQ6ITB9LG1vZGlmaWVyOntwYXR0ZXJuOlJlZ0V4cCgnKF5cIiknK3QpLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOm59LHVybDp7cGF0dGVybjovKDopLisvLGxvb2tiZWhpbmQ6ITB9LHB1bmN0dWF0aW9uOi9bXCI6XS99fSxpbWFnZTp7cGF0dGVybjpSZWdFeHAoXCIhKD86XCIrdCtcInxbPD49KCldKSpbXiFcXFxccygpXSsoPzpcXFxcKFteKV0rXFxcXCkpPyEoPzo6Lis/KD89W15cXFxcdy9dPyg/OlxcXFxzfCQpKSk/XCIpLGluc2lkZTp7c291cmNlOntwYXR0ZXJuOlJlZ0V4cChcIiheISg/OlwiK3QrXCJ8Wzw+PSgpXSkqKVteIVxcXFxzKCldKyg/OlxcXFwoW14pXStcXFxcKSk/KD89ISlcIiksbG9va2JlaGluZDohMCxhbGlhczpcInVybFwifSxtb2RpZmllcjp7cGF0dGVybjpSZWdFeHAoXCIoXiEpKD86XCIrdCtcInxbPD49KCldKStcIiksbG9va2JlaGluZDohMCxpbnNpZGU6bn0sdXJsOntwYXR0ZXJuOi8oOikuKy8sbG9va2JlaGluZDohMH0scHVuY3R1YXRpb246L1shOl0vfX0sZm9vdG5vdGU6e3BhdHRlcm46L1xcYlxcW1xcZCtcXF0vLGFsaWFzOlwiY29tbWVudFwiLGluc2lkZTp7cHVuY3R1YXRpb246L1xcW3xcXF0vfX0sYWNyb255bTp7cGF0dGVybjovXFxiW0EtWlxcZF0rXFwoW14pXStcXCkvLGluc2lkZTp7Y29tbWVudDp7cGF0dGVybjovKFxcKClbXildKyg/PVxcKSkvLGxvb2tiZWhpbmQ6ITB9LHB1bmN0dWF0aW9uOi9bKCldL319LG1hcms6e3BhdHRlcm46L1xcYlxcKCg/OlRNfFJ8QylcXCkvLGFsaWFzOlwiY29tbWVudFwiLGluc2lkZTp7cHVuY3R1YXRpb246L1soKV0vfX19fX0pO3ZhciByPXtpbmxpbmU6ZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLmlubGluZSxsaW5rOmUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS5saW5rLGltYWdlOmUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS5pbWFnZSxmb290bm90ZTplLmxhbmd1YWdlcy50ZXh0aWxlLnBocmFzZS5pbnNpZGUuZm9vdG5vdGUsYWNyb255bTplLmxhbmd1YWdlcy50ZXh0aWxlLnBocmFzZS5pbnNpZGUuYWNyb255bSxtYXJrOmUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS5tYXJrfTtlLmxhbmd1YWdlcy50ZXh0aWxlLnRhZy5wYXR0ZXJuPS88XFwvPyg/IVxcZClbYS16MC05XSsoPzpcXHMrW15cXHM+XFwvPV0rKD86PSg/OihcInwnKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxfFteXFxzJ1wiPj1dKykpPykqXFxzKlxcLz8+L2ksZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLmlubGluZS5pbnNpZGUuYm9sZC5pbnNpZGU9cixlLmxhbmd1YWdlcy50ZXh0aWxlLnBocmFzZS5pbnNpZGUuaW5saW5lLmluc2lkZS5pdGFsaWMuaW5zaWRlPXIsZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLmlubGluZS5pbnNpZGUuaW5zZXJ0ZWQuaW5zaWRlPXIsZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLmlubGluZS5pbnNpZGUuZGVsZXRlZC5pbnNpZGU9cixlLmxhbmd1YWdlcy50ZXh0aWxlLnBocmFzZS5pbnNpZGUuaW5saW5lLmluc2lkZS5zcGFuLmluc2lkZT1yLGUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS50YWJsZS5pbnNpZGUuaW5saW5lPXIuaW5saW5lLGUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS50YWJsZS5pbnNpZGUubGluaz1yLmxpbmssZS5sYW5ndWFnZXMudGV4dGlsZS5waHJhc2UuaW5zaWRlLnRhYmxlLmluc2lkZS5pbWFnZT1yLmltYWdlLGUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS50YWJsZS5pbnNpZGUuZm9vdG5vdGU9ci5mb290bm90ZSxlLmxhbmd1YWdlcy50ZXh0aWxlLnBocmFzZS5pbnNpZGUudGFibGUuaW5zaWRlLmFjcm9ueW09ci5hY3JvbnltLGUubGFuZ3VhZ2VzLnRleHRpbGUucGhyYXNlLmluc2lkZS50YWJsZS5pbnNpZGUubWFyaz1yLm1hcmt9KGUpfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJ0ZXh0aWxlXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigxNjUpLG89bigxNjgpO2Z1bmN0aW9uIGEoZSl7ZS5yZWdpc3RlcihyKSxlLnJlZ2lzdGVyKG8pO3ZhciB0PWUudXRpbC5jbG9uZShlLmxhbmd1YWdlcy50eXBlc2NyaXB0KTtlLmxhbmd1YWdlcy50c3g9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwianN4XCIsdCl9ZS5leHBvcnRzPWEsYS5kaXNwbGF5TmFtZT1cInRzeFwiLGEuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7IWZ1bmN0aW9uKGUpe2UubGFuZ3VhZ2VzLnR0Mj1lLmxhbmd1YWdlcy5leHRlbmQoXCJjbGlrZVwiLHtjb21tZW50OntwYXR0ZXJuOi8jLip8XFxbJSNbXFxzXFxTXSo/JVxcXS8sbG9va2JlaGluZDohMH0sa2V5d29yZDovXFxiKD86QkxPQ0t8Q0FMTHxDQVNFfENBVENIfENMRUFSfERFQlVHfERFRkFVTFR8RUxTRXxFTFNJRnxFTkR8RklMVEVSfEZJTkFMfEZPUkVBQ0h8R0VUfElGfElOfElOQ0xVREV8SU5TRVJUfExBU1R8TUFDUk98TUVUQXxORVhUfFBFUkx8UFJPQ0VTU3xSQVdQRVJMfFJFVFVSTnxTRVR8U1RPUHxUQUdTfFRIUk9XfFRSWXxTV0lUQ0h8VU5MRVNTfFVTRXxXSElMRXxXUkFQUEVSKVxcYi8scHVuY3R1YXRpb246L1tbXFxde30sKCldL30pLGRlbGV0ZSBlLmxhbmd1YWdlcy50dDIub3BlcmF0b3IsZGVsZXRlIGUubGFuZ3VhZ2VzLnR0Mi52YXJpYWJsZSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJ0dDJcIixcIm51bWJlclwiLHtvcGVyYXRvcjovPVs+PV0/fCE9P3w8PT98Pj0/fCYmfFxcfFxcfD98XFxiKD86YW5kfG9yfG5vdClcXGIvLHZhcmlhYmxlOntwYXR0ZXJuOi9bYS16XVxcdyooPzpcXHMqXFwuXFxzKig/OlxcZCt8XFwkP1thLXpdXFx3KikpKi9pfX0pLGRlbGV0ZSBlLmxhbmd1YWdlcy50dDIuZGVsaW1pdGVyLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInR0MlwiLFwia2V5d29yZFwiLHtkZWxpbWl0ZXI6e3BhdHRlcm46L14oPzpcXFslfCUlKS0/fC0/JV0kLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9fSksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKFwidHQyXCIsXCJzdHJpbmdcIix7XCJzaW5nbGUtcXVvdGVkLXN0cmluZ1wiOntwYXR0ZXJuOi8nW15cXFxcJ10qKD86XFxcXFtcXHNcXFNdW15cXFxcJ10qKSonLyxncmVlZHk6ITAsYWxpYXM6XCJzdHJpbmdcIn0sXCJkb3VibGUtcXVvdGVkLXN0cmluZ1wiOntwYXR0ZXJuOi9cIlteXFxcXFwiXSooPzpcXFxcW1xcc1xcU11bXlxcXFxcIl0qKSpcIi8sZ3JlZWR5OiEwLGFsaWFzOlwic3RyaW5nXCIsaW5zaWRlOnt2YXJpYWJsZTp7cGF0dGVybjovXFwkKD86W2Etel1cXHcqKD86XFwuKD86XFxkK3xcXCQ/W2Etel1cXHcqKSkqKS9pfX19fSksZGVsZXRlIGUubGFuZ3VhZ2VzLnR0Mi5zdHJpbmcsZS5ob29rcy5hZGQoXCJiZWZvcmUtdG9rZW5pemVcIixmdW5jdGlvbih0KXtlLmxhbmd1YWdlc1tcIm1hcmt1cC10ZW1wbGF0aW5nXCJdLmJ1aWxkUGxhY2Vob2xkZXJzKHQsXCJ0dDJcIiwvXFxbJVtcXHNcXFNdKz8lXFxdL2cpfSksZS5ob29rcy5hZGQoXCJhZnRlci10b2tlbml6ZVwiLGZ1bmN0aW9uKHQpe2UubGFuZ3VhZ2VzW1wibWFya3VwLXRlbXBsYXRpbmdcIl0udG9rZW5pemVQbGFjZWhvbGRlcnModCxcInR0MlwiKX0pfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwidHQyXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy50d2lnPXtjb21tZW50Oi9cXHsjW1xcc1xcU10qPyNcXH0vLHRhZzp7cGF0dGVybjovXFx7XFx7W1xcc1xcU10qP1xcfVxcfXxcXHslW1xcc1xcU10qPyVcXH0vLGluc2lkZTp7bGQ6e3BhdHRlcm46L14oPzpcXHtcXHstP3xcXHslLT9cXHMqXFx3KykvLGluc2lkZTp7cHVuY3R1YXRpb246L14oPzpcXHtcXHt8XFx7JSktPy8sa2V5d29yZDovXFx3Ky99fSxyZDp7cGF0dGVybjovLT8oPzolXFx9fFxcfVxcfSkkLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi8uKi99fSxzdHJpbmc6e3BhdHRlcm46LyhcInwnKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLGluc2lkZTp7cHVuY3R1YXRpb246L15bJ1wiXXxbJ1wiXSQvfX0sa2V5d29yZDovXFxiKD86ZXZlbnxpZnxvZGQpXFxiLyxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlfG51bGwpXFxiLyxudW1iZXI6L1xcYjB4W1xcZEEtRmEtZl0rfCg/OlxcYlxcZCtcXC4/XFxkKnxcXEJcXC5cXGQrKSg/OltFZV1bLStdP1xcZCspPy8sb3BlcmF0b3I6W3twYXR0ZXJuOi8oXFxzKSg/OmFuZHxiLWFuZHxiLXhvcnxiLW9yfGVuZHMgd2l0aHxpbnxpc3xtYXRjaGVzfG5vdHxvcnxzYW1lIGFzfHN0YXJ0cyB3aXRoKSg/PVxccykvLGxvb2tiZWhpbmQ6ITB9LC9bPTw+XT0/fCE9fFxcKlxcKj98XFwvXFwvP3xcXD86P3xbLSt+JXxdL10scHJvcGVydHk6L1xcYlthLXpBLVpfXVxcdypcXGIvLHB1bmN0dWF0aW9uOi9bKClcXFtcXF17fTouLF0vfX0sb3RoZXI6e3BhdHRlcm46L1xcUyg/OltcXHNcXFNdKlxcUyk/LyxpbnNpZGU6ZS5sYW5ndWFnZXMubWFya3VwfX19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInR3aWdcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDE2Myk7ZnVuY3Rpb24gbyhlKXtlLnJlZ2lzdGVyKHIpLGUubGFuZ3VhZ2VzLnZibmV0PWUubGFuZ3VhZ2VzLmV4dGVuZChcImJhc2ljXCIse2tleXdvcmQ6Lyg/OlxcYig/OkFEREhBTkRMRVJ8QUREUkVTU09GfEFMSUFTfEFORHxBTkRBTFNPfEFTfEJFRVB8QkxPQUR8Qk9PTEVBTnxCU0FWRXxCWVJFRnxCWVRFfEJZVkFMfENBTEwoPzogQUJTT0xVVEUpP3xDQVNFfENBVENIfENCT09MfENCWVRFfENDSEFSfENEQVRFfENERUN8Q0RCTHxDSEFJTnxDSEFSfENIRElSfENJTlR8Q0xBU1N8Q0xFQVJ8Q0xOR3xDTE9TRXxDTFN8Q09CSnxDT018Q09NTU9OfENPTlNUfENPTlRJTlVFfENTQllURXxDU0hPUlR8Q1NOR3xDU1RSfENUWVBFfENVSU5UfENVTE5HfENVU0hPUlR8REFUQXxEQVRFfERFQ0lNQUx8REVDTEFSRXxERUZBVUxUfERFRig/OiBGTnwgU0VHfERCTHxJTlR8TE5HfFNOR3xTVFIpfERFTEVHQVRFfERJTXxESVJFQ1RDQVNUfERPfERPVUJMRXxFTFNFfEVMU0VJRnxFTkR8RU5VTXxFTlZJUk9OfEVSQVNFfEVSUk9SfEVWRU5UfEVYSVR8RkFMU0V8RklFTER8RklMRVN8RklOQUxMWXxGT1IoPzogRUFDSCk/fEZSSUVORHxGVU5DVElPTnxHRVR8R0VUVFlQRXxHRVRYTUxOQU1FU1BBQ0V8R0xPQkFMfEdPU1VCfEdPVE98SEFORExFU3xJRnxJTVBMRU1FTlRTfElNUE9SVFN8SU58SU5IRVJJVFN8SU5QVVR8SU5URUdFUnxJTlRFUkZBQ0V8SU9DVEx8SVN8SVNOT1R8S0VZfEtJTEx8TElORSBJTlBVVHxMRVR8TElCfExJS0V8TE9DQVRFfExPQ0t8TE9OR3xMT09QfExTRVR8TUV8TUtESVJ8TU9EfE1PRFVMRXxNVVNUSU5IRVJJVHxNVVNUT1ZFUlJJREV8TVlCQVNFfE1ZQ0xBU1N8TkFNRXxOQU1FU1BBQ0V8TkFSUk9XSU5HfE5FV3xORVhUfE5PVHxOT1RISU5HfE5PVElOSEVSSVRBQkxFfE5PVE9WRVJSSURBQkxFfE9CSkVDVHxPRnxPRkZ8T04oPzogQ09NfCBFUlJPUnwgS0VZfCBUSU1FUik/fE9QRVJBVE9SfE9QRU58T1BUSU9OKD86IEJBU0UpP3xPUFRJT05BTHxPUnxPUkVMU0V8T1VUfE9WRVJMT0FEU3xPVkVSUklEQUJMRXxPVkVSUklERVN8UEFSQU1BUlJBWXxQQVJUSUFMfFBPS0V8UFJJVkFURXxQUk9QRVJUWXxQUk9URUNURUR8UFVCTElDfFBVVHxSQUlTRUVWRU5UfFJFQUR8UkVBRE9OTFl8UkVESU18UkVNfFJFTU9WRUhBTkRMRVJ8UkVTVE9SRXxSRVNVTUV8UkVUVVJOfFJNRElSfFJTRVR8UlVOfFNCWVRFfFNFTEVDVCg/OiBDQVNFKT98U0VUfFNIQURPV1N8U0hBUkVEfFNIT1JUfFNJTkdMRXxTSEVMTHxTTEVFUHxTVEFUSUN8U1RFUHxTVE9QfFNUUklOR3xTVFJVQ1RVUkV8U1VCfFNZTkNMT0NLfFNXQVB8U1lTVEVNfFRIRU58VEhST1d8VElNRVJ8VE98VFJPRkZ8VFJPTnxUUlVFfFRSWXxUUllDQVNUfFRZUEV8VFlQRU9GfFVJTlRFR0VSfFVMT05HfFVOTE9DS3xVTlRJTHxVU0hPUlR8VVNJTkd8VklFVyBQUklOVHxXQUlUfFdFTkR8V0hFTnxXSElMRXxXSURFTklOR3xXSVRIfFdJVEhFVkVOVFN8V1JJVEV8V1JJVEVPTkxZfFhPUil8XFxCKD86I0NPTlNUfCNFTFNFfCNFTFNFSUZ8I0VORHwjSUYpKSg/OlxcJHxcXGIpL2ksY29tbWVudDpbe3BhdHRlcm46Lyg/OiF8UkVNXFxiKS4rL2ksaW5zaWRlOntrZXl3b3JkOi9eUkVNL2l9fSx7cGF0dGVybjovKF58W15cXFxcOl0pJy4qLyxsb29rYmVoaW5kOiEwfV19KX1lLmV4cG9ydHM9byxvLmRpc3BsYXlOYW1lPVwidmJuZXRcIixvLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy52ZWxvY2l0eT1lLmxhbmd1YWdlcy5leHRlbmQoXCJtYXJrdXBcIix7fSk7dmFyIHQ9e3ZhcmlhYmxlOntwYXR0ZXJuOi8oXnxbXlxcXFxdKD86XFxcXFxcXFwpKilcXCQhPyg/OlthLXpdW1xcdy1dKig/OlxcKFteKV0qXFwpKT8oPzpcXC5bYS16XVtcXHctXSooPzpcXChbXildKlxcKSk/fFxcW1teXFxdXStdKSp8e1tefV0rfSkvaSxsb29rYmVoaW5kOiEwLGluc2lkZTp7fX0sc3RyaW5nOntwYXR0ZXJuOi9cIlteXCJdKlwifCdbXiddKicvLGdyZWVkeTohMH0sbnVtYmVyOi9cXGJcXGQrXFxiLyxib29sZWFuOi9cXGIoPzp0cnVlfGZhbHNlKVxcYi8sb3BlcmF0b3I6L1s9ITw+XT0/fFsrKlxcLyUtXXwmJnxcXHxcXHx8XFwuXFwufFxcYig/OmVxfGdbZXRdfGxbZXRdfG4oPzplfG90KSlcXGIvLHB1bmN0dWF0aW9uOi9bKCl7fVtcXF06LC5dL307dC52YXJpYWJsZS5pbnNpZGU9e3N0cmluZzp0LnN0cmluZyxmdW5jdGlvbjp7cGF0dGVybjovKFteXFx3LV0pW2Etel1bXFx3LV0qKD89XFwoKS8sbG9va2JlaGluZDohMH0sbnVtYmVyOnQubnVtYmVyLGJvb2xlYW46dC5ib29sZWFuLHB1bmN0dWF0aW9uOnQucHVuY3R1YXRpb259LGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcInZlbG9jaXR5XCIsXCJjb21tZW50XCIse3VucGFyc2VkOntwYXR0ZXJuOi8oXnxbXlxcXFxdKSNcXFtcXFtbXFxzXFxTXSo/XV0jLyxsb29rYmVoaW5kOiEwLGdyZWVkeTohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9eI1xcW1xcW3xdXSMkL319LFwidmVsb2NpdHktY29tbWVudFwiOlt7cGF0dGVybjovKF58W15cXFxcXSkjXFwqW1xcc1xcU10qP1xcKiMvLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwLGFsaWFzOlwiY29tbWVudFwifSx7cGF0dGVybjovKF58W15cXFxcXSkjIy4qLyxsb29rYmVoaW5kOiEwLGdyZWVkeTohMCxhbGlhczpcImNvbW1lbnRcIn1dLGRpcmVjdGl2ZTp7cGF0dGVybjovKF58W15cXFxcXSg/OlxcXFxcXFxcKSopI0A/KD86W2Etel1bXFx3LV0qfHtbYS16XVtcXHctXSp9KSg/OlxccypcXCgoPzpbXigpXXxcXChbXigpXSpcXCkpKlxcKSk/L2ksbG9va2JlaGluZDohMCxpbnNpZGU6e2tleXdvcmQ6e3BhdHRlcm46L14jQD8oPzpbYS16XVtcXHctXSp8e1thLXpdW1xcdy1dKn0pfFxcYmluXFxiLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9be31dL319LHJlc3Q6dH19LHZhcmlhYmxlOnQudmFyaWFibGV9KSxlLmxhbmd1YWdlcy52ZWxvY2l0eS50YWcuaW5zaWRlW1wiYXR0ci12YWx1ZVwiXS5pbnNpZGUucmVzdD1lLmxhbmd1YWdlcy52ZWxvY2l0eX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInZlbG9jaXR5XCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy52ZXJpbG9nPXtjb21tZW50Oi9cXC9cXC8uKnxcXC9cXCpbXFxzXFxTXSo/XFwqXFwvLyxzdHJpbmc6e3BhdHRlcm46L1wiKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8W15cIlxcXFxcXHJcXG5dKSpcIi8sZ3JlZWR5OiEwfSxwcm9wZXJ0eTovXFxCXFwkXFx3K1xcYi8sY29uc3RhbnQ6L1xcQmBcXHcrXFxiLyxmdW5jdGlvbjovXFx3Kyg/PVxcKCkvLGtleXdvcmQ6L1xcYig/OmFsaWFzfGFuZHxhc3NlcnR8YXNzaWdufGFzc3VtZXxhdXRvbWF0aWN8YmVmb3JlfGJlZ2lufGJpbmR8Ymluc3xiaW5zb2Z8Yml0fGJyZWFrfGJ1ZnxidWZpZjB8YnVmaWYxfGJ5dGV8Y2xhc3N8Y2FzZXxjYXNleHxjYXNlenxjZWxsfGNoYW5kbGV8Y2xvY2tpbmd8Y21vc3xjb25maWd8Y29uc3R8Y29uc3RyYWludHxjb250ZXh0fGNvbnRpbnVlfGNvdmVyfGNvdmVyZ3JvdXB8Y292ZXJwb2ludHxjcm9zc3xkZWFzc2lnbnxkZWZhdWx0fGRlZnBhcmFtfGRlc2lnbnxkaXNhYmxlfGRpc3R8ZG98ZWRnZXxlbHNlfGVuZHxlbmRjYXNlfGVuZGNsYXNzfGVuZGNsb2NraW5nfGVuZGNvbmZpZ3xlbmRmdW5jdGlvbnxlbmRnZW5lcmF0ZXxlbmRncm91cHxlbmRpbnRlcmZhY2V8ZW5kbW9kdWxlfGVuZHBhY2thZ2V8ZW5kcHJpbWl0aXZlfGVuZHByb2dyYW18ZW5kcHJvcGVydHl8ZW5kc3BlY2lmeXxlbmRzZXF1ZW5jZXxlbmR0YWJsZXxlbmR0YXNrfGVudW18ZXZlbnR8ZXhwZWN0fGV4cG9ydHxleHRlbmRzfGV4dGVybnxmaW5hbHxmaXJzdF9tYXRjaHxmb3J8Zm9yY2V8Zm9yZWFjaHxmb3JldmVyfGZvcmt8Zm9ya2pvaW58ZnVuY3Rpb258Z2VuZXJhdGV8Z2VudmFyfGhpZ2h6MHxoaWdoejF8aWZ8aWZmfGlmbm9uZXxpZ25vcmVfYmluc3xpbGxlZ2FsX2JpbnN8aW1wb3J0fGluY2RpcnxpbmNsdWRlfGluaXRpYWx8aW5vdXR8aW5wdXR8aW5zaWRlfGluc3RhbmNlfGludHxpbnRlZ2VyfGludGVyZmFjZXxpbnRlcnNlY3R8am9pbnxqb2luX2FueXxqb2luX25vbmV8bGFyZ2V8bGlibGlzdHxsaWJyYXJ5fGxvY2FsfGxvY2FscGFyYW18bG9naWN8bG9uZ2ludHxtYWNyb21vZHVsZXxtYXRjaGVzfG1lZGl1bXxtb2Rwb3J0fG1vZHVsZXxuYW5kfG5lZ2VkZ2V8bmV3fG5tb3N8bm9yfG5vc2hvd2NhbmNlbGxlZHxub3R8bm90aWYwfG5vdGlmMXxudWxsfG9yfG91dHB1dHxwYWNrYWdlfHBhY2tlZHxwYXJhbWV0ZXJ8cG1vc3xwb3NlZGdlfHByaW1pdGl2ZXxwcmlvcml0eXxwcm9ncmFtfHByb3BlcnR5fHByb3RlY3RlZHxwdWxsMHxwdWxsMXxwdWxsZG93bnxwdWxsdXB8cHVsc2VzdHlsZV9vbmV2ZW50fHB1bHNlc3R5bGVfb25kZXRlY3R8cHVyZXxyYW5kfHJhbmRjfHJhbmRjYXNlfHJhbmRzZXF1ZW5jZXxyY21vc3xyZWFsfHJlYWx0aW1lfHJlZnxyZWd8cmVsZWFzZXxyZXBlYXR8cmV0dXJufHJubW9zfHJwbW9zfHJ0cmFufHJ0cmFuaWYwfHJ0cmFuaWYxfHNjYWxhcmVkfHNlcXVlbmNlfHNob3J0aW50fHNob3J0cmVhbHxzaG93Y2FuY2VsbGVkfHNpZ25lZHxzbWFsbHxzb2x2ZXxzcGVjaWZ5fHNwZWNwYXJhbXxzdGF0aWN8c3RyaW5nfHN0cm9uZzB8c3Ryb25nMXxzdHJ1Y3R8c3VwZXJ8c3VwcGx5MHxzdXBwbHkxfHRhYmxlfHRhZ2dlZHx0YXNrfHRoaXN8dGhyb3VnaG91dHx0aW1lfHRpbWVwcmVjaXNpb258dGltZXVuaXR8dHJhbnx0cmFuaWYwfHRyYW5pZjF8dHJpfHRyaTB8dHJpMXx0cmlhbmR8dHJpb3J8dHJpcmVnfHR5cGV8dHlwZWRlZnx1bmlvbnx1bmlxdWV8dW5zaWduZWR8dXNlfHV3aXJlfHZhcnx2ZWN0b3JlZHx2aXJ0dWFsfHZvaWR8d2FpdHx3YWl0X29yZGVyfHdhbmR8d2VhazB8d2VhazF8d2hpbGV8d2lsZGNhcmR8d2lyZXx3aXRofHdpdGhpbnx3b3J8eG5vcnx4b3IpXFxiLyxpbXBvcnRhbnQ6L1xcYig/OmFsd2F5c19sYXRjaHxhbHdheXNfY29tYnxhbHdheXNfZmZ8YWx3YXlzKVxcYiA/QD8vLG51bWJlcjovXFxCIyM/XFxkK3woPzpcXGJcXGQrKT8nW29kYmhdID9bXFxkYS1menhfP10rfFxcYlxcZCpbLl9dP1xcZCsoPzplWy0rXT9cXGQrKT8vaSxvcGVyYXRvcjovWy0re31efiUqXFwvPz0hPD4mfF0rLyxwdW5jdHVhdGlvbjovW1tcXF07KCksLjpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInZlcmlsb2dcIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2UubGFuZ3VhZ2VzLnZoZGw9e2NvbW1lbnQ6Ly0tLisvLFwidmhkbC12ZWN0b3JzXCI6e3BhdHRlcm46L1xcYltveGJdXCJbXFxkYS1mX10rXCJ8XCJbMDF1eHp3bGgtXStcIi9pLGFsaWFzOlwibnVtYmVyXCJ9LFwicXVvdGVkLWZ1bmN0aW9uXCI6e3BhdHRlcm46L1wiXFxTKz9cIig/PVxcKCkvLGFsaWFzOlwiZnVuY3Rpb25cIn0sc3RyaW5nOi9cIig/OlteXFxcXFwiXFxyXFxuXXxcXFxcKD86XFxyXFxufFtcXHNcXFNdKSkqXCIvLGNvbnN0YW50Oi9cXGIoPzp1c2V8bGlicmFyeSlcXGIvaSxrZXl3b3JkOi9cXGIoPzonYWN0aXZlfCdhc2NlbmRpbmd8J2Jhc2V8J2RlbGF5ZWR8J2RyaXZpbmd8J2RyaXZpbmdfdmFsdWV8J2V2ZW50fCdoaWdofCdpbWFnZXwnaW5zdGFuY2VfbmFtZXwnbGFzdF9hY3RpdmV8J2xhc3RfZXZlbnR8J2xhc3RfdmFsdWV8J2xlZnR8J2xlZnRvZnwnbGVuZ3RofCdsb3d8J3BhdGhfbmFtZXwncG9zfCdwcmVkfCdxdWlldHwncmFuZ2V8J3JldmVyc2VfcmFuZ2V8J3JpZ2h0fCdyaWdodG9mfCdzaW1wbGVfbmFtZXwnc3RhYmxlfCdzdWNjfCd0cmFuc2FjdGlvbnwndmFsfCd2YWx1ZXxhY2Nlc3N8YWZ0ZXJ8YWxpYXN8YWxsfGFyY2hpdGVjdHVyZXxhcnJheXxhc3NlcnR8YXR0cmlidXRlfGJlZ2lufGJsb2NrfGJvZHl8YnVmZmVyfGJ1c3xjYXNlfGNvbXBvbmVudHxjb25maWd1cmF0aW9ufGNvbnN0YW50fGRpc2Nvbm5lY3R8ZG93bnRvfGVsc2V8ZWxzaWZ8ZW5kfGVudGl0eXxleGl0fGZpbGV8Zm9yfGZ1bmN0aW9ufGdlbmVyYXRlfGdlbmVyaWN8Z3JvdXB8Z3VhcmRlZHxpZnxpbXB1cmV8aW58aW5lcnRpYWx8aW5vdXR8aXN8bGFiZWx8bGlicmFyeXxsaW5rYWdlfGxpdGVyYWx8bG9vcHxtYXB8bmV3fG5leHR8bnVsbHxvZnxvbnxvcGVufG90aGVyc3xvdXR8cGFja2FnZXxwb3J0fHBvc3Rwb25lZHxwcm9jZWR1cmV8cHJvY2Vzc3xwdXJlfHJhbmdlfHJlY29yZHxyZWdpc3RlcnxyZWplY3R8cmVwb3J0fHJldHVybnxzZWxlY3R8c2V2ZXJpdHl8c2hhcmVkfHNpZ25hbHxzdWJ0eXBlfHRoZW58dG98dHJhbnNwb3J0fHR5cGV8dW5hZmZlY3RlZHx1bml0c3x1bnRpbHx1c2V8dmFyaWFibGV8d2FpdHx3aGVufHdoaWxlfHdpdGgpXFxiL2ksYm9vbGVhbjovXFxiKD86dHJ1ZXxmYWxzZSlcXGIvaSxmdW5jdGlvbjovXFx3Kyg/PVxcKCkvLG51bWJlcjovJ1swMXV4endsaC1dJ3xcXGIoPzpcXGQrI1tcXGRhLWZfLl0rI3xcXGRbXFxkXy5dKikoPzplWy0rXT9cXGQrKT8vaSxvcGVyYXRvcjovWzw+XT0/fDo9fFstKypcXC8mPV18XFxiKD86YWJzfG5vdHxtb2R8cmVtfHNsbHxzcmx8c2xhfHNyYXxyb2x8cm9yfGFuZHxvcnxuYW5kfHhub3J8eG9yfG5vcilcXGIvaSxwdW5jdHVhdGlvbjovW3t9W1xcXTsoKSwuOl0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwidmhkbFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMudmltPXtzdHJpbmc6L1wiKD86W15cIlxcXFxcXHJcXG5dfFxcXFwuKSpcInwnKD86W14nXFxyXFxuXXwnJykqJy8sY29tbWVudDovXCIuKi8sZnVuY3Rpb246L1xcdysoPz1cXCgpLyxrZXl3b3JkOi9cXGIoPzphYnxhYmJyZXZpYXRlfGFiY3xhYmNsZWFyfGFib3xhYm92ZWxlZnR8YWx8YWxsfGFyZ2F8YXJnYWRkfGFyZ2R8YXJnZGVsZXRlfGFyZ2RvfGFyZ2V8YXJnZWRpdHxhcmdnfGFyZ2dsb2JhbHxhcmdsfGFyZ2xvY2FsfGFyfGFyZ3N8YXJndXxhcmd1bWVudHxhc3xhc2NpaXxiYWR8YmFkZHxiYXxiYWxsfGJkfGJkZWxldGV8YmV8YmVsfGJlbG93cmlnaHR8YmZ8YmZpcnN0fGJsfGJsYXN0fGJtfGJtb2RpZmllZHxibnxibmV4dHxiTnxiTmV4dHxib3xib3RyaWdodHxicHxicHJldmlvdXN8YnJlYXxicmVha3xicmVha2F8YnJlYWthZGR8YnJlYWtkfGJyZWFrZGVsfGJyZWFrbHxicmVha2xpc3R8YnJ8YnJld2luZHxicm98YnJvd3NlfGJ1ZmRvfGJ8YnVmZmVyfGJ1ZmZlcnN8YnVufGJ1bmxvYWR8Ynd8YndpcGVvdXR8Y2F8Y2FiYnJldnxjYWJjfGNhYmNsZWFyfGNhZGRifGNhZGRidWZmZXJ8Y2FkfGNhZGRleHByfGNhZGRmfGNhZGRmaWxlfGNhbHxjYWxsfGNhdHxjYXRjaHxjYnxjYnVmZmVyfGNjfGNjbHxjY2xvc2V8Y2R8Y2V8Y2VudGVyfGNleHxjZXhwcnxjZnxjZmlsZXxjZmlyfGNmaXJzdHxjZ2V0YnxjZ2V0YnVmZmVyfGNnZXRlfGNnZXRleHByfGNnfGNnZXRmaWxlfGN8Y2hhbmdlfGNoYW5nZXN8Y2hkfGNoZGlyfGNoZXxjaGVja3BhdGh8Y2hlY2t0fGNoZWNrdGltZXxjbGF8Y2xhc3R8Y2x8Y2xpc3R8Y2xvfGNsb3NlfGNtYXBjfGNtYXBjbGVhcnxjbmV3fGNuZXdlcnxjbnxjbmV4dHxjTnxjTmV4dHxjbmZ8Y25maWxlfGNOZmNOZmlsZXxjbm9yZWF8Y25vcmVhYmJyZXZ8Y29sfGNvbGRlcnxjb2xvfGNvbG9yc2NoZW1lfGNvbWN8Y29tY2xlYXJ8Y29tcHxjb21waWxlcnxjb25mfGNvbmZpcm18Y29ufGNvbnRpbnVlfGNvcGV8Y29wZW58Y298Y29weXxjcGZ8Y3BmaWxlfGNwfGNwcmV2aW91c3xjcXxjcXVpdHxjcnxjcmV3aW5kfGN1bmF8Y3VuYWJicmV2fGN1fGN1bm1hcHxjd3xjd2luZG93fGRlYnVnZ3xkZWJ1Z2dyZWVkeXxkZWxjfGRlbGNvbW1hbmR8ZHxkZWxldGV8ZGVsZnxkZWxmdW5jdGlvbnxkZWxtfGRlbG1hcmtzfGRpZmZnfGRpZmZnZXR8ZGlmZm9mZnxkaWZmcGF0Y2h8ZGlmZnB1fGRpZmZwdXR8ZGlmZnNwbGl0fGRpZmZ0aGlzfGRpZmZ1fGRpZmZ1cGRhdGV8ZGlnfGRpZ3JhcGhzfGRpfGRpc3BsYXl8ZGp8ZGp1bXB8ZGx8ZGxpc3R8ZHJ8ZHJvcHxkc3xkc2VhcmNofGRzcHxkc3BsaXR8ZWFybGllcnxlY2hvZXxlY2hvZXJyfGVjaG9tfGVjaG9tc2d8ZWNob258ZXxlZGl0fGVsfGVsc2V8ZWxzZWl8ZWxzZWlmfGVtfGVtZW51fGVuZGZvfGVuZGZvcnxlbmRmfGVuZGZ1bmN0aW9ufGVuZGZ1bnxlbnxlbmRpZnxlbmR0fGVuZHRyeXxlbmR3fGVuZHdoaWxlfGVuZXxlbmV3fGV4fGV4aXxleGl0fGV4dXxleHVzYWdlfGZ8ZmlsZXxmaWxlc3xmaWxldHlwZXxmaW5hfGZpbmFsbHl8ZmlufGZpbmR8ZmluaXxmaW5pc2h8ZmlyfGZpcnN0fGZpeHxmaXhkZWx8Zm98Zm9sZHxmb2xkY3xmb2xkY2xvc2V8Zm9sZGRvY3xmb2xkZG9jbG9zZWR8Zm9sZGR8Zm9sZGRvb3Blbnxmb2xkb3xmb2xkb3Blbnxmb3J8ZnV8ZnVufGZ1bmN0aW9ufGdvfGdvdG98Z3J8Z3JlcHxncmVwYXxncmVwYWRkfGhhfGhhcmRjb3B5fGh8aGVscHxoZWxwZnxoZWxwZmluZHxoZWxwZ3xoZWxwZ3JlcHxoZWxwdHxoZWxwdGFnc3xoaWR8aGlkZXxoaXN8aGlzdG9yeXxpYXxpYWJicmV2fGlhYmN8aWFiY2xlYXJ8aWZ8aWp8aWp1bXB8aWx8aWxpc3R8aW1hcGN8aW1hcGNsZWFyfGlufGlub3JlYXxpbm9yZWFiYnJldnxpc2VhcmNofGlzcHxpc3BsaXR8aXVuYXxpdW5hYmJyZXZ8aXV8aXVubWFwfGp8am9pbnxqdXxqdW1wc3xrfGtlZXBhbHR8a2VlcGp8a2VlcGp1bXBzfGtlZXxrZWVwbWFya3N8bGFkZGJ8bGFkZGJ1ZmZlcnxsYWR8bGFkZGV4cHJ8bGFkZGZ8bGFkZGZpbGV8bGFufGxhbmd1YWdlfGxhfGxhc3R8bGF0ZXJ8bGJ8bGJ1ZmZlcnxsY3xsY2R8bGNofGxjaGRpcnxsY2x8bGNsb3NlfGxldHxsZWZ0fGxlZnRhfGxlZnRhYm92ZXxsZXh8bGV4cHJ8bGZ8bGZpbGV8bGZpcnxsZmlyc3R8bGdldGJ8bGdldGJ1ZmZlcnxsZ2V0ZXxsZ2V0ZXhwcnxsZ3xsZ2V0ZmlsZXxsZ3J8bGdyZXB8bGdyZXBhfGxncmVwYWRkfGxofGxoZWxwZ3JlcHxsfGxpc3R8bGx8bGxhfGxsYXN0fGxsaXxsbGlzdHxsbWFrfGxtYWtlfGxtfGxtYXB8bG1hcGN8bG1hcGNsZWFyfGxuZXd8bG5ld2VyfGxuZXxsbmV4dHxsTnxsTmV4dHxsbmZ8bG5maWxlfGxOZnxsTmZpbGV8bG58bG5vcmVtYXB8bG98bG9hZHZpZXd8bG9jfGxvY2ttYXJrc3xsb2Nrdnxsb2NrdmFyfGxvbHxsb2xkZXJ8bG9wfGxvcGVufGxwZnxscGZpbGV8bHB8bHByZXZpb3VzfGxyfGxyZXdpbmR8bHN8bHR8bHRhZ3xsdXxsdW5tYXB8bHZ8bHZpbWdyZXB8bHZpbWdyZXBhfGx2aW1ncmVwYWRkfGx3fGx3aW5kb3d8bWFrfG1ha2V8bWF8bWFya3xtYXJrc3xtYXR8bWF0Y2h8bWVudXR8bWVudXRyYW5zbGF0ZXxta3xta2V4cmN8bWtzfG1rc2Vzc2lvbnxta3NwfG1rc3BlbGx8bWt2aWV8bWt2aWV3fG1rdnxta3ZpbXJjfG1vZHxtb2RlfG18bW92ZXxtemZ8bXpmaWxlfG16fG16c2NoZW1lfG5ia2V5fG5ld3xufG5leHR8TnxOZXh0fG5tYXBjfG5tYXBjbGVhcnxub2h8bm9obHNlYXJjaHxub3JlYXxub3JlYWJicmV2fG51fG51bWJlcnxudW58bnVubWFwfG9tYXBjfG9tYXBjbGVhcnxvbnxvbmx5fG98b3BlbnxvcHR8b3B0aW9uc3xvdXxvdW5tYXB8cGN8cGNsb3NlfHBlZHxwZWRpdHxwZXxwZXJsfHBlcmxkfHBlcmxkb3xwb3xwb3B8cG9wdXxwb3B1cHxwcHxwcG9wfHByZXxwcmVzZXJ2ZXxwcmV2fHByZXZpb3VzfHB8cHJpbnR8UHxQcmludHxwcm9mZHxwcm9mZGVsfHByb2Z8cHJvZmlsZXxwcm9tcHRmfHByb21wdGZpbmR8cHJvbXB0cnxwcm9tcHRyZXBsfHBzfHBzZWFyY2h8cHRhfHB0YWd8cHRmfHB0Zmlyc3R8cHRqfHB0anVtcHxwdGx8cHRsYXN0fHB0bnxwdG5leHR8cHROfHB0TmV4dHxwdHB8cHRwcmV2aW91c3xwdHJ8cHRyZXdpbmR8cHRzfHB0c2VsZWN0fHB1fHB1dHxwd3xwd2R8cHlmfHB5ZmlsZXxweXxweXRob258cWF8cWFsbHxxfHF1aXR8cXVpdGF8cXVpdGFsbHxyfHJlYWR8cmVjfHJlY292ZXJ8cmVkaXxyZWRpcnxyZWR8cmVkb3xyZWRyfHJlZHJhd3xyZWRyYXdzfHJlZHJhd3N0YXR1c3xyZWd8cmVnaXN0ZXJzfHJlc3xyZXNpemV8cmV0fHJldGFifHJldHV8cmV0dXJufHJld3xyZXdpbmR8cml8cmlnaHR8cmlnaHRifHJpZ2h0YmVsb3d8cnVifHJ1Ynl8cnVieWR8cnVieWRvfHJ1YnlmfHJ1YnlmaWxlfHJ1fHJ1bnRpbWV8cnZ8cnZpbWluZm98c2FsfHNhbGx8c2FufHNhbmRib3h8c2F8c2FyZ3VtZW50fHNhdnxzYXZlYXN8c2JhfHNiYWxsfHNiZnxzYmZpcnN0fHNibHxzYmxhc3R8c2JtfHNibW9kaWZpZWR8c2JufHNibmV4dHxzYk58c2JOZXh0fHNicHxzYnByZXZpb3VzfHNicnxzYnJld2luZHxzYnxzYnVmZmVyfHNjcmlwdGV8c2NyaXB0ZW5jb2Rpbmd8c2NyaXB8c2NyaXB0bmFtZXN8c2V8c2V0fHNldGZ8c2V0ZmlsZXR5cGV8c2V0Z3xzZXRnbG9iYWx8c2V0bHxzZXRsb2NhbHxzZnxzZmluZHxzZmlyfHNmaXJzdHxzaHxzaGVsbHxzaWdufHNpbHxzaWxlbnR8c2ltfHNpbWFsdHxzbGF8c2xhc3R8c2x8c2xlZXB8c218c21hZ2ljfHNtfHNtYXB8c21hcGN8c21hcGNsZWFyfHNtZXxzbWVudXxzbnxzbmV4dHxzTnxzTmV4dHxzbml8c25pZmZ8c25vfHNub21hZ2ljfHNub3J8c25vcmVtYXB8c25vcmVtZXxzbm9yZW1lbnV8c29yfHNvcnR8c298c291cmNlfHNwZWxsZHxzcGVsbGR1bXB8c3BlfHNwZWxsZ29vZHxzcGVsbGl8c3BlbGxpbmZvfHNwZWxscnxzcGVsbHJlcGFsbHxzcGVsbHV8c3BlbGx1bmRvfHNwZWxsd3xzcGVsbHdyb25nfHNwfHNwbGl0fHNwcnxzcHJldmlvdXN8c3JlfHNyZXdpbmR8c3RhfHN0YWd8c3RhcnRnfHN0YXJ0Z3JlcGxhY2V8c3RhcnxzdGFydGluc2VydHxzdGFydHJ8c3RhcnRyZXBsYWNlfHN0anxzdGp1bXB8c3R8c3RvcHxzdG9waXxzdG9waW5zZXJ0fHN0c3xzdHNlbGVjdHxzdW58c3VuaGlkZXxzdW5tfHN1bm1hcHxzdXN8c3VzcGVuZHxzdnxzdmlld3xzeW5jYmluZHx0fHRhYnx0YWJjfHRhYmNsb3NlfHRhYmR8dGFiZG98dGFiZXx0YWJlZGl0fHRhYmZ8dGFiZmluZHx0YWJmaXJ8dGFiZmlyc3R8dGFibHx0YWJsYXN0fHRhYm18dGFibW92ZXx0YWJuZXd8dGFibnx0YWJuZXh0fHRhYk58dGFiTmV4dHx0YWJvfHRhYm9ubHl8dGFicHx0YWJwcmV2aW91c3x0YWJyfHRhYnJld2luZHx0YWJzfHRhfHRhZ3x0YWdzfHRjfHRjbHx0Y2xkfHRjbGRvfHRjbGZ8dGNsZmlsZXx0ZXx0ZWFyb2ZmfHRmfHRmaXJzdHx0aHx0aHJvd3x0anx0anVtcHx0bHx0bGFzdHx0bXx0bXx0bWVudXx0bnx0bmV4dHx0Tnx0TmV4dHx0b3x0b3BsZWZ0fHRwfHRwcmV2aW91c3x0cnx0cmV3aW5kfHRyeXx0c3x0c2VsZWN0fHR1fHR1fHR1bm1lbnV8dW5hfHVuYWJicmV2aWF0ZXx1fHVuZG98dW5kb2p8dW5kb2pvaW58dW5kb2x8dW5kb2xpc3R8dW5ofHVuaGlkZXx1bmxldHx1bmxvfHVubG9ja3Zhcnx1bm18dW5tYXB8dXB8dXBkYXRlfHZlcmJ8dmVyYm9zZXx2ZXx2ZXJzaW9ufHZlcnR8dmVydGljYWx8dmllfHZpZXd8dmltfHZpbWdyZXB8dmltZ3JlcGF8dmltZ3JlcGFkZHx2aXx2aXN1YWx8dml1fHZpdXNhZ2V8dm1hcGN8dm1hcGNsZWFyfHZuZXx2bmV3fHZzfHZzcGxpdHx2dXx2dW5tYXB8d2F8d2FsbHx3aHx3aGlsZXx3aW5jfHdpbmNtZHx3aW5kb3x3aW5wfHdpbnBvc3x3aW58d2luc2l6ZXx3bnx3bmV4dHx3Tnx3TmV4dHx3cHx3cHJldmlvdXN8d3F8d3FhfHdxYWxsfHd8d3JpdGV8d3N8d3N2ZXJifHd2fHd2aW1pbmZvfFh8eGF8eGFsbHx4fHhpdHx4bXx4bWFwfHhtYXBjfHhtYXBjbGVhcnx4bWV8eG1lbnV8WE1MZW50fFhNTG5zfHhufHhub3JlbWFwfHhub3JlbWV8eG5vcmVtZW51fHh1fHh1bm1hcHx5fHlhbmspXFxiLyxidWlsdGluOi9cXGIoPzphdXRvY21kfGFjZHxhaXxha218YWxlcGh8YWxsb3dyZXZpbnN8YWx0a2V5bWFwfGFtYml3aWR0aHxhbWJ3fGFudGl8YW50aWFsaWFzfGFyYWJ8YXJhYmljfGFyYWJpY3NoYXBlfGFyaXxhcnNoYXBlfGF1dG9jaGRpcnxhdXRvaW5kZW50fGF1dG9yZWFkfGF1dG93cml0ZXxhdXRvd3JpdGVhbGx8YXd8YXdhfGJhY2tncm91bmR8YmFja3NwYWNlfGJhY2t1cHxiYWNrdXBjb3B5fGJhY2t1cGRpcnxiYWNrdXBleHR8YmFja3Vwc2tpcHxiYWxsb29uZGVsYXl8YmFsbG9vbmV2YWx8YmFsbG9vbmV4cHJ8YmRpcnxiZGxheXxiZXZhbHxiZXh8YmV4cHJ8Ymd8Ymh8YmlufGJpbmFyeXxiaW9za3xiaW9za2V5fGJrfGJrY3xib21ifGJyZWFrYXR8YnJrfGJyb3dzZWRpcnxic3xic2Rpcnxic2t8YnR8YnVmaGlkZGVufGJ1Zmxpc3RlZHxidWZ0eXBlfGNhc2VtYXB8Y2N2fGNkcGF0aHxjZWRpdHxjZnV8Y2h8Y2hhcmNvbnZlcnR8Y2l8Y2lufGNpbmRlbnR8Y2lua3xjaW5rZXlzfGNpbm98Y2lub3B0aW9uc3xjaW53fGNpbndvcmRzfGNsaXBib2FyZHxjbWRoZWlnaHR8Y21kd2luaGVpZ2h0fGNtcHxjbXN8Y29sdW1uc3xjb218Y29tbWVudHN8Y29tbWVudHN0cmluZ3xjb21wYXRpYmxlfGNvbXBsZXRlfGNvbXBsZXRlZnVuY3xjb21wbGV0ZW9wdHxjb25za3xjb25za2V5fGNvcHlpbmRlbnR8Y290fGNwb3xjcG9wdGlvbnN8Y3B0fGNzY29wZXBhdGhjb21wfGNzY29wZXByZ3xjc2NvcGVxdWlja2ZpeHxjc2NvcGV0YWd8Y3Njb3BldGFnb3JkZXJ8Y3Njb3BldmVyYm9zZXxjc3BjfGNzcHJnfGNzcWZ8Y3N0fGNzdG98Y3N2ZXJifGN1Y3xjdWx8Y3Vyc29yY29sdW1ufGN1cnNvcmxpbmV8Y3dofGRlYnVnfGRlY298ZGVmfGRlZmluZXxkZWxjb21iaW5lfGRleHxkZ3xkaWN0fGRpY3Rpb25hcnl8ZGlmZnxkaWZmZXhwcnxkaWZmb3B0fGRpZ3JhcGh8ZGlwfGRpcnxkaXJlY3Rvcnl8ZHl8ZWF8ZWFkfGVhZGlyZWN0aW9ufGVifGVkfGVkY29tcGF0aWJsZXxlZnxlZm18ZWl8ZWt8ZW5jfGVuY29kaW5nfGVuZG9mbGluZXxlb2x8ZXB8ZXF1YWxhbHdheXN8ZXF1YWxwcmd8ZXJyb3JiZWxsc3xlcnJvcmZpbGV8ZXJyb3Jmb3JtYXR8ZXNja2V5c3xldHxldmVudGlnbm9yZXxleHBhbmR0YWJ8ZXhyY3xmY2x8ZmNzfGZkY3xmZGV8ZmRpfGZkbHxmZGxzfGZkbXxmZG58ZmRvfGZkdHxmZW58ZmVuY3xmZW5jc3xmZXh8ZmZ8ZmZzfGZpbGVlbmNvZGluZ3xmaWxlZW5jb2RpbmdzfGZpbGVmb3JtYXR8ZmlsZWZvcm1hdHN8ZmlsbGNoYXJzfGZrfGZrbWFwfGZscHxmbWx8Zm1yfGZvbGRjb2x1bW58Zm9sZGVuYWJsZXxmb2xkZXhwcnxmb2xkaWdub3JlfGZvbGRsZXZlbHxmb2xkbGV2ZWxzdGFydHxmb2xkbWFya2VyfGZvbGRtZXRob2R8Zm9sZG1pbmxpbmVzfGZvbGRuZXN0bWF4fGZvbGR0ZXh0fGZvcm1hdGV4cHJ8Zm9ybWF0bGlzdHBhdHxmb3JtYXRvcHRpb25zfGZvcm1hdHByZ3xmcHxmc3xmc3luY3xmdHxnY3J8Z2R8Z2RlZmF1bHR8Z2ZtfGdmbnxnZnN8Z2Z3fGdocnxncHxncmVwZm9ybWF0fGdyZXBwcmd8Z3RsfGd0dHxndWljdXJzb3J8Z3VpZm9udHxndWlmb250c2V0fGd1aWZvbnR3aWRlfGd1aWhlYWRyb29tfGd1aW9wdGlvbnN8Z3VpcHR5fGd1aXRhYmxhYmVsfGd1aXRhYnRvb2x0aXB8aGVscGZpbGV8aGVscGhlaWdodHxoZWxwbGFuZ3xoZnxoaHxoaXxoaWRkZW58aGlnaGxpZ2h0fGhrfGhrbWFwfGhrbWFwcHxoa3B8aGx8aGxnfGhsc3xobHNlYXJjaHxpY3xpY29ufGljb25zdHJpbmd8aWdub3JlY2FzZXxpbXxpbWFjdGl2YXRla2V5fGltYWt8aW1jfGltY21kbGluZXxpbWR8aW1kaXNhYmxlfGltaXxpbWluc2VydHxpbXN8aW1zZWFyY2h8aW5jfGluY2x1ZGV8aW5jbHVkZWV4cHJ8aW5jc2VhcmNofGluZGV8aW5kZW50ZXhwcnxpbmRlbnRrZXlzfGluZGt8aW5leHxpbmZ8aW5mZXJjYXNlfGluc2VydG1vZGV8aXNmfGlzZm5hbWV8aXNpfGlzaWRlbnR8aXNrfGlza2V5d29yZHxpc3ByaW50fGpvaW5zcGFjZXN8anN8a2V5fGtleW1hcHxrZXltb2RlbHxrZXl3b3JkcHJnfGttfGttcHxrcHxsYW5nbWFwfGxhbmdtZW51fGxhc3RzdGF0dXN8bGF6eXJlZHJhd3xsYnJ8bGNzfGxpbmVicmVha3xsaW5lc3xsaW5lc3BhY2V8bGlzcHxsaXNwd29yZHN8bGlzdGNoYXJzfGxvYWRwbHVnaW5zfGxwbHxsc3B8bHp8bWFjYXRzdWl8bWFnaWN8bWFrZWVmfG1ha2Vwcmd8bWF0Y2hwYWlyc3xtYXRjaHRpbWV8bWF4Y29tYmluZXxtYXhmdW5jZGVwdGh8bWF4bWFwZGVwdGh8bWF4bWVtfG1heG1lbXBhdHRlcm58bWF4bWVtdG90fG1jb3xtZWZ8bWVudWl0ZW1zfG1mZHxtaHxtaXN8bWtzcGVsbG1lbXxtbHxtbHN8bW18bW1kfG1tcHxtbXR8bW9kZWxpbmV8bW9kZWxpbmVzfG1vZGlmaWFibGV8bW9kaWZpZWR8bW9yZXxtb3VzZXxtb3VzZWZ8bW91c2Vmb2N1c3xtb3VzZWhpZGV8bW91c2VtfG1vdXNlbW9kZWx8bW91c2VzfG1vdXNlc2hhcGV8bW91c2V0fG1vdXNldGltZXxtcHxtcHN8bXNtfG16cXxtenF1YW50dW18bmZ8bnJmb3JtYXRzfG51bWJlcndpZHRofG51d3xvZGV2fG9mdHxvZnV8b21uaWZ1bmN8b3BlbmRldmljZXxvcGVyYXRvcmZ1bmN8b3BmdW5jfG9zZmlsZXR5cGV8cGF8cGFyYXxwYXJhZ3JhcGhzfHBhc3RlfHBhc3RldG9nZ2xlfHBhdGNoZXhwcnxwYXRjaG1vZGV8cGF0aHxwZGV2fHBlbmN8cGV4fHBleHByfHBmbnxwaHxwaGVhZGVyfHBpfHBtfHBtYmNzfHBtYmZufHBvcHR8cHJlc2VydmVpbmRlbnR8cHJldmlld2hlaWdodHxwcmV2aWV3d2luZG93fHByaW50ZGV2aWNlfHByaW50ZW5jb2Rpbmd8cHJpbnRleHByfHByaW50Zm9udHxwcmludGhlYWRlcnxwcmludG1iY2hhcnNldHxwcmludG1iZm9udHxwcmludG9wdGlvbnN8cHJvbXB0fHB0fHB1bWhlaWdodHxwdmh8cHZ3fHFlfHF1b3RlZXNjYXBlfHJlYWRvbmx5fHJlbWFwfHJlcG9ydHxyZXN0b3Jlc2NyZWVufHJldmluc3xyaWdodGxlZnR8cmlnaHRsZWZ0Y21kfHJsfHJsY3xyb3xyc3xydHB8cnVmfHJ1bGVyfHJ1bGVyZm9ybWF0fHJ1bnRpbWVwYXRofHNib3xzY3xzY2J8c2NyfHNjcm9sbHxzY3JvbGxiaW5kfHNjcm9sbGp1bXB8c2Nyb2xsb2ZmfHNjcm9sbG9wdHxzY3N8c2VjdHxzZWN0aW9uc3xzZWN1cmV8c2VsfHNlbGVjdGlvbnxzZWxlY3Rtb2RlfHNlc3Npb25vcHRpb25zfHNmdHxzaGNmfHNoZWxsY21kZmxhZ3xzaGVsbHBpcGV8c2hlbGxxdW90ZXxzaGVsbHJlZGlyfHNoZWxsc2xhc2h8c2hlbGx0ZW1wfHNoZWxsdHlwZXxzaGVsbHhxdW90ZXxzaGlmdHJvdW5kfHNoaWZ0d2lkdGh8c2htfHNob3J0bWVzc3xzaG9ydG5hbWV8c2hvd2JyZWFrfHNob3djbWR8c2hvd2Z1bGx0YWd8c2hvd21hdGNofHNob3dtb2RlfHNob3d0YWJsaW5lfHNocXxzaXxzaWRlc2Nyb2xsfHNpZGVzY3JvbGxvZmZ8c2lzb3xzanxzbG18c21hcnRjYXNlfHNtYXJ0aW5kZW50fHNtYXJ0dGFifHNtY3xzbWR8c29mdHRhYnN0b3B8c29sfHNwY3xzcGVsbHxzcGVsbGNhcGNoZWNrfHNwZWxsZmlsZXxzcGVsbGxhbmd8c3BlbGxzdWdnZXN0fHNwZnxzcGx8c3BsaXRiZWxvd3xzcGxpdHJpZ2h0fHNwc3xzcnxzcnJ8c3N8c3NsfHNzb3B8c3RhbHxzdGFydG9mbGluZXxzdGF0dXNsaW5lfHN0bHxzdG1wfHN1fHN1YXxzdWZmaXhlc3xzdWZmaXhlc2FkZHxzd3xzd2FwZmlsZXxzd2Fwc3luY3xzd2J8c3dmfHN3aXRjaGJ1Znxzd3N8c3hxfHN5bnxzeW5tYXhjb2x8c3ludGF4fHRhYmxpbmV8dGFicGFnZW1heHx0YWJzdG9wfHRhZ2JzZWFyY2h8dGFnbGVuZ3RofHRhZ3JlbGF0aXZlfHRhZ3N0YWNrfHRhbHx0Ynx0Yml8dGJpZGl8dGJpc3x0YnN8dGVuY3x0ZXJtfHRlcm1iaWRpfHRlcm1lbmNvZGluZ3x0ZXJzZXx0ZXh0YXV0b3x0ZXh0bW9kZXx0ZXh0d2lkdGh8dGdzdHx0aGVzYXVydXN8dGlsZGVvcHx0aW1lb3V0fHRpbWVvdXRsZW58dGl0bGV8dGl0bGVsZW58dGl0bGVvbGR8dGl0bGVzdHJpbmd8dG9vbGJhcnx0b29sYmFyaWNvbnNpemV8dG9wfHRwbXx0c2x8dHNyfHR0aW1lb3V0fHR0aW1lb3V0bGVufHR0bXx0dHl8dHR5YnVpbHRpbnx0dHlmYXN0fHR0eW18dHR5bW91c2V8dHR5c2Nyb2xsfHR0eXR5cGV8dHd8dHh8dWN8dWx8dW5kb2xldmVsc3x1cGRhdGVjb3VudHx1cGRhdGV0aW1lfHV0fHZifHZic3x2ZGlyfHZlcmJvc2VmaWxlfHZmaWxlfHZpZXdkaXJ8dmlld29wdGlvbnN8dmltaW5mb3x2aXJ0dWFsZWRpdHx2aXN1YWxiZWxsfHZvcHx3YWt8d2Fybnx3Ynx3Y3x3Y218d2R8d2VpcmRpbnZlcnR8d2ZofHdmd3x3aGljaHdyYXB8d2l8d2lnfHdpbGRjaGFyfHdpbGRjaGFybXx3aWxkaWdub3JlfHdpbGRtZW51fHdpbGRtb2RlfHdpbGRvcHRpb25zfHdpbXx3aW5hbHRrZXlzfHdpbmRvd3x3aW5maXhoZWlnaHR8d2luZml4d2lkdGh8d2luaGVpZ2h0fHdpbm1pbmhlaWdodHx3aW5taW53aWR0aHx3aW53aWR0aHx3aXZ8d2l3fHdtfHdtaHx3bW51fHdtd3x3b3B8d3JhcHx3cmFwbWFyZ2lufHdyYXBzY2FufHdyaXRlYW55fHdyaXRlYmFja3VwfHdyaXRlZGVsYXl8d3d8bm9hY2R8bm9haXxub2FrbXxub2FsbG93cmV2aW5zfG5vYWx0a2V5bWFwfG5vYW50aXxub2FudGlhbGlhc3xub2FyfG5vYXJhYnxub2FyYWJpY3xub2FyYWJpY3NoYXBlfG5vYXJpfG5vYXJzaGFwZXxub2F1dG9jaGRpcnxub2F1dG9pbmRlbnR8bm9hdXRvcmVhZHxub2F1dG93cml0ZXxub2F1dG93cml0ZWFsbHxub2F3fG5vYXdhfG5vYmFja3VwfG5vYmFsbG9vbmV2YWx8bm9iZXZhbHxub2Jpbnxub2JpbmFyeXxub2Jpb3NrfG5vYmlvc2tleXxub2JrfG5vYmx8bm9ib21ifG5vYnVmbGlzdGVkfG5vY2Z8bm9jaXxub2Npbnxub2NpbmRlbnR8bm9jb21wYXRpYmxlfG5vY29uZmlybXxub2NvbnNrfG5vY29uc2tleXxub2NvcHlpbmRlbnR8bm9jcHxub2NzY29wZXRhZ3xub2NzY29wZXZlcmJvc2V8bm9jc3R8bm9jc3ZlcmJ8bm9jdWN8bm9jdWx8bm9jdXJzb3Jjb2x1bW58bm9jdXJzb3JsaW5lfG5vZGVjb3xub2RlbGNvbWJpbmV8bm9kZ3xub2RpZmZ8bm9kaWdyYXBofG5vZGlzYWJsZXxub2VhfG5vZWJ8bm9lZHxub2VkY29tcGF0aWJsZXxub2VrfG5vZW5kb2ZsaW5lfG5vZW9sfG5vZXF1YWxhbHdheXN8bm9lcnJvcmJlbGxzfG5vZXNja2V5c3xub2V0fG5vZXh8bm9leHBhbmR0YWJ8bm9leHJjfG5vZmVufG5vZmt8bm9ma21hcHxub2ZvbGRlbmFibGV8bm9nZHxub2dkZWZhdWx0fG5vZ3VpcHR5fG5vaGlkfG5vaGlkZGVufG5vaGt8bm9oa21hcHxub2hrbWFwcHxub2hrcHxub2hsc3xub2ljfG5vaWNvbnxub2lnbm9yZWNhc2V8bm9pbXxub2ltY3xub2ltY21kbGluZXxub2ltZHxub2luY3NlYXJjaHxub2luZnxub2luZmVyY2FzZXxub2luc2VydG1vZGV8bm9pc3xub2pvaW5zcGFjZXN8bm9qc3xub2xhenlyZWRyYXd8bm9sYnJ8bm9saW5lYnJlYWt8bm9saXNwfG5vbGlzdHxub2xvYWRwbHVnaW5zfG5vbHBsfG5vbHp8bm9tYXxub21hY2F0c3VpfG5vbWFnaWN8bm9taHxub21sfG5vbW9kfG5vbW9kZWxpbmV8bm9tb2RpZmlhYmxlfG5vbW9kaWZpZWR8bm9tb3JlfG5vbW91c2VmfG5vbW91c2Vmb2N1c3xub21vdXNlaGlkZXxub251fG5vbnVtYmVyfG5vb2Rldnxub29wZW5kZXZpY2V8bm9wYXN0ZXxub3BpfG5vcHJlc2VydmVpbmRlbnR8bm9wcmV2aWV3d2luZG93fG5vcHJvbXB0fG5vcHZ3fG5vcmVhZG9ubHl8bm9yZW1hcHxub3Jlc3RvcmVzY3JlZW58bm9yZXZpbnN8bm9yaXxub3JpZ2h0bGVmdHxub3JpZ2h0bGVmdGNtZHxub3JsfG5vcmxjfG5vcm98bm9yc3xub3J1fG5vcnVsZXJ8bm9zYnxub3NjfG5vc2NifG5vc2Nyb2xsYmluZHxub3Njc3xub3NlY3VyZXxub3NmdHxub3NoZWxsc2xhc2h8bm9zaGVsbHRlbXB8bm9zaGlmdHJvdW5kfG5vc2hvcnRuYW1lfG5vc2hvd2NtZHxub3Nob3dmdWxsdGFnfG5vc2hvd21hdGNofG5vc2hvd21vZGV8bm9zaXxub3NtfG5vc21hcnRjYXNlfG5vc21hcnRpbmRlbnR8bm9zbWFydHRhYnxub3NtZHxub3NufG5vc29sfG5vc3BlbGx8bm9zcGxpdGJlbG93fG5vc3BsaXRyaWdodHxub3Nwcnxub3NyfG5vc3NsfG5vc3RhfG5vc3RhcnRvZmxpbmV8bm9zdG1wfG5vc3dhcGZpbGV8bm9zd2Z8bm90YXxub3RhZ2JzZWFyY2h8bm90YWdyZWxhdGl2ZXxub3RhZ3N0YWNrfG5vdGJpfG5vdGJpZGl8bm90YnN8bm90ZXJtYmlkaXxub3RlcnNlfG5vdGV4dGF1dG98bm90ZXh0bW9kZXxub3RmfG5vdGdzdHxub3RpbGRlb3B8bm90aW1lb3V0fG5vdGl0bGV8bm90b3xub3RvcHxub3RyfG5vdHRpbWVvdXR8bm90dHlidWlsdGlufG5vdHR5ZmFzdHxub3R4fG5vdmJ8bm92aXN1YWxiZWxsfG5vd2F8bm93YXJufG5vd2J8bm93ZWlyZGludmVydHxub3dmaHxub3dmd3xub3dpbGRtZW51fG5vd2luZml4aGVpZ2h0fG5vd2luZml4d2lkdGh8bm93aXZ8bm93bW51fG5vd3JhcHxub3dyYXBzY2FufG5vd3JpdGV8bm93cml0ZWFueXxub3dyaXRlYmFja3VwfG5vd3N8aW52YWNkfGludmFpfGludmFrbXxpbnZhbGxvd3Jldmluc3xpbnZhbHRrZXltYXB8aW52YW50aXxpbnZhbnRpYWxpYXN8aW52YXJ8aW52YXJhYnxpbnZhcmFiaWN8aW52YXJhYmljc2hhcGV8aW52YXJpfGludmFyc2hhcGV8aW52YXV0b2NoZGlyfGludmF1dG9pbmRlbnR8aW52YXV0b3JlYWR8aW52YXV0b3dyaXRlfGludmF1dG93cml0ZWFsbHxpbnZhd3xpbnZhd2F8aW52YmFja3VwfGludmJhbGxvb25ldmFsfGludmJldmFsfGludmJpbnxpbnZiaW5hcnl8aW52Ymlvc2t8aW52Ymlvc2tleXxpbnZia3xpbnZibHxpbnZib21ifGludmJ1Zmxpc3RlZHxpbnZjZnxpbnZjaXxpbnZjaW58aW52Y2luZGVudHxpbnZjb21wYXRpYmxlfGludmNvbmZpcm18aW52Y29uc2t8aW52Y29uc2tleXxpbnZjb3B5aW5kZW50fGludmNwfGludmNzY29wZXRhZ3xpbnZjc2NvcGV2ZXJib3NlfGludmNzdHxpbnZjc3ZlcmJ8aW52Y3VjfGludmN1bHxpbnZjdXJzb3Jjb2x1bW58aW52Y3Vyc29ybGluZXxpbnZkZWNvfGludmRlbGNvbWJpbmV8aW52ZGd8aW52ZGlmZnxpbnZkaWdyYXBofGludmRpc2FibGV8aW52ZWF8aW52ZWJ8aW52ZWR8aW52ZWRjb21wYXRpYmxlfGludmVrfGludmVuZG9mbGluZXxpbnZlb2x8aW52ZXF1YWxhbHdheXN8aW52ZXJyb3JiZWxsc3xpbnZlc2NrZXlzfGludmV0fGludmV4fGludmV4cGFuZHRhYnxpbnZleHJjfGludmZlbnxpbnZma3xpbnZma21hcHxpbnZmb2xkZW5hYmxlfGludmdkfGludmdkZWZhdWx0fGludmd1aXB0eXxpbnZoaWR8aW52aGlkZGVufGludmhrfGludmhrbWFwfGludmhrbWFwcHxpbnZoa3B8aW52aGxzfGludmhsc2VhcmNofGludmljfGludmljb258aW52aWdub3JlY2FzZXxpbnZpbXxpbnZpbWN8aW52aW1jbWRsaW5lfGludmltZHxpbnZpbmNzZWFyY2h8aW52aW5mfGludmluZmVyY2FzZXxpbnZpbnNlcnRtb2RlfGludmlzfGludmpvaW5zcGFjZXN8aW52anN8aW52bGF6eXJlZHJhd3xpbnZsYnJ8aW52bGluZWJyZWFrfGludmxpc3B8aW52bGlzdHxpbnZsb2FkcGx1Z2luc3xpbnZscGx8aW52bHp8aW52bWF8aW52bWFjYXRzdWl8aW52bWFnaWN8aW52bWh8aW52bWx8aW52bW9kfGludm1vZGVsaW5lfGludm1vZGlmaWFibGV8aW52bW9kaWZpZWR8aW52bW9yZXxpbnZtb3VzZWZ8aW52bW91c2Vmb2N1c3xpbnZtb3VzZWhpZGV8aW52bnV8aW52bnVtYmVyfGludm9kZXZ8aW52b3BlbmRldmljZXxpbnZwYXN0ZXxpbnZwaXxpbnZwcmVzZXJ2ZWluZGVudHxpbnZwcmV2aWV3d2luZG93fGludnByb21wdHxpbnZwdnd8aW52cmVhZG9ubHl8aW52cmVtYXB8aW52cmVzdG9yZXNjcmVlbnxpbnZyZXZpbnN8aW52cml8aW52cmlnaHRsZWZ0fGludnJpZ2h0bGVmdGNtZHxpbnZybHxpbnZybGN8aW52cm98aW52cnN8aW52cnV8aW52cnVsZXJ8aW52c2J8aW52c2N8aW52c2NifGludnNjcm9sbGJpbmR8aW52c2NzfGludnNlY3VyZXxpbnZzZnR8aW52c2hlbGxzbGFzaHxpbnZzaGVsbHRlbXB8aW52c2hpZnRyb3VuZHxpbnZzaG9ydG5hbWV8aW52c2hvd2NtZHxpbnZzaG93ZnVsbHRhZ3xpbnZzaG93bWF0Y2h8aW52c2hvd21vZGV8aW52c2l8aW52c218aW52c21hcnRjYXNlfGludnNtYXJ0aW5kZW50fGludnNtYXJ0dGFifGludnNtZHxpbnZzbnxpbnZzb2x8aW52c3BlbGx8aW52c3BsaXRiZWxvd3xpbnZzcGxpdHJpZ2h0fGludnNwcnxpbnZzcnxpbnZzc2x8aW52c3RhfGludnN0YXJ0b2ZsaW5lfGludnN0bXB8aW52c3dhcGZpbGV8aW52c3dmfGludnRhfGludnRhZ2JzZWFyY2h8aW52dGFncmVsYXRpdmV8aW52dGFnc3RhY2t8aW52dGJpfGludnRiaWRpfGludnRic3xpbnZ0ZXJtYmlkaXxpbnZ0ZXJzZXxpbnZ0ZXh0YXV0b3xpbnZ0ZXh0bW9kZXxpbnZ0ZnxpbnZ0Z3N0fGludnRpbGRlb3B8aW52dGltZW91dHxpbnZ0aXRsZXxpbnZ0b3xpbnZ0b3B8aW52dHJ8aW52dHRpbWVvdXR8aW52dHR5YnVpbHRpbnxpbnZ0dHlmYXN0fGludnR4fGludnZifGludnZpc3VhbGJlbGx8aW52d2F8aW52d2FybnxpbnZ3YnxpbnZ3ZWlyZGludmVydHxpbnZ3Zmh8aW52d2Z3fGludndpbGRtZW51fGludndpbmZpeGhlaWdodHxpbnZ3aW5maXh3aWR0aHxpbnZ3aXZ8aW52d21udXxpbnZ3cmFwfGludndyYXBzY2FufGludndyaXRlfGludndyaXRlYW55fGludndyaXRlYmFja3VwfGludndzfHRfQUJ8dF9BRnx0X2FsfHRfQUx8dF9iY3x0X2NkfHRfY2V8dF9DZXx0X2NsfHRfY218dF9Db3x0X2NzfHRfQ3N8dF9DU3x0X0NWfHRfZGF8dF9kYnx0X2RsfHRfREx8dF9FSXx0X0YxfHRfRjJ8dF9GM3x0X0Y0fHRfRjV8dF9GNnx0X0Y3fHRfRjh8dF9GOXx0X2ZzfHRfSUV8dF9JU3x0X2sxfHRfSzF8dF9rMnx0X2szfHRfSzN8dF9rNHx0X0s0fHRfazV8dF9LNXx0X2s2fHRfSzZ8dF9rN3x0X0s3fHRfazh8dF9LOHx0X2s5fHRfSzl8dF9LQXx0X2tifHRfa0J8dF9LQnx0X0tDfHRfa2R8dF9rRHx0X0tEfHRfa2V8dF9LRXx0X0tGfHRfS0d8dF9raHx0X0tIfHRfa0l8dF9LSXx0X0tKfHRfS0t8dF9rbHx0X0tMfHRfa058dF9rUHx0X2tyfHRfa3N8dF9rdXx0X2xlfHRfbWJ8dF9tZHx0X21lfHRfbXJ8dF9tc3x0X25kfHRfb3B8dF9SSXx0X1JWfHRfU2J8dF9zZXx0X1NmfHRfU0l8dF9zb3x0X3NyfHRfdGV8dF90aXx0X3RzfHRfdWV8dF91c3x0X3V0fHRfdmJ8dF92ZXx0X3ZpfHRfdnN8dF9XUHx0X1dTfHRfeHN8dF9aSHx0X1pSKVxcYi8sbnVtYmVyOi9cXGIoPzoweFtcXGRhLWZdK3xcXGQrKD86XFwuXFxkKyk/KVxcYi9pLG9wZXJhdG9yOi9cXHxcXHx8JiZ8Wy0rLl09P3xbPSFdKD86Wz1+XVsjP10/KT98Wzw+XT0/WyM/XT98WypcXC8lP118XFxiKD86aXMoPzpub3QpPylcXGIvLHB1bmN0dWF0aW9uOi9be31bXFxdKCksOzpdL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInZpbVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXNbXCJ2aXN1YWwtYmFzaWNcIl09e2NvbW1lbnQ6e3BhdHRlcm46Lyg/Olsn4oCY4oCZXXxSRU1cXGIpLiovaSxpbnNpZGU6e2tleXdvcmQ6L15SRU0vaX19LGRpcmVjdGl2ZTp7cGF0dGVybjovIyg/OkNvbnN0fEVsc2V8RWxzZUlmfEVuZHxFeHRlcm5hbENoZWNrc3VtfEV4dGVybmFsU291cmNlfElmfFJlZ2lvbikoPzpbXlxcU1xcclxcbl1fW15cXFNcXHJcXG5dKig/Olxcclxcbj98XFxuKXwuKSsvaSxhbGlhczpcImNvbW1lbnRcIixncmVlZHk6ITB9LHN0cmluZzp7cGF0dGVybjovW1wi4oCc4oCdXSg/OltcIuKAnOKAnV17Mn18W15cIuKAnOKAnV0pKltcIuKAnOKAnV1DPy9pLGdyZWVkeTohMH0sZGF0ZTp7cGF0dGVybjovI1teXFxTXFxyXFxuXSooPzpcXGQrKFtcXC8tXSlcXGQrXFwxXFxkKyg/OlteXFxTXFxyXFxuXSsoPzpcXGQrW15cXFNcXHJcXG5dKig/OkFNfFBNKXxcXGQrOlxcZCsoPzo6XFxkKyk/KD86W15cXFNcXHJcXG5dKig/OkFNfFBNKSk/KSk/fCg/OlxcZCtbXlxcU1xcclxcbl0qKD86QU18UE0pfFxcZCs6XFxkKyg/OjpcXGQrKT8oPzpbXlxcU1xcclxcbl0qKD86QU18UE0pKT8pKVteXFxTXFxyXFxuXSojL2ksYWxpYXM6XCJidWlsdGluXCJ9LG51bWJlcjovKD86KD86XFxiXFxkKyg/OlxcLlxcZCspP3xcXC5cXGQrKSg/OkVbKy1dP1xcZCspP3wmW0hPXVtcXGRBLUZdKykoPzpVP1tJTFNdfFtGUkRdKT8vaSxib29sZWFuOi9cXGIoPzpUcnVlfEZhbHNlfE5vdGhpbmcpXFxiL2ksa2V5d29yZDovXFxiKD86QWRkSGFuZGxlcnxBZGRyZXNzT2Z8QWxpYXN8QW5kKD86QWxzbyk/fEFzfEJvb2xlYW58QnlSZWZ8Qnl0ZXxCeVZhbHxDYWxsfENhc2V8Q2F0Y2h8Qyg/OkJvb2x8Qnl0ZXxDaGFyfERhdGV8RGJsfERlY3xJbnR8TG5nfE9ianxTQnl0ZXxTaG9ydHxTbmd8U3RyfFR5cGV8VUludHxVTG5nfFVTaG9ydCl8Q2hhcnxDbGFzc3xDb25zdHxDb250aW51ZXxEYXRlfERlY2ltYWx8RGVjbGFyZXxEZWZhdWx0fERlbGVnYXRlfERpbXxEaXJlY3RDYXN0fERvfERvdWJsZXxFYWNofEVsc2UoPzpJZik/fEVuZCg/OklmKT98RW51bXxFcmFzZXxFcnJvcnxFdmVudHxFeGl0fEZpbmFsbHl8Rm9yfEZyaWVuZHxGdW5jdGlvbnxHZXQoPzpUeXBlfFhNTE5hbWVzcGFjZSk/fEdsb2JhbHxHb1N1YnxHb1RvfEhhbmRsZXN8SWZ8SW1wbGVtZW50c3xJbXBvcnRzfElufEluaGVyaXRzfEludGVnZXJ8SW50ZXJmYWNlfElzfElzTm90fExldHxMaWJ8TGlrZXxMb25nfExvb3B8TWV8TW9kfE1vZHVsZXxNdXN0KD86SW5oZXJpdHxPdmVycmlkZSl8TXkoPzpCYXNlfENsYXNzKXxOYW1lc3BhY2V8TmFycm93aW5nfE5ld3xOZXh0fE5vdCg/OkluaGVyaXRhYmxlfE92ZXJyaWRhYmxlKT98T2JqZWN0fE9mfE9ufE9wZXJhdG9yfE9wdGlvbig/OmFsKT98T3IoPzpFbHNlKT98T3V0fE92ZXJsb2Fkc3xPdmVycmlkYWJsZXxPdmVycmlkZXN8UGFyYW1BcnJheXxQYXJ0aWFsfFByaXZhdGV8UHJvcGVydHl8UHJvdGVjdGVkfFB1YmxpY3xSYWlzZUV2ZW50fFJlYWRPbmx5fFJlRGltfFJlbW92ZUhhbmRsZXJ8UmVzdW1lfFJldHVybnxTQnl0ZXxTZWxlY3R8U2V0fFNoYWRvd3N8U2hhcmVkfHNob3J0fFNpbmdsZXxTdGF0aWN8U3RlcHxTdG9wfFN0cmluZ3xTdHJ1Y3R1cmV8U3VifFN5bmNMb2NrfFRoZW58VGhyb3d8VG98VHJ5fFRyeUNhc3R8VHlwZU9mfFUoPzpJbnRlZ2VyfExvbmd8U2hvcnQpfFVzaW5nfFZhcmlhbnR8V2VuZHxXaGVufFdoaWxlfFdpZGVuaW5nfFdpdGgoPzpFdmVudHMpP3xXcml0ZU9ubHl8WG9yKVxcYi9pLG9wZXJhdG9yOlsvWytcXC0qXFwvXFxcXF48PT4mI0AkJSFdLyx7cGF0dGVybjovKFteXFxTXFxyXFxuXSlfKD89W15cXFNcXHJcXG5dKltcXHJcXG5dKS8sbG9va2JlaGluZDohMH1dLHB1bmN0dWF0aW9uOi9be30oKS4sOj9dL30sZS5sYW5ndWFnZXMudmI9ZS5sYW5ndWFnZXNbXCJ2aXN1YWwtYmFzaWNcIl19ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInZpc3VhbEJhc2ljXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy53YXNtPXtjb21tZW50OlsvXFwoO1tcXHNcXFNdKj87XFwpLyx7cGF0dGVybjovOzsuKi8sZ3JlZWR5OiEwfV0sc3RyaW5nOntwYXR0ZXJuOi9cIig/OlxcXFxbXFxzXFxTXXxbXlwiXFxcXF0pKlwiLyxncmVlZHk6ITB9LGtleXdvcmQ6W3twYXR0ZXJuOi9cXGIoPzphbGlnbnxvZmZzZXQpPS8saW5zaWRlOntvcGVyYXRvcjovPS99fSx7cGF0dGVybjovXFxiKD86KD86ZjMyfGY2NHxpMzJ8aTY0KSg/OlxcLig/OmFic3xhZGR8YW5kfGNlaWx8Y2x6fGNvbnN0fGNvbnZlcnRfW3N1XVxcL2koPzozMnw2NCl8Y29weXNpZ258Y3R6fGRlbW90ZVxcL2Y2NHxkaXYoPzpfW3N1XSk/fGVxej98ZXh0ZW5kX1tzdV1cXC9pMzJ8Zmxvb3J8Z2UoPzpfW3N1XSk/fGd0KD86X1tzdV0pP3xsZSg/Ol9bc3VdKT98bG9hZCg/Oig/Ojh8MTZ8MzIpX1tzdV0pP3xsdCg/Ol9bc3VdKT98bWF4fG1pbnxtdWx8bmVhcmVzdHxuZWc/fG9yfHBvcGNudHxwcm9tb3RlXFwvZjMyfHJlaW50ZXJwcmV0XFwvW2ZpXSg/OjMyfDY0KXxyZW1fW3N1XXxyb3RbbHJdfHNobHxzaHJfW3N1XXxzdG9yZSg/Ojh8MTZ8MzIpP3xzcXJ0fHN1Ynx0cnVuYyg/Ol9bc3VdXFwvZig/OjMyfDY0KSk/fHdyYXBcXC9pNjR8eG9yKSk/fG1lbW9yeVxcLig/Omdyb3d8c2l6ZSkpXFxiLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cXC4vfX0sL1xcYig/OmFueWZ1bmN8YmxvY2t8YnIoPzpfaWZ8X3RhYmxlKT98Y2FsbCg/Ol9pbmRpcmVjdCk/fGRhdGF8ZHJvcHxlbGVtfGVsc2V8ZW5kfGV4cG9ydHxmdW5jfGdldF8oPzpnbG9iYWx8bG9jYWwpfGdsb2JhbHxpZnxpbXBvcnR8bG9jYWx8bG9vcHxtZW1vcnl8bW9kdWxlfG11dHxub3B8b2Zmc2V0fHBhcmFtfHJlc3VsdHxyZXR1cm58c2VsZWN0fHNldF8oPzpnbG9iYWx8bG9jYWwpfHN0YXJ0fHRhYmxlfHRlZV9sb2NhbHx0aGVufHR5cGV8dW5yZWFjaGFibGUpXFxiL10sdmFyaWFibGU6L1xcJFtcXHchIyQlJicqK1xcLS5cXC86PD0+P0BcXFxcXl9gfH5dKy9pLG51bWJlcjovWystXT9cXGIoPzpcXGQoPzpfP1xcZCkqKD86XFwuXFxkKD86Xz9cXGQpKik/KD86W2VFXVsrLV0/XFxkKD86Xz9cXGQpKik/fDB4W1xcZGEtZkEtRl0oPzpfP1tcXGRhLWZBLUZdKSooPzpcXC5bXFxkYS1mQS1GXSg/Ol8/W1xcZGEtZkEtRF0pKik/KD86W3BQXVsrLV0/XFxkKD86Xz9cXGQpKik/KVxcYnxcXGJpbmZcXGJ8XFxibmFuKD86OjB4W1xcZGEtZkEtRl0oPzpfP1tcXGRhLWZBLURdKSopP1xcYi8scHVuY3R1YXRpb246L1soKV0vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwid2FzbVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMud2lraT1lLmxhbmd1YWdlcy5leHRlbmQoXCJtYXJrdXBcIix7XCJibG9jay1jb21tZW50XCI6e3BhdHRlcm46LyhefFteXFxcXF0pXFwvXFwqW1xcc1xcU10qP1xcKlxcLy8sbG9va2JlaGluZDohMCxhbGlhczpcImNvbW1lbnRcIn0saGVhZGluZzp7cGF0dGVybjovXig9KykuKz9cXDEvbSxpbnNpZGU6e3B1bmN0dWF0aW9uOi9ePSt8PSskLyxpbXBvcnRhbnQ6Ly4rL319LGVtcGhhc2lzOntwYXR0ZXJuOi8oJ3syLDV9KS4rP1xcMS8saW5zaWRlOntcImJvbGQgaXRhbGljXCI6e3BhdHRlcm46LygnJycnJykuKz8oPz1cXDEpLyxsb29rYmVoaW5kOiEwfSxib2xkOntwYXR0ZXJuOi8oJycnKVteJ10oPzouKj9bXiddKT8oPz1cXDEpLyxsb29rYmVoaW5kOiEwfSxpdGFsaWM6e3BhdHRlcm46LygnJylbXiddKD86Lio/W14nXSk/KD89XFwxKS8sbG9va2JlaGluZDohMH0scHVuY3R1YXRpb246L14nJyt8JycrJC99fSxocjp7cGF0dGVybjovXi17NCx9L20sYWxpYXM6XCJwdW5jdHVhdGlvblwifSx1cmw6Wy9JU0JOICsoPzo5N1s4OV1bIC1dPyk/KD86XFxkWyAtXT8pezl9W1xcZHhdXFxifCg/OlJGQ3xQTUlEKSArXFxkKy9pLC9cXFtcXFsuKz9cXF1cXF18XFxbLis/XFxdL10sdmFyaWFibGU6Wy9fX1tBLVpdK19fLywvXFx7ezN9Lis/XFx9ezN9LywvXFx7XFx7Lis/XFx9XFx9L10sc3ltYm9sOlsvXiNyZWRpcmVjdC9pbSwvfnszLDV9L10sXCJ0YWJsZS10YWdcIjp7cGF0dGVybjovKCg/Ol58W3whXSlbfCFdKVtefFxcclxcbl0rXFx8KD8hXFx8KS9tLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntcInRhYmxlLWJhclwiOntwYXR0ZXJuOi9cXHwkLyxhbGlhczpcInB1bmN0dWF0aW9uXCJ9LHJlc3Q6ZS5sYW5ndWFnZXMubWFya3VwLnRhZy5pbnNpZGV9fSxwdW5jdHVhdGlvbjovXig/Olxce1xcfHxcXHxcXH18XFx8LXxbKiM6OyF8XSl8XFx8XFx8fCEhL219KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJ3aWtpXCIsXCJ0YWdcIix7bm93aWtpOntwYXR0ZXJuOi88KG5vd2lraXxwcmV8c291cmNlKVxcYltcXHNcXFNdKj8+W1xcc1xcU10qPzxcXC9cXDE+L2ksaW5zaWRlOnt0YWc6e3BhdHRlcm46LzwoPzpub3dpa2l8cHJlfHNvdXJjZSlcXGJbXFxzXFxTXSo/Pnw8XFwvKD86bm93aWtpfHByZXxzb3VyY2UpPi9pLGluc2lkZTplLmxhbmd1YWdlcy5tYXJrdXAudGFnLmluc2lkZX19fX0pfWUuZXhwb3J0cz1yLHIuZGlzcGxheU5hbWU9XCJ3aWtpXCIsci5hbGlhc2VzPVtdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXshZnVuY3Rpb24oZSl7ZS5sYW5ndWFnZXMueGVvcmE9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwibWFya3VwXCIse2NvbnN0YW50OntwYXR0ZXJuOi9cXCQoPzpEb21haW5Db250ZW50c3xQYWdlUmVuZGVyRHVyYXRpb24pXFwkLyxpbnNpZGU6e3B1bmN0dWF0aW9uOntwYXR0ZXJuOi9cXCQvfX19LHZhcmlhYmxlOntwYXR0ZXJuOi9cXCRAPyg/OiMrfFstKyp+PV5dKT9bXFx3Ll0rXFwkLyxpbnNpZGU6e3B1bmN0dWF0aW9uOntwYXR0ZXJuOi9bJC5dL30sb3BlcmF0b3I6e3BhdHRlcm46LyMrfFstKyp+PV5AXS99fX0sXCJmdW5jdGlvbi1pbmxpbmVcIjp7cGF0dGVybjovXFwkRjpbLVxcdy5dK1xcP1stXFx3Ll0rKD86LCg/OlxcfD8oPzpbLSMuXisqfl0qKD86W1xcdytdW14kXSopfD0oPzpbXFxTK11bXiRdKil8QFstI10qKD86XFx3Ky4pW1xcdysuXSspPykqKT9cXCQvLGluc2lkZTp7dmFyaWFibGU6e3BhdHRlcm46Lyg/OlssfF0pQD8oPzojK3xbLSsqfj1eXSk/W1xcdy5dKy8saW5zaWRlOntwdW5jdHVhdGlvbjp7cGF0dGVybjovWywufF0vfSxvcGVyYXRvcjp7cGF0dGVybjovIyt8Wy0rKn49XkBdL319fSxwdW5jdHVhdGlvbjp7cGF0dGVybjovXFwkXFx3OnxbJDo/Lix8XS99fSxhbGlhczpcImZ1bmN0aW9uXCJ9LFwiZnVuY3Rpb24tYmxvY2tcIjp7cGF0dGVybjovXFwkWEY6e1stXFx3Ll0rXFw/Wy1cXHcuXSsoPzosKD86XFx8Pyg/OlstIy5eKyp+XSooPzpbXFx3K11bXiRdKil8PSg/OltcXFMrXVteJF0qKXxAWy0jXSooPzpcXHcrLilbXFx3Ky5dKyk/KSopP306WEZcXCQvLGluc2lkZTp7cHVuY3R1YXRpb246e3BhdHRlcm46L1skOnt9Py4sfF0vfX0sYWxpYXM6XCJmdW5jdGlvblwifSxcImRpcmVjdGl2ZS1pbmxpbmVcIjp7cGF0dGVybjovXFwkXFx3KD86I1xcZCtcXCs/KT8oPzpcXFtbLVxcdy5dK10pPzpbLVxcL1xcdy5dK1xcJC8saW5zaWRlOntwdW5jdHVhdGlvbjp7cGF0dGVybjovXFwkKD86XFx3OnxDKD86XFxbfCNcXGQpKT98Wzp7W1xcXV0vLGluc2lkZTp7dGFnOntwYXR0ZXJuOi8jXFxkL319fX0sYWxpYXM6XCJmdW5jdGlvblwifSxcImRpcmVjdGl2ZS1ibG9jay1vcGVuXCI6e3BhdHRlcm46L1xcJFxcdys6e3xcXCRcXHcoPzojXFxkK1xcKz8pPyg/OlxcW1stXFx3Ll0rXSk/OlstXFx3Ll0rOnsoIVtBLVpdKyk/LyxpbnNpZGU6e3B1bmN0dWF0aW9uOntwYXR0ZXJuOi9cXCQoPzpcXHc6fEMoPzpcXFt8I1xcZCkpP3xbOntbXFxdXS8saW5zaWRlOnt0YWc6e3BhdHRlcm46LyNcXGQvfX19LGF0dHJpYnV0ZTp7cGF0dGVybjovIVtBLVpdKyQvLGluc2lkZTp7cHVuY3R1YXRpb246e3BhdHRlcm46LyEvfX0sYWxpYXM6XCJrZXl3b3JkXCJ9fSxhbGlhczpcImZ1bmN0aW9uXCJ9LFwiZGlyZWN0aXZlLWJsb2NrLXNlcGFyYXRvclwiOntwYXR0ZXJuOi99OlstXFx3Ll0rOnsvLGluc2lkZTp7cHVuY3R1YXRpb246e3BhdHRlcm46L1s6e31dL319LGFsaWFzOlwiZnVuY3Rpb25cIn0sXCJkaXJlY3RpdmUtYmxvY2stY2xvc2VcIjp7cGF0dGVybjovfTpbLVxcdy5dK1xcJC8saW5zaWRlOntwdW5jdHVhdGlvbjp7cGF0dGVybjovWzp7fSRdL319LGFsaWFzOlwiZnVuY3Rpb25cIn19KSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXCJpbnNpZGVcIixcInB1bmN0dWF0aW9uXCIse3ZhcmlhYmxlOmUubGFuZ3VhZ2VzLnhlb3JhW1wiZnVuY3Rpb24taW5saW5lXCJdLmluc2lkZS52YXJpYWJsZX0sZS5sYW5ndWFnZXMueGVvcmFbXCJmdW5jdGlvbi1ibG9ja1wiXSksZS5sYW5ndWFnZXMueGVvcmFjdWJlPWUubGFuZ3VhZ2VzLnhlb3JhfShlKX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwieGVvcmFcIixyLmFsaWFzZXM9W1wieGVvcmFjdWJlXCJdfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtlLmxhbmd1YWdlcy54b2pvPXtjb21tZW50OntwYXR0ZXJuOi8oPzonfFxcL1xcL3xSZW1cXGIpLisvaSxpbnNpZGU6e2tleXdvcmQ6L15SZW0vaX19LHN0cmluZzp7cGF0dGVybjovXCIoPzpcIlwifFteXCJdKSpcIi8sZ3JlZWR5OiEwfSxudW1iZXI6Wy8oPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzpFWystXT9cXGQrKT8vaSwvJltiY2hvdV1bYS16XFxkXSsvaV0sc3ltYm9sOi8jKD86SWZ8RWxzZXxFbHNlSWZ8RW5kaWZ8UHJhZ21hKVxcYi9pLGtleXdvcmQ6L1xcYig/OkFkZEhhbmRsZXJ8QXBwfEFycmF5fEFzKD86c2lnbnMpP3xCeSg/OlJlZnxWYWwpfEJyZWFrfENhbGx8Q2FzZXxDYXRjaHxDb25zdHxDb250aW51ZXxDdXJyZW50TWV0aG9kTmFtZXxEZWNsYXJlfERpbXxEbyg/OnduVG8pP3xFYWNofEVsc2UoPzpJZik/fEVuZHxFeGl0fEV4dGVuZHN8RmFsc2V8RmluYWxseXxGb3J8R2xvYmFsfElmfElufExpYnxMb29wfE1lfE5leHR8TmlsfE9wdGlvbmFsfFBhcmFtQXJyYXl8UmFpc2UoPzpFdmVudCk/fFJlRGltfFJlbXxSZW1vdmVIYW5kbGVyfFJldHVybnxTZWxlY3R8U2VsZnxTb2Z0fFN0YXRpY3xTdGVwfFN1cGVyfFRoZW58VG98VHJ1ZXxUcnl8VWJvdW5kfFVudGlsfFVzaW5nfFdlbmR8V2hpbGUpXFxiL2ksb3BlcmF0b3I6LzxbPT5dP3w+PT98WytcXC0qXFwvXFxcXF49XXxcXGIoPzpBZGRyZXNzT2Z8QW5kfEN0eXBlfElzQT98TW9kfE5ld3xOb3R8T3J8WG9yfFdlYWtBZGRyZXNzT2YpXFxiL2kscHVuY3R1YXRpb246L1suLDs6KCldL319ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInhvam9cIixyLmFsaWFzZXM9W119LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy54cXVlcnk9ZS5sYW5ndWFnZXMuZXh0ZW5kKFwibWFya3VwXCIse1wieHF1ZXJ5LWNvbW1lbnRcIjp7cGF0dGVybjovXFwoOltcXHNcXFNdKj86XFwpLyxncmVlZHk6ITAsYWxpYXM6XCJjb21tZW50XCJ9LHN0cmluZzp7cGF0dGVybjovKFtcIiddKSg/OlxcMVxcMXwoPyFcXDEpW1xcc1xcU10pKlxcMS8sZ3JlZWR5OiEwfSxleHRlbnNpb246e3BhdHRlcm46L1xcKCMuKz8jXFwpLyxhbGlhczpcInN5bWJvbFwifSx2YXJpYWJsZTovXFwkW1xcdy06XSsvLGF4aXM6e3BhdHRlcm46LyhefFteLV0pKD86YW5jZXN0b3IoPzotb3Itc2VsZik/fGF0dHJpYnV0ZXxjaGlsZHxkZXNjZW5kYW50KD86LW9yLXNlbGYpP3xmb2xsb3dpbmcoPzotc2libGluZyk/fHBhcmVudHxwcmVjZWRpbmcoPzotc2libGluZyk/fHNlbGYpKD89OjopLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwib3BlcmF0b3JcIn0sXCJrZXl3b3JkLW9wZXJhdG9yXCI6e3BhdHRlcm46LyhefFteOi1dKVxcYig/OmFuZHxjYXN0YWJsZSBhc3xkaXZ8ZXF8ZXhjZXB0fGdlfGd0fGlkaXZ8aW5zdGFuY2Ugb2Z8aW50ZXJzZWN0fGlzfGxlfGx0fG1vZHxuZXxvcnx1bmlvbilcXGIoPz0kfFteOi1dKS8sbG9va2JlaGluZDohMCxhbGlhczpcIm9wZXJhdG9yXCJ9LGtleXdvcmQ6e3BhdHRlcm46LyhefFteOi1dKVxcYig/OmFzfGFzY2VuZGluZ3xhdHxiYXNlLXVyaXxib3VuZGFyeS1zcGFjZXxjYXNlfGNhc3QgYXN8Y29sbGF0aW9ufGNvbnN0cnVjdGlvbnxjb3B5LW5hbWVzcGFjZXN8ZGVjbGFyZXxkZWZhdWx0fGRlc2NlbmRpbmd8ZWxzZXxlbXB0eSAoPzpncmVhdGVzdHxsZWFzdCl8ZW5jb2Rpbmd8ZXZlcnl8ZXh0ZXJuYWx8Zm9yfGZ1bmN0aW9ufGlmfGltcG9ydHxpbnxpbmhlcml0fGxheHxsZXR8bWFwfG1vZHVsZXxuYW1lc3BhY2V8bm8taW5oZXJpdHxuby1wcmVzZXJ2ZXxvcHRpb258b3JkZXIoPzogYnl8ZWR8aW5nKT98cHJlc2VydmV8cmV0dXJufHNhdGlzZmllc3xzY2hlbWF8c29tZXxzdGFibGV8c3RyaWN0fHN0cmlwfHRoZW58dG98dHJlYXQgYXN8dHlwZXN3aXRjaHx1bm9yZGVyZWR8dmFsaWRhdGV8dmFyaWFibGV8dmVyc2lvbnx3aGVyZXx4cXVlcnkpXFxiKD89JHxbXjotXSkvLGxvb2tiZWhpbmQ6ITB9LGZ1bmN0aW9uOi9bXFx3LV0rKD86OltcXHctXSspKig/PVxccypcXCgpLyxcInhxdWVyeS1lbGVtZW50XCI6e3BhdHRlcm46LyhlbGVtZW50XFxzKylbXFx3LV0rKD86OltcXHctXSspKi8sbG9va2JlaGluZDohMCxhbGlhczpcInRhZ1wifSxcInhxdWVyeS1hdHRyaWJ1dGVcIjp7cGF0dGVybjovKGF0dHJpYnV0ZVxccyspW1xcdy1dKyg/OjpbXFx3LV0rKSovLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJhdHRyLW5hbWVcIn0sYnVpbHRpbjp7cGF0dGVybjovKF58W146LV0pXFxiKD86YXR0cmlidXRlfGNvbW1lbnR8ZG9jdW1lbnR8ZWxlbWVudHxwcm9jZXNzaW5nLWluc3RydWN0aW9ufHRleHR8eHM6KD86YW55QXRvbWljVHlwZXxhbnlUeXBlfGFueVVSSXxiYXNlNjRCaW5hcnl8Ym9vbGVhbnxieXRlfGRhdGV8ZGF0ZVRpbWV8ZGF5VGltZUR1cmF0aW9ufGRlY2ltYWx8ZG91YmxlfGR1cmF0aW9ufEVOVElUSUVTfEVOVElUWXxmbG9hdHxnRGF5fGdNb250aHxnTW9udGhEYXl8Z1llYXJ8Z1llYXJNb250aHxoZXhCaW5hcnl8SUR8SURSRUZTP3xpbnR8aW50ZWdlcnxsYW5ndWFnZXxsb25nfE5hbWV8TkNOYW1lfG5lZ2F0aXZlSW50ZWdlcnxOTVRPS0VOUz98bm9uTmVnYXRpdmVJbnRlZ2VyfG5vblBvc2l0aXZlSW50ZWdlcnxub3JtYWxpemVkU3RyaW5nfE5PVEFUSU9OfHBvc2l0aXZlSW50ZWdlcnxRTmFtZXxzaG9ydHxzdHJpbmd8dGltZXx0b2tlbnx1bnNpZ25lZCg/OkJ5dGV8SW50fExvbmd8U2hvcnQpfHVudHlwZWQoPzpBdG9taWMpP3x5ZWFyTW9udGhEdXJhdGlvbikpXFxiKD89JHxbXjotXSkvLGxvb2tiZWhpbmQ6ITB9LG51bWJlcjovXFxiXFxkKyg/OlxcLlxcZCspPyg/OkVbKy1dP1xcZCspPy8sb3BlcmF0b3I6Wy9bKyo9P3xAXXxcXC5cXC4/fDo9fCE9fDxbPTxdP3w+Wz0+XT8vLHtwYXR0ZXJuOi8oXFxzKS0oPz1cXHMpLyxsb29rYmVoaW5kOiEwfV0scHVuY3R1YXRpb246L1tbXFxdKCl7fSw7OlxcL10vfSksZS5sYW5ndWFnZXMueHF1ZXJ5LnRhZy5wYXR0ZXJuPS88XFwvPyg/IVxcZClbXlxccz5cXC89JDwlXSsoPzpcXHMrW15cXHM+XFwvPV0rKD86PSg/OihcInwnKSg/OlxcXFxbXFxzXFxTXXx7KD8heykoPzp7KD86e1tefV0qfXxbXn1dKSp9fFtefV0pK318KD8hXFwxKVteXFxcXF0pKlxcMXxbXlxccydcIj49XSspKT8pKlxccypcXC8/Pi9pLGUubGFuZ3VhZ2VzLnhxdWVyeS50YWcuaW5zaWRlW1wiYXR0ci12YWx1ZVwiXS5wYXR0ZXJuPS89KD86KFwifCcpKD86XFxcXFtcXHNcXFNdfHsoPyF7KSg/OnsoPzp7W159XSp9fFtefV0pKn18W159XSkrfXwoPyFcXDEpW15cXFxcXSkqXFwxfFteXFxzJ1wiPj1dKykvaSxlLmxhbmd1YWdlcy54cXVlcnkudGFnLmluc2lkZVtcImF0dHItdmFsdWVcIl0uaW5zaWRlLnB1bmN0dWF0aW9uPS9ePVwifFwiJC8sZS5sYW5ndWFnZXMueHF1ZXJ5LnRhZy5pbnNpZGVbXCJhdHRyLXZhbHVlXCJdLmluc2lkZS5leHByZXNzaW9uPXtwYXR0ZXJuOi97KD8heykoPzp7KD86e1tefV0qfXxbXn1dKSp9fFtefV0pK30vLGluc2lkZTp7cmVzdDplLmxhbmd1YWdlcy54cXVlcnl9LGFsaWFzOlwibGFuZ3VhZ2UteHF1ZXJ5XCJ9O3ZhciB0PWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6XCJzdHJpbmdcIj09dHlwZW9mIGUuY29udGVudD9lLmNvbnRlbnQ6ZS5jb250ZW50Lm1hcCh0KS5qb2luKFwiXCIpfSxuPWZ1bmN0aW9uKHIpe2Zvcih2YXIgbz1bXSxhPTA7YTxyLmxlbmd0aDthKyspe3ZhciBpPXJbYV0sbD0hMTtpZihcInN0cmluZ1wiIT10eXBlb2YgaSYmKFwidGFnXCI9PT1pLnR5cGUmJmkuY29udGVudFswXSYmXCJ0YWdcIj09PWkuY29udGVudFswXS50eXBlP1wiPC9cIj09PWkuY29udGVudFswXS5jb250ZW50WzBdLmNvbnRlbnQ/by5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXS50YWdOYW1lPT09dChpLmNvbnRlbnRbMF0uY29udGVudFsxXSkmJm8ucG9wKCk6XCIvPlwiPT09aS5jb250ZW50W2kuY29udGVudC5sZW5ndGgtMV0uY29udGVudHx8by5wdXNoKHt0YWdOYW1lOnQoaS5jb250ZW50WzBdLmNvbnRlbnRbMV0pLG9wZW5lZEJyYWNlczowfSk6IShvLmxlbmd0aD4wJiZcInB1bmN0dWF0aW9uXCI9PT1pLnR5cGUmJlwie1wiPT09aS5jb250ZW50KXx8clthKzFdJiZcInB1bmN0dWF0aW9uXCI9PT1yW2ErMV0udHlwZSYmXCJ7XCI9PT1yW2ErMV0uY29udGVudHx8clthLTFdJiZcInBsYWluLXRleHRcIj09PXJbYS0xXS50eXBlJiZcIntcIj09PXJbYS0xXS5jb250ZW50P28ubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0ub3BlbmVkQnJhY2VzPjAmJlwicHVuY3R1YXRpb25cIj09PWkudHlwZSYmXCJ9XCI9PT1pLmNvbnRlbnQ/b1tvLmxlbmd0aC0xXS5vcGVuZWRCcmFjZXMtLTpcImNvbW1lbnRcIiE9PWkudHlwZSYmKGw9ITApOm9bby5sZW5ndGgtMV0ub3BlbmVkQnJhY2VzKyspLChsfHxcInN0cmluZ1wiPT10eXBlb2YgaSkmJm8ubGVuZ3RoPjAmJjA9PT1vW28ubGVuZ3RoLTFdLm9wZW5lZEJyYWNlcyl7dmFyIHM9dChpKTthPHIubGVuZ3RoLTEmJihcInN0cmluZ1wiPT10eXBlb2YgclthKzFdfHxcInBsYWluLXRleHRcIj09PXJbYSsxXS50eXBlKSYmKHMrPXQoclthKzFdKSxyLnNwbGljZShhKzEsMSkpLGE+MCYmKFwic3RyaW5nXCI9PXR5cGVvZiByW2EtMV18fFwicGxhaW4tdGV4dFwiPT09clthLTFdLnR5cGUpJiYocz10KHJbYS0xXSkrcyxyLnNwbGljZShhLTEsMSksYS0tKSwvXlxccyskLy50ZXN0KHMpP3JbYV09czpyW2FdPW5ldyBlLlRva2VuKFwicGxhaW4tdGV4dFwiLHMsbnVsbCxzKX1pLmNvbnRlbnQmJlwic3RyaW5nXCIhPXR5cGVvZiBpLmNvbnRlbnQmJm4oaS5jb250ZW50KX19O2UuaG9va3MuYWRkKFwiYWZ0ZXItdG9rZW5pemVcIixmdW5jdGlvbihlKXtcInhxdWVyeVwiPT09ZS5sYW5ndWFnZSYmbihlLnRva2Vucyl9KX0oZSl9ZS5leHBvcnRzPXIsci5kaXNwbGF5TmFtZT1cInhxdWVyeVwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7ZS5sYW5ndWFnZXMueWFtbD17c2NhbGFyOntwYXR0ZXJuOi8oW1xcLTpdXFxzKig/OiFbXlxcc10rKT9bIFxcdF0qW3w+XSlbIFxcdF0qKD86KCg/Olxccj9cXG58XFxyKVsgXFx0XSspW15cXHJcXG5dKyg/OlxcMlteXFxyXFxuXSspKikvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJzdHJpbmdcIn0sY29tbWVudDovIy4qLyxrZXk6e3BhdHRlcm46LyhcXHMqKD86XnxbOlxcLSxbe1xcclxcbj9dKVsgXFx0XSooPzohW15cXHNdKyk/WyBcXHRdKilbXlxcclxcbntbXFxdfSwjXFxzXSs/KD89XFxzKjpcXHMpLyxsb29rYmVoaW5kOiEwLGFsaWFzOlwiYXRydWxlXCJ9LGRpcmVjdGl2ZTp7cGF0dGVybjovKF5bIFxcdF0qKSUuKy9tLGxvb2tiZWhpbmQ6ITAsYWxpYXM6XCJpbXBvcnRhbnRcIn0sZGF0ZXRpbWU6e3BhdHRlcm46LyhbOlxcLSxbe11cXHMqKD86IVteXFxzXSspP1sgXFx0XSopKD86XFxkezR9LVxcZFxcZD8tXFxkXFxkPyg/Olt0VF18WyBcXHRdKylcXGRcXGQ/OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQqKT9bIFxcdF0qKD86WnxbLStdXFxkXFxkPyg/OjpcXGR7Mn0pPyk/fFxcZHs0fS1cXGR7Mn0tXFxkezJ9fFxcZFxcZD86XFxkezJ9KD86OlxcZHsyfSg/OlxcLlxcZCopPyk/KSg/PVsgXFx0XSooPzokfCx8XXx9KSkvbSxsb29rYmVoaW5kOiEwLGFsaWFzOlwibnVtYmVyXCJ9LGJvb2xlYW46e3BhdHRlcm46LyhbOlxcLSxbe11cXHMqKD86IVteXFxzXSspP1sgXFx0XSopKD86dHJ1ZXxmYWxzZSlbIFxcdF0qKD89JHwsfF18fSkvaW0sbG9va2JlaGluZDohMCxhbGlhczpcImltcG9ydGFudFwifSxudWxsOntwYXR0ZXJuOi8oWzpcXC0sW3tdXFxzKig/OiFbXlxcc10rKT9bIFxcdF0qKSg/Om51bGx8filbIFxcdF0qKD89JHwsfF18fSkvaW0sbG9va2JlaGluZDohMCxhbGlhczpcImltcG9ydGFudFwifSxzdHJpbmc6e3BhdHRlcm46LyhbOlxcLSxbe11cXHMqKD86IVteXFxzXSspP1sgXFx0XSopKFwifCcpKD86KD8hXFwyKVteXFxcXFxcclxcbl18XFxcXC4pKlxcMig/PVsgXFx0XSooPzokfCx8XXx9KSkvbSxsb29rYmVoaW5kOiEwLGdyZWVkeTohMH0sbnVtYmVyOntwYXR0ZXJuOi8oWzpcXC0sW3tdXFxzKig/OiFbXlxcc10rKT9bIFxcdF0qKVsrLV0/KD86MHhbXFxkYS1mXSt8MG9bMC03XSt8KD86XFxkK1xcLj9cXGQqfFxcLj9cXGQrKSg/OmVbKy1dP1xcZCspP3xcXC5pbmZ8XFwubmFuKVsgXFx0XSooPz0kfCx8XXx9KS9pbSxsb29rYmVoaW5kOiEwfSx0YWc6LyFbXlxcc10rLyxpbXBvcnRhbnQ6L1smKl1bXFx3XSsvLHB1bmN0dWF0aW9uOi8tLS18WzpbXFxde31cXC0sfD4/XXxcXC5cXC5cXC4vfX1lLmV4cG9ydHM9cixyLmRpc3BsYXlOYW1lPVwieWFtbFwiLHIuYWxpYXNlcz1bXX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCJibGFja1wiLGJhY2tncm91bmQ6XCJub25lXCIsZm9udEZhbWlseTpcIkNvbnNvbGFzLCBNb25hY28sICdBbmRhbGUgTW9ubycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZVwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiYmxhY2tcIixiYWNrZ3JvdW5kOlwibm9uZVwiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixwb3NpdGlvbjpcInJlbGF0aXZlXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJ2aXNpYmxlXCIscGFkZGluZzpcIjBcIixiYWNrZ3JvdW5kQ29sb3I6XCIjZmRmZGZkXCIsV2Via2l0Qm94U2l6aW5nOlwiYm9yZGVyLWJveFwiLE1vekJveFNpemluZzpcImJvcmRlci1ib3hcIixib3hTaXppbmc6XCJib3JkZXItYm94XCIsbWFyZ2luQm90dG9tOlwiMWVtXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdPmNvZGUnOntwb3NpdGlvbjpcInJlbGF0aXZlXCIsYm9yZGVyTGVmdDpcIjEwcHggc29saWQgIzM1OGNjYlwiLGJveFNoYWRvdzpcIi0xcHggMHB4IDBweCAwcHggIzM1OGNjYiwgMHB4IDBweCAwcHggMXB4ICNkZmRmZGZcIixiYWNrZ3JvdW5kQ29sb3I6XCIjZmRmZGZkXCIsYmFja2dyb3VuZEltYWdlOlwibGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50IDUwJSwgcmdiYSg2OSwgMTQyLCAyMDksIDAuMDQpIDUwJSlcIixiYWNrZ3JvdW5kU2l6ZTpcIjNlbSAzZW1cIixiYWNrZ3JvdW5kT3JpZ2luOlwiY29udGVudC1ib3hcIixiYWNrZ3JvdW5kQXR0YWNobWVudDpcImxvY2FsXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlXCJdJzp7bWF4SGVpZ2h0OlwiaW5oZXJpdFwiLGhlaWdodDpcImluaGVyaXRcIixwYWRkaW5nOlwiMCAxZW1cIixkaXNwbGF5OlwiYmxvY2tcIixvdmVyZmxvdzpcImF1dG9cIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7YmFja2dyb3VuZENvbG9yOlwiI2ZkZmRmZFwiLFdlYmtpdEJveFNpemluZzpcImJvcmRlci1ib3hcIixNb3pCb3hTaXppbmc6XCJib3JkZXItYm94XCIsYm94U2l6aW5nOlwiYm9yZGVyLWJveFwiLG1hcmdpbkJvdHRvbTpcIjFlbVwiLHBvc2l0aW9uOlwicmVsYXRpdmVcIixwYWRkaW5nOlwiLjJlbVwiLGJvcmRlclJhZGl1czpcIjAuM2VtXCIsY29sb3I6XCIjYzkyYzJjXCIsYm9yZGVyOlwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKVwiLGRpc3BsYXk6XCJpbmxpbmVcIix3aGl0ZVNwYWNlOlwibm9ybWFsXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOmJlZm9yZSc6e2NvbnRlbnQ6XCInJ1wiLHpJbmRleDpcIi0yXCIsZGlzcGxheTpcImJsb2NrXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLGJvdHRvbTpcIjAuNzVlbVwiLGxlZnQ6XCIwLjE4ZW1cIix3aWR0aDpcIjQwJVwiLGhlaWdodDpcIjIwJVwiLG1heEhlaWdodDpcIjEzZW1cIixib3hTaGFkb3c6XCIwcHggMTNweCA4cHggIzk3OTc5N1wiLFdlYmtpdFRyYW5zZm9ybTpcInJvdGF0ZSgtMmRlZylcIixNb3pUcmFuc2Zvcm06XCJyb3RhdGUoLTJkZWcpXCIsbXNUcmFuc2Zvcm06XCJyb3RhdGUoLTJkZWcpXCIsT1RyYW5zZm9ybTpcInJvdGF0ZSgtMmRlZylcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTJkZWcpXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOmFmdGVyJzp7Y29udGVudDpcIicnXCIsekluZGV4OlwiLTJcIixkaXNwbGF5OlwiYmxvY2tcIixwb3NpdGlvbjpcImFic29sdXRlXCIsYm90dG9tOlwiMC43NWVtXCIsbGVmdDpcImF1dG9cIix3aWR0aDpcIjQwJVwiLGhlaWdodDpcIjIwJVwiLG1heEhlaWdodDpcIjEzZW1cIixib3hTaGFkb3c6XCIwcHggMTNweCA4cHggIzk3OTc5N1wiLFdlYmtpdFRyYW5zZm9ybTpcInJvdGF0ZSgyZGVnKVwiLE1velRyYW5zZm9ybTpcInJvdGF0ZSgyZGVnKVwiLG1zVHJhbnNmb3JtOlwicm90YXRlKDJkZWcpXCIsT1RyYW5zZm9ybTpcInJvdGF0ZSgyZGVnKVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgyZGVnKVwiLHJpZ2h0OlwiMC43NWVtXCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTphZnRlcic6e3JpZ2h0OlwiMC43NWVtXCIsbGVmdDpcImF1dG9cIixXZWJraXRUcmFuc2Zvcm06XCJyb3RhdGUoMmRlZylcIixNb3pUcmFuc2Zvcm06XCJyb3RhdGUoMmRlZylcIixtc1RyYW5zZm9ybTpcInJvdGF0ZSgyZGVnKVwiLE9UcmFuc2Zvcm06XCJyb3RhdGUoMmRlZylcIix0cmFuc2Zvcm06XCJyb3RhdGUoMmRlZylcIn0sY29tbWVudDp7Y29sb3I6XCIjN0Q4Qjk5XCJ9LFwiYmxvY2stY29tbWVudFwiOntjb2xvcjpcIiM3RDhCOTlcIn0scHJvbG9nOntjb2xvcjpcIiM3RDhCOTlcIn0sZG9jdHlwZTp7Y29sb3I6XCIjN0Q4Qjk5XCJ9LGNkYXRhOntjb2xvcjpcIiM3RDhCOTlcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiIzVGNjM2NFwifSxwcm9wZXJ0eTp7Y29sb3I6XCIjYzkyYzJjXCJ9LHRhZzp7Y29sb3I6XCIjYzkyYzJjXCJ9LGJvb2xlYW46e2NvbG9yOlwiI2M5MmMyY1wifSxudW1iZXI6e2NvbG9yOlwiI2M5MmMyY1wifSxcImZ1bmN0aW9uLW5hbWVcIjp7Y29sb3I6XCIjYzkyYzJjXCJ9LGNvbnN0YW50Ontjb2xvcjpcIiNjOTJjMmNcIn0sc3ltYm9sOntjb2xvcjpcIiNjOTJjMmNcIn0sZGVsZXRlZDp7Y29sb3I6XCIjYzkyYzJjXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiMyZjljMGFcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjMmY5YzBhXCJ9LHN0cmluZzp7Y29sb3I6XCIjMmY5YzBhXCJ9LGNoYXI6e2NvbG9yOlwiIzJmOWMwYVwifSxmdW5jdGlvbjp7Y29sb3I6XCIjMmY5YzBhXCJ9LGJ1aWx0aW46e2NvbG9yOlwiIzJmOWMwYVwifSxpbnNlcnRlZDp7Y29sb3I6XCIjMmY5YzBhXCJ9LG9wZXJhdG9yOntjb2xvcjpcIiNhNjdmNTlcIixiYWNrZ3JvdW5kOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpXCJ9LGVudGl0eTp7Y29sb3I6XCIjYTY3ZjU5XCIsYmFja2dyb3VuZDpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KVwiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiNhNjdmNTlcIixiYWNrZ3JvdW5kOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiNhNjdmNTlcIixiYWNrZ3JvdW5kOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpXCJ9LGF0cnVsZTp7Y29sb3I6XCIjMTk5MGI4XCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiMxOTkwYjhcIn0sa2V5d29yZDp7Y29sb3I6XCIjMTk5MGI4XCJ9LFwiY2xhc3MtbmFtZVwiOntjb2xvcjpcIiMxOTkwYjhcIn0scmVnZXg6e2NvbG9yOlwiI2U5MFwifSxpbXBvcnRhbnQ6e2NvbG9yOlwiI2U5MFwiLGZvbnRXZWlnaHQ6XCJub3JtYWxcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjYTY3ZjU5XCIsYmFja2dyb3VuZDpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KVwifSxcIi5zdHlsZSAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiI2E2N2Y1OVwiLGJhY2tncm91bmQ6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSlcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn0sXCIubmFtZXNwYWNlXCI6e09wYWNpdHk6XCIuN1wifSxcInRhYjpub3QoOmVtcHR5KTpiZWZvcmVcIjp7Y29sb3I6XCIjZTBkN2QxXCJ9LFwiY3I6YmVmb3JlXCI6e2NvbG9yOlwiI2UwZDdkMVwifSxcImxmOmJlZm9yZVwiOntjb2xvcjpcIiNlMGQ3ZDFcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0ubGluZS1udW1iZXJzJzp7cGFkZGluZ0xlZnQ6XCIwXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdLmxpbmUtbnVtYmVycyBjb2RlJzp7cGFkZGluZ0xlZnQ6XCIzLjhlbVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXS5saW5lLW51bWJlcnMgLmxpbmUtbnVtYmVycy1yb3dzJzp7bGVmdDpcIjBcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl1bZGF0YS1saW5lXSc6e3BhZGRpbmdUb3A6XCIwXCIscGFkZGluZ0JvdHRvbTpcIjBcIixwYWRkaW5nTGVmdDpcIjBcIn0sXCJwcmVbZGF0YS1saW5lXSBjb2RlXCI6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIixwYWRkaW5nTGVmdDpcIjRlbVwifSxcInByZSAubGluZS1oaWdobGlnaHRcIjp7bWFyZ2luVG9wOlwiMFwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwid2hpdGVcIixiYWNrZ3JvdW5kOlwibm9uZVwiLHRleHRTaGFkb3c6XCIwIC0uMWVtIC4yZW0gYmxhY2tcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCJ3aGl0ZVwiLGJhY2tncm91bmQ6XCJoc2woMzAsIDIwJSwgMjUlKVwiLHRleHRTaGFkb3c6XCIwIC0uMWVtIC4yZW0gYmxhY2tcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wiLGJvcmRlcjpcIi4zZW0gc29saWQgaHNsKDMwLCAyMCUsIDQwJSlcIixib3JkZXJSYWRpdXM6XCIuNWVtXCIsYm94U2hhZG93OlwiMXB4IDFweCAuNWVtIGJsYWNrIGluc2V0XCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2JhY2tncm91bmQ6XCJoc2woMzAsIDIwJSwgMjUlKVwiLHBhZGRpbmc6XCIuMTVlbSAuMmVtIC4wNWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwiLGJvcmRlcjpcIi4xM2VtIHNvbGlkIGhzbCgzMCwgMjAlLCA0MCUpXCIsYm94U2hhZG93OlwiMXB4IDFweCAuM2VtIC0uMWVtIGJsYWNrIGluc2V0XCIsd2hpdGVTcGFjZTpcIm5vcm1hbFwifSxjb21tZW50Ontjb2xvcjpcImhzbCgzMCwgMjAlLCA1MCUpXCJ9LHByb2xvZzp7Y29sb3I6XCJoc2woMzAsIDIwJSwgNTAlKVwifSxkb2N0eXBlOntjb2xvcjpcImhzbCgzMCwgMjAlLCA1MCUpXCJ9LGNkYXRhOntjb2xvcjpcImhzbCgzMCwgMjAlLCA1MCUpXCJ9LHB1bmN0dWF0aW9uOntPcGFjaXR5OlwiLjdcIn0sXCIubmFtZXNwYWNlXCI6e09wYWNpdHk6XCIuN1wifSxwcm9wZXJ0eTp7Y29sb3I6XCJoc2woMzUwLCA0MCUsIDcwJSlcIn0sdGFnOntjb2xvcjpcImhzbCgzNTAsIDQwJSwgNzAlKVwifSxib29sZWFuOntjb2xvcjpcImhzbCgzNTAsIDQwJSwgNzAlKVwifSxudW1iZXI6e2NvbG9yOlwiaHNsKDM1MCwgNDAlLCA3MCUpXCJ9LGNvbnN0YW50Ontjb2xvcjpcImhzbCgzNTAsIDQwJSwgNzAlKVwifSxzeW1ib2w6e2NvbG9yOlwiaHNsKDM1MCwgNDAlLCA3MCUpXCJ9LHNlbGVjdG9yOntjb2xvcjpcImhzbCg3NSwgNzAlLCA2MCUpXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiaHNsKDc1LCA3MCUsIDYwJSlcIn0sc3RyaW5nOntjb2xvcjpcImhzbCg3NSwgNzAlLCA2MCUpXCJ9LGNoYXI6e2NvbG9yOlwiaHNsKDc1LCA3MCUsIDYwJSlcIn0sYnVpbHRpbjp7Y29sb3I6XCJoc2woNzUsIDcwJSwgNjAlKVwifSxpbnNlcnRlZDp7Y29sb3I6XCJoc2woNzUsIDcwJSwgNjAlKVwifSxvcGVyYXRvcjp7Y29sb3I6XCJoc2woNDAsIDkwJSwgNjAlKVwifSxlbnRpdHk6e2NvbG9yOlwiaHNsKDQwLCA5MCUsIDYwJSlcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCJoc2woNDAsIDkwJSwgNjAlKVwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcImhzbCg0MCwgOTAlLCA2MCUpXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCJoc2woNDAsIDkwJSwgNjAlKVwifSx2YXJpYWJsZTp7Y29sb3I6XCJoc2woNDAsIDkwJSwgNjAlKVwifSxhdHJ1bGU6e2NvbG9yOlwiaHNsKDM1MCwgNDAlLCA3MCUpXCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcImhzbCgzNTAsIDQwJSwgNzAlKVwifSxrZXl3b3JkOntjb2xvcjpcImhzbCgzNTAsIDQwJSwgNzAlKVwifSxyZWdleDp7Y29sb3I6XCIjZTkwXCJ9LGltcG9ydGFudDp7Y29sb3I6XCIjZTkwXCIsZm9udFdlaWdodDpcImJvbGRcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn0sZGVsZXRlZDp7Y29sb3I6XCJyZWRcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsYmFja2dyb3VuZDpcImJsYWNrXCIsY29sb3I6XCJ3aGl0ZVwiLGJveFNoYWRvdzpcIi0uM2VtIDAgMCAuM2VtIGJsYWNrLCAuM2VtIDAgMCAuM2VtIGJsYWNrXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Zm9udEZhbWlseTpcIkNvbnNvbGFzLCBNb25hY28sICdBbmRhbGUgTW9ubycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZVwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLHBhZGRpbmc6XCIuNGVtIC44ZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIixiYWNrZ3JvdW5kOid1cmwoXFwnZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsPHN2ZyUyMHZlcnNpb24lM0RcIjEuMVwiJTIweG1sbnMlM0RcImh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2Z1wiJTIwd2lkdGglM0RcIjEwMFwiJTIwaGVpZ2h0JTNEXCIxMDBcIiUyMGZpbGwlM0RcInJnYmEoMCUyQzAlMkMwJTJDLjIpXCI+JTBEJTBBPHBvbHlnb24lMjBwb2ludHMlM0RcIjAlMkM1MCUyMDUwJTJDMCUyMDAlMkMwXCIlMjAlMkY+JTBEJTBBPHBvbHlnb24lMjBwb2ludHMlM0RcIjAlMkMxMDAlMjA1MCUyQzEwMCUyMDEwMCUyQzUwJTIwMTAwJTJDMFwiJTIwJTJGPiUwRCUwQTwlMkZzdmc+XFwnKScsYmFja2dyb3VuZFNpemU6XCIxZW0gMWVtXCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e3BhZGRpbmc6XCIuMmVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwiLGJveFNoYWRvdzpcIm5vbmVcIix3aGl0ZVNwYWNlOlwibm9ybWFsXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiI2FhYVwifSxwcm9sb2c6e2NvbG9yOlwiI2FhYVwifSxkb2N0eXBlOntjb2xvcjpcIiNhYWFcIn0sY2RhdGE6e2NvbG9yOlwiI2FhYVwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjOTk5XCJ9LFwiLm5hbWVzcGFjZVwiOntPcGFjaXR5OlwiLjdcIn0scHJvcGVydHk6e2NvbG9yOlwiIzBjZlwifSx0YWc6e2NvbG9yOlwiIzBjZlwifSxib29sZWFuOntjb2xvcjpcIiMwY2ZcIn0sbnVtYmVyOntjb2xvcjpcIiMwY2ZcIn0sY29uc3RhbnQ6e2NvbG9yOlwiIzBjZlwifSxzeW1ib2w6e2NvbG9yOlwiIzBjZlwifSxzZWxlY3Rvcjp7Y29sb3I6XCJ5ZWxsb3dcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCJ5ZWxsb3dcIn0sc3RyaW5nOntjb2xvcjpcInllbGxvd1wifSxjaGFyOntjb2xvcjpcInllbGxvd1wifSxidWlsdGluOntjb2xvcjpcInllbGxvd1wifSxvcGVyYXRvcjp7Y29sb3I6XCJ5ZWxsb3dncmVlblwifSxlbnRpdHk6e2NvbG9yOlwieWVsbG93Z3JlZW5cIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCJ5ZWxsb3dncmVlblwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcInllbGxvd2dyZWVuXCJ9LFwiLnRva2UudmFyaWFibGVcIjp7Y29sb3I6XCJ5ZWxsb3dncmVlblwifSxpbnNlcnRlZDp7Y29sb3I6XCJ5ZWxsb3dncmVlblwifSxhdHJ1bGU6e2NvbG9yOlwiZGVlcHBpbmtcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiZGVlcHBpbmtcIn0sa2V5d29yZDp7Y29sb3I6XCJkZWVwcGlua1wifSxyZWdleDp7Y29sb3I6XCJvcmFuZ2VcIn0saW1wb3J0YW50Ontjb2xvcjpcIm9yYW5nZVwiLGZvbnRXZWlnaHQ6XCJib2xkXCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9LGRlbGV0ZWQ6e2NvbG9yOlwicmVkXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjZjhmOGYyXCIsYmFja2dyb3VuZDpcIm5vbmVcIix0ZXh0U2hhZG93OlwiMCAxcHggcmdiYSgwLCAwLCAwLCAwLjMpXCIsZm9udEZhbWlseTpcIkNvbnNvbGFzLCBNb25hY28sICdBbmRhbGUgTW9ubycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZVwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiI2Y4ZjhmMlwiLGJhY2tncm91bmQ6XCIjMjcyODIyXCIsdGV4dFNoYWRvdzpcIjAgMXB4IHJnYmEoMCwgMCwgMCwgMC4zKVwiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCIsYm9yZGVyUmFkaXVzOlwiMC4zZW1cIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7YmFja2dyb3VuZDpcIiMyNzI4MjJcIixwYWRkaW5nOlwiLjFlbVwiLGJvcmRlclJhZGl1czpcIi4zZW1cIix3aGl0ZVNwYWNlOlwibm9ybWFsXCJ9LGNvbW1lbnQ6e2NvbG9yOlwic2xhdGVncmF5XCJ9LHByb2xvZzp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0sZG9jdHlwZTp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0sY2RhdGE6e2NvbG9yOlwic2xhdGVncmF5XCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiNmOGY4ZjJcIn0sXCIubmFtZXNwYWNlXCI6e09wYWNpdHk6XCIuN1wifSxwcm9wZXJ0eTp7Y29sb3I6XCIjZjkyNjcyXCJ9LHRhZzp7Y29sb3I6XCIjZjkyNjcyXCJ9LGNvbnN0YW50Ontjb2xvcjpcIiNmOTI2NzJcIn0sc3ltYm9sOntjb2xvcjpcIiNmOTI2NzJcIn0sZGVsZXRlZDp7Y29sb3I6XCIjZjkyNjcyXCJ9LGJvb2xlYW46e2NvbG9yOlwiI2FlODFmZlwifSxudW1iZXI6e2NvbG9yOlwiI2FlODFmZlwifSxzZWxlY3Rvcjp7Y29sb3I6XCIjYTZlMjJlXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiI2E2ZTIyZVwifSxzdHJpbmc6e2NvbG9yOlwiI2E2ZTIyZVwifSxjaGFyOntjb2xvcjpcIiNhNmUyMmVcIn0sYnVpbHRpbjp7Y29sb3I6XCIjYTZlMjJlXCJ9LGluc2VydGVkOntjb2xvcjpcIiNhNmUyMmVcIn0sb3BlcmF0b3I6e2NvbG9yOlwiI2Y4ZjhmMlwifSxlbnRpdHk6e2NvbG9yOlwiI2Y4ZjhmMlwiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiNmOGY4ZjJcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZjhmOGYyXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZjhmOGYyXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiNmOGY4ZjJcIn0sYXRydWxlOntjb2xvcjpcIiNlNmRiNzRcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiI2U2ZGI3NFwifSxmdW5jdGlvbjp7Y29sb3I6XCIjZTZkYjc0XCJ9LGtleXdvcmQ6e2NvbG9yOlwiIzY2ZDllZlwifSxyZWdleDp7Y29sb3I6XCIjZmQ5NzFmXCJ9LGltcG9ydGFudDp7Y29sb3I6XCIjZmQ5NzFmXCIsZm9udFdlaWdodDpcImJvbGRcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiM2NTdiODNcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjNjU3YjgzXCIsZm9udEZhbWlseTpcIkNvbnNvbGFzLCBNb25hY28sICdBbmRhbGUgTW9ubycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZVwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLHBhZGRpbmc6XCIxZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIixib3JkZXJSYWRpdXM6XCIwLjNlbVwiLGJhY2tncm91bmRDb2xvcjpcIiNmZGY2ZTNcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiMwNzM2NDJcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjMDczNjQyXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiIzA3MzY0MlwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjMDczNjQyXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiIzA3MzY0MlwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjMDczNjQyXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiMwNzM2NDJcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiMwNzM2NDJcIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7YmFja2dyb3VuZENvbG9yOlwiI2ZkZjZlM1wiLHBhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwifSxjb21tZW50Ontjb2xvcjpcIiM5M2ExYTFcIn0scHJvbG9nOntjb2xvcjpcIiM5M2ExYTFcIn0sZG9jdHlwZTp7Y29sb3I6XCIjOTNhMWExXCJ9LGNkYXRhOntjb2xvcjpcIiM5M2ExYTFcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiIzU4NmU3NVwifSxcIi5uYW1lc3BhY2VcIjp7T3BhY2l0eTpcIi43XCJ9LHByb3BlcnR5Ontjb2xvcjpcIiMyNjhiZDJcIn0sdGFnOntjb2xvcjpcIiMyNjhiZDJcIn0sYm9vbGVhbjp7Y29sb3I6XCIjMjY4YmQyXCJ9LG51bWJlcjp7Y29sb3I6XCIjMjY4YmQyXCJ9LGNvbnN0YW50Ontjb2xvcjpcIiMyNjhiZDJcIn0sc3ltYm9sOntjb2xvcjpcIiMyNjhiZDJcIn0sZGVsZXRlZDp7Y29sb3I6XCIjMjY4YmQyXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiMyYWExOThcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjMmFhMTk4XCJ9LHN0cmluZzp7Y29sb3I6XCIjMmFhMTk4XCJ9LGNoYXI6e2NvbG9yOlwiIzJhYTE5OFwifSxidWlsdGluOntjb2xvcjpcIiMyYWExOThcIn0sdXJsOntjb2xvcjpcIiMyYWExOThcIn0saW5zZXJ0ZWQ6e2NvbG9yOlwiIzJhYTE5OFwifSxlbnRpdHk6e2NvbG9yOlwiIzY1N2I4M1wiLGJhY2tncm91bmQ6XCIjZWVlOGQ1XCIsY3Vyc29yOlwiaGVscFwifSxhdHJ1bGU6e2NvbG9yOlwiIzg1OTkwMFwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjODU5OTAwXCJ9LGtleXdvcmQ6e2NvbG9yOlwiIzg1OTkwMFwifSxmdW5jdGlvbjp7Y29sb3I6XCIjYjU4OTAwXCJ9LHJlZ2V4Ontjb2xvcjpcIiNjYjRiMTZcIn0saW1wb3J0YW50Ontjb2xvcjpcIiNjYjRiMTZcIixmb250V2VpZ2h0OlwiYm9sZFwifSx2YXJpYWJsZTp7Y29sb3I6XCIjY2I0YjE2XCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjY2NjXCIsYmFja2dyb3VuZDpcIm5vbmVcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjY2NjXCIsYmFja2dyb3VuZDpcIiMyZDJkMmRcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntiYWNrZ3JvdW5kOlwiIzJkMmQyZFwiLHBhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwiLHdoaXRlU3BhY2U6XCJub3JtYWxcIn0sY29tbWVudDp7Y29sb3I6XCIjOTk5XCJ9LFwiYmxvY2stY29tbWVudFwiOntjb2xvcjpcIiM5OTlcIn0scHJvbG9nOntjb2xvcjpcIiM5OTlcIn0sZG9jdHlwZTp7Y29sb3I6XCIjOTk5XCJ9LGNkYXRhOntjb2xvcjpcIiM5OTlcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiI2NjY1wifSx0YWc6e2NvbG9yOlwiI2UyNzc3YVwifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiNlMjc3N2FcIn0sbmFtZXNwYWNlOntjb2xvcjpcIiNlMjc3N2FcIn0sZGVsZXRlZDp7Y29sb3I6XCIjZTI3NzdhXCJ9LFwiZnVuY3Rpb24tbmFtZVwiOntjb2xvcjpcIiM2MTk2Y2NcIn0sYm9vbGVhbjp7Y29sb3I6XCIjZjA4ZDQ5XCJ9LG51bWJlcjp7Y29sb3I6XCIjZjA4ZDQ5XCJ9LGZ1bmN0aW9uOntjb2xvcjpcIiNmMDhkNDlcIn0scHJvcGVydHk6e2NvbG9yOlwiI2Y4YzU1NVwifSxcImNsYXNzLW5hbWVcIjp7Y29sb3I6XCIjZjhjNTU1XCJ9LGNvbnN0YW50Ontjb2xvcjpcIiNmOGM1NTVcIn0sc3ltYm9sOntjb2xvcjpcIiNmOGM1NTVcIn0sc2VsZWN0b3I6e2NvbG9yOlwiI2NjOTljZFwifSxpbXBvcnRhbnQ6e2NvbG9yOlwiI2NjOTljZFwiLGZvbnRXZWlnaHQ6XCJib2xkXCJ9LGF0cnVsZTp7Y29sb3I6XCIjY2M5OWNkXCJ9LGtleXdvcmQ6e2NvbG9yOlwiI2NjOTljZFwifSxidWlsdGluOntjb2xvcjpcIiNjYzk5Y2RcIn0sc3RyaW5nOntjb2xvcjpcIiM3ZWM2OTlcIn0sY2hhcjp7Y29sb3I6XCIjN2VjNjk5XCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiM3ZWM2OTlcIn0scmVnZXg6e2NvbG9yOlwiIzdlYzY5OVwifSx2YXJpYWJsZTp7Y29sb3I6XCIjN2VjNjk5XCJ9LG9wZXJhdG9yOntjb2xvcjpcIiM2N2NkY2NcIn0sZW50aXR5Ontjb2xvcjpcIiM2N2NkY2NcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCIjNjdjZGNjXCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9LGluc2VydGVkOntjb2xvcjpcImdyZWVuXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCJ3aGl0ZVwiLGJhY2tncm91bmQ6XCJub25lXCIsZm9udEZhbWlseTpcIkNvbnNvbGFzLCBNb25hY28sICdBbmRhbGUgTW9ubycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZVwiLHRleHRBbGlnbjpcImxlZnRcIix0ZXh0U2hhZG93OlwiMCAtLjFlbSAuMmVtIGJsYWNrXCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIndoaXRlXCIsYmFja2dyb3VuZDpcImhzbCgwLCAwJSwgOCUpXCIsZm9udEZhbWlseTpcIkNvbnNvbGFzLCBNb25hY28sICdBbmRhbGUgTW9ubycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZVwiLHRleHRBbGlnbjpcImxlZnRcIix0ZXh0U2hhZG93OlwiMCAtLjFlbSAuMmVtIGJsYWNrXCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixib3JkZXJSYWRpdXM6XCIuNWVtXCIsYm9yZGVyOlwiLjNlbSBzb2xpZCBoc2woMCwgMCUsIDMzJSlcIixib3hTaGFkb3c6XCIxcHggMXB4IC41ZW0gYmxhY2sgaW5zZXRcIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIixwYWRkaW5nOlwiMWVtXCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2JhY2tncm91bmQ6XCJoc2woMCwgMCUsIDglKVwiLGJvcmRlclJhZGl1czpcIi4zZW1cIixib3JkZXI6XCIuMTNlbSBzb2xpZCBoc2woMCwgMCUsIDMzJSlcIixib3hTaGFkb3c6XCIxcHggMXB4IC4zZW0gLS4xZW0gYmxhY2sgaW5zZXRcIixwYWRkaW5nOlwiLjE1ZW0gLjJlbSAuMDVlbVwiLHdoaXRlU3BhY2U6XCJub3JtYWxcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDkzJSwgMC4xNSlcIix0ZXh0U2hhZG93Olwibm9uZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDkzJSwgMC4xNSlcIix0ZXh0U2hhZG93Olwibm9uZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiaHNsYSgwLCAwJSwgOTMlLCAwLjE1KVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiaHNsYSgwLCAwJSwgOTMlLCAwLjE1KVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDkzJSwgMC4xNSlcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCA5MyUsIDAuMTUpXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiaHNsYSgwLCAwJSwgOTMlLCAwLjE1KVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCA5MyUsIDAuMTUpXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiaHNsKDAsIDAlLCA0NyUpXCJ9LHByb2xvZzp7Y29sb3I6XCJoc2woMCwgMCUsIDQ3JSlcIn0sZG9jdHlwZTp7Y29sb3I6XCJoc2woMCwgMCUsIDQ3JSlcIn0sY2RhdGE6e2NvbG9yOlwiaHNsKDAsIDAlLCA0NyUpXCJ9LHB1bmN0dWF0aW9uOntPcGFjaXR5OlwiLjdcIn0sXCIubmFtZXNwYWNlXCI6e09wYWNpdHk6XCIuN1wifSx0YWc6e2NvbG9yOlwiaHNsKDE0LCA1OCUsIDU1JSlcIn0sYm9vbGVhbjp7Y29sb3I6XCJoc2woMTQsIDU4JSwgNTUlKVwifSxudW1iZXI6e2NvbG9yOlwiaHNsKDE0LCA1OCUsIDU1JSlcIn0sZGVsZXRlZDp7Y29sb3I6XCJoc2woMTQsIDU4JSwgNTUlKVwifSxrZXl3b3JkOntjb2xvcjpcImhzbCg1MywgODklLCA3OSUpXCJ9LHByb3BlcnR5Ontjb2xvcjpcImhzbCg1MywgODklLCA3OSUpXCJ9LHNlbGVjdG9yOntjb2xvcjpcImhzbCg1MywgODklLCA3OSUpXCJ9LGNvbnN0YW50Ontjb2xvcjpcImhzbCg1MywgODklLCA3OSUpXCJ9LHN5bWJvbDp7Y29sb3I6XCJoc2woNTMsIDg5JSwgNzklKVwifSxidWlsdGluOntjb2xvcjpcImhzbCg1MywgODklLCA3OSUpXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiaHNsKDc2LCAyMSUsIDUyJSlcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiaHNsKDc2LCAyMSUsIDUyJSlcIn0sc3RyaW5nOntjb2xvcjpcImhzbCg3NiwgMjElLCA1MiUpXCJ9LGNoYXI6e2NvbG9yOlwiaHNsKDc2LCAyMSUsIDUyJSlcIn0sb3BlcmF0b3I6e2NvbG9yOlwiaHNsKDc2LCAyMSUsIDUyJSlcIn0sZW50aXR5Ontjb2xvcjpcImhzbCg3NiwgMjElLCA1MiUpXCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiaHNsKDc2LCAyMSUsIDUyJSlcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCJoc2woNzYsIDIxJSwgNTIlKVwifSxcIi5zdHlsZSAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiaHNsKDc2LCAyMSUsIDUyJSlcIn0sdmFyaWFibGU6e2NvbG9yOlwiaHNsKDc2LCAyMSUsIDUyJSlcIn0saW5zZXJ0ZWQ6e2NvbG9yOlwiaHNsKDc2LCAyMSUsIDUyJSlcIn0sYXRydWxlOntjb2xvcjpcImhzbCgyMTgsIDIyJSwgNTUlKVwifSxyZWdleDp7Y29sb3I6XCJoc2woNDIsIDc1JSwgNjUlKVwifSxpbXBvcnRhbnQ6e2NvbG9yOlwiaHNsKDQyLCA3NSUsIDY1JSlcIixmb250V2VpZ2h0OlwiYm9sZFwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifSxcInByZVtkYXRhLWxpbmVdXCI6e3BhZGRpbmc6XCIxZW0gMCAxZW0gM2VtXCIscG9zaXRpb246XCJyZWxhdGl2ZVwifSxcIi5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLnRhZ1wiOntjb2xvcjpcImhzbCgzMywgMzMlLCA1MiUpXCJ9LFwiLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4uYXR0ci1uYW1lXCI6e2NvbG9yOlwiaHNsKDMzLCAzMyUsIDUyJSlcIn0sXCIubGFuZ3VhZ2UtbWFya3VwIC50b2tlbi5wdW5jdHVhdGlvblwiOntjb2xvcjpcImhzbCgzMywgMzMlLCA1MiUpXCJ9LFwiXCI6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIix6SW5kZXg6XCIxXCJ9LFwiLmxpbmUtaGlnaGxpZ2h0XCI6e2JhY2tncm91bmQ6XCJsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIGhzbGEoMCwgMCUsIDMzJSwgLjEpIDcwJSwgaHNsYSgwLCAwJSwgMzMlLCAwKSlcIixib3JkZXJCb3R0b206XCIxcHggZGFzaGVkIGhzbCgwLCAwJSwgMzMlKVwiLGJvcmRlclRvcDpcIjFweCBkYXNoZWQgaHNsKDAsIDAlLCAzMyUpXCIsbGVmdDpcIjBcIixsaW5lSGVpZ2h0OlwiaW5oZXJpdFwiLG1hcmdpblRvcDpcIjAuNzVlbVwiLHBhZGRpbmc6XCJpbmhlcml0IDBcIixwb2ludGVyRXZlbnRzOlwibm9uZVwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIixyaWdodDpcIjBcIix3aGl0ZVNwYWNlOlwicHJlXCIsekluZGV4OlwiMFwifSxcIi5saW5lLWhpZ2hsaWdodDpiZWZvcmVcIjp7YmFja2dyb3VuZENvbG9yOlwiaHNsKDIxNSwgMTUlLCA1OSUpXCIsYm9yZGVyUmFkaXVzOlwiOTk5cHhcIixib3hTaGFkb3c6XCIwIDFweCB3aGl0ZVwiLGNvbG9yOlwiaHNsKDI0LCAyMCUsIDk1JSlcIixjb250ZW50OlwiYXR0cihkYXRhLXN0YXJ0KVwiLGZvbnQ6XCJib2xkIDY1JS8xLjUgc2Fucy1zZXJpZlwiLGxlZnQ6XCIuNmVtXCIsbWluV2lkdGg6XCIxZW1cIixwYWRkaW5nOlwiMCAuNWVtXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLHRleHRBbGlnbjpcImNlbnRlclwiLHRleHRTaGFkb3c6XCJub25lXCIsdG9wOlwiLjRlbVwiLHZlcnRpY2FsQWxpZ246XCIuM2VtXCJ9LFwiLmxpbmUtaGlnaGxpZ2h0W2RhdGEtZW5kXTphZnRlclwiOntiYWNrZ3JvdW5kQ29sb3I6XCJoc2woMjE1LCAxNSUsIDU5JSlcIixib3JkZXJSYWRpdXM6XCI5OTlweFwiLGJveFNoYWRvdzpcIjAgMXB4IHdoaXRlXCIsY29sb3I6XCJoc2woMjQsIDIwJSwgOTUlKVwiLGNvbnRlbnQ6XCJhdHRyKGRhdGEtZW5kKVwiLGZvbnQ6XCJib2xkIDY1JS8xLjUgc2Fucy1zZXJpZlwiLGxlZnQ6XCIuNmVtXCIsbWluV2lkdGg6XCIxZW1cIixwYWRkaW5nOlwiMCAuNWVtXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLHRleHRBbGlnbjpcImNlbnRlclwiLHRleHRTaGFkb3c6XCJub25lXCIsdG9wOlwiYXV0b1wiLHZlcnRpY2FsQWxpZ246XCIuM2VtXCIsYm90dG9tOlwiLjRlbVwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiYmxhY2tcIixiYWNrZ3JvdW5kOlwibm9uZVwiLHRleHRTaGFkb3c6XCIwIDFweCB3aGl0ZVwiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcImJsYWNrXCIsYmFja2dyb3VuZDpcIiNmNWYyZjBcIix0ZXh0U2hhZG93OlwiMCAxcHggd2hpdGVcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7YmFja2dyb3VuZDpcIiNmNWYyZjBcIixwYWRkaW5nOlwiLjFlbVwiLGJvcmRlclJhZGl1czpcIi4zZW1cIix3aGl0ZVNwYWNlOlwibm9ybWFsXCJ9LGNvbW1lbnQ6e2NvbG9yOlwic2xhdGVncmF5XCJ9LHByb2xvZzp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0sZG9jdHlwZTp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0sY2RhdGE6e2NvbG9yOlwic2xhdGVncmF5XCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiM5OTlcIn0sXCIubmFtZXNwYWNlXCI6e09wYWNpdHk6XCIuN1wifSxwcm9wZXJ0eTp7Y29sb3I6XCIjOTA1XCJ9LHRhZzp7Y29sb3I6XCIjOTA1XCJ9LGJvb2xlYW46e2NvbG9yOlwiIzkwNVwifSxudW1iZXI6e2NvbG9yOlwiIzkwNVwifSxjb25zdGFudDp7Y29sb3I6XCIjOTA1XCJ9LHN5bWJvbDp7Y29sb3I6XCIjOTA1XCJ9LGRlbGV0ZWQ6e2NvbG9yOlwiIzkwNVwifSxzZWxlY3Rvcjp7Y29sb3I6XCIjNjkwXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiIzY5MFwifSxzdHJpbmc6e2NvbG9yOlwiIzY5MFwifSxjaGFyOntjb2xvcjpcIiM2OTBcIn0sYnVpbHRpbjp7Y29sb3I6XCIjNjkwXCJ9LGluc2VydGVkOntjb2xvcjpcIiM2OTBcIn0sb3BlcmF0b3I6e2NvbG9yOlwiIzlhNmUzYVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCAxMDAlLCAuNSlcIn0sZW50aXR5Ontjb2xvcjpcIiM5YTZlM2FcIixiYWNrZ3JvdW5kOlwiaHNsYSgwLCAwJSwgMTAwJSwgLjUpXCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiIzlhNmUzYVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCAxMDAlLCAuNSlcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjOWE2ZTNhXCIsYmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwifSxcIi5zdHlsZSAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiIzlhNmUzYVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCAxMDAlLCAuNSlcIn0sYXRydWxlOntjb2xvcjpcIiMwN2FcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiIzA3YVwifSxrZXl3b3JkOntjb2xvcjpcIiMwN2FcIn0sZnVuY3Rpb246e2NvbG9yOlwiI0RENEE2OFwifSxcImNsYXNzLW5hbWVcIjp7Y29sb3I6XCIjREQ0QTY4XCJ9LHJlZ2V4Ontjb2xvcjpcIiNlOTBcIn0saW1wb3J0YW50Ontjb2xvcjpcIiNlOTBcIixmb250V2VpZ2h0OlwiYm9sZFwifSx2YXJpYWJsZTp7Y29sb3I6XCIjZTkwXCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjYzVjOGM2XCIsdGV4dFNoYWRvdzpcIjAgMXB4IHJnYmEoMCwgMCwgMCwgMC4zKVwiLGZvbnRGYW1pbHk6XCJJbmNvbnNvbGF0YSwgTW9uYWNvLCBDb25zb2xhcywgJ0NvdXJpZXIgTmV3JywgQ291cmllciwgbW9ub3NwYWNlXCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiI2M1YzhjNlwiLHRleHRTaGFkb3c6XCIwIDFweCByZ2JhKDAsIDAsIDAsIDAuMylcIixmb250RmFtaWx5OlwiSW5jb25zb2xhdGEsIE1vbmFjbywgQ29uc29sYXMsICdDb3VyaWVyIE5ldycsIENvdXJpZXIsIG1vbm9zcGFjZVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCIsYm9yZGVyUmFkaXVzOlwiMC4zZW1cIixiYWNrZ3JvdW5kOlwiIzFkMWYyMVwifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntiYWNrZ3JvdW5kOlwiIzFkMWYyMVwiLHBhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwifSxjb21tZW50Ontjb2xvcjpcIiM3QzdDN0NcIn0scHJvbG9nOntjb2xvcjpcIiM3QzdDN0NcIn0sZG9jdHlwZTp7Y29sb3I6XCIjN0M3QzdDXCJ9LGNkYXRhOntjb2xvcjpcIiM3QzdDN0NcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiI2M1YzhjNlwifSxcIi5uYW1lc3BhY2VcIjp7T3BhY2l0eTpcIi43XCJ9LHByb3BlcnR5Ontjb2xvcjpcIiM5NkNCRkVcIn0sa2V5d29yZDp7Y29sb3I6XCIjOTZDQkZFXCJ9LHRhZzp7Y29sb3I6XCIjOTZDQkZFXCJ9LFwiY2xhc3MtbmFtZVwiOntjb2xvcjpcIiNGRkZGQjZcIix0ZXh0RGVjb3JhdGlvbjpcInVuZGVybGluZVwifSxib29sZWFuOntjb2xvcjpcIiM5OUNDOTlcIn0sY29uc3RhbnQ6e2NvbG9yOlwiIzk5Q0M5OVwifSxzeW1ib2w6e2NvbG9yOlwiI2Y5MjY3MlwifSxkZWxldGVkOntjb2xvcjpcIiNmOTI2NzJcIn0sbnVtYmVyOntjb2xvcjpcIiNGRjczRkRcIn0sc2VsZWN0b3I6e2NvbG9yOlwiI0E4RkY2MFwifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiNBOEZGNjBcIn0sc3RyaW5nOntjb2xvcjpcIiNBOEZGNjBcIn0sY2hhcjp7Y29sb3I6XCIjQThGRjYwXCJ9LGJ1aWx0aW46e2NvbG9yOlwiI0E4RkY2MFwifSxpbnNlcnRlZDp7Y29sb3I6XCIjQThGRjYwXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiNDNkM1RkVcIn0sb3BlcmF0b3I6e2NvbG9yOlwiI0VERURFRFwifSxlbnRpdHk6e2NvbG9yOlwiI0ZGRkZCNlwiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiM5NkNCRkVcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjODdDMzhBXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjODdDMzhBXCJ9LGF0cnVsZTp7Y29sb3I6XCIjRjlFRTk4XCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiNGOUVFOThcIn0sZnVuY3Rpb246e2NvbG9yOlwiI0RBRDA4NVwifSxyZWdleDp7Y29sb3I6XCIjRTlDMDYyXCJ9LGltcG9ydGFudDp7Y29sb3I6XCIjZmQ5NzFmXCIsZm9udFdlaWdodDpcImJvbGRcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OidDb25zb2xhcywgTWVubG8sIE1vbmFjbywgXCJBbmRhbGUgTW9ubyBXVFwiLCBcIkFuZGFsZSBNb25vXCIsIFwiTHVjaWRhIENvbnNvbGVcIiwgXCJMdWNpZGEgU2FucyBUeXBld3JpdGVyXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIk5pbWJ1cyBNb25vIExcIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTRweFwiLGxpbmVIZWlnaHQ6XCIxLjM3NVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLGJhY2tncm91bmQ6XCIjZjVmN2ZmXCIsY29sb3I6XCIjNWU2Njg3XCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Zm9udEZhbWlseTonQ29uc29sYXMsIE1lbmxvLCBNb25hY28sIFwiQW5kYWxlIE1vbm8gV1RcIiwgXCJBbmRhbGUgTW9ub1wiLCBcIkx1Y2lkYSBDb25zb2xlXCIsIFwiTHVjaWRhIFNhbnMgVHlwZXdyaXRlclwiLCBcIkRlamFWdSBTYW5zIE1vbm9cIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJOaW1idXMgTW9ubyBMXCIsIFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE0cHhcIixsaW5lSGVpZ2h0OlwiMS4zNzVcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2Y1ZjdmZlwiLGNvbG9yOlwiIzVlNjY4N1wiLHBhZGRpbmc6XCIxZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2RmZTJmMVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2RmZTJmMVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2RmZTJmMVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNkZmUyZjFcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNkZmUyZjFcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZGZlMmYxXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2RmZTJmMVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZGZlMmYxXCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e3BhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwifSxjb21tZW50Ontjb2xvcjpcIiM4OThlYTRcIn0scHJvbG9nOntjb2xvcjpcIiM4OThlYTRcIn0sZG9jdHlwZTp7Y29sb3I6XCIjODk4ZWE0XCJ9LGNkYXRhOntjb2xvcjpcIiM4OThlYTRcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiIzVlNjY4N1wifSxuYW1lc3BhY2U6e09wYWNpdHk6XCIuN1wifSxvcGVyYXRvcjp7Y29sb3I6XCIjYzc2YjI5XCJ9LGJvb2xlYW46e2NvbG9yOlwiI2M3NmIyOVwifSxudW1iZXI6e2NvbG9yOlwiI2M3NmIyOVwifSxwcm9wZXJ0eTp7Y29sb3I6XCIjYzA4YjMwXCJ9LHRhZzp7Y29sb3I6XCIjM2Q4ZmQxXCJ9LHN0cmluZzp7Y29sb3I6XCIjMjJhMmM5XCJ9LHNlbGVjdG9yOntjb2xvcjpcIiM2Njc5Y2NcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjYzc2YjI5XCJ9LGVudGl0eTp7Y29sb3I6XCIjMjJhMmM5XCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiIzIyYTJjOVwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiMyMmEyYzlcIn0sXCIuc3R5bGUgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiMyMmEyYzlcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiI2FjOTczOVwifSxrZXl3b3JkOntjb2xvcjpcIiNhYzk3MzlcIn0sY29udHJvbDp7Y29sb3I6XCIjYWM5NzM5XCJ9LGRpcmVjdGl2ZTp7Y29sb3I6XCIjYWM5NzM5XCJ9LHVuaXQ6e2NvbG9yOlwiI2FjOTczOVwifSxzdGF0ZW1lbnQ6e2NvbG9yOlwiIzIyYTJjOVwifSxyZWdleDp7Y29sb3I6XCIjMjJhMmM5XCJ9LGF0cnVsZTp7Y29sb3I6XCIjMjJhMmM5XCJ9LHBsYWNlaG9sZGVyOntjb2xvcjpcIiMzZDhmZDFcIn0sdmFyaWFibGU6e2NvbG9yOlwiIzNkOGZkMVwifSxkZWxldGVkOnt0ZXh0RGVjb3JhdGlvbjpcImxpbmUtdGhyb3VnaFwifSxpbnNlcnRlZDp7Ym9yZGVyQm90dG9tOlwiMXB4IGRvdHRlZCAjMjAyNzQ2XCIsdGV4dERlY29yYXRpb246XCJub25lXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9LGltcG9ydGFudDp7Zm9udFdlaWdodDpcImJvbGRcIixjb2xvcjpcIiNjOTQ5MjJcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0sXCJwcmUgPiBjb2RlLmhpZ2hsaWdodFwiOntPdXRsaW5lOlwiMC40ZW0gc29saWQgI2M5NDkyMlwiLE91dGxpbmVPZmZzZXQ6XCIuNGVtXCJ9LFwiLmxpbmUtbnVtYmVycyAubGluZS1udW1iZXJzLXJvd3NcIjp7Ym9yZGVyUmlnaHRDb2xvcjpcIiNkZmUyZjFcIn0sXCIubGluZS1udW1iZXJzLXJvd3MgPiBzcGFuOmJlZm9yZVwiOntjb2xvcjpcIiM5NzlkYjRcIn0sXCIubGluZS1oaWdobGlnaHRcIjp7YmFja2dyb3VuZDpcImxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgxMDcsIDExNSwgMTQ4LCAwLjIpIDcwJSwgcmdiYSgxMDcsIDExNSwgMTQ4LCAwKSlcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiNmZmZcIix0ZXh0U2hhZG93OlwiMCAxcHggMXB4ICMwMDBcIixmb250RmFtaWx5OidNZW5sbywgTW9uYWNvLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZScsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNFwiLGJhY2tncm91bmQ6XCJub25lXCIsYm9yZGVyOlwiMFwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjZmZmXCIsdGV4dFNoYWRvdzpcIjAgMXB4IDFweCAjMDAwXCIsZm9udEZhbWlseTonTWVubG8sIE1vbmFjbywgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2UnLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkV3JhcDpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjRcIixiYWNrZ3JvdW5kOlwiIzIyMlwiLGJvcmRlcjpcIjBcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLHBhZGRpbmc6XCIxNXB4XCIsbWFyZ2luOlwiMWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIixNb3pCb3JkZXJSYWRpdXM6XCI4cHhcIixXZWJraXRCb3JkZXJSYWRpdXM6XCI4cHhcIixib3JkZXJSYWRpdXM6XCI4cHhcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gY29kZSc6e2Zsb2F0OlwibGVmdFwiLHBhZGRpbmc6XCIwIDE1cHggMCAwXCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2JhY2tncm91bmQ6XCIjMjIyXCIscGFkZGluZzpcIjVweCAxMHB4XCIsbGluZUhlaWdodDpcIjFcIixNb3pCb3JkZXJSYWRpdXM6XCIzcHhcIixXZWJraXRCb3JkZXJSYWRpdXM6XCIzcHhcIixib3JkZXJSYWRpdXM6XCIzcHhcIn0sY29tbWVudDp7Y29sb3I6XCIjNzk3OTc5XCJ9LHByb2xvZzp7Y29sb3I6XCIjNzk3OTc5XCJ9LGRvY3R5cGU6e2NvbG9yOlwiIzc5Nzk3OVwifSxjZGF0YTp7Y29sb3I6XCIjNzk3OTc5XCJ9LHNlbGVjdG9yOntjb2xvcjpcIiNmZmZcIn0sb3BlcmF0b3I6e2NvbG9yOlwiI2ZmZlwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjZmZmXCJ9LG5hbWVzcGFjZTp7T3BhY2l0eTpcIi43XCJ9LHRhZzp7Y29sb3I6XCIjZmZkODkzXCJ9LGJvb2xlYW46e2NvbG9yOlwiI2ZmZDg5M1wifSxhdHJ1bGU6e2NvbG9yOlwiI0IwQzk3NVwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjQjBDOTc1XCJ9LGhleDp7Y29sb3I6XCIjQjBDOTc1XCJ9LHN0cmluZzp7Y29sb3I6XCIjQjBDOTc1XCJ9LHByb3BlcnR5Ontjb2xvcjpcIiNjMjc2MjhcIn0sZW50aXR5Ontjb2xvcjpcIiNjMjc2MjhcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCIjYzI3NjI4XCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiI2MyNzYyOFwifSxrZXl3b3JkOntjb2xvcjpcIiNjMjc2MjhcIn0scmVnZXg6e2NvbG9yOlwiIzlCNzFDNlwifSxmdW5jdGlvbjp7Y29sb3I6XCIjZTVhNjM4XCJ9LGNvbnN0YW50Ontjb2xvcjpcIiNlNWE2MzhcIn0sdmFyaWFibGU6e2NvbG9yOlwiI2ZkZmJhOFwifSxudW1iZXI6e2NvbG9yOlwiIzg3OTlCMFwifSxpbXBvcnRhbnQ6e2NvbG9yOlwiI0U0NTczNFwifSxkZWxpbWluYXRvcjp7Y29sb3I6XCIjRTQ1NzM0XCJ9LFwicHJlW2RhdGEtbGluZV1cIjp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHBhZGRpbmc6XCIxZW0gMCAxZW0gM2VtXCJ9LFwiLmxpbmUtaGlnaGxpZ2h0XCI6e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixsZWZ0OlwiMFwiLHJpZ2h0OlwiMFwiLG1hcmdpblRvcDpcIjFlbVwiLGJhY2tncm91bmQ6XCJyZ2JhKDI1NSwyNTUsMjU1LC4yKVwiLHBvaW50ZXJFdmVudHM6XCJub25lXCIsbGluZUhlaWdodDpcImluaGVyaXRcIix3aGl0ZVNwYWNlOlwicHJlXCJ9LFwiLmxpbmUtaGlnaGxpZ2h0OmJlZm9yZVwiOntjb250ZW50OlwiYXR0cihkYXRhLXN0YXJ0KVwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6XCIuM2VtXCIsbGVmdDpcIi42ZW1cIixtaW5XaWR0aDpcIjFlbVwiLHBhZGRpbmc6XCIwIC41ZW1cIixiYWNrZ3JvdW5kQ29sb3I6XCJyZ2JhKDI1NSwyNTUsMjU1LC4zKVwiLGNvbG9yOlwiI2ZmZlwiLGZvbnQ6XCJib2xkIDY1JS8xLjUgc2Fucy1zZXJpZlwiLHRleHRBbGlnbjpcImNlbnRlclwiLE1vekJvcmRlclJhZGl1czpcIjhweFwiLFdlYmtpdEJvcmRlclJhZGl1czpcIjhweFwiLGJvcmRlclJhZGl1czpcIjhweFwiLHRleHRTaGFkb3c6XCJub25lXCJ9LFwiLmxpbmUtaGlnaGxpZ2h0W2RhdGEtZW5kXTphZnRlclwiOntjb250ZW50OlwiYXR0cihkYXRhLWVuZClcIixwb3NpdGlvbjpcImFic29sdXRlXCIsdG9wOlwiYXV0b1wiLGxlZnQ6XCIuNmVtXCIsbWluV2lkdGg6XCIxZW1cIixwYWRkaW5nOlwiMCAuNWVtXCIsYmFja2dyb3VuZENvbG9yOlwicmdiYSgyNTUsMjU1LDI1NSwuMylcIixjb2xvcjpcIiNmZmZcIixmb250OlwiYm9sZCA2NSUvMS41IHNhbnMtc2VyaWZcIix0ZXh0QWxpZ246XCJjZW50ZXJcIixNb3pCb3JkZXJSYWRpdXM6XCI4cHhcIixXZWJraXRCb3JkZXJSYWRpdXM6XCI4cHhcIixib3JkZXJSYWRpdXM6XCI4cHhcIix0ZXh0U2hhZG93Olwibm9uZVwiLGJvdHRvbTpcIi40ZW1cIn0sXCIubGluZS1udW1iZXJzLXJvd3NcIjp7bWFyZ2luOlwiMFwifSxcIi5saW5lLW51bWJlcnMtcm93cyBzcGFuXCI6e3BhZGRpbmdSaWdodDpcIjEwcHhcIixib3JkZXJSaWdodDpcIjNweCAjZDlkMzM2IHNvbGlkXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjYTliN2M2XCIsZm9udEZhbWlseTpcIkNvbnNvbGFzLCBNb25hY28sICdBbmRhbGUgTW9ubycsIG1vbm9zcGFjZVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiNhOWI3YzZcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgbW9ub3NwYWNlXCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLHBhZGRpbmc6XCIxZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIixiYWNrZ3JvdW5kOlwiIzJiMmIyYlwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOntjb2xvcjpcImluaGVyaXRcIixiYWNrZ3JvdW5kOlwicmdiYSgzMyw2NiwxMzEsLjg1KVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7Y29sb3I6XCJpbmhlcml0XCIsYmFja2dyb3VuZDpcInJnYmEoMzMsNjYsMTMxLC44NSlcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e2NvbG9yOlwiaW5oZXJpdFwiLGJhY2tncm91bmQ6XCJyZ2JhKDMzLDY2LDEzMSwuODUpXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7Y29sb3I6XCJpbmhlcml0XCIsYmFja2dyb3VuZDpcInJnYmEoMzMsNjYsMTMxLC44NSlcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e2NvbG9yOlwiaW5oZXJpdFwiLGJhY2tncm91bmQ6XCJyZ2JhKDMzLDY2LDEzMSwuODUpXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7Y29sb3I6XCJpbmhlcml0XCIsYmFja2dyb3VuZDpcInJnYmEoMzMsNjYsMTMxLC44NSlcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOntjb2xvcjpcImluaGVyaXRcIixiYWNrZ3JvdW5kOlwicmdiYSgzMyw2NiwxMzEsLjg1KVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOntjb2xvcjpcImluaGVyaXRcIixiYWNrZ3JvdW5kOlwicmdiYSgzMyw2NiwxMzEsLjg1KVwifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntiYWNrZ3JvdW5kOlwiIzJiMmIyYlwiLHBhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwifSxjb21tZW50Ontjb2xvcjpcIiM4MDgwODBcIn0scHJvbG9nOntjb2xvcjpcIiM4MDgwODBcIn0sY2RhdGE6e2NvbG9yOlwiIzgwODA4MFwifSxkZWxpbWl0ZXI6e2NvbG9yOlwiI2NjNzgzMlwifSxib29sZWFuOntjb2xvcjpcIiNjYzc4MzJcIn0sa2V5d29yZDp7Y29sb3I6XCIjY2M3ODMyXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiNjYzc4MzJcIn0saW1wb3J0YW50Ontjb2xvcjpcIiNjYzc4MzJcIn0sYXRydWxlOntjb2xvcjpcIiNjYzc4MzJcIn0sb3BlcmF0b3I6e2NvbG9yOlwiI2E5YjdjNlwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjYTliN2M2XCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiI2E5YjdjNlwifSx0YWc6e2NvbG9yOlwiI2U4YmY2YVwifSxcInRhZyAucHVuY3R1YXRpb25cIjp7Y29sb3I6XCIjZThiZjZhXCJ9LGRvY3R5cGU6e2NvbG9yOlwiI2U4YmY2YVwifSxidWlsdGluOntjb2xvcjpcIiNlOGJmNmFcIn0sZW50aXR5Ontjb2xvcjpcIiM2ODk3YmJcIn0sbnVtYmVyOntjb2xvcjpcIiM2ODk3YmJcIn0sc3ltYm9sOntjb2xvcjpcIiM2ODk3YmJcIn0scHJvcGVydHk6e2NvbG9yOlwiIzk4NzZhYVwifSxjb25zdGFudDp7Y29sb3I6XCIjOTg3NmFhXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiM5ODc2YWFcIn0sc3RyaW5nOntjb2xvcjpcIiM2YTg3NTlcIn0sY2hhcjp7Y29sb3I6XCIjNmE4NzU5XCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiNhNWMyNjFcIn0sXCJhdHRyLXZhbHVlIC5wdW5jdHVhdGlvblwiOntjb2xvcjpcIiNhNWMyNjFcIn0sXCJhdHRyLXZhbHVlIC5wdW5jdHVhdGlvbjpmaXJzdC1jaGlsZFwiOntjb2xvcjpcIiNhOWI3YzZcIn0sdXJsOntjb2xvcjpcIiMyODdiZGVcIix0ZXh0RGVjb3JhdGlvbjpcInVuZGVybGluZVwifSxmdW5jdGlvbjp7Y29sb3I6XCIjZmZjNjZkXCJ9LHJlZ2V4OntiYWNrZ3JvdW5kOlwiIzM2NDEzNVwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifSxpbnNlcnRlZDp7YmFja2dyb3VuZDpcIiMyOTQ0MzZcIn0sZGVsZXRlZDp7YmFja2dyb3VuZDpcIiM0ODRhNGFcIn0sXCJjb2RlLmxhbmd1YWdlLWNzcyAudG9rZW4ucHJvcGVydHlcIjp7Y29sb3I6XCIjYTliN2M2XCJ9LFwiY29kZS5sYW5ndWFnZS1jc3MgLnRva2VuLnByb3BlcnR5ICsgLnRva2VuLnB1bmN0dWF0aW9uXCI6e2NvbG9yOlwiI2E5YjdjNlwifSxcImNvZGUubGFuZ3VhZ2UtY3NzIC50b2tlbi5pZFwiOntjb2xvcjpcIiNmZmM2NmRcIn0sXCJjb2RlLmxhbmd1YWdlLWNzcyAudG9rZW4uc2VsZWN0b3IgPiAudG9rZW4uY2xhc3NcIjp7Y29sb3I6XCIjZmZjNjZkXCJ9LFwiY29kZS5sYW5ndWFnZS1jc3MgLnRva2VuLnNlbGVjdG9yID4gLnRva2VuLmF0dHJpYnV0ZVwiOntjb2xvcjpcIiNmZmM2NmRcIn0sXCJjb2RlLmxhbmd1YWdlLWNzcyAudG9rZW4uc2VsZWN0b3IgPiAudG9rZW4ucHNldWRvLWNsYXNzXCI6e2NvbG9yOlwiI2ZmYzY2ZFwifSxcImNvZGUubGFuZ3VhZ2UtY3NzIC50b2tlbi5zZWxlY3RvciA+IC50b2tlbi5wc2V1ZG8tZWxlbWVudFwiOntjb2xvcjpcIiNmZmM2NmRcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OidDb25zb2xhcywgTWVubG8sIE1vbmFjbywgXCJBbmRhbGUgTW9ubyBXVFwiLCBcIkFuZGFsZSBNb25vXCIsIFwiTHVjaWRhIENvbnNvbGVcIiwgXCJMdWNpZGEgU2FucyBUeXBld3JpdGVyXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIk5pbWJ1cyBNb25vIExcIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTRweFwiLGxpbmVIZWlnaHQ6XCIxLjM3NVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLGJhY2tncm91bmQ6XCIjMmEyNzM0XCIsY29sb3I6XCIjOWE4NmZkXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Zm9udEZhbWlseTonQ29uc29sYXMsIE1lbmxvLCBNb25hY28sIFwiQW5kYWxlIE1vbm8gV1RcIiwgXCJBbmRhbGUgTW9ub1wiLCBcIkx1Y2lkYSBDb25zb2xlXCIsIFwiTHVjaWRhIFNhbnMgVHlwZXdyaXRlclwiLCBcIkRlamFWdSBTYW5zIE1vbm9cIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJOaW1idXMgTW9ubyBMXCIsIFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE0cHhcIixsaW5lSGVpZ2h0OlwiMS4zNzVcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzJhMjczNFwiLGNvbG9yOlwiIzlhODZmZFwiLHBhZGRpbmc6XCIxZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzZhNTFlNlwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzZhNTFlNlwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzZhNTFlNlwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM2YTUxZTZcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM2YTUxZTZcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmE1MWU2XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzZhNTFlNlwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmE1MWU2XCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e3BhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwifSxjb21tZW50Ontjb2xvcjpcIiM2YzY3ODNcIn0scHJvbG9nOntjb2xvcjpcIiM2YzY3ODNcIn0sZG9jdHlwZTp7Y29sb3I6XCIjNmM2NzgzXCJ9LGNkYXRhOntjb2xvcjpcIiM2YzY3ODNcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiIzZjNjc4M1wifSxuYW1lc3BhY2U6e09wYWNpdHk6XCIuN1wifSx0YWc6e2NvbG9yOlwiI2UwOTE0MlwifSxvcGVyYXRvcjp7Y29sb3I6XCIjZTA5MTQyXCJ9LG51bWJlcjp7Y29sb3I6XCIjZTA5MTQyXCJ9LHByb3BlcnR5Ontjb2xvcjpcIiM5YTg2ZmRcIn0sZnVuY3Rpb246e2NvbG9yOlwiIzlhODZmZFwifSxcInRhZy1pZFwiOntjb2xvcjpcIiNlZWViZmZcIn0sc2VsZWN0b3I6e2NvbG9yOlwiI2VlZWJmZlwifSxcImF0cnVsZS1pZFwiOntjb2xvcjpcIiNlZWViZmZcIn0sXCJjb2RlLmxhbmd1YWdlLWphdmFzY3JpcHRcIjp7Y29sb3I6XCIjYzRiOWZlXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiI2M0YjlmZVwifSxcImNvZGUubGFuZ3VhZ2UtY3NzXCI6e2NvbG9yOlwiI2ZmY2M5OVwifSxcImNvZGUubGFuZ3VhZ2Utc2Nzc1wiOntjb2xvcjpcIiNmZmNjOTlcIn0sYm9vbGVhbjp7Y29sb3I6XCIjZmZjYzk5XCJ9LHN0cmluZzp7Y29sb3I6XCIjZmZjYzk5XCJ9LGVudGl0eTp7Y29sb3I6XCIjZmZjYzk5XCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiI2ZmY2M5OVwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNmZmNjOTlcIn0sXCIubGFuZ3VhZ2Utc2NzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiI2ZmY2M5OVwifSxcIi5zdHlsZSAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiI2ZmY2M5OVwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjZmZjYzk5XCJ9LGtleXdvcmQ6e2NvbG9yOlwiI2ZmY2M5OVwifSxjb250cm9sOntjb2xvcjpcIiNmZmNjOTlcIn0sZGlyZWN0aXZlOntjb2xvcjpcIiNmZmNjOTlcIn0sdW5pdDp7Y29sb3I6XCIjZmZjYzk5XCJ9LHN0YXRlbWVudDp7Y29sb3I6XCIjZmZjYzk5XCJ9LHJlZ2V4Ontjb2xvcjpcIiNmZmNjOTlcIn0sYXRydWxlOntjb2xvcjpcIiNmZmNjOTlcIn0scGxhY2Vob2xkZXI6e2NvbG9yOlwiI2ZmY2M5OVwifSx2YXJpYWJsZTp7Y29sb3I6XCIjZmZjYzk5XCJ9LGRlbGV0ZWQ6e3RleHREZWNvcmF0aW9uOlwibGluZS10aHJvdWdoXCJ9LGluc2VydGVkOntib3JkZXJCb3R0b206XCIxcHggZG90dGVkICNlZWViZmZcIix0ZXh0RGVjb3JhdGlvbjpcIm5vbmVcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn0saW1wb3J0YW50Ontmb250V2VpZ2h0OlwiYm9sZFwiLGNvbG9yOlwiI2M0YjlmZVwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxcInByZSA+IGNvZGUuaGlnaGxpZ2h0XCI6e091dGxpbmU6XCIuNGVtIHNvbGlkICM4YTc1ZjVcIixPdXRsaW5lT2Zmc2V0OlwiLjRlbVwifSxcIi5saW5lLW51bWJlcnMgLmxpbmUtbnVtYmVycy1yb3dzXCI6e2JvcmRlclJpZ2h0Q29sb3I6XCIjMmMyOTM3XCJ9LFwiLmxpbmUtbnVtYmVycy1yb3dzID4gc3BhbjpiZWZvcmVcIjp7Y29sb3I6XCIjM2MzOTQ5XCJ9LFwiLmxpbmUtaGlnaGxpZ2h0XCI6e2JhY2tncm91bmQ6XCJsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjI0LCAxNDUsIDY2LCAwLjIpIDcwJSwgcmdiYSgyMjQsIDE0NSwgNjYsIDApKVwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2ZvbnRGYW1pbHk6J0NvbnNvbGFzLCBNZW5sbywgTW9uYWNvLCBcIkFuZGFsZSBNb25vIFdUXCIsIFwiQW5kYWxlIE1vbm9cIiwgXCJMdWNpZGEgQ29uc29sZVwiLCBcIkx1Y2lkYSBTYW5zIFR5cGV3cml0ZXJcIiwgXCJEZWphVnUgU2FucyBNb25vXCIsIFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiTmltYnVzIE1vbm8gTFwiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNHB4XCIsbGluZUhlaWdodDpcIjEuMzc1XCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsYmFja2dyb3VuZDpcIiMzMjJkMjlcIixjb2xvcjpcIiM4ODc4NmRcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OidDb25zb2xhcywgTWVubG8sIE1vbmFjbywgXCJBbmRhbGUgTW9ubyBXVFwiLCBcIkFuZGFsZSBNb25vXCIsIFwiTHVjaWRhIENvbnNvbGVcIiwgXCJMdWNpZGEgU2FucyBUeXBld3JpdGVyXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIk5pbWJ1cyBNb25vIExcIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTRweFwiLGxpbmVIZWlnaHQ6XCIxLjM3NVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLGJhY2tncm91bmQ6XCIjMzIyZDI5XCIsY29sb3I6XCIjODg3ODZkXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmY1ODQ5XCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmY1ODQ5XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmY1ODQ5XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzZmNTg0OVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzZmNTg0OVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM2ZjU4NDlcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNmY1ODQ5XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM2ZjU4NDlcIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7cGFkZGluZzpcIi4xZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiIzZhNWY1OFwifSxwcm9sb2c6e2NvbG9yOlwiIzZhNWY1OFwifSxkb2N0eXBlOntjb2xvcjpcIiM2YTVmNThcIn0sY2RhdGE6e2NvbG9yOlwiIzZhNWY1OFwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjNmE1ZjU4XCJ9LG5hbWVzcGFjZTp7T3BhY2l0eTpcIi43XCJ9LHRhZzp7Y29sb3I6XCIjYmZhMDVhXCJ9LG9wZXJhdG9yOntjb2xvcjpcIiNiZmEwNWFcIn0sbnVtYmVyOntjb2xvcjpcIiNiZmEwNWFcIn0scHJvcGVydHk6e2NvbG9yOlwiIzg4Nzg2ZFwifSxmdW5jdGlvbjp7Y29sb3I6XCIjODg3ODZkXCJ9LFwidGFnLWlkXCI6e2NvbG9yOlwiI2ZmZjNlYlwifSxzZWxlY3Rvcjp7Y29sb3I6XCIjZmZmM2ViXCJ9LFwiYXRydWxlLWlkXCI6e2NvbG9yOlwiI2ZmZjNlYlwifSxcImNvZGUubGFuZ3VhZ2UtamF2YXNjcmlwdFwiOntjb2xvcjpcIiNhNDg3NzRcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjYTQ4Nzc0XCJ9LFwiY29kZS5sYW5ndWFnZS1jc3NcIjp7Y29sb3I6XCIjZmNjNDQwXCJ9LFwiY29kZS5sYW5ndWFnZS1zY3NzXCI6e2NvbG9yOlwiI2ZjYzQ0MFwifSxib29sZWFuOntjb2xvcjpcIiNmY2M0NDBcIn0sc3RyaW5nOntjb2xvcjpcIiNmY2M0NDBcIn0sZW50aXR5Ontjb2xvcjpcIiNmY2M0NDBcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCIjZmNjNDQwXCJ9LFwiLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiI2ZjYzQ0MFwifSxcIi5sYW5ndWFnZS1zY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZmNjNDQwXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZmNjNDQwXCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiNmY2M0NDBcIn0sa2V5d29yZDp7Y29sb3I6XCIjZmNjNDQwXCJ9LGNvbnRyb2w6e2NvbG9yOlwiI2ZjYzQ0MFwifSxkaXJlY3RpdmU6e2NvbG9yOlwiI2ZjYzQ0MFwifSx1bml0Ontjb2xvcjpcIiNmY2M0NDBcIn0sc3RhdGVtZW50Ontjb2xvcjpcIiNmY2M0NDBcIn0scmVnZXg6e2NvbG9yOlwiI2ZjYzQ0MFwifSxhdHJ1bGU6e2NvbG9yOlwiI2ZjYzQ0MFwifSxwbGFjZWhvbGRlcjp7Y29sb3I6XCIjZmNjNDQwXCJ9LHZhcmlhYmxlOntjb2xvcjpcIiNmY2M0NDBcIn0sZGVsZXRlZDp7dGV4dERlY29yYXRpb246XCJsaW5lLXRocm91Z2hcIn0saW5zZXJ0ZWQ6e2JvcmRlckJvdHRvbTpcIjFweCBkb3R0ZWQgI2ZmZjNlYlwiLHRleHREZWNvcmF0aW9uOlwibm9uZVwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifSxpbXBvcnRhbnQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCIsY29sb3I6XCIjYTQ4Nzc0XCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LFwicHJlID4gY29kZS5oaWdobGlnaHRcIjp7T3V0bGluZTpcIi40ZW0gc29saWQgIzgxNmQ1ZlwiLE91dGxpbmVPZmZzZXQ6XCIuNGVtXCJ9LFwiLmxpbmUtbnVtYmVycyAubGluZS1udW1iZXJzLXJvd3NcIjp7Ym9yZGVyUmlnaHRDb2xvcjpcIiMzNTMwMmJcIn0sXCIubGluZS1udW1iZXJzLXJvd3MgPiBzcGFuOmJlZm9yZVwiOntjb2xvcjpcIiM0NjQwM2RcIn0sXCIubGluZS1oaWdobGlnaHRcIjp7YmFja2dyb3VuZDpcImxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgxOTEsIDE2MCwgOTAsIDAuMikgNzAlLCByZ2JhKDE5MSwgMTYwLCA5MCwgMCkpXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Zm9udEZhbWlseTonQ29uc29sYXMsIE1lbmxvLCBNb25hY28sIFwiQW5kYWxlIE1vbm8gV1RcIiwgXCJBbmRhbGUgTW9ub1wiLCBcIkx1Y2lkYSBDb25zb2xlXCIsIFwiTHVjaWRhIFNhbnMgVHlwZXdyaXRlclwiLCBcIkRlamFWdSBTYW5zIE1vbm9cIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJOaW1idXMgTW9ubyBMXCIsIFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE0cHhcIixsaW5lSGVpZ2h0OlwiMS4zNzVcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzJhMmQyYVwiLGNvbG9yOlwiIzY4N2Q2OFwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2ZvbnRGYW1pbHk6J0NvbnNvbGFzLCBNZW5sbywgTW9uYWNvLCBcIkFuZGFsZSBNb25vIFdUXCIsIFwiQW5kYWxlIE1vbm9cIiwgXCJMdWNpZGEgQ29uc29sZVwiLCBcIkx1Y2lkYSBTYW5zIFR5cGV3cml0ZXJcIiwgXCJEZWphVnUgU2FucyBNb25vXCIsIFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiTmltYnVzIE1vbm8gTFwiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNHB4XCIsbGluZUhlaWdodDpcIjEuMzc1XCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsYmFja2dyb3VuZDpcIiMyYTJkMmFcIixjb2xvcjpcIiM2ODdkNjhcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM0MzU2NDNcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM0MzU2NDNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM0MzU2NDNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNDM1NjQzXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNDM1NjQzXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzQzNTY0M1wifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM0MzU2NDNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzQzNTY0M1wifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntwYWRkaW5nOlwiLjFlbVwiLGJvcmRlclJhZGl1czpcIi4zZW1cIn0sY29tbWVudDp7Y29sb3I6XCIjNTM1ZjUzXCJ9LHByb2xvZzp7Y29sb3I6XCIjNTM1ZjUzXCJ9LGRvY3R5cGU6e2NvbG9yOlwiIzUzNWY1M1wifSxjZGF0YTp7Y29sb3I6XCIjNTM1ZjUzXCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiM1MzVmNTNcIn0sbmFtZXNwYWNlOntPcGFjaXR5OlwiLjdcIn0sdGFnOntjb2xvcjpcIiNhMmIzNGRcIn0sb3BlcmF0b3I6e2NvbG9yOlwiI2EyYjM0ZFwifSxudW1iZXI6e2NvbG9yOlwiI2EyYjM0ZFwifSxwcm9wZXJ0eTp7Y29sb3I6XCIjNjg3ZDY4XCJ9LGZ1bmN0aW9uOntjb2xvcjpcIiM2ODdkNjhcIn0sXCJ0YWctaWRcIjp7Y29sb3I6XCIjZjBmZmYwXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiNmMGZmZjBcIn0sXCJhdHJ1bGUtaWRcIjp7Y29sb3I6XCIjZjBmZmYwXCJ9LFwiY29kZS5sYW5ndWFnZS1qYXZhc2NyaXB0XCI6e2NvbG9yOlwiI2IzZDZiM1wifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiNiM2Q2YjNcIn0sXCJjb2RlLmxhbmd1YWdlLWNzc1wiOntjb2xvcjpcIiNlNWZiNzlcIn0sXCJjb2RlLmxhbmd1YWdlLXNjc3NcIjp7Y29sb3I6XCIjZTVmYjc5XCJ9LGJvb2xlYW46e2NvbG9yOlwiI2U1ZmI3OVwifSxzdHJpbmc6e2NvbG9yOlwiI2U1ZmI3OVwifSxlbnRpdHk6e2NvbG9yOlwiI2U1ZmI3OVwiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiNlNWZiNzlcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZTVmYjc5XCJ9LFwiLmxhbmd1YWdlLXNjc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNlNWZiNzlcIn0sXCIuc3R5bGUgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNlNWZiNzlcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiI2U1ZmI3OVwifSxrZXl3b3JkOntjb2xvcjpcIiNlNWZiNzlcIn0sY29udHJvbDp7Y29sb3I6XCIjZTVmYjc5XCJ9LGRpcmVjdGl2ZTp7Y29sb3I6XCIjZTVmYjc5XCJ9LHVuaXQ6e2NvbG9yOlwiI2U1ZmI3OVwifSxzdGF0ZW1lbnQ6e2NvbG9yOlwiI2U1ZmI3OVwifSxyZWdleDp7Y29sb3I6XCIjZTVmYjc5XCJ9LGF0cnVsZTp7Y29sb3I6XCIjZTVmYjc5XCJ9LHBsYWNlaG9sZGVyOntjb2xvcjpcIiNlNWZiNzlcIn0sdmFyaWFibGU6e2NvbG9yOlwiI2U1ZmI3OVwifSxkZWxldGVkOnt0ZXh0RGVjb3JhdGlvbjpcImxpbmUtdGhyb3VnaFwifSxpbnNlcnRlZDp7Ym9yZGVyQm90dG9tOlwiMXB4IGRvdHRlZCAjZjBmZmYwXCIsdGV4dERlY29yYXRpb246XCJub25lXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9LGltcG9ydGFudDp7Zm9udFdlaWdodDpcImJvbGRcIixjb2xvcjpcIiNiM2Q2YjNcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0sXCJwcmUgPiBjb2RlLmhpZ2hsaWdodFwiOntPdXRsaW5lOlwiLjRlbSBzb2xpZCAjNWM3MDVjXCIsT3V0bGluZU9mZnNldDpcIi40ZW1cIn0sXCIubGluZS1udW1iZXJzIC5saW5lLW51bWJlcnMtcm93c1wiOntib3JkZXJSaWdodENvbG9yOlwiIzJjMzAyY1wifSxcIi5saW5lLW51bWJlcnMtcm93cyA+IHNwYW46YmVmb3JlXCI6e2NvbG9yOlwiIzNiNDIzYlwifSxcIi5saW5lLWhpZ2hsaWdodFwiOntiYWNrZ3JvdW5kOlwibGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDE2MiwgMTc5LCA3NywgMC4yKSA3MCUsIHJnYmEoMTYyLCAxNzksIDc3LCAwKSlcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OidDb25zb2xhcywgTWVubG8sIE1vbmFjbywgXCJBbmRhbGUgTW9ubyBXVFwiLCBcIkFuZGFsZSBNb25vXCIsIFwiTHVjaWRhIENvbnNvbGVcIiwgXCJMdWNpZGEgU2FucyBUeXBld3JpdGVyXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIk5pbWJ1cyBNb25vIExcIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTRweFwiLGxpbmVIZWlnaHQ6XCIxLjM3NVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLGJhY2tncm91bmQ6XCIjZmFmOGY1XCIsY29sb3I6XCIjNzI4ZmNiXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Zm9udEZhbWlseTonQ29uc29sYXMsIE1lbmxvLCBNb25hY28sIFwiQW5kYWxlIE1vbm8gV1RcIiwgXCJBbmRhbGUgTW9ub1wiLCBcIkx1Y2lkYSBDb25zb2xlXCIsIFwiTHVjaWRhIFNhbnMgVHlwZXdyaXRlclwiLCBcIkRlamFWdSBTYW5zIE1vbm9cIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJOaW1idXMgTW9ubyBMXCIsIFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE0cHhcIixsaW5lSGVpZ2h0OlwiMS4zNzVcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2ZhZjhmNVwiLGNvbG9yOlwiIzcyOGZjYlwiLHBhZGRpbmc6XCIxZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2ZhZjhmNVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2ZhZjhmNVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2ZhZjhmNVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNmYWY4ZjVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNmYWY4ZjVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZmFmOGY1XCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2ZhZjhmNVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjZmFmOGY1XCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e3BhZGRpbmc6XCIuMWVtXCIsYm9yZGVyUmFkaXVzOlwiLjNlbVwifSxjb21tZW50Ontjb2xvcjpcIiNiNmFkOWFcIn0scHJvbG9nOntjb2xvcjpcIiNiNmFkOWFcIn0sZG9jdHlwZTp7Y29sb3I6XCIjYjZhZDlhXCJ9LGNkYXRhOntjb2xvcjpcIiNiNmFkOWFcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiI2I2YWQ5YVwifSxuYW1lc3BhY2U6e09wYWNpdHk6XCIuN1wifSx0YWc6e2NvbG9yOlwiIzA2MzI4OVwifSxvcGVyYXRvcjp7Y29sb3I6XCIjMDYzMjg5XCJ9LG51bWJlcjp7Y29sb3I6XCIjMDYzMjg5XCJ9LHByb3BlcnR5Ontjb2xvcjpcIiNiMjk3NjJcIn0sZnVuY3Rpb246e2NvbG9yOlwiI2IyOTc2MlwifSxcInRhZy1pZFwiOntjb2xvcjpcIiMyZDIwMDZcIn0sc2VsZWN0b3I6e2NvbG9yOlwiIzJkMjAwNlwifSxcImF0cnVsZS1pZFwiOntjb2xvcjpcIiMyZDIwMDZcIn0sXCJjb2RlLmxhbmd1YWdlLWphdmFzY3JpcHRcIjp7Y29sb3I6XCIjODk2NzI0XCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiIzg5NjcyNFwifSxcImNvZGUubGFuZ3VhZ2UtY3NzXCI6e2NvbG9yOlwiIzcyOGZjYlwifSxcImNvZGUubGFuZ3VhZ2Utc2Nzc1wiOntjb2xvcjpcIiM3MjhmY2JcIn0sYm9vbGVhbjp7Y29sb3I6XCIjNzI4ZmNiXCJ9LHN0cmluZzp7Y29sb3I6XCIjNzI4ZmNiXCJ9LGVudGl0eTp7Y29sb3I6XCIjNzI4ZmNiXCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiIzcyOGZjYlwifSxcIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiM3MjhmY2JcIn0sXCIubGFuZ3VhZ2Utc2NzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiIzcyOGZjYlwifSxcIi5zdHlsZSAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiIzcyOGZjYlwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjNzI4ZmNiXCJ9LGtleXdvcmQ6e2NvbG9yOlwiIzcyOGZjYlwifSxjb250cm9sOntjb2xvcjpcIiM3MjhmY2JcIn0sZGlyZWN0aXZlOntjb2xvcjpcIiM3MjhmY2JcIn0sdW5pdDp7Y29sb3I6XCIjNzI4ZmNiXCJ9LHN0YXRlbWVudDp7Y29sb3I6XCIjNzI4ZmNiXCJ9LHJlZ2V4Ontjb2xvcjpcIiM3MjhmY2JcIn0sYXRydWxlOntjb2xvcjpcIiM3MjhmY2JcIn0scGxhY2Vob2xkZXI6e2NvbG9yOlwiIzkzYWJkY1wifSx2YXJpYWJsZTp7Y29sb3I6XCIjOTNhYmRjXCJ9LGRlbGV0ZWQ6e3RleHREZWNvcmF0aW9uOlwibGluZS10aHJvdWdoXCJ9LGluc2VydGVkOntib3JkZXJCb3R0b206XCIxcHggZG90dGVkICMyZDIwMDZcIix0ZXh0RGVjb3JhdGlvbjpcIm5vbmVcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn0saW1wb3J0YW50Ontmb250V2VpZ2h0OlwiYm9sZFwiLGNvbG9yOlwiIzg5NjcyNFwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxcInByZSA+IGNvZGUuaGlnaGxpZ2h0XCI6e091dGxpbmU6XCIuNGVtIHNvbGlkICM4OTY3MjRcIixPdXRsaW5lT2Zmc2V0OlwiLjRlbVwifSxcIi5saW5lLW51bWJlcnMgLmxpbmUtbnVtYmVycy1yb3dzXCI6e2JvcmRlclJpZ2h0Q29sb3I6XCIjZWNlOGRlXCJ9LFwiLmxpbmUtbnVtYmVycy1yb3dzID4gc3BhbjpiZWZvcmVcIjp7Y29sb3I6XCIjY2RjNGIxXCJ9LFwiLmxpbmUtaGlnaGxpZ2h0XCI6e2JhY2tncm91bmQ6XCJsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoNDUsIDMyLCA2LCAwLjIpIDcwJSwgcmdiYSg0NSwgMzIsIDYsIDApKVwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2ZvbnRGYW1pbHk6J0NvbnNvbGFzLCBNZW5sbywgTW9uYWNvLCBcIkFuZGFsZSBNb25vIFdUXCIsIFwiQW5kYWxlIE1vbm9cIiwgXCJMdWNpZGEgQ29uc29sZVwiLCBcIkx1Y2lkYSBTYW5zIFR5cGV3cml0ZXJcIiwgXCJEZWphVnUgU2FucyBNb25vXCIsIFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiTmltYnVzIE1vbm8gTFwiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNHB4XCIsbGluZUhlaWdodDpcIjEuMzc1XCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsYmFja2dyb3VuZDpcIiMxZDI2MmZcIixjb2xvcjpcIiM1NzcxOGVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntmb250RmFtaWx5OidDb25zb2xhcywgTWVubG8sIE1vbmFjbywgXCJBbmRhbGUgTW9ubyBXVFwiLCBcIkFuZGFsZSBNb25vXCIsIFwiTHVjaWRhIENvbnNvbGVcIiwgXCJMdWNpZGEgU2FucyBUeXBld3JpdGVyXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIk5pbWJ1cyBNb25vIExcIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTRweFwiLGxpbmVIZWlnaHQ6XCIxLjM3NVwiLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLGJhY2tncm91bmQ6XCIjMWQyNjJmXCIsY29sb3I6XCIjNTc3MThlXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjMDA0YTllXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjMDA0YTllXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjMDA0YTllXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzAwNGE5ZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzAwNGE5ZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiMwMDRhOWVcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjMDA0YTllXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiMwMDRhOWVcIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7cGFkZGluZzpcIi4xZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiIzRhNWY3OFwifSxwcm9sb2c6e2NvbG9yOlwiIzRhNWY3OFwifSxkb2N0eXBlOntjb2xvcjpcIiM0YTVmNzhcIn0sY2RhdGE6e2NvbG9yOlwiIzRhNWY3OFwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjNGE1Zjc4XCJ9LG5hbWVzcGFjZTp7T3BhY2l0eTpcIi43XCJ9LHRhZzp7Y29sb3I6XCIjMGFhMzcwXCJ9LG9wZXJhdG9yOntjb2xvcjpcIiMwYWEzNzBcIn0sbnVtYmVyOntjb2xvcjpcIiMwYWEzNzBcIn0scHJvcGVydHk6e2NvbG9yOlwiIzU3NzE4ZVwifSxmdW5jdGlvbjp7Y29sb3I6XCIjNTc3MThlXCJ9LFwidGFnLWlkXCI6e2NvbG9yOlwiI2ViZjRmZlwifSxzZWxlY3Rvcjp7Y29sb3I6XCIjZWJmNGZmXCJ9LFwiYXRydWxlLWlkXCI6e2NvbG9yOlwiI2ViZjRmZlwifSxcImNvZGUubGFuZ3VhZ2UtamF2YXNjcmlwdFwiOntjb2xvcjpcIiM3ZWI2ZjZcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjN2ViNmY2XCJ9LFwiY29kZS5sYW5ndWFnZS1jc3NcIjp7Y29sb3I6XCIjNDdlYmI0XCJ9LFwiY29kZS5sYW5ndWFnZS1zY3NzXCI6e2NvbG9yOlwiIzQ3ZWJiNFwifSxib29sZWFuOntjb2xvcjpcIiM0N2ViYjRcIn0sc3RyaW5nOntjb2xvcjpcIiM0N2ViYjRcIn0sZW50aXR5Ontjb2xvcjpcIiM0N2ViYjRcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCIjNDdlYmI0XCJ9LFwiLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiIzQ3ZWJiNFwifSxcIi5sYW5ndWFnZS1zY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjNDdlYmI0XCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjNDdlYmI0XCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiM0N2ViYjRcIn0sa2V5d29yZDp7Y29sb3I6XCIjNDdlYmI0XCJ9LGNvbnRyb2w6e2NvbG9yOlwiIzQ3ZWJiNFwifSxkaXJlY3RpdmU6e2NvbG9yOlwiIzQ3ZWJiNFwifSx1bml0Ontjb2xvcjpcIiM0N2ViYjRcIn0sc3RhdGVtZW50Ontjb2xvcjpcIiM0N2ViYjRcIn0scmVnZXg6e2NvbG9yOlwiIzQ3ZWJiNFwifSxhdHJ1bGU6e2NvbG9yOlwiIzQ3ZWJiNFwifSxwbGFjZWhvbGRlcjp7Y29sb3I6XCIjNDdlYmI0XCJ9LHZhcmlhYmxlOntjb2xvcjpcIiM0N2ViYjRcIn0sZGVsZXRlZDp7dGV4dERlY29yYXRpb246XCJsaW5lLXRocm91Z2hcIn0saW5zZXJ0ZWQ6e2JvcmRlckJvdHRvbTpcIjFweCBkb3R0ZWQgI2ViZjRmZlwiLHRleHREZWNvcmF0aW9uOlwibm9uZVwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifSxpbXBvcnRhbnQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCIsY29sb3I6XCIjN2ViNmY2XCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LFwicHJlID4gY29kZS5oaWdobGlnaHRcIjp7T3V0bGluZTpcIi40ZW0gc29saWQgIzM0NjU5ZFwiLE91dGxpbmVPZmZzZXQ6XCIuNGVtXCJ9LFwiLmxpbmUtbnVtYmVycyAubGluZS1udW1iZXJzLXJvd3NcIjp7Ym9yZGVyUmlnaHRDb2xvcjpcIiMxZjI5MzJcIn0sXCIubGluZS1udW1iZXJzLXJvd3MgPiBzcGFuOmJlZm9yZVwiOntjb2xvcjpcIiMyYzM4NDdcIn0sXCIubGluZS1oaWdobGlnaHRcIjp7YmFja2dyb3VuZDpcImxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgxMCwgMTYzLCAxMTIsIDAuMikgNzAlLCByZ2JhKDEwLCAxNjMsIDExMiwgMCkpXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD17J2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Zm9udEZhbWlseTonQ29uc29sYXMsIE1lbmxvLCBNb25hY28sIFwiQW5kYWxlIE1vbm8gV1RcIiwgXCJBbmRhbGUgTW9ub1wiLCBcIkx1Y2lkYSBDb25zb2xlXCIsIFwiTHVjaWRhIFNhbnMgVHlwZXdyaXRlclwiLCBcIkRlamFWdSBTYW5zIE1vbm9cIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJOaW1idXMgTW9ubyBMXCIsIFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxmb250U2l6ZTpcIjE0cHhcIixsaW5lSGVpZ2h0OlwiMS4zNzVcIixkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzI0MjQyZVwiLGNvbG9yOlwiIzc2NzY5M1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2ZvbnRGYW1pbHk6J0NvbnNvbGFzLCBNZW5sbywgTW9uYWNvLCBcIkFuZGFsZSBNb25vIFdUXCIsIFwiQW5kYWxlIE1vbm9cIiwgXCJMdWNpZGEgQ29uc29sZVwiLCBcIkx1Y2lkYSBTYW5zIFR5cGV3cml0ZXJcIiwgXCJEZWphVnUgU2FucyBNb25vXCIsIFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiTmltYnVzIE1vbm8gTFwiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNHB4XCIsbGluZUhlaWdodDpcIjEuMzc1XCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsYmFja2dyb3VuZDpcIiMyNDI0MmVcIixjb2xvcjpcIiM3Njc2OTNcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM1MTUxZTZcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM1MTUxZTZcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM1MTUxZTZcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNTE1MWU2XCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjNTE1MWU2XCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzUxNTFlNlwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiM1MTUxZTZcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiIzUxNTFlNlwifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntwYWRkaW5nOlwiLjFlbVwiLGJvcmRlclJhZGl1czpcIi4zZW1cIn0sY29tbWVudDp7Y29sb3I6XCIjNWI1Yjc2XCJ9LHByb2xvZzp7Y29sb3I6XCIjNWI1Yjc2XCJ9LGRvY3R5cGU6e2NvbG9yOlwiIzViNWI3NlwifSxjZGF0YTp7Y29sb3I6XCIjNWI1Yjc2XCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiM1YjViNzZcIn0sbmFtZXNwYWNlOntPcGFjaXR5OlwiLjdcIn0sdGFnOntjb2xvcjpcIiNkZDY3MmNcIn0sb3BlcmF0b3I6e2NvbG9yOlwiI2RkNjcyY1wifSxudW1iZXI6e2NvbG9yOlwiI2RkNjcyY1wifSxwcm9wZXJ0eTp7Y29sb3I6XCIjNzY3NjkzXCJ9LGZ1bmN0aW9uOntjb2xvcjpcIiM3Njc2OTNcIn0sXCJ0YWctaWRcIjp7Y29sb3I6XCIjZWJlYmZmXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiNlYmViZmZcIn0sXCJhdHJ1bGUtaWRcIjp7Y29sb3I6XCIjZWJlYmZmXCJ9LFwiY29kZS5sYW5ndWFnZS1qYXZhc2NyaXB0XCI6e2NvbG9yOlwiI2FhYWFjYVwifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiNhYWFhY2FcIn0sXCJjb2RlLmxhbmd1YWdlLWNzc1wiOntjb2xvcjpcIiNmZThjNTJcIn0sXCJjb2RlLmxhbmd1YWdlLXNjc3NcIjp7Y29sb3I6XCIjZmU4YzUyXCJ9LGJvb2xlYW46e2NvbG9yOlwiI2ZlOGM1MlwifSxzdHJpbmc6e2NvbG9yOlwiI2ZlOGM1MlwifSxlbnRpdHk6e2NvbG9yOlwiI2ZlOGM1MlwiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiNmZThjNTJcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZmU4YzUyXCJ9LFwiLmxhbmd1YWdlLXNjc3MgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNmZThjNTJcIn0sXCIuc3R5bGUgLnRva2VuLnN0cmluZ1wiOntjb2xvcjpcIiNmZThjNTJcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiI2ZlOGM1MlwifSxrZXl3b3JkOntjb2xvcjpcIiNmZThjNTJcIn0sY29udHJvbDp7Y29sb3I6XCIjZmU4YzUyXCJ9LGRpcmVjdGl2ZTp7Y29sb3I6XCIjZmU4YzUyXCJ9LHVuaXQ6e2NvbG9yOlwiI2ZlOGM1MlwifSxzdGF0ZW1lbnQ6e2NvbG9yOlwiI2ZlOGM1MlwifSxyZWdleDp7Y29sb3I6XCIjZmU4YzUyXCJ9LGF0cnVsZTp7Y29sb3I6XCIjZmU4YzUyXCJ9LHBsYWNlaG9sZGVyOntjb2xvcjpcIiNmZThjNTJcIn0sdmFyaWFibGU6e2NvbG9yOlwiI2ZlOGM1MlwifSxkZWxldGVkOnt0ZXh0RGVjb3JhdGlvbjpcImxpbmUtdGhyb3VnaFwifSxpbnNlcnRlZDp7Ym9yZGVyQm90dG9tOlwiMXB4IGRvdHRlZCAjZWJlYmZmXCIsdGV4dERlY29yYXRpb246XCJub25lXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9LGltcG9ydGFudDp7Zm9udFdlaWdodDpcImJvbGRcIixjb2xvcjpcIiNhYWFhY2FcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0sXCJwcmUgPiBjb2RlLmhpZ2hsaWdodFwiOntPdXRsaW5lOlwiLjRlbSBzb2xpZCAjNzY3NmY0XCIsT3V0bGluZU9mZnNldDpcIi40ZW1cIn0sXCIubGluZS1udW1iZXJzIC5saW5lLW51bWJlcnMtcm93c1wiOntib3JkZXJSaWdodENvbG9yOlwiIzI2MjYzMVwifSxcIi5saW5lLW51bWJlcnMtcm93cyA+IHNwYW46YmVmb3JlXCI6e2NvbG9yOlwiIzM5Mzk0OVwifSxcIi5saW5lLWhpZ2hsaWdodFwiOntiYWNrZ3JvdW5kOlwibGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDIyMSwgMTAzLCA0NCwgMC4yKSA3MCUsIHJnYmEoMjIxLCAxMDMsIDQ0LCAwKSlcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXsnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcIiMzOTNBMzRcIixmb250RmFtaWx5OidcIkNvbnNvbGFzXCIsIFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxkaXJlY3Rpb246XCJsdHJcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsZm9udFNpemU6XCIwLjk1ZW1cIixsaW5lSGVpZ2h0OlwiMS4yZW1cIixNb3pUYWJTaXplOlwiNFwiLE9UYWJTaXplOlwiNFwiLHRhYlNpemU6XCI0XCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiIzM5M0EzNFwiLGZvbnRGYW1pbHk6J1wiQ29uc29sYXNcIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixmb250U2l6ZTpcIjAuOTVlbVwiLGxpbmVIZWlnaHQ6XCIxLjJlbVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wiLGJvcmRlcjpcIjFweCBzb2xpZCAjZGRkZGRkXCIsYmFja2dyb3VuZENvbG9yOlwid2hpdGVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06Oi1tb3otc2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjotbW96LXNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7cGFkZGluZzpcIi4yZW1cIixwYWRkaW5nVG9wOlwiMXB4XCIscGFkZGluZ0JvdHRvbTpcIjFweFwiLGJhY2tncm91bmQ6XCIjZjhmOGY4XCIsYm9yZGVyOlwiMXB4IHNvbGlkICNkZGRkZGRcIn0sY29tbWVudDp7Y29sb3I6XCIjOTk5OTg4XCIsZm9udFN0eWxlOlwiaXRhbGljXCJ9LHByb2xvZzp7Y29sb3I6XCIjOTk5OTg4XCIsZm9udFN0eWxlOlwiaXRhbGljXCJ9LGRvY3R5cGU6e2NvbG9yOlwiIzk5OTk4OFwiLGZvbnRTdHlsZTpcIml0YWxpY1wifSxjZGF0YTp7Y29sb3I6XCIjOTk5OTg4XCIsZm9udFN0eWxlOlwiaXRhbGljXCJ9LG5hbWVzcGFjZTp7T3BhY2l0eTpcIi43XCJ9LHN0cmluZzp7Y29sb3I6XCIjZTMxMTZjXCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiNlMzExNmNcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiIzM5M0EzNFwifSxvcGVyYXRvcjp7Y29sb3I6XCIjMzkzQTM0XCJ9LGVudGl0eTp7Y29sb3I6XCIjMzZhY2FhXCJ9LHVybDp7Y29sb3I6XCIjMzZhY2FhXCJ9LHN5bWJvbDp7Y29sb3I6XCIjMzZhY2FhXCJ9LG51bWJlcjp7Y29sb3I6XCIjMzZhY2FhXCJ9LGJvb2xlYW46e2NvbG9yOlwiIzM2YWNhYVwifSx2YXJpYWJsZTp7Y29sb3I6XCIjMzZhY2FhXCJ9LGNvbnN0YW50Ontjb2xvcjpcIiMzNmFjYWFcIn0scHJvcGVydHk6e2NvbG9yOlwiIzM2YWNhYVwifSxyZWdleDp7Y29sb3I6XCIjMzZhY2FhXCJ9LGluc2VydGVkOntjb2xvcjpcIiMzNmFjYWFcIn0sYXRydWxlOntjb2xvcjpcIiMwMGE0ZGJcIn0sa2V5d29yZDp7Y29sb3I6XCIjMDBhNGRiXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiIzAwYTRkYlwifSxcIi5sYW5ndWFnZS1hdXRvaG90a2V5IC50b2tlbi5zZWxlY3RvclwiOntjb2xvcjpcIiMwMGE0ZGJcIn0sZnVuY3Rpb246e2NvbG9yOlwiIzlhMDUwZlwiLGZvbnRXZWlnaHQ6XCJib2xkXCJ9LGRlbGV0ZWQ6e2NvbG9yOlwiIzlhMDUwZlwifSxcIi5sYW5ndWFnZS1hdXRvaG90a2V5IC50b2tlbi50YWdcIjp7Y29sb3I6XCIjOWEwNTBmXCJ9LHRhZzp7Y29sb3I6XCIjMDAwMDlmXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiMwMDAwOWZcIn0sXCIubGFuZ3VhZ2UtYXV0b2hvdGtleSAudG9rZW4ua2V5d29yZFwiOntjb2xvcjpcIiMwMDAwOWZcIn0saW1wb3J0YW50Ontmb250V2VpZ2h0OlwiYm9sZFwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiI2I5YjViOFwiLGZvbnRGYW1pbHk6J1wiRmlyYSBNb25vXCIsIE1lbmxvLCBNb25hY28sIFwiTHVjaWRhIENvbnNvbGVcIixcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNnB4XCIsbGluZUhlaWdodDpcIjEuMzc1XCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIix3aGl0ZVNwYWNlOlwicHJlLXdyYXBcIix3b3JkQnJlYWs6XCJicmVhay1hbGxcIix3b3JkV3JhcDpcImJyZWFrLXdvcmRcIixiYWNrZ3JvdW5kOlwiIzMyMjkzMVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiI2I5YjViOFwiLGZvbnRGYW1pbHk6J1wiRmlyYSBNb25vXCIsIE1lbmxvLCBNb25hY28sIFwiTHVjaWRhIENvbnNvbGVcIixcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNnB4XCIsbGluZUhlaWdodDpcIjEuMzc1XCIsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIix3aGl0ZVNwYWNlOlwicHJlLXdyYXBcIix3b3JkQnJlYWs6XCJicmVhay1hbGxcIix3b3JkV3JhcDpcImJyZWFrLXdvcmRcIixiYWNrZ3JvdW5kOlwiIzMyMjkzMVwiLHBhZGRpbmc6XCIxZW1cIixtYXJnaW46XCIuNWVtIDBcIixvdmVyZmxvdzpcImF1dG9cIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7cGFkZGluZzpcIi4xZW1cIixib3JkZXJSYWRpdXM6XCIuM2VtXCJ9LGNvbW1lbnQ6e2NvbG9yOlwiIzc5NzM3OVwifSxwcm9sb2c6e2NvbG9yOlwiIzc5NzM3OVwifSxkb2N0eXBlOntjb2xvcjpcIiM3OTczNzlcIn0sY2RhdGE6e2NvbG9yOlwiIzc5NzM3OVwifSxwdW5jdHVhdGlvbjp7Y29sb3I6XCIjYjliNWI4XCJ9LFwiLm5hbWVzcGFjZVwiOntPcGFjaXR5OlwiLjdcIn0sbnVsbDp7Y29sb3I6XCIjZmQ4YjE5XCJ9LG9wZXJhdG9yOntjb2xvcjpcIiNmZDhiMTlcIn0sYm9vbGVhbjp7Y29sb3I6XCIjZmQ4YjE5XCJ9LG51bWJlcjp7Y29sb3I6XCIjZmQ4YjE5XCJ9LHByb3BlcnR5Ontjb2xvcjpcIiNmZGNjNTlcIn0sdGFnOntjb2xvcjpcIiMxMjkwYmZcIn0sc3RyaW5nOntjb2xvcjpcIiMxNDliOTNcIn0sc2VsZWN0b3I6e2NvbG9yOlwiI2M4NWU3Y1wifSxcImF0dHItbmFtZVwiOntjb2xvcjpcIiNmZDhiMTlcIn0sZW50aXR5Ontjb2xvcjpcIiMxNDliOTNcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCIjMTQ5YjkzXCJ9LFwiLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiIzE0OWI5M1wifSxcIi5zdHlsZSAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiIzE0OWI5M1wifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjOGZjMTNlXCJ9LGtleXdvcmQ6e2NvbG9yOlwiIzhmYzEzZVwifSxjb250cm9sOntjb2xvcjpcIiM4ZmMxM2VcIn0sZGlyZWN0aXZlOntjb2xvcjpcIiM4ZmMxM2VcIn0sdW5pdDp7Y29sb3I6XCIjOGZjMTNlXCJ9LHN0YXRlbWVudDp7Y29sb3I6XCIjMTQ5YjkzXCJ9LHJlZ2V4Ontjb2xvcjpcIiMxNDliOTNcIn0sYXRydWxlOntjb2xvcjpcIiMxNDliOTNcIn0scGxhY2Vob2xkZXI6e2NvbG9yOlwiIzEyOTBiZlwifSx2YXJpYWJsZTp7Y29sb3I6XCIjMTI5MGJmXCJ9LGltcG9ydGFudDp7Y29sb3I6XCIjZGQ0NjRjXCIsZm9udFdlaWdodDpcImJvbGRcIn0sXCJwcmUgPiBjb2RlLmhpZ2hsaWdodFwiOntPdXRsaW5lOlwiLjRlbSBzb2xpZCByZWRcIixPdXRsaW5lT2Zmc2V0OlwiLjRlbVwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e01velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsd2hpdGVTcGFjZTpcInByZS13cmFwXCIsd29yZEJyZWFrOlwiYnJlYWstYWxsXCIsd29yZFdyYXA6XCJicmVhay13b3JkXCIsZm9udEZhbWlseTonTWVubG8sIE1vbmFjbywgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTVweFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixjb2xvcjpcIiNkY2NmOGZcIix0ZXh0U2hhZG93OlwiMFwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e01velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsd2hpdGVTcGFjZTpcInByZS13cmFwXCIsd29yZEJyZWFrOlwiYnJlYWstYWxsXCIsd29yZFdyYXA6XCJicmVhay13b3JkXCIsZm9udEZhbWlseTonTWVubG8sIE1vbmFjbywgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTVweFwiLGxpbmVIZWlnaHQ6XCIxLjVcIixjb2xvcjpcIiNEQ0NGOEZcIix0ZXh0U2hhZG93OlwiMFwiLGJvcmRlclJhZGl1czpcIjVweFwiLGJvcmRlcjpcIjFweCBzb2xpZCAjMDAwXCIsYmFja2dyb3VuZDpcIiMxODE5MTQgdXJsKCdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBZ0FBWkFCa0FBRC83QUFSUkhWamEza0FBUUFFQUFBQU1BQUEvKzRBRGtGa2IySmxBR1RBQUFBQUFmL2JBSVFBQ1FZR0JnY0dDUWNIQ1EwSUJ3Z05Ed3NKQ1FzUEVRNE9EdzRPRVJFTkRnNE9EZzBSRVJRVUZoUVVFUm9hSEJ3YUdpWW1KaVltS3lzckt5c3JLeXNyS3dFSkNBZ0pDZ2tNQ2dvTUR3d09EQThURGc0T0RoTVZEZzRQRGc0VkdoTVJFUkVSRXhvWEdoWVdGaG9YSFIwYUdoMGRKQ1FqSkNRckt5c3JLeXNyS3lzci84QUFFUWdBakFDTUF3RWlBQUlSQVFNUkFmL0VBRjRBQVFFQkFBQUFBQUFBQUFBQUFBQUFBQUFCQndFQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFJUUFBRURBd0lIQVFFQUFBQUFBQUFBQUFEd0FSRWhZYUV4a1VGUmNZR3h3ZEhoOFJFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvYUFBd0RBUUFDRVFNUkFEOEF5R0ZFakhhQlMyZkREczJ6a2hLbUJLa3RiN2ttK1p3d0NuWFBrTFZtQ1RNSXRqNkFYRnhSUzQ2NS9CVG5rQUp2a0xrSmUrN0FLS29pMkF0UlMyenVBV3NDYjVHT2xCTjhnS2ZtdUdIWjhNRnFJdGgzQUxtRm9Gd2J3S1d5QWxUQXAxN3VLcUJ2Z0JEOHNNNGZUamh2QWhremhhUmtCTUtCcmZzN2pHUElwenk3Z0ZyQXFuQzBDMGdCMEVXd0JEVzJjQlZRd20rUXRQcGEzd0JPM3NWdnN6Q25MQWhremdMNS9STGYxM2NMUWQ4L0FHbHUwQ2I1SFR4OUt1QUVpZUdKRWRjZWhTM2VSVHAyQVRkdDNDcEltK1F0WndBaFJPWEZlYjdzd3AvYWhhTTNrQkUvalNJVUJjL0FXcmdCTjh1TkZBbCtiN3NBWEZ4Rm4yWUxVVTVOczdnRlg4QzRpYitoTjhnRldYd0szYlpnbHhFSm0rZ0tkY2lMUHNGVi9UQ2xzZ0pVd0tKNUZWQTd0dklGcmZaaFZmR0pEY3NDS2FZZ0FxdjZZUmJFK1JXT1dCdHU3K0FMM3lSYWxYTHlLcUFJSWZrK3pBUmJEZ0Z5RXNuY1l3SnZsZ0ZSVytHRVdudElpMlAwQm9veUZ4Y05yOEVwMytBTkxiTU8rUXlodmJpcWRnQzBrVnZnVVVpTFlnQlMyUXRQYmlWSTEvc2dPbUc5dU8rWThEVys3alMyekFPbmo2TzJCbmR3dUlBVXRrZFJOOGdGb0szd3dYTVF5WndIVmJDbHN1TkxkNEUzeUFVUjZGVkRCUitCYWZRR3Q5M0xWTXhKVHY4QUJ0czRDVkxoY2ZZV3NDYjVrQzkvQkhkVThDTFlGWTViTUFkK2VYOU1HdGhocGJBMXZ1NEI3K1JLa2FXMllxNEFRdFZCQkZzQUpVL0F1SVhCaE44Z0dXbnN0ZWZoaVp5V3ZMQUVuYllTMXV6U0ZQNkp2bjRCYXh4NzBKS2tRb2pMaWI1QVZUZXkxampna0tKR08wQUtXeU9tN043Y1NwZ1NwQWRQSDBUZmQvZ3AxejVDMVpnS3FOOUoyd0Z4Y1VVdUFGTFpBbStRQzBGYjRZVVZSRnNBT3ZqNEtXMmR3dFlFM3lBV2svd1MvUExNS2ZtdUdIWjhNQVhGL0phMzJZaTVoYUFLV3o0WWRtMmNTcGdVNjkzQXRiN2ttK1p3d2grV0djUHB4dzNnQWt6Q0xZK2lZVURXL1ozQWRjL2dwenlGckFxbkFMa0plKzdEb0l0Z0F0UlMyenVLcUdFM3lBeDBvSnZrZHZZcmZabUFMVVJiRHVMNS9STGYxM2NBdURlQlMyUnBidEFtK1FGVkEzd1IrM2ZVdEZIb0JESm5DMGpJWEgwSFdzZ01ZOGluUEx1T2tkOWNocDR6MjBBTFFMU0E4Y0k5allBSWEyemp6akJkOGdSYWZTMXZnaVVoby9rQUtjc0NHVE9HV3ZvT3BrQXRCM3o4SG04eDJGZjVBRHA0K2xYQWxJdmNtd0gvMlE9PScpIHJlcGVhdCBsZWZ0IHRvcFwiLHBhZGRpbmc6XCIxMnB4XCIsb3ZlcmZsb3c6XCJhdXRvXCJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2JvcmRlclJhZGl1czpcIjVweFwiLGJvcmRlcjpcIjFweCBzb2xpZCAjMDAwXCIsY29sb3I6XCIjRENDRjhGXCIsYmFja2dyb3VuZDpcIiMxODE5MTQgdXJsKCdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBZ0FBWkFCa0FBRC83QUFSUkhWamEza0FBUUFFQUFBQU1BQUEvKzRBRGtGa2IySmxBR1RBQUFBQUFmL2JBSVFBQ1FZR0JnY0dDUWNIQ1EwSUJ3Z05Ed3NKQ1FzUEVRNE9EdzRPRVJFTkRnNE9EZzBSRVJRVUZoUVVFUm9hSEJ3YUdpWW1KaVltS3lzckt5c3JLeXNyS3dFSkNBZ0pDZ2tNQ2dvTUR3d09EQThURGc0T0RoTVZEZzRQRGc0VkdoTVJFUkVSRXhvWEdoWVdGaG9YSFIwYUdoMGRKQ1FqSkNRckt5c3JLeXNyS3lzci84QUFFUWdBakFDTUF3RWlBQUlSQVFNUkFmL0VBRjRBQVFFQkFBQUFBQUFBQUFBQUFBQUFBQUFCQndFQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFJUUFBRURBd0lIQVFFQUFBQUFBQUFBQUFEd0FSRWhZYUV4a1VGUmNZR3h3ZEhoOFJFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvYUFBd0RBUUFDRVFNUkFEOEF5R0ZFakhhQlMyZkREczJ6a2hLbUJLa3RiN2ttK1p3d0NuWFBrTFZtQ1RNSXRqNkFYRnhSUzQ2NS9CVG5rQUp2a0xrSmUrN0FLS29pMkF0UlMyenVBV3NDYjVHT2xCTjhnS2ZtdUdIWjhNRnFJdGgzQUxtRm9Gd2J3S1d5QWxUQXAxN3VLcUJ2Z0JEOHNNNGZUamh2QWhremhhUmtCTUtCcmZzN2pHUElwenk3Z0ZyQXFuQzBDMGdCMEVXd0JEVzJjQlZRd20rUXRQcGEzd0JPM3NWdnN6Q25MQWhremdMNS9STGYxM2NMUWQ4L0FHbHUwQ2I1SFR4OUt1QUVpZUdKRWRjZWhTM2VSVHAyQVRkdDNDcEltK1F0WndBaFJPWEZlYjdzd3AvYWhhTTNrQkUvalNJVUJjL0FXcmdCTjh1TkZBbCtiN3NBWEZ4Rm4yWUxVVTVOczdnRlg4QzRpYitoTjhnRldYd0szYlpnbHhFSm0rZ0tkY2lMUHNGVi9UQ2xzZ0pVd0tKNUZWQTd0dklGcmZaaFZmR0pEY3NDS2FZZ0FxdjZZUmJFK1JXT1dCdHU3K0FMM3lSYWxYTHlLcUFJSWZrK3pBUmJEZ0Z5RXNuY1l3SnZsZ0ZSVytHRVdudElpMlAwQm9veUZ4Y05yOEVwMytBTkxiTU8rUXlodmJpcWRnQzBrVnZnVVVpTFlnQlMyUXRQYmlWSTEvc2dPbUc5dU8rWThEVys3alMyekFPbmo2TzJCbmR3dUlBVXRrZFJOOGdGb0szd3dYTVF5WndIVmJDbHN1TkxkNEUzeUFVUjZGVkRCUitCYWZRR3Q5M0xWTXhKVHY4QUJ0czRDVkxoY2ZZV3NDYjVrQzkvQkhkVThDTFlGWTViTUFkK2VYOU1HdGhocGJBMXZ1NEI3K1JLa2FXMllxNEFRdFZCQkZzQUpVL0F1SVhCaE44Z0dXbnN0ZWZoaVp5V3ZMQUVuYllTMXV6U0ZQNkp2bjRCYXh4NzBKS2tRb2pMaWI1QVZUZXkxampna0tKR08wQUtXeU9tN043Y1NwZ1NwQWRQSDBUZmQvZ3AxejVDMVpnS3FOOUoyd0Z4Y1VVdUFGTFpBbStRQzBGYjRZVVZSRnNBT3ZqNEtXMmR3dFlFM3lBV2svd1MvUExNS2ZtdUdIWjhNQVhGL0phMzJZaTVoYUFLV3o0WWRtMmNTcGdVNjkzQXRiN2ttK1p3d2grV0djUHB4dzNnQWt6Q0xZK2lZVURXL1ozQWRjL2dwenlGckFxbkFMa0plKzdEb0l0Z0F0UlMyenVLcUdFM3lBeDBvSnZrZHZZcmZabUFMVVJiRHVMNS9STGYxM2NBdURlQlMyUnBidEFtK1FGVkEzd1IrM2ZVdEZIb0JESm5DMGpJWEgwSFdzZ01ZOGluUEx1T2tkOWNocDR6MjBBTFFMU0E4Y0k5allBSWEyemp6akJkOGdSYWZTMXZnaVVoby9rQUtjc0NHVE9HV3ZvT3BrQXRCM3o4SG04eDJGZjVBRHA0K2xYQWxJdmNtd0gvMlE9PScpIHJlcGVhdCBsZWZ0IHRvcFwiLHBhZGRpbmc6XCIycHggNnB4XCJ9LG5hbWVzcGFjZTp7T3BhY2l0eTpcIi43XCJ9LGNvbW1lbnQ6e2NvbG9yOlwiIzU4NmU3NVwiLGZvbnRTdHlsZTpcIml0YWxpY1wifSxwcm9sb2c6e2NvbG9yOlwiIzU4NmU3NVwiLGZvbnRTdHlsZTpcIml0YWxpY1wifSxkb2N0eXBlOntjb2xvcjpcIiM1ODZlNzVcIixmb250U3R5bGU6XCJpdGFsaWNcIn0sY2RhdGE6e2NvbG9yOlwiIzU4NmU3NVwiLGZvbnRTdHlsZTpcIml0YWxpY1wifSxudW1iZXI6e2NvbG9yOlwiI2I4OTg1OVwifSxzdHJpbmc6e2NvbG9yOlwiIzQ2ODk2NlwifSxjaGFyOntjb2xvcjpcIiM0Njg5NjZcIn0sYnVpbHRpbjp7Y29sb3I6XCIjNDY4OTY2XCJ9LGluc2VydGVkOntjb2xvcjpcIiM0Njg5NjZcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjYjg5ODU5XCJ9LG9wZXJhdG9yOntjb2xvcjpcIiNkY2NmOGZcIn0sZW50aXR5Ontjb2xvcjpcIiNkY2NmOGZcIixjdXJzb3I6XCJoZWxwXCJ9LHVybDp7Y29sb3I6XCIjZGNjZjhmXCJ9LFwiLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiI2RjY2Y4ZlwifSxcIi5zdHlsZSAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiI2RjY2Y4ZlwifSxzZWxlY3Rvcjp7Y29sb3I6XCIjODU5OTAwXCJ9LHJlZ2V4Ontjb2xvcjpcIiM4NTk5MDBcIn0sYXRydWxlOntjb2xvcjpcIiNjYjRiMTZcIn0sa2V5d29yZDp7Y29sb3I6XCIjY2I0YjE2XCJ9LFwiYXR0ci12YWx1ZVwiOntjb2xvcjpcIiM0Njg5NjZcIn0sZnVuY3Rpb246e2NvbG9yOlwiI2I1ODkwMFwifSx2YXJpYWJsZTp7Y29sb3I6XCIjYjU4OTAwXCJ9LHBsYWNlaG9sZGVyOntjb2xvcjpcIiNiNTg5MDBcIn0scHJvcGVydHk6e2NvbG9yOlwiI2I4OTg1OVwifSx0YWc6e2NvbG9yOlwiI2ZmYjAzYlwifSxib29sZWFuOntjb2xvcjpcIiNiODk4NTlcIn0sY29uc3RhbnQ6e2NvbG9yOlwiI2I4OTg1OVwifSxzeW1ib2w6e2NvbG9yOlwiI2I4OTg1OVwifSxpbXBvcnRhbnQ6e2NvbG9yOlwiI2RjMzIyZlwifSxzdGF0ZW1lbnQ6e2NvbG9yOlwiI2RjMzIyZlwifSxkZWxldGVkOntjb2xvcjpcIiNkYzMyMmZcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiI2RjY2Y4ZlwifSxib2xkOntmb250V2VpZ2h0OlwiYm9sZFwifSxpdGFsaWM6e2ZvbnRTdHlsZTpcIml0YWxpY1wifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiIzM5M0EzNFwiLGZvbnRGYW1pbHk6J1wiQ29uc29sYXNcIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2UnLGRpcmVjdGlvbjpcImx0clwiLHRleHRBbGlnbjpcImxlZnRcIix3aGl0ZVNwYWNlOlwicHJlXCIsd29yZFNwYWNpbmc6XCJub3JtYWxcIix3b3JkQnJlYWs6XCJub3JtYWxcIixmb250U2l6ZTpcIjAuOTVlbVwiLGxpbmVIZWlnaHQ6XCIxLjJlbVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7Y29sb3I6XCIjMzkzQTM0XCIsZm9udEZhbWlseTonXCJDb25zb2xhc1wiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsZGlyZWN0aW9uOlwibHRyXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLGZvbnRTaXplOlwiMC45NWVtXCIsbGluZUhlaWdodDpcIjEuMmVtXCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIixwYWRkaW5nOlwiMWVtXCIsbWFyZ2luOlwiLjVlbSAwXCIsb3ZlcmZsb3c6XCJhdXRvXCIsYm9yZGVyOlwiMXB4IHNvbGlkICNkZGRkZGRcIixiYWNrZ3JvdW5kQ29sb3I6XCJ3aGl0ZVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiI0MxREVGMVwifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiNDMURFRjFcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjotbW96LXNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjQzFERUYxXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiNDMURFRjFcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbic6e2JhY2tncm91bmQ6XCIjQzFERUYxXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6c2VsZWN0aW9uJzp7YmFja2dyb3VuZDpcIiNDMURFRjFcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiI0MxREVGMVwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gOjpzZWxlY3Rpb24nOntiYWNrZ3JvdW5kOlwiI0MxREVGMVwifSwnOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntwYWRkaW5nOlwiLjJlbVwiLHBhZGRpbmdUb3A6XCIxcHhcIixwYWRkaW5nQm90dG9tOlwiMXB4XCIsYmFja2dyb3VuZDpcIiNmOGY4ZjhcIixib3JkZXI6XCIxcHggc29saWQgI2RkZGRkZFwifSxjb21tZW50Ontjb2xvcjpcIiMwMDgwMDBcIixmb250U3R5bGU6XCJpdGFsaWNcIn0scHJvbG9nOntjb2xvcjpcIiMwMDgwMDBcIixmb250U3R5bGU6XCJpdGFsaWNcIn0sZG9jdHlwZTp7Y29sb3I6XCIjMDA4MDAwXCIsZm9udFN0eWxlOlwiaXRhbGljXCJ9LGNkYXRhOntjb2xvcjpcIiMwMDgwMDBcIixmb250U3R5bGU6XCJpdGFsaWNcIn0sbmFtZXNwYWNlOntPcGFjaXR5OlwiLjdcIn0sc3RyaW5nOntjb2xvcjpcIiNBMzE1MTVcIn0scHVuY3R1YXRpb246e2NvbG9yOlwiIzM5M0EzNFwifSxvcGVyYXRvcjp7Y29sb3I6XCIjMzkzQTM0XCJ9LHVybDp7Y29sb3I6XCIjMzZhY2FhXCJ9LHN5bWJvbDp7Y29sb3I6XCIjMzZhY2FhXCJ9LG51bWJlcjp7Y29sb3I6XCIjMzZhY2FhXCJ9LGJvb2xlYW46e2NvbG9yOlwiIzM2YWNhYVwifSx2YXJpYWJsZTp7Y29sb3I6XCIjMzZhY2FhXCJ9LGNvbnN0YW50Ontjb2xvcjpcIiMzNmFjYWFcIn0saW5zZXJ0ZWQ6e2NvbG9yOlwiIzM2YWNhYVwifSxhdHJ1bGU6e2NvbG9yOlwiIzAwMDBmZlwifSxrZXl3b3JkOntjb2xvcjpcIiMwMDAwZmZcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiIzAwMDBmZlwifSxcIi5sYW5ndWFnZS1hdXRvaG90a2V5IC50b2tlbi5zZWxlY3RvclwiOntjb2xvcjpcIiMwMDAwZmZcIn0sXCIubGFuZ3VhZ2UtanNvbiAudG9rZW4uYm9vbGVhblwiOntjb2xvcjpcIiMwMDAwZmZcIn0sXCIubGFuZ3VhZ2UtanNvbiAudG9rZW4ubnVtYmVyXCI6e2NvbG9yOlwiIzAwMDBmZlwifSwnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1jc3NcIl0nOntjb2xvcjpcIiMwMDAwZmZcIn0sZnVuY3Rpb246e2NvbG9yOlwiIzM5M0EzNFwifSxkZWxldGVkOntjb2xvcjpcIiM5YTA1MGZcIn0sXCIubGFuZ3VhZ2UtYXV0b2hvdGtleSAudG9rZW4udGFnXCI6e2NvbG9yOlwiIzlhMDUwZlwifSxzZWxlY3Rvcjp7Y29sb3I6XCIjODAwMDAwXCJ9LFwiLmxhbmd1YWdlLWF1dG9ob3RrZXkgLnRva2VuLmtleXdvcmRcIjp7Y29sb3I6XCIjMDAwMDlmXCJ9LGltcG9ydGFudDp7Zm9udFdlaWdodDpcImJvbGRcIn0sYm9sZDp7Zm9udFdlaWdodDpcImJvbGRcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn0sXCJjbGFzcy1uYW1lXCI6e2NvbG9yOlwiIzJCOTFBRlwifSxcIi5sYW5ndWFnZS1qc29uIC50b2tlbi5wcm9wZXJ0eVwiOntjb2xvcjpcIiMyQjkxQUZcIn0sdGFnOntjb2xvcjpcIiM4MDAwMDBcIn0sXCJhdHRyLW5hbWVcIjp7Y29sb3I6XCIjZmYwMDAwXCJ9LHByb3BlcnR5Ontjb2xvcjpcIiNmZjAwMDBcIn0scmVnZXg6e2NvbG9yOlwiI2ZmMDAwMFwifSxlbnRpdHk6e2NvbG9yOlwiI2ZmMDAwMFwifSxcImRpcmVjdGl2ZS50YWcgIC50YWdcIjp7YmFja2dyb3VuZDpcIiNmZmZmMDBcIixjb2xvcjpcIiMzOTNBMzRcIn0sXCIubGluZS1udW1iZXJzIC5saW5lLW51bWJlcnMtcm93c1wiOntib3JkZXJSaWdodENvbG9yOlwiI2E1YTVhNVwifSxcIi5saW5lLW51bWJlcnMtcm93cyA+IHNwYW46YmVmb3JlXCI6e2NvbG9yOlwiIzJCOTFBRlwifSxcIi5saW5lLWhpZ2hsaWdodFwiOntiYWNrZ3JvdW5kOlwibGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDE5MywgMjIyLCAyNDEsIDAuMikgNzAlLCByZ2JhKDIyMSwgMjIyLCAyNDEsIDApKVwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e01velRhYlNpemU6XCIyXCIsT1RhYlNpemU6XCIyXCIsdGFiU2l6ZTpcIjJcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIsd2hpdGVTcGFjZTpcInByZS13cmFwXCIsd29yZFdyYXA6XCJub3JtYWxcIixmb250RmFtaWx5OidNZW5sbywgTW9uYWNvLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZScsZm9udFNpemU6XCIxNHB4XCIsY29sb3I6XCIjNzZkOWU2XCIsdGV4dFNoYWRvdzpcIm5vbmVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntNb3pUYWJTaXplOlwiMlwiLE9UYWJTaXplOlwiMlwiLHRhYlNpemU6XCIyXCIsV2Via2l0SHlwaGVuczpcIm5vbmVcIixNb3pIeXBoZW5zOlwibm9uZVwiLG1zSHlwaGVuczpcIm5vbmVcIixoeXBoZW5zOlwibm9uZVwiLHdoaXRlU3BhY2U6XCJwcmUtd3JhcFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsZm9udEZhbWlseTonTWVubG8sIE1vbmFjbywgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2UnLGZvbnRTaXplOlwiMTRweFwiLGNvbG9yOlwiIzc2ZDllNlwiLHRleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiMyYTJhMmFcIixwYWRkaW5nOlwiMTVweFwiLGJvcmRlclJhZGl1czpcIjRweFwiLGJvcmRlcjpcIjFweCBzb2xpZCAjZTFlMWU4XCIsb3ZlcmZsb3c6XCJhdXRvXCIscG9zaXRpb246XCJyZWxhdGl2ZVwifSwnOm5vdChwcmUpPmNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7YmFja2dyb3VuZDpcIiMyYTJhMmFcIixwYWRkaW5nOlwiMC4xNWVtIDAuMmVtIDAuMDVlbVwiLGJvcmRlclJhZGl1czpcIi4zZW1cIixib3JkZXI6XCIwLjEzZW0gc29saWQgIzdhNjY1MlwiLGJveFNoYWRvdzpcIjFweCAxcHggMC4zZW0gLTAuMWVtICMwMDAgaW5zZXRcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gY29kZSc6e3doaXRlU3BhY2U6XCJwcmVcIixkaXNwbGF5OlwiYmxvY2tcIn0sbmFtZXNwYWNlOntPcGFjaXR5OlwiLjdcIn0sY29tbWVudDp7Y29sb3I6XCIjNmY3MDVlXCJ9LHByb2xvZzp7Y29sb3I6XCIjNmY3MDVlXCJ9LGRvY3R5cGU6e2NvbG9yOlwiIzZmNzA1ZVwifSxjZGF0YTp7Y29sb3I6XCIjNmY3MDVlXCJ9LG9wZXJhdG9yOntjb2xvcjpcIiNhNzdhZmVcIn0sYm9vbGVhbjp7Y29sb3I6XCIjYTc3YWZlXCJ9LG51bWJlcjp7Y29sb3I6XCIjYTc3YWZlXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiI2U2ZDA2Y1wifSxzdHJpbmc6e2NvbG9yOlwiI2U2ZDA2Y1wifSxlbnRpdHk6e2NvbG9yOlwiI2U2ZDA2Y1wiLGN1cnNvcjpcImhlbHBcIn0sdXJsOntjb2xvcjpcIiNlNmQwNmNcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZTZkMDZjXCJ9LFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjZTZkMDZjXCJ9LHNlbGVjdG9yOntjb2xvcjpcIiNhNmUyMmRcIn0saW5zZXJ0ZWQ6e2NvbG9yOlwiI2E2ZTIyZFwifSxhdHJ1bGU6e2NvbG9yOlwiI2VmM2I3ZFwifSxcImF0dHItdmFsdWVcIjp7Y29sb3I6XCIjZWYzYjdkXCJ9LGtleXdvcmQ6e2NvbG9yOlwiI2VmM2I3ZFwifSxpbXBvcnRhbnQ6e2NvbG9yOlwiI2VmM2I3ZFwiLGZvbnRXZWlnaHQ6XCJib2xkXCJ9LGRlbGV0ZWQ6e2NvbG9yOlwiI2VmM2I3ZFwifSxyZWdleDp7Y29sb3I6XCIjNzZkOWU2XCJ9LHN0YXRlbWVudDp7Y29sb3I6XCIjNzZkOWU2XCIsZm9udFdlaWdodDpcImJvbGRcIn0scGxhY2Vob2xkZXI6e2NvbG9yOlwiI2ZmZlwifSx2YXJpYWJsZTp7Y29sb3I6XCIjZmZmXCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiNiZWJlYzVcIn0saXRhbGljOntmb250U3R5bGU6XCJpdGFsaWNcIn0sXCJjb2RlLmxhbmd1YWdlLW1hcmt1cFwiOntjb2xvcjpcIiNmOWY5ZjlcIn0sXCJjb2RlLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4udGFnXCI6e2NvbG9yOlwiI2VmM2I3ZFwifSxcImNvZGUubGFuZ3VhZ2UtbWFya3VwIC50b2tlbi5hdHRyLW5hbWVcIjp7Y29sb3I6XCIjYTZlMjJkXCJ9LFwiY29kZS5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLmF0dHItdmFsdWVcIjp7Y29sb3I6XCIjZTZkMDZjXCJ9LFwiY29kZS5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLnN0eWxlXCI6e2NvbG9yOlwiIzc2ZDllNlwifSxcImNvZGUubGFuZ3VhZ2UtbWFya3VwIC50b2tlbi5zY3JpcHRcIjp7Y29sb3I6XCIjNzZkOWU2XCJ9LFwiY29kZS5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLnNjcmlwdCAudG9rZW4ua2V5d29yZFwiOntjb2xvcjpcIiM3NmQ5ZTZcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl1bZGF0YS1saW5lXSc6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIixwYWRkaW5nOlwiMWVtIDAgMWVtIDNlbVwifSxcInByZVtkYXRhLWxpbmVdIC5saW5lLWhpZ2hsaWdodFwiOntwb3NpdGlvbjpcImFic29sdXRlXCIsbGVmdDpcIjBcIixyaWdodDpcIjBcIixwYWRkaW5nOlwiMFwiLG1hcmdpblRvcDpcIjFlbVwiLGJhY2tncm91bmQ6XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpXCIscG9pbnRlckV2ZW50czpcIm5vbmVcIixsaW5lSGVpZ2h0OlwiaW5oZXJpdFwiLHdoaXRlU3BhY2U6XCJwcmVcIn0sXCJwcmVbZGF0YS1saW5lXSAubGluZS1oaWdobGlnaHQ6YmVmb3JlXCI6e2NvbnRlbnQ6XCJhdHRyKGRhdGEtc3RhcnQpXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLHRvcDpcIi40ZW1cIixsZWZ0OlwiLjZlbVwiLG1pbldpZHRoOlwiMWVtXCIscGFkZGluZzpcIjAuMmVtIDAuNWVtXCIsYmFja2dyb3VuZENvbG9yOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpXCIsY29sb3I6XCJibGFja1wiLGZvbnQ6XCJib2xkIDY1JS8xIHNhbnMtc2VyaWZcIixoZWlnaHQ6XCIxZW1cIixsaW5lSGVpZ2h0OlwiMWVtXCIsdGV4dEFsaWduOlwiY2VudGVyXCIsYm9yZGVyUmFkaXVzOlwiOTk5cHhcIix0ZXh0U2hhZG93Olwibm9uZVwiLGJveFNoYWRvdzpcIjAgMXB4IDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNylcIn0sXCJwcmVbZGF0YS1saW5lXSAubGluZS1oaWdobGlnaHRbZGF0YS1lbmRdOmFmdGVyXCI6e2NvbnRlbnQ6XCJhdHRyKGRhdGEtZW5kKVwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6XCJhdXRvXCIsbGVmdDpcIi42ZW1cIixtaW5XaWR0aDpcIjFlbVwiLHBhZGRpbmc6XCIwLjJlbSAwLjVlbVwiLGJhY2tncm91bmRDb2xvcjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KVwiLGNvbG9yOlwiYmxhY2tcIixmb250OlwiYm9sZCA2NSUvMSBzYW5zLXNlcmlmXCIsaGVpZ2h0OlwiMWVtXCIsbGluZUhlaWdodDpcIjFlbVwiLHRleHRBbGlnbjpcImNlbnRlclwiLGJvcmRlclJhZGl1czpcIjk5OXB4XCIsdGV4dFNoYWRvdzpcIm5vbmVcIixib3hTaGFkb3c6XCIwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpXCIsYm90dG9tOlwiLjRlbVwifX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJnZXRTdWdnZXN0ZWRGcnVpdFN5bmNcIixmdW5jdGlvbigpe3JldHVybiBzfSksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gdX0pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gaS5hLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZS50b0xvd2VyQ2FzZSgpKX0pfWZ1bmN0aW9uIHUoKXt2YXIgZT1sKE9iamVjdChyLnVzZVN0YXRlKShbXSksMiksdD1lWzBdLG49ZVsxXTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoYS5hLHt2YWx1ZTp0LG9uQ2hhbmdlOm4saXRlbVRvU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWV9LGdldFN1Z2dlc3RlZEl0ZW1zOnMsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGZ1bGxXaWR0aDohMH0pfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTY5KSxvPW4oNjcwKSxhPW4oNjcyKSxpPVwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiLGw9TWF0aC5tYXgscz1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciB1LGMsZCxwLGYsbSxnPTAsaD0hMSxiPSExLHk9ITA7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKGkpO2Z1bmN0aW9uIHYodCl7dmFyIG49dSxyPWM7cmV0dXJuIHU9Yz12b2lkIDAsZz10LHA9ZS5hcHBseShyLG4pfWZ1bmN0aW9uIFMoZSl7dmFyIG49ZS1tO3JldHVybiB2b2lkIDA9PT1tfHxuPj10fHxuPDB8fGImJmUtZz49ZH1mdW5jdGlvbiBFKCl7dmFyIGU9bygpO2lmKFMoZSkpcmV0dXJuIHgoZSk7Zj1zZXRUaW1lb3V0KEUsZnVuY3Rpb24oZSl7dmFyIG49dC0oZS1tKTtyZXR1cm4gYj9zKG4sZC0oZS1nKSk6bn0oZSkpfWZ1bmN0aW9uIHgoZSl7cmV0dXJuIGY9dm9pZCAwLHkmJnU/dihlKToodT1jPXZvaWQgMCxwKX1mdW5jdGlvbiB3KCl7dmFyIGU9bygpLG49UyhlKTtpZih1PWFyZ3VtZW50cyxjPXRoaXMsbT1lLG4pe2lmKHZvaWQgMD09PWYpcmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBnPWUsZj1zZXRUaW1lb3V0KEUsdCksaD92KGUpOnB9KG0pO2lmKGIpcmV0dXJuIGY9c2V0VGltZW91dChFLHQpLHYobSl9cmV0dXJuIHZvaWQgMD09PWYmJihmPXNldFRpbWVvdXQoRSx0KSkscH1yZXR1cm4gdD1hKHQpfHwwLHIobikmJihoPSEhbi5sZWFkaW5nLGQ9KGI9XCJtYXhXYWl0XCJpbiBuKT9sKGEobi5tYXhXYWl0KXx8MCx0KTpkLHk9XCJ0cmFpbGluZ1wiaW4gbj8hIW4udHJhaWxpbmc6eSksdy5jYW5jZWw9ZnVuY3Rpb24oKXt2b2lkIDAhPT1mJiZjbGVhclRpbWVvdXQoZiksZz0wLHU9bT1jPWY9dm9pZCAwfSx3LmZsdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PWY/cDp4KG8oKSl9LHd9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNzApO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiByLkRhdGUubm93KCl9fSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQpe3ZhciBuPVwib2JqZWN0XCI9PXR5cGVvZiB0JiZ0JiZ0Lk9iamVjdD09PU9iamVjdCYmdDtlLmV4cG9ydHM9bn0pLmNhbGwodGhpcyxuKDI3KSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE2OSksbz1uKDY3MyksYT1OYU4saT0vXlxccyt8XFxzKyQvZyxsPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHM9L14wYlswMV0rJC9pLHU9L14wb1swLTddKyQvaSxjPXBhcnNlSW50O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSlyZXR1cm4gZTtpZihvKGUpKXJldHVybiBhO2lmKHIoZSkpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIGUudmFsdWVPZj9lLnZhbHVlT2YoKTplO2U9cih0KT90K1wiXCI6dH1pZihcInN0cmluZ1wiIT10eXBlb2YgZSlyZXR1cm4gMD09PWU/ZTorZTtlPWUucmVwbGFjZShpLFwiXCIpO3ZhciBuPXMudGVzdChlKTtyZXR1cm4gbnx8dS50ZXN0KGUpP2MoZS5zbGljZSgyKSxuPzI6OCk6bC50ZXN0KGUpP2E6K2V9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big2NzQpLG89big2NzcpLGE9XCJbb2JqZWN0IFN5bWJvbF1cIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIGV8fG8oZSkmJnIoZSk9PWF9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNzEpLG89big2NzUpLGE9big2NzYpLGk9XCJbb2JqZWN0IE51bGxdXCIsbD1cIltvYmplY3QgVW5kZWZpbmVkXVwiLHM9cj9yLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwPT09ZT9sOmk6cyYmcyBpbiBPYmplY3QoZSk/byhlKTphKGUpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTcxKSxvPU9iamVjdC5wcm90b3R5cGUsYT1vLmhhc093blByb3BlcnR5LGk9by50b1N0cmluZyxsPXI/ci50b1N0cmluZ1RhZzp2b2lkIDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEuY2FsbChlLGwpLG49ZVtsXTt0cnl7ZVtsXT12b2lkIDA7dmFyIHI9ITB9Y2F0Y2goZSl7fXZhciBvPWkuY2FsbChlKTtyZXR1cm4gciYmKHQ/ZVtsXT1uOmRlbGV0ZSBlW2xdKSxvfX0sZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbi5jYWxsKGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiBzfSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpLGk9bigxMCk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBzKCl7dmFyIGU9bChPYmplY3Qoci51c2VTdGF0ZSkoaS5hKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6aS5iLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITB9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gc30pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gcygpe3ZhciBlPWwoT2JqZWN0KHIudXNlU3RhdGUpKGkuYS5zbGljZSgwLDIpKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6aS5iLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITAsZGlzYWJsZWQ6ITB9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gc30pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gcygpe3ZhciBlPWwoT2JqZWN0KHIudXNlU3RhdGUpKGkuYS5zbGljZSgwLDIpKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6aS5iLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITAsZXJyb3I6ITB9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gZH0pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApLGw9bigxOCk7ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX12YXIgdT0zO2Z1bmN0aW9uIGMoZSl7cmV0dXJuIGUubGVuZ3RoPj11P09iamVjdChpLmIpKGUpOmwuYn1mdW5jdGlvbiBkKCl7dmFyIGU9cyhPYmplY3Qoci51c2VTdGF0ZSkoW10pLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczpjLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITB9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gc30pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gcygpe3ZhciBlPWwoT2JqZWN0KHIudXNlU3RhdGUpKFtdKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6aS5iLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITAsbWF4RHJvcGRvd25IZWlnaHQ6MjUwfSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LFwiZGVmYXVsdFwiLGZ1bmN0aW9uKCl7cmV0dXJuIGN9KTt2YXIgcj1uKDApLG89bi5uKHIpLGE9bigxMSksaT1uKDEwKTtmdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPVtdLHI9ITAsbz0hMSxhPXZvaWQgMDt0cnl7Zm9yKHZhciBpLGw9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPShpPWwubmV4dCgpKS5kb25lKSYmKG4ucHVzaChpLnZhbHVlKSwhdHx8bi5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7bz0hMCxhPWV9ZmluYWxseXt0cnl7cnx8bnVsbD09bC5yZXR1cm58fGwucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IGF9fXJldHVybiBufShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfSgpfXZhciBzPTgwMDtmdW5jdGlvbiB1KGUpe3JldHVybiBlLmxlbmd0aD9uZXcgUHJvbWlzZShmdW5jdGlvbih0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHQoT2JqZWN0KGkuYikoZSkpfSxzKX0pOlByb21pc2UucmVzb2x2ZShbXSl9ZnVuY3Rpb24gYygpe3ZhciBlPWwoT2JqZWN0KHIudXNlU3RhdGUpKFtdKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6dSxsYWJlbDpcIllvdXIgZmF2b3VyaXRlIGZydWl0XCIsZnVsbFdpZHRoOiEwfSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LFwiZGVmYXVsdFwiLGZ1bmN0aW9uKCl7cmV0dXJuIGR9KTt2YXIgcj1uKDApLG89bi5uKHIpLGE9bigxMSksaT1uKDEwKTtmdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPVtdLHI9ITAsbz0hMSxhPXZvaWQgMDt0cnl7Zm9yKHZhciBpLGw9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPShpPWwubmV4dCgpKS5kb25lKSYmKG4ucHVzaChpLnZhbHVlKSwhdHx8bi5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7bz0hMCxhPWV9ZmluYWxseXt0cnl7cnx8bnVsbD09bC5yZXR1cm58fGwucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IGF9fXJldHVybiBufShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfSgpfXZhciBzPTgwMCx1PTUwMDtmdW5jdGlvbiBjKGUpe3JldHVybiBlLmxlbmd0aD9uZXcgUHJvbWlzZShmdW5jdGlvbih0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHQoT2JqZWN0KGkuYikoZSkpfSxzKX0pOlByb21pc2UucmVzb2x2ZShbXSl9ZnVuY3Rpb24gZCgpe3ZhciBlPWwoT2JqZWN0KHIudXNlU3RhdGUpKFtdKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6YyxsYWJlbDpcIllvdXIgZmF2b3VyaXRlIGZydWl0XCIsZmV0Y2hEZWxheTp1LGZ1bGxXaWR0aDohMH0pfX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCxcImRlZmF1bHRcIixmdW5jdGlvbigpe3JldHVybiB1fSk7dmFyIHI9bigwKSxvPW4ubihyKSxhPW4oMTEpO2Z1bmN0aW9uIGkoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9dmFyIGw9ODAwO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUubGVuZ3RoP25ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB0KG5ldyBFcnJvcihcIlN1Z2dlc3Rpb24gZmV0Y2ggZmFpbGVkIVwiKSl9LGwpfSk6UHJvbWlzZS5yZXNvbHZlKFtdKX1mdW5jdGlvbiB1KCl7dmFyIGU9aShPYmplY3Qoci51c2VTdGF0ZSkoW10pLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczpzLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITB9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gY30pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAsbj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XTtyZXR1cm4gbn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHxcIltvYmplY3QgQXJndW1lbnRzXVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gdShlKXt2YXIgdD1PYmplY3QoaS5iKShlKTtyZXR1cm4gdC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0pLmluY2x1ZGVzKGUpfHwwPT09ZS5sZW5ndGg/dDpbXS5jb25jYXQocyh0KSxbe25hbWU6ZX1dKX1mdW5jdGlvbiBjKCl7dmFyIGU9bChPYmplY3Qoci51c2VTdGF0ZSkoW10pLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczp1LGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITB9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gc30pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gcygpe3ZhciBlPWwoT2JqZWN0KHIudXNlU3RhdGUpKFtdKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6aS5iLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITAsaGVscGVyVGV4dDpcIlRlbGwgdXMgd2hhdCBmcnVpdHMgeW91IHJlYWxseSBsaWtlXCJ9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gc30pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gcygpe3ZhciBlPWwoT2JqZWN0KHIudXNlU3RhdGUpKFtdKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6aS5iLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITAscmVxdWlyZWQ6ITB9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gc30pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gcygpe3ZhciBlPWwoT2JqZWN0KHIudXNlU3RhdGUpKFtdKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6aS5iLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITAsdmFyaWFudDpcIm91dGxpbmVkXCJ9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gZn0pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDMpLGk9bigxMSksbD1uKDEwKSxzPW4oMjAxKSx1PW4ubihzKSxjPW4oMSk7ZnVuY3Rpb24gZChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1mdW5jdGlvbiBwKGUpe3ZhciB0PWUuaXRlbSxuPWUuaXNIaWdobGlnaHRlZCxyPWUuaW5wdXRWYWx1ZSxpPXtkaXNwbGF5OlwiZmxleFwiLGJhY2tncm91bmRDb2xvcjpuP1wiI2FhYVwiOlwiI2ZmZlwiLHdpZHRoOlwiMTAwJVwifTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6aX0sby5hLmNyZWF0ZUVsZW1lbnQoXCJpbWdcIix7c3JjOnQuaW1hZ2Usc3R5bGU6e2hlaWdodDpcIjQycHhcIix3aWR0aDpcIjQycHhcIn19KSxvLmEuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTp7ZmxleDpcIjEgMSAwXCJ9fSxvLmEuY3JlYXRlRWxlbWVudChhLncse3ZhcmlhbnQ6XCJoNlwifSxvLmEuY3JlYXRlRWxlbWVudCh1LmEse2hpZ2hsaWdodFN0eWxlOntiYWNrZ3JvdW5kQ29sb3I6XCIjZmYyXCJ9LHNlYXJjaFdvcmRzOltyXSx0ZXh0VG9IaWdobGlnaHQ6dC5uYW1lfSksby5hLmNyZWF0ZUVsZW1lbnQoXCJzbWFsbFwiLG51bGwsXCLCoChcIix0LnN0b2NrLFwiIGluIHN0b2NrKVwiKSksby5hLmNyZWF0ZUVsZW1lbnQoYS53LG51bGwsdC5kZXRhaWwpKSl9ZnVuY3Rpb24gZigpe3ZhciBlPWQoT2JqZWN0KHIudXNlU3RhdGUpKFtdKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChpLmEse3ZhbHVlOnQsb25DaGFuZ2U6bixpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6bC5iLFN1Z2dlc3Rpb25Db21wb25lbnQ6cCxsYWJlbDpcIllvdXIgZmF2b3VyaXRlIGZydWl0XCIsZnVsbFdpZHRoOiEwfSl9cC5wcm9wVHlwZXM9e2l0ZW06Yy5vYmplY3QuaXNSZXF1aXJlZCxpc0hpZ2hsaWdodGVkOmMuYm9vbCxpbnB1dFZhbHVlOmMuc3RyaW5nLmlzUmVxdWlyZWR9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LFwiZGVmYXVsdFwiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KTt2YXIgcj1uKDApLG89bi5uKHIpLGE9bigzKSxpPW4oMTEpLGw9bigxMCk7ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX12YXIgdT0zLGM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuYSx7YWx0OmUubmFtZSxzcmM6ZS5pbWFnZX0pfSxkPWZ1bmN0aW9uKGUpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTp7ZGlzcGxheTpcImZsZXhcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCIscGFkZGluZzpcIjRweCA4cHhcIn19LG8uYS5jcmVhdGVFbGVtZW50KFwiaW1nXCIse3NyYzplLmltYWdlLHN0eWxlOntoZWlnaHQ6XCIyMHB4XCIsd2lkdGg6XCIyMHB4XCJ9fSksby5hLmNyZWF0ZUVsZW1lbnQoYS53LHt2YXJpYW50Olwic3VidGl0bGUxXCJ9LGUuZGV0YWlsKSl9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuXCJcIi5jb25jYXQoZS5uYW1lLFwiIChcIikuY29uY2F0KGUuc3RvY2ssXCIpXCIpfTtmdW5jdGlvbiBmKCl7dmFyIGU9cyhPYmplY3Qoci51c2VTdGF0ZSkobC5hLnNsaWNlKDAsdSkpLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGkuYSx7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczpsLmIsY2hpcENvbG9yOlwicHJpbWFyeVwiLGl0ZW1Ub0F2YXRhcjpjLGl0ZW1Ub0xhYmVsOnAsaXRlbVRvUG9wb3ZlcjpkLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXRcIixmdWxsV2lkdGg6ITB9KX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gY30pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9dmFyIHM9MmUzO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIGUubGVuZ3RoP25ldyBQcm9taXNlKGZ1bmN0aW9uKHQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gdChPYmplY3QoaS5iKShlKSl9LHMpfSk6UHJvbWlzZS5yZXNvbHZlKFtdKX1mdW5jdGlvbiBjKCl7dmFyIGU9bChPYmplY3Qoci51c2VTdGF0ZSkoW10pLDIpLHQ9ZVswXSxuPWVbMV0saT1sKE9iamVjdChyLnVzZVN0YXRlKShbXSksMikscz1pWzBdLGM9aVsxXTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoby5hLkZyYWdtZW50LG51bGwsby5hLmNyZWF0ZUVsZW1lbnQoYS5hLHt2YWx1ZTp0LG9uQ2hhbmdlOm4saXRlbVRvU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWV9LGdldFN1Z2dlc3RlZEl0ZW1zOnUsdXNlR2xvYmFsQ2FjaGU6XCJzaGFyZWQtZnJ1aXRcIixsYWJlbDpcIllvdXIgZmF2b3VyaXRlIGZydWl0IDFcIixmdWxsV2lkdGg6ITB9KSxvLmEuY3JlYXRlRWxlbWVudChhLmEse3ZhbHVlOnMsb25DaGFuZ2U6YyxpdGVtVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0sZ2V0U3VnZ2VzdGVkSXRlbXM6dSx1c2VHbG9iYWxDYWNoZTpcInNoYXJlZC1mcnVpdFwiLGxhYmVsOlwiWW91ciBmYXZvdXJpdGUgZnJ1aXQgMlwiLGZ1bGxXaWR0aDohMH0pKX19LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQsXCJnZXRTdWdnZXN0ZWRGcnVpdFN5bmNcIixmdW5jdGlvbigpe3JldHVybiBzfSksbi5kKHQsXCJkZWZhdWx0XCIsZnVuY3Rpb24oKXtyZXR1cm4gdX0pO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDExKSxpPW4oMTApO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gaS5hLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZS50b0xvd2VyQ2FzZSgpKX0pfWZ1bmN0aW9uIHUoKXt2YXIgZT1sKE9iamVjdChyLnVzZVN0YXRlKShbXSksMiksdD1lWzBdLG49ZVsxXTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoYS5hLHt2YWx1ZTp0LG9uQ2hhbmdlOm4saXRlbVRvU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWV9LGdldFN1Z2dlc3RlZEl0ZW1zOnMsbGFiZWw6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLGNsZWFySW5wdXRPbkJsdXI6ITAsZnVsbFdpZHRoOiEwfSl9fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZjNlNWY1XCIsMTAwOlwiI2UxYmVlN1wiLDIwMDpcIiNjZTkzZDhcIiwzMDA6XCIjYmE2OGM4XCIsNDAwOlwiI2FiNDdiY1wiLDUwMDpcIiM5YzI3YjBcIiw2MDA6XCIjOGUyNGFhXCIsNzAwOlwiIzdiMWZhMlwiLDgwMDpcIiM2YTFiOWFcIiw5MDA6XCIjNGExNDhjXCIsQTEwMDpcIiNlYTgwZmNcIixBMjAwOlwiI2UwNDBmYlwiLEE0MDA6XCIjZDUwMGY5XCIsQTcwMDpcIiNhYTAwZmZcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNlZGU3ZjZcIiwxMDA6XCIjZDFjNGU5XCIsMjAwOlwiI2IzOWRkYlwiLDMwMDpcIiM5NTc1Y2RcIiw0MDA6XCIjN2U1N2MyXCIsNTAwOlwiIzY3M2FiN1wiLDYwMDpcIiM1ZTM1YjFcIiw3MDA6XCIjNTEyZGE4XCIsODAwOlwiIzQ1MjdhMFwiLDkwMDpcIiMzMTFiOTJcIixBMTAwOlwiI2IzODhmZlwiLEEyMDA6XCIjN2M0ZGZmXCIsQTQwMDpcIiM2NTFmZmZcIixBNzAwOlwiIzYyMDBlYVwifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2UzZjJmZFwiLDEwMDpcIiNiYmRlZmJcIiwyMDA6XCIjOTBjYWY5XCIsMzAwOlwiIzY0YjVmNlwiLDQwMDpcIiM0MmE1ZjVcIiw1MDA6XCIjMjE5NmYzXCIsNjAwOlwiIzFlODhlNVwiLDcwMDpcIiMxOTc2ZDJcIiw4MDA6XCIjMTU2NWMwXCIsOTAwOlwiIzBkNDdhMVwiLEExMDA6XCIjODJiMWZmXCIsQTIwMDpcIiM0NDhhZmZcIixBNDAwOlwiIzI5NzlmZlwiLEE3MDA6XCIjMjk2MmZmXCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZTFmNWZlXCIsMTAwOlwiI2IzZTVmY1wiLDIwMDpcIiM4MWQ0ZmFcIiwzMDA6XCIjNGZjM2Y3XCIsNDAwOlwiIzI5YjZmNlwiLDUwMDpcIiMwM2E5ZjRcIiw2MDA6XCIjMDM5YmU1XCIsNzAwOlwiIzAyODhkMVwiLDgwMDpcIiMwMjc3YmRcIiw5MDA6XCIjMDE1NzliXCIsQTEwMDpcIiM4MGQ4ZmZcIixBMjAwOlwiIzQwYzRmZlwiLEE0MDA6XCIjMDBiMGZmXCIsQTcwMDpcIiMwMDkxZWFcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNlMGY3ZmFcIiwxMDA6XCIjYjJlYmYyXCIsMjAwOlwiIzgwZGVlYVwiLDMwMDpcIiM0ZGQwZTFcIiw0MDA6XCIjMjZjNmRhXCIsNTAwOlwiIzAwYmNkNFwiLDYwMDpcIiMwMGFjYzFcIiw3MDA6XCIjMDA5N2E3XCIsODAwOlwiIzAwODM4ZlwiLDkwMDpcIiMwMDYwNjRcIixBMTAwOlwiIzg0ZmZmZlwiLEEyMDA6XCIjMThmZmZmXCIsQTQwMDpcIiMwMGU1ZmZcIixBNzAwOlwiIzAwYjhkNFwifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2UwZjJmMVwiLDEwMDpcIiNiMmRmZGJcIiwyMDA6XCIjODBjYmM0XCIsMzAwOlwiIzRkYjZhY1wiLDQwMDpcIiMyNmE2OWFcIiw1MDA6XCIjMDA5Njg4XCIsNjAwOlwiIzAwODk3YlwiLDcwMDpcIiMwMDc5NmJcIiw4MDA6XCIjMDA2OTVjXCIsOTAwOlwiIzAwNGQ0MFwiLEExMDA6XCIjYTdmZmViXCIsQTIwMDpcIiM2NGZmZGFcIixBNDAwOlwiIzFkZTliNlwiLEE3MDA6XCIjMDBiZmE1XCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZThmNWU5XCIsMTAwOlwiI2M4ZTZjOVwiLDIwMDpcIiNhNWQ2YTdcIiwzMDA6XCIjODFjNzg0XCIsNDAwOlwiIzY2YmI2YVwiLDUwMDpcIiM0Y2FmNTBcIiw2MDA6XCIjNDNhMDQ3XCIsNzAwOlwiIzM4OGUzY1wiLDgwMDpcIiMyZTdkMzJcIiw5MDA6XCIjMWI1ZTIwXCIsQTEwMDpcIiNiOWY2Y2FcIixBMjAwOlwiIzY5ZjBhZVwiLEE0MDA6XCIjMDBlNjc2XCIsQTcwMDpcIiMwMGM4NTNcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNmMWY4ZTlcIiwxMDA6XCIjZGNlZGM4XCIsMjAwOlwiI2M1ZTFhNVwiLDMwMDpcIiNhZWQ1ODFcIiw0MDA6XCIjOWNjYzY1XCIsNTAwOlwiIzhiYzM0YVwiLDYwMDpcIiM3Y2IzNDJcIiw3MDA6XCIjNjg5ZjM4XCIsODAwOlwiIzU1OGIyZlwiLDkwMDpcIiMzMzY5MWVcIixBMTAwOlwiI2NjZmY5MFwiLEEyMDA6XCIjYjJmZjU5XCIsQTQwMDpcIiM3NmZmMDNcIixBNzAwOlwiIzY0ZGQxN1wifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2Y5ZmJlN1wiLDEwMDpcIiNmMGY0YzNcIiwyMDA6XCIjZTZlZTljXCIsMzAwOlwiI2RjZTc3NVwiLDQwMDpcIiNkNGUxNTdcIiw1MDA6XCIjY2RkYzM5XCIsNjAwOlwiI2MwY2EzM1wiLDcwMDpcIiNhZmI0MmJcIiw4MDA6XCIjOWU5ZDI0XCIsOTAwOlwiIzgyNzcxN1wiLEExMDA6XCIjZjRmZjgxXCIsQTIwMDpcIiNlZWZmNDFcIixBNDAwOlwiI2M2ZmYwMFwiLEE3MDA6XCIjYWVlYTAwXCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZmZmZGU3XCIsMTAwOlwiI2ZmZjljNFwiLDIwMDpcIiNmZmY1OWRcIiwzMDA6XCIjZmZmMTc2XCIsNDAwOlwiI2ZmZWU1OFwiLDUwMDpcIiNmZmViM2JcIiw2MDA6XCIjZmRkODM1XCIsNzAwOlwiI2ZiYzAyZFwiLDgwMDpcIiNmOWE4MjVcIiw5MDA6XCIjZjU3ZjE3XCIsQTEwMDpcIiNmZmZmOGRcIixBMjAwOlwiI2ZmZmYwMFwiLEE0MDA6XCIjZmZlYTAwXCIsQTcwMDpcIiNmZmQ2MDBcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNmZmY4ZTFcIiwxMDA6XCIjZmZlY2IzXCIsMjAwOlwiI2ZmZTA4MlwiLDMwMDpcIiNmZmQ1NGZcIiw0MDA6XCIjZmZjYTI4XCIsNTAwOlwiI2ZmYzEwN1wiLDYwMDpcIiNmZmIzMDBcIiw3MDA6XCIjZmZhMDAwXCIsODAwOlwiI2ZmOGYwMFwiLDkwMDpcIiNmZjZmMDBcIixBMTAwOlwiI2ZmZTU3ZlwiLEEyMDA6XCIjZmZkNzQwXCIsQTQwMDpcIiNmZmM0MDBcIixBNzAwOlwiI2ZmYWIwMFwifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2ZmZjNlMFwiLDEwMDpcIiNmZmUwYjJcIiwyMDA6XCIjZmZjYzgwXCIsMzAwOlwiI2ZmYjc0ZFwiLDQwMDpcIiNmZmE3MjZcIiw1MDA6XCIjZmY5ODAwXCIsNjAwOlwiI2ZiOGMwMFwiLDcwMDpcIiNmNTdjMDBcIiw4MDA6XCIjZWY2YzAwXCIsOTAwOlwiI2U2NTEwMFwiLEExMDA6XCIjZmZkMTgwXCIsQTIwMDpcIiNmZmFiNDBcIixBNDAwOlwiI2ZmOTEwMFwiLEE3MDA6XCIjZmY2ZDAwXCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgcj17NTA6XCIjZmJlOWU3XCIsMTAwOlwiI2ZmY2NiY1wiLDIwMDpcIiNmZmFiOTFcIiwzMDA6XCIjZmY4YTY1XCIsNDAwOlwiI2ZmNzA0M1wiLDUwMDpcIiNmZjU3MjJcIiw2MDA6XCIjZjQ1MTFlXCIsNzAwOlwiI2U2NGExOVwiLDgwMDpcIiNkODQzMTVcIiw5MDA6XCIjYmYzNjBjXCIsQTEwMDpcIiNmZjllODBcIixBMjAwOlwiI2ZmNmU0MFwiLEE0MDA6XCIjZmYzZDAwXCIsQTcwMDpcIiNkZDJjMDBcIn07dC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPXs1MDpcIiNlZmViZTlcIiwxMDA6XCIjZDdjY2M4XCIsMjAwOlwiI2JjYWFhNFwiLDMwMDpcIiNhMTg4N2ZcIiw0MDA6XCIjOGQ2ZTYzXCIsNTAwOlwiIzc5NTU0OFwiLDYwMDpcIiM2ZDRjNDFcIiw3MDA6XCIjNWQ0MDM3XCIsODAwOlwiIzRlMzQyZVwiLDkwMDpcIiMzZTI3MjNcIixBMTAwOlwiI2Q3Y2NjOFwiLEEyMDA6XCIjYmNhYWE0XCIsQTQwMDpcIiM4ZDZlNjNcIixBNzAwOlwiIzVkNDAzN1wifTt0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIHI9ezUwOlwiI2VjZWZmMVwiLDEwMDpcIiNjZmQ4ZGNcIiwyMDA6XCIjYjBiZWM1XCIsMzAwOlwiIzkwYTRhZVwiLDQwMDpcIiM3ODkwOWNcIiw1MDA6XCIjNjA3ZDhiXCIsNjAwOlwiIzU0NmU3YVwiLDcwMDpcIiM0NTVhNjRcIiw4MDA6XCIjMzc0NzRmXCIsOTAwOlwiIzI2MzIzOFwiLEExMDA6XCIjY2ZkOGRjXCIsQTIwMDpcIiNiMGJlYzVcIixBNDAwOlwiIzc4OTA5Y1wiLEE3MDA6XCIjNDU1YTY0XCJ9O3QuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpO3ZhciByPW4oMCksbz1uLm4ociksYT1uKDIyKSxpPW4oMTkpLGw9bigzKSxzPW4oNDApLHU9big0MSksYz1uKDE4MyksZD1uLm4oYykscD1uKDU3KSxmPXt0YWJsZTpsLnEsdGFibGVIZWFkOmwudCx0YWJsZUJvZHk6bC5yLHRhYmxlUm93OmwudSx0YWJsZUNlbGw6T2JqZWN0KHAuY3VycnlIYXJkKShvLmEuY3JlYXRlRWxlbWVudChsLnMse2FsaWduOlwiaW5oZXJpdFwifSkpLHBhcmFncmFwaDpPYmplY3QocC5jdXJyeUhhcmQpKG8uYS5jcmVhdGVFbGVtZW50KGwudyx7dmFyaWFudDpcImJvZHkxXCIsY29tcG9uZW50OlwicFwifSkpfSxtPU9iamVjdChwLmN1cnJ5SGFyZCkoby5hLmNyZWF0ZUVsZW1lbnQoZC5hLHtyZW5kZXJlcnM6Zn0pKSxnPW4oNSksaD1uLm4oZyksYj1uKDQpLHk9bi5uKGIpLHY9big1OCksUz1uLm4odik7ZnVuY3Rpb24gRShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtyZXR1cm4gZS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gUygpKHt9LGUsblt0XSl9LHQpfWZ1bmN0aW9uIHgoZSl7dmFyIHQsbj1lLm5vZGUscj1lLnN0eWxlc2hlZXQsYT1lLnN0eWxlLGk9dm9pZCAwPT09YT97fTphLGw9ZS51c2VJbmxpbmVTdHlsZXMscz1lLmtleSx1PW4ucHJvcGVydGllcyxjPW4udHlwZSxkPW4udGFnTmFtZSxwPW4udmFsdWU7aWYoXCJ0ZXh0XCI9PT1jKXJldHVybiBwO2lmKGQpe3ZhciBmPWZ1bmN0aW9uKGUsdCl7dmFyIG49MDtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG4rPTEsci5tYXAoZnVuY3Rpb24ocixvKXtyZXR1cm4geCh7bm9kZTpyLHN0eWxlc2hlZXQ6ZSx1c2VJbmxpbmVTdHlsZXM6dCxrZXk6XCJjb2RlLXNlZ21lbnQtXCIuY29uY2F0KG4sXCItXCIpLmNvbmNhdChvKX0pfSl9fShyLGwpLG09bCYmdS5jbGFzc05hbWUmJnUuY2xhc3NOYW1lLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hcltlXX0pLGc9bSYmbS5sZW5ndGg/bTp2b2lkIDAsaD1sP1MoKSh7fSx1LHtjbGFzc05hbWU6Z30se3N0eWxlOkUodS5jbGFzc05hbWUsT2JqZWN0LmFzc2lnbih7fSx1LnN0eWxlLGkpLHIpfSk6UygpKHt9LHUse2NsYXNzTmFtZToodD11LmNsYXNzTmFtZSx0LmpvaW4oXCIgXCIpKX0pLGI9ZihuLmNoaWxkcmVuKTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoZCx5KCkoe2tleTpzfSxoKSxiKX19dmFyIHc9L1xcbi9nO2Z1bmN0aW9uIGsoZSl7dmFyIHQ9ZS5jb2RlU3RyaW5nLG49ZS5jb2RlU3R5bGUscj1lLmNvbnRhaW5lclN0eWxlLGE9dm9pZCAwPT09cj97ZmxvYXQ6XCJsZWZ0XCIscGFkZGluZ1JpZ2h0OlwiMTBweFwifTpyLGk9ZS5udW1iZXJTdHlsZSxsPXZvaWQgMD09PWk/e306aSxzPWUuc3RhcnRpbmdMaW5lTnVtYmVyO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChcImNvZGVcIix7c3R5bGU6T2JqZWN0LmFzc2lnbih7fSxuLGEpfSxmdW5jdGlvbihlKXt2YXIgdD1lLmxpbmVzLG49ZS5zdGFydGluZ0xpbmVOdW1iZXIscj1lLnN0eWxlO3JldHVybiB0Lm1hcChmdW5jdGlvbihlLHQpe3ZhciBhPXQrbjtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse2tleTpcImxpbmUtXCIuY29uY2F0KHQpLGNsYXNzTmFtZTpcInJlYWN0LXN5bnRheC1oaWdobGlnaHRlci1saW5lLW51bWJlclwiLHN0eWxlOlwiZnVuY3Rpb25cIj09dHlwZW9mIHI/cihhKTpyfSxcIlwiLmNvbmNhdChhLFwiXFxuXCIpKX0pfSh7bGluZXM6dC5yZXBsYWNlKC9cXG4kLyxcIlwiKS5zcGxpdChcIlxcblwiKSxzdHlsZTpsLHN0YXJ0aW5nTGluZU51bWJlcjpzfSkpfWZ1bmN0aW9uIF8oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUubGluZU51bWJlcixyPWUubGluZVByb3BzLG89ZS5jbGFzc05hbWUsYT12b2lkIDA9PT1vP1tdOm8saT0oXCJmdW5jdGlvblwiPT10eXBlb2Ygcj9yKG4pOnIpfHx7fTtyZXR1cm4gaS5jbGFzc05hbWU9aS5jbGFzc05hbWU/YS5jb25jYXQoaS5jbGFzc05hbWUpOmEse3R5cGU6XCJlbGVtZW50XCIsdGFnTmFtZTpcInNwYW5cIixwcm9wZXJ0aWVzOmksY2hpbGRyZW46dH19ZnVuY3Rpb24gVChlLHQpe2Zvcih2YXIgbj1mdW5jdGlvbiBlKHQpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10scj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06W10sbz0wO288dC5sZW5ndGg7bysrKXt2YXIgYT10W29dO2lmKFwidGV4dFwiPT09YS50eXBlKXIucHVzaChfKHtjaGlsZHJlbjpbYV0sY2xhc3NOYW1lOm59KSk7ZWxzZSBpZihhLmNoaWxkcmVuKXt2YXIgaT1uLmNvbmNhdChhLnByb3BlcnRpZXMuY2xhc3NOYW1lKTtyPXIuY29uY2F0KGUoYS5jaGlsZHJlbixpKSl9fXJldHVybiByfShlLnZhbHVlKSxyPVtdLG89LTEsYT0wLGk9ZnVuY3Rpb24oKXt2YXIgZT1uW2FdLGk9ZS5jaGlsZHJlblswXS52YWx1ZTtpZihpLm1hdGNoKHcpKXt2YXIgbD1pLnNwbGl0KFwiXFxuXCIpO2wuZm9yRWFjaChmdW5jdGlvbihpLHMpe3ZhciB1PXIubGVuZ3RoKzEsYz17dHlwZTpcInRleHRcIix2YWx1ZTpcIlwiLmNvbmNhdChpLFwiXFxuXCIpfTtpZigwPT09cyl7dmFyIGQ9bi5zbGljZShvKzEsYSkuY29uY2F0KF8oe2NoaWxkcmVuOltjXSxjbGFzc05hbWU6ZS5wcm9wZXJ0aWVzLmNsYXNzTmFtZX0pKTtyLnB1c2goXyh7Y2hpbGRyZW46ZCxsaW5lTnVtYmVyOnUsbGluZVByb3BzOnR9KSl9ZWxzZSBpZihzPT09bC5sZW5ndGgtMSl7aWYoblthKzFdJiZuW2ErMV0uY2hpbGRyZW4mJm5bYSsxXS5jaGlsZHJlblswXSl7dmFyIHA9Xyh7Y2hpbGRyZW46W3t0eXBlOlwidGV4dFwiLHZhbHVlOlwiXCIuY29uY2F0KGkpfV0sY2xhc3NOYW1lOmUucHJvcGVydGllcy5jbGFzc05hbWV9KTtuLnNwbGljZShhKzEsMCxwKX1lbHNlIHIucHVzaChfKHtjaGlsZHJlbjpbY10sbGluZU51bWJlcjp1LGxpbmVQcm9wczp0LGNsYXNzTmFtZTplLnByb3BlcnRpZXMuY2xhc3NOYW1lfSkpfWVsc2Ugci5wdXNoKF8oe2NoaWxkcmVuOltjXSxsaW5lTnVtYmVyOnUsbGluZVByb3BzOnQsY2xhc3NOYW1lOmUucHJvcGVydGllcy5jbGFzc05hbWV9KSl9KSxvPWF9YSsrfTthPG4ubGVuZ3RoOylpKCk7aWYobyE9PW4ubGVuZ3RoLTEpe3ZhciBsPW4uc2xpY2UobysxLG4ubGVuZ3RoKTtsJiZsLmxlbmd0aCYmci5wdXNoKF8oe2NoaWxkcmVuOmwsbGluZU51bWJlcjpyLmxlbmd0aCsxLGxpbmVQcm9wczp0fSkpfXJldHVybiByfWZ1bmN0aW9uIEEoZSl7dmFyIHQ9ZS5yb3dzLG49ZS5zdHlsZXNoZWV0LHI9ZS51c2VJbmxpbmVTdHlsZXM7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgoe25vZGU6ZSxzdHlsZXNoZWV0Om4sdXNlSW5saW5lU3R5bGVzOnIsa2V5OlwiY29kZS1zZWdlbWVudFwiLmNvbmNhdCh0KX0pfSl9dmFyIEMsTyxJPW4oMTg1KSxOPShDPW4ubihJKS5hLE89eydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSc6e2NvbG9yOlwiYmxhY2tcIixiYWNrZ3JvdW5kOlwibm9uZVwiLHRleHRTaGFkb3c6XCIwIDFweCB3aGl0ZVwiLGZvbnRGYW1pbHk6XCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIix0ZXh0QWxpZ246XCJsZWZ0XCIsd2hpdGVTcGFjZTpcInByZVwiLHdvcmRTcGFjaW5nOlwibm9ybWFsXCIsd29yZEJyZWFrOlwibm9ybWFsXCIsd29yZFdyYXA6XCJub3JtYWxcIixsaW5lSGVpZ2h0OlwiMS41XCIsTW96VGFiU2l6ZTpcIjRcIixPVGFiU2l6ZTpcIjRcIix0YWJTaXplOlwiNFwiLFdlYmtpdEh5cGhlbnM6XCJub25lXCIsTW96SHlwaGVuczpcIm5vbmVcIixtc0h5cGhlbnM6XCJub25lXCIsaHlwaGVuczpcIm5vbmVcIn0sJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nOntjb2xvcjpcImJsYWNrXCIsYmFja2dyb3VuZDpcIiNmNWYyZjBcIix0ZXh0U2hhZG93OlwiMCAxcHggd2hpdGVcIixmb250RmFtaWx5OlwiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlXCIsdGV4dEFsaWduOlwibGVmdFwiLHdoaXRlU3BhY2U6XCJwcmVcIix3b3JkU3BhY2luZzpcIm5vcm1hbFwiLHdvcmRCcmVhazpcIm5vcm1hbFwiLHdvcmRXcmFwOlwibm9ybWFsXCIsbGluZUhlaWdodDpcIjEuNVwiLE1velRhYlNpemU6XCI0XCIsT1RhYlNpemU6XCI0XCIsdGFiU2l6ZTpcIjRcIixXZWJraXRIeXBoZW5zOlwibm9uZVwiLE1vekh5cGhlbnM6XCJub25lXCIsbXNIeXBoZW5zOlwibm9uZVwiLGh5cGhlbnM6XCJub25lXCIscGFkZGluZzpcIjFlbVwiLG1hcmdpbjpcIi41ZW0gMFwiLG92ZXJmbG93OlwiYXV0b1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdwcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIDo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6LW1vei1zZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzpcIm5vbmVcIixiYWNrZ3JvdW5kOlwiI2IzZDRmY1wifSwncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93Olwibm9uZVwiLGJhY2tncm91bmQ6XCIjYjNkNGZjXCJ9LCdjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSA6OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6XCJub25lXCIsYmFja2dyb3VuZDpcIiNiM2Q0ZmNcIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJzp7YmFja2dyb3VuZDpcIiNmNWYyZjBcIixwYWRkaW5nOlwiLjFlbVwiLGJvcmRlclJhZGl1czpcIi4zZW1cIix3aGl0ZVNwYWNlOlwibm9ybWFsXCJ9LGNvbW1lbnQ6e2NvbG9yOlwic2xhdGVncmF5XCJ9LHByb2xvZzp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0sZG9jdHlwZTp7Y29sb3I6XCJzbGF0ZWdyYXlcIn0sY2RhdGE6e2NvbG9yOlwic2xhdGVncmF5XCJ9LHB1bmN0dWF0aW9uOntjb2xvcjpcIiM5OTlcIn0sXCIubmFtZXNwYWNlXCI6e09wYWNpdHk6XCIuN1wifSxwcm9wZXJ0eTp7Y29sb3I6XCIjOTA1XCJ9LHRhZzp7Y29sb3I6XCIjOTA1XCJ9LGJvb2xlYW46e2NvbG9yOlwiIzkwNVwifSxudW1iZXI6e2NvbG9yOlwiIzkwNVwifSxjb25zdGFudDp7Y29sb3I6XCIjOTA1XCJ9LHN5bWJvbDp7Y29sb3I6XCIjOTA1XCJ9LGRlbGV0ZWQ6e2NvbG9yOlwiIzkwNVwifSxzZWxlY3Rvcjp7Y29sb3I6XCIjNjkwXCJ9LFwiYXR0ci1uYW1lXCI6e2NvbG9yOlwiIzY5MFwifSxzdHJpbmc6e2NvbG9yOlwiIzY5MFwifSxjaGFyOntjb2xvcjpcIiM2OTBcIn0sYnVpbHRpbjp7Y29sb3I6XCIjNjkwXCJ9LGluc2VydGVkOntjb2xvcjpcIiM2OTBcIn0sb3BlcmF0b3I6e2NvbG9yOlwiIzlhNmUzYVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCAxMDAlLCAuNSlcIn0sZW50aXR5Ontjb2xvcjpcIiM5YTZlM2FcIixiYWNrZ3JvdW5kOlwiaHNsYSgwLCAwJSwgMTAwJSwgLjUpXCIsY3Vyc29yOlwiaGVscFwifSx1cmw6e2NvbG9yOlwiIzlhNmUzYVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCAxMDAlLCAuNSlcIn0sXCIubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmdcIjp7Y29sb3I6XCIjOWE2ZTNhXCIsYmFja2dyb3VuZDpcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwifSxcIi5zdHlsZSAudG9rZW4uc3RyaW5nXCI6e2NvbG9yOlwiIzlhNmUzYVwiLGJhY2tncm91bmQ6XCJoc2xhKDAsIDAlLCAxMDAlLCAuNSlcIn0sYXRydWxlOntjb2xvcjpcIiMwN2FcIn0sXCJhdHRyLXZhbHVlXCI6e2NvbG9yOlwiIzA3YVwifSxrZXl3b3JkOntjb2xvcjpcIiMwN2FcIn0sZnVuY3Rpb246e2NvbG9yOlwiI0RENEE2OFwifSxcImNsYXNzLW5hbWVcIjp7Y29sb3I6XCIjREQ0QTY4XCJ9LHJlZ2V4Ontjb2xvcjpcIiNlOTBcIn0saW1wb3J0YW50Ontjb2xvcjpcIiNlOTBcIixmb250V2VpZ2h0OlwiYm9sZFwifSx2YXJpYWJsZTp7Y29sb3I6XCIjZTkwXCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LGl0YWxpYzp7Zm9udFN0eWxlOlwiaXRhbGljXCJ9fSxmdW5jdGlvbihlKXt2YXIgdD1lLmxhbmd1YWdlLG49ZS5jaGlsZHJlbixyPWUuc3R5bGUsYT12b2lkIDA9PT1yP086cixpPWUuY3VzdG9tU3R5bGUsbD12b2lkIDA9PT1pP3t9Omkscz1lLmNvZGVUYWdQcm9wcyx1PXZvaWQgMD09PXM/e3N0eWxlOmFbJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdJ119OnMsYz1lLnVzZUlubGluZVN0eWxlcyxkPXZvaWQgMD09PWN8fGMscD1lLnNob3dMaW5lTnVtYmVycyxmPXZvaWQgMCE9PXAmJnAsbT1lLnN0YXJ0aW5nTGluZU51bWJlcixnPXZvaWQgMD09PW0/MTptLGI9ZS5saW5lTnVtYmVyQ29udGFpbmVyU3R5bGUseT1lLmxpbmVOdW1iZXJTdHlsZSx2PWUud3JhcExpbmVzLFM9ZS5saW5lUHJvcHMsRT12b2lkIDA9PT1TP3t9OlMseD1lLnJlbmRlcmVyLHc9ZS5QcmVUYWcsXz12b2lkIDA9PT13P1wicHJlXCI6dyxJPWUuQ29kZVRhZyxOPXZvaWQgMD09PUk/XCJjb2RlXCI6SSxSPWUuY29kZSxQPXZvaWQgMD09PVI/QXJyYXkuaXNBcnJheShuKT9uWzBdOm46UixNPWUuYXN0R2VuZXJhdG9yLEw9aCgpKGUsW1wibGFuZ3VhZ2VcIixcImNoaWxkcmVuXCIsXCJzdHlsZVwiLFwiY3VzdG9tU3R5bGVcIixcImNvZGVUYWdQcm9wc1wiLFwidXNlSW5saW5lU3R5bGVzXCIsXCJzaG93TGluZU51bWJlcnNcIixcInN0YXJ0aW5nTGluZU51bWJlclwiLFwibGluZU51bWJlckNvbnRhaW5lclN0eWxlXCIsXCJsaW5lTnVtYmVyU3R5bGVcIixcIndyYXBMaW5lc1wiLFwibGluZVByb3BzXCIsXCJyZW5kZXJlclwiLFwiUHJlVGFnXCIsXCJDb2RlVGFnXCIsXCJjb2RlXCIsXCJhc3RHZW5lcmF0b3JcIl0pO009TXx8Qzt2YXIgRD1mP28uYS5jcmVhdGVFbGVtZW50KGsse2NvbnRhaW5lclN0eWxlOmIsY29kZVN0eWxlOnUuc3R5bGV8fHt9LG51bWJlclN0eWxlOnksc3RhcnRpbmdMaW5lTnVtYmVyOmcsY29kZVN0cmluZzpQfSk6bnVsbCxGPWEuaGxqc3x8YVsncHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSddfHx7YmFja2dyb3VuZENvbG9yOlwiI2ZmZlwifSxCPWQ/T2JqZWN0LmFzc2lnbih7fSxMLHtzdHlsZTpPYmplY3QuYXNzaWduKHt9LEYsbCl9KTpPYmplY3QuYXNzaWduKHt9LEwse2NsYXNzTmFtZTpcImhsanNcIn0pO2lmKCFNKXJldHVybiBvLmEuY3JlYXRlRWxlbWVudChfLEIsRCxvLmEuY3JlYXRlRWxlbWVudChOLHUsUCkpO3Y9ISgheHx8dm9pZCAwIT09dil8fHYseD14fHxBO3ZhciBqPVt7dHlwZTpcInRleHRcIix2YWx1ZTpQfV0sVT1mdW5jdGlvbihlKXt2YXIgdD1lLmFzdEdlbmVyYXRvcixuPWUubGFuZ3VhZ2Uscj1lLmNvZGUsbz1lLmRlZmF1bHRDb2RlVmFsdWU7aWYodC5nZXRMYW5ndWFnZSl7dmFyIGE9biYmdC5nZXRMYW5ndWFnZShuKTtyZXR1cm5cInRleHRcIj09PW4/e3ZhbHVlOm8sbGFuZ3VhZ2U6XCJ0ZXh0XCJ9OmE/dC5oaWdobGlnaHQobixyKTp0LmhpZ2hsaWdodEF1dG8ocil9dHJ5e3JldHVybiBuJiZcInRleHRcIiE9PW4/e3ZhbHVlOnQuaGlnaGxpZ2h0KHIsbil9Ont2YWx1ZTpvfX1jYXRjaChlKXtyZXR1cm57dmFsdWU6b319fSh7YXN0R2VuZXJhdG9yOk0sbGFuZ3VhZ2U6dCxjb2RlOlAsZGVmYXVsdENvZGVWYWx1ZTpqfSk7bnVsbD09PVUubGFuZ3VhZ2UmJihVLnZhbHVlPWopO3ZhciB6PXY/VChVLEUpOlUudmFsdWU7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KF8sQixELG8uYS5jcmVhdGVFbGVtZW50KE4sdSx4KHtyb3dzOnosc3R5bGVzaGVldDphLHVzZUlubGluZVN0eWxlczpkfSkpKX0pO04uc3VwcG9ydGVkTGFuZ3VhZ2VzPVtcImFiYXBcIixcImFjdGlvbnNjcmlwdFwiLFwiYWRhXCIsXCJhcGFjaGVjb25mXCIsXCJhcGxcIixcImFwcGxlc2NyaXB0XCIsXCJhcmR1aW5vXCIsXCJhcmZmXCIsXCJhc2NpaWRvY1wiLFwiYXNtNjUwMlwiLFwiYXNwbmV0XCIsXCJhdXRvaG90a2V5XCIsXCJhdXRvaXRcIixcImJhc2hcIixcImJhc2ljXCIsXCJiYXRjaFwiLFwiYmlzb25cIixcImJyYWluZnVja1wiLFwiYnJvXCIsXCJjXCIsXCJjbGlrZVwiLFwiY2xvanVyZVwiLFwiY29mZmVlc2NyaXB0XCIsXCJjcHBcIixcImNyeXN0YWxcIixcImNzaGFycFwiLFwiY3NwXCIsXCJjc3MtZXh0cmFzXCIsXCJjc3NcIixcImRcIixcImRhcnRcIixcImRpZmZcIixcImRqYW5nb1wiLFwiZG9ja2VyXCIsXCJlaWZmZWxcIixcImVsaXhpclwiLFwiZWxtXCIsXCJlcmJcIixcImVybGFuZ1wiLFwiZmxvd1wiLFwiZm9ydHJhblwiLFwiZnNoYXJwXCIsXCJnZWRjb21cIixcImdoZXJraW5cIixcImdpdFwiLFwiZ2xzbFwiLFwiZ29cIixcImdyYXBocWxcIixcImdyb292eVwiLFwiaGFtbFwiLFwiaGFuZGxlYmFyc1wiLFwiaGFza2VsbFwiLFwiaGF4ZVwiLFwiaHBrcFwiLFwiaHN0c1wiLFwiaHR0cFwiLFwiaWNoaWdvamFtXCIsXCJpY29uXCIsXCJpbmZvcm03XCIsXCJpbmlcIixcImlvXCIsXCJqXCIsXCJqYXZhXCIsXCJqYXZhc2NyaXB0XCIsXCJqb2xpZVwiLFwianNvblwiLFwianN4XCIsXCJqdWxpYVwiLFwia2V5bWFuXCIsXCJrb3RsaW5cIixcImxhdGV4XCIsXCJsZXNzXCIsXCJsaXF1aWRcIixcImxpc3BcIixcImxpdmVzY3JpcHRcIixcImxvbGNvZGVcIixcImx1YVwiLFwibWFrZWZpbGVcIixcIm1hcmtkb3duXCIsXCJtYXJrdXAtdGVtcGxhdGluZ1wiLFwibWFya3VwXCIsXCJtYXRsYWJcIixcIm1lbFwiLFwibWl6YXJcIixcIm1vbmtleVwiLFwibjRqc1wiLFwibmFzbVwiLFwibmdpbnhcIixcIm5pbVwiLFwibml4XCIsXCJuc2lzXCIsXCJvYmplY3RpdmVjXCIsXCJvY2FtbFwiLFwib3BlbmNsXCIsXCJvelwiLFwicGFyaWdwXCIsXCJwYXJzZXJcIixcInBhc2NhbFwiLFwicGVybFwiLFwicGhwLWV4dHJhc1wiLFwicGhwXCIsXCJwbHNxbFwiLFwicG93ZXJzaGVsbFwiLFwicHJvY2Vzc2luZ1wiLFwicHJvbG9nXCIsXCJwcm9wZXJ0aWVzXCIsXCJwcm90b2J1ZlwiLFwicHVnXCIsXCJwdXBwZXRcIixcInB1cmVcIixcInB5dGhvblwiLFwicVwiLFwicW9yZVwiLFwiclwiLFwicmVhc29uXCIsXCJyZW5weVwiLFwicmVzdFwiLFwicmlwXCIsXCJyb2JvY29uZlwiLFwicnVieVwiLFwicnVzdFwiLFwic2FzXCIsXCJzYXNzXCIsXCJzY2FsYVwiLFwic2NoZW1lXCIsXCJzY3NzXCIsXCJzbWFsbHRhbGtcIixcInNtYXJ0eVwiLFwic295XCIsXCJzcWxcIixcInN0eWx1c1wiLFwic3dpZnRcIixcInRhcFwiLFwidGNsXCIsXCJ0ZXh0aWxlXCIsXCJ0c3hcIixcInR0MlwiLFwidHdpZ1wiLFwidHlwZXNjcmlwdFwiLFwidmJuZXRcIixcInZlbG9jaXR5XCIsXCJ2ZXJpbG9nXCIsXCJ2aGRsXCIsXCJ2aW1cIixcInZpc3VhbC1iYXNpY1wiLFwid2FzbVwiLFwid2lraVwiLFwieGVvcmFcIixcInhvam9cIixcInhxdWVyeVwiLFwieWFtbFwiXTt2YXIgUj1OLFA9big1NiksTT1uKDEpO2Z1bmN0aW9uIEwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9bC5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9KCl9ZnVuY3Rpb24gRChlKXt2YXIgdD1lLkRlbW9Db21wb25lbnQsbj1lLnRpdGxlLGE9TChPYmplY3Qoci51c2VTdGF0ZSkoITEpLDIpLGk9YVswXSxzPWFbMV0sdT1vLmEuY3JlYXRlRWxlbWVudChsLnAse2NoZWNrZWQ6aSxvbkNoYW5nZTpmdW5jdGlvbihlLHQpe3JldHVybiBzKHQpfX0pO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChcInNlY3Rpb25cIix7c3R5bGU6e21hcmdpbjpcIjQ4cHggMFwifX0sby5hLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6e2Rpc3BsYXk6XCJmbGV4XCIsYWxpZ25JdGVtczpcImNlbnRlclwifX0sby5hLmNyZWF0ZUVsZW1lbnQobC53LHt2YXJpYW50OlwiaDVcIixzdHlsZTp7ZmxleDpcIjEgMSAwXCJ9fSxuKSxvLmEuY3JlYXRlRWxlbWVudChsLmYse2NvbnRyb2w6dSxsYWJlbDpcIlNvdXJjZVwifSkpLG8uYS5jcmVhdGVFbGVtZW50KG0se3NvdXJjZTp0Ll9fbWFya2Rvd25fX30pLG8uYS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0eWxlOnt3aWR0aDpcIjEwMCVcIixtYXJnaW5Ub3A6XCI4cHhcIn19LG8uYS5jcmVhdGVFbGVtZW50KHQsbnVsbCksby5hLmNyZWF0ZUVsZW1lbnQobC5jLHtpbjppfSxvLmEuY3JlYXRlRWxlbWVudChSLHtsYW5ndWFnZTpcImpzeFwiLHN0eWxlOlAuYXRvbURhcmt9LHQuX19zb3VyY2VfXy5yZXBsYWNlKC9leHBvcnQgZGVmYXVsdFxccyovZyxcIlwiKSkpKSl9RC5wcm9wVHlwZXM9e0RlbW9Db21wb25lbnQ6TS5hbnkuaXNSZXF1aXJlZCx0aXRsZTpNLnN0cmluZy5pc1JlcXVpcmVkfTt2YXIgRj1uKDE4NiksQj1uLm4oRiksaj1uKDE4OCksVT1uLm4oaiksej1uKDE4OSksSD1uLm4oeiksVz1uKDE5MCksRz1uLm4oVyksVj1uKDE5MSksJD1uLm4oVikscT1uKDE5MiksSz1uLm4ocSksWT1uKDE5MyksWD1uLm4oWSksWj1uKDE5NCksUT1uLm4oWiksSj1uKDE5NSksZWU9bi5uKEopLHRlPW4oMTk2KSxuZT1uLm4odGUpLHJlPW4oMTk3KSxvZT1uLm4ocmUpLGFlPW4oMTk4KSxpZT1uLm4oYWUpLGxlPW4oMTk5KSxzZT1uLm4obGUpLHVlPW4oMjAwKSxjZT1uLm4odWUpLGRlPW4oMjAyKSxwZT1uLm4oZGUpLGZlPW4oMjAzKSxtZT1uLm4oZmUpLGdlPW4oMjA0KSxoZT1uLm4oZ2UpLGJlPW4oMTEpLHllPW4oMTApO2Z1bmN0aW9uIHZlKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBTZShlKXt2YXIgdD1lLmZpZWxkcyxuPWUudmFsdWUscj1lLm9uQ2hhbmdlLGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcihmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmUoZSx0LG5bdF0pfSl9cmV0dXJuIGV9KHt9LG4sdmUoe30sZSx0KSkpfTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6e3BhZGRpbmc6XCIxNnB4XCIsbWluV2lkdGg6XCIyNTBweFwifX0sby5hLmNyZWF0ZUVsZW1lbnQobC53LHt2YXJpYW50OlwiaDZcIn0sXCJQcm9wc1wiKSx0Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQobC5nLHtrZXk6ZS5wcm9wTmFtZX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUucHJvcE5hbWUsYT1lLnByb3BUeXBlLGk9ZS5sYWJlbCxzPWUuaGVscGVyVGV4dCx1PWUub3B0aW9ucztpZihhPT09TS5zdHJpbmcpcmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGwudix7dmFsdWU6dFtyXSxvbkNoYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gbihyLGUudGFyZ2V0LnZhbHVlKX0sbGFiZWw6aSxoZWxwZXJUZXh0OnN9KTtpZihhPT09TS5ib29sKXJldHVybiBvLmEuY3JlYXRlRWxlbWVudChsLmYse2NvbnRyb2w6by5hLmNyZWF0ZUVsZW1lbnQobC5wLHtjaGVja2VkOnRbcl0sb25DaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG4ocixlLnRhcmdldC5jaGVja2VkKX19KSxsYWJlbDppfSk7aWYoYT09PU0ub25lT2YpcmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGwuZSxudWxsLG8uYS5jcmVhdGVFbGVtZW50KGwuaSxudWxsLGkpLG8uYS5jcmVhdGVFbGVtZW50KGwubyx7dmFsdWU6dFtyXSxvbkNoYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gbihyLGUudGFyZ2V0LnZhbHVlKX19LHUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChsLmwse2tleTplLHZhbHVlOmV9LFN0cmluZyhlKSl9KSksby5hLmNyZWF0ZUVsZW1lbnQobC5oLG51bGwscykpO3Rocm93IG5ldyBFcnJvcihcIlVua25vd24gcHJvcCB0eXBlIFwiLmNvbmNhdChhKSl9KGUsbixhKSl9KSl9ZnVuY3Rpb24gRWUoKXtyZXR1cm4oRWU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB4ZShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT1sLm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0oKX1TZS5wcm9wVHlwZXM9e2ZpZWxkczpNLmFycmF5LHZhbHVlOk0ub2JqZWN0LG9uQ2hhbmdlOk0uZnVuY307dmFyIHdlPVt7cHJvcE5hbWU6XCJsYWJlbFwiLGxhYmVsOlwiTGFiZWxcIixkZWZhdWx0VmFsdWU6XCJZb3VyIGZhdm91cml0ZSBmcnVpdFwiLHByb3BUeXBlOk0uc3RyaW5nfSx7cHJvcE5hbWU6XCJyZXF1aXJlZFwiLGxhYmVsOlwiUmVxdWlyZWRcIixkZWZhdWx0VmFsdWU6ITEscHJvcFR5cGU6TS5ib29sfSx7cHJvcE5hbWU6XCJlcnJvclwiLGxhYmVsOlwiRXJyb3IgU3RhdGVcIixkZWZhdWx0VmFsdWU6ITEscHJvcFR5cGU6TS5ib29sfSx7cHJvcE5hbWU6XCJkaXNhYmxlZFwiLGxhYmVsOlwiRGlzYWJsZWRcIixkZWZhdWx0VmFsdWU6ITEscHJvcFR5cGU6TS5ib29sfSx7cHJvcE5hbWU6XCJmdWxsV2lkdGhcIixsYWJlbDpcIkZ1bGwgV2lkdGhcIixkZWZhdWx0VmFsdWU6ITAscHJvcFR5cGU6TS5ib29sfSx7cHJvcE5hbWU6XCJjaGlwQ29sb3JcIixsYWJlbDpcIkNoaXAgQ29sb3JcIixkZWZhdWx0VmFsdWU6XCJkZWZhdWx0XCIscHJvcFR5cGU6TS5vbmVPZixvcHRpb25zOltcImRlZmF1bHRcIixcInByaW1hcnlcIixcInNlY29uZGFyeVwiXX0se3Byb3BOYW1lOlwiY2xlYXJJbnB1dE9uQmx1clwiLGxhYmVsOlwiQ2xlYXIgSW5wdXQgb24gQmx1clwiLGRlZmF1bHRWYWx1ZTohMSxwcm9wVHlwZTpNLmJvb2x9LHtwcm9wTmFtZTpcImZldGNoRGVsYXlcIixsYWJlbDpcIkZldGNoIERlbGF5XCIsZGVmYXVsdFZhbHVlOjAscHJvcFR5cGU6TS5vbmVPZixvcHRpb25zOlswLDEwMCw1MDAsMmUzXX0se3Byb3BOYW1lOlwidmFyaWFudFwiLGxhYmVsOlwiRGlzcGxheSB2YXJpYW50XCIsZGVmYXVsdFZhbHVlOlwic3RhbmRhcmRcIixwcm9wVHlwZTpNLm9uZU9mLG9wdGlvbnM6W1wic3RhbmRhcmRcIixcImZpbGxlZFwiLFwib3V0bGluZWRcIl19LHtwcm9wTmFtZTpcImhlbHBlclRleHRcIixsYWJlbDpcIkhlbHBlciB0ZXh0XCIsZGVmYXVsdFZhbHVlOlwiXCIscHJvcFR5cGU6TS5zdHJpbmd9XSxrZT13ZS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0LnByb3BOYW1lXT10LmRlZmF1bHRWYWx1ZSxlfSx7fSksX2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWV9O2Z1bmN0aW9uIFRlKCl7dmFyIGU9eGUoT2JqZWN0KHIudXNlU3RhdGUpKHllLmEuc2xpY2UoMCwyKSksMiksdD1lWzBdLG49ZVsxXSxhPXhlKE9iamVjdChyLnVzZVN0YXRlKShrZSksMiksaT1hWzBdLHM9YVsxXTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQobC5tLG51bGwsby5hLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6e2Rpc3BsYXk6XCJmbGV4XCIsYWxpZ25JdGVtczpcInN0cmV0Y2hcIn19LG8uYS5jcmVhdGVFbGVtZW50KFNlLHtmaWVsZHM6d2UsdmFsdWU6aSxvbkNoYW5nZTpzfSksby5hLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6e2ZsZXg6XCIxIDEgMFwifX0sby5hLmNyZWF0ZUVsZW1lbnQobC53LHt2YXJpYW50OlwiaDZcIn0sXCJTb3VyY2VcIiksby5hLmNyZWF0ZUVsZW1lbnQoUix7bGFuZ3VhZ2U6XCJqc3hcIixzdHlsZTpQLmF0b21EYXJrfSxmdW5jdGlvbihlKXt2YXIgdD1PYmplY3QuZW50cmllcyhlKS5maWx0ZXIoX2UpLm1hcChmdW5jdGlvbihlKXt2YXIgdD14ZShlLDIpLG49dFswXSxyPXRbMV07cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHI/XCIgICAgICAgIFwiLmNvbmNhdChuLCc9XCInKS5jb25jYXQociwnXCInKTpcIiAgICAgICAgXCIuY29uY2F0KG4sXCI9eyBcIikuY29uY2F0KEpTT04uc3RyaW5naWZ5KHIpLFwiIH1cIil9KS5qb2luKFwiXFxuXCIpO3JldHVyblwiXFxuZnVuY3Rpb24gTXlQaWNrZXIoKSB7XFxuICAgIC8vcmVxdWlyZXMgUmVhY3QgMTYuOCtcXG4gICAgY29uc3QgWyBpdGVtcywgc2V0SXRlbXMgXSA9IHVzZVN0YXRlKEFMTF9GUlVJVFMuc2xpY2UoMCwgMikpO1xcbiAgICByZXR1cm4gPE11bHRpUGlja2VyXFxuICAgICAgICB2YWx1ZT17IGl0ZW1zIH1cXG4gICAgICAgIG9uQ2hhbmdlPXsgc2V0SXRlbXMgfVxcbiAgICAgICAgaXRlbVRvU3RyaW5nPXsgZnJ1aXQgPT4gZnJ1aXQubmFtZSB9XFxuICAgICAgICBnZXRTdWdnZXN0ZWRJdGVtcz17IGdldFN1Z2dlc3RlZEZydWl0U3luYyB9XFxuXCIuY29uY2F0KHQsXCIgICAgICAgIFxcbiAgICAvPjtcXG59XFxuXCIpLnRyaW0oKX0oaSkpKSksby5hLmNyZWF0ZUVsZW1lbnQobC5kLG51bGwpLG8uYS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0eWxlOntwYWRkaW5nOlwiMzJweFwifX0sby5hLmNyZWF0ZUVsZW1lbnQobC53LHt2YXJpYW50OlwiaDZcIn0sXCJSZXN1bHRcIiksby5hLmNyZWF0ZUVsZW1lbnQoYmUuYSxFZSh7dmFsdWU6dCxvbkNoYW5nZTpuLGl0ZW1Ub1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfSxnZXRTdWdnZXN0ZWRJdGVtczp5ZS5ifSxpKSkpKX12YXIgQWU9T2JqZWN0KGkuY3JlYXRlTXVpVGhlbWUpKHtwYWxldHRlOntwcmltYXJ5OnMuYmx1ZSxzZWNvbmRhcnk6cy5yZWR9LHR5cG9ncmFwaHk6e3VzZU5leHRWYXJpYW50czohMH19KTtPYmplY3QoYS5yZW5kZXIpKG8uYS5jcmVhdGVFbGVtZW50KGZ1bmN0aW9uKCl7dmFyIGU9XCJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9cIi5jb25jYXQodS5uYW1lKSx0PXUucmVwb3NpdG9yeS51cmwsbj1cIlwiLmNvbmNhdCh0LFwiL2Jsb2IvbWFzdGVyL1JFQURNRS5tZFwiKSxyPVwiXCIuY29uY2F0KHQsXCIvYmxvYi9tYXN0ZXIvQ0hBTkdFTE9HLm1kXCIpO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChpLk11aVRoZW1lUHJvdmlkZXIse3RoZW1lOkFlfSxvLmEuY3JlYXRlRWxlbWVudChsLncse2NvbXBvbmVudDpcImRpdlwiLHN0eWxlOnttYXhXaWR0aDpcIjg1MHB4XCIsbWFyZ2luOlwiMCBhdXRvXCIscGFkZGluZ0JvdHRvbTpcIjUwMHB4XCJ9fSxvLmEuY3JlYXRlRWxlbWVudChsLncse3ZhcmlhbnQ6XCJoMlwifSxcIk1hdGVyaWFsIE11bHRpIFBpY2tlciBcIix1LnZlcnNpb24pLG8uYS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsbnVsbCxvLmEuY3JlYXRlRWxlbWVudChsLmsse2hyZWY6dS5yZXBvc2l0b3J5LnVybH0sXCJHaXRodWJcIiksXCLCoMK3wqBcIixvLmEuY3JlYXRlRWxlbWVudChsLmsse2hyZWY6ZX0sXCJOUE1cIiksXCLCoMK3wqBcIixvLmEuY3JlYXRlRWxlbWVudChsLmsse2hyZWY6bn0sXCJSZWFkbWVcIiksXCLCoMK3wqBcIixvLmEuY3JlYXRlRWxlbWVudChsLmsse2hyZWY6cn0sXCJDaGFuZ2Vsb2dcIikpLG8uYS5jcmVhdGVFbGVtZW50KEQse3RpdGxlOlwiU2ltcGxlIHN5bmNocm9ub3VzIHN1Z2dlc3Rpb24gbGlzdFwiLERlbW9Db21wb25lbnQ6Qi5hfSksby5hLmNyZWF0ZUVsZW1lbnQoRCx7dGl0bGU6XCJDaGlwcyB3cmFwIG9udG8gbXVsdGlwbGUgbGluZXNcIixEZW1vQ29tcG9uZW50OlUuYX0pLG8uYS5jcmVhdGVFbGVtZW50KEQse3RpdGxlOlwiQ2FuIGJlIGRpc2FibGVkXCIsRGVtb0NvbXBvbmVudDpILmF9KSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIlNob3dzIGVycm9yIHN0YXRlXCIsRGVtb0NvbXBvbmVudDpHLmF9KSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIkNsZWFyaW5nIHRoZSBpbnB1dCBmaWVsZCBvbiBibHVyXCIsRGVtb0NvbXBvbmVudDpoZS5hfSksby5hLmNyZWF0ZUVsZW1lbnQobC53LHt2YXJpYW50OlwiaDRcIn0sXCJQcm92aWRpbmcgc3VnZ2VzdGlvbnNcIiksby5hLmNyZWF0ZUVsZW1lbnQoRCx7dGl0bGU6XCJNaW5pbXVtIGlucHV0IGxlbmd0aCBmb3Igc3VnZ2VzdGlvbnNcIixEZW1vQ29tcG9uZW50OiQuYX0pLG8uYS5jcmVhdGVFbGVtZW50KEQse3RpdGxlOlwiQXN5bmNocm9ub3VzIHN1Z2dlc3Rpb24gbGlzdFwiLERlbW9Db21wb25lbnQ6WC5hfSksby5hLmNyZWF0ZUVsZW1lbnQoRCx7dGl0bGU6XCJUaHJvdHRsaW5nIHJlcXVlc3RzXCIsRGVtb0NvbXBvbmVudDpRLmF9KSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIkhhbmRsZSBzdWdnZXN0aW9uIGZldGNoIGVycm9yc1wiLERlbW9Db21wb25lbnQ6ZWUuYX0pLG8uYS5jcmVhdGVFbGVtZW50KEQse3RpdGxlOlwiRHluYW1pY2FsbHkgZ2VuZXJhdGVkIHN1Z2dlc3Rpb25zXCIsRGVtb0NvbXBvbmVudDpuZS5hfSksby5hLmNyZWF0ZUVsZW1lbnQoRCx7dGl0bGU6XCJTY3JvbGxhYmxlIGRyb3Bkb3duXCIsRGVtb0NvbXBvbmVudDpLLmF9KSxvLmEuY3JlYXRlRWxlbWVudChsLncse3ZhcmlhbnQ6XCJoNFwifSxcIkN1c3RvbWlzaW5nIHByZXNlbnRhdGlvblwiKSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIldpdGggaGVscGVyIHRleHRcIixEZW1vQ29tcG9uZW50Om9lLmF9KSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIlJlcXVpcmVkIGZpZWxkIGluZGljYXRvclwiLERlbW9Db21wb25lbnQ6aWUuYX0pLG8uYS5jcmVhdGVFbGVtZW50KEQse3RpdGxlOlwiQ3VzdG9tIGZpZWxkIGFwcGVhcmFuY2VcIixEZW1vQ29tcG9uZW50OnNlLmF9KSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIkN1c3RvbSBzdWdnZXN0aW9uIGNvbXBvbmVudHNcIixEZW1vQ29tcG9uZW50OmNlLmF9KSxvLmEuY3JlYXRlRWxlbWVudChELHt0aXRsZTpcIkN1c3RvbSBjaGlwIGFwcGVhcmFuY2VcIixEZW1vQ29tcG9uZW50OnBlLmF9KSxvLmEuY3JlYXRlRWxlbWVudChsLncse3ZhcmlhbnQ6XCJoNFwifSxcIlBlcmZvcm1hbmNlXCIpLG8uYS5jcmVhdGVFbGVtZW50KEQse3RpdGxlOlwiR2xvYmFsIGNhY2hlXCIsRGVtb0NvbXBvbmVudDptZS5hfSksby5hLmNyZWF0ZUVsZW1lbnQobC53LHt2YXJpYW50OlwiaDRcIn0sXCJTYW5kYm94XCIpLG8uYS5jcmVhdGVFbGVtZW50KFRlLG51bGwpKSl9LG51bGwpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZG9jc1wiKSl9XSk7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/package.json b/package.json index c1b8b31..0ff9912 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "material-multi-picker", - "version": "1.5.0", + "version": "1.5.1", "description": "A typeahead multiselect component for React and Material UI", "main": "lib/index.js", "repository": { diff --git a/src/PickerInput.js b/src/PickerInput.js index 5ed6f1a..5a4f392 100644 --- a/src/PickerInput.js +++ b/src/PickerInput.js @@ -10,7 +10,8 @@ const styles = theme => ({ InputRoot: { display: "flex", flexWrap: "wrap", - padding: `${ theme.spacing.unit * ONE_HALF }px 0` + padding: `${ theme.spacing.unit * ONE_HALF }px 0`, + boxSizing: "border-box" }, InputLabelRoot: { top: theme.spacing.unit