UNPKG

413 kBJavaScriptView Raw
1module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=79)}([function(e,t){e.exports=require("react")},function(e,t){e.exports=require("material-ui")},function(e,t){e.exports=require("we-edit")},function(e,t){e.exports=require("recompose")},function(e,t){e.exports=require("@babel/runtime/helpers/defineProperty")},function(e,t){e.exports=require("@babel/runtime/helpers/createClass")},function(e,t){e.exports=require("@babel/runtime/helpers/classCallCheck")},function(e,t){e.exports=require("@babel/runtime/helpers/possibleConstructorReturn")},function(e,t){e.exports=require("@babel/runtime/helpers/getPrototypeOf")},function(e,t){e.exports=require("@babel/runtime/helpers/inherits")},function(e,t){e.exports=require("@babel/runtime/helpers/extends")},function(e,t){e.exports=require("@babel/runtime/helpers/objectWithoutProperties")},function(e,t){e.exports=require("prop-types")},function(e,t){e.exports=require("@babel/runtime/helpers/assertThisInitialized")},function(e,t){e.exports=require("material-ui/MenuItem")},function(e,t){e.exports=require("react-redux")},function(e,t){e.exports=require("memoize-one")},function(e,t){e.exports=require("material-ui/svg-icons/action/picture-in-picture")},function(e,t){e.exports=require("@babel/runtime/helpers/objectDestructuringEmpty")},function(e,t){e.exports=require("material-ui/styles/colors")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/arrow-drop-down")},function(e,t){e.exports=require("material-ui/svg-icons/image/color-lens")},function(e,t){e.exports=require("material-ui/svg-icons/image/rotate-90-degrees-ccw")},function(e,t){e.exports=require("material-ui/styles/getMuiTheme")},function(e,t){e.exports=require("./representation-pagination")},function(e,t){e.exports=require("events")},function(e,t){e.exports=require("material-ui/styles/MuiThemeProvider")},function(e,t){e.exports=require("@babel/runtime/helpers/typeof")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-align-justify")},function(e,t){e.exports=require("material-ui/Popover")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-list-numbered")},function(e,t){e.exports=require("material-ui/svg-icons/toggle/check-box-outline-blank")},function(e,t){e.exports=require("material-ui/svg-icons/toggle/check-box")},function(e,t){e.exports=require("material-ui/RaisedButton")},function(e,t){e.exports=require("material-ui/Subheader")},function(e,t){e.exports=require("./representation-plain")},function(e,t){e.exports=require("react-dom")},function(e,t){e.exports=require("minimatch")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/close")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/menu")},function(e,t){e.exports=require("material-ui/Divider")},function(e,t){e.exports=require("material-ui/svg-icons/editor/border-color")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/arrow-back")},function(e,t){e.exports=require("material-ui/svg-icons/content/save")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/refresh")},function(e,t){e.exports=require("@babel/runtime/helpers/slicedToArray")},function(e,t){e.exports=require("material-ui/svg-icons/action/view-module")},function(e,t){e.exports=require("material-ui/svg-icons/content/text-format")},function(e,t){e.exports=require("material-ui/Menu")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-bold")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-italic")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-underlined")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-clear")},function(e,t){e.exports=require("material-ui/svg-icons/editor/strikethrough-s")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-color-fill")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-color-text")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-align-center")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-align-left")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-align-right")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-list-bulleted")},function(e,t){e.exports=require("material-ui/svg-icons/content/redo")},function(e,t){e.exports=require("material-ui/svg-icons/content/undo")},function(e,t){e.exports=require("material-ui/svg-icons/content/content-copy")},function(e,t){e.exports=require("material-ui/svg-icons/content/content-paste")},function(e,t){e.exports=require("material-ui/svg-icons/content/content-cut")},function(e,t){e.exports=require("material-ui/svg-icons/editor/border-all")},function(e,t){e.exports=require("material-ui/svg-icons/action/open-with")},function(e,t){e.exports=require("material-ui/svg-icons/editor/vertical-align-top")},function(e,t){e.exports=require("material-ui/svg-icons/editor/vertical-align-bottom")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/first-page")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/last-page")},function(e,t){e.exports=require("material-ui/svg-icons/editor/insert-photo")},function(e,t){e.exports=require("file-type/browser")},function(e,t){e.exports=require("material-ui/svg-icons/action/done")},function(e,t){e.exports=require("material-ui/svg-icons/editor/wrap-text")},function(e,t,n){var r=n(76);"string"==typeof r&&(r=[[e.i,r,""]]);var a={insert:"head",singleton:!1};n(78)(r,a);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(77)(!1)).push([e.i,'.ruler.vertical{position:relative}.ruler.vertical .margin{width:20px;background-color:#000;opacity:.4}.ruler.vertical .margin .mover{position:relative;height:4px;width:100%;cursor:ns-resize}.ruler.vertical .margin.top{display:flex;flex-flow:wrap-reverse}.ruler.vertical .margin.top .mover{bottom:-2px}.ruler.horizontal{margin:0 auto}.ruler.horizontal .margin{height:20px;background-color:#000;opacity:.4}.ruler.horizontal .margin .mover{position:relative;width:4px;height:100%;cursor:ew-resize}.ruler.horizontal .margin.right .mover{right:2px}.ruler.horizontal .margin.left .mover{float:right;right:-2px}.ruler.horizontal .marker{height:8px;width:8px}.ruler.horizontal .marker svg{width:100%!important;height:100%!important;display:block!important;position:relative;top:12px}.ruler.horizontal .indent{height:8px;width:8px}.ruler.horizontal .indent svg{width:100%!important;height:100%!important;display:block!important;position:relative;top:12px}.ruler.horizontal .indent.left svg{left:-4px}.ruler.horizontal .indent.right svg{right:-4px}.ruler.horizontal .first-line{height:8px;width:8px}.ruler.horizontal .first-line svg{width:100%!important;height:100%!important;display:block!important;position:relative;top:12px}.ruler.horizontal .first-line.left svg{top:0;left:-4px}.ruler>svg text{font-size:10px}@font-face{font-family:my arial;src:local("arial"),url("/fonts/Arial")}',""])},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var a=(l=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(l))))+" */"),o=r.sources.map((function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"}));return[n].concat(o).concat([a]).join("\n")}var l;return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},a=0;a<this.length;a++){var o=this[a][0];"number"==typeof o&&(r[o]=!0)}for(a=0;a<e.length;a++){var l=e[a];"number"==typeof l[0]&&r[l[0]]||(n&&!l[2]?l[2]=n:n&&(l[2]="("+l[2]+") and ("+n+")"),t.push(l))}},t}},function(e,t,n){"use strict";var r,a={},o=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},l=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}();function i(e,t){for(var n=[],r={},a=0;a<e.length;a++){var o=e[a],l=t.base?o[0]+t.base:o[0],i={css:o[1],media:o[2],sourceMap:o[3]};r[l]?r[l].parts.push(i):n.push(r[l]={id:l,parts:[i]})}return n}function c(e,t){for(var n=0;n<e.length;n++){var r=e[n],o=a[r.id],l=0;if(o){for(o.refs++;l<o.parts.length;l++)o.parts[l](r.parts[l]);for(;l<r.parts.length;l++)o.parts.push(y(r.parts[l],t))}else{for(var i=[];l<r.parts.length;l++)i.push(y(r.parts[l],t));a[r.id]={id:r.id,refs:1,parts:i}}}}function u(e){var t=document.createElement("style");if(void 0===e.attributes.nonce){var r=n.nc;r&&(e.attributes.nonce=r)}if(Object.keys(e.attributes).forEach((function(n){t.setAttribute(n,e.attributes[n])})),"function"==typeof e.insert)e.insert(t);else{var a=l(e.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(t)}return t}var s,m=(s=[],function(e,t){return s[e]=t,s.filter(Boolean).join("\n")});function p(e,t,n,r){var a=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=m(t,a);else{var o=document.createTextNode(a),l=e.childNodes;l[t]&&e.removeChild(l[t]),l.length?e.insertBefore(o,l[t]):e.appendChild(o)}}function f(e,t,n){var r=n.css,a=n.media,o=n.sourceMap;if(a&&e.setAttribute("media",a),o&&btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}var h=null,d=0;function y(e,t){var n,r,a;if(t.singleton){var o=d++;n=h||(h=u(t)),r=p.bind(null,n,o,!1),a=p.bind(null,n,o,!0)}else n=u(t),r=f.bind(null,n,t),a=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else a()}}e.exports=function(e,t){(t=t||{}).attributes="object"==typeof t.attributes?t.attributes:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=o());var n=i(e,t);return c(n,t),function(e){for(var r=[],o=0;o<n.length;o++){var l=n[o],u=a[l.id];u&&(u.refs--,r.push(u))}e&&c(i(e,t),t);for(var s=0;s<r.length;s++){var m=r[s];if(0===m.refs){for(var p=0;p<m.parts.length;p++)m.parts[p]();delete a[m.id]}}}}},function(e,t,n){"use strict";n.r(t);var r={};n.r(r),n.d(r,"Ribbon",(function(){return Xn})),n.d(r,"Create",(function(){return Jn}));var a={};n.r(a),n.d(a,"Ribbon",(function(){return mr})),n.d(a,"Tools",(function(){return hr}));var o={};n.r(o),n.d(o,"Tools",(function(){return wr}));var l={};n.r(l),n.d(l,"default",(function(){return Lr})),n.d(l,"Ribbon",(function(){return Br})),n.d(l,"Text",(function(){return Gt})),n.d(l,"Paragraph",(function(){return mn})),n.d(l,"File",(function(){return Be})),n.d(l,"History",(function(){return yn})),n.d(l,"Table",(function(){return r})),n.d(l,"Picture",(function(){return a})),n.d(l,"Layout",(function(){return o})),n.d(l,"Toolbar",(function(){return qr})),n.d(l,"ToolbarSeparator",(function(){return Rr})),n.d(l,"Tabs",(function(){return B.Tabs})),n.d(l,"Tab",(function(){return B.Tab})),n.d(l,"CheckIconButton",(function(){return je})),n.d(l,"DropDownButton",(function(){return bt}));var i=n(0),c=n.n(i),u=n(36),s=n.n(u),m=n(13),p=n.n(m),f=n(4),h=n.n(f),d=n(6),y=n.n(d),g=n(5),v=n.n(g),E=n(7),b=n.n(E),O=n(8),x=n.n(O),w=n(9),k=n.n(w),S=n(12),C=n.n(S),j=n(2),T=n(16),I=n.n(T),P=n(25),M=n.n(P),A=n(11),D=n.n(A),z=n(15),N=n(3),q=n(37),R=n.n(q),B=n(1),L=n(26),F=n.n(L),U=n(23),W=n.n(U),H=n(38),V=n.n(H),G=n(20),_=n.n(G),Y=n(39),K=n.n(Y),X=n(40),J=n.n(X),Z=n(19),$=n(41),Q=n.n($),ee=n(42),te=n.n(ee),ne=n(43),re=n.n(ne),ae=n(44),oe=n.n(ae),le=n(10),ie=n.n(le),ce=n(33),ue=n.n(ce),se=n(27),me=n.n(se),pe=n(45),fe=n.n(pe);function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function de(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var ye=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{searchText:n.getText(n.props)}),n}return k()(t,e),v()(t,[{key:"isObjectData",value:function(e){var t=e||this.props,n=fe()(t.dataSource,1)[0];return"object"==me()(n)}},{key:"getText",value:function(e){var t=e||this.props,n=t.dataSource,r=t.value,a=t.dataSourceConfig||{text:"text",value:"value"},o=a.text,l=a.value;if(this.isObjectData(e)){var i=n.find((function(e){return e[l]==r}));return i?i[o]+"":""}return r+""}},{key:"getIndex",value:function(e){var t=this.props,n=t.dataSource,r=t.dataSourceConfig||{text:"text",value:"value"},a=r.text;r.value;return this.isObjectData()?n.findIndex((function(t){return t[a]==e})):n.indexOf(e)}},{key:"getValue",value:function(e){var t=this.props,n=t.dataSource,r=t.dataSourceConfig||{text:"text",value:"value"},a=(r.text,r.value);return this.isObjectData()?n[e][a]:n[e]}},{key:"render",value:function(){var e=this,t=this.context.muiTheme.comboBox,n=this.props,r=n.name,a=void 0===r?"_".concat(Date.now()):r,o=(n.value,n.onChange),l=n.onException,i=n.style,u=n.menuProps,s=void 0===u?{}:u,m=n.textFieldStyle,p=n.inputStyle,f=n.children,h=n.icon,d=void 0===h?f:h,y=n.label,g=n.hint,v=void 0===g?y:g,E=D()(n,["name","value","onChange","onException","style","menuProps","textFieldStyle","inputStyle","children","icon","label","hint"]),b=this.getText(),O=this.state.searchText;return t&&t.height&&(i?i.height||(i.height=t.height):i={height:t.height}),t&&t.textFieldStyle&&(m=de({},t.textFieldStyle,{},m)),t&&t.menu&&(s=de({},t.menu,{},s)),i&&(m||(m={}),i.width&&!m.width&&(m.width=i.width),i.height&&!m.height&&(m.height=i.height),s.style&&!s.style.width&&i.width&&(s.style=de({},s.style,{width:i.width}))),p&&p.border&&(p.paddingRight=6),!d&&m&&m.height&&(d=c.a.createElement(_.a,{style:{height:m.height-4,width:6},viewBox:"6 -20 18 28"})),c.a.createElement("span",{style:{whiteSpace:"nowrap"}},c.a.createElement(B.AutoComplete,ie()({name:a,searchText:O,menuProps:s,onNewRequest:function(t,n){-1==n&&t&&(n=e.getIndex(t)),-1!=n?o&&o(e.getValue(n)):t&&l&&l(t)},onUpdateInput:function(t,n){e.setState({searchText:t})},onClose:function(){return e.setState({searchText:b})},filter:function(e,t){return e==b||-1!=t.indexOf(e)},openOnFocus:!0,style:i,inputStyle:p,textFieldStyle:m,hintText:v},E)),d)}},{key:"componentWillReceiveProps",value:function(e){this.props.value!=e.value&&this.setState({searchText:this.getText(e)})}}]),t}(i.PureComponent);h()(ye,"contextTypes",{muiTheme:C.a.object});var ge=ye,ve={loader:function(e){return{type:"".concat(j.DOMAIN,"/office/LOADER"),payload:e}},stream:function(e){return{type:"".concat(j.DOMAIN,"/office/STREAM"),payload:e}},format:function(e){return{type:"".concat(j.DOMAIN,"/office/FORMAT"),payload:e}},channel:function(e){return{type:"".concat(j.DOMAIN,"/office/channel"),payload:e}},scale:function(e){return{type:"".concat(j.DOMAIN,"/office/scale"),payload:e}}},Ee=function(e){return e.get("office")};function be(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Oe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?be(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):be(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var xe=function(e){function t(){var e;y()(this,t);var n=(e=b()(this,x()(t).apply(this,arguments))).context.store,r=Object(j.getActive)(n.getState()),a=r.doc,o=r.state;return e.doc=a,e.state=t.getEmitterStream(o,a),e}return k()(t,e),v()(t,null,[{key:"getEmitterStream",value:function(e,t){var n=e.get("office"),r=n.format,a=void 0===r?{type:t.type}:r,o=n.stream,l=void 0===o?{type:"browser",name:t.name}:o,i=n.loader;return a.type!=t.type&&(l=i&&j.Emitter.supports.has(i.type)?Oe({},i):{type:"browser",name:t.name},a={type:t.type}),l.type||(l={type:"browser",name:t.name}),{format:a,stream:l}}}]),v()(t,[{key:"getSupportedFormats",value:function(){var e=j.Emitter.supports,t=Array.from(e.keys()).filter((function(e){return!!e})).map((function(t){var n=e.get(t).defaultProps,r=n.ext,a=n.name;return{text:"".concat(a," (*.").concat(r,")"),value:t}}));return e.has(this.doc.type)||t.unshift({text:"".concat(this.doc.typeName," (*.").concat(this.doc.typeExt,")"),value:this.doc.type}),t}},{key:"getSupportedStreams",value:function(){return Array.from(j.Stream.supports.keys()).filter((function(e){return!!e}))}},{key:"fixName",value:function(e,t){if(!t)return t;var n=j.Emitter.get(e),r=n?n.defaultProps.ext:this.doc.typeExt;return-1==t.indexOf(".")?t+"."+r:t.replace(/\.\w+$/g,"."+r)}},{key:"render",value:function(){var e,t,n,r,a=this,o=this.props,l=o.onCancel,i=(o.onSave,this.state),u=i.format,s=i.stream,m=this.getSupportedStreams(),p=this.getSupportedFormats(),f=!1,h=(t=(e=s).type,n=D()(e,["type"]),(r=j.Stream.get(t))?c.a.createElement(r,ie()({ref:"stream"},n,{format:u.type,fixName:function(e){return a.fixName(u.type,e)}})):(f=!0,c.a.createElement("center",{style:{color:"red"}},"no stream[type=",t,"] implemenation"))),d=function(e){var t=e.type,n=D()(e,["type"]),r=j.Emitter.get(t);return r?c.a.createElement(r.Setting,ie()({ref:"format"},n)):null}(u);return c.a.createElement("div",{style:{display:"flex",flexDirection:"column"}},c.a.createElement("div",null,m.length>1&&c.a.createElement("center",{style:{height:100,lineHeight:"100px"}},c.a.createElement("span",null,"Save to:"),c.a.createElement(ge,{value:s.type,dataSource:m,onChange:function(e){return a.setState({stream:Oe({},s,{type:e})})}}))),c.a.createElement("div",null,h),c.a.createElement("div",{style:{flex:"1 100%"}},p.length>0&&c.a.createElement("center",null,c.a.createElement("span",null,"Save as type:"),c.a.createElement(ge,{value:u.type,dataSource:p,onChange:function(e){a.setState({format:Oe({},u,{type:e})})}}))),c.a.createElement("div",null,d),c.a.createElement("center",null,c.a.createElement(ue.a,{label:"Cancel",style:{marginRight:5},onClick:l}),c.a.createElement(ue.a,{label:"Save",disabled:f,primary:!0,onClick:this.save.bind(this)})))}},{key:"save",value:function(){var e=this.context.store,n=this.props.onSave,r=this.state,a=r.format,o=r.stream;o=Oe({},o,{},this.refs.stream&&this.refs.stream.state||{}),a=Oe({},a,{},this.refs.format&&this.refs.format.state||{}),t.save(e)({format:a,stream:o}).then((function(){e.dispatch(ve.stream(o)),e.dispatch(ve.format(a))})).catch((function(t){return e.dispatch(j.ACTION.MESSAGE({type:"error",message:t.message}))})).then(n)}}]),t}(i.PureComponent);function we(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ke(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?we(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):we(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}h()(xe,"contextTypes",{store:C.a.object}),h()(xe,"save",(function(e){return function(t){var n=t.format,r=t.stream,a=Object(j.getActive)(e.getState()),o=a.state,l=a.doc;r||(r=xe.getEmitterStream(o,l).stream),n||(n={type:l.type});var i=l.type==n.type?j.Emitter.Format.OutputInput:j.Emitter.get(n.type);return Object(j.render)(c.a.createElement(z.Provider,{store:e},c.a.createElement(l.Store,{readonly:!0,release:!1},c.a.createElement(j.Emitter,null,c.a.createElement(j.Stream,r,c.a.createElement(i,n))))))}}));var Se=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"getStyle",I()((function(e,t,r,a,o){var l=n.context.muiTheme.sizeIconButton;return e=e||{},a=a||{},l&&(!t&&l.size&&(t=l.size),!r&&l.padding&&(r=l.padding)),r||(r=2),t&&(e.width=e.height=t,a.width=a.height=t-2*r,e.padding=r),{style:ke({},e,{},Ce[o]),iconStyle:a}}))),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.status,n=e.disabled,r=void 0===n?"disabled"==t:n,a=e.size,o=e.padding,l=e.style,i=e.iconStyle,u=e.label,s=e.hint,m=void 0===s?u:s,p=D()(e,["status","disabled","size","padding","style","iconStyle","label","hint"]);return c.a.createElement(B.IconButton,ie()({},p,this.getStyle(l,a,o,i,t),{disabled:r,tooltip:m}))}}]),t}(i.PureComponent);h()(Se,"contextTypes",{muiTheme:C.a.object});var Ce={checked:{background:"lightblue"},unchecked:{},disabled:{}},je=function(e){return c.a.createElement(Se,e)};function Te(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Te(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Te(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Pe=function(e,t){return e.set("office",function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{loader:{},stream:{},channels:{}},t=arguments.length>1?arguments[1]:void 0,n=t.type,r=t.payload;switch(n){case"".concat(j.DOMAIN,"/office/LOADER"):return Ie({},e,{loader:r});case"".concat(j.DOMAIN,"/office/STREAM"):return Ie({},e,{stream:r});case"".concat(j.DOMAIN,"/office/FORMAT"):return Ie({},e,{format:r});case"".concat(j.DOMAIN,"/office/channel"):return Ie({},e,{channel:r});case"".concat(j.DOMAIN,"/office/scale"):return Ie({},e,{scale:r});default:return e}}(e.get("office"),t))},Me=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{}),n}return k()(t,e),v()(t,[{key:"getSupportedLoaders",value:function(){return Array.from(j.Loader.supports.keys())}},{key:"render",value:function(){var e=this,t=this.getSupportedLoaders(),n=this.state.type,r=this.props.onLoad;return n||1!=t.length||(n=t[0]),c.a.createElement(i.Fragment,null,t.length>1&&c.a.createElement("div",{style:{textAlign:"center"}},c.a.createElement(ge,{hintText:"select a loader...",dataSource:t,onChange:function(t){return e.setState({type:t})},value:n||""})),n&&c.a.createElement(j.Loader,ie()({type:n},this.props,{onLoad:function(t){r(),t&&e.context.store.dispatch(ve.loader(t))},reducer:Pe})))}}]),t}(i.PureComponent);function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function De(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}h()(Me,"contextTypes",{store:C.a.object});var ze=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"getSupportedFormats",value:function(){return Array.from(j.Input.supports.values()).filter((function(e){return e.prototype.onChange&&e.defaultProps.template})).map((function(e){var t=e.defaultProps,n=t.template,r=t.type;return c.a.isValidElement(n)?c.a.cloneElement(n,{key:r}):"string"==typeof n?c.a.createElement(Ne,ie()({key:r},t,{url:n,template:void 0})):void 0}))}},{key:"render",value:function(){var e=this.getSupportedFormats();return 0==e.length&&(e=c.a.createElement("center",{style:{color:"red"}},"no templates")),c.a.createElement("div",null,e)}},{key:"create",value:function(e){var t=this,n=e.url,r=D()(e,["url"]);fetch(n).then((function(e){return e.blob()})).then((function(e){return De({data:e},r,{name:"Document".concat(Object(j.getAll)(t.context.store.getState()).length+1,".").concat(r.ext)})})).then((function(e){return j.Input.parse(e)})).then((function(e){var n=t.props.onCreate;t.context.store.dispatch(j.ACTION.ADD(e,Pe)),n()}))}},{key:"getChildContext",value:function(){return{create:this.create.bind(this)}}}]),t}(i.PureComponent);h()(ze,"contextTypes",{store:C.a.object}),h()(ze,"childContextTypes",{create:C.a.func});var Ne=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.type,n=D()(e,["type"]),r=this.context.create;return c.a.createElement("div",{style:{display:"inline-block"}},c.a.createElement("svg",{onClick:function(){return r(De({},n,{type:t}))},style:{width:50,height:75,background:"white"}}),c.a.createElement("center",{style:{fontSize:"smaller"}},t))}}]),t}(i.PureComponent);h()(Ne,"contextTypes",{create:C.a.func});var qe=j.Emitter.Format,Re=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props.doc;return c.a.createElement(e.Store,{readonly:!0,release:!1},c.a.createElement(j.Emitter,null,c.a.createElement(j.Stream,{type:"browser",target:"_blank"},c.a.createElement(qe,{type:"pdf"}))))}},{key:"componentDidMount",value:function(){this.props.onPrint()}}]),t}(i.PureComponent),Be=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){var e=this,t=this.props.children;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(je,{status:"unchecked",hint:"refresh",onClick:function(t){e.context.store.dispatch(j.ACTION.Refresh())}},c.a.createElement(oe.a,null)),c.a.createElement(je,{status:"unchecked",hint:"save",onClick:function(t){xe.save(e.context.store)({})}},c.a.createElement(re.a,null)),t)}}]),t}(i.Component);h()(Be,"contextTypes",{store:C.a.object});var Le=n(24),Fe=Object(z.connect)()(function(e){function t(){var e;return y()(this,t),(e=b()(this,x()(t).apply(this,arguments))).state={},e}return k()(t,e),v()(t,[{key:"render",value:function(){var e,t=this,n=Le.FontManager.names;return c.a.createElement(i.Fragment,null,n.length>0&&c.a.createElement("div",null,"Already Loaded ",n.length," Fonts"),c.a.createElement("span",null,"you can "),c.a.createElement("button",{onClick:function(t){return e.click()}},"load more local fonts"),c.a.createElement("input",{type:"file",ref:function(t){return e=t},multiple:!0,style:{display:"none"},onChange:function(e){return t.load(e.target)}}))}},{key:"load",value:function(e){var t=this;Le.FontManager.fromBrowser(e).then((function(e){return t.setState({loaded:Date.now()})}))}}]),t}(i.PureComponent)),Ue=function(e){return c.a.createElement("div",{style:{width:300}},c.a.createElement(Fe,null))},We=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{action:null,display:!1}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.state,n=t.display,r=t.action,a=function(){return e.setState({display:!1,action:null})},o=this.props,l=o.active,i=o.zIndex,u=o.width,s=void 0===u?256:u,m=o.children,p=o.avatar;o.commands;return c.a.createElement("div",{style:{zIndex:i,position:"fixed",left:0,top:0,width:"100%",height:"100%",display:n?"flex":"none",flexDirection:"row"}},c.a.createElement(B.Paper,{zDepth:2,style:{width:s,height:"100%",backgroundColor:"white"}},c.a.createElement("center",{style:{zoom:2,marginTop:5}},c.a.createElement(B.Avatar,{onClick:a,size:12,style:{position:"absolute",left:10,top:10}},c.a.createElement(te.a,null)),p&&c.a.cloneElement(p,{onClick:a})||c.a.createElement(B.Avatar,{backgroundColor:Z.gray100},c.a.createElement(Q.a,{color:Z.yellow500}))),c.a.createElement(B.Menu,{width:s,autoWidth:!s,value:r,selectedMenuItemStyle:{background:"lightgray",color:"red"},onChange:function(t,n){e.setState({action:n})}},c.a.createElement(B.MenuItem,{primaryText:"New",value:c.a.createElement(ze,{onCancel:a,onCreate:a})}),c.a.createElement(B.MenuItem,{primaryText:"Open",value:c.a.createElement(Me,{onCancel:a,onLoad:a})}),c.a.createElement(B.MenuItem,{disabled:!l,primaryText:"Save",value:c.a.createElement(xe,{onCancel:a,onSave:a})}),c.a.createElement(B.MenuItem,{disabled:!l,primaryText:"SaveAs",value:c.a.createElement(xe,{onCancel:a,onSave:a})}),c.a.createElement(J.a,null),c.a.createElement(B.MenuItem,{disabled:!l,primaryText:"Print",value:c.a.createElement(Re,{doc:l,onCanncel:a,onPrint:a})}),c.a.createElement(B.MenuItem,{primaryText:"Options",value:c.a.createElement(Ue,null)}),c.a.Children.map(m,(function(e){return e.props.value?e:c.a.cloneElement(e,{onClick:a})})))),c.a.createElement("div",{style:{flex:"1 100%",backgroundColor:"lightgray",display:"flex",flexDirection:"column",padding:10}},r&&c.a.cloneElement(r,{done:a})||c.a.createElement("div",{onClick:a,flex:"1 100%",style:{height:"100%"}})))}}]),t}(i.PureComponent);function He(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ve(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?He(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):He(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ge,_e,Ye=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{showDrawer:!1}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.title,n=e.children,r=e.active,a=e.docs,o=e.setActive,l=e.close,i=e.height,u=void 0===i?20:i,s=e.style,m=void 0===s?{}:s,p=e.onMenu,f=null;return a.length>0&&(f=c.a.createElement(Se,{size:u,padding:u/4,onClick:l},c.a.createElement(V.a,null))),c.a.createElement("div",{style:Ve({position:"relative",background:"transparent",height:u,whiteSpace:"nowrap",display:"flex",flexDirection:"row"},m)},c.a.createElement("div",null,c.a.createElement(Se,{size:u,onClick:p},c.a.createElement(K.a,null))),c.a.createElement("div",{style:{lineHeight:"".concat(u,"px"),fontSize:u/2}},t||"we-edit"),c.a.createElement("div",{style:{flex:"1 100%",paddingLeft:20}},c.a.createElement(ge,{disabled:null==r,value:r?r.id:"",dataSource:a.map((function(e){var t=e.doc,n=t.id;return{text:t.name,value:n}})),onChange:o,underlineShow:!1,style:{width:100,height:u},textFieldStyle:{height:u,lineHeight:"".concat(u,"px"),fontSize:u/2},icon:c.a.createElement("span",null)})),c.a.createElement("div",{style:{lineHeight:"".concat(u,"px"),fontSize:u/2}},n),c.a.createElement("div",{style:{width:50}},f))}}]),t}(i.PureComponent),Ke=Object(N.compose)(Object(N.setDisplayName)("TitleBar"),Object(N.getContext)({store:C.a.object,muiTheme:C.a.object}),Object(N.mapProps)((function(e){var t=e.store.dispatch,n=e.muiTheme.titleBar;return Ve({},D()(e,["store","muiTheme"]),{setActive:function(e){t(j.ACTION.ACTIVE(e))},close:function(){t(j.ACTION.CLOSE())},height:n?n.height:void 0})})),Object(z.connect)((function(e){return{docs:Object(j.getAll)(e)}})))(Ye);n(75);function Xe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Je(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xe(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xe(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ze={root:{position:"absolute",width:"100%",height:"100%",display:"flex",flexDirection:"column",background:Z.grey50,overflow:"hidden"},theme:{tabs:{backgroundColor:"transparent",textColor:"black",selectedTextColor:"red"},toolbar:{backgroundColor:"transparent"}}},$e=Object(N.compose)(Object(N.setDisplayName)("We-Edit-UI"),Object(z.connect)((function(e){return{active:(Object(j.getActive)(e)||{}).doc}})))((_e=Ge=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{}),h()(p()(n),"theme",I()((function(e){var t=W()(Ze.theme,n.props.theme);return e&&e.props.theme?W()(t,e.props.theme):t}))),h()(p()(n),"getActiveWorkspace",I()((function(e,t){return i.Children.toArray(e).find((function(e){var n=e.props.accept;if("string"==typeof n){var r=n;n=function(e){return R()(e.name||"",r)}}else if(n&&n.prototype&&n.prototype instanceof j.Input.Viewable){var a=n;n=function(e){return e.isTypeOf(a)}}return"function"==typeof n?n(t):!!n}))}))),h()(p()(n),"getNonWorkspaces",I()((function(e){var t=i.Children.toArray(e).filter((function(e){return!e.props.accept}));return t.length?t:null}))),n}return k()(t,e),v()(t,[{key:"componentDidCatch",value:function(e,t){this.setState({error:e.message})}},{key:"rejectContextMenu",value:function(e){}},{key:"render",value:function(){var e=this,t=this.props,n=t.children,r=t.active,a=t.titleBar,o=t.dashboard,l=t.style,i=t.dispatch,u=t.titleBarProps,s=D()(t,["children","active","titleBar","dashboard","style","dispatch","titleBarProps"]),m=null,p=this.getNonWorkspaces(n);r&&((m=this.getActiveWorkspace(n,r))?m=c.a.cloneElement(m,Je({doc:r},s,{},m.props)):p||(m=c.a.createElement("div",null,"no editor for this document")));var f=this.state.error,h=this.theme(m);return c.a.createElement(F.a,{muiTheme:h},c.a.createElement("div",{style:Je({},Ze.root,{},l),onContextMenu:this.rejectContextMenu},a&&c.a.cloneElement(a,Je({},u,{active:r,onMenu:function(t){return e.refs.dashboard.setState({display:!0})}})),o&&c.a.cloneElement(o,{ref:"dashboard",active:r,dispatch:i,zIndex:h.zIndex.popover}),m,p&&p.map((function(e){return c.a.cloneElement(e,{hasActiveWorkspace:!!m})})),c.a.createElement(B.Snackbar,{open:!!f,message:f||"",autoHideDuration:4e3,onRequestClose:function(){return e.setState({error:void 0})}})))}}]),t}(i.PureComponent),h()(Ge,"propTypes",{titleBar:C.a.node,dashboard:C.a.node}),h()(Ge,"defaultProps",{titleBar:c.a.createElement(Ke,null),dashboard:c.a.createElement(We,null)}),_e)),Qe=n(46),et=n.n(Qe),tt=n(28),nt=n.n(tt),rt=n(47),at=n.n(rt);function ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function lt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ot(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ot(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var it={background:"transparent",color:"white",fontSize:8},ct={backgroundColor:Z.blue800,color:"white",width:"100%",display:"flex",flexDirection:"row"},ut=lt({},it,{minWidth:"auto"}),st=Object(N.compose)(Object(N.setDisplayName)("StatusBar"),Object(N.getContext)({muiTheme:C.a.object}),Object(N.mapProps)((function(e){var t=e.muiTheme,n=e.channel,r=e.scale;e.setScale;return{channel:n,scale:r,style:e.style,height:t.button.height}})),Object(N.onlyUpdateForKeys)(["height","channel"]))((function(e){var t=e.height,n=e.channel,r=e.style;return c.a.createElement("div",{style:lt({},ct,{height:t},r)},c.a.createElement(mt,null),c.a.createElement(pt,null),c.a.createElement("div",{style:{flex:"1 100%"}}),n.items.length<2?null:c.a.createElement(ht,ie()({height:t},n)),c.a.createElement(ft,null))})),mt=Object(N.compose)(Object(j.whenSelectionChange)((function(e,t){var n=e.selection,r=Object(j.getStatistics)(t),a=r.pages,o={total:void 0===a?0:a,allComposed:r.allComposed};if(n){var l=n.props("page",!1);l&&(o.current=l.page)}return o})))((function(e){var t=e.current,n=void 0===t?0:t,r=e.total,a=void 0===r?0:r,o=e.allComposed;return c.a.createElement(B.FlatButton,{style:it},"PAGE ",n+1," OF ",a,o?"":"..")})),pt=Object(j.connect)((function(e){return Object(j.getStatistics)(e)}))((function(e){var t=e.words,n=void 0===t?0:t,r=e.allComposed;return c.a.createElement(B.FlatButton,{style:it},"".concat(n).concat(r?"":"..")," WORDS")})),ft=Object(j.connect)((function(e){return{current:Ee(e).scale}}))((function(e){var t=e.current,n=void 0===t?100:t,r=e.max,a=void 0===r?200:r,o=e.min,l=void 0===o?10:o,i=e.step,u=void 0===i?10:i,s=e.dispatch,m=e.onChange,p=void 0===m?function(e){return s(ve.scale(e))}:m;return c.a.createElement("div",{style:{display:"flex"}},c.a.createElement(B.FlatButton,{label:"-",onClick:function(){return p(Math.max(n-u,l))},style:lt({},ut),labelStyle:{fontSize:20,fontWeight:700,paddingRight:4,paddingLeft:4}}),c.a.createElement(B.Slider,{style:{width:100,display:"inline-block"},sliderStyle:{top:-13},step:u,onChange:function(e,t){return p(t)},value:n,min:l,max:a}),c.a.createElement(B.FlatButton,{label:"+",onClick:function(){return p(Math.min(n+u,a))},style:lt({},ut),labelStyle:{fontSize:18,fontWeight:700,paddingRight:4,paddingLeft:4}}),c.a.createElement(B.FlatButton,{label:"".concat(n,"%"),style:lt({},ut),labelStyle:{fontSize:it.fontSize}}))})),ht=function(e){var t=e.items,n=e.current,r=e.onChange,a=e.height;return c.a.createElement("div",{style:{display:"flex",opacity:.4}},t.map((function(e){var t=e.channel,o=e.icon,l=e.style,i=void 0===l?{}:l;return t==n&&(i.background=Z.blue900),c.a.createElement(Se,{key:t,size:a,padding:a/4,style:i,tooltip:"".concat(t," mode"),tooltipPosition:"top-center",onClick:function(){return r(t)}},o)})))},dt=st,yt=n(48),gt=n.n(yt),vt=n(29),Et=n.n(vt),bt=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{open:!1}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.state,n=t.open,r=t.anchor,a=this.toggle.bind(this),o=this.props,l=o.icon,i=o.children,u=(o.labelStyle,o.status),s=o.onClick,m=void 0===s?a:s,p=D()(o,["icon","children","labelStyle","status","onClick"]),f=null;return n&&(f=c.a.createElement(Et.a,{open:!0,anchorEl:r,onRequestClose:function(t){return e.setState({open:!1})}},c.a.createElement(gt.a,{onItemTouchTap:function(t){return e.setState({open:!1})}},i))),c.a.createElement("span",{style:{whiteSpace:"nowrap"}},c.a.createElement(Se,ie()({onClick:m},p,{status:u}),l),!1,c.a.createElement(_.a,{style:{height:24,width:6},viewBox:"6 -12 18 36",onClick:a}),f)}},{key:"toggle",value:function(e){this.setState({open:!this.state.open,anchor:e.currentTarget.parentNode})}}]),t}(i.Component),Ot=n(21),xt=n.n(Ot),wt=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"render",value:function(){var e={fontWeight:700,marginTop:4},t=this.props.onChange;return c.a.createElement("div",{style:{width:150,fontSize:"smaller"}},c.a.createElement(St,{color:"currentColor",label:"Automatic",onSelect:t}),c.a.createElement("div",{style:e},"Theme Colors"),c.a.createElement(Ct,{onSelect:t}),c.a.createElement("div",{style:e},"Standard Colors"),c.a.createElement(jt,{onSelect:t}),c.a.createElement(St,{color:"",label:"No Color",onSelect:t}),c.a.createElement("div",{style:{marginTop:4}},c.a.createElement(B.FlatButton,{style:{textAlign:"left"},label:"More Colors...",icon:c.a.createElement(xt.a,null)})))}}]),t}(i.Component),kt=function(e){var t=e.color,n=e.size,r=void 0===n?12:n,a=D()(e,["color","size"]);return c.a.createElement("span",ie()({},a,{style:{cursor:"default",background:t,display:"inline-block",width:r,height:r,marginRight:2,lineHeight:"100%"}})," ")},St=function(e){var t=e.color,n=e.label,r=e.onSelect;return c.a.createElement(B.FlatButton,{fullWidth:!0,style:{textAlign:"left"},label:n,onClick:function(e){return r(t)},icon:c.a.createElement(B.FontIcon,null,c.a.createElement(kt,{color:t,size:16}))})},Ct=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.colorThemes,r=void 0===n?[]:n,a=t.onSelect;return c.a.createElement("div",{style:{padding:2}},[0,1,2,3,4,5].map((function(t){return c.a.createElement(jt,{key:t,onSelect:a,colors:r.map((function(n){return e.getColor(n,t)}))})})))}},{key:"getColor",value:function(e,t){return e}}]),t}(i.Component),jt=function(e){var t=e.onSelect,n=e.colors,r=void 0===n?"black,blue,red,yellow,chocolate,tan,pink,brown,green,orange".split(","):n;return c.a.createElement("div",{style:{paddingLeft:2,paddingTop:2,paddingBottom:2}},r.map((function(e){return c.a.createElement(kt,{key:e,color:e,onClick:function(){return t(e)}})})))};var Tt=function(e){function t(e){var n,r=e.value;return y()(this,t),(n=b()(this,x()(t).apply(this,arguments))).state={open:!1,color:r||"black"},n}return k()(t,e),v()(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.value;void 0!==t&&this.setState({color:t||this.state.value||"black"})}},{key:"render",value:function(){var e=this,t=this.state,n=t.open,r=(t.color,t.anchor),a=this.props,o=a.onChange,l=void 0===o?function(e){return e}:o,i=D()(a,["onChange"]),u=null;n&&(u=c.a.createElement(Et.a,{open:!0,anchorEl:r,onRequestClose:function(t){return e.setState({open:!1})}},c.a.createElement(wt,{onChange:function(t){e.setState({open:!1,color:t}),l(t)}})));var s=function(t){return e.setState({open:!n,anchor:t.currentTarget.parentNode})};return c.a.createElement("span",{style:{whiteSpace:"nowrap"}},c.a.createElement(Se,ie()({},i,{onClick:function(e){return"checked"==i.status?l(""):s(e)}})),c.a.createElement(_.a,{style:{height:24,width:6},viewBox:"6 -12 18 36",onClick:s}),u)}}]),t}(i.Component),It=n(49),Pt=n.n(It),Mt=n(50),At=n.n(Mt),Dt=n(51),zt=n.n(Dt),Nt=n(52),qt=n.n(Nt),Rt=n(53),Bt=n.n(Rt),Lt=n(54),Ft=n.n(Lt),Ut=n(55),Wt=n.n(Ut),Ht=Object(N.compose)(Object(N.setDisplayName)("FontList"))((function(e){var t=e.fonts,n=void 0===t?Le.FontManager.names:t,r=e.value,a=e.changeFont,o=(e.muiTheme,e.dispatch,D()(e,["fonts","value","changeFont","muiTheme","dispatch"]));return c.a.createElement(ge,ie()({style:{width:150},value:r,dataSource:Array.from(new Set([].concat(n,["Arial","Times New Roman","Verdana","Calibri"]))).sort(),onChange:a,inputStyle:{border:"1px solid lightgray"},underlineShow:!1},o))})),Vt=function(e){return c.a.createElement(B.ToolbarSeparator,ie()({style:{marginRight:2,marginLeft:2}},e))},Gt=Object(N.compose)(Object(N.setDisplayName)("TextStyle"),Object(j.whenSelectionChange)((function(e){var t=e.selection;return t?{style:t.props("text",!1)}:{}})),Object(N.withProps)((function(e){var t=e.dispatch,n=e.style,r=function(e){return t(j.ACTION.Selection.UPDATE({text:{size:e}}))};return{style:n,toggleB:function(e){return n&&t(j.ACTION.Selection.UPDATE({text:{bold:!n.bold}}))},toggleI:function(e){return n&&t(j.ACTION.Selection.UPDATE({text:{italic:!n.italic}}))},toggleU:function(e){return n&&t(j.ACTION.Selection.UPDATE({text:{underline:!n.underline}}))},toggleSubscript:function(e){return n&&t(j.ACTION.Selection.UPDATE({text:{subscript:!n.subscript}}))},toggleSuperscript:function(e){return n&&t(j.ACTION.Selection.UPDATE({text:{superscript:!n.superscript}}))},changeFont:function(e){return t(j.ACTION.Selection.UPDATE({text:{fonts:e}}))},changeSize:r,smaller:function(){n&&r(Math.max(n.size-Math.ceil(Math.abs((n.size-8)/5)),8))},bigger:function(){n&&r(n.size+2)},changeHightlight:function(e){t(j.ACTION.Selection.UPDATE({text:{highlight:e}}))},changeColor:function(e){t(j.ACTION.Selection.UPDATE({text:{color:e}}))},clear:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];t(j.ACTION.Selection.UPDATE({text:{_clear:e}}))},toggleBorder:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(j.ACTION.Selection.UPDATE({text:{border:e}}))},underline:function(e){t(j.ACTION.Selection.UPDATE({text:{underline:e}}))},toggleStrike:function(){n&&t(j.ACTION.Selection.UPDATE({text:{strike:!n.strike}}))}}})),Object(N.shouldUpdate)((function(e,t){return!Object(N.shallowEqual)(e.style,t.style)})))((function(e){var t=e.style,n=e.children,r=e.bigger,a=e.smaller,o=e.clear,l=e.toggleStrike,i=e.changeHightlight,u=e.changeColor,s=e.toggleSubscript,m=e.toggleSuperscript,p=e.toggleBorder,f=e.toggleB,h=e.toggleI,d=e.underline,y=e.changeFont,g=e.changeSize;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(Ht,{value:t&&t.fonts?t.fonts.split(",")[0]:"",changeFont:y}),c.a.createElement(ge,{style:{width:50},inputStyle:{border:"1px solid lightgray"},value:t?t.size:11,onChange:function(e){return g(parseInt(e))},dataSource:[8,9,10,11,12,14,16,20,22,24,26,28,36,72].map((function(e){return e+""})),underlineShow:!1}),c.a.createElement(je,{label:"increase font size",status:"unchecked",onClick:r,children:c.a.createElement(Kt,null)}),c.a.createElement(je,{label:"descrease font size",status:"unchecked",onClick:a,children:c.a.createElement(Xt,null)}),c.a.createElement(Vt,null),c.a.createElement(je,{label:"bold",status:t&&t.bold?"checked":"unchecked",onClick:function(){return f()},children:c.a.createElement(Pt.a,null)}),c.a.createElement(je,{label:"italic",status:t&&t.italic?"checked":"unchecked",onClick:function(){return h()},children:c.a.createElement(At.a,null)}),c.a.createElement(bt,{label:"underline",status:t&&t.underline?"checked":"unchecked",onClick:function(e){return d(t&&t.underline?"":"single")},icon:c.a.createElement(zt.a,null)},"single,double,dot,dash".split(",").map((function(e){return c.a.createElement(B.MenuItem,{key:e,onClick:function(t){return d(e)},primaryText:e})}))),c.a.createElement(je,{label:"strikethrough",status:t&&t.strike?"checked":"unchecked",onClick:function(){return l()},children:c.a.createElement(Bt.a,null)}),c.a.createElement(Vt,null),c.a.createElement(je,{label:"Subscript",status:t&&t.subscript?"checked":"unchecked",onClick:function(){return s()},children:c.a.createElement(Yt,null)}),c.a.createElement(je,{label:"Superscript",status:t&&t.superscript?"checked":"unchecked",onClick:function(){return m()},children:c.a.createElement(_t,null)}),c.a.createElement(je,{label:"text border",onClick:p,children:c.a.createElement(Jt,null)}),c.a.createElement(Tt,{label:"text highlight color",status:t&&t.highlight?"checked":"unchecked",onChange:function(e){return i(e)}},c.a.createElement(Ft.a,null)),c.a.createElement(Tt,{label:"text color",status:t&&t.color?"checked":"unchecked",onChange:function(e){return u(e)}},c.a.createElement(Wt.a,null)),c.a.createElement(Vt,null),c.a.createElement(je,{label:"clear all text formatting",onClick:o,children:c.a.createElement(qt.a,null)}),n)})),_t=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"translate(0 3) scale(0.7)"},c.a.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})),c.a.createElement("text",{x:"15",y:"9",style:{fontSize:9}},"2"))},Yt=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"translate(0 3) scale(0.7)"},c.a.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})),c.a.createElement("text",{x:"15",y:"20",style:{fontSize:9}},"2"))},Kt=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"translate(0 2)"},c.a.createElement("path",{d:"M5 17m4.5-4.2h5l.9 2.2h2.1L12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98L13.87 11h-3.74L12 5.98z"})),c.a.createElement("g",{transform:"translate(18 2)"},c.a.createElement("path",{d:"M0 3H6L3 0z"})))},Xt=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"translate(0 2)"},c.a.createElement("path",{d:"M5 17m4.5-4.2h5l.9 2.2h2.1L12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98L13.87 11h-3.74L12 5.98z"})),c.a.createElement("g",{transform:"translate(18 2)"},c.a.createElement("path",{d:"M0 0 H6L3 3z"})))},Jt=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"translate(0 2)"},c.a.createElement("path",{d:"M5 17m4.5-4.2h5l.9 2.2h2.1L12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98L13.87 11h-3.74L12 5.98z"})),c.a.createElement("path",{d:"M2 2 h20v20h-20z",fill:"none",stroke:"black"}))},Zt=n(56),$t=n.n(Zt),Qt=n(57),en=n.n(Qt),tn=n(58),nn=n.n(tn),rn=n(59),an=n.n(rn),on=n(30),ln=n.n(on);function cn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var un,sn=function(e){return c.a.createElement(B.ToolbarSeparator,ie()({style:{marginRight:2,marginLeft:2}},e))},mn=Object(N.compose)(Object(N.setDisplayName)("ParagraphStyle"),Object(j.whenSelectionChange)((function(e,t){var n=e.selection;return n?function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?cn(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):cn(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({style:n.props("paragraph",!1)},Object(j.getUI)(t)):Object(j.getUI)(t)})),Object(N.mapProps)((function(e){var t=e.dispatch,n=e.children,r=e.style,a=e.pilcrow;return{children:n,style:r,pilcrow:a,toggleAlign:function(e){var n=(r||{}).align;(void 0===n?"left":n)==e&&(e=null),t(j.ACTION.Selection.UPDATE({paragraph:{align:e}}))},numbering:function(e){t(j.ACTION.Selection.UPDATE({paragraph:{numbering:e}}))},toggleBullet:function(e){r&&r.numbering&&"bullet"==r.numbering.format&&(e=null),t(j.ACTION.Selection.UPDATE({paragraph:{numbering:e}}))},toggleNumbering:function(e){r&&r.numbering&&"bullet"!==r.numbering.format&&(e=null),t(j.ACTION.Selection.UPDATE({paragraph:{numbering:e}}))},togglePilcrow:function(){t(j.ACTION.UI({pilcrow:!a}))}}})),Object(N.shouldUpdate)((function(e,t){return!(Object(N.shallowEqual)(e.style,t.style)&&e.pilcrow==t.pilcrow)})))((function(e){var t=e.style,n=e.toggleAlign,r=e.numbering,a=(e.bullet,e.toggleBullet),o=e.toggleNumbering,l=e.pilcrow,i=e.togglePilcrow,u=e.children;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(je,{status:!t||t.align&&"left"!=t.align?"unchecked":"checked",onClick:function(){return n("left")},children:c.a.createElement(en.a,null)}),c.a.createElement(je,{status:t&&"center"==t.align?"checked":"unchecked",onClick:function(){return n("center")},children:c.a.createElement($t.a,null)}),c.a.createElement(je,{status:t&&"right"==t.align?"checked":"unchecked",onClick:function(){return n("right")},children:c.a.createElement(nn.a,null)}),c.a.createElement(je,{status:t&&"justify"==t.align?"checked":"unchecked",onClick:function(){return n("justify")},children:c.a.createElement(nt.a,null)}),c.a.createElement(sn,null),c.a.createElement(bt,{status:t&&t.numbering&&"bullet"==t.numbering.format?"checked":"unchecked",onClick:function(){return a({type:"bullet",text:"."})},icon:c.a.createElement(an.a,null)},c.a.createElement(B.MenuItem,{primaryText:".",onClick:function(e){return r({type:"bullet",text:"."})}}),c.a.createElement(B.MenuItem,{primaryText:"*",onClick:function(e){return r({type:"bullet",text:"*"})}})),c.a.createElement(bt,{status:t&&t.numbering&&"bullet"!==t.numbering.format?"checked":"unchecked",onClick:function(){return o({type:"decimal",text:"%1."})},icon:c.a.createElement(ln.a,null)},c.a.createElement(B.MenuItem,{primaryText:"1.",onClick:function(e){return r({type:"decimal",text:"%1."})}}),c.a.createElement(B.MenuItem,{primaryText:"a.",onClick:function(e){return r({type:"lowerLetter",text:"%1."})}}),c.a.createElement(B.MenuItem,{primaryText:"一",onClick:function(e){return r({type:"chinese",text:"%1"})}})),c.a.createElement(sn,null),c.a.createElement(je,{status:l?"checked":"unchecked",onClick:i,children:c.a.createElement(B.SvgIcon,null,c.a.createElement("g",{transform:"translate(0 4)"},c.a.createElement("path",{d:"M9 10v5h2V4h2v11h2V4h2V2H9C6.79 2 5 3.79 5 6s1.79 4 4 4z"})))}),u)})),pn=n(60),fn=n.n(pn),hn=n(61),dn=n.n(hn),yn=Object(N.compose)(Object(N.setDisplayName)("history"),Object(z.connect)((function(e){e=Object(j.getActive)(e).state;var t=Object(j.getRedos)(e),n=Object(j.getUndos)(e);return{canRedo:!!t.length,canUndo:!!n.length}}),(function(e){return{undo:function(){e(j.ACTION.History.undo())},redo:function(){e(j.ACTION.History.redo())}}})),Object(N.onlyUpdateForKeys)(["canRedo","canUndo"]))((function(e){var t=e.undo,n=e.redo,r=e.canUndo,a=e.canRedo,o=e.children;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(je,{hint:"undo",status:r?"uncheck":"disabled",children:c.a.createElement(dn.a,null),onClick:t}),c.a.createElement(je,{hint:"redo",status:a?"uncheck":"disabled",children:c.a.createElement(fn.a,null),onClick:n}),o)})),gn=n(62),vn=n.n(gn),En=n(63),bn=n.n(En),On=n(64),xn=n.n(On),wn=Object(N.compose)(Object(N.setDisplayName)("clipboard"),Object(z.connect)((function(e){e=Object(j.getActive)(e).state;var t=Object(j.getSelection)(e),n=t.start,r=void 0===n?{}:n,a=t.end,o=void 0===a?{}:a;return{withSelection:!(r.id==o.id&&r.at==o.at),withClipboard:!!window._clipboard}}),(function(e){return{cut:function(){e(j.ACTION.Selection.CUT())},copy:function(){e(j.ACTION.Selection.COPY())},paste:function(){e(j.ACTION.Selection.PASTE())}}})),Object(N.onlyUpdateForKeys)(["withSelection","withClipboard"]))((function(e){var t=e.cut,n=e.copy,r=e.paste,a=e.withSelection,o=e.withClipboard,l=e.children;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(je,{label:"paste",status:o?"uncheck":"disabled",children:c.a.createElement(bn.a,null),onClick:r}),c.a.createElement(je,{label:"cut",status:a?"uncheck":"disabled",children:c.a.createElement(xn.a,null),onClick:t}),c.a.createElement(je,{label:"copy",status:a?"uncheck":"disabled",children:c.a.createElement(vn.a,null),onClick:n}),l)})),kn=n(65),Sn=n.n(kn),Cn=n(66),jn=n.n(Cn),Tn=n(31),In=n.n(Tn),Pn=n(32),Mn=n.n(Pn),An=n(67),Dn=n.n(An),zn=n(68),Nn=n.n(zn),qn=n(69),Rn=n.n(qn),Bn=n(70),Ln=n.n(Bn),Fn=Object(N.compose)(Object(N.setDisplayName)("TableDesigner"),Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){var t=e.dispatch;return{addRowAbove:function(){t(j.ACTION.Entity.CREATE({type:"row",where:"before"}))},addRowBelow:function(){t(j.ACTION.Entity.CREATE({type:"row",where:"after"}))},addColRight:function(){t(j.ACTION.Entity.CREATE({type:"column",where:"after"}))},addColLeft:function(){t(j.ACTION.Entity.CREATE({type:"column",where:"before"}))},remove:function(e){t(j.ACTION.Selection.EXTEND(e)),t(j.ACTION.Selection.REMOVE({type:e}))},select:function(e){t(j.ACTION.Selection.EXTEND(e))}}})))((function(e){var t=e.addRowAbove,n=e.addRowBelow,r=e.addColLeft,a=e.addColRight,o=e.remove,l=e.select;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(bt,{title:"table conditions",icon:c.a.createElement(Un,{children:c.a.createElement(Kn,null)})},c.a.createElement(B.MenuItem,{primaryText:"Header Row",leftIcon:c.a.createElement(Mn.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Total Row",leftIcon:c.a.createElement(In.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Banded Rows",leftIcon:c.a.createElement(Mn.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"First Column",leftIcon:c.a.createElement(Mn.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Last Column",leftIcon:c.a.createElement(In.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Banded Columns",leftIcon:c.a.createElement(In.a,null)})),c.a.createElement(bt,{title:"select ...",icon:c.a.createElement(jn.a,null)},c.a.createElement(B.MenuItem,{primaryText:"Select Cell",leftIcon:c.a.createElement(Vn,null),onClick:function(){return l("cell")}}),c.a.createElement(B.MenuItem,{primaryText:"Select Column",leftIcon:c.a.createElement(Gn,null),onClick:function(){return l("column")}}),c.a.createElement(B.MenuItem,{primaryText:"Select Row",leftIcon:c.a.createElement(_n,null),onClick:function(){return l("row")}}),c.a.createElement(B.MenuItem,{primaryText:"Select Table",leftIcon:c.a.createElement(Yn,null),onClick:function(){return l("table")}})),c.a.createElement(bt,{title:"delete ...",icon:c.a.createElement(Wn,{children:c.a.createElement(Kn,{size:12,strokeWidth:3})})},c.a.createElement(B.MenuItem,{primaryText:"Delete Cell",onClick:function(){return o("cell")},leftIcon:c.a.createElement(Vn,null,c.a.createElement(Kn,null))}),c.a.createElement(B.MenuItem,{primaryText:"Delete Column",onClick:function(){return o("column")},leftIcon:c.a.createElement(Gn,null,c.a.createElement(Kn,null))}),c.a.createElement(B.MenuItem,{primaryText:"Delete Row",onClick:function(){return o("row")},leftIcon:c.a.createElement(_n,null,c.a.createElement(Kn,null))}),c.a.createElement(B.MenuItem,{primaryText:"Delete Table",onClick:function(){return o("table")},leftIcon:c.a.createElement(Yn,null,c.a.createElement(Kn,null))})),c.a.createElement(bt,{title:"insert row/column",icon:c.a.createElement(Wn,{children:null})},c.a.createElement(B.MenuItem,{primaryText:"Insert Row Above",leftIcon:c.a.createElement(Dn.a,null),onClick:t}),c.a.createElement(B.MenuItem,{primaryText:"Insert Row Below",leftIcon:c.a.createElement(Nn.a,null),onClick:n}),c.a.createElement(B.MenuItem,{primaryText:"Insert Column Left",leftIcon:c.a.createElement(Rn.a,null),onClick:r}),c.a.createElement(B.MenuItem,{primaryText:"Insert Column Right",leftIcon:c.a.createElement(Ln.a,null),onClick:a})))})),Un=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("path",{d:"M7 5h2V3H7v2zm0 8h2v-2H7v2zm0 8h2v-2H7v2zm4-4h2v-2h-2v2zm0 4h2v-2h-2v2zm-8 0h2v-2H3v2zm0-4h2v-2H3v2zm0-4h2v-2H3v2zm0-4h2V7H3v2zm0-4h2V3H3v2zm8 8h2v-2h-2v2zm8 4h2v-2h-2v2zm0-4h2v-2h-2v2zm0 8h2v-2h-2v2zm0-12h2V7h-2v2zm-8 0h2V7h-2v2zm8-6v2h2V3h-2zm-8 2h2V3h-2v2zm4 16h2v-2h-2v2zm0-8h2v-2h-2v2zm0-8h2V3h-2v2z"}),c.a.createElement("path",{d:"M5 8 l4 5l8 -8",stroke:"blue",fill:"none",strokeWidth:"3"}))},Wn=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(B.SvgIcon,n,c.a.createElement("path",{d:"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 20H4v-4h4v4zm0-6H4v-4h4v4zm0-6H4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4z"}),t)},Hn=function(e){return c.a.createElement("rect",ie()({fill:"blue",width:"4",height:"4"},e))},Vn=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(Wn,n,c.a.createElement(Hn,{x:"4",y:"10"}),t)},Gn=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(Wn,n,c.a.createElement(Hn,{x:"10",y:"4"}),c.a.createElement(Hn,{x:"10",y:"10"}),c.a.createElement(Hn,{x:"10",y:"16"}),t)},_n=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(Wn,n,c.a.createElement(Hn,{x:"4",y:"10"}),c.a.createElement(Hn,{x:"10",y:"10"}),c.a.createElement(Hn,{x:"16",y:"10"}),t)},Yn=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(Wn,n,c.a.createElement(Hn,{x:"4",y:"4"}),c.a.createElement(Hn,{x:"10",y:"4"}),c.a.createElement(Hn,{x:"16",y:"4"}),c.a.createElement(Hn,{x:"4",y:"10"}),c.a.createElement(Hn,{x:"10",y:"10"}),c.a.createElement(Hn,{x:"16",y:"10"}),c.a.createElement(Hn,{x:"4",y:"16"}),c.a.createElement(Hn,{x:"10",y:"16"}),c.a.createElement(Hn,{x:"16",y:"16"}),t)},Kn=function(e){var t=e.size,n=void 0===t?8:t,r=e.p,a=void 0===r?(24-n)/2:r,o=D()(e,["size","p"]);return c.a.createElement("path",ie()({d:"M0 0 l".concat(n," ").concat(n," M0 ").concat(n," l").concat(n," -").concat(n),stroke:"red",strokeWidth:2,transform:"translate(".concat(a," ").concat(a,")")},o))},Xn=function(e){return c.a.createElement(B.Tab,{label:"Table"},c.a.createElement(B.Toolbar,null,c.a.createElement(Fn,null)))},Jn=Object(j.whenSelectionChange)()(function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{show:!1}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.selection,r=t.children,a=this.state,o=a.show,l=a.anchor,i=null;return n&&o&&(i=c.a.createElement(B.Popover,{open:!0,anchorEl:l,onRequestClose:function(t){return e.setState({show:!1})}},c.a.createElement(Zn,{onAction:function(t){return e.setState({show:!1})}}))),c.a.createElement(B.ToolbarGroup,null,c.a.createElement(Se,{disabled:!n,onClick:function(t){return e.setState({show:!e.state.show,anchor:t.target})}},c.a.createElement(Sn.a,null)),i,r)}}]),t}(i.Component)),Zn=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props.onAction;return c.a.createElement("div",null,c.a.createElement($n,{onAction:e}))}}]),t}(i.Component),$n=Object(N.compose)(Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){var t=e.onAction,n=e.selection,r=e.dispatch;return{create:function(e,a){var o,l,i,c=(o=n.props("page"),l=o.column,i=void 0===l?0:l,o.cols[i].width),u=new Array(a-1).fill(parseInt(c/a));u.push(c-u.reduce((function(e,t){return e+t}),0));var s={type:"table",rows:e,cols:u};r(j.ACTION.Entity.CREATE(s)),t()}}})))(function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{row:0,col:0}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.state,n=t.row,r=t.col,a="Insert Table";n&&(a="".concat(n,"x").concat(r," Table"));var o=this.tr.bind(this);return c.a.createElement("div",null,c.a.createElement(B.Subheader,null,a),c.a.createElement("table",{onMouseOut:function(t){return e.setState({row:0,col:0})}},c.a.createElement("tbody",null,o(),o(),o(),o(),o(),o(),o(),o(),o(),o())))}},{key:"tr",value:function(){var e=this,t=this.props.create,n=this.state,r=n.row,a=n.col,o=function(){return c.a.createElement("td",{style:{width:5,height:5,border:"1px solid gray"},onClick:function(e){return t(r,a)},onMouseOver:function(t){return e.rowCol(t.target)}})};return c.a.createElement("tr",null,o(),o(),o(),o(),o(),o(),o(),o(),o(),o())}},{key:"rowCol",value:function(e){for(var t=e.parentNode,n=-1,r=-1,a=0,o=t.parentNode.children,l=o.length;a<l;a++)if(o[a]==t){n=a+1;break}for(var i=0,c=t.children,u=c.length;i<u;i++)if(c[i]==e){r=i+1;break}this.setState({row:n,col:r})}}]),t}(i.Component)),Qn=n(71),er=n.n(Qn);var tr=n(18),nr=n.n(tr),rr=Object(N.compose)(Object(N.setDisplayName)("PictureSize"),Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){e.dispatch})))((function(e){return nr()(e),c.a.createElement(B.ToolbarGroup,null,c.a.createElement("span",{style:{whiteSpace:"nowrap",marginLeft:2,marginRigth:2}},c.a.createElement("span",null,"height"),c.a.createElement("input",{type:"number"})),c.a.createElement("span",{style:{whiteSpace:"nowrap",marginLeft:2,marginRigth:2}},c.a.createElement("span",null,"width"),c.a.createElement("input",{type:"number"})))})),ar=Object(N.compose)(Object(N.setDisplayName)("PictureBorder"),Object(j.whenSelectionChange)())((function(e){return nr()(e),c.a.createElement(B.ToolbarGroup,null,c.a.createElement(Tt,{label:"border color"},c.a.createElement(xt.a,null)),c.a.createElement(bt,{label:"border color"},c.a.createElement(B.MenuItem,{primaryText:"automatic"}),c.a.createElement(B.MenuItem,{primaryText:"no color"}),c.a.createElement(B.Subheader,null,"Theme Colors"),c.a.createElement(B.MenuItem,null,c.a.createElement(B.SvgIcon,null),c.a.createElement(B.SvgIcon,null),c.a.createElement(B.SvgIcon,null)),c.a.createElement(B.Subheader,null,"Standard Colors"),c.a.createElement(B.MenuItem,null,c.a.createElement(B.SvgIcon,null),c.a.createElement(B.SvgIcon,null),c.a.createElement(B.SvgIcon,null))))})),or=n(22),lr=n.n(or),ir=n(17),cr=n.n(ir),ur=Object(N.compose)(Object(N.setDisplayName)("PicturePosition"),Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){e.dispatch})))((function(e){return nr()(e),c.a.createElement(B.ToolbarGroup,null,c.a.createElement(bt,{label:"wrap text",icon:c.a.createElement(cr.a,null)},c.a.createElement(B.MenuItem,{primaryText:"In Line with Text",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.Divider,null),c.a.createElement(B.MenuItem,{primaryText:"Square",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Tight",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Through",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Top and Bottom",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.Divider,null),c.a.createElement(B.MenuItem,{primaryText:"Behind Text",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"In Front of Text",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.Divider,null),c.a.createElement(B.MenuItem,{primaryText:"More Layout Options..."})),c.a.createElement(bt,{label:"rotate",icon:c.a.createElement(lr.a,null)},c.a.createElement(B.MenuItem,{primaryText:"Rotate Right 90",leftIcon:c.a.createElement(lr.a,{degree:90})}),c.a.createElement(B.MenuItem,{primaryText:"Rotate Left 90",leftIcon:c.a.createElement(lr.a,{degree:-90})}),c.a.createElement(B.MenuItem,{primaryText:"Flip Vertical",leftIcon:c.a.createElement(lr.a,{degree:180})}),c.a.createElement(B.MenuItem,{primaryText:"Flip Horizontal",leftIcon:c.a.createElement(lr.a,{degree:-180})}),c.a.createElement(B.Divider,null),c.a.createElement(B.MenuItem,{primaryText:"More Rotation Options..."})))})),sr=Object(N.compose)(Object(N.setDisplayName)("PictureEffect"),Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){e.dispatch;return{}})))((function(e){return nr()(e),c.a.createElement(B.ToolbarGroup,null,c.a.createElement(bt,{label:"picture color",icon:c.a.createElement(xt.a,null)},c.a.createElement(B.Subheader,null,"Recolor"),c.a.createElement(B.MenuItem,null)))})),mr=function(e){var t=e.children;return c.a.createElement(B.Tab,{label:"Picture Format"},c.a.createElement(B.Toolbar,null,c.a.createElement(B.ToolbarGroup,null,c.a.createElement(sr,null),c.a.createElement(ar,null),c.a.createElement(ur,null),c.a.createElement(rr,null),t)))},pr=n(72),fr=n.n(pr),hr=Object(N.compose)(Object(j.connect)(),Object(N.mapProps)((function(e){var t=e.children,n=e.dispatch;return{children:t,insert:function(e){fetch(e).then((function(e){if(!e.ok)throw new Error(e.statusText);return e.arrayBuffer()})).then((function(t){(t=new Uint8Array(t)).crc32=e,fr.a.fromBuffer(t).then((function(e){n(j.ACTION.Entity.CREATE({type:"image",data:t,mime:e}))}))}))}}})))((function(e){var t=e.children,n=e.insert;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(Se,{onClick:function(e){return(t="image/*",null==un&&((un=document.createElement("input")).type="file",un.style.position="absolute",un.style.left="-9999px",document.body.appendChild(un)),un.setAttribute("accept",t||""),new Promise((function(e,t){un.onchange=function(){var n=this.files[0];un.value="",null==n?t():e(URL.createObjectURL(n))},un.click()}))).then(n);var t}},c.a.createElement(er.a,null)),t)})),dr=n(14),yr=n.n(dr),gr=n(34),vr=n.n(gr),Er=n(73),br=n.n(Er);function Or(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function xr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Or(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Or(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var wr=Object(N.compose)(Object(N.setDisplayName)("Page Layout"),Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){var t=e.children,n=e.dispatch,r=e.selection,a=r&&r.props("page",!1)||{};return{children:t,style:a,createSection:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};n(j.ACTION.Entity.CREATE(xr({},e,{type:"section"})))},createPageBreak:function(){n(j.ACTION.Entity.CREATE({type:"pagebreak"}))},landscape:function(){n(j.ACTION.Entity.UPDATE({type:"section",orientation:"landscape"}))},protrait:function(){n(j.ACTION.Entity.UPDATE({type:"section",orientation:"portrait"}))},margin:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];n(j.ACTION.Entity.UPDATE({type:"section",margin:t}))},size:function(e,t){n(j.ACTION.Entity.UPDATE({type:"section",size:{width:e,height:t}}))},column:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];n(j.ACTION.Entity.UPDATE({type:"section",cols:t}))},sizeEqual:function(e,t){var n=a.size;return n&&Math.abs(n.width*t-n.height*e)<.1},marginEqual:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r,o=t[0],l=t[1],i=void 0===l?o:l,c=t[2],u=void 0===c?o:c,s=t[3],m=void 0===s?i:s,p=a.margin;return p&&(r=parseInt(100*p.top/o))&&Math.abs(r-100*p.right/i)<1&&Math.abs(r-100*p.bottom/u)<1&&Math.abs(r-100*p.left/m)<1},cols:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e},n=a.cols;return n&&n.length==e&&t.apply(void 0,n.map((function(e){return e.width})))}}})))((function(e){var t=e.children,n=e.createSection,r=e.createPageBreak,a=e.margin,o=e.size,l=e.column,u=e.landscape,s=e.protrait,m=e.sizeEqual,p=e.marginEqual,f=e.cols,h=e.style;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(bt,{label:"Breaks",title:"page breaks",icon:c.a.createElement(B.SvgIcon,null,c.a.createElement(Sr,{transform:"translate(0 -12)"}),c.a.createElement("line",{strokeDasharray:"2",stroke:"blue",x1:"0",x2:"24",y1:"12",y2:"12",strokeWidth:"2"}),c.a.createElement(Sr,{transform:"translate(0 12)"}))},c.a.createElement(vr.a,null,"Page Breaks"),c.a.createElement(yr.a,{primaryText:"Page",leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement(Cr,{transform:"translate(0 -12)"}),c.a.createElement("path",{d:"M1 10 l2 2l-2 2z",fill:"blue"}),c.a.createElement(Cr,{transform:"translate(0 12)"})),onClick:function(){return r()}}),c.a.createElement(yr.a,{primaryText:"Column",leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement("path",{d:"M9 7 l0 10 M14 7 l0 10",strokeDasharray:"2",stroke:"blue",strokeWidth:"2"}),c.a.createElement(Cr,null),c.a.createElement("path",{d:"M8.5 18 h3 v-12 h1",stroke:"red",strokeWidth:"1",fill:"none"}))}),c.a.createElement(vr.a,null,"Section Breaks"),c.a.createElement(yr.a,{primaryText:"Next Page",onClick:function(e){return n()},leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement(Sr,{transform:"translate(0 -12)"}),c.a.createElement("path",{d:"M1 10 l2 2l-2 2z",fill:"blue"}),c.a.createElement(Sr,{transform:"translate(0 12)"}))}),c.a.createElement(yr.a,{primaryText:"Continuous",leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement("path",{d:"M12 6 l0 5",strokeDasharray:"1",stroke:"lightblue",strokeWidth:"10"}),c.a.createElement(Cr,null),c.a.createElement("path",{d:"M1 10 l2 2l-2 2z",fill:"blue"}),c.a.createElement("path",{d:"M12 12 l0 5",strokeDasharray:"1",stroke:"blue",strokeWidth:"10"})),onClick:function(e){return n({kind:"continuous"})}}),c.a.createElement(yr.a,{primaryText:"Even Page",leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement(Cr,{transform:"translate(0 -12)"}),c.a.createElement(Cr,{transform:"translate(0 12)"}),c.a.createElement("text",{x:"10",y:"6",fontSize:"6",fontFamily:"arial",stroke:"blue"},"2"),c.a.createElement("text",{x:"10",y:"22",fontSize:"6",fontFamily:"arial",stroke:"blue"},"4")),onClick:function(e){return n({kind:"evenPage"})}}),c.a.createElement(yr.a,{primaryText:"Odd Page",leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement(Cr,{transform:"translate(0 -12)"}),c.a.createElement(Cr,{transform:"translate(0 12)"}),c.a.createElement("text",{x:"10",y:"6",fontSize:"6",fontFamily:"arial",stroke:"blue"},"1"),c.a.createElement("text",{x:"10",y:"22",fontSize:"6",fontFamily:"arial",stroke:"blue"},"3")),onClick:function(e){return n({kind:"oddPage"})}})),c.a.createElement(bt,{label:"Margins",title:"page margin",icon:c.a.createElement(Mr,null)},c.a.createElement(yr.a,{primaryText:"Normal",rightIcon:p(2.54)?kr:null,leftIcon:c.a.createElement(Mr,null),onClick:function(e){return a(2.54)}}),c.a.createElement(yr.a,{primaryText:"Narrow",rightIcon:p(1.27)?kr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return a(1.27)}}),c.a.createElement(yr.a,{primaryText:"Moderate",rightIcon:p(2.54,1.91)?kr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return a(2.54,1.91)}}),c.a.createElement(yr.a,{primaryText:"Wide",rightIcon:p(2.54,5.08)?kr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return a(2.54,5.08)}}),c.a.createElement(yr.a,{primaryText:"Mirrored",rightIcon:p(2.54,2.54,2.54,3.18)?kr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return a(2.54,2.54,2.54,3.18)}}),c.a.createElement(yr.a,{primaryText:"Custom Margins...",leftIcon:c.a.createElement(B.SvgIcon,null)})),c.a.createElement(bt,{label:"Orientation",title:"page orientation",icon:c.a.createElement(Pr,null)},c.a.createElement(yr.a,{primaryText:"Portrait",rightIcon:h.size&&h.size.width<h.size.height?kr:null,leftIcon:c.a.createElement(B.SvgIcon,{children:c.a.createElement(Cr,null)}),onClick:s}),c.a.createElement(yr.a,{primaryText:"Landscape",rightIcon:h.size&&h.size.width>h.size.height?kr:null,leftIcon:c.a.createElement(B.SvgIcon,{children:c.a.createElement(Cr,{transform:"translate(25 0) rotate(90)"})}),onClick:u})),c.a.createElement(bt,{label:"Size",title:"page size",icon:c.a.createElement(Ir,null)},c.a.createElement(yr.a,{primaryText:"Letter",rightIcon:m(21.59,27.94)?kr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return o(21.59,27.94)}}),c.a.createElement(yr.a,{primaryText:"Legal",rightIcon:m(21.59,35.56)?kr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return o(21.59,35.56)}}),c.a.createElement(yr.a,{primaryText:"A3",rightIcon:m(29.7,42.01)?kr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return o(29.7,42.01)}}),c.a.createElement(yr.a,{primaryText:"A4",rightIcon:m(20.99,29.7)?kr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return o(20.99,29.7)}}),c.a.createElement(yr.a,{primaryText:"More Paper Sizes...",leftIcon:c.a.createElement(B.SvgIcon,null)})),c.a.createElement(bt,{label:"Columns",title:"page column",icon:c.a.createElement(Tr,{children:c.a.createElement(i.Fragment,null,c.a.createElement(jr,null),c.a.createElement(jr,{transform:"translate(7 0)"}))})},c.a.createElement(yr.a,{primaryText:"1",rightIcon:f(1)?kr:null,leftIcon:c.a.createElement(Tr,null,c.a.createElement(jr,{d:"M12 6.5v12",strokeWidth:"12"})),onClick:function(e){return l(1)}}),c.a.createElement(yr.a,{primaryText:"2",rightIcon:f(2,(function(e,t){return e==t}))?kr:null,leftIcon:c.a.createElement(Tr,null,c.a.createElement(jr,null),c.a.createElement(jr,{transform:"translate(7 0)"})),onClick:function(e){return l(2)}}),c.a.createElement(yr.a,{primaryText:"3",rightIcon:f(3)?kr:null,leftIcon:c.a.createElement(Tr,null,c.a.createElement(jr,{strokeWidth:"3"}),c.a.createElement(jr,{strokeWidth:"3",transform:"translate(3.5 0)"}),c.a.createElement(jr,{strokeWidth:"3",transform:"translate(7 0)"})),onClick:function(e){return l(3)}}),c.a.createElement(yr.a,{primaryText:"Left",rightIcon:f(2,(function(e,t){return e<t}))?kr:null,leftIcon:c.a.createElement(Tr,null,c.a.createElement(jr,{strokeWidth:"3"}),c.a.createElement(jr,{strokeWidth:"7",transform:"translate(6 0)"})),onClick:function(e){return l(1,2)}}),c.a.createElement(yr.a,{primaryText:"Right",rightIcon:f(2,(function(e,t){return e>t}))?kr:null,leftIcon:c.a.createElement(Tr,null,c.a.createElement(jr,{strokeWidth:"7",transform:"translate(1 0)"}),c.a.createElement(jr,{strokeWidth:"3",transform:"translate(7 0)"})),onClick:function(e){return l(2,1)}}),c.a.createElement(yr.a,{primaryText:"More Columns...",leftIcon:c.a.createElement(B.SvgIcon,null)})),t)})),kr=c.a.createElement(br.a,null),Sr=function(e){return c.a.createElement("path",ie()({},e,{d:"M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z"}))},Cr=function(e){return c.a.createElement("path",ie()({},e,{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z"}))},jr=function(e){return c.a.createElement("path",ie()({d:"M8.5 6.5v12",fill:"none",stroke:"blue",strokeWidth:"5",strokeDasharray:"1.5"},e))},Tr=function(e){e.size,e.d;var t=e.children,n=D()(e,["size","d","children"]);return c.a.createElement(B.SvgIcon,n,c.a.createElement("path",{d:"M4 2h16v20H4z",fill:"none",stroke:"black"}),t)},Ir=function(){return c.a.createElement(B.SvgIcon,null,c.a.createElement(Cr,{transform:"scale(0.6) translate(10,10)"}),c.a.createElement("path",{d:"M9 3 v3v-1.5 h10v-1.5v3",fill:"none",stroke:"blue"}),c.a.createElement("path",{d:"M9 3 v3v-1.5 h10v-1.5v3",fill:"none",stroke:"blue",transform:"translate(9.5 -1) rotate(90)"}))},Pr=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"scale(0.8) translate(4 4)"},c.a.createElement(Cr,{transform:"translate(-3 -1) scale(0.9)"}),c.a.createElement(Cr,{transform:"translate(24 4.5) scale(0.9) rotate(90)"})))},Mr=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(B.SvgIcon,n,c.a.createElement("path",{d:"M4 2h16v20H4z",fill:"none",stroke:"black"}),t||c.a.createElement(i.Fragment,null,c.a.createElement(Ar,null),c.a.createElement(Ar,{transform:"translate(10 0)"}),c.a.createElement(Dr,null),c.a.createElement(Dr,{transform:"translate(0 14)"})))},Ar=function(e){return c.a.createElement("path",ie()({d:"M7 2.5 v19",fill:"none",stroke:"blue"},e))},Dr=function(e){return c.a.createElement("path",ie()({d:"M4.5 5 h15",fill:"none",stroke:"blue"},e))};function zr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Nr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?zr(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):zr(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var qr=function(e){return c.a.createElement(B.Toolbar,ie()({style:{justifyContent:"initial"}},e))},Rr=function(e){return c.a.createElement(B.ToolbarSeparator,ie()({style:{marginRight:2,marginLeft:2}},e))},Br=Object(N.compose)(Object(N.setDisplayName)("Ribbon"),Object(N.getContext)({muiTheme:C.a.object,selection:C.a.object}),Object(j.whenSelectionChange)())((function(e){var t=e.children,n=e.selection,r=e.muiTheme,a=e.buttonStyle,o=void 0===a?{height:24,fontSize:10,lineHeight:"24px",paddingRight:5,paddingLeft:5}:a,l=e.tabStyle,i=void 0===l?{width:"auto"}:l,u=e.style,s=e.commands,m=void 0===s?{layout:!1}:s,p="home,insert,layout,when".split(",").reduce((function(e,t){if(m[t]||void 0===m[t]){if("object"==me()(m[t])&&(e[t]=Nr({},e[t],{},m[t])),"when"==t)if(n){var r=e.when;e.when=Object.keys(r).reduce((function(e,t){var a=n.props(t);if(a){var o=r[t].type({style:a,selection:n});Array.isArray(o)?e=[].concat(e,o):o&&e.push(o)}return e}),[]).map((function(e){return c.a.cloneElement(e,{key:e.props.label,buttonStyle:Nr({},e.props.buttonStyle||{},{},o,{backgroundColor:"antiquewhite"}),style:Nr({},e.props.tabStyle||{},{},i,{marginRight:2})})}))}else e[t]=null}else e[t]=m[t];return e}),{home:{file:c.a.createElement(Be,null,c.a.createElement(Rr,null)),clipboard:c.a.createElement(wn,null,c.a.createElement(Rr,null)),history:c.a.createElement(yn,null,c.a.createElement(Rr,null)),text:c.a.createElement(Gt,null,c.a.createElement(Rr,null)),paragraph:c.a.createElement(mn,null,c.a.createElement(Rr,null))},insert:{table:c.a.createElement(Jn,null,c.a.createElement(Rr,null)),picture:c.a.createElement(hr,null,c.a.createElement(Rr,null))},layout:{basic:c.a.createElement(wr,null)},when:{table:c.a.createElement(Xn,null),image:c.a.createElement(mr,null)}}),f=p.home,h=p.insert,d=p.layout,y=p.when;return c.a.createElement("div",{style:Nr({height:54,borderBottom:"0.5px solid lightgray",marginBottom:1,paddingBottom:4},u)},c.a.createElement(F.a,{muiTheme:W()(r,{sizeIconButton:{size:24,padding:4},comboBox:{height:24,textFieldStyle:{fontSize:12},menu:{style:{overflowX:"hidden"},menuItemStyle:{minHeight:"24px",lineHeight:"24px",fontSize:12}}},toolbar:{height:30}})},c.a.createElement(B.Tabs,{contentContainerStyle:{height:30},inkBarStyle:{display:"none"}},f&&c.a.createElement(B.Tab,{label:"Home",buttonStyle:o,style:i},c.a.createElement(qr,null,f.file,f.clipboard,f.history,f.text,f.paragraph,f.more)),h&&c.a.createElement(B.Tab,{label:"Insert",buttonStyle:o,style:i},c.a.createElement(qr,null,h.table,h.picture,h.more)),d&&c.a.createElement(B.Tab,{label:"Page Layout",buttonStyle:o,style:i},c.a.createElement(qr,null,d.basic,d.more)),c.a.Children.toArray(t).map((function(e){return c.a.cloneElement(e,{buttonStyle:o,style:i,key:e.props.label})})),y,c.a.createElement(B.Tab,{label:"beautifier",buttonStyle:o,style:Nr({visibility:"hidden",flex:"1 100%"},i)}))))})),Lr=Br;function Fr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var Ur=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{move:!1}),h()(p()(n),"changing",{}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.state,n=t.move,r=(t.x0,t.y0,t.x,t.y,this.changing),a=this.props,o=(a.onMove,a.children),l=null;return n?(l=c.a.createElement(Wr,{onMouseUp:function(t){return e.onEndMove(t)},onMouseMove:function(t){return e.move(t)}}),o=c.a.cloneElement(o,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fr(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fr(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},r,{onMouseUp:function(t){return e.onEndMove(t)}}))):o=c.a.cloneElement(o,{onMouseDown:function(t){return e.onStartMove(t)}}),c.a.createElement(i.Fragment,null,l,o)}},{key:"onStartMove",value:function(e){var t=e.clientX,n=e.clientY;this.setState({move:!0,x0:t,y0:n,x:t,y:n}),e.stopPropagation()}},{key:"onEndMove",value:function(e){var t=this,n=this.state,r=n.x0,a=n.y0,o=n.x,l=n.y;this.setState({move:!1},(function(e){t.props.onAccept&&t.props.onAccept(o-r,l-a)})),e.stopPropagation()}},{key:"move",value:function(e){this.setState({x:e.clientX,y:e.clientY}),e.stopPropagation()}},{key:"shouldComponentUpdate",value:function(e,t){var n=e.onMove,r=t.move,a=t.x0,o=t.x,l=t.y0,i=t.y;return r&&n&&(this.changing=n(o-a,i-l)),this.props!=arguments[0]||this.state!=arguments[1]}}]),t}(i.Component),Wr=function(e){return c.a.createElement("div",ie()({},e,{style:{position:"fixed",left:0,top:0,width:"100%",height:"100%",cursor:"default"}}))},Hr=Object(N.onlyUpdateForKeys)("width,scale,leftMargin,rightMargin,firstLine,leftIndent,cm,step".split(","))((function(e){var t=e.width,n=void 0===t?0:t,r=e.scale,a=void 0===r?1:r,o=e.leftMargin,l=void 0===o?3:o,i=e.rightMargin,u=void 0===i?3:i,s=e.setLeftMargin,m=e.setRightMargin,p=e.firstLine,f=void 0===p?0:p,h=e.leftIndent,d=void 0===h?0:h,y=e.rightIndent,g=void 0===y?0:y,v=e.setFirstLine,E=e.setLeftIndent,b=e.setRightIndent,O=e.cm,x=void 0===O?96*a/2.54:O,w=e.step,k=void 0===w?x/8:w,S=e.trim,C=void 0===S?function(e,t){return Math[t>0?"ceil":"floor"]((e+t)/k)*k}:S,j=null;return c.a.createElement("div",{className:"ruler horizontal",style:{width:n*a,position:"relative"}},c.a.createElement(Xr,{width:n*a,from:l*a,cm:x}),!!n&&c.a.createElement(Gr,{style:{position:"absolute",top:0,left:0,width:l*a},onMove:s}),!!n&&c.a.createElement(Ur,{ref:function(e){return j=e},onAccept:function(e){return v((C((d+f)*a,e)-d*a)/a)},onMove:function(e){return{style:{position:"absolute",top:0,left:l*a+C((d+f)*a,e)}}}},c.a.createElement(Yr,{style:{position:"absolute",top:0,left:(l+d+f)*a}})),!!n&&c.a.createElement(Ur,{onAccept:function(e){j.setState({move:!1}),E(C(d*a,e)/a)},onMove:function(e){return j.setState({move:!0,x0:0,y0:0,x:e,y:0}),{style:{position:"absolute",top:0,left:l*a+C(d*a,e)}}}},c.a.createElement(_r,{style:{position:"absolute",top:0,left:(l+d)*a}})),!!n&&c.a.createElement(Gr,{style:{position:"absolute",top:0,right:0,width:u*a},onMove:m}),!!n&&c.a.createElement(Ur,{onAccept:function(e){return b(C(g*a,-e)/a)},onMove:function(e){return{style:{position:"absolute",top:0,right:u*a+C(g*a,-e)}}}},c.a.createElement(_r,{style:{position:"absolute",top:0,right:(u+g)*a}})))})),Vr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Object.keys(e);return"left,right".split(",").find((function(e){return t.includes(e)}))},Gr=function(e){var t=e.style,n=(e.onMove,e.at),r=void 0===n?Vr(t):n;return c.a.createElement("div",{className:"margin ".concat(r),style:t,title:"".concat(r," Margin")},c.a.createElement("div",{className:"mover"}))},_r=function(e){var t=e.style,n=e.at,r=void 0===n?Vr(t):n,a=D()(e,["style","at"]);return c.a.createElement("div",ie()({className:"indent ".concat(r),style:t,title:"".concat(r," Indent")},a),c.a.createElement(Kr,null))},Yr=function(e){return c.a.createElement("div",ie()({className:"first-line left"},e,{title:"First Line Indent"}),c.a.createElement(Kr,{direction:"bottom"}))},Kr=function(e){var t=e.direction,n=void 0===t?"top":t,r=e.degs,a=void 0===r?{bottom:180}:r,o=D()(e,["direction","degs"]);return c.a.createElement(B.SvgIcon,o,c.a.createElement("path",{transform:"rotate(".concat(a[n]||0," 12 12)"),d:"M11.5 0 L23 11.5 L23 23 L0 23 L0 11.5Z",fill:"white",strokeWidth:"1",stroke:"gray"}))},Xr=function(e){var t=e.width,n=e.height,r=void 0===n?20:n,a=e.from,o=e.cm,l=e.children;return c.a.createElement("svg",{style:{width:t,height:r,backgroundColor:"white"},viewBox:"0 0 ".concat(t," ").concat(r)},c.a.createElement("g",{transform:"translate(".concat(a," 0)")},new Array(Math.ceil(a/o)).fill(0).map((function(e,t){return c.a.createElement(Jr,{cm:o,key:-t,i:-t-1})}))),c.a.createElement("g",{transform:"translate(".concat(a," 0)")},new Array(Math.ceil((t-a)/o)).fill(0).map((function(e,t){return c.a.createElement(Jr,{cm:o,key:t,i:t})}))),l)},Jr=function(e){var t=e.i,n=e.cm,r=e.nth,a=void 0===r?Math.abs(t+1):r;return c.a.createElement("g",{transform:"translate(".concat(t*n," 0)")},c.a.createElement("line",{x1:1*n/4,y1:8,x2:1*n/4,y2:12,stroke:"lightgray",strokeWidth:1}),c.a.createElement("line",{x1:2*n/4,y1:6,x2:2*n/4,y2:14,stroke:"lightgray",strokeWidth:1}),c.a.createElement("line",{x1:3*n/4,y1:8,x2:3*n/4,y2:12,stroke:"lightgray",strokeWidth:1}),0!=a?c.a.createElement("text",{x:n,y:13,textAnchor:"middle"},a):null)},Zr=Object(N.onlyUpdateForKeys)(["height","footer","header","scale","topMargin","bottomMargin"])((function(e){var t=e.height,n=void 0===t?0:t,r=(e.footer,e.header,e.scale),a=void 0===r?1:r,o=e.topMargin,l=void 0===o?3:o,i=e.bottomMargin,u=void 0===i?3:i,s=e.setTopMargin,m=e.setBottomMargin;return c.a.createElement("div",{className:"ruler vertical"},c.a.createElement(Qr,{height:n*a,from:l*a,cm:96*a/2.54}),!!n&&c.a.createElement($r,{style:{position:"absolute",top:0,left:0,height:l*a},onMove:s}),!!n&&c.a.createElement($r,{style:{position:"absolute",bottom:0,left:0,height:u*a},onMove:m}))})),$r=function(e){var t=e.style,n=(e.onMove,e.at),r=void 0===n?function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Object.keys(e);return"top,bottom".split(",").find((function(e){return t.includes(e)}))}(t):n;return c.a.createElement("div",{className:"margin ".concat(r),style:t,title:"".concat(r," Margin")},c.a.createElement("div",{className:"mover"}))},Qr=function(e){var t=e.width,n=void 0===t?20:t,r=e.height,a=e.from,o=e.cm,l=void 0===o?96/2.54:o;e.scale;return c.a.createElement("svg",{style:{width:n,height:r,backgroundColor:"white"},viewBox:"0 0 ".concat(n," ").concat(r)},c.a.createElement("g",{transform:"translate(0 ".concat(a,")")},new Array(Math.ceil(a/l)).fill(0).map((function(e,t){return c.a.createElement(ea,{cm:l,key:-t,i:-t-1})}))),c.a.createElement("g",{transform:"translate(0 ".concat(a,")")},new Array(Math.ceil((r-a)/l)).fill(0).map((function(e,t){return c.a.createElement(ea,{cm:l,key:t,i:t})}))))},ea=function(e){var t=e.i,n=e.cm,r=e.nth,a=void 0===r?Math.abs(t+1):r;return c.a.createElement("g",{transform:"translate(0 ".concat(t*n,")")},c.a.createElement("line",{y1:1*n/4,x1:8,y2:1*n/4,x2:12,stroke:"lightgray",strokeWidth:1}),c.a.createElement("line",{y1:2*n/4,x1:6,y2:2*n/4,x2:14,stroke:"lightgray",strokeWidth:1}),c.a.createElement("line",{y1:3*n/4,x1:8,y2:3*n/4,x2:12,stroke:"lightgray",strokeWidth:1}),0!=a?c.a.createElement("text",{y:n,x:13,textAnchor:"middle"},a):null)},ta=Object(N.compose)(Object(N.setDisplayName)("Ruler"),Object(j.whenSelectionChange)(),Object(N.withProps)((function(e){var t=e.dispatch;return{setLeftMargin:function(e){t(j.ACTION.Selection.UPDATE({section:{pgMar:{left:e}}}))},setRightMargin:function(e){t(j.ACTION.Selection.UPDATE({section:{pgMar:{right:e}}}))},setBottomMargin:function(e){t(j.ACTION.Selection.UPDATE({section:{pgMar:{bottom:e}}}))},setTopMargin:function(e){t(j.ACTION.Selection.UPDATE({section:{pgMar:{top:e}}}))},setFirstLine:function(e){t(j.ACTION.Selection.UPDATE({paragraph:{indent:{firstLine:e}}}))},setLeftIndent:function(e){t(j.ACTION.Selection.UPDATE({paragraph:{indent:{left:e}}}))},setRightIndent:function(e){t(j.ACTION.Selection.UPDATE({paragraph:{indent:{right:e}}}))}}})),Object(N.withProps)((function(e){var t=e.selection,n=t&&t.props("layout")||{},r=n.width,a=n.height,o=n.margin,l=(o=void 0===o?{}:o).left,i=o.top,c=o.right,u=o.bottom,s=o.header,m=o.footer,p=n.cols,f=void 0===p?[{x:l,width:r-l-c}]:p,h=(t&&t.props("paragraph",!1)||{}).indent;return{width:r,height:a,leftMargin:l,topMargin:i,bottomMargin:u,rightMargin:c,leftIndent:(h=void 0===h?{}:h).left,rightIndent:h.right,firstLine:h.firstLine,cols:f,header:s,footer:m}})))((function(e){var t=e.direction,n=void 0===t?"horizontal":t,r=e.Ruler,a=void 0===r?"horizontal"==n?Hr:Zr:r,o=D()(e,["direction","Ruler"]);return c.a.createElement(a,o)}));function na(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ra(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?na(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):na(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var aa=0,oa=Object(N.compose)(Object(N.setDisplayName)("VerticalRuler"),Object(j.whenSelectionChange)((function(e){var t=e.selection;if(t){var n=t.props("page",!1);if(n)return{pageY:n.pageY}}})))((function(e){var t=e.pageY,n=void 0===t?0:t,r=e.scale,a=D()(e,["pageY","scale"]);return c.a.createElement("div",{style:{position:"relative",top:n*r}},c.a.createElement(ta,ie()({direction:"vertical"},a,{scale:r})))})),la=Object(j.connect)((function(e){return{scale:Ee(e).scale}}))(function(e){function t(){var e;return y()(this,t),(e=b()(this,x()(t).apply(this,arguments))).uid=aa++,e.state={},e}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.scale,n=void 0===t?100:t,r=e.ruler,a=void 0===r?{vertical:!0}:r,o=e.style,l=void 0===o?{}:o,i=e.children,u=this.state.error,s="canvas".concat(this.uid);return c.a.createElement("div",{id:s,style:ra({overflow:"auto",flex:"1 100%",overflowY:"scroll"},l,{display:"flex",flexDirection:"row"})},c.a.createElement(ia,{canvasId:s}),a&&!1!==a.vertical&&c.a.createElement("div",{style:{flex:1,paddingTop:20}},c.a.createElement(oa,{scale:n/100})),c.a.createElement("div",{style:{flex:"1 100%",display:"flex",flexDirection:"column",width:"100%"}},c.a.createElement("div",{style:{flex:"1 100%",textAlign:"center"}},a&&c.a.createElement("div",{style:{position:"sticky",top:0}},c.a.createElement(ta,{direction:"horizontal",scale:n/100})),u?u.stack:i)))}}],[{key:"getDerivedStateFromError",value:function(e){return{error:e}}}]),t}(i.Component)),ia=Object(j.connect)((function(e){return{pilcrow:Object(j.getUI)(e).pilcrow}}))((function(e){var t=e.pilcrow;return c.a.createElement("style",null,!t&&"svg text.ender{visibility:hidden}")}));function ca(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ua(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ca(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ca(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var sa=function(e){function t(){var e;return y()(this,t),(e=b()(this,x()(t).apply(this,arguments))).state={},e.events=new M.a,e}return k()(t,e),v()(t,[{key:"getChildContext",value:function(){var e=this.props.debug;return{events:this.events,debug:e}}},{key:"render",value:function(){var e=this.state.error;if(e)return c.a.createElement("div",{style:{flex:1,display:"flex",flexDirection:"column"}},c.a.createElement("pre",{style:{margin:"auto",color:"red",fontSize:"bigger"}},e.stack));var t=this.props,n=t.doc,r=t.reducer,a=D()(t,["doc","reducer"]);return c.a.createElement(n.Store,{reducer:r},c.a.createElement(ma,a))}},{key:"componentDidCatch",value:function(e){this.setState({error:e})}}]),t}(i.PureComponent);h()(sa,"childContextTypes",{events:C.a.object,debug:C.a.bool}),h()(sa,"propTypes",{toolBar:C.a.node,statusBar:C.a.node,debug:C.a.bool,doc:C.a.object,ruler:C.a.bool,channel:C.a.string,layout:C.a.node}),h()(sa,"defaultProps",{toolBar:c.a.createElement(Lr,null),statusBar:c.a.createElement(dt,null)}),h()(sa,"Desk",Object(j.connect)((function(e){var t=Ee(e).scale;return null!=t?{scale:t/100}:{}}))(Object(N.pure)((function(e){var t=e.children,n=(e.toolBar,e.ruler,e.channel,e.statusBar,e.icon,e.layout,D()(e,["children","toolBar","ruler","channel","statusBar","icon","layout"]));return c.a.createElement(i.Fragment,null,c.a.cloneElement(t,n))})))),h()(sa,"Layout",Object(N.pure)((function(e){var t=e.canvas,n=e.left,r=e.right,a=e.style;return c.a.createElement("div",{style:ua({flex:"1 100%",display:"flex",flexDirection:"row",overflow:"auto"},a)},n&&c.a.createElement("div",{style:{overflow:"auto"}},n),t,r&&c.a.createElement("div",{style:{overflow:"auto"}},r))})));var ma=Object(j.connect)((function(e,t){return{channel:Ee(e).channel||t.channel}}))(function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"getChannels",I()((function(e){return i.Children.toArray(e).filter((function(e){return e.props})).map((function(e){var t=e.props,n=t.channel,r=t.icon;return n?{channel:n,icon:r||c.a.createElement("span",{title:{channel:n}})}:null})).filter((function(e){return!!e}))}))),h()(p()(n),"getCurrent",I()((function(e,t){var n=(e=i.Children.toArray(e)).filter((function(e){return e.props})).find((function(e){return e.props.channel==t})),r=e.filter((function(e){var t=e.props;return!t||!t.channel})).filter((function(e){return e!=n}));return{current:n,uncontrolled:r}}))),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.channel,n=e.children,r=e.toolBar,a=e.statusBar,o=e.ruler,l=void 0===o||o,i=e.layout,u=e.dispatch,s=this.getCurrent(n,t),m=s.current,p=s.uncontrolled;m&&(r=void 0===m.props.toolBar?r:m.props.toolBar,a=void 0===m.props.statusBar?a:m.props.statusBar,l=void 0===m.props.ruler?l:m.props.ruler,i=void 0===m.props.layout?i:m.props.layout);var f=c.a.createElement(la,{ruler:l},m,p);return c.a.createElement("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden"},key:t},r,i?c.a.cloneElement(i,{canvas:f,children:i.props.children||f}):f,a&&c.a.cloneElement(a,{channel:{items:this.getChannels(n),current:t,onChange:function(e){return u(ve.channel(e))}}}))}}]),t}(i.Component)),pa=c.a.createElement(sa,{debug:!0,accept:function(e){var t=e.props.supportPagination;e.name;return t},key:"default(accept=[supportPagination])",channel:"print"},c.a.createElement(sa.Desk,{channel:"print",icon:c.a.createElement(et.a,null),children:c.a.createElement(j.Editor,{representation:"pagination"})}),c.a.createElement(sa.Desk,{channel:"web",ruler:{vertical:!1},icon:c.a.createElement(nt.a,null),children:c.a.createElement(j.Editor,{representation:"html"})}),c.a.createElement(sa.Desk,{channel:"plain text",ruler:!1,toolBar:c.a.createElement(Lr,{commands:{home:{text:!1,paragraph:!1},insert:!1,layout:!1,when:!1}}),icon:c.a.createElement(at.a,null),children:c.a.createElement(j.Editor,{representation:"text"})})),fa=n(35),ha=n(74),da=n.n(ha);function ya(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ga(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ya(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ya(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var va="default(accept=*)";var Ea=Object(z.connect)((function(e){var t=e[va],n=Object(j.getActive)(e).doc.mode;return n?ga({},t,{mode:n}):t}))((function(e){var t=e.dispatch,n=e.mode,r=e.theme,a=e.font,o=e.size,l=e.wrap,u=e.number;return c.a.createElement(i.Fragment,null,c.a.createElement(Ht,{value:a,changeFont:function(e){return t({type:"".concat(va,"/font"),payload:e})},style:{paddingRight:15,width:80}}),c.a.createElement(ge,{style:{width:50,paddingRight:15},inputStyle:{border:"1px solid lightgray"},value:o,onChange:function(e){return t({type:"".concat(va,"/size"),payload:parseInt(e)})},dataSource:[8,9,10,11,12,14,16,20,22,24,26,28,36,72].map((function(e){return e+""})),underlineShow:!1}),c.a.createElement(Rr,null),c.a.createElement(ge,{style:{width:80,paddingRight:15},title:"文件类型",inputStyle:{border:"1px solid lightgray",paddingLeft:5},underlineShow:!1,value:n,onChange:function(e){return t({type:"".concat(va,"/mode"),payload:e})},dataSource:fa.modes.map((function(e){return e.mode}))}),c.a.createElement(ge,{style:{width:100,paddingRight:15},title:"风格",inputStyle:{border:"1px solid lightgray",paddingLeft:5},underlineShow:!1,value:r,onChange:function(e){return t({type:"".concat(va,"/theme"),payload:e})},dataSource:Object.keys(fa.themes)}),c.a.createElement(Rr,null),c.a.createElement(je,{label:"wrap",status:l?"checked":"unchecked",onClick:function(){return t({type:"".concat(va,"/wrap"),payload:!l})},children:c.a.createElement(da.a,null)}),c.a.createElement(je,{label:"show number",status:u?"checked":"unchecked",onClick:function(){return t({type:"".concat(va,"/number"),payload:!u})},children:c.a.createElement(ln.a,null)}))})),ba=Object(z.connect)((function(e){return e[va]}))((function(e){var t=e.mode,n=e.theme,r=e.font,a=e.size,o=e.wrap,l=e.number;return c.a.createElement(j.Editor,{representation:"plain",setting:{mode:t,theme:n,font:r,size:a,wrap:o,number:l}})}));function Oa(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function xa(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Oa(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Oa(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var wa,ka=[pa,c.a.createElement(sa,{debug:!0,accept:"*",key:va,ruler:!1,statusBar:!1,reducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{mode:"",theme:"eclipse",font:"Calibri",size:12,wrap:!1,number:!0},t=arguments.length>1?arguments[1]:void 0,n=t.type,r=t.payload;switch(n){case"".concat(va,"/mode"):return ga({},e,{mode:r});case"".concat(va,"/theme"):return ga({},e,{theme:r});case"".concat(va,"/font"):return ga({},e,{font:r});case"".concat(va,"/size"):return ga({},e,{size:r});case"".concat(va,"/wrap"):return ga({},e,{wrap:r});case"".concat(va,"/number"):return ga({},e,{number:r})}return e},toolBar:c.a.createElement(Lr,{commands:{home:{text:!1,paragraph:!1,clipboard:!1,more:c.a.createElement(Ea,null)},insert:!1,layout:!1,when:!1}})},c.a.createElement(ba,null))],Sa=new(function(e){function t(){var e;y()(this,t),e=b()(this,x()(t).apply(this,arguments));var n=[],r=function(e,t){t&&n.push(t)};return e.on("change",r),e.once("office ready",(function(t){e.removeListener("change",r);try{n.forEach((function(e){return e(t)}))}catch(e){console.error(e)}})),e}return k()(t,e),v()(t,[{key:"ready",value:function(){this.emit.apply(this,["office ready"].concat(Array.prototype.slice.call(arguments)))}}]),t}(M.a)),Ca=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e},ja=function(e){function t(){var e;return y()(this,t),e=b()(this,x()(t).apply(this,arguments)),h()(p()(e),"getReducers",I()((function(e,t){return e.reduce((function(e,t){return t.props.reducer&&(e[t.key]=function(e,n){return xa({},e,{},t.props.reducer(e,n))}),e}),xa({},t))}),(function(e,t){return e===t||Object(j.shallowEqual)(e,t)}))),e.state={workspaces:null,excludes:{}},e.wedit=c.a.createRef(),e}return k()(t,e),v()(t,null,[{key:"install",value:function(e,t){(e=Array.isArray(e)&&e||[e]).reverse().forEach((function(e){return ka.unshift(e)})),Sa.emit("change",[].concat(ka),t)}},{key:"uninstall",value:function(e){(e=Array.isArray(e)&&e||[e]).forEach((function(e){return ka.splice(ka.indexOf(e),1)})),Sa.emit("change",[].concat(ka))}},{key:"getDerivedStateFromProps",value:function(e,t){var n=e.workspaces;return{workspaces:e.installable&&t.workspaces||n||[].concat(ka)}}}]),v()(t,[{key:"componentDidMount",value:function(){var e=this;if(this.props.installable){var t=this.wedit.current.store.dispatch;Sa.ready(t),Sa.on("change",this.updateWorkspaces=function(n,r){e.setState((function(e){var t=e.workspaces;return{workspaces:n,excludes:t.filter((function(e){return!n.find((function(t){return t.key===e.key}))})).reduce((function(e,t){return e[t.key]=Ca,e}),{})}}),r&&function(){r(t)})})}}},{key:"render",value:function(){var e=this.state,t=e.workspaces,n=e.excludes,r=this.props,a=r.titleBarProps,o=r.children,l=r.titleBar,i=r.dashboard,u=r.reducers,s=void 0===u?{}:u;return s=this.getReducers(t,xa({},n,{},s)),c.a.createElement(j.WeEdit,{reducers:s,ref:this.wedit},c.a.createElement($e,{titleBarProps:a,titleBar:l,dashboard:i},t.map((function(e){return e.props.reducer?c.a.cloneElement(e,{reducer:void 0}):e})),o))}},{key:"componentWillUnmount",value:function(){this.props.installable&&Sa.removeListener("change",this.updateWorkspaces)}}]),t}(i.PureComponent);function Ta(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.a.createElement(ja,null);return e&&e!=document.body||(e=document.createElement("div"),document.body.style="margin:0px;padding:0px;border:0px",document.body.appendChild(e)),s.a.render(t,e)}h()(ja,"propTypes",{workspaces:C.a.arrayOf(C.a.element),installable:C.a.bool}),h()(ja,"defaultProps",{installable:!0}),n.d(t,"create",(function(){return Ta})),n.d(t,"WeEditUI",(function(){return $e})),n.d(t,"Workspace",(function(){return sa})),n.d(t,"StatusBar",(function(){return dt})),n.d(t,"Canvas",(function(){return la})),n.d(t,"TitleBar",(function(){return Ke})),n.d(t,"Dashboard",(function(){return We})),n.d(t,"reducer",(function(){return Pe})),n.d(t,"ACTION",(function(){return ve})),n.d(t,"Ribbon",(function(){return l})),n.d(t,"Office",(function(){return ja})),(wa=window)&&wa.addEventListener("load",(function(){var e=document.querySelector("#OfficeContainer");(e||"test"==document.title)&&Ta(e)}))}]);
2//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIndlLWVkaXRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZWNvbXBvc2VcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9NZW51SXRlbVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWVtb2l6ZS1vbmVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvYWN0aW9uL3BpY3R1cmUtaW4tcGljdHVyZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0RGVzdHJ1Y3R1cmluZ0VtcHR5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3R5bGVzL2NvbG9yc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2Fycm93LWRyb3AtZG93blwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9pbWFnZS9jb2xvci1sZW5zXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2ltYWdlL3JvdGF0ZS05MC1kZWdyZWVzLWNjd1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N0eWxlcy9nZXRNdWlUaGVtZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIndlLWVkaXQtcmVwcmVzZW50YXRpb24tcGFnaW5hdGlvblwiIiwid2VicGFjazovLy9leHRlcm5hbCBcImV2ZW50c1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N0eWxlcy9NdWlUaGVtZVByb3ZpZGVyXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1hbGlnbi1qdXN0aWZ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvUG9wb3ZlclwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWxpc3QtbnVtYmVyZWRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvdG9nZ2xlL2NoZWNrLWJveC1vdXRsaW5lLWJsYW5rXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL3RvZ2dsZS9jaGVjay1ib3hcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9SYWlzZWRCdXR0b25cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9TdWJoZWFkZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLXBsYWluXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3QtZG9tXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWluaW1hdGNoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vY2xvc2VcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9tZW51XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvRGl2aWRlclwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvYm9yZGVyLWNvbG9yXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vYXJyb3ctYmFja1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L3NhdmVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9yZWZyZXNoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2FjdGlvbi92aWV3LW1vZHVsZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L3RleHQtZm9ybWF0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvTWVudVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWJvbGRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1pdGFsaWNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC11bmRlcmxpbmVkXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtY2xlYXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3N0cmlrZXRocm91Z2gtc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWNvbG9yLWZpbGxcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1jb2xvci10ZXh0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtYWxpZ24tY2VudGVyXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtYWxpZ24tbGVmdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWFsaWduLXJpZ2h0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtbGlzdC1idWxsZXRlZFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L3JlZG9cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC91bmRvXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2NvbnRlbnQvY29udGVudC1jb3B5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2NvbnRlbnQvY29udGVudC1wYXN0ZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L2NvbnRlbnQtY3V0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9ib3JkZXItYWxsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2FjdGlvbi9vcGVuLXdpdGhcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3ZlcnRpY2FsLWFsaWduLXRvcFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvdmVydGljYWwtYWxpZ24tYm90dG9tXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vZmlyc3QtcGFnZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2xhc3QtcGFnZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvaW5zZXJ0LXBob3RvXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiZmlsZS10eXBlL2Jyb3dzZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvYWN0aW9uL2RvbmVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3dyYXAtdGV4dFwiIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9zdHlsZS5sZXNzPzZhOWEiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3N0eWxlLmxlc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvY29tcG9uZW50cy9jb21iby1ib3guanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3N0YXRlL2FjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvZmlsZS9zYXZlLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9jb21wb25lbnRzL3NpemUtaWNvbi1idXR0b24uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2NvbXBvbmVudHMvY2hlY2staWNvbi1idXR0b24uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3N0YXRlL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2ZpbGUvb3Blbi5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvZmlsZS9jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2ZpbGUvcHJpbnQuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2ZpbGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2Rhc2hib2FyZC9mb250LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9kYXNoYm9hcmQvb3B0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvZGFzaGJvYXJkL2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy90aXRsZS1iYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3dlLWVkaXQtdWkuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3N0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvY29tcG9uZW50cy9kcm9wLWRvd24tYnV0dG9uLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9jb21wb25lbnRzL3NlbGVjdC1jb2xvci5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvY29tcG9uZW50cy9jb2xvci1idXR0b24uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3RleHQvZm9udHMuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3RleHQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3BhcmFncmFwaC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvY29tcG9uZW50cy9maWxlLXNlbGVjdC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvaGlzdG9yeS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvY2xpcGJvYXJkL2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy90YWJsZS9kZXNpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3RhYmxlL3JpYmJvbi5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvdGFibGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3BpY3R1cmUvc2l6ZS5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvcGljdHVyZS9ib3JkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3BpY3R1cmUvcG9zaXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3BpY3R1cmUvZWZmZWN0LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9waWN0dXJlL3JpYmJvbi5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvcGljdHVyZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvbGF5b3V0L2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9yaWJib24uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2NvbXBvbmVudHMvbW92YWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvcnVsZXIvaG9yaXpvbnRhbC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvcnVsZXIvdmVydGljYWwuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3J1bGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9jYW52YXMuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3dvcmtzcGFjZS5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvb2ZmaWNlL3BhZ2luYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL29mZmljZS9wbGFpbi5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvb2ZmaWNlL2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsInJlcXVpcmUiLCJjb250ZW50Iiwib3B0aW9ucyIsImxvY2FscyIsInB1c2giLCJ1c2VTb3VyY2VNYXAiLCJsaXN0IiwidG9TdHJpbmciLCJ0aGlzIiwibWFwIiwiaXRlbSIsImNzc01hcHBpbmciLCJidG9hIiwic291cmNlTWFwcGluZyIsInNvdXJjZU1hcCIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsInNvdXJjZVVSTHMiLCJzb3VyY2VzIiwic291cmNlIiwic291cmNlUm9vdCIsImNvbmNhdCIsImpvaW4iLCJjc3NXaXRoTWFwcGluZ1RvU3RyaW5nIiwibWVkaWFRdWVyeSIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJsZW5ndGgiLCJpZCIsIm1lbW8iLCJzdHlsZXNJbkRvbSIsImlzT2xkSUUiLCJCb29sZWFuIiwid2luZG93IiwiZG9jdW1lbnQiLCJhbGwiLCJhdG9iIiwiZ2V0VGFyZ2V0IiwidGFyZ2V0Iiwic3R5bGVUYXJnZXQiLCJxdWVyeVNlbGVjdG9yIiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50RG9jdW1lbnQiLCJoZWFkIiwiZSIsImxpc3RUb1N0eWxlcyIsInN0eWxlcyIsIm5ld1N0eWxlcyIsImJhc2UiLCJwYXJ0IiwiY3NzIiwibWVkaWEiLCJwYXJ0cyIsImFkZFN0eWxlc1RvRG9tIiwiZG9tU3R5bGUiLCJqIiwicmVmcyIsImFkZFN0eWxlIiwiaW5zZXJ0U3R5bGVFbGVtZW50Iiwic3R5bGUiLCJjcmVhdGVFbGVtZW50IiwiYXR0cmlidXRlcyIsIm5vbmNlIiwia2V5cyIsImZvckVhY2giLCJzZXRBdHRyaWJ1dGUiLCJpbnNlcnQiLCJFcnJvciIsImFwcGVuZENoaWxkIiwidGV4dFN0b3JlIiwicmVwbGFjZVRleHQiLCJpbmRleCIsInJlcGxhY2VtZW50IiwiZmlsdGVyIiwiYXBwbHlUb1NpbmdsZXRvblRhZyIsInJlbW92ZSIsIm9iaiIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3NzTm9kZSIsImNyZWF0ZVRleHROb2RlIiwiY2hpbGROb2RlcyIsInJlbW92ZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwiYXBwbHlUb1RhZyIsImZpcnN0Q2hpbGQiLCJzaW5nbGV0b24iLCJzaW5nbGV0b25Db3VudGVyIiwidXBkYXRlIiwic3R5bGVJbmRleCIsInBhcmVudE5vZGUiLCJyZW1vdmVTdHlsZUVsZW1lbnQiLCJuZXdPYmoiLCJuZXdMaXN0IiwibWF5UmVtb3ZlIiwiX2kiLCJfZG9tU3R5bGUiLCJDb21ib0JveCIsInNlYXJjaFRleHQiLCJnZXRUZXh0IiwicHJvcHMiLCJmaXJzdCIsImRhdGFTb3VyY2UiLCJkYXRhU291cmNlQ29uZmlnIiwidGV4dCIsImtUZXh0Iiwia1ZhbHVlIiwiaXNPYmplY3REYXRhIiwiZm91bmQiLCJmaW5kIiwiYSIsImZpbmRJbmRleCIsImluZGV4T2YiLCJjb21ib0JveCIsImNvbnRleHQiLCJtdWlUaGVtZSIsIkRhdGUiLCJub3ciLCJvbkNoYW5nZSIsIm9uRXhjZXB0aW9uIiwibWVudVByb3BzIiwidGV4dEZpZWxkU3R5bGUiLCJpbnB1dFN0eWxlIiwiY2hpbGRyZW4iLCJpY29uIiwibGFiZWwiLCJoaW50Iiwic3RhdGUiLCJoZWlnaHQiLCJtZW51Iiwid2lkdGgiLCJib3JkZXIiLCJwYWRkaW5nUmlnaHQiLCJ2aWV3Qm94Iiwid2hpdGVTcGFjZSIsIm9uTmV3UmVxdWVzdCIsInNlbGVjdGVkIiwiZ2V0SW5kZXgiLCJnZXRWYWx1ZSIsIm9uVXBkYXRlSW5wdXQiLCJzZXRTdGF0ZSIsIm9uQ2xvc2UiLCJvcGVuT25Gb2N1cyIsImhpbnRUZXh0IiwibmV4dCIsIlB1cmVDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJsb2FkZXIiLCJ0eXBlIiwiRE9NQUlOIiwicGF5bG9hZCIsInN0cmVhbSIsImZvcm1hdCIsImNoYW5uZWwiLCJzY2FsZSIsImdldE9mZmljZSIsIlNhdmVyIiwic3RvcmUiLCJhcmd1bWVudHMiLCJnZXRBY3RpdmUiLCJnZXRTdGF0ZSIsImRvYyIsImdldEVtaXR0ZXJTdHJlYW0iLCJFbWl0dGVyIiwic3VwcG9ydHMiLCJoYXMiLCJmb3JtYXRzIiwiQXJyYXkiLCJmcm9tIiwiZGVmYXVsdFByb3BzIiwiZXh0IiwidW5zaGlmdCIsInR5cGVOYW1lIiwidHlwZUV4dCIsIlN0cmVhbSIsIkZvcm1hdCIsInJlcGxhY2UiLCJzdHJlYW1Qcm9wcyIsIlR5cGUiLCJvbkNhbmNlbCIsIm9uU2F2ZSIsInN1cHBvcnRlZFN0cmVhbXMiLCJnZXRTdXBwb3J0ZWRTdHJlYW1zIiwic3VwcG9ydGVkRm9ybWF0cyIsImdldFN1cHBvcnRlZEZvcm1hdHMiLCJub1R5cGVkU3RyZWFtIiwidHlwZWRTdHJlYW1VSSIsInJlZiIsImZpeE5hbWUiLCJjb2xvciIsInR5cGVkRm9ybWF0VUkiLCJmb3JtYXRQcm9wcyIsIlNldHRpbmciLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImxpbmVIZWlnaHQiLCJmbGV4IiwibWFyZ2luUmlnaHQiLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJwcmltYXJ5Iiwic2F2ZSIsInRoZW4iLCJkaXNwYXRjaCIsIkFDVElPTiIsIndlQUNUSU9OIiwiTUVTU0FHRSIsIm1lc3NhZ2UiLCJPdXRwdXRJbnB1dCIsInJlbmRlciIsIlN0b3JlIiwicmVhZG9ubHkiLCJyZWxlYXNlIiwiU2l6YWJsZUljb25CdXR0b24iLCJtZW1vaXplIiwic2l6ZSIsInBhZGRpbmciLCJpY29uU3R5bGUiLCJzdGF0dXMiLCJzaXplSWNvbkJ1dHRvbiIsImdldFN0eWxlIiwidG9vbHRpcCIsImNoZWNrZWQiLCJiYWNrZ3JvdW5kIiwidW5jaGVja2VkIiwiYWN0aW9uIiwic2V0IiwiY2hhbm5lbHMiLCJyZWR1Y2VyIiwiX18kMSIsIkxvYWRlciIsIkxvYWRlcnMiLCJnZXRTdXBwb3J0ZWRMb2FkZXJzIiwib25Mb2FkIiwidGV4dEFsaWduIiwiQ3JlYXRlIiwiSW5wdXQiLCJ2YWx1ZXMiLCJ0ZW1wbGF0ZSIsIlJlYWN0IiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJ1cmwiLCJ1bmRlZmluZWQiLCJ0ZW1wbGF0ZXMiLCJmZXRjaCIsInJlcyIsImJsb2IiLCJkYXRhIiwiZ2V0QWxsIiwiZmlsZSIsInBhcnNlIiwib25DcmVhdGUiLCJBREQiLCJmdW5jIiwiVVJMRmV0Y2hlciIsImZvbnRTaXplIiwib25QcmludCIsIkZpbGUiLCJSZWZyZXNoIiwiU2F2ZSIsIkNvbXBvbmVudCIsImNvbm5lY3QiLCJpbnB1dCIsImxvYWRlZCIsIkZvbnRNYW5hZ2VyIiwibmFtZXMiLCJjbGljayIsIm11bHRpcGxlIiwibG9hZCIsImZyb21Ccm93c2VyIiwiRGFzaGJvYXJkIiwiZG9uZSIsImFjdGl2ZSIsInpJbmRleCIsImF2YXRhciIsImNvbW1hbmRzIiwicG9zaXRpb24iLCJsZWZ0IiwidG9wIiwiekRlcHRoIiwiYmFja2dyb3VuZENvbG9yIiwiem9vbSIsIm1hcmdpblRvcCIsImdyYXkxMDAiLCJ5ZWxsb3c1MDAiLCJhdXRvV2lkdGgiLCJzZWxlY3RlZE1lbnVJdGVtU3R5bGUiLCJwcmltYXJ5VGV4dCIsIm9uQ2FubmNlbCIsIkNoaWxkcmVuIiwiQmFyIiwic2hvd0RyYXdlciIsInRpdGxlIiwiZG9jcyIsInNldEFjdGl2ZSIsImNsb3NlIiwib25NZW51IiwiY2xvc2VCdXR0b24iLCJwYWRkaW5nTGVmdCIsInVuZGVybGluZVNob3ciLCJjb21wb3NlIiwic2V0RGlzcGxheU5hbWUiLCJnZXRDb250ZXh0IiwibWFwUHJvcHMiLCJ0aXRsZUJhciIsIkFDVElWRSIsIkNMT1NFIiwicm9vdCIsIkJBQ0tHUk9VTkQiLCJvdmVyZmxvdyIsInRoZW1lIiwidGFicyIsInRleHRDb2xvciIsInNlbGVjdGVkVGV4dENvbG9yIiwidG9vbGJhciIsInVpVGhlbWUiLCJnZXRNdWlUaGVtZSIsInRvQXJyYXkiLCJhY2NlcHQiLCJnbG9iIiwibWluaW1hdGNoIiwiVmlld2FibGUiLCJJbnB1dFR5cGUiLCJpc1R5cGVPZiIsImVycm9yIiwiaW5mbyIsImRhc2hib2FyZCIsInRpdGxlQmFyUHJvcHMiLCJvdGhlcnMiLCJhY3RpdmVXb3Jrc3BhY2UiLCJub25Xb3Jrc3BhY2VzIiwiZ2V0Tm9uV29ya3NwYWNlcyIsImdldEFjdGl2ZVdvcmtzcGFjZSIsIm9uQ29udGV4dE1lbnUiLCJyZWplY3RDb250ZXh0TWVudSIsInBvcG92ZXIiLCJoYXNBY3RpdmVXb3Jrc3BhY2UiLCJvcGVuIiwiYXV0b0hpZGVEdXJhdGlvbiIsIm9uUmVxdWVzdENsb3NlIiwibm9kZSIsIkJ1dHRvblN0eWxlIiwiUm9vdFN0eWxlIiwiYmx1ZTgwMCIsIkNvbXBhY3RCdXR0b25TdHlsZSIsIm1pbldpZHRoIiwiU3RhdHVzIiwic2V0U2NhbGUiLCJidXR0b24iLCJvbmx5VXBkYXRlRm9yS2V5cyIsIlBhZ2UiLCJXb3JkcyIsIml0ZW1zIiwid2hlblNlbGVjdGlvbkNoYW5nZSIsInNlbGVjdGlvbiIsImdldFN0YXRpc3RpY3MiLCJwYWdlcyIsInRvdGFsIiwiYWxsQ29tcG9zZWQiLCJjdXJyZW50IiwicGFnZSIsIndvcmRzIiwiU2NhbGUiLCJtYXgiLCJtaW4iLCJzdGVwIiwiTWF0aCIsImxhYmVsU3R5bGUiLCJmb250V2VpZ2h0Iiwic2xpZGVyU3R5bGUiLCJuZXdWYWx1ZSIsIkNoYW5uZWwiLCJvcGFjaXR5IiwiYmx1ZTkwMCIsInRvb2x0aXBQb3NpdGlvbiIsIkRyb3Bkb3duQnV0dG9uIiwiYW5jaG9yIiwidG9nZ2xlIiwibWVudXMiLCJhbmNob3JFbCIsIm9uSXRlbVRvdWNoVGFwIiwiY3VycmVudFRhcmdldCIsIkNvbG9yU2VsZWN0b3IiLCJ0aXRsZVN0eWxlIiwib25TZWxlY3QiLCJDb2xvckJsb2NrIiwiY3Vyc29yIiwiU3BlY2lhbENvbG9yIiwiZnVsbFdpZHRoIiwiVGhlbWVDb2xvcnMiLCJjb2xvclRoZW1lcyIsImNvbG9ycyIsImdldENvbG9yIiwiU3RhbmRhcmRDb2xvcnMiLCJzcGxpdCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiQ29sb3JCdXR0b24iLCJjb2xvclNlbGVjdG9yIiwiRm9udExpc3QiLCJmb250cyIsImNoYW5nZUZvbnQiLCJTZXQiLCJzb3J0IiwiVG9vbGJhclNlcGFyYXRvciIsIm1hcmdpbkxlZnQiLCJ3aXRoUHJvcHMiLCJjaGFuZ2VTaXplIiwiU2VsZWN0aW9uIiwiVVBEQVRFIiwidG9nZ2xlQiIsImIiLCJib2xkIiwidG9nZ2xlSSIsIml0YWxpYyIsInRvZ2dsZVUiLCJ1bmRlcmxpbmUiLCJ0b2dnbGVTdWJzY3JpcHQiLCJzdWJzY3JpcHQiLCJ0b2dnbGVTdXBlcnNjcmlwdCIsInN1cGVyc2NyaXB0Iiwic21hbGxlciIsImNlaWwiLCJhYnMiLCJiaWdnZXIiLCJjaGFuZ2VIaWdodGxpZ2h0IiwiaGlnaGxpZ2h0IiwiY2hhbmdlQ29sb3IiLCJjbGVhciIsIl9jbGVhciIsInRvZ2dsZUJvcmRlciIsInRvZ2dsZVN0cmlrZSIsInN0cmlrZSIsInNob3VsZFVwZGF0ZSIsInNoYWxsb3dFcXVhbCIsInBhcnNlSW50IiwiSWNvblN1cGVyc2NyaXB0IiwidHJhbnNmb3JtIiwieCIsInkiLCJJY29uU3Vic2NyaXB0IiwiSWNvbkJpZ2dlciIsIkljb25TbWFsbGVyIiwiSWNvblRleHRCb3JkZXIiLCJmaWxsIiwic3Ryb2tlIiwiZ2V0VUkiLCJwaWxjcm93IiwidG9nZ2xlQWxpZ24iLCJhbGlnbiIsInBhcmFncmFwaCIsIm51bWJlcmluZyIsInRvZ2dsZUJ1bGxldCIsInRvZ2dsZU51bWJlcmluZyIsInRvZ2dsZVBpbGNyb3ciLCJVSSIsImJ1bGxldCIsInJlZG9zIiwiZ2V0UmVkb3MiLCJ1bmRvcyIsImdldFVuZG9zIiwiY2FuUmVkbyIsImNhblVuZG8iLCJ1bmRvIiwiSGlzdG9yeSIsInJlZG8iLCJnZXRTZWxlY3Rpb24iLCJzdGFydCIsImVuZCIsIndpdGhTZWxlY3Rpb24iLCJhdCIsIndpdGhDbGlwYm9hcmQiLCJfY2xpcGJvYXJkIiwiY3V0IiwiQ1VUIiwiY29weSIsIkNPUFkiLCJwYXN0ZSIsIlBBU1RFIiwiYWRkUm93QWJvdmUiLCJFbnRpdHkiLCJDUkVBVEUiLCJ3aGVyZSIsImFkZFJvd0JlbG93IiwiYWRkQ29sUmlnaHQiLCJhZGRDb2xMZWZ0IiwiRVhURU5EIiwiUkVNT1ZFIiwic2VsZWN0IiwibGVmdEljb24iLCJzdHJva2VXaWR0aCIsIkljb25Db25kaXRpb24iLCJJY29uVGFibGUiLCJCIiwiSWNvbkNlbGwiLCJJY29uQ29sdW1uIiwiSWNvblJvdyIsIkljb25XaG9sZVRhYmxlIiwiWCIsInciLCJzaG93Iiwic2V0dGluZyIsIm9uQWN0aW9uIiwiUkNTaXplIiwicm93cyIsImNvbCIsImNvbHVtbiIsImxheW91dFdpZHRoIiwiY29scyIsInJlZHVjZSIsInN1bSIsImVsZW1lbnQiLCJyb3ciLCJ0ciIsIm9uTW91c2VPdXQiLCJ0ZCIsIm9uTW91c2VPdmVyIiwicm93Q29sIiwidHJzIiwibGVuIiwidGRzIiwibWFyZ2luUmlndGgiLCJkZWdyZWUiLCJUb29scyIsIm9rIiwic3RhdHVzVGV4dCIsImFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsImNyYzMyIiwiRmlsZVR5cGUiLCJmcm9tQnVmZmVyIiwibWltZSIsImJvZHkiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIm9uY2hhbmdlIiwiZmlsZXMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJjcmVhdGVTZWN0aW9uIiwiY3JlYXRlUGFnZUJyZWFrIiwibGFuZHNjYXBlIiwib3JpZW50YXRpb24iLCJwcm90cmFpdCIsIm1hcmdpbiIsInNpemVFcXVhbCIsImgiLCJtYXJnaW5FcXVhbCIsIm1hcmdpbnMiLCJyaWdodCIsImJvdHRvbSIsImYiLCJzdHJva2VEYXNoYXJyYXkiLCJ4MSIsIngyIiwieTEiLCJ5MiIsImtpbmQiLCJmb250RmFtaWx5IiwicmlnaHRJY29uIiwiSWNvblBhZ2UiLCJJY29uQmxhbmsiLCJDb2x1bW4iLCJJY29uU2l6ZSIsIkljb25PcmllbnRhdGlvbiIsIkljb25NYXJnaW4iLCJIIiwiViIsIlRvb2xiYXIiLCJqdXN0aWZ5Q29udGVudCIsIlJpYmJvbiIsImJ1dHRvblN0eWxlIiwidGFiU3R5bGUiLCJsYXlvdXQiLCJtZXJnZWQiLCJrIiwid2hlbiIsImNvbGxlY3RlZCIsInBsdWdpbnMiLCJpc0FycmF5IiwiaG9tZSIsImNsaXBib2FyZCIsImhpc3RvcnkiLCJ0YWJsZSIsInBpY3R1cmUiLCJiYXNpYyIsImltYWdlIiwiYm9yZGVyQm90dG9tIiwibWFyZ2luQm90dG9tIiwib3ZlcmZsb3dYIiwibWVudUl0ZW1TdHlsZSIsIm1pbkhlaWdodCIsImNvbnRlbnRDb250YWluZXJTdHlsZSIsImlua0JhclN0eWxlIiwibW9yZSIsInZpc2liaWxpdHkiLCJNb3ZhYmxlIiwibW92ZSIsImNoYW5naW5nIiwieDAiLCJ5MCIsIm9uTW92ZSIsIm92ZXJsYXkiLCJvbk1vdXNlVXAiLCJvbkVuZE1vdmUiLCJvbk1vdXNlTW92ZSIsIm9uTW91c2VEb3duIiwib25TdGFydE1vdmUiLCJjbGllbnRYIiwiY2xpZW50WSIsInN0b3BQcm9wYWdhdGlvbiIsIm9uQWNjZXB0IiwiT3ZlcmxheSIsImxlZnRNYXJnaW4iLCJyaWdodE1hcmdpbiIsInNldExlZnRNYXJnaW4iLCJzZXRSaWdodE1hcmdpbiIsImZpcnN0TGluZSIsImxlZnRJbmRlbnQiLCJyaWdodEluZGVudCIsInNldEZpcnN0TGluZSIsInNldExlZnRJbmRlbnQiLCJzZXRSaWdodEluZGVudCIsImNtIiwidHJpbSIsImR4IiwiZmwiLCJjbGFzc05hbWUiLCJBVCIsImluY2x1ZGVzIiwiTWFyZ2luIiwiSW5kZW50IiwiRmlyc3RMaW5lIiwiZGlyZWN0aW9uIiwiTWFya2VyIiwiZGVncyIsIkNNIiwibnRoIiwidGV4dEFuY2hvciIsImZvb3RlciIsImhlYWRlciIsInRvcE1hcmdpbiIsImJvdHRvbU1hcmdpbiIsInNldFRvcE1hcmdpbiIsInNldEJvdHRvbU1hcmdpbiIsInNlY3Rpb24iLCJwZ01hciIsImluZGVudCIsIlJ1bGVyIiwiSG9yaXpvbnRhbFJ1bGVyIiwiVmVydGljYWxSdWxlciIsInV1aWQiLCJwYWdlWSIsInVpZCIsInJ1bGVyIiwidmVydGljYWwiLCJvdmVyZmxvd1kiLCJQaWxjcm93IiwiY2FudmFzSWQiLCJzdGFjayIsIldvcmtzcGFjZSIsImV2ZW50cyIsIkV2ZW50RW1pdHRlciIsImRlYnVnIiwiQ2hhbm5lbHMiLCJib29sIiwidG9vbEJhciIsInN0YXR1c0JhciIsInN0cmluZyIsInB1cmUiLCJjYW52YXMiLCJ1bmNvbnRyb2xsZWQiLCJnZXRDdXJyZW50IiwiZ2V0Q2hhbm5lbHMiLCJzdXBwb3J0UGFnaW5hdGlvbiIsIkRlc2siLCJyZXByZXNlbnRhdGlvbiIsImZvbnQiLCJ3cmFwIiwibnVtYmVyIiwibW9kZXMiLCJ0aGVtZXMiLCJQbGFpbkVkaXRvciIsIm1lIiwibXlPZmZpY2UiLCJQYWdpbmF0aW9uT2ZmaWNlIiwiZXZlbnQiLCJpbml0cyIsIm9uUmVhZHkiLCJ3b3Jrc3BhY2VzIiwiaW5pdCIsIm9uIiwib25jZSIsInJlbW92ZUxpc3RlbmVyIiwiY29uc29sZSIsImVtaXQiLCJleGNsdWRlUmVkdWNlciIsIk9mZmljZSIsInJlZHVjZXJzIiwiZXhjbHVkZXMiLCJ3ZWRpdCIsImNyZWF0ZVJlZiIsInJldmVyc2UiLCJzcGxpY2UiLCJpbnN0YWxsYWJsZSIsInJlYWR5IiwidXBkYXRlV29ya3NwYWNlcyIsImdldFJlZHVjZXJzIiwiY29udGFpbmVyIiwib2ZmaWNlIiwiUmVhY3RET00iLCJhcnJheU9mIiwiYWRkRXZlbnRMaXN0ZW5lciJdLCJtYXBwaW5ncyI6IjJCQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQTBEZixPQXJEQUYsRUFBb0JRLEVBQUlGLEVBR3hCTixFQUFvQlMsRUFBSVYsRUFHeEJDLEVBQW9CVSxFQUFJLFNBQVNSLEVBQVNTLEVBQU1DLEdBQzNDWixFQUFvQmEsRUFBRVgsRUFBU1MsSUFDbENHLE9BQU9DLGVBQWViLEVBQVNTLEVBQU0sQ0FBRUssWUFBWSxFQUFNQyxJQUFLTCxLQUtoRVosRUFBb0JrQixFQUFJLFNBQVNoQixHQUNYLG9CQUFYaUIsUUFBMEJBLE9BQU9DLGFBQzFDTixPQUFPQyxlQUFlYixFQUFTaUIsT0FBT0MsWUFBYSxDQUFFQyxNQUFPLFdBRTdEUCxPQUFPQyxlQUFlYixFQUFTLGFBQWMsQ0FBRW1CLE9BQU8sS0FRdkRyQixFQUFvQnNCLEVBQUksU0FBU0QsRUFBT0UsR0FFdkMsR0FEVSxFQUFQQSxJQUFVRixFQUFRckIsRUFBb0JxQixJQUMvQixFQUFQRSxFQUFVLE9BQU9GLEVBQ3BCLEdBQVcsRUFBUEUsR0FBOEIsaUJBQVZGLEdBQXNCQSxHQUFTQSxFQUFNRyxXQUFZLE9BQU9ILEVBQ2hGLElBQUlJLEVBQUtYLE9BQU9ZLE9BQU8sTUFHdkIsR0FGQTFCLEVBQW9Ca0IsRUFBRU8sR0FDdEJYLE9BQU9DLGVBQWVVLEVBQUksVUFBVyxDQUFFVCxZQUFZLEVBQU1LLE1BQU9BLElBQ3RELEVBQVBFLEdBQTRCLGlCQUFURixFQUFtQixJQUFJLElBQUlNLEtBQU9OLEVBQU9yQixFQUFvQlUsRUFBRWUsRUFBSUUsRUFBSyxTQUFTQSxHQUFPLE9BQU9OLEVBQU1NLElBQVFDLEtBQUssS0FBTUQsSUFDOUksT0FBT0YsR0FJUnpCLEVBQW9CNkIsRUFBSSxTQUFTMUIsR0FDaEMsSUFBSVMsRUFBU1QsR0FBVUEsRUFBT3FCLFdBQzdCLFdBQXdCLE9BQU9yQixFQUFnQixTQUMvQyxXQUE4QixPQUFPQSxHQUV0QyxPQURBSCxFQUFvQlUsRUFBRUUsRUFBUSxJQUFLQSxHQUM1QkEsR0FJUlosRUFBb0JhLEVBQUksU0FBU2lCLEVBQVFDLEdBQVksT0FBT2pCLE9BQU9rQixVQUFVQyxlQUFlMUIsS0FBS3VCLEVBQVFDLElBR3pHL0IsRUFBb0JrQyxFQUFJLEdBSWpCbEMsRUFBb0JBLEVBQW9CbUMsRUFBSSxJLGdCQ2xGckRoQyxFQUFPRCxRQUFVa0MsUUFBUSxVLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsZ0IsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxZLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsYyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLDBDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsdUMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSwwQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHFELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsMEMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxvQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLG1DLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsbUQsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxlLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsaUQsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSx5QixjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGdCLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsZ0IsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxvRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLG9ELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsOEIsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxxRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLDJDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsc0QsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxtQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHNDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsVyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHdDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsa0MsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxzRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHdCLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsc0QsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSx5RCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLDJDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsNkIsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSwwQixjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGlDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsYyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSwyQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLDBDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsd0IsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSw4QyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGdELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsdUMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSw2QyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHlDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsNkMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSw4QyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHFCLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsNkMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSwrQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLG1ELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsOEMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxpRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLG1ELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsbUQsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxxRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLG1ELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsb0QsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxzRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHVDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsdUMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSwrQyxjQ0F6QmpDLEVBQU9ELFFBQVVr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ZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDc5KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIndlLWVkaXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVjb21wb3NlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9NZW51SXRlbVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtZW1vaXplLW9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvYWN0aW9uL3BpY3R1cmUtaW4tcGljdHVyZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdERlc3RydWN0dXJpbmdFbXB0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdHlsZXMvY29sb3JzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2Fycm93LWRyb3AtZG93blwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvaW1hZ2UvY29sb3ItbGVuc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvaW1hZ2Uvcm90YXRlLTkwLWRlZ3JlZXMtY2N3XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N0eWxlcy9nZXRNdWlUaGVtZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLXBhZ2luYXRpb25cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZXZlbnRzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N0eWxlcy9NdWlUaGVtZVByb3ZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWFsaWduLWp1c3RpZnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvUG9wb3ZlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1saXN0LW51bWJlcmVkXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy90b2dnbGUvY2hlY2stYm94LW91dGxpbmUtYmxhbmtcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL3RvZ2dsZS9jaGVjay1ib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvUmFpc2VkQnV0dG9uXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL1N1YmhlYWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLXBsYWluXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWRvbVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtaW5pbWF0Y2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vY2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vbWVudVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvYm9yZGVyLWNvbG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2Fycm93LWJhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2NvbnRlbnQvc2F2ZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9yZWZyZXNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvYWN0aW9uL3ZpZXctbW9kdWxlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L3RleHQtZm9ybWF0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL01lbnVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtYm9sZFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1pdGFsaWNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtdW5kZXJsaW5lZFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1jbGVhclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3N0cmlrZXRocm91Z2gtc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1jb2xvci1maWxsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWNvbG9yLXRleHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtYWxpZ24tY2VudGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWFsaWduLWxlZnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtYWxpZ24tcmlnaHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtbGlzdC1idWxsZXRlZFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC9yZWRvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L3VuZG9cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2NvbnRlbnQvY29udGVudC1jb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L2NvbnRlbnQtcGFzdGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2NvbnRlbnQvY29udGVudC1jdXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9ib3JkZXItYWxsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9hY3Rpb24vb3Blbi13aXRoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvdmVydGljYWwtYWxpZ24tdG9wXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvdmVydGljYWwtYWxpZ24tYm90dG9tXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2ZpcnN0LXBhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vbGFzdC1wYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvaW5zZXJ0LXBob3RvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZpbGUtdHlwZS9icm93c2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9hY3Rpb24vZG9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3dyYXAtdGV4dFwiKTsiLCJ2YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvbGVzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5sZXNzXCIpO1xuXG5pZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbn1cblxudmFyIG9wdGlvbnMgPSB7fVxuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZiAoY29udGVudC5sb2NhbHMpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcbn1cbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLnJ1bGVyLnZlcnRpY2Fse3Bvc2l0aW9uOnJlbGF0aXZlfS5ydWxlci52ZXJ0aWNhbCAubWFyZ2lue3dpZHRoOjIwcHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjR9LnJ1bGVyLnZlcnRpY2FsIC5tYXJnaW4gLm1vdmVye3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDo0cHg7d2lkdGg6MTAwJTtjdXJzb3I6bnMtcmVzaXplfS5ydWxlci52ZXJ0aWNhbCAubWFyZ2luLnRvcHtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OndyYXAtcmV2ZXJzZX0ucnVsZXIudmVydGljYWwgLm1hcmdpbi50b3AgLm1vdmVye2JvdHRvbTotMnB4fS5ydWxlci5ob3Jpem9udGFse21hcmdpbjowIGF1dG99LnJ1bGVyLmhvcml6b250YWwgLm1hcmdpbntoZWlnaHQ6MjBweDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7b3BhY2l0eTouNH0ucnVsZXIuaG9yaXpvbnRhbCAubWFyZ2luIC5tb3Zlcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDo0cHg7aGVpZ2h0OjEwMCU7Y3Vyc29yOmV3LXJlc2l6ZX0ucnVsZXIuaG9yaXpvbnRhbCAubWFyZ2luLnJpZ2h0IC5tb3ZlcntyaWdodDoycHh9LnJ1bGVyLmhvcml6b250YWwgLm1hcmdpbi5sZWZ0IC5tb3ZlcntmbG9hdDpyaWdodDtyaWdodDotMnB4fS5ydWxlci5ob3Jpem9udGFsIC5tYXJrZXJ7aGVpZ2h0OjhweDt3aWR0aDo4cHh9LnJ1bGVyLmhvcml6b250YWwgLm1hcmtlciBzdmd7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7aGVpZ2h0OjEwMCUhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoxMnB4fS5ydWxlci5ob3Jpem9udGFsIC5pbmRlbnR7aGVpZ2h0OjhweDt3aWR0aDo4cHh9LnJ1bGVyLmhvcml6b250YWwgLmluZGVudCBzdmd7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7aGVpZ2h0OjEwMCUhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoxMnB4fS5ydWxlci5ob3Jpem9udGFsIC5pbmRlbnQubGVmdCBzdmd7bGVmdDotNHB4fS5ydWxlci5ob3Jpem9udGFsIC5pbmRlbnQucmlnaHQgc3Zne3JpZ2h0Oi00cHh9LnJ1bGVyLmhvcml6b250YWwgLmZpcnN0LWxpbmV7aGVpZ2h0OjhweDt3aWR0aDo4cHh9LnJ1bGVyLmhvcml6b250YWwgLmZpcnN0LWxpbmUgc3Zne3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDoxMDAlIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MTJweH0ucnVsZXIuaG9yaXpvbnRhbCAuZmlyc3QtbGluZS5sZWZ0IHN2Z3t0b3A6MDtsZWZ0Oi00cHh9LnJ1bGVyPnN2ZyB0ZXh0e2ZvbnQtc2l6ZToxMHB4fUBmb250LWZhY2V7Zm9udC1mYW1pbHk6bXkgYXJpYWw7c3JjOmxvY2FsKFxcXCJhcmlhbFxcXCIpLHVybChcXFwiL2ZvbnRzL0FyaWFsXFxcIil9XCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIiwiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgbGlzdCA9IFtdO1xuXG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuXHRcdFx0dmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG5cdFx0XHRpZihpdGVtWzJdKSB7XG5cdFx0XHRcdHJldHVybiBcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGNvbnRlbnQgKyBcIn1cIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBjb250ZW50O1xuXHRcdFx0fVxuXHRcdH0pLmpvaW4oXCJcIik7XG5cdH07XG5cblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3Rcblx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuXHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XG5cdFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcblx0XHR9XG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuXHRcdFx0XHR9IGVsc2UgaWYobWVkaWFRdWVyeSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRyZXR1cm4gbGlzdDtcbn07XG5cbmZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKSB7XG5cdHZhciBjb250ZW50ID0gaXRlbVsxXSB8fCAnJztcblx0dmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXHRpZiAoIWNzc01hcHBpbmcpIHtcblx0XHRyZXR1cm4gY29udGVudDtcblx0fVxuXG5cdGlmICh1c2VTb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcblx0XHR2YXIgc291cmNlTWFwcGluZyA9IHRvQ29tbWVudChjc3NNYXBwaW5nKTtcblx0XHR2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuXHRcdFx0cmV0dXJuICcvKiMgc291cmNlVVJMPScgKyBjc3NNYXBwaW5nLnNvdXJjZVJvb3QgKyBzb3VyY2UgKyAnICovJ1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbignXFxuJyk7XG5cdH1cblxuXHRyZXR1cm4gW2NvbnRlbnRdLmpvaW4oJ1xcbicpO1xufVxuXG4vLyBBZGFwdGVkIGZyb20gY29udmVydC1zb3VyY2UtbWFwIChNSVQpXG5mdW5jdGlvbiB0b0NvbW1lbnQoc291cmNlTWFwKSB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuXHR2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKTtcblx0dmFyIGRhdGEgPSAnc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsJyArIGJhc2U2NDtcblxuXHRyZXR1cm4gJy8qIyAnICsgZGF0YSArICcgKi8nO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRvbSA9IHt9O1xuXG52YXIgaXNPbGRJRSA9IGZ1bmN0aW9uIGlzT2xkSUUoKSB7XG4gIHZhciBtZW1vO1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUoKSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gVGVzdCBmb3IgSUUgPD0gOSBhcyBwcm9wb3NlZCBieSBCcm93c2VyaGFja3NcbiAgICAgIC8vIEBzZWUgaHR0cDovL2Jyb3dzZXJoYWNrcy5jb20vI2hhY2stZTcxZDg2OTJmNjUzMzQxNzNmZWU3MTVjMjIyY2I4MDVcbiAgICAgIC8vIFRlc3RzIGZvciBleGlzdGVuY2Ugb2Ygc3RhbmRhcmQgZ2xvYmFscyBpcyB0byBhbGxvdyBzdHlsZS1sb2FkZXJcbiAgICAgIC8vIHRvIG9wZXJhdGUgY29ycmVjdGx5IGludG8gbm9uLXN0YW5kYXJkIGVudmlyb25tZW50c1xuICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlci9pc3N1ZXMvMTc3XG4gICAgICBtZW1vID0gQm9vbGVhbih3aW5kb3cgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsICYmICF3aW5kb3cuYXRvYik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW87XG4gIH07XG59KCk7XG5cbnZhciBnZXRUYXJnZXQgPSBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gIHZhciBtZW1vID0ge307XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSh0YXJnZXQpIHtcbiAgICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbiAgfTtcbn0oKTtcblxuZnVuY3Rpb24gbGlzdFRvU3R5bGVzKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlcyA9IFtdO1xuICB2YXIgbmV3U3R5bGVzID0ge307XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjc3MgPSBpdGVtWzFdO1xuICAgIHZhciBtZWRpYSA9IGl0ZW1bMl07XG4gICAgdmFyIHNvdXJjZU1hcCA9IGl0ZW1bM107XG4gICAgdmFyIHBhcnQgPSB7XG4gICAgICBjc3M6IGNzcyxcbiAgICAgIG1lZGlhOiBtZWRpYSxcbiAgICAgIHNvdXJjZU1hcDogc291cmNlTWFwXG4gICAgfTtcblxuICAgIGlmICghbmV3U3R5bGVzW2lkXSkge1xuICAgICAgc3R5bGVzLnB1c2gobmV3U3R5bGVzW2lkXSA9IHtcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBwYXJ0czogW3BhcnRdXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3U3R5bGVzW2lkXS5wYXJ0cy5wdXNoKHBhcnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHlsZXM7XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlc1RvRG9tKHN0eWxlcywgb3B0aW9ucykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gc3R5bGVzW2ldO1xuICAgIHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdO1xuICAgIHZhciBqID0gMDtcblxuICAgIGlmIChkb21TdHlsZSkge1xuICAgICAgZG9tU3R5bGUucmVmcysrO1xuXG4gICAgICBmb3IgKDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzW2pdKGl0ZW0ucGFydHNbal0pO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdLCBvcHRpb25zKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJ0cyA9IFtdO1xuXG4gICAgICBmb3IgKDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgcGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdLCBvcHRpb25zKSk7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlc0luRG9tW2l0ZW0uaWRdID0ge1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgcmVmczogMSxcbiAgICAgICAgcGFydHM6IHBhcnRzXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5hdHRyaWJ1dGVzLm5vbmNlID09PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgICBpZiAobm9uY2UpIHtcbiAgICAgIG9wdGlvbnMuYXR0cmlidXRlcy5ub25jZSA9IG5vbmNlO1xuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5rZXlzKG9wdGlvbnMuYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKGtleSwgb3B0aW9ucy5hdHRyaWJ1dGVzW2tleV0pO1xuICB9KTtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuaW5zZXJ0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgb3B0aW9ucy5pbnNlcnQoc3R5bGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQob3B0aW9ucy5pbnNlcnQgfHwgJ2hlYWQnKTtcblxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICAgIH1cblxuICAgIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlLnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlKTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbnZhciByZXBsYWNlVGV4dCA9IGZ1bmN0aW9uIHJlcGxhY2VUZXh0KCkge1xuICB2YXIgdGV4dFN0b3JlID0gW107XG4gIHJldHVybiBmdW5jdGlvbiByZXBsYWNlKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudDtcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKTtcbiAgfTtcbn0oKTtcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyhzdHlsZSwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5jc3M7IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZS5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZS5hcHBlbmRDaGlsZChjc3NOb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyhzdHlsZSwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzO1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSk7XG4gIH1cblxuICBpZiAoc291cmNlTWFwICYmIGJ0b2EpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKHN0eWxlLmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbnZhciBzaW5nbGV0b24gPSBudWxsO1xudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBhZGRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlO1xuICB2YXIgdXBkYXRlO1xuICB2YXIgcmVtb3ZlO1xuXG4gIGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrO1xuICAgIHN0eWxlID0gc2luZ2xldG9uIHx8IChzaW5nbGV0b24gPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgZmFsc2UpO1xuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUgPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlLCBvcHRpb25zKTtcblxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZShvYmopO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIG9wdGlvbnMuYXR0cmlidXRlcyA9IHR5cGVvZiBvcHRpb25zLmF0dHJpYnV0ZXMgPT09ICdvYmplY3QnID8gb3B0aW9ucy5hdHRyaWJ1dGVzIDoge307IC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuICAvLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG5cbiAgaWYgKCFvcHRpb25zLnNpbmdsZXRvbiAmJiB0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gIT09ICdib29sZWFuJykge1xuICAgIG9wdGlvbnMuc2luZ2xldG9uID0gaXNPbGRJRSgpO1xuICB9XG5cbiAgdmFyIHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhsaXN0LCBvcHRpb25zKTtcbiAgYWRkU3R5bGVzVG9Eb20oc3R5bGVzLCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgdmFyIG1heVJlbW92ZSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpdGVtID0gc3R5bGVzW2ldO1xuICAgICAgdmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF07XG5cbiAgICAgIGlmIChkb21TdHlsZSkge1xuICAgICAgICBkb21TdHlsZS5yZWZzLS07XG4gICAgICAgIG1heVJlbW92ZS5wdXNoKGRvbVN0eWxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmV3TGlzdCkge1xuICAgICAgdmFyIG5ld1N0eWxlcyA9IGxpc3RUb1N0eWxlcyhuZXdMaXN0LCBvcHRpb25zKTtcbiAgICAgIGFkZFN0eWxlc1RvRG9tKG5ld1N0eWxlcywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG1heVJlbW92ZS5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfZG9tU3R5bGUgPSBtYXlSZW1vdmVbX2ldO1xuXG4gICAgICBpZiAoX2RvbVN0eWxlLnJlZnMgPT09IDApIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBfZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBfZG9tU3R5bGUucGFydHNbal0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGV0ZSBzdHlsZXNJbkRvbVtfZG9tU3R5bGUuaWRdO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn07IiwiaW1wb3J0IFJlYWN0LHtQdXJlQ29tcG9uZW50fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5cbmltcG9ydCB7QXV0b0NvbXBsZXRlfSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuaW1wb3J0IEljb25Nb3JlIGZyb20gJ21hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2Fycm93LWRyb3AtZG93bidcblxuZXhwb3J0IGNsYXNzIENvbWJvQm94IGV4dGVuZHMgUHVyZUNvbXBvbmVudHtcblx0c3RhdGljIGNvbnRleHRUeXBlcz17XG5cdFx0bXVpVGhlbWU6IFByb3BUeXBlcy5vYmplY3QsXG5cdH1cblx0c3RhdGU9e3NlYXJjaFRleHQ6dGhpcy5nZXRUZXh0KHRoaXMucHJvcHMpfVxuXG5cdGlzT2JqZWN0RGF0YShwcm9wcyl7XG5cdFx0Y29uc3Qge2RhdGFTb3VyY2U6W2ZpcnN0XX09cHJvcHN8fHRoaXMucHJvcHNcblx0XHRyZXR1cm4gdHlwZW9mKGZpcnN0KT09XCJvYmplY3RcIlxuXHR9XG5cblx0Z2V0VGV4dChwcm9wcyl7XG5cdFx0Y29uc3Qge2RhdGFTb3VyY2UsIHZhbHVlLCBkYXRhU291cmNlQ29uZmlnfT1wcm9wc3x8dGhpcy5wcm9wc1xuXHRcdGNvbnN0IHt0ZXh0OmtUZXh0LHZhbHVlOmtWYWx1ZX09ZGF0YVNvdXJjZUNvbmZpZ3x8eyB0ZXh0OiAndGV4dCcsIHZhbHVlOiAndmFsdWUnLH1cblx0XHRpZih0aGlzLmlzT2JqZWN0RGF0YShwcm9wcykpe1xuXHRcdFx0bGV0IGZvdW5kPWRhdGFTb3VyY2UuZmluZChhPT5hW2tWYWx1ZV09PXZhbHVlKVxuXHRcdFx0aWYoZm91bmQpe1xuXHRcdFx0XHRyZXR1cm4gZm91bmRba1RleHRdK1wiXCJcblx0XHRcdH1lbHNle1xuXHRcdFx0XHRyZXR1cm4gXCJcIlxuXHRcdFx0fVxuXHRcdH1lbHNle1xuXHRcdFx0cmV0dXJuIHZhbHVlK1wiXCJcblx0XHR9XG5cdH1cblxuXHRnZXRJbmRleCh0ZXh0KXtcblx0XHRjb25zdCB7ZGF0YVNvdXJjZSwgZGF0YVNvdXJjZUNvbmZpZ309dGhpcy5wcm9wc1xuXHRcdGNvbnN0IHt0ZXh0OmtUZXh0LHZhbHVlOmtWYWx1ZX09ZGF0YVNvdXJjZUNvbmZpZ3x8eyB0ZXh0OiAndGV4dCcsIHZhbHVlOiAndmFsdWUnLH1cblx0XHRpZih0aGlzLmlzT2JqZWN0RGF0YSgpKXtcblx0XHRcdHJldHVybiBkYXRhU291cmNlLmZpbmRJbmRleChhPT5hW2tUZXh0XT09dGV4dClcblx0XHR9ZWxzZXtcblx0XHRcdHJldHVybiBkYXRhU291cmNlLmluZGV4T2YodGV4dClcblx0XHR9XG5cdH1cblxuXHRnZXRWYWx1ZShpbmRleCl7XG5cdFx0Y29uc3Qge2RhdGFTb3VyY2UsIGRhdGFTb3VyY2VDb25maWd9PXRoaXMucHJvcHNcblx0XHRjb25zdCB7dGV4dDprVGV4dCx2YWx1ZTprVmFsdWV9PWRhdGFTb3VyY2VDb25maWd8fHsgdGV4dDogJ3RleHQnLCB2YWx1ZTogJ3ZhbHVlJyx9XG5cdFx0aWYodGhpcy5pc09iamVjdERhdGEoKSl7XG5cdFx0XHRyZXR1cm4gZGF0YVNvdXJjZVtpbmRleF1ba1ZhbHVlXVxuXHRcdH1lbHNle1xuXHRcdFx0cmV0dXJuIGRhdGFTb3VyY2VbaW5kZXhdXG5cdFx0fVxuXHR9XG5cblx0cmVuZGVyKCl7XG5cdFx0bGV0IHtjb21ib0JveH09dGhpcy5jb250ZXh0Lm11aVRoZW1lXG5cdFx0bGV0IHtuYW1lPWBfJHtEYXRlLm5vdygpfWAsIHZhbHVlLCBvbkNoYW5nZSwgb25FeGNlcHRpb24sIHN0eWxlLCBtZW51UHJvcHM9e30sXG5cdFx0XHR0ZXh0RmllbGRTdHlsZSwgaW5wdXRTdHlsZSwgY2hpbGRyZW4saWNvbj1jaGlsZHJlbixsYWJlbCxoaW50PWxhYmVsLCAuLi5wcm9wc309dGhpcy5wcm9wc1xuXHRcdGxldCB0ZXh0PXRoaXMuZ2V0VGV4dCgpXG5cdFx0bGV0IHtzZWFyY2hUZXh0fT10aGlzLnN0YXRlXG5cdFx0aWYoY29tYm9Cb3ggJiYgY29tYm9Cb3guaGVpZ2h0KXtcblx0XHRcdGlmKCFzdHlsZSl7XG5cdFx0XHRcdHN0eWxlPXtoZWlnaHQ6Y29tYm9Cb3guaGVpZ2h0fVxuXHRcdFx0fWVsc2UgaWYoIXN0eWxlLmhlaWdodCl7XG5cdFx0XHRcdHN0eWxlLmhlaWdodD1jb21ib0JveC5oZWlnaHRcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZihjb21ib0JveCAmJiBjb21ib0JveC50ZXh0RmllbGRTdHlsZSl7XG5cdFx0XHR0ZXh0RmllbGRTdHlsZT17Li4uY29tYm9Cb3gudGV4dEZpZWxkU3R5bGUsLi4udGV4dEZpZWxkU3R5bGV9XG5cdFx0fVxuXG5cdFx0aWYoY29tYm9Cb3ggJiYgY29tYm9Cb3gubWVudSl7XG5cdFx0XHRtZW51UHJvcHM9ey4uLmNvbWJvQm94Lm1lbnUsLi4ubWVudVByb3BzfVxuXHRcdH1cblxuXHRcdGlmKHN0eWxlKXtcblx0XHRcdGlmKCF0ZXh0RmllbGRTdHlsZSl7XG5cdFx0XHRcdHRleHRGaWVsZFN0eWxlPXt9XG5cdFx0XHR9XG5cdFx0XHRpZihzdHlsZS53aWR0aCAmJiAhdGV4dEZpZWxkU3R5bGUud2lkdGgpe1xuXHRcdFx0XHR0ZXh0RmllbGRTdHlsZS53aWR0aD1zdHlsZS53aWR0aFxuXHRcdFx0fVxuXG5cdFx0XHRpZihzdHlsZS5oZWlnaHQgJiYgIXRleHRGaWVsZFN0eWxlLmhlaWdodCl7XG5cdFx0XHRcdHRleHRGaWVsZFN0eWxlLmhlaWdodD1zdHlsZS5oZWlnaHRcblx0XHRcdH1cblxuXHRcdFx0aWYobWVudVByb3BzLnN0eWxlICYmICFtZW51UHJvcHMuc3R5bGUud2lkdGggJiYgc3R5bGUud2lkdGgpXG5cdFx0XHRcdG1lbnVQcm9wcy5zdHlsZT17Li4ubWVudVByb3BzLnN0eWxlLCB3aWR0aDpzdHlsZS53aWR0aH1cblx0XHR9XG5cblx0XHRpZihpbnB1dFN0eWxlICYmIGlucHV0U3R5bGUuYm9yZGVyKXtcblx0XHRcdGlucHV0U3R5bGUucGFkZGluZ1JpZ2h0PTZcblxuXHRcdH1cblxuXHRcdGlmKCFpY29uICYmIHRleHRGaWVsZFN0eWxlICYmIHRleHRGaWVsZFN0eWxlLmhlaWdodCl7XG5cdFx0XHRpY29uPSg8SWNvbk1vcmVcblx0XHRcdFx0XHRzdHlsZT17e2hlaWdodDp0ZXh0RmllbGRTdHlsZS5oZWlnaHQtNCx3aWR0aDo2fX1cblx0XHRcdFx0XHR2aWV3Qm94PVwiNiAtMjAgMTggMjhcIlxuXHRcdFx0XHRcdC8+KVxuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8c3BhbiBzdHlsZT17e3doaXRlU3BhY2U6XCJub3dyYXBcIn19PlxuXHRcdFx0XHQ8QXV0b0NvbXBsZXRlXG5cdFx0XHRcdFx0bmFtZT17bmFtZX1cblx0XHRcdFx0XHRzZWFyY2hUZXh0PXtzZWFyY2hUZXh0fVxuXHRcdFx0XHRcdG1lbnVQcm9wcz17bWVudVByb3BzfVxuXHRcdFx0XHRcdG9uTmV3UmVxdWVzdD17XG5cdFx0XHRcdFx0XHQoc2VsZWN0ZWQsIGluZGV4KT0+e1xuXHRcdFx0XHRcdFx0XHRpZigtMT09aW5kZXggJiYgc2VsZWN0ZWQpey8vZW50ZXJcblx0XHRcdFx0XHRcdFx0XHRpbmRleD10aGlzLmdldEluZGV4KHNlbGVjdGVkKVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0aWYoLTEhPWluZGV4KXtcblx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZSAmJiBvbkNoYW5nZSh0aGlzLmdldFZhbHVlKGluZGV4KSlcblx0XHRcdFx0XHRcdFx0fWVsc2UgaWYoc2VsZWN0ZWQpe1xuXHRcdFx0XHRcdFx0XHRcdG9uRXhjZXB0aW9uICYmIG9uRXhjZXB0aW9uKHNlbGVjdGVkKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0b25VcGRhdGVJbnB1dD17XG5cdFx0XHRcdFx0XHQoc2VhcmNoVGV4dCwgZGF0YVNvdXJjZSk9Pntcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7c2VhcmNoVGV4dH0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0b25DbG9zZT17KCk9PnRoaXMuc2V0U3RhdGUoe3NlYXJjaFRleHQ6dGV4dH0pfVxuXG5cdFx0XHRcdFx0ZmlsdGVyPXtcblx0XHRcdFx0XHRcdChzZWFyY2hUZXh0LGtleSk9Pntcblx0XHRcdFx0XHRcdFx0aWYoc2VhcmNoVGV4dCE9dGV4dCl7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGtleS5pbmRleE9mKHNlYXJjaFRleHQpIT0tMVxuXHRcdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG9wZW5PbkZvY3VzPXt0cnVlfVxuXHRcdFx0XHRcdHN0eWxlPXtzdHlsZX1cblx0XHRcdFx0XHRpbnB1dFN0eWxlPXtpbnB1dFN0eWxlfVxuXHRcdFx0XHRcdHRleHRGaWVsZFN0eWxlPXt0ZXh0RmllbGRTdHlsZX1cblx0XHRcdFx0XHRoaW50VGV4dD17aGludH1cblx0XHRcdFx0XHR7Li4ucHJvcHN9IC8+XG5cdFx0XHRcdFx0e2ljb259XG5cdFx0XHQ8L3NwYW4+XG5cdFx0KVxuXHR9XG5cblx0Y29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0KXtcblx0XHRpZih0aGlzLnByb3BzLnZhbHVlIT1uZXh0LnZhbHVlKXtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe3NlYXJjaFRleHQ6dGhpcy5nZXRUZXh0KG5leHQpfSlcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29tYm9Cb3hcbiIsImltcG9ydCB7RE9NQUlOfSBmcm9tIFwid2UtZWRpdFwiXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbG9hZGVyOmxvYWRlcj0+KHt0eXBlOmAke0RPTUFJTn0vb2ZmaWNlL0xPQURFUmAsIHBheWxvYWQ6bG9hZGVyfSksXG4gICAgc3RyZWFtOnN0cmVhbT0+KHt0eXBlOmAke0RPTUFJTn0vb2ZmaWNlL1NUUkVBTWAsIHBheWxvYWQ6c3RyZWFtfSksXG4gICAgZm9ybWF0OnBheWxvYWQ9Pih7dHlwZTpgJHtET01BSU59L29mZmljZS9GT1JNQVRgLHBheWxvYWR9KSxcbiAgICBjaGFubmVsOmNoYW5uZWw9Pih7dHlwZTpgJHtET01BSU59L29mZmljZS9jaGFubmVsYCxwYXlsb2FkOmNoYW5uZWx9KSxcbiAgICBzY2FsZTogc2NhbGU9Pih7dHlwZTpgJHtET01BSU59L29mZmljZS9zY2FsZWAscGF5bG9hZDpzY2FsZX0pLFxufVxuXG5leHBvcnQgY29uc3QgZ2V0T2ZmaWNlPXN0YXRlPT5zdGF0ZS5nZXQoXCJvZmZpY2VcIilcbiIsImltcG9ydCBSZWFjdCwge1B1cmVDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gXCJyZWFjdC1yZWR1eFwiXG5cbmltcG9ydCB7RW1pdHRlciwgU3RyZWFtLCBnZXRBY3RpdmUsIEFDVElPTiBhcyB3ZUFDVElPTiwgcmVuZGVyfSBmcm9tIFwid2UtZWRpdFwiXG5pbXBvcnQgUmFpc2VkQnV0dG9uIGZyb20gXCJtYXRlcmlhbC11aS9SYWlzZWRCdXR0b25cIlxuXG5pbXBvcnQgQ29tYm9Cb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvY29tYm8tYm94XCJcbmltcG9ydCBBQ1RJT04gZnJvbSBcIi4uL3N0YXRlL2FjdGlvblwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNhdmVyIGV4dGVuZHMgUHVyZUNvbXBvbmVudHtcbiAgICBzdGF0aWMgY29udGV4dFR5cGVzPXtcbiAgICAgICAgc3RvcmU6UHJvcFR5cGVzLm9iamVjdFxuICAgIH1cblxuICAgIHN0YXRpYyBnZXRFbWl0dGVyU3RyZWFtKHN0YXRlLCBkb2Mpe1xuICAgICAgICBsZXQge1xuXHRcdFx0Zm9ybWF0PXt0eXBlOmRvYy50eXBlfSxcblx0XHRcdHN0cmVhbT17dHlwZTpcImJyb3dzZXJcIixuYW1lOmRvYy5uYW1lfSxcblx0XHRcdGxvYWRlclxuXHRcdH09c3RhdGUuZ2V0KFwib2ZmaWNlXCIpXG5cbiAgICAgICAgaWYoZm9ybWF0LnR5cGUhPWRvYy50eXBlKXtcbiAgICAgICAgICAgIGlmKGxvYWRlciAmJiBFbWl0dGVyLnN1cHBvcnRzLmhhcyhsb2FkZXIudHlwZSkpe1xuICAgICAgICAgICAgICAgIHN0cmVhbT17Li4ubG9hZGVyfVxuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgc3RyZWFtPXt0eXBlOlwiYnJvd3NlclwiLCBuYW1lOmRvYy5uYW1lfVxuICAgICAgICAgICAgfVxuXG5cdFx0XHRmb3JtYXQ9e3R5cGU6ZG9jLnR5cGV9XG4gICAgICAgIH1cbiAgICAgICAgaWYoIXN0cmVhbS50eXBlKVxuICAgICAgICAgICAgc3RyZWFtPXt0eXBlOlwiYnJvd3NlclwiLCBuYW1lOmRvYy5uYW1lfVxuICAgICAgICByZXR1cm4ge2Zvcm1hdCxzdHJlYW19XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKVxuICAgICAgICBjb25zdCB7c3RvcmV9PXRoaXMuY29udGV4dFxuICAgICAgICBjb25zdCB7ZG9jLCBzdGF0ZX09Z2V0QWN0aXZlKHN0b3JlLmdldFN0YXRlKCkpXG4gICAgICAgIHRoaXMuZG9jPWRvY1xuICAgICAgICB0aGlzLnN0YXRlPVNhdmVyLmdldEVtaXR0ZXJTdHJlYW0oc3RhdGUsIGRvYylcbiAgICB9XG5cbiAgICBnZXRTdXBwb3J0ZWRGb3JtYXRzKCl7XG4gICAgICAgIGxldCBzdXBwb3J0cz1FbWl0dGVyLnN1cHBvcnRzXG4gICAgICAgIGxldCBmb3JtYXRzPUFycmF5LmZyb20oc3VwcG9ydHMua2V5cygpKS5maWx0ZXIoYT0+ISFhKVxuICAgICAgICAgICAgLm1hcCh0eXBlPT57XG4gICAgICAgICAgICAgICAgY29uc3Qge2V4dCxuYW1lfT1zdXBwb3J0cy5nZXQodHlwZSkuZGVmYXVsdFByb3BzXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt0ZXh0OmAke25hbWV9ICgqLiR7ZXh0fSlgLHZhbHVlOnR5cGV9XG4gICAgICAgICAgICB9KVxuICAgICAgICBpZighc3VwcG9ydHMuaGFzKHRoaXMuZG9jLnR5cGUpKXtcbiAgICAgICAgICAgIGZvcm1hdHMudW5zaGlmdCh7XG5cdFx0XHRcdHRleHQ6YCR7dGhpcy5kb2MudHlwZU5hbWV9ICgqLiR7dGhpcy5kb2MudHlwZUV4dH0pYCxcblx0XHRcdFx0dmFsdWU6dGhpcy5kb2MudHlwZSxcblx0XHRcdH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdHNcbiAgICB9XG5cblx0Z2V0U3VwcG9ydGVkU3RyZWFtcygpe1xuXHRcdHJldHVybiBBcnJheS5mcm9tKFN0cmVhbS5zdXBwb3J0cy5rZXlzKCkpLmZpbHRlcihhPT4hIWEpXG5cdH1cblxuICAgIGZpeE5hbWUoZm9ybWF0LG5hbWUpe1xuXHRcdGlmKCFuYW1lKVxuXHRcdFx0cmV0dXJuIG5hbWVcbiAgICAgICAgbGV0IEZvcm1hdD1FbWl0dGVyLmdldChmb3JtYXQpXG4gICAgICAgIGxldCBleHQ9Rm9ybWF0ID8gRm9ybWF0LmRlZmF1bHRQcm9wcy5leHQgOiB0aGlzLmRvYy50eXBlRXh0XG4gICAgICAgIGlmKG5hbWUuaW5kZXhPZihcIi5cIik9PS0xKVxuICAgICAgICAgICAgcmV0dXJuIG5hbWUrJy4nK2V4dFxuICAgICAgICByZXR1cm4gbmFtZS5yZXBsYWNlKC9cXC5cXHcrJC9nLCBcIi5cIitleHQpXG4gICAgfVxuXG4gICAgcmVuZGVyKCl7XG4gICAgICAgIGNvbnN0IHtvbkNhbmNlbCwgb25TYXZlfT10aGlzLnByb3BzXG5cdFx0bGV0IHtmb3JtYXQsIHN0cmVhbX09dGhpcy5zdGF0ZVxuXHRcdGxldCBzdXBwb3J0ZWRTdHJlYW1zPXRoaXMuZ2V0U3VwcG9ydGVkU3RyZWFtcygpXG5cdFx0bGV0IHN1cHBvcnRlZEZvcm1hdHM9dGhpcy5nZXRTdXBwb3J0ZWRGb3JtYXRzKClcblxuICAgICAgICBsZXQgbm9UeXBlZFN0cmVhbT1mYWxzZVxuICAgICAgICBsZXQgdHlwZWRTdHJlYW1VST0oKHt0eXBlLCAuLi5zdHJlYW1Qcm9wc30pPT57XG5cdFx0XHRsZXQgVHlwZT1TdHJlYW0uZ2V0KHR5cGUpXG5cdFx0XHRpZihUeXBlKXtcblx0XHRcdFx0cmV0dXJuIDxUeXBlXG5cdFx0XHRcdFx0XHRyZWY9XCJzdHJlYW1cIlxuXHRcdFx0XHRcdFx0ey4uLnN0cmVhbVByb3BzfVxuXHRcdFx0XHRcdFx0Zm9ybWF0PXtmb3JtYXQudHlwZX1cblx0XHRcdFx0XHRcdGZpeE5hbWU9e25hbWU9PnRoaXMuZml4TmFtZShmb3JtYXQudHlwZSxuYW1lKX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0bm9UeXBlZFN0cmVhbT10cnVlXG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0PGNlbnRlciBzdHlsZT17e2NvbG9yOlwicmVkXCJ9fT5cblx0XHRcdFx0XHRubyBzdHJlYW1bdHlwZT17dHlwZX1dIGltcGxlbWVuYXRpb25cblx0XHRcdFx0XHQ8L2NlbnRlcj5cblx0XHRcdFx0KVxuXHRcdFx0fVxuXHRcdH0pKHN0cmVhbSk7XG5cblx0XHRsZXQgdHlwZWRGb3JtYXRVST0oKHt0eXBlLCAuLi5mb3JtYXRQcm9wc30pPT57XG5cdFx0XHRsZXQgVHlwZT1FbWl0dGVyLmdldCh0eXBlKVxuXHRcdFx0aWYoVHlwZSl7XG5cdFx0XHRcdHJldHVybiA8VHlwZS5TZXR0aW5nIHJlZj1cImZvcm1hdFwiXHR7Li4uZm9ybWF0UHJvcHN9IC8+XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0cmV0dXJuIG51bGxcblx0XHRcdH1cblx0XHR9KShmb3JtYXQpO1xuXG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6XCJmbGV4XCIsIGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIn19PlxuXHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdHtzdXBwb3J0ZWRTdHJlYW1zLmxlbmd0aD4xICYmXG5cdFx0XHRcdFx0XHQoPGNlbnRlciBzdHlsZT17e2hlaWdodDoxMDAsIGxpbmVIZWlnaHQ6XCIxMDBweFwifX0+XG5cdFx0XHRcdFx0XHRcdDxzcGFuPlNhdmUgdG86PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHQ8Q29tYm9Cb3hcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtzdHJlYW0udHlwZX1cblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFTb3VyY2U9e3N1cHBvcnRlZFN0cmVhbXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17dHlwZT0+dGhpcy5zZXRTdGF0ZSh7c3RyZWFtOnsuLi5zdHJlYW0sdHlwZX19KX0vPlxuXHRcdFx0XHRcdFx0PC9jZW50ZXI+KVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PC9kaXY+XG5cblx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHR7dHlwZWRTdHJlYW1VSX1cblx0XHRcdFx0PC9kaXY+XG5cblxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXt7ZmxleDpcIjEgMTAwJVwifX0+XG5cdFx0XHRcdFx0IHtzdXBwb3J0ZWRGb3JtYXRzLmxlbmd0aD4wICYmIChcblx0XHRcdFx0XHRcdDxjZW50ZXI+XG5cdFx0XHRcdFx0XHRcdDxzcGFuPlNhdmUgYXMgdHlwZTo8L3NwYW4+XG5cdFx0XHRcdFx0XHRcdDxDb21ib0JveFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtmb3JtYXQudHlwZX1cblx0XHRcdFx0XHRcdFx0XHRkYXRhU291cmNlPXtzdXBwb3J0ZWRGb3JtYXRzfVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXt0eXBlPT57XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtmb3JtYXQ6ey4uLmZvcm1hdCx0eXBlfX0pXG5cdFx0XHRcdFx0XHRcdFx0fX0vPlxuXHRcdFx0XHRcdFx0PC9jZW50ZXI+XG5cdFx0XHRcdFx0ICl9XG5cdFx0XHRcdDwvZGl2PlxuXG5cdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0e3R5cGVkRm9ybWF0VUl9XG5cdFx0XHRcdDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGNlbnRlcj5cbiAgICAgICAgICAgICAgICAgICAgPFJhaXNlZEJ1dHRvblxuXHRcdFx0XHRcdFx0bGFiZWw9XCJDYW5jZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ttYXJnaW5SaWdodDo1fX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2FuY2VsfVxuXHRcdFx0XHRcdFx0Lz5cblxuICAgICAgICAgICAgICAgICAgICA8UmFpc2VkQnV0dG9uXG5cdFx0XHRcdFx0XHRsYWJlbD1cIlNhdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e25vVHlwZWRTdHJlYW19XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5zYXZlLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHQvPlxuICAgICAgICAgICAgICAgIDwvY2VudGVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG5cblx0c2F2ZSgpe1xuICAgICAgICBjb25zdCB7c3RvcmV9PXRoaXMuY29udGV4dFxuICAgICAgICBjb25zdCB7b25TYXZlfT10aGlzLnByb3BzXG5cdFx0dmFyIHtmb3JtYXQsc3RyZWFtfT10aGlzLnN0YXRlXG4gICAgICAgIHN0cmVhbT17Li4uc3RyZWFtLCAuLi4odGhpcy5yZWZzLnN0cmVhbSAmJiB0aGlzLnJlZnMuc3RyZWFtLnN0YXRlIHx8IHt9KX1cblx0XHRmb3JtYXQ9ey4uLmZvcm1hdCwgLi4uKHRoaXMucmVmcy5mb3JtYXQgJiYgdGhpcy5yZWZzLmZvcm1hdC5zdGF0ZSB8fCB7fSl9XG4gICAgICAgIFNhdmVyLnNhdmUoc3RvcmUpKHtmb3JtYXQsc3RyZWFtfSlcbiAgICAgICAgICAgIC50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goQUNUSU9OLnN0cmVhbShzdHJlYW0pKVxuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKEFDVElPTi5mb3JtYXQoZm9ybWF0KSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZT0+c3RvcmUuZGlzcGF0Y2god2VBQ1RJT04uTUVTU0FHRSh7dHlwZTpcImVycm9yXCIsIG1lc3NhZ2U6ZS5tZXNzYWdlfSkpKVxuICAgICAgICAgICAgLnRoZW4ob25TYXZlKVxuXHR9XG5cbiAgICBzdGF0aWMgc2F2ZT1zdG9yZT0+KHtmb3JtYXQsIHN0cmVhbX0pPT57XG4gICAgICAgIGNvbnN0IHtzdGF0ZSxkb2N9PWdldEFjdGl2ZShzdG9yZS5nZXRTdGF0ZSgpKVxuXG4gICAgICAgIGlmKCFzdHJlYW0pe1xuICAgICAgICAgICAgc3RyZWFtPVNhdmVyLmdldEVtaXR0ZXJTdHJlYW0oc3RhdGUsZG9jKS5zdHJlYW1cbiAgICAgICAgfVxuXG4gICAgXHRpZighZm9ybWF0KVxuICAgICAgICAgICAgZm9ybWF0PXt0eXBlOmRvYy50eXBlfVxuXG4gICAgXHRsZXQgRm9ybWF0PWRvYy50eXBlPT1mb3JtYXQudHlwZSA/IEVtaXR0ZXIuRm9ybWF0Lk91dHB1dElucHV0IDogRW1pdHRlci5nZXQoZm9ybWF0LnR5cGUpXG5cbiAgICBcdHJldHVybiByZW5kZXIoXG4gICAgICAgICAgICA8UHJvdmlkZXIgc3RvcmU9e3N0b3JlfT5cbiAgICAgICAgXHRcdDxkb2MuU3RvcmUgcmVhZG9ubHk9e3RydWV9IHJlbGVhc2U9e2ZhbHNlfT5cbiAgICAgICAgXHRcdFx0PEVtaXR0ZXI+XG4gICAgICAgIFx0XHRcdFx0PFN0cmVhbSB7Li4uc3RyZWFtfT5cbiAgICAgICAgXHRcdFx0XHRcdDxGb3JtYXQgey4uLmZvcm1hdH0vPlxuICAgICAgICBcdFx0XHRcdDwvU3RyZWFtPlxuICAgICAgICBcdFx0XHQ8L0VtaXR0ZXI+XG4gICAgICAgIFx0XHQ8L2RvYy5TdG9yZT5cbiAgICAgICAgICAgIDwvUHJvdmlkZXI+XG4gICAgICAgIClcbiAgICB9XG59XG4iLCJpbXBvcnQgUmVhY3Qse1B1cmVDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBtZW1vaXplIGZyb20gXCJtZW1vaXplLW9uZVwiXG5cbmltcG9ydCB7SWNvbkJ1dHRvbn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2l6YWJsZUljb25CdXR0b24gZXh0ZW5kcyBQdXJlQ29tcG9uZW50e1xuXHRzdGF0aWMgY29udGV4dFR5cGVzPXtcblx0XHRtdWlUaGVtZTpQcm9wVHlwZXMub2JqZWN0LFxuXHR9XG5cblx0Z2V0U3R5bGU9bWVtb2l6ZSgoc3R5bGUsc2l6ZSxwYWRkaW5nLGljb25TdHlsZSwgc3RhdHVzKT0+e1xuXHRcdGNvbnN0IHNpemVJY29uQnV0dG9uPXRoaXMuY29udGV4dC5tdWlUaGVtZS5zaXplSWNvbkJ1dHRvblxuXHRcdHN0eWxlPXN0eWxlfHx7fVxuXHRcdGljb25TdHlsZT1pY29uU3R5bGV8fHt9XG5cdFx0XG5cdFx0aWYoc2l6ZUljb25CdXR0b24pe1xuXHRcdFx0aWYoIXNpemUgJiYgc2l6ZUljb25CdXR0b24uc2l6ZSlcblx0XHRcdFx0c2l6ZT1zaXplSWNvbkJ1dHRvbi5zaXplXG5cdFx0XHRpZighcGFkZGluZyAmJiBzaXplSWNvbkJ1dHRvbi5wYWRkaW5nKVxuXHRcdFx0XHRwYWRkaW5nPXNpemVJY29uQnV0dG9uLnBhZGRpbmdcblx0XHR9XG5cdFx0aWYoIXBhZGRpbmcpXG5cdFx0XHRwYWRkaW5nPTJcblxuXHRcdGlmKHNpemUpe1xuXHRcdFx0c3R5bGUud2lkdGg9c3R5bGUuaGVpZ2h0PXNpemVcblx0XHRcdGljb25TdHlsZS53aWR0aD1pY29uU3R5bGUuaGVpZ2h0PXNpemUtcGFkZGluZyoyXG5cdFx0XHRzdHlsZS5wYWRkaW5nPXBhZGRpbmdcblx0XHR9XG5cblx0XHRyZXR1cm4ge3N0eWxlOnsuLi5zdHlsZSwgLi4uc3R5bGVzW3N0YXR1c119LCBpY29uU3R5bGV9XG5cdH0pXG5cblx0cmVuZGVyKCl7XG5cdFx0Y29uc3Qge3N0YXR1cyxcblx0XHRcdGRpc2FibGVkPXN0YXR1cz09XCJkaXNhYmxlZFwiLFxuXHRcdFx0c2l6ZSxwYWRkaW5nLHN0eWxlLGljb25TdHlsZSwgbGFiZWwsIGhpbnQ9bGFiZWwsXG5cdFx0XHQuLi5wcm9wc309dGhpcy5wcm9wc1xuXG5cdFx0cmV0dXJuIDxJY29uQnV0dG9uIHsuLi5wcm9wc30gXG5cdFx0XHR7Li4udGhpcy5nZXRTdHlsZShzdHlsZSxzaXplLHBhZGRpbmcsaWNvblN0eWxlLCBzdGF0dXMpfVxuXHRcdFx0ZGlzYWJsZWQ9e2Rpc2FibGVkfSB0b29sdGlwPXtoaW50fS8+XG5cdH1cbn1cbmNvbnN0IHN0eWxlcz17XG5cdGNoZWNrZWQ6e1xuXHRcdGJhY2tncm91bmQ6XCJsaWdodGJsdWVcIixcblx0fSxcblx0dW5jaGVja2VkOntcblx0fSxcblx0ZGlzYWJsZWQ6e1xuXHR9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgU2l6ZUljb25CdXR0b24gZnJvbSBcIi4vc2l6ZS1pY29uLWJ1dHRvblwiXG5cbmV4cG9ydCBkZWZhdWx0IHByb3BzPT4oXG5cdDxTaXplSWNvbkJ1dHRvbiB7Li4ucHJvcHN9Lz5cbilcbiIsImltcG9ydCB7RE9NQUlOfSBmcm9tIFwid2UtZWRpdFwiXG5mdW5jdGlvbiByZWR1Y2VyKHN0YXRlPXtsb2FkZXI6e30sc3RyZWFtOnt9LGNoYW5uZWxzOnt9fSx7dHlwZSxwYXlsb2FkfSl7XG5cdHN3aXRjaCh0eXBlKXtcbiAgICAgICAgY2FzZSBgJHtET01BSU59L29mZmljZS9MT0FERVJgOlxuICAgICAgICAgICAgcmV0dXJuIHsuLi5zdGF0ZSwgbG9hZGVyOnBheWxvYWR9XG4gICAgICAgIGNhc2UgYCR7RE9NQUlOfS9vZmZpY2UvU1RSRUFNYDpcbiAgICAgICAgICAgIHJldHVybiB7Li4uc3RhdGUsIHN0cmVhbTpwYXlsb2FkfVxuICAgICAgICBjYXNlIGAke0RPTUFJTn0vb2ZmaWNlL0ZPUk1BVGA6XG4gICAgICAgICAgICByZXR1cm4gey4uLnN0YXRlLCBmb3JtYXQ6cGF5bG9hZH1cbiAgICAgICAgY2FzZSBgJHtET01BSU59L29mZmljZS9jaGFubmVsYDpcbiAgICAgICAgICAgIHJldHVybiB7Li4uc3RhdGUsIGNoYW5uZWw6cGF5bG9hZH1cbiAgICAgICAgY2FzZSBgJHtET01BSU59L29mZmljZS9zY2FsZWA6XG4gICAgICAgICAgICByZXR1cm4gey4uLnN0YXRlLCBzY2FsZTpwYXlsb2FkfVxuXHRcdGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gc3RhdGVcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IChzdGF0ZSxhY3Rpb24pPT5zdGF0ZS5zZXQoXCJvZmZpY2VcIiwgcmVkdWNlcihzdGF0ZS5nZXQoXCJvZmZpY2VcIiksYWN0aW9uKSlcbiIsImltcG9ydCBSZWFjdCwge1B1cmVDb21wb25lbnQsIEZyYWdtZW50fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQge0xvYWRlcn0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQgQ29tYm9Cb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvY29tYm8tYm94XCJcbmltcG9ydCByZWR1Y2VyIGZyb20gXCIuLi9zdGF0ZS9yZWR1Y2VyXCJcbmltcG9ydCBBQ1RJT04gZnJvbSBcIi4uL3N0YXRlL2FjdGlvblwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIF9fJDEgZXh0ZW5kcyBQdXJlQ29tcG9uZW50e1xuICAgIHN0YXRpYyBjb250ZXh0VHlwZXM9e1xuICAgICAgICBzdG9yZTogUHJvcFR5cGVzLm9iamVjdFxuICAgIH1cblx0XG4gICAgc3RhdGU9e31cbiAgICBnZXRTdXBwb3J0ZWRMb2FkZXJzKCl7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKExvYWRlci5zdXBwb3J0cy5rZXlzKCkpXG4gICAgfVxuXG4gICAgcmVuZGVyKCl7XG5cdFx0Y29uc3QgTG9hZGVycz10aGlzLmdldFN1cHBvcnRlZExvYWRlcnMoKVxuICAgICAgICBsZXQge3R5cGV9PXRoaXMuc3RhdGVcbiAgICAgICAgY29uc3Qge29uTG9hZH09dGhpcy5wcm9wc1xuXHRcdFxuXHRcdGlmKCF0eXBlICYmIExvYWRlcnMubGVuZ3RoPT0xKXtcblx0XHRcdHR5cGU9TG9hZGVyc1swXVxuXHRcdH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICB7IExvYWRlcnMubGVuZ3RoPjEgJiZcbiAgICAgICAgICAgICAgICAgICAgKDxkaXYgc3R5bGU9e3t0ZXh0QWxpZ246XCJjZW50ZXJcIn19PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvbWJvQm94IFxuXHRcdFx0XHRcdFx0XHRoaW50VGV4dD1cInNlbGVjdCBhIGxvYWRlci4uLlwiXG5cdFx0XHRcdFx0XHRcdGRhdGFTb3VyY2U9e0xvYWRlcnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3R5cGU9PnRoaXMuc2V0U3RhdGUoe3R5cGV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dHlwZXx8XCJcIn0vPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4pXG4gICAgICAgICAgICAgICAgfVxuXHRcdFx0XHR7dHlwZSAmJiBcblx0XHRcdFx0XHQ8TG9hZGVyIHR5cGU9e3R5cGV9XG5cdFx0XHRcdFx0XHR7Li4udGhpcy5wcm9wc31cblx0XHRcdFx0XHRcdG9uTG9hZD17XG5cdFx0XHRcdFx0XHRcdGxvYWRlcj0+e1xuXHRcdFx0XHRcdFx0XHRcdG9uTG9hZCgpXG5cdFx0XHRcdFx0XHRcdFx0aWYobG9hZGVyKXtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuY29udGV4dC5zdG9yZS5kaXNwYXRjaChBQ1RJT04ubG9hZGVyKGxvYWRlcikpXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZWR1Y2VyPXtyZWR1Y2VyfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0fVxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgKVxuICAgIH1cbn1cbiIsImltcG9ydCBSZWFjdCx7UHVyZUNvbXBvbmVudCwgRnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7SW5wdXQsQUNUSU9OLCBnZXRBbGx9IGZyb20gXCJ3ZS1lZGl0XCJcbmltcG9ydCB7UmFpc2VkQnV0dG9ufSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuXG5pbXBvcnQgQ29tYm9Cb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvY29tYm8tYm94XCJcbmltcG9ydCByZWR1Y2VyIGZyb20gXCIuLi9zdGF0ZS9yZWR1Y2VyXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3JlYXRlIGV4dGVuZHMgUHVyZUNvbXBvbmVudHtcbiAgICBzdGF0aWMgY29udGV4dFR5cGVzPXtcbiAgICAgICAgc3RvcmU6IFByb3BUeXBlcy5vYmplY3RcbiAgICB9XG5cdFxuXHRzdGF0aWMgY2hpbGRDb250ZXh0VHlwZXM9e1xuXHRcdGNyZWF0ZTpQcm9wVHlwZXMuZnVuY1xuXHR9XG5cbiAgICBnZXRTdXBwb3J0ZWRGb3JtYXRzKCl7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKElucHV0LnN1cHBvcnRzLnZhbHVlcygpKVxuXHRcdFx0LmZpbHRlcihUeXBlPT5UeXBlLnByb3RvdHlwZS5vbkNoYW5nZSAmJiBUeXBlLmRlZmF1bHRQcm9wcy50ZW1wbGF0ZSlcbiAgICAgICAgICAgIC5tYXAoKHtkZWZhdWx0UHJvcHN9KT0+e1xuXHRcdFx0XHRsZXQge3RlbXBsYXRlLCB0eXBlfT1kZWZhdWx0UHJvcHNcblx0XHRcdFx0aWYoUmVhY3QuaXNWYWxpZEVsZW1lbnQodGVtcGxhdGUpKXtcblx0XHRcdFx0XHRyZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KHRlbXBsYXRlLHtrZXk6dHlwZX0pXG5cdFx0XHRcdH0gZWxzZSBpZih0eXBlb2YodGVtcGxhdGUpPT1cInN0cmluZ1wiKXtcblx0XHRcdFx0XHRyZXR1cm4gPFVSTEZldGNoZXIga2V5PXt0eXBlfSB7Li4uZGVmYXVsdFByb3BzfSB1cmw9e3RlbXBsYXRlfSB0ZW1wbGF0ZT17dW5kZWZpbmVkfS8+XG5cdFx0XHRcdH1cblx0XHRcdH0pXG4gICAgfVxuXG4gICAgcmVuZGVyKCl7XG5cdFx0bGV0IHRlbXBsYXRlcz10aGlzLmdldFN1cHBvcnRlZEZvcm1hdHMoKVxuXHRcdGlmKHRlbXBsYXRlcy5sZW5ndGg9PTApXG5cdFx0XHR0ZW1wbGF0ZXM9PGNlbnRlciBzdHlsZT17e2NvbG9yOlwicmVkXCJ9fT5ubyB0ZW1wbGF0ZXM8L2NlbnRlcj5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXY+XG5cdFx0XHRcdHt0ZW1wbGF0ZXN9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cblxuICAgIGNyZWF0ZSh7dXJsLC4uLnByb3BzfSl7XG5cdFx0ZmV0Y2godXJsKVxuXHRcdFx0LnRoZW4ocmVzPT5yZXMuYmxvYigpKVxuXHRcdFx0LnRoZW4oZGF0YT0+KHtkYXRhLC4uLnByb3BzLG5hbWU6YERvY3VtZW50JHtnZXRBbGwodGhpcy5jb250ZXh0LnN0b3JlLmdldFN0YXRlKCkpLmxlbmd0aCsxfS4ke3Byb3BzLmV4dH1gfSkpXG5cdFx0XHQudGhlbihmaWxlPT5JbnB1dC5wYXJzZShmaWxlKSlcblx0XHRcdC50aGVuKGRvYz0+e1xuXHRcdFx0XHRjb25zdCB7b25DcmVhdGV9PXRoaXMucHJvcHNcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuc3RvcmUuZGlzcGF0Y2goQUNUSU9OLkFERChkb2MscmVkdWNlcikpXG4gICAgICAgICAgICAgICAgb25DcmVhdGUoKVxuXHRcdFx0fSlcbiAgICB9XG5cdFxuXHRnZXRDaGlsZENvbnRleHQoKXtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y3JlYXRlOnRoaXMuY3JlYXRlLmJpbmQodGhpcylcblx0XHR9XG5cdH1cbn1cblxuY2xhc3MgVVJMRmV0Y2hlciBleHRlbmRzIFB1cmVDb21wb25lbnR7XG5cdHN0YXRpYyBjb250ZXh0VHlwZXM9e1xuXHRcdGNyZWF0ZTogUHJvcFR5cGVzLmZ1bmNcblx0fVxuXG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHt0eXBlLC4uLnByb3BzfT10aGlzLnByb3BzXG5cdFx0Y29uc3Qge2NyZWF0ZX09dGhpcy5jb250ZXh0XG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXYgc3R5bGU9e3tkaXNwbGF5OlwiaW5saW5lLWJsb2NrXCJ9fT5cblx0XHRcdFx0PHN2ZyBvbkNsaWNrPXsoKT0+Y3JlYXRlKHsuLi5wcm9wcyx0eXBlfSl9IFxuXHRcdFx0XHRcdHN0eWxlPXt7d2lkdGg6NTAsaGVpZ2h0Ojc1LGJhY2tncm91bmQ6XCJ3aGl0ZVwifX0vPlxuXHRcdFx0XHQ8Y2VudGVyIHN0eWxlPXt7Zm9udFNpemU6XCJzbWFsbGVyXCJ9fT57dHlwZX08L2NlbnRlcj5cblx0XHRcdDwvZGl2PlxuXHRcdClcblx0fVxufVxuIiwiaW1wb3J0IFJlYWN0LCB7UHVyZUNvbXBvbmVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7RW1pdHRlciwgU3RyZWFtfSBmcm9tIFwid2UtZWRpdFwiXG5jb25zdCB7Rm9ybWF0fT1FbWl0dGVyXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIF9fJDEgZXh0ZW5kcyBQdXJlQ29tcG9uZW50e1xuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7ZG9jfT10aGlzLnByb3BzXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkb2MuU3RvcmUgcmVhZG9ubHk9e3RydWV9IHJlbGVhc2U9e2ZhbHNlfT5cblx0XHRcdFx0PEVtaXR0ZXI+XG5cdFx0XHRcdFx0PFN0cmVhbSB0eXBlPVwiYnJvd3NlclwiIHRhcmdldD1cIl9ibGFua1wiPlxuXHRcdFx0XHRcdFx0PEZvcm1hdCB0eXBlPVwicGRmXCIvPlxuXHRcdFx0XHRcdDwvU3RyZWFtPlxuXHRcdFx0XHQ8L0VtaXR0ZXI+XG5cdFx0XHQ8L2RvYy5TdG9yZT5cblx0XHQpXG5cdH1cblx0XG5cdGNvbXBvbmVudERpZE1vdW50KCl7XG5cdFx0dGhpcy5wcm9wcy5vblByaW50KClcblx0fVxufSIsImltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtUb29sYmFyR3JvdXB9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgSWNvblNhdmUgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L3NhdmVcIlxuaW1wb3J0IEljb25SZWZyZXNoIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9yZWZyZXNoXCJcblxuaW1wb3J0IHtBQ1RJT059IGZyb20gXCJ3ZS1lZGl0XCJcblxuaW1wb3J0IFNhdmUgZnJvbSBcIi4vc2F2ZVwiXG5pbXBvcnQgQ2hlY2tJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL2NoZWNrLWljb24tYnV0dG9uXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsZSBleHRlbmRzIENvbXBvbmVudHtcblx0c3RhdGljIGNvbnRleHRUeXBlcz17XG5cdFx0c3RvcmU6IFByb3BUeXBlcy5vYmplY3QsXG5cdH1cblx0c2hvdWxkQ29tcG9uZW50VXBkYXRlKCl7XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cblx0XG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtjaGlsZHJlbn09dGhpcy5wcm9wc1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8VG9vbGJhckdyb3VwPlxuXHRcdFx0XHQ8Q2hlY2tJY29uQnV0dG9uXG5cdFx0XHRcdFx0c3RhdHVzPVwidW5jaGVja2VkXCJcblx0XHRcdFx0XHRoaW50PVwicmVmcmVzaFwiXG5cdFx0XHRcdFx0b25DbGljaz17ZT0+e1xuXHRcdFx0XHRcdFx0dGhpcy5jb250ZXh0LnN0b3JlLmRpc3BhdGNoKEFDVElPTi5SZWZyZXNoKCkpXG5cdFx0XHRcdFx0fX0+XG5cdFx0XHRcdFx0PEljb25SZWZyZXNoLz5cblx0XHRcdFx0PC9DaGVja0ljb25CdXR0b24+XG5cdFx0XHRcdDxDaGVja0ljb25CdXR0b25cblx0XHRcdFx0XHRzdGF0dXM9XCJ1bmNoZWNrZWRcIlxuXHRcdFx0XHRcdGhpbnQ9XCJzYXZlXCJcblx0XHRcdFx0XHRvbkNsaWNrPXtlPT57XG5cdFx0XHRcdFx0XHRTYXZlLnNhdmUodGhpcy5jb250ZXh0LnN0b3JlKSh7fSlcblx0XHRcdFx0XHR9fT5cblx0XHRcdFx0XHQ8SWNvblNhdmUvPlxuXHRcdFx0XHQ8L0NoZWNrSWNvbkJ1dHRvbj5cblx0XHRcdFx0e2NoaWxkcmVufVxuXHRcdFx0PC9Ub29sYmFyR3JvdXA+XG5cdFx0KVxuXHR9XG59XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBTYXZlfSBmcm9tIFwiLi9zYXZlXCJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBPcGVufSBmcm9tIFwiLi9vcGVuXCJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBDcmVhdGV9IGZyb20gXCIuL2NyZWF0ZVwiXG5leHBvcnQge2RlZmF1bHQgYXMgUHJpbnR9IGZyb20gXCIuL3ByaW50XCJcbiIsImltcG9ydCBSZWFjdCx7UHVyZUNvbXBvbmVudCxGcmFnbWVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSAncmVhY3QtcmVkdXgnXG5pbXBvcnQge0ZvbnRNYW5hZ2VyfSBmcm9tIFwid2UtZWRpdC1yZXByZXNlbnRhdGlvbi1wYWdpbmF0aW9uXCJcblxuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KCkoY2xhc3MgX18kMSBleHRlbmRzIFB1cmVDb21wb25lbnR7XG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKVxuICAgICAgICB0aGlzLnN0YXRlPXt9XG4gICAgfVxuXG4gICAgcmVuZGVyKCl7XG4gICAgICAgIHZhciBpbnB1dFxuICAgICAgICBjb25zdCBsb2FkZWQ9Rm9udE1hbmFnZXIubmFtZXNcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICB7bG9hZGVkLmxlbmd0aD4wICYmIDxkaXY+QWxyZWFkeSBMb2FkZWQge2xvYWRlZC5sZW5ndGh9IEZvbnRzPC9kaXY+fVxuICAgICAgICAgICAgICAgIDxzcGFuPnlvdSBjYW4gPC9zcGFuPjxidXR0b24gb25DbGljaz17ZT0+aW5wdXQuY2xpY2soKX0+bG9hZCBtb3JlIGxvY2FsIGZvbnRzPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgcmVmPXthPT5pbnB1dD1hfSBtdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2Rpc3BsYXk6XCJub25lXCJ9fVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ZT0+dGhpcy5sb2FkKGUudGFyZ2V0KX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIClcbiAgICB9XG5cbiAgICBsb2FkKGlucHV0KXtcbiAgICAgICAgRm9udE1hbmFnZXIuZnJvbUJyb3dzZXIoaW5wdXQpXG4gICAgICAgICAgICAudGhlbihlPT50aGlzLnNldFN0YXRlKHtsb2FkZWQ6RGF0ZS5ub3coKX0pKVxuICAgIH1cbn0pXG4iLCJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsRnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgRm9udCBmcm9tIFwiLi9mb250XCJcblxuZXhwb3J0IGRlZmF1bHQgcHJvcHM9PihcbiAgICA8ZGl2IHN0eWxlPXt7d2lkdGg6MzAwfX0+XG4gICAgICAgIDxGb250Lz5cbiAgICA8L2Rpdj5cbilcbiIsImltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgUHVyZUNvbXBvbmVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtjb21wb3NlLG1hcFByb3BzLGdldENvbnRleHQsc2V0RGlzcGxheU5hbWUsfSAgZnJvbSBcInJlY29tcG9zZVwiXG5cbmltcG9ydCB7RHJhd2VyLE1lbnUsIE1lbnVJdGVtLCBBdmF0YXIsUGFwZXJ9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgRGl2aWRlciBmcm9tICdtYXRlcmlhbC11aS9EaXZpZGVyJztcbmltcG9ydCB7eWVsbG93NTAwLCBncmF5MTAwfSBmcm9tICdtYXRlcmlhbC11aS9zdHlsZXMvY29sb3JzJztcblxuaW1wb3J0IEljb25Mb2dvIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2JvcmRlci1jb2xvclwiXG5pbXBvcnQgSWNvbkJhY2sgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2Fycm93LWJhY2tcIlxuXG5pbXBvcnQge1NhdmUsT3BlbixDcmVhdGUsUHJpbnR9IGZyb20gXCIuLi9maWxlXCJcbmltcG9ydCBPcHRpb25zVUkgZnJvbSBcIi4vb3B0aW9uc1wiXG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGFzaGJvYXJkIGV4dGVuZHMgUHVyZUNvbXBvbmVudHtcblx0c3RhdGU9e2FjdGlvbjpudWxsLCBkaXNwbGF5OiBmYWxzZX1cblx0cmVuZGVyKCl7XG5cdFx0Y29uc3Qge2Rpc3BsYXksYWN0aW9ufT10aGlzLnN0YXRlXG5cdFx0Y29uc3QgZG9uZT0oKT0+dGhpcy5zZXRTdGF0ZSh7ZGlzcGxheTpmYWxzZSxhY3Rpb246bnVsbH0pXG5cdFx0Y29uc3Qge2FjdGl2ZSwgekluZGV4LCB3aWR0aD0yNTYsIGNoaWxkcmVuLCBhdmF0YXIsIGNvbW1hbmRzfT10aGlzLnByb3BzXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXYgc3R5bGU9e3tcblx0XHRcdFx0XHR6SW5kZXgsXG5cdFx0XHRcdFx0cG9zaXRpb246XCJmaXhlZFwiLGxlZnQ6MCx0b3A6MCx3aWR0aDpcIjEwMCVcIixcblx0XHRcdFx0XHRoZWlnaHQ6XCIxMDAlXCIsIGRpc3BsYXk6ZGlzcGxheSA/IFwiZmxleFwiIDogXCJub25lXCIsXG5cdFx0XHRcdFx0ZmxleERpcmVjdGlvbjpcInJvd1wiXG5cdFx0XHRcdH19XG5cdFx0XHRcdD5cblx0XHRcdFx0PFBhcGVyIHpEZXB0aD17Mn0gc3R5bGU9e3t3aWR0aCxoZWlnaHQ6XCIxMDAlXCIsYmFja2dyb3VuZENvbG9yOlwid2hpdGVcIn19PlxuXHRcdFx0XHRcdFx0PGNlbnRlciBzdHlsZT17e3pvb206MixtYXJnaW5Ub3A6NX19PlxuXHRcdFx0XHRcdFx0XHQ8QXZhdGFyIFxuXHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s9e2RvbmV9XG5cdFx0XHRcdFx0XHRcdFx0c2l6ZT17MTJ9IFxuXHRcdFx0XHRcdFx0XHRcdHN0eWxlPXt7cG9zaXRpb246XCJhYnNvbHV0ZVwiLGxlZnQ6MTAsdG9wOjEwfX1cblx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0PEljb25CYWNrLz5cblx0XHRcdFx0XHRcdFx0PC9BdmF0YXI+XG5cdFx0XHRcdFx0XHRcdHthdmF0YXIgJiYgUmVhY3QuY2xvbmVFbGVtZW50KGF2YXRhcix7b25DbGljazpkb25lfSkgfHwgXG5cdFx0XHRcdFx0XHRcdFx0PEF2YXRhciBiYWNrZ3JvdW5kQ29sb3I9e2dyYXkxMDB9PlxuXHRcdFx0XHRcdFx0XHRcdFx0PEljb25Mb2dvIGNvbG9yPXt5ZWxsb3c1MDB9Lz5cblx0XHRcdFx0XHRcdFx0XHQ8L0F2YXRhcj5cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0PC9jZW50ZXI+XG5cblx0XHRcdFx0XHRcdDxNZW51IHdpZHRoPXt3aWR0aH0gYXV0b1dpZHRoPXshd2lkdGh9XG5cdFx0XHRcdFx0XHRcdHZhbHVlPXthY3Rpb259XG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkTWVudUl0ZW1TdHlsZT17e2JhY2tncm91bmQ6XCJsaWdodGdyYXlcIixjb2xvcjpcInJlZFwifX1cblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyhlLGFjdGlvbik9Pnt0aGlzLnNldFN0YXRlKHthY3Rpb259KX19XG5cdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRcdFx0cHJpbWFyeVRleHQ9XCJOZXdcIlxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXs8Q3JlYXRlXHRvbkNhbmNlbD17ZG9uZX0gb25DcmVhdGU9e2RvbmV9Lz59XG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRcdFx0cHJpbWFyeVRleHQ9XCJPcGVuXCJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17PE9wZW4gb25DYW5jZWw9e2RvbmV9IG9uTG9hZD17ZG9uZX0vPn1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17IWFjdGl2ZX1cblx0XHRcdFx0XHRcdFx0XHRwcmltYXJ5VGV4dD1cIlNhdmVcIlxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXs8U2F2ZSBvbkNhbmNlbD17ZG9uZX0gb25TYXZlPXtkb25lfS8+fVxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdFx0XHRcdGRpc2FibGVkPXshYWN0aXZlfVxuXHRcdFx0XHRcdFx0XHRcdHByaW1hcnlUZXh0PVwiU2F2ZUFzXCJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17PFNhdmUgb25DYW5jZWw9e2RvbmV9IG9uU2F2ZT17ZG9uZX0vPn1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHQ8RGl2aWRlci8+XG5cblx0XHRcdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9eyFhY3RpdmV9XG5cdFx0XHRcdFx0XHRcdFx0cHJpbWFyeVRleHQ9XCJQcmludFwiXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9ezxQcmludCBkb2M9e2FjdGl2ZX0gb25DYW5uY2VsPXtkb25lfSBvblByaW50PXtkb25lfSAvPn1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXG5cdFx0XHRcdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdFx0XHRcdHByaW1hcnlUZXh0PVwiT3B0aW9uc1wiXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9ezxPcHRpb25zVUkvPn1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXG5cdFx0XHRcdFx0XHRcdHtSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sZnVuY3Rpb24oYSl7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHt2YWx1ZX09YS5wcm9wc1xuXHRcdFx0XHRcdFx0XHRcdGlmKCF2YWx1ZSl7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGEse29uQ2xpY2s6ZG9uZX0pXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhXG5cdFx0XHRcdFx0XHRcdH0pfVxuXHRcdFx0XHRcdFx0PC9NZW51PlxuXHRcdFx0XHQ8L1BhcGVyPlxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXt7ZmxleDpcIjEgMTAwJVwiLCBiYWNrZ3JvdW5kQ29sb3I6XCJsaWdodGdyYXlcIixkaXNwbGF5OlwiZmxleFwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixwYWRkaW5nOjEwfX0+XG5cdFx0XHRcdFx0e2FjdGlvbiAmJiBSZWFjdC5jbG9uZUVsZW1lbnQoYWN0aW9uLCB7ZG9uZX0pIHx8IDxkaXYgb25DbGljaz17ZG9uZX0gZmxleD1cIjEgMTAwJVwiIHN0eWxlPXt7aGVpZ2h0OlwiMTAwJVwifX0vPn1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQpXG5cdH1cbn1cbiIsImltcG9ydCBSZWFjdCx7UHVyZUNvbXBvbmVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtjb25uZWN0fSBmcm9tIFwicmVhY3QtcmVkdXhcIlxuaW1wb3J0IHtjb21wb3NlLHNldERpc3BsYXlOYW1lLCBnZXRDb250ZXh0LCBtYXBQcm9wc30gZnJvbSBcInJlY29tcG9zZVwiXG5cbmltcG9ydCB7SWNvbkJ1dHRvbixEcmF3ZXIsTWVudSxNZW51SXRlbSxQb3BvdmVyLEZsYXRCdXR0b259IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgSWNvbkNsb3NlIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9jbG9zZVwiXG5pbXBvcnQgSWNvbkZpbGVzIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9hcnJvdy1kcm9wLWRvd25cIlxuaW1wb3J0IEljb25NZW51IGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9tZW51XCJcblxuaW1wb3J0IERhc2hib2FyZCBmcm9tIFwiLi4vZGFzaGJvYXJkXCJcblxuaW1wb3J0IHtBQ1RJT04sZ2V0QWxsfSBmcm9tIFwid2UtZWRpdFwiXG5cbmltcG9ydCBDb21ib0JveCBmcm9tIFwiLi4vY29tcG9uZW50cy9jb21iby1ib3hcIlxuaW1wb3J0IFNpemVJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL3NpemUtaWNvbi1idXR0b25cIlxuXG5leHBvcnQgY2xhc3MgQmFyIGV4dGVuZHMgUHVyZUNvbXBvbmVudHtcbiAgICBzdGF0ZT17c2hvd0RyYXdlcjpmYWxzZX1cbiAgICByZW5kZXIoKXtcbiAgICAgICAgY29uc3Qge3RpdGxlLCBjaGlsZHJlbiwgYWN0aXZlLCBkb2NzLCBzZXRBY3RpdmUsIGNsb3NlLCBoZWlnaHQ9MjAsIHN0eWxlPXt9LCBvbk1lbnV9PXRoaXMucHJvcHNcbiAgICAgICAgbGV0IGNsb3NlQnV0dG9uPW51bGxcblxuXHRcdGlmKGRvY3MubGVuZ3RoPjApe1xuXHRcdFx0Y2xvc2VCdXR0b249KFxuXHRcdFx0XHQ8U2l6ZUljb25CdXR0b24gc2l6ZT17aGVpZ2h0fSBwYWRkaW5nPXtoZWlnaHQvNH0gb25DbGljaz17Y2xvc2V9PlxuXHRcdFx0XHRcdDxJY29uQ2xvc2UvPlxuXHRcdFx0XHQ8L1NpemVJY29uQnV0dG9uPlxuXHRcdFx0KVxuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IHN0eWxlPXt7XG5cdFx0XHRcdFx0cG9zaXRpb246XCJyZWxhdGl2ZVwiLFxuXHRcdFx0XHRcdGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLFxuXHRcdFx0XHRcdGhlaWdodCwgXG5cdFx0XHRcdFx0d2hpdGVTcGFjZTpcIm5vd3JhcFwiLFxuXHRcdFx0XHRcdGRpc3BsYXk6XCJmbGV4XCIsIGZsZXhEaXJlY3Rpb246XCJyb3dcIiwgXG5cdFx0XHRcdFx0Li4uc3R5bGV9fT5cblx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHQ8U2l6ZUljb25CdXR0b25cblx0XHRcdFx0XHRcdHNpemU9e2hlaWdodH1cblx0XHRcdFx0XHRcdG9uQ2xpY2s9e29uTWVudX1cblx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdDxJY29uTWVudS8+XG5cdFx0XHRcdFx0PC9TaXplSWNvbkJ1dHRvbj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgc3R5bGU9e3tsaW5lSGVpZ2h0OmAke2hlaWdodH1weGAsZm9udFNpemU6aGVpZ2h0LzJ9fT57dGl0bGV8fFwid2UtZWRpdFwifTwvZGl2PlxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXt7ZmxleDpcIjEgMTAwJVwiLHBhZGRpbmdMZWZ0OjIwfX0+XG5cdFx0XHRcdFx0PENvbWJvQm94XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17YWN0aXZlPT1udWxsfVxuXHRcdFx0XHRcdFx0dmFsdWU9e2FjdGl2ZSA/IGFjdGl2ZS5pZCA6IFwiXCJ9XG5cdFx0XHRcdFx0XHRkYXRhU291cmNlPXtkb2NzLm1hcCgoe2RvYzp7aWQ6dmFsdWUsbmFtZTp0ZXh0fX0pPT4oe3RleHQsdmFsdWV9KSl9XG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17c2V0QWN0aXZlfVxuXHRcdFx0XHRcdFx0dW5kZXJsaW5lU2hvdz17ZmFsc2V9XG5cdFx0XHRcdFx0XHRzdHlsZT17e3dpZHRoOjEwMCxoZWlnaHR9fVxuXHRcdFx0XHRcdFx0dGV4dEZpZWxkU3R5bGU9e3toZWlnaHQsbGluZUhlaWdodDpgJHtoZWlnaHR9cHhgLGZvbnRTaXplOmhlaWdodC8yfX1cblx0XHRcdFx0XHRcdGljb249ezxzcGFuLz59XG5cdFx0XHRcdFx0XHQvPlx0XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXt7bGluZUhlaWdodDpgJHtoZWlnaHR9cHhgLGZvbnRTaXplOmhlaWdodC8yfX0+XG5cdFx0XHRcdFx0e2NoaWxkcmVufVxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdiBzdHlsZT17e3dpZHRoOjUwfX0+XG5cdFx0XHRcdFx0e2Nsb3NlQnV0dG9ufVxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuICAgICAgICApXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxuICAgIHNldERpc3BsYXlOYW1lKFwiVGl0bGVCYXJcIiksXG4gICAgZ2V0Q29udGV4dCh7XG4gICAgICAgIHN0b3JlOlByb3BUeXBlcy5vYmplY3QsXG5cdFx0bXVpVGhlbWU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgfSksXG4gICAgbWFwUHJvcHMoKHsgc3RvcmU6e2Rpc3BhdGNofSwgIG11aVRoZW1lOnt0aXRsZUJhcn0sIC4uLm90aGVyc30pPT4oe1xuXHRcdC4uLm90aGVycyxcbiAgICAgICAgc2V0QWN0aXZlKGlkKXtcbiAgICAgICAgICAgIGRpc3BhdGNoKEFDVElPTi5BQ1RJVkUoaWQpKVxuICAgICAgICB9LFxuICAgICAgICBjbG9zZSgpe1xuICAgICAgICAgICAgZGlzcGF0Y2goQUNUSU9OLkNMT1NFKCkpXG4gICAgICAgIH0sXG5cdFx0aGVpZ2h0OnRpdGxlQmFyID8gdGl0bGVCYXIuaGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgIH0pKSxcbiAgICBjb25uZWN0KHN0YXRlPT57XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkb2NzOmdldEFsbChzdGF0ZSlcbiAgICAgICAgfVxuICAgIH0pXG4pKEJhcilcbiIsImltcG9ydCBSZWFjdCwge1B1cmVDb21wb25lbnQsIENoaWxkcmVufSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5cbmltcG9ydCB7Y29ubmVjdH0gZnJvbSBcInJlYWN0LXJlZHV4XCJcbmltcG9ydCB7Y29tcG9zZSxzZXREaXNwbGF5TmFtZX0gIGZyb20gXCJyZWNvbXBvc2VcIlxuaW1wb3J0IG1pbmltYXRjaCBmcm9tIFwibWluaW1hdGNoXCJcblxuaW1wb3J0IG1lbW9pemUgZnJvbSBcIm1lbW9pemUtb25lXCJcblxuaW1wb3J0IHtTbmFja2Jhcn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcblxuaW1wb3J0IE11aVRoZW1lUHJvdmlkZXIgZnJvbSAnbWF0ZXJpYWwtdWkvc3R5bGVzL011aVRoZW1lUHJvdmlkZXInXG5pbXBvcnQgZ2V0TXVpVGhlbWUgZnJvbSAnbWF0ZXJpYWwtdWkvc3R5bGVzL2dldE11aVRoZW1lJ1xuaW1wb3J0IFRpdGxlQmFyIGZyb20gXCIuL3RpdGxlLWJhclwiXG5pbXBvcnQgRGFzaGJvYXJkIGZyb20gXCIuL2Rhc2hib2FyZFwiXG5pbXBvcnQge2dldEFjdGl2ZSxJbnB1dH0gZnJvbSBcIndlLWVkaXRcIlxuaW1wb3J0IHtncmV5NTAgYXMgQkFDS0dST1VORH0gZnJvbSBcIm1hdGVyaWFsLXVpL3N0eWxlcy9jb2xvcnNcIlxuXG5pbXBvcnQgXCIuL3N0eWxlLmxlc3NcIlxuXG5jb25zdCBzdHlsZXM9e1xuXHRyb290Ontcblx0XHRwb3NpdGlvbjpcImFic29sdXRlXCIsXG5cdFx0d2lkdGg6XCIxMDAlXCIsXG5cdFx0aGVpZ2h0OlwiMTAwJVwiLFxuXHRcdGRpc3BsYXk6XCJmbGV4XCIsXG5cdFx0ZmxleERpcmVjdGlvbjpcImNvbHVtblwiLFxuXHRcdGJhY2tncm91bmQ6QkFDS0dST1VORCxcblx0XHRvdmVyZmxvdzpcImhpZGRlblwiLFxuXHR9LFxuXHR0aGVtZTp7XG5cdFx0dGFiczp7XG5cdFx0XHRiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwiLFxuXHRcdFx0dGV4dENvbG9yOiBcImJsYWNrXCIsXG5cdFx0XHRzZWxlY3RlZFRleHRDb2xvcjogXCJyZWRcIixcblx0XHR9LFxuXHRcdHRvb2xiYXI6e1xuXHRcdFx0YmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG5cdFx0fVxuXHR9XG59XG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxuXHRzZXREaXNwbGF5TmFtZShcIldlLUVkaXQtVUlcIiksXG5cdGNvbm5lY3Qoc3RhdGU9Pih7YWN0aXZlOihnZXRBY3RpdmUoc3RhdGUpfHx7fSkuZG9jfSkpLFxuKShjbGFzcyBfXyQxIGV4dGVuZHMgUHVyZUNvbXBvbmVudHtcblx0c3RhdGljIHByb3BUeXBlcz17XG5cdFx0dGl0bGVCYXI6UHJvcFR5cGVzLm5vZGUsXG5cdFx0ZGFzaGJvYXJkOiBQcm9wVHlwZXMubm9kZSxcblx0fVxuXG5cdHN0YXRpYyBkZWZhdWx0UHJvcHM9e1xuXHRcdHRpdGxlQmFyOjxUaXRsZUJhci8+LFxuXHRcdGRhc2hib2FyZDogPERhc2hib2FyZC8+XG5cdH1cblxuXHRzdGF0ZT17fVxuXG5cdHRoZW1lPW1lbW9pemUoYWN0aXZlPT57XG5cdFx0Y29uc3QgdWlUaGVtZT1nZXRNdWlUaGVtZShzdHlsZXMudGhlbWUsdGhpcy5wcm9wcy50aGVtZSlcblx0XHRpZihhY3RpdmUgJiYgYWN0aXZlLnByb3BzLnRoZW1lKXtcblx0XHRcdHJldHVybiBnZXRNdWlUaGVtZSh1aVRoZW1lLGFjdGl2ZS5wcm9wcy50aGVtZSlcblx0XHR9XG5cdFx0cmV0dXJuIHVpVGhlbWVcblx0fSlcblxuXHRjb21wb25lbnREaWRDYXRjaChlcnJvciwgaW5mbyl7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7ZXJyb3I6ZXJyb3IubWVzc2FnZX0pXG5cdH1cblxuXHRnZXRBY3RpdmVXb3Jrc3BhY2U9bWVtb2l6ZSgoY2hpbGRyZW4sYWN0aXZlKT0+e1xuXHRcdHJldHVybiBDaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKS5maW5kKCh7cHJvcHM6e2FjY2VwdH19KT0+e1xuXHRcdFx0XHRpZih0eXBlb2YoYWNjZXB0KT09XCJzdHJpbmdcIil7XG5cdFx0XHRcdFx0bGV0IGdsb2I9YWNjZXB0XG5cdFx0XHRcdFx0YWNjZXB0PWE9Pm1pbmltYXRjaChhLm5hbWV8fFwiXCIsZ2xvYilcblx0XHRcdFx0fWVsc2UgaWYoYWNjZXB0XG5cdFx0XHRcdFx0JiYgYWNjZXB0LnByb3RvdHlwZVxuXHRcdFx0XHRcdCYmIGFjY2VwdC5wcm90b3R5cGUgaW5zdGFuY2VvZiBJbnB1dC5WaWV3YWJsZSl7XG5cdFx0XHRcdFx0bGV0IElucHV0VHlwZT1hY2NlcHRcblx0XHRcdFx0XHRhY2NlcHQ9YT0+YS5pc1R5cGVPZihJbnB1dFR5cGUpXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZih0eXBlb2YoYWNjZXB0KT09XCJmdW5jdGlvblwiKVxuXHRcdFx0XHRcdHJldHVybiBhY2NlcHQoYWN0aXZlKVxuXG5cdFx0XHRcdHJldHVybiAhIWFjY2VwdFxuXHRcdFx0fSlcblx0fSlcblxuXHRnZXROb25Xb3Jrc3BhY2VzPW1lbW9pemUoKGNoaWxkcmVuKT0+e1xuXHRcdGxldCBhPUNoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pLmZpbHRlcigoe3Byb3BzOnthY2NlcHR9fSk9PiFhY2NlcHQpXG5cdFx0aWYoYS5sZW5ndGgpXG5cdFx0XHRyZXR1cm4gYVxuXHRcdHJldHVybiBudWxsXG5cdH0pXG5cblx0cmVqZWN0Q29udGV4dE1lbnUoZSl7XG5cdFx0Ly9lLnByZXZlbnREZWZhdWx0KClcblx0XHQvL3JldHVybiBmYWxzZVxuXHR9XG5cblx0cmVuZGVyKCl7XG5cdFx0bGV0IHtjaGlsZHJlbixhY3RpdmUsIHRpdGxlQmFyLCBkYXNoYm9hcmQsIHN0eWxlLCBkaXNwYXRjaCwgdGl0bGVCYXJQcm9wcywgLi4ub3RoZXJzfT10aGlzLnByb3BzXG5cdFx0bGV0IGFjdGl2ZVdvcmtzcGFjZT1udWxsXG5cdFx0bGV0IG5vbldvcmtzcGFjZXM9dGhpcy5nZXROb25Xb3Jrc3BhY2VzKGNoaWxkcmVuKVxuXG5cdFx0aWYoYWN0aXZlKXtcblx0XHRcdGFjdGl2ZVdvcmtzcGFjZT10aGlzLmdldEFjdGl2ZVdvcmtzcGFjZShjaGlsZHJlbixhY3RpdmUpXG5cblx0XHRcdGlmKGFjdGl2ZVdvcmtzcGFjZSl7XG5cdFx0XHRcdGFjdGl2ZVdvcmtzcGFjZT1SZWFjdC5jbG9uZUVsZW1lbnQoYWN0aXZlV29ya3NwYWNlLCB7ZG9jOmFjdGl2ZSwgLi4ub3RoZXJzLCAuLi5hY3RpdmVXb3Jrc3BhY2UucHJvcHN9KVxuXHRcdFx0fWVsc2UgaWYoIW5vbldvcmtzcGFjZXMpe1xuXHRcdFx0XHRhY3RpdmVXb3Jrc3BhY2U9KDxkaXY+bm8gZWRpdG9yIGZvciB0aGlzIGRvY3VtZW50PC9kaXY+KVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IHtlcnJvcn09dGhpcy5zdGF0ZVxuXHRcdGNvbnN0IHRoZW1lPXRoaXMudGhlbWUoYWN0aXZlV29ya3NwYWNlKVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxNdWlUaGVtZVByb3ZpZGVyIG11aVRoZW1lPXt0aGVtZX0+XG5cdFx0XHRcdDxkaXYgc3R5bGU9e3suLi5zdHlsZXMucm9vdCwuLi5zdHlsZX19IG9uQ29udGV4dE1lbnU9e3RoaXMucmVqZWN0Q29udGV4dE1lbnV9PlxuXHRcdFx0XHRcdHt0aXRsZUJhciAmJiBSZWFjdC5jbG9uZUVsZW1lbnQodGl0bGVCYXIse1xuXHRcdFx0XHRcdFx0Li4udGl0bGVCYXJQcm9wcyxcblx0XHRcdFx0XHRcdGFjdGl2ZSxcblx0XHRcdFx0XHRcdG9uTWVudTphPT50aGlzLnJlZnMuZGFzaGJvYXJkLnNldFN0YXRlKHtkaXNwbGF5OnRydWV9KVxuXHRcdFx0XHRcdH0pfVxuXG5cdFx0XHRcdFx0e2Rhc2hib2FyZCAmJiBSZWFjdC5jbG9uZUVsZW1lbnQoZGFzaGJvYXJkLHtcblx0XHRcdFx0XHRcdHJlZjpcImRhc2hib2FyZFwiLFxuXHRcdFx0XHRcdFx0YWN0aXZlLFxuXHRcdFx0XHRcdFx0ZGlzcGF0Y2gsXG5cdFx0XHRcdFx0XHR6SW5kZXg6dGhlbWUuekluZGV4LnBvcG92ZXJcblx0XHRcdFx0XHR9KX1cblxuXHRcdFx0XHRcdHthY3RpdmVXb3Jrc3BhY2V9XG5cblx0XHRcdFx0XHR7bm9uV29ya3NwYWNlcyAmJiBub25Xb3Jrc3BhY2VzLm1hcChhPT5SZWFjdC5jbG9uZUVsZW1lbnQoYSx7aGFzQWN0aXZlV29ya3NwYWNlOiEhYWN0aXZlV29ya3NwYWNlfSkpfVxuXG5cdFx0XHRcdFx0PFNuYWNrYmFyXG5cdFx0XHRcdFx0XHRvcGVuPXshIWVycm9yfVxuXHRcdFx0XHRcdFx0bWVzc2FnZT17ZXJyb3J8fFwiXCJ9XG5cdFx0XHRcdFx0XHRhdXRvSGlkZUR1cmF0aW9uPXs0MDAwfVxuXHRcdFx0XHRcdFx0b25SZXF1ZXN0Q2xvc2U9eygpPT50aGlzLnNldFN0YXRlKHtlcnJvcjp1bmRlZmluZWR9KX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9NdWlUaGVtZVByb3ZpZGVyPlxuXHRcdClcblx0fVxufSlcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQge2NvbXBvc2UsIGdldENvbnRleHQsIG1hcFByb3BzLHNldERpc3BsYXlOYW1lLCBvbmx5VXBkYXRlRm9yS2V5c30gZnJvbSBcInJlY29tcG9zZVwiXG5pbXBvcnQge0ZsYXRCdXR0b24sIFNsaWRlcn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcbmltcG9ydCB7Ymx1ZTgwMCwgYmx1ZTkwMH0gZnJvbSBcIm1hdGVyaWFsLXVpL3N0eWxlcy9jb2xvcnNcIlxuaW1wb3J0IFNpemVJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL3NpemUtaWNvbi1idXR0b25cIlxuaW1wb3J0IHtjb25uZWN0LCB3aGVuU2VsZWN0aW9uQ2hhbmdlLGdldFN0YXRpc3RpY3N9IGZyb20gXCJ3ZS1lZGl0XCJcbmltcG9ydCBBQ1RJT04se2dldE9mZmljZX0gZnJvbSBcIi4uL3N0YXRlL2FjdGlvblwiXG5cbmNvbnN0IEJ1dHRvblN0eWxlPXtcblx0YmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsXG5cdGNvbG9yOlwid2hpdGVcIixcblx0Zm9udFNpemU6IDgsXG59XG5cbmNvbnN0IFJvb3RTdHlsZT17XG5cdGJhY2tncm91bmRDb2xvcjpibHVlODAwLFxuXHRjb2xvcjpcIndoaXRlXCIsXG5cdHdpZHRoOlwiMTAwJVwiLFxuXHRkaXNwbGF5OlwiZmxleFwiLFxuXHRmbGV4RGlyZWN0aW9uOlwicm93XCJcbn1cblxuY29uc3QgQ29tcGFjdEJ1dHRvblN0eWxlPXtcblx0Li4uQnV0dG9uU3R5bGUsXG5cdG1pbldpZHRoOlwiYXV0b1wiLFxufVxuXG5cbmNvbnN0IFN0YXR1cz1jb21wb3NlKFxuXHRzZXREaXNwbGF5TmFtZShcIlN0YXR1c0JhclwiKSxcblx0Z2V0Q29udGV4dCh7XG5cdFx0bXVpVGhlbWU6IFByb3BUeXBlcy5vYmplY3QsXG5cdH0pLFxuXHRtYXBQcm9wcygoe211aVRoZW1lLGNoYW5uZWwsc2NhbGUsc2V0U2NhbGUsc3R5bGV9KT0+e1xuXHRcdHJldHVybiB7XG5cdFx0XHRjaGFubmVsLHNjYWxlLHN0eWxlLFxuXHRcdFx0aGVpZ2h0Om11aVRoZW1lLmJ1dHRvbi5oZWlnaHRcblx0XHR9XG5cdH0pLFxuXHRvbmx5VXBkYXRlRm9yS2V5cyhbJ2hlaWdodCcsJ2NoYW5uZWwnXSlcbikoKHtoZWlnaHQsIGNoYW5uZWwsIHN0eWxlfSk9Pihcblx0PGRpdiBzdHlsZT17ey4uLlJvb3RTdHlsZSxoZWlnaHQsLi4uc3R5bGV9fT5cblx0XHQ8UGFnZS8+XG5cdFx0PFdvcmRzLz5cblx0XHQ8ZGl2IHN0eWxlPXt7ZmxleDpcIjEgMTAwJVwifX0vPlxuXHRcdHtjaGFubmVsLml0ZW1zLmxlbmd0aDwyID8gbnVsbCA6IDxDaGFubmVsIGhlaWdodD17aGVpZ2h0fSB7Li4uY2hhbm5lbH0vPn1cblx0XHQ8U2NhbGUvPlxuXHQ8L2Rpdj5cbikpXG5cbmNvbnN0IFBhZ2U9Y29tcG9zZShcblx0d2hlblNlbGVjdGlvbkNoYW5nZSgoe3NlbGVjdGlvbn0sc3RhdGUpPT57XG5cdFx0Y29uc3Qge3BhZ2VzOnRvdGFsPTAsYWxsQ29tcG9zZWR9PWdldFN0YXRpc3RpY3Moc3RhdGUpXG5cdFx0Y29uc3Qgc3RhdHVzPXt0b3RhbCxhbGxDb21wb3NlZH1cblx0XHRpZihzZWxlY3Rpb24pe1xuXHRcdFx0bGV0IHByb3BzPXNlbGVjdGlvbi5wcm9wcyhcInBhZ2VcIixmYWxzZSlcblx0XHRcdGlmKHByb3BzKXtcblx0XHRcdFx0c3RhdHVzLmN1cnJlbnQ9cHJvcHMucGFnZVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBzdGF0dXNcblx0fSlcbikoKHtjdXJyZW50PTAsdG90YWw9MCxhbGxDb21wb3NlZH0pPT4oXG5cdDxGbGF0QnV0dG9uIHN0eWxlPXtCdXR0b25TdHlsZX0+XG5cdFx0UEFHRSB7Y3VycmVudCsxfSBPRiB7dG90YWx9eyFhbGxDb21wb3NlZCA/IFwiLi5cIiA6IFwiXCJ9XG5cdDwvRmxhdEJ1dHRvbj5cbikpXG5cbmNvbnN0IFdvcmRzPWNvbm5lY3Qoc3RhdGU9PmdldFN0YXRpc3RpY3Moc3RhdGUpKSgoe3dvcmRzPTAsYWxsQ29tcG9zZWR9KT0+KFxuXHQ8RmxhdEJ1dHRvbiBzdHlsZT17QnV0dG9uU3R5bGV9PlxuXHRcdHtgJHt3b3Jkc30ke2FsbENvbXBvc2VkPycnOicuLid9YH0gV09SRFNcblx0PC9GbGF0QnV0dG9uPlxuKSlcblxuXG5jb25zdCBTY2FsZT1jb25uZWN0KHN0YXRlPT4oe2N1cnJlbnQ6Z2V0T2ZmaWNlKHN0YXRlKS5zY2FsZX0pKSgoe1xuXHRjdXJyZW50PTEwMCxtYXg9MjAwLG1pbj0xMCxzdGVwPTEwLGRpc3BhdGNoLFxuXHRvbkNoYW5nZT1zY2FsZT0+ZGlzcGF0Y2goQUNUSU9OLnNjYWxlKHNjYWxlKSlcblx0fSk9Pihcblx0PGRpdiBzdHlsZT17e2Rpc3BsYXk6XCJmbGV4XCJ9fT5cblx0XHQ8RmxhdEJ1dHRvbiBsYWJlbD1cIi1cIiBvbkNsaWNrPXsoKT0+b25DaGFuZ2UoTWF0aC5tYXgoY3VycmVudC1zdGVwLG1pbikpfVxuXHRcdFx0c3R5bGU9e3suLi5Db21wYWN0QnV0dG9uU3R5bGV9fVxuXHRcdFx0bGFiZWxTdHlsZT17e2ZvbnRTaXplOjIwLCBmb250V2VpZ2h0OjcwMCxwYWRkaW5nUmlnaHQ6NCxwYWRkaW5nTGVmdDo0fX0vPlxuXHRcdDxTbGlkZXIgc3R5bGU9e3t3aWR0aDoxMDAsIGRpc3BsYXk6XCJpbmxpbmUtYmxvY2tcIn19XG5cdFx0XHRzbGlkZXJTdHlsZT17e3RvcDotMTN9fVxuXHRcdFx0c3RlcD17c3RlcH1cblx0XHRcdG9uQ2hhbmdlPXsoZSxuZXdWYWx1ZSk9Pm9uQ2hhbmdlKG5ld1ZhbHVlKX1cblx0XHRcdHZhbHVlPXtjdXJyZW50fSBtaW49e21pbn0gbWF4PXttYXh9XG5cdFx0XHQvPlxuXHRcdDxGbGF0QnV0dG9uIGxhYmVsPVwiK1wiIG9uQ2xpY2s9eygpPT5vbkNoYW5nZShNYXRoLm1pbihjdXJyZW50K3N0ZXAsbWF4KSl9XG5cdFx0XHRzdHlsZT17ey4uLkNvbXBhY3RCdXR0b25TdHlsZX19XG5cdFx0XHRsYWJlbFN0eWxlPXt7Zm9udFNpemU6MTgsIGZvbnRXZWlnaHQ6NzAwLHBhZGRpbmdSaWdodDo0LHBhZGRpbmdMZWZ0OjR9fS8+XG5cdFx0PEZsYXRCdXR0b24gbGFiZWw9e2Ake2N1cnJlbnR9JWB9XG5cdFx0XHRzdHlsZT17ey4uLkNvbXBhY3RCdXR0b25TdHlsZX19XG5cdFx0XHRsYWJlbFN0eWxlPXt7Zm9udFNpemU6QnV0dG9uU3R5bGUuZm9udFNpemV9fVxuXHRcdFx0Lz5cblx0PC9kaXY+XG4pKVxuXG5jb25zdCBDaGFubmVsPSh7aXRlbXMsIGN1cnJlbnQsIG9uQ2hhbmdlLCBoZWlnaHQ6c2l6ZX0pPT4oXG5cdDxkaXYgc3R5bGU9e3tkaXNwbGF5OlwiZmxleFwiLCBvcGFjaXR5OjAuNH19PlxuXHRcdHtpdGVtcy5tYXAoKHtjaGFubmVsLCBpY29uLCBzdHlsZT17fX0pPT57XG5cdFx0XHRpZihjaGFubmVsPT1jdXJyZW50KXtcblx0XHRcdFx0c3R5bGUuYmFja2dyb3VuZD1ibHVlOTAwXG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxTaXplSWNvbkJ1dHRvbiBrZXk9e2NoYW5uZWx9XG5cdFx0XHRcdFx0c2l6ZT17c2l6ZX1cblx0XHRcdFx0XHRwYWRkaW5nPXtzaXplLzR9XG5cdFx0XHRcdFx0c3R5bGU9e3N0eWxlfVxuXHRcdFx0XHRcdHRvb2x0aXA9e2Ake2NoYW5uZWx9IG1vZGVgfVxuXHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcC1jZW50ZXJcIlxuXHRcdFx0XHRcdG9uQ2xpY2s9eygpPT5vbkNoYW5nZShjaGFubmVsKX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0e2ljb259XG5cdFx0XHRcdDwvU2l6ZUljb25CdXR0b24+XG5cdFx0XHQpXG5cdFx0fSl9XG5cdDwvZGl2PlxuKVxuXG5leHBvcnQgZGVmYXVsdCBTdGF0dXNcbiIsImltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBNZW51IGZyb20gJ21hdGVyaWFsLXVpL01lbnUnXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwibWF0ZXJpYWwtdWkvUG9wb3ZlclwiXG5pbXBvcnQgU2l6ZUljb25CdXR0b24gZnJvbSBcIi4uL2NvbXBvbmVudHMvc2l6ZS1pY29uLWJ1dHRvblwiXG5pbXBvcnQgSWNvbk1vcmUgZnJvbSAnbWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vYXJyb3ctZHJvcC1kb3duJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcm9wZG93bkJ1dHRvbiBleHRlbmRzIENvbXBvbmVudHtcblx0c3RhdGU9e29wZW46ZmFsc2V9XG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtvcGVuLGFuY2hvcn09dGhpcy5zdGF0ZVxuXHRcdGNvbnN0IHRvZ2dsZT10aGlzLnRvZ2dsZS5iaW5kKHRoaXMpXG5cdFx0Y29uc3Qge2ljb24sIFxuXHRcdFx0Y2hpbGRyZW4sIGxhYmVsU3R5bGU9e2ZvbnRTaXplOlwieHgtc21hbGxcIn0sXG5cdFx0XHRzdGF0dXMsIG9uQ2xpY2s9dG9nZ2xlLCAuLi5wcm9wc309dGhpcy5wcm9wc1xuXHRcdFxuXHRcdGxldCBtZW51cz1udWxsXG5cdFx0aWYob3Blbil7XG5cdFx0XHRtZW51cz0oXG5cdFx0XHRcdDxQb3BvdmVyIFxuXHRcdFx0XHRcdG9wZW49e3RydWV9IFxuXHRcdFx0XHRcdGFuY2hvckVsPXthbmNob3J9XG5cdFx0XHRcdFx0b25SZXF1ZXN0Q2xvc2U9e2U9PnRoaXMuc2V0U3RhdGUoe29wZW46ZmFsc2V9KX0+XG5cdFx0XHRcdFx0PE1lbnUgb25JdGVtVG91Y2hUYXA9e2U9PnRoaXMuc2V0U3RhdGUoe29wZW46ZmFsc2V9KX0+XG5cdFx0XHRcdFx0XHR7Y2hpbGRyZW59XG5cdFx0XHRcdFx0PC9NZW51PlxuXHRcdFx0XHQ8L1BvcG92ZXI+XG5cdFx0XHQpXG5cdFx0fVxuXHRcdHJldHVybiAoXG5cdFx0XHQ8c3BhbiBzdHlsZT17e3doaXRlU3BhY2U6XCJub3dyYXBcIn19PlxuXHRcdFx0XHQ8U2l6ZUljb25CdXR0b24gb25DbGljaz17b25DbGlja30gey4uLnByb3BzfSBzdGF0dXM9e3N0YXR1c30+XG5cdFx0XHRcdFx0e2ljb259XG5cdFx0XHRcdDwvU2l6ZUljb25CdXR0b24+XG5cdFx0XHRcdHtmYWxzZSAmJiAoPHNwYW4gc3R5bGU9e2xhYmVsU3R5bGV9IG9uQ2xpY2s9e29uQ2xpY2t9PntsYWJlbH08L3NwYW4+KX1cblx0XHRcdFx0PEljb25Nb3JlIHN0eWxlPXt7aGVpZ2h0OjI0LHdpZHRoOjZ9fSB2aWV3Qm94PVwiNiAtMTIgMTggMzZcIiBvbkNsaWNrPXt0b2dnbGV9Lz5cblx0XHRcdFx0e21lbnVzfVxuXHRcdFx0PC9zcGFuPlxuXHRcdClcblx0fVxuXHRcblx0dG9nZ2xlKGUpe1xuXHRcdHRoaXMuc2V0U3RhdGUoe29wZW46IXRoaXMuc3RhdGUub3BlbiwgYW5jaG9yOmUuY3VycmVudFRhcmdldC5wYXJlbnROb2RlfSlcblx0fVxufSIsImltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7RmxhdEJ1dHRvbixGb250SWNvbn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcblxuaW1wb3J0IEljb25Db2xvciBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2ltYWdlL2NvbG9yLWxlbnNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2xvclNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB0aXRsZVN0eWxlPXtmb250V2VpZ2h0OjcwMCwgbWFyZ2luVG9wOjR9XG5cdFx0Y29uc3Qge29uQ2hhbmdlfT10aGlzLnByb3BzXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXYgc3R5bGU9e3t3aWR0aDoxNTAsIGZvbnRTaXplOlwic21hbGxlclwifX0+XG5cdFx0XHRcdDxTcGVjaWFsQ29sb3IgY29sb3I9XCJjdXJyZW50Q29sb3JcIiBsYWJlbD1cIkF1dG9tYXRpY1wiIG9uU2VsZWN0PXtvbkNoYW5nZX0vPlxuXHRcdFx0XHRcblx0XHRcdFx0PGRpdiBzdHlsZT17dGl0bGVTdHlsZX0+VGhlbWUgQ29sb3JzPC9kaXY+XHRcblx0XHRcdFx0PFRoZW1lQ29sb3JzIG9uU2VsZWN0PXtvbkNoYW5nZX0vPlxuXHRcdFx0XHRcblx0XHRcdFx0PGRpdiBzdHlsZT17dGl0bGVTdHlsZX0+U3RhbmRhcmQgQ29sb3JzPC9kaXY+XHRcblx0XHRcdFx0PFN0YW5kYXJkQ29sb3JzIG9uU2VsZWN0PXtvbkNoYW5nZX0vPlxuXHRcdFx0XHRcblx0XHRcdFx0PFNwZWNpYWxDb2xvciBjb2xvcj1cIlwiIGxhYmVsPVwiTm8gQ29sb3JcIiBvblNlbGVjdD17b25DaGFuZ2V9Lz5cblx0XHRcdFx0XG5cdFx0XHRcdDxkaXYgc3R5bGU9e3ttYXJnaW5Ub3A6NH19PlxuXHRcdFx0XHRcdDxGbGF0QnV0dG9uIFxuXHRcdFx0XHRcdFx0c3R5bGU9e3t0ZXh0QWxpZ246XCJsZWZ0XCJ9fVxuXHRcdFx0XHRcdFx0bGFiZWw9XCJNb3JlIENvbG9ycy4uLlwiXG5cdFx0XHRcdFx0XHRpY29uPXs8SWNvbkNvbG9yLz59Lz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQpXG5cdH1cbn1cblxuY29uc3QgQ29sb3JCbG9jaz0oe2NvbG9yLHNpemU9MTIsLi4ucHJvcHN9KT0+KFxuXHQ8c3BhbiB7Li4ucHJvcHN9XG5cdFx0c3R5bGU9e3tcblx0XHRcdGN1cnNvcjpcImRlZmF1bHRcIixcblx0XHRcdGJhY2tncm91bmQ6Y29sb3IsXG5cdFx0XHRkaXNwbGF5OlwiaW5saW5lLWJsb2NrXCIsXG5cdFx0XHR3aWR0aDpzaXplLFxuXHRcdFx0aGVpZ2h0OnNpemUsXG5cdFx0XHRtYXJnaW5SaWdodDoyLFxuXHRcdFx0bGluZUhlaWdodDpcIjEwMCVcIlxuXHRcdH19PlxuXHRcdCZuYnNwO1xuXHQ8L3NwYW4+XG4pXG5cbmNvbnN0IFNwZWNpYWxDb2xvcj0oe2NvbG9yLCBsYWJlbCwgb25TZWxlY3R9KT0+KFxuXHQ8RmxhdEJ1dHRvbiBcblx0XHRmdWxsV2lkdGg9e3RydWV9XG5cdFx0c3R5bGU9e3t0ZXh0QWxpZ246XCJsZWZ0XCJ9fVxuXHRcdGxhYmVsPXtsYWJlbH1cblx0XHRvbkNsaWNrPXtlPT5vblNlbGVjdChjb2xvcil9XG5cdFx0aWNvbj17XG5cdFx0XHQ8Rm9udEljb24+XG5cdFx0XHRcdDxDb2xvckJsb2NrIGNvbG9yPXtjb2xvcn0gc2l6ZT17MTZ9Lz5cblx0XHRcdDwvRm9udEljb24+XG5cdFx0fS8+XG4pXG5cbmNsYXNzIFRoZW1lQ29sb3JzIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7Y29sb3JUaGVtZXM9W10sIG9uU2VsZWN0fT10aGlzLnByb3BzXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXYgc3R5bGU9e3twYWRkaW5nOjJ9fT5cblx0XHRcdFx0e1swLDEsMiwzLDQsNV0ubWFwKG9wYWNpdHk9PlxuXHRcdFx0XHRcdDxTdGFuZGFyZENvbG9ycyBrZXk9e29wYWNpdHl9XG5cdFx0XHRcdFx0XHRvblNlbGVjdD17b25TZWxlY3R9IFxuXHRcdFx0XHRcdFx0Y29sb3JzPXtjb2xvclRoZW1lcy5tYXAodGhlbWU9PnRoaXMuZ2V0Q29sb3IodGhlbWUsb3BhY2l0eSkpfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0KX1cblx0XHRcdDwvZGl2PlxuXHRcdClcblx0fVxuXHRcblx0Z2V0Q29sb3IoY29sb3Isb3BhY2l0eSl7XG5cdFx0cmV0dXJuIGNvbG9yXG5cdH1cbn1cbmNvbnN0IFN0YW5kYXJkQ29sb3JzPSh7b25TZWxlY3QsIGNvbG9ycz1cImJsYWNrLGJsdWUscmVkLHllbGxvdyxjaG9jb2xhdGUsdGFuLHBpbmssYnJvd24sZ3JlZW4sb3JhbmdlXCIuc3BsaXQoXCIsXCIpfSk9Pihcblx0PGRpdiBzdHlsZT17e3BhZGRpbmdMZWZ0OjIsIHBhZGRpbmdUb3A6MiwgcGFkZGluZ0JvdHRvbToyfX0+XG5cdFx0e2NvbG9ycy5tYXAoYT0+PENvbG9yQmxvY2sga2V5PXthfSBjb2xvcj17YX0gb25DbGljaz17KCk9Pm9uU2VsZWN0KGEpfS8+KX1cblx0PC9kaXY+XG4pIiwiaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSAgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7U3ZnSWNvbn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCJtYXRlcmlhbC11aS9Qb3BvdmVyXCJcblxuaW1wb3J0IFNpemVJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL3NpemUtaWNvbi1idXR0b25cIlxuaW1wb3J0IEljb25Nb3JlIGZyb20gJ21hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2Fycm93LWRyb3AtZG93bidcblxuaW1wb3J0IENvbG9yU2VsZWN0b3IgZnJvbSBcIi4vc2VsZWN0LWNvbG9yXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sb3JCdXR0b24gZXh0ZW5kcyBDb21wb25lbnR7XG5cdGNvbnN0cnVjdG9yKHt2YWx1ZX0pe1xuXHRcdHN1cGVyKC4uLmFyZ3VtZW50cylcblx0XHR0aGlzLnN0YXRlPXtvcGVuOmZhbHNlLGNvbG9yOnZhbHVlfHxcImJsYWNrXCJ9XG5cdH1cblx0XG5cdGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoe3ZhbHVlfSl7XG5cdFx0aWYodHlwZW9mKHZhbHVlKSE9XCJ1bmRlZmluZWRcIil7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtjb2xvcjp2YWx1ZXx8dGhpcy5zdGF0ZS52YWx1ZXx8XCJibGFja1wifSlcblx0XHR9XG5cdH1cblx0XG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtvcGVuLGNvbG9yLGFuY2hvcn09dGhpcy5zdGF0ZVxuXHRcdGNvbnN0IHtvbkNoYW5nZT1hPT5hLC4uLnByb3BzfT10aGlzLnByb3BzXG5cdFx0bGV0IGNvbG9yU2VsZWN0b3I9bnVsbFxuXHRcdGlmKG9wZW4pe1xuXHRcdFx0Y29sb3JTZWxlY3Rvcj0oXG5cdFx0XHRcdDxQb3BvdmVyIFxuXHRcdFx0XHRcdG9wZW49e3RydWV9IFxuXHRcdFx0XHRcdGFuY2hvckVsPXthbmNob3J9XG5cdFx0XHRcdFx0b25SZXF1ZXN0Q2xvc2U9e2U9PnRoaXMuc2V0U3RhdGUoe29wZW46ZmFsc2V9KX0+XG5cdFx0XHRcdFx0PENvbG9yU2VsZWN0b3Igb25DaGFuZ2U9e2NvbG9yPT57dGhpcy5zZXRTdGF0ZSh7b3BlbjpmYWxzZSxjb2xvcn0pO29uQ2hhbmdlKGNvbG9yKX19Lz5cblx0XHRcdFx0PC9Qb3BvdmVyPlxuXHRcdFx0KVxuXHRcdH1cblx0XHRjb25zdCB0b2dnbGU9ZT0+dGhpcy5zZXRTdGF0ZSh7b3Blbjohb3BlbixhbmNob3I6ZS5jdXJyZW50VGFyZ2V0LnBhcmVudE5vZGV9KVxuXHRcdFxuXHRcdHJldHVybiAoXG5cdFx0XHQ8c3BhbiBzdHlsZT17e3doaXRlU3BhY2U6XCJub3dyYXBcIn19PlxuXHRcdFx0XHQ8U2l6ZUljb25CdXR0b24gey4uLnByb3BzfSBvbkNsaWNrPXtlPT5wcm9wcy5zdGF0dXM9PVwiY2hlY2tlZFwiID8gb25DaGFuZ2UoXCJcIikgOiB0b2dnbGUoZSl9Lz5cblx0XHRcdFx0PEljb25Nb3JlIHN0eWxlPXt7aGVpZ2h0OjI0LHdpZHRoOjZ9fSB2aWV3Qm94PVwiNiAtMTIgMTggMzZcIiBvbkNsaWNrPXt0b2dnbGV9Lz5cblx0XHRcdFx0e2NvbG9yU2VsZWN0b3J9XG5cdFx0XHQ8L3NwYW4+XG5cdFx0KVxuXHR9XG59XG5cbmNvbnN0IENvbG9yYWJsZUljb249KHtjaGlsZHJlbix2YWx1ZSx2aWV3Qm94LC4uLnByb3BzfSk9Pntcblx0cmV0dXJuIChcblx0XHQ8U3ZnSWNvbiB7Li4ue3ZpZXdCb3gsLi4ucHJvcHN9fT5cblx0XHRcdHtSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sey4uLnByb3BzLHZpZXdCb3g6XCIwIDAgMzIgMzJcIn0pfVxuXHRcdFx0PGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDUgMjApXCI+XG5cdFx0XHRcdDxwYXRoIGQ9XCJNMCAwdjJoMTR2LTJoLTE0elwiIGZpbGw9e3ZhbHVlfS8+XG5cdFx0XHQ8L2c+XG5cdFx0PC9TdmdJY29uPlxuXHQpXG59IiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2NvbXBvc2Usc2V0RGlzcGxheU5hbWV9IGZyb20gXCJyZWNvbXBvc2VcIlxuXG5pbXBvcnQge0ZvbnRNYW5hZ2VyfSBmcm9tIFwid2UtZWRpdC1yZXByZXNlbnRhdGlvbi1wYWdpbmF0aW9uXCJcbmltcG9ydCBDb21ib0JveCBmcm9tIFwiLi4vY29tcG9uZW50cy9jb21iby1ib3hcIlxuXG5jb25zdCBGb250TGlzdD1jb21wb3NlKFxuXHRzZXREaXNwbGF5TmFtZShcIkZvbnRMaXN0XCIpLFxuKSgoe2ZvbnRzPUZvbnRNYW5hZ2VyLm5hbWVzLCB2YWx1ZSwgY2hhbmdlRm9udDpzZXQsIG11aVRoZW1lLGRpc3BhdGNoLCAuLi5wcm9wc30pPT4oXG5cdDxDb21ib0JveFxuXHRcdHN0eWxlPXt7d2lkdGg6MTUwfX1cblx0XHR2YWx1ZT17dmFsdWV9XG5cdFx0ZGF0YVNvdXJjZT17QXJyYXkuZnJvbShuZXcgU2V0KFsuLi5mb250cyxcIkFyaWFsXCIsXCJUaW1lcyBOZXcgUm9tYW5cIiwgXCJWZXJkYW5hXCIsXCJDYWxpYnJpXCJdKSkuc29ydCgpfVxuXHRcdG9uQ2hhbmdlPXtzZXR9XG5cdFx0aW5wdXRTdHlsZT17e2JvcmRlcjpcIjFweCBzb2xpZCBsaWdodGdyYXlcIn19XG5cdFx0dW5kZXJsaW5lU2hvdz17ZmFsc2V9XG5cdFx0ey4uLnByb3BzfVxuXHRcdC8+XG4pKVxuXG5leHBvcnQgZGVmYXVsdCBGb250TGlzdFxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5cbmltcG9ydCB7QUNUSU9OLCB3aGVuU2VsZWN0aW9uQ2hhbmdlfSBmcm9tIFwid2UtZWRpdFwiXG5cbmltcG9ydCB7Y29tcG9zZSxzZXREaXNwbGF5TmFtZSx3aXRoUHJvcHMsIHNoYWxsb3dFcXVhbCxzaG91bGRVcGRhdGV9IGZyb20gXCJyZWNvbXBvc2VcIlxuXG5pbXBvcnQge1Rvb2xiYXJHcm91cCxNZW51SXRlbSxTdmdJY29uLFRvb2xiYXJTZXBhcmF0b3IgYXMgVG9vbGJhclNlcGFyYXRvcjAsfSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuXG5pbXBvcnQgQ29tYm9Cb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvY29tYm8tYm94XCJcbmltcG9ydCBDaGVja0ljb25CdXR0b24gZnJvbSBcIi4uL2NvbXBvbmVudHMvY2hlY2staWNvbi1idXR0b25cIlxuaW1wb3J0IERyb3BEb3duQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL2Ryb3AtZG93bi1idXR0b25cIlxuaW1wb3J0IENvbG9yQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL2NvbG9yLWJ1dHRvblwiXG5cbmltcG9ydCBJY29uQm9sZCBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtYm9sZFwiXG5pbXBvcnQgSWNvbkl0YWxpYyBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtaXRhbGljXCJcbmltcG9ydCBJY29uVW5kZXJsaW5lZCBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtdW5kZXJsaW5lZFwiXG5cbmltcG9ydCBJY29uQ2xlYXIgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWNsZWFyXCJcbmltcG9ydCBJY29uU3RyaWtlIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3N0cmlrZXRocm91Z2gtc1wiXG5pbXBvcnQgSWNvbkJhY2tncm91bmQgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWNvbG9yLWZpbGxcIlxuaW1wb3J0IEljb25Db2xvciBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtY29sb3ItdGV4dFwiXG5cbmltcG9ydCBGb250TGlzdCBmcm9tIFwiLi9mb250c1wiXG5jb25zdCBUb29sYmFyU2VwYXJhdG9yPXByb3BzPT48VG9vbGJhclNlcGFyYXRvcjAgc3R5bGU9e3ttYXJnaW5SaWdodDoyLCBtYXJnaW5MZWZ0OjJ9fSB7Li4ucHJvcHN9Lz5cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcblx0c2V0RGlzcGxheU5hbWUoXCJUZXh0U3R5bGVcIiksXG5cdHdoZW5TZWxlY3Rpb25DaGFuZ2UoKHtzZWxlY3Rpb259KT0+e1xuXHRcdGlmKHNlbGVjdGlvbilcblx0XHRcdHJldHVybiB7c3R5bGU6c2VsZWN0aW9uLnByb3BzKFwidGV4dFwiLGZhbHNlKX1cblx0XHRyZXR1cm4ge31cblx0fSksXG5cdHdpdGhQcm9wcygoe2Rpc3BhdGNoLCBzdHlsZX0pPT57XG5cdFx0bGV0IGNoYW5nZVNpemU9c2l6ZT0+ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3RleHQ6e3NpemV9fSkpXG5cdFx0cmV0dXJuIHtcblx0XHRcdHN0eWxlLFxuXHRcdFx0dG9nZ2xlQjpiPT5zdHlsZSAmJiBkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7dGV4dDp7Ym9sZDohc3R5bGUuYm9sZH19KSksXG5cdFx0XHR0b2dnbGVJOmI9PnN0eWxlICYmIGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHt0ZXh0OntpdGFsaWM6IXN0eWxlLml0YWxpY319KSksXG5cdFx0XHR0b2dnbGVVOmI9PnN0eWxlICYmIGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHt0ZXh0Ont1bmRlcmxpbmU6IXN0eWxlLnVuZGVybGluZX19KSksXG5cdFx0XHR0b2dnbGVTdWJzY3JpcHQ6Yj0+c3R5bGUgJiYgZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3RleHQ6e3N1YnNjcmlwdDohc3R5bGUuc3Vic2NyaXB0fX0pKSxcblx0XHRcdHRvZ2dsZVN1cGVyc2NyaXB0OmI9PnN0eWxlICYmIGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHt0ZXh0OntzdXBlcnNjcmlwdDohc3R5bGUuc3VwZXJzY3JpcHR9fSkpLFxuXHRcdFx0Y2hhbmdlRm9udDpmb250cz0+ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3RleHQ6e2ZvbnRzfX0pKSxcblx0XHRcdGNoYW5nZVNpemUsXG5cdFx0XHRzbWFsbGVyKCl7XG5cdFx0XHRcdHN0eWxlICYmIGNoYW5nZVNpemUoTWF0aC5tYXgoc3R5bGUuc2l6ZS1NYXRoLmNlaWwoTWF0aC5hYnMoKHN0eWxlLnNpemUtOCkvNSkpLDgpKVxuXHRcdFx0fSxcblx0XHRcdGJpZ2dlcigpe1xuXHRcdFx0XHRzdHlsZSAmJiBjaGFuZ2VTaXplKHN0eWxlLnNpemUrMilcblx0XHRcdH0sXG5cdFx0XHRjaGFuZ2VIaWdodGxpZ2h0KGhpZ2hsaWdodCl7XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHt0ZXh0OntoaWdobGlnaHR9fSkpXG5cdFx0XHR9LFxuXHRcdFx0Y2hhbmdlQ29sb3IoY29sb3Ipe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7dGV4dDp7Y29sb3J9fSkpXG5cdFx0XHR9LFxuXHRcdFx0Y2xlYXIoX2NsZWFyPXRydWUpe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7dGV4dDp7X2NsZWFyfX0pKVxuXHRcdFx0fSxcblx0XHRcdHRvZ2dsZUJvcmRlcihib3JkZXI9e30pe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7dGV4dDp7Ym9yZGVyfX0pKVxuXHRcdFx0fSxcblx0XHRcdHVuZGVybGluZSh1bmRlcmxpbmUpe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7dGV4dDp7dW5kZXJsaW5lfX0pKVxuXHRcdFx0fSxcblx0XHRcdHRvZ2dsZVN0cmlrZSgpe1xuXHRcdFx0XHRzdHlsZSAmJiBkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7dGV4dDp7c3RyaWtlOiFzdHlsZS5zdHJpa2V9fSkpXG5cdFx0XHR9LFxuXG5cdFx0fVxuXHR9KSxcblx0c2hvdWxkVXBkYXRlKChhLGIpPT4hc2hhbGxvd0VxdWFsKGEuc3R5bGUsYi5zdHlsZSkpLFxuKSgoe3N0eWxlLCBjaGlsZHJlbixcblx0YmlnZ2VyLCBzbWFsbGVyLCBjbGVhcixcblx0dG9nZ2xlU3RyaWtlLCBjaGFuZ2VIaWdodGxpZ2h0LGNoYW5nZUNvbG9yLFxuXHR0b2dnbGVTdWJzY3JpcHQsIHRvZ2dsZVN1cGVyc2NyaXB0LCB0b2dnbGVCb3JkZXIsXG5cdHRvZ2dsZUIsIHRvZ2dsZUksIHVuZGVybGluZSxcblx0Y2hhbmdlRm9udCxjaGFuZ2VTaXplfSk9Pihcblx0XHRcdDxUb29sYmFyR3JvdXA+XG5cdFx0XHRcdDxGb250TGlzdFxuXHRcdFx0XHRcdHZhbHVlPXtzdHlsZSYmc3R5bGUuZm9udHMgPyBzdHlsZS5mb250cy5zcGxpdChcIixcIilbMF0gOiBcIlwifVxuXHRcdFx0XHRcdGNoYW5nZUZvbnQ9e2NoYW5nZUZvbnR9Lz5cblx0XHRcdFx0PENvbWJvQm94XG5cdFx0XHRcdFx0c3R5bGU9e3t3aWR0aDo1MH19XG5cdFx0XHRcdFx0aW5wdXRTdHlsZT17e2JvcmRlcjpcIjFweCBzb2xpZCBsaWdodGdyYXlcIn19XG5cdFx0XHRcdFx0dmFsdWU9e3N0eWxlID8gc3R5bGUuc2l6ZTogMTF9XG5cdFx0XHRcdFx0b25DaGFuZ2U9e3ZhbHVlPT5jaGFuZ2VTaXplKHBhcnNlSW50KHZhbHVlKSl9XG5cdFx0XHRcdFx0ZGF0YVNvdXJjZT17WzgsOSwxMCwxMSwxMiwxNCwxNiwyMCwyMiwyNCwyNiwyOCwzNiw3Ml0ubWFwKGE9PmErXCJcIil9XG5cdFx0XHRcdFx0dW5kZXJsaW5lU2hvdz17ZmFsc2V9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PENoZWNrSWNvbkJ1dHRvbiBsYWJlbD1cImluY3JlYXNlIGZvbnQgc2l6ZVwiXG5cdFx0XHRcdFx0c3RhdHVzPXtcInVuY2hlY2tlZFwifVxuXHRcdFx0XHRcdG9uQ2xpY2s9e2JpZ2dlcn1cblx0XHRcdFx0XHRjaGlsZHJlbj17PEljb25CaWdnZXIvPn1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8Q2hlY2tJY29uQnV0dG9uIGxhYmVsPVwiZGVzY3JlYXNlIGZvbnQgc2l6ZVwiXG5cdFx0XHRcdFx0c3RhdHVzPXtcInVuY2hlY2tlZFwifVxuXHRcdFx0XHRcdG9uQ2xpY2s9e3NtYWxsZXJ9XG5cdFx0XHRcdFx0Y2hpbGRyZW49ezxJY29uU21hbGxlci8+fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDxUb29sYmFyU2VwYXJhdG9yLz5cblxuXHRcdFx0XHQ8Q2hlY2tJY29uQnV0dG9uIGxhYmVsPVwiYm9sZFwiXG5cdFx0XHRcdFx0c3RhdHVzPXtzdHlsZSYmc3R5bGUuYm9sZCA/IFwiY2hlY2tlZFwiIDogXCJ1bmNoZWNrZWRcIn1cblx0XHRcdFx0XHRvbkNsaWNrPXsoKT0+dG9nZ2xlQigpfVxuXHRcdFx0XHRcdGNoaWxkcmVuPXs8SWNvbkJvbGQvPn1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8Q2hlY2tJY29uQnV0dG9uIGxhYmVsPVwiaXRhbGljXCJcblx0XHRcdFx0XHRzdGF0dXM9e3N0eWxlICYmIHN0eWxlLml0YWxpYz9cImNoZWNrZWRcIjpcInVuY2hlY2tlZFwifVxuXHRcdFx0XHRcdG9uQ2xpY2s9eygpPT50b2dnbGVJKCl9XG5cdFx0XHRcdFx0Y2hpbGRyZW49ezxJY29uSXRhbGljLz59XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PERyb3BEb3duQnV0dG9uIGxhYmVsPVwidW5kZXJsaW5lXCJcblx0XHRcdFx0XHRzdGF0dXM9e3N0eWxlJiZzdHlsZS51bmRlcmxpbmU/XCJjaGVja2VkXCI6XCJ1bmNoZWNrZWRcIn1cblx0XHRcdFx0XHRvbkNsaWNrPXthPT51bmRlcmxpbmUoc3R5bGUmJnN0eWxlLnVuZGVybGluZSA/IFwiXCIgOiBcInNpbmdsZVwiKX1cblx0XHRcdFx0XHRpY29uPXs8SWNvblVuZGVybGluZWQvPn1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0e1wic2luZ2xlLGRvdWJsZSxkb3QsZGFzaFwiLnNwbGl0KFwiLFwiKS5tYXAoYT0+XG5cdFx0XHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRcdFx0a2V5PXthfVxuXHRcdFx0XHRcdFx0XHRvbkNsaWNrPXtlPT51bmRlcmxpbmUoYSl9XG5cdFx0XHRcdFx0XHRcdHByaW1hcnlUZXh0PXthfVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdDwvRHJvcERvd25CdXR0b24+XG5cblx0XHRcdFx0PENoZWNrSWNvbkJ1dHRvbiBsYWJlbD1cInN0cmlrZXRocm91Z2hcIlxuXHRcdFx0XHRcdHN0YXR1cz17c3R5bGUmJnN0eWxlLnN0cmlrZT9cImNoZWNrZWRcIjpcInVuY2hlY2tlZFwifVxuXHRcdFx0XHRcdG9uQ2xpY2s9eygpPT50b2dnbGVTdHJpa2UoKX1cblx0XHRcdFx0XHRjaGlsZHJlbj17PEljb25TdHJpa2UvPn1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8VG9vbGJhclNlcGFyYXRvci8+XG5cblx0XHRcdFx0PENoZWNrSWNvbkJ1dHRvbiBsYWJlbD1cIlN1YnNjcmlwdFwiXG5cdFx0XHRcdFx0c3RhdHVzPXtzdHlsZSYmc3R5bGUuc3Vic2NyaXB0P1wiY2hlY2tlZFwiOlwidW5jaGVja2VkXCJ9XG5cdFx0XHRcdFx0b25DbGljaz17KCk9PnRvZ2dsZVN1YnNjcmlwdCgpfVxuXHRcdFx0XHRcdGNoaWxkcmVuPXs8SWNvblN1YnNjcmlwdC8+fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDxDaGVja0ljb25CdXR0b24gbGFiZWw9XCJTdXBlcnNjcmlwdFwiXG5cdFx0XHRcdFx0c3RhdHVzPXtzdHlsZSYmc3R5bGUuc3VwZXJzY3JpcHQ/XCJjaGVja2VkXCI6XCJ1bmNoZWNrZWRcIn1cblx0XHRcdFx0XHRvbkNsaWNrPXsoKT0+dG9nZ2xlU3VwZXJzY3JpcHQoKX1cblx0XHRcdFx0XHRjaGlsZHJlbj17PEljb25TdXBlcnNjcmlwdC8+fVxuXHRcdFx0XHRcdC8+XG5cblx0XHRcdFx0PENoZWNrSWNvbkJ1dHRvbiBsYWJlbD1cInRleHQgYm9yZGVyXCJcblx0XHRcdFx0XHRvbkNsaWNrPXt0b2dnbGVCb3JkZXJ9XG5cdFx0XHRcdFx0Y2hpbGRyZW49ezxJY29uVGV4dEJvcmRlci8+fVxuXHRcdFx0XHRcdC8+XG5cblx0XHRcdFx0PENvbG9yQnV0dG9uIGxhYmVsPVwidGV4dCBoaWdobGlnaHQgY29sb3JcIlxuXHRcdFx0XHRcdHN0YXR1cz17c3R5bGUmJnN0eWxlLmhpZ2hsaWdodD9cImNoZWNrZWRcIjpcInVuY2hlY2tlZFwifVxuXHRcdFx0XHRcdG9uQ2hhbmdlPXtjb2xvcj0+Y2hhbmdlSGlnaHRsaWdodChjb2xvcil9PlxuXHRcdFx0XHRcdDxJY29uQmFja2dyb3VuZC8+XG5cdFx0XHRcdDwvQ29sb3JCdXR0b24+XG5cblx0XHRcdFx0PENvbG9yQnV0dG9uIGxhYmVsPVwidGV4dCBjb2xvclwiXG5cdFx0XHRcdFx0c3RhdHVzPXtzdHlsZSYmc3R5bGUuY29sb3I/XCJjaGVja2VkXCI6XCJ1bmNoZWNrZWRcIn1cblx0XHRcdFx0XHRvbkNoYW5nZT17Y29sb3I9PmNoYW5nZUNvbG9yKGNvbG9yKX0+XG5cdFx0XHRcdFx0PEljb25Db2xvci8+XG5cdFx0XHRcdDwvQ29sb3JCdXR0b24+XG5cblx0XHRcdFx0PFRvb2xiYXJTZXBhcmF0b3IvPlxuXHRcdFx0XHQ8Q2hlY2tJY29uQnV0dG9uIGxhYmVsPVwiY2xlYXIgYWxsIHRleHQgZm9ybWF0dGluZ1wiXG5cdFx0XHRcdFx0b25DbGljaz17Y2xlYXJ9XG5cdFx0XHRcdFx0Y2hpbGRyZW49ezxJY29uQ2xlYXIvPn1cblx0XHRcdFx0XHQvPlxuXG5cdFx0XHRcdHtjaGlsZHJlbn1cblx0XHRcdDwvVG9vbGJhckdyb3VwPlxuKSlcblxuY29uc3QgSWNvblN1cGVyc2NyaXB0PXByb3BzPT4oXG5cdDxTdmdJY29uIHsuLi5wcm9wc30+XG5cdFx0PGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMykgc2NhbGUoMC43KVwiPlxuXHRcdFx0PHBhdGggZD1cIk0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6XCIvPlxuXHRcdDwvZz5cblx0XHQ8dGV4dCB4PVwiMTVcIiB5PVwiOVwiIHN0eWxlPXt7Zm9udFNpemU6OX19PjI8L3RleHQ+XG5cdDwvU3ZnSWNvbj5cbilcblxuY29uc3QgSWNvblN1YnNjcmlwdD1wcm9wcz0+KFxuXHQ8U3ZnSWNvbiB7Li4ucHJvcHN9PlxuXHRcdDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDMpIHNjYWxlKDAuNylcIj5cblx0XHRcdDxwYXRoIGQ9XCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiLz5cblx0XHQ8L2c+XG5cdFx0PHRleHQgeD1cIjE1XCIgeT1cIjIwXCIgc3R5bGU9e3tmb250U2l6ZTo5fX0+MjwvdGV4dD5cblx0PC9TdmdJY29uPlxuKVxuXG5jb25zdCBJY29uQmlnZ2VyPXByb3BzPT4oXG5cdDxTdmdJY29uIHsuLi5wcm9wc30+XG5cdFx0PGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMilcIj5cblx0XHRcdDxwYXRoIGQ9XCJNNSAxN200LjUtNC4yaDVsLjkgMi4yaDIuMUwxMi43NSA0aC0xLjVMNi41IDE1aDIuMWwuOS0yLjJ6TTEyIDUuOThMMTMuODcgMTFoLTMuNzRMMTIgNS45OHpcIi8+XG5cdFx0PC9nPlxuXHRcdDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxOCAyKVwiPlxuXHRcdFx0PHBhdGggZD1cIk0wIDNINkwzIDB6XCIvPlxuXHRcdDwvZz5cblx0PC9TdmdJY29uPlxuKVxuXG5jb25zdCBJY29uU21hbGxlcj1wcm9wcz0+KFxuXHQ8U3ZnSWNvbiB7Li4ucHJvcHN9PlxuXHRcdDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDIpXCI+XG5cdFx0XHQ8cGF0aCBkPVwiTTUgMTdtNC41LTQuMmg1bC45IDIuMmgyLjFMMTIuNzUgNGgtMS41TDYuNSAxNWgyLjFsLjktMi4yek0xMiA1Ljk4TDEzLjg3IDExaC0zLjc0TDEyIDUuOTh6XCIvPlxuXHRcdDwvZz5cblx0XHQ8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTggMilcIj5cblx0XHRcdDxwYXRoIGQ9XCJNMCAwIEg2TDMgM3pcIi8+XG5cdFx0PC9nPlxuXHQ8L1N2Z0ljb24+XG4pXG5cbmNvbnN0IEljb25UZXh0Qm9yZGVyPXByb3BzPT4oXG5cdDxTdmdJY29uIHsuLi5wcm9wc30+XG5cdFx0PGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMilcIj5cblx0XHRcdDxwYXRoIGQ9XCJNNSAxN200LjUtNC4yaDVsLjkgMi4yaDIuMUwxMi43NSA0aC0xLjVMNi41IDE1aDIuMWwuOS0yLjJ6TTEyIDUuOThMMTMuODcgMTFoLTMuNzRMMTIgNS45OHpcIi8+XG5cdFx0PC9nPlxuXHRcdDxwYXRoIGQ9XCJNMiAyIGgyMHYyMGgtMjB6XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJibGFja1wiLz5cblx0PC9TdmdJY29uPlxuKVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5cbmltcG9ydCB7Y29tcG9zZSxzZXREaXNwbGF5TmFtZSxtYXBQcm9wcywgc2hhbGxvd0VxdWFsLHNob3VsZFVwZGF0ZX0gZnJvbSBcInJlY29tcG9zZVwiXG5pbXBvcnQge0FDVElPTiwgd2hlblNlbGVjdGlvbkNoYW5nZSxnZXRVSX0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQge1Rvb2xiYXJHcm91cCxUb29sYmFyU2VwYXJhdG9yIGFzIFRvb2xiYXJTZXBhcmF0b3IwLE1lbnVJdGVtLCBTdmdJY29ufSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuaW1wb3J0IENoZWNrSWNvbkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9jaGVjay1pY29uLWJ1dHRvblwiXG5pbXBvcnQgRHJvcERvd25CdXR0b24gZnJvbSBcIi4uL2NvbXBvbmVudHMvZHJvcC1kb3duLWJ1dHRvblwiXG5cblxuaW1wb3J0IEljb25BbGlnbkNlbnRlciBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtYWxpZ24tY2VudGVyXCJcbmltcG9ydCBJY29uQWxpZ25MZWZ0IGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1hbGlnbi1sZWZ0XCJcbmltcG9ydCBJY29uQWxpZ25SaWdodCBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtYWxpZ24tcmlnaHRcIlxuaW1wb3J0IEljb25BbGlnbkp1c3RpZnkgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWFsaWduLWp1c3RpZnlcIlxuXG5pbXBvcnQgSWNvbkxpc3RCdWxsZXQgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWxpc3QtYnVsbGV0ZWRcIlxuaW1wb3J0IEljb25MaXN0TnVtYmVyIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1saXN0LW51bWJlcmVkXCJcblxuY29uc3QgVG9vbGJhclNlcGFyYXRvcj1wcm9wcz0+PFRvb2xiYXJTZXBhcmF0b3IwIHN0eWxlPXt7bWFyZ2luUmlnaHQ6MiwgbWFyZ2luTGVmdDoyfX0gey4uLnByb3BzfS8+XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoXG5cdHNldERpc3BsYXlOYW1lKFwiUGFyYWdyYXBoU3R5bGVcIiksXG5cdHdoZW5TZWxlY3Rpb25DaGFuZ2UoKHtzZWxlY3Rpb259LHN0YXRlKT0+e1xuXHRcdGlmKHNlbGVjdGlvbilcblx0XHRcdHJldHVybiB7c3R5bGU6c2VsZWN0aW9uLnByb3BzKFwicGFyYWdyYXBoXCIsZmFsc2UpLC4uLmdldFVJKHN0YXRlKX1cblx0XHRyZXR1cm4gZ2V0VUkoc3RhdGUpXG5cdH0pLFxuXHRtYXBQcm9wcygoe2Rpc3BhdGNoLGNoaWxkcmVuLHN0eWxlLHBpbGNyb3d9KT0+e1xuXHRcdHJldHVybiB7XG5cdFx0XHRjaGlsZHJlbixcblx0XHRcdHN0eWxlLFxuXHRcdFx0cGlsY3Jvdyxcblx0XHRcdHRvZ2dsZUFsaWduKGFsaWduKXtcblx0XHRcdFx0Y29uc3Qge2FsaWduOmN1cnJlbnQ9XCJsZWZ0XCJ9PXN0eWxlfHx7fVxuXHRcdFx0XHRpZihjdXJyZW50PT1hbGlnbil7XG5cdFx0XHRcdFx0YWxpZ249bnVsbFxuXHRcdFx0XHR9XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHtwYXJhZ3JhcGg6e2FsaWdufX0pKVxuXHRcdFx0fSxcblx0XHRcdG51bWJlcmluZzogbnVtYmVyaW5nPT57XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHtwYXJhZ3JhcGg6e251bWJlcmluZ319KSlcblx0XHRcdH0sXG5cdFx0XHR0b2dnbGVCdWxsZXQobnVtYmVyaW5nKXtcblx0XHRcdFx0aWYoc3R5bGUmJnN0eWxlLm51bWJlcmluZyYmc3R5bGUubnVtYmVyaW5nLmZvcm1hdD09XCJidWxsZXRcIil7XG5cdFx0XHRcdFx0bnVtYmVyaW5nPW51bGxcblx0XHRcdFx0fVxuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7cGFyYWdyYXBoOntudW1iZXJpbmd9fSkpXG5cdFx0XHR9LFxuXHRcdFx0dG9nZ2xlTnVtYmVyaW5nKG51bWJlcmluZyl7XG5cdFx0XHRcdGlmKHN0eWxlJiZzdHlsZS5udW1iZXJpbmcmJnN0eWxlLm51bWJlcmluZy5mb3JtYXQhPT1cImJ1bGxldFwiKXtcblx0XHRcdFx0XHRudW1iZXJpbmc9bnVsbFxuXHRcdFx0XHR9XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHtwYXJhZ3JhcGg6e251bWJlcmluZ319KSlcblx0XHRcdH0sXG5cdFx0XHR0b2dnbGVQaWxjcm93KCl7XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5VSSh7cGlsY3JvdzohcGlsY3Jvd30pKVxuXHRcdFx0fVxuXHRcdH1cblx0fSksXG5cdHNob3VsZFVwZGF0ZSgoYSxiKT0+IShzaGFsbG93RXF1YWwoYS5zdHlsZSxiLnN0eWxlKSAmJiBhLnBpbGNyb3c9PWIucGlsY3JvdykpXG4pKCh7c3R5bGUsIHRvZ2dsZUFsaWduLG51bWJlcmluZywgYnVsbGV0LCB0b2dnbGVCdWxsZXQsIHRvZ2dsZU51bWJlcmluZywgcGlsY3JvdywgdG9nZ2xlUGlsY3JvdyxjaGlsZHJlbn0pPT4oXG5cdDxUb29sYmFyR3JvdXA+XG5cdFx0PENoZWNrSWNvbkJ1dHRvblxuXHRcdFx0c3RhdHVzPXtzdHlsZSAmJighc3R5bGUuYWxpZ24gfHxzdHlsZS5hbGlnbj09XCJsZWZ0XCIpP1wiY2hlY2tlZFwiOlwidW5jaGVja2VkXCJ9XG5cdFx0XHRvbkNsaWNrPXsoKT0+dG9nZ2xlQWxpZ24oXCJsZWZ0XCIpfVxuXHRcdFx0Y2hpbGRyZW49ezxJY29uQWxpZ25MZWZ0Lz59XG5cdFx0XHQvPlxuXHRcdDxDaGVja0ljb25CdXR0b25cblx0XHRcdHN0YXR1cz17c3R5bGUmJnN0eWxlLmFsaWduPT1cImNlbnRlclwiP1wiY2hlY2tlZFwiOlwidW5jaGVja2VkXCJ9XG5cdFx0XHRvbkNsaWNrPXsoKT0+dG9nZ2xlQWxpZ24oXCJjZW50ZXJcIil9XG5cdFx0XHRjaGlsZHJlbj17PEljb25BbGlnbkNlbnRlci8+fVxuXHRcdFx0Lz5cblx0XHQ8Q2hlY2tJY29uQnV0dG9uXG5cdFx0XHRzdGF0dXM9e3N0eWxlICYmc3R5bGUuYWxpZ249PVwicmlnaHRcIj9cImNoZWNrZWRcIjpcInVuY2hlY2tlZFwifVxuXHRcdFx0b25DbGljaz17KCk9PnRvZ2dsZUFsaWduKFwicmlnaHRcIil9XG5cdFx0XHRjaGlsZHJlbj17PEljb25BbGlnblJpZ2h0Lz59XG5cdFx0XHQvPlxuXHRcdDxDaGVja0ljb25CdXR0b25cblx0XHRcdHN0YXR1cz17c3R5bGUmJnN0eWxlLmFsaWduPT1cImp1c3RpZnlcIj9cImNoZWNrZWRcIjpcInVuY2hlY2tlZFwifVxuXHRcdFx0b25DbGljaz17KCk9PnRvZ2dsZUFsaWduKFwianVzdGlmeVwiKX1cblx0XHRcdGNoaWxkcmVuPXs8SWNvbkFsaWduSnVzdGlmeS8+fVxuXHRcdFx0Lz5cblx0XHQ8VG9vbGJhclNlcGFyYXRvci8+XG5cblx0XHQ8RHJvcERvd25CdXR0b25cblx0XHRcdHN0YXR1cz17c3R5bGUmJnN0eWxlLm51bWJlcmluZyYmc3R5bGUubnVtYmVyaW5nLmZvcm1hdD09XCJidWxsZXRcIiA/XCJjaGVja2VkXCI6XCJ1bmNoZWNrZWRcIn1cblx0XHRcdG9uQ2xpY2s9eygpPT50b2dnbGVCdWxsZXQoe3R5cGU6XCJidWxsZXRcIix0ZXh0OlwiLlwifSl9XG5cdFx0XHRpY29uPXs8SWNvbkxpc3RCdWxsZXQvPn1cblx0XHRcdD5cblx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIi5cIiBvbkNsaWNrPXtlPT5udW1iZXJpbmcoe3R5cGU6XCJidWxsZXRcIix0ZXh0OlwiLlwifSl9Lz5cblx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIipcIiBvbkNsaWNrPXtlPT5udW1iZXJpbmcoe3R5cGU6XCJidWxsZXRcIix0ZXh0OlwiKlwifSl9Lz5cblxuXHRcdDwvRHJvcERvd25CdXR0b24+XG5cdFx0PERyb3BEb3duQnV0dG9uXG5cdFx0XHRzdGF0dXM9e3N0eWxlJiZzdHlsZS5udW1iZXJpbmcmJnN0eWxlLm51bWJlcmluZy5mb3JtYXQhPT1cImJ1bGxldFwiID9cImNoZWNrZWRcIjpcInVuY2hlY2tlZFwifVxuXHRcdFx0b25DbGljaz17KCk9PnRvZ2dsZU51bWJlcmluZyh7dHlwZTpcImRlY2ltYWxcIix0ZXh0OlwiJTEuXCJ9KX1cblx0XHRcdGljb249ezxJY29uTGlzdE51bWJlci8+fVxuXHRcdFx0PlxuXHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiMS5cIiBvbkNsaWNrPXtlPT5udW1iZXJpbmcoe3R5cGU6XCJkZWNpbWFsXCIsdGV4dDpcIiUxLlwifSl9Lz5cblx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cImEuXCIgb25DbGljaz17ZT0+bnVtYmVyaW5nKHt0eXBlOlwibG93ZXJMZXR0ZXJcIix0ZXh0OlwiJTEuXCJ9KX0vPlxuXHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwi5LiAXCIgb25DbGljaz17ZT0+bnVtYmVyaW5nKHt0eXBlOlwiY2hpbmVzZVwiLCB0ZXh0OlwiJTFcIn0pfS8+XG5cdFx0PC9Ecm9wRG93bkJ1dHRvbj5cblx0XHQ8VG9vbGJhclNlcGFyYXRvci8+XG5cdFx0PENoZWNrSWNvbkJ1dHRvblxuXHRcdFx0c3RhdHVzPXtwaWxjcm93ID8gXCJjaGVja2VkXCIgOiBcInVuY2hlY2tlZFwifVxuXHRcdFx0b25DbGljaz17dG9nZ2xlUGlsY3Jvd31cblx0XHRcdGNoaWxkcmVuPXtcblx0XHRcdFx0PFN2Z0ljb24+XG5cdFx0XHRcdFx0PGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgNClcIj5cblx0XHRcdFx0XHRcdDxwYXRoIGQ9XCJNOSAxMHY1aDJWNGgydjExaDJWNGgyVjJIOUM2Ljc5IDIgNSAzLjc5IDUgNnMxLjc5IDQgNCA0elwiLz5cblx0XHRcdFx0XHQ8L2c+XG5cdFx0XHRcdDwvU3ZnSWNvbj5cblx0XHRcdH1cblx0XHRcdC8+XG5cdFx0e2NoaWxkcmVufVxuXHQ8L1Rvb2xiYXJHcm91cD5cbikpXG4iLCJ2YXIgaW5wdXQ7XG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2VsZWN0KGFjY2VwdCl7XG4gICAgaWYoaW5wdXQ9PW51bGwpe1xuICAgICAgICBpbnB1dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG4gICAgICAgIGlucHV0LnR5cGU9XCJmaWxlXCJcbiAgICAgICAgaW5wdXQuc3R5bGUucG9zaXRpb249J2Fic29sdXRlJ1xuICAgICAgICBpbnB1dC5zdHlsZS5sZWZ0PSctOTk5OXB4J1x0XHRcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dClcbiAgICB9XG5cblx0aW5wdXQuc2V0QXR0cmlidXRlKFwiYWNjZXB0XCIsYWNjZXB0fHxcIlwiKVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCk9PntcbiAgICAgICAgaW5wdXQub25jaGFuZ2U9ZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHZhciBmaWxlPXRoaXMuZmlsZXNbMF07XG5cdFx0XHRpbnB1dC52YWx1ZT1cIlwiXG4gICAgICAgICAgICBpZihmaWxlPT1udWxsKVxuICAgICAgICAgICAgICAgIHJlamVjdCgpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpKVxuICAgICAgICB9XG4gICAgICAgIGlucHV0LmNsaWNrKClcbiAgICB9KVxufVxuXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSBcInJlYWN0LXJlZHV4XCJcbmltcG9ydCB7Y29tcG9zZSwgc2V0RGlzcGxheU5hbWUsIG9ubHlVcGRhdGVGb3JLZXlzfSBmcm9tIFwicmVjb21wb3NlXCJcblxuaW1wb3J0IHtUb29sYmFyR3JvdXB9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgQ2hlY2tJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL2NoZWNrLWljb24tYnV0dG9uXCJcblxuXG5pbXBvcnQgSWNvblJlZG8gZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L3JlZG9cIlxuaW1wb3J0IEljb25VbmRvIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC91bmRvXCJcblxuaW1wb3J0IHtBQ1RJT04sIGdldFVuZG9zLCBnZXRSZWRvcywgSW5wdXQsIGdldEFjdGl2ZX0gZnJvbSBcIndlLWVkaXRcIlxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxuXHRzZXREaXNwbGF5TmFtZShcImhpc3RvcnlcIiksXG5cdGNvbm5lY3Qoc3RhdGU9Pntcblx0XHRzdGF0ZT1nZXRBY3RpdmUoc3RhdGUpLnN0YXRlXG5cdFx0bGV0IHJlZG9zPWdldFJlZG9zKHN0YXRlKVxuXHRcdGxldCB1bmRvcz1nZXRVbmRvcyhzdGF0ZSlcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y2FuUmVkbzohIXJlZG9zLmxlbmd0aCxcblx0XHRcdGNhblVuZG86ISF1bmRvcy5sZW5ndGhcblx0XHR9XG5cdH0sKGRpc3BhdGNoKT0+e1xuXHRcdHJldHVybiB7XG5cdFx0XHR1bmRvKCl7XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5IaXN0b3J5LnVuZG8oKSlcblx0XHRcdH0sXG5cdFx0XHRyZWRvKCl7XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5IaXN0b3J5LnJlZG8oKSlcblx0XHRcdH1cblx0XHR9XG5cdH0pLFxuXHRvbmx5VXBkYXRlRm9yS2V5cyhbJ2NhblJlZG8nLCdjYW5VbmRvJ10pXG4pKCh7dW5kbyxyZWRvLCBjYW5VbmRvLCBjYW5SZWRvLGNoaWxkcmVufSk9Pihcblx0PFRvb2xiYXJHcm91cD5cblx0XHQ8Q2hlY2tJY29uQnV0dG9uXG5cdFx0XHRoaW50PVwidW5kb1wiXG5cdFx0XHRzdGF0dXM9e2NhblVuZG8gPyBcInVuY2hlY2tcIiA6IFwiZGlzYWJsZWRcIn1cblx0XHRcdGNoaWxkcmVuPXs8SWNvblVuZG8vPn1cblx0XHRcdG9uQ2xpY2s9e3VuZG99XG5cdFx0XHQvPlxuXHRcdDxDaGVja0ljb25CdXR0b25cblx0XHRcdGhpbnQ9XCJyZWRvXCJcblx0XHRcdHN0YXR1cz17Y2FuUmVkbyA/IFwidW5jaGVja1wiIDogXCJkaXNhYmxlZFwifVxuXHRcdFx0Y2hpbGRyZW49ezxJY29uUmVkby8+fVxuXHRcdFx0b25DbGljaz17cmVkb31cblx0XHRcdC8+XG5cdFx0e2NoaWxkcmVufVxuXHQ8L1Rvb2xiYXJHcm91cD5cbikpXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSBcInJlYWN0LXJlZHV4XCJcbmltcG9ydCB7Y29tcG9zZSwgc2V0RGlzcGxheU5hbWUsIG9ubHlVcGRhdGVGb3JLZXlzfSBmcm9tIFwicmVjb21wb3NlXCJcblxuaW1wb3J0IHtUb29sYmFyR3JvdXB9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgQ2hlY2tJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL2NoZWNrLWljb24tYnV0dG9uXCJcblxuXG5pbXBvcnQgSWNvbkNvcHkgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L2NvbnRlbnQtY29weVwiXG5pbXBvcnQgSWNvblBhc3RlIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC9jb250ZW50LXBhc3RlXCJcbmltcG9ydCBJY29uQ3V0IGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC9jb250ZW50LWN1dFwiXG5cblxuaW1wb3J0IHtBQ1RJT04sIGdldFNlbGVjdGlvbiwgZ2V0QWN0aXZlfSBmcm9tIFwid2UtZWRpdFwiXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoXG5cdHNldERpc3BsYXlOYW1lKFwiY2xpcGJvYXJkXCIpLFxuXHRjb25uZWN0KHN0YXRlPT57XG5cdFx0c3RhdGU9Z2V0QWN0aXZlKHN0YXRlKS5zdGF0ZVxuXHRcdGNvbnN0IHtzdGFydD17fSxlbmQ9e319PWdldFNlbGVjdGlvbihzdGF0ZSlcblx0XHRjb25zdCBpc0N1cnNvcj1zdGFydC5pZD09ZW5kLmlkICYmIHN0YXJ0LmF0PT1lbmQuYXRcbiAgICAgICAgcmV0dXJuIHtcblx0XHRcdHdpdGhTZWxlY3Rpb246ICFpc0N1cnNvcixcbiAgICAgICAgICAgIHdpdGhDbGlwYm9hcmQ6ISF3aW5kb3cuX2NsaXBib2FyZCxcblx0XHR9XG5cdH0sKGRpc3BhdGNoKT0+e1xuXHRcdHJldHVybiB7XG4gICAgICAgICAgICBjdXQoKXtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLkNVVCgpKVxuICAgICAgICAgICAgfSxcblx0XHRcdGNvcHkoKXtcblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5DT1BZKCkpXG5cdFx0XHR9LFxuXHRcdFx0cGFzdGUoKXtcblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5QQVNURSgpKVxuXHRcdFx0fSxcblx0XHR9XG5cdH0pLFxuXHRvbmx5VXBkYXRlRm9yS2V5cyhbJ3dpdGhTZWxlY3Rpb24nLCd3aXRoQ2xpcGJvYXJkJ10pXG4pKCh7Y3V0LGNvcHkscGFzdGUsd2l0aFNlbGVjdGlvbix3aXRoQ2xpcGJvYXJkLGNoaWxkcmVufSk9Pihcblx0PFRvb2xiYXJHcm91cD5cblx0XHQ8Q2hlY2tJY29uQnV0dG9uXG5cdFx0XHRsYWJlbD1cInBhc3RlXCJcblx0XHRcdHN0YXR1cz17d2l0aENsaXBib2FyZCA/IFwidW5jaGVja1wiIDogXCJkaXNhYmxlZFwifVxuXHRcdFx0Y2hpbGRyZW49ezxJY29uUGFzdGUvPn1cblx0XHRcdG9uQ2xpY2s9e3Bhc3RlfVxuXHRcdFx0Lz5cblx0XHQ8Q2hlY2tJY29uQnV0dG9uXG5cdFx0XHRsYWJlbD1cImN1dFwiXG5cdFx0XHRzdGF0dXM9e3dpdGhTZWxlY3Rpb24gPyBcInVuY2hlY2tcIiA6IFwiZGlzYWJsZWRcIn1cblx0XHRcdGNoaWxkcmVuPXs8SWNvbkN1dC8+fVxuXHRcdFx0b25DbGljaz17Y3V0fVxuXHRcdFx0Lz5cblx0XHQ8Q2hlY2tJY29uQnV0dG9uXG5cdFx0XHRsYWJlbD1cImNvcHlcIlxuXHRcdFx0c3RhdHVzPXt3aXRoU2VsZWN0aW9uID8gXCJ1bmNoZWNrXCIgOiBcImRpc2FibGVkXCJ9XG5cdFx0XHRjaGlsZHJlbj17PEljb25Db3B5Lz59XG5cdFx0XHRvbkNsaWNrPXtjb3B5fVxuXHRcdFx0Lz5cblx0XHR7Y2hpbGRyZW59XG5cdDwvVG9vbGJhckdyb3VwPlxuKSlcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuXG5pbXBvcnQge2NvbXBvc2Usc2V0RGlzcGxheU5hbWUsbWFwUHJvcHN9IGZyb20gXCJyZWNvbXBvc2VcIlxuaW1wb3J0IHtBQ1RJT04sIHdoZW5TZWxlY3Rpb25DaGFuZ2V9IGZyb20gXCJ3ZS1lZGl0XCJcblxuaW1wb3J0IHtNZW51SXRlbSxTdmdJY29uLFRvb2xiYXJHcm91cH0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcbmltcG9ydCBEcm9wRG93bkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9kcm9wLWRvd24tYnV0dG9uXCJcblxuaW1wb3J0IEljb25TZWxlY3QgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9hY3Rpb24vb3Blbi13aXRoXCJcblxuaW1wb3J0IEljb25Ob3RDaGVja2VkIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvdG9nZ2xlL2NoZWNrLWJveC1vdXRsaW5lLWJsYW5rXCJcbmltcG9ydCBJY29uQ2hlY2tlZCBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL3RvZ2dsZS9jaGVjay1ib3hcIlxuXG5pbXBvcnQgSWNvbkFib3ZlIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3ZlcnRpY2FsLWFsaWduLXRvcFwiXG5pbXBvcnQgSWNvbkJlbG93IGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3ZlcnRpY2FsLWFsaWduLWJvdHRvbVwiXG5pbXBvcnQgSWNvbkxlZnQgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2ZpcnN0LXBhZ2VcIlxuaW1wb3J0IEljb25SaWdodCBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vbGFzdC1wYWdlXCJcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcbiAgICBzZXREaXNwbGF5TmFtZShcIlRhYmxlRGVzaWduZXJcIiksXG4gICAgd2hlblNlbGVjdGlvbkNoYW5nZSgpLFxuICAgIG1hcFByb3BzKCh7ZGlzcGF0Y2h9KT0+e1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWRkUm93QWJvdmUoKXtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChBQ1RJT04uRW50aXR5LkNSRUFURSh7dHlwZTpcInJvd1wiLCB3aGVyZTpcImJlZm9yZVwifSkpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkUm93QmVsb3coKXtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChBQ1RJT04uRW50aXR5LkNSRUFURSh7dHlwZTpcInJvd1wiLCB3aGVyZTpcImFmdGVyXCJ9KSlcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGFkZENvbFJpZ2h0KCl7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goQUNUSU9OLkVudGl0eS5DUkVBVEUoe3R5cGU6XCJjb2x1bW5cIiwgd2hlcmU6XCJhZnRlclwifSkpXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBhZGRDb2xMZWZ0KCl7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goQUNUSU9OLkVudGl0eS5DUkVBVEUoe3R5cGU6XCJjb2x1bW5cIiwgd2hlcmU6XCJiZWZvcmVcIn0pKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlbW92ZSh0eXBlKXtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLkVYVEVORCh0eXBlKSlcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlJFTU9WRSh7dHlwZX0pKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdCh0eXBlKXtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLkVYVEVORCh0eXBlKSlcbiAgICAgICAgICAgIH0gICBcbiAgICAgICAgfVxuICAgIH0pXG4pKCh7YWRkUm93QWJvdmUsIGFkZFJvd0JlbG93LCBhZGRDb2xMZWZ0LCBhZGRDb2xSaWdodCwgcmVtb3ZlLCBzZWxlY3R9KT0+e1xuICAgIHJldHVybiAoXG4gICAgICAgIDxUb29sYmFyR3JvdXA+XG4gICAgICAgICAgICA8RHJvcERvd25CdXR0b24gdGl0bGU9XCJ0YWJsZSBjb25kaXRpb25zXCIgaWNvbj17PEljb25Db25kaXRpb24gY2hpbGRyZW49ezxYLz59Lz59ID5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJIZWFkZXIgUm93XCIgbGVmdEljb249ezxJY29uQ2hlY2tlZC8+fS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiVG90YWwgUm93XCIgbGVmdEljb249ezxJY29uTm90Q2hlY2tlZC8+fS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiQmFuZGVkIFJvd3NcIiBsZWZ0SWNvbj17PEljb25DaGVja2VkLz59Lz5cblxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkZpcnN0IENvbHVtblwiIGxlZnRJY29uPXs8SWNvbkNoZWNrZWQvPn0vPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkxhc3QgQ29sdW1uXCIgbGVmdEljb249ezxJY29uTm90Q2hlY2tlZC8+fS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiQmFuZGVkIENvbHVtbnNcIiBsZWZ0SWNvbj17PEljb25Ob3RDaGVja2VkLz59Lz5cbiAgICAgICAgICAgIDwvRHJvcERvd25CdXR0b24+XG5cbiAgICAgICAgICAgIDxEcm9wRG93bkJ1dHRvbiB0aXRsZT1cInNlbGVjdCAuLi5cIiBpY29uPXs8SWNvblNlbGVjdC8+fT5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJTZWxlY3QgQ2VsbFwiIGxlZnRJY29uPXs8SWNvbkNlbGwvPn0gb25DbGljaz17KCk9PnNlbGVjdChcImNlbGxcIil9Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJTZWxlY3QgQ29sdW1uXCIgbGVmdEljb249ezxJY29uQ29sdW1uLz59IG9uQ2xpY2s9eygpPT5zZWxlY3QoXCJjb2x1bW5cIil9Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJTZWxlY3QgUm93XCIgbGVmdEljb249ezxJY29uUm93Lz59IG9uQ2xpY2s9eygpPT5zZWxlY3QoXCJyb3dcIil9Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJTZWxlY3QgVGFibGVcIiBsZWZ0SWNvbj17PEljb25XaG9sZVRhYmxlLz59IG9uQ2xpY2s9eygpPT5zZWxlY3QoXCJ0YWJsZVwiKX0vPlxuICAgICAgICAgICAgPC9Ecm9wRG93bkJ1dHRvbj5cblxuICAgICAgICAgICAgPERyb3BEb3duQnV0dG9uICB0aXRsZT1cImRlbGV0ZSAuLi5cIiBpY29uPXs8SWNvblRhYmxlIGNoaWxkcmVuPXs8WCBzaXplPXsxMn0gc3Ryb2tlV2lkdGg9ezN9Lz59Lz59PlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkRlbGV0ZSBDZWxsXCIgXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT5yZW1vdmUoXCJjZWxsXCIpfVxuICAgICAgICAgICAgICAgICAgICBsZWZ0SWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFgvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgfS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiRGVsZXRlIENvbHVtblwiIFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+cmVtb3ZlKFwiY29sdW1uXCIpfVxuICAgICAgICAgICAgICAgICAgICBsZWZ0SWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25Db2x1bW4+XG4gICAgICAgICAgICAgICAgICAgIH0vPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkRlbGV0ZSBSb3dcIiBcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCk9PnJlbW92ZShcInJvd1wiKX1cbiAgICAgICAgICAgICAgICAgICAgbGVmdEljb249e1xuICAgICAgICAgICAgICAgICAgICAgICAgPEljb25Sb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFgvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uUm93PlxuICAgICAgICAgICAgICAgICAgICB9Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJEZWxldGUgVGFibGVcIiBcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCk9PnJlbW92ZShcInRhYmxlXCIpfVxuICAgICAgICAgICAgICAgICAgICBsZWZ0SWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgICA8SWNvbldob2xlVGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFgvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uV2hvbGVUYWJsZT5cbiAgICAgICAgICAgICAgICAgICAgfS8+XG4gICAgICAgICAgICA8L0Ryb3BEb3duQnV0dG9uPlxuXG4gICAgICAgICAgICA8RHJvcERvd25CdXR0b24gdGl0bGU9XCJpbnNlcnQgcm93L2NvbHVtblwiIGljb249ezxJY29uVGFibGUgY2hpbGRyZW49e251bGx9Lz59ID5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJJbnNlcnQgUm93IEFib3ZlXCIgbGVmdEljb249ezxJY29uQWJvdmUvPn0gb25DbGljaz17YWRkUm93QWJvdmV9Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJJbnNlcnQgUm93IEJlbG93XCIgbGVmdEljb249ezxJY29uQmVsb3cvPn0gb25DbGljaz17YWRkUm93QmVsb3d9Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJJbnNlcnQgQ29sdW1uIExlZnRcIiBsZWZ0SWNvbj17PEljb25MZWZ0Lz59IG9uQ2xpY2s9e2FkZENvbExlZnR9Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJJbnNlcnQgQ29sdW1uIFJpZ2h0XCIgbGVmdEljb249ezxJY29uUmlnaHQvPn0gb25DbGljaz17YWRkQ29sUmlnaHR9Lz5cbiAgICAgICAgICAgIDwvRHJvcERvd25CdXR0b24+XG5cbiAgICAgICAgPC9Ub29sYmFyR3JvdXA+XG4gICAgKVxufSlcblxuY29uc3QgSWNvbkNvbmRpdGlvbj1wcm9wcz0+KFxuICAgIDxTdmdJY29uIHsuLi5wcm9wc30+XG4gICAgICAgIDxwYXRoIGQ9XCJNNyA1aDJWM0g3djJ6bTAgOGgydi0ySDd2MnptMCA4aDJ2LTJIN3Yyem00LTRoMnYtMmgtMnYyem0wIDRoMnYtMmgtMnYyem0tOCAwaDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6bTAtNGgydi0ySDN2MnptMC00aDJWN0gzdjJ6bTAtNGgyVjNIM3Yyem04IDhoMnYtMmgtMnYyem04IDRoMnYtMmgtMnYyem0wLTRoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0wLTEyaDJWN2gtMnYyem0tOCAwaDJWN2gtMnYyem04LTZ2MmgyVjNoLTJ6bS04IDJoMlYzaC0ydjJ6bTQgMTZoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyem0wLThoMlYzaC0ydjJ6XCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTUgOCBsNCA1bDggLThcIiBzdHJva2U9XCJibHVlXCIgZmlsbD1cIm5vbmVcIiBzdHJva2VXaWR0aD1cIjNcIi8+XG4gICAgPC9TdmdJY29uPlxuKVxuXG5jb25zdCBJY29uVGFibGU9KHtjaGlsZHJlbiwgLi4ucHJvcHN9KT0+KFxuICAgIDxTdmdJY29uIHsuLi5wcm9wc30+XG4gICAgICAgIDxwYXRoIGQ9XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTggMjBINHYtNGg0djR6bTAtNkg0di00aDR2NHptMC02SDRWNGg0djR6bTYgMTJoLTR2LTRoNHY0em0wLTZoLTR2LTRoNHY0em0wLTZoLTRWNGg0djR6bTYgMTJoLTR2LTRoNHY0em0wLTZoLTR2LTRoNHY0em0wLTZoLTRWNGg0djR6XCIvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdmdJY29uPlxuKVxuXG5jb25zdCBCPXByb3BzPT48cmVjdCBmaWxsPVwiYmx1ZVwiIHdpZHRoPVwiNFwiIGhlaWdodD1cIjRcIiB7Li4ucHJvcHN9Lz5cblxuY29uc3QgSWNvbkNlbGw9KHtjaGlsZHJlbiwgLi4ucHJvcHN9KT0+KFxuICAgIDxJY29uVGFibGUgey4uLnByb3BzfT5cbiAgICAgICAgPEIgeD1cIjRcIiB5PVwiMTBcIi8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0ljb25UYWJsZT5cbilcblxuY29uc3QgSWNvbkNvbHVtbj0oe2NoaWxkcmVuLCAuLi5wcm9wc30pPT4oXG4gICAgPEljb25UYWJsZSB7Li4ucHJvcHN9PlxuICAgICAgICA8QiB4PVwiMTBcIiB5PVwiNFwiLz5cbiAgICAgICAgPEIgeD1cIjEwXCIgeT1cIjEwXCIvPlxuICAgICAgICA8QiB4PVwiMTBcIiB5PVwiMTZcIi8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0ljb25UYWJsZT5cbilcblxuY29uc3QgSWNvblJvdz0oe2NoaWxkcmVuLCAuLi5wcm9wc30pPT4oXG4gICAgPEljb25UYWJsZSB7Li4ucHJvcHN9PlxuICAgICAgICA8QiB4PVwiNFwiIHk9XCIxMFwiLz5cbiAgICAgICAgPEIgeD1cIjEwXCIgeT1cIjEwXCIvPlxuICAgICAgICA8QiB4PVwiMTZcIiB5PVwiMTBcIi8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0ljb25UYWJsZT5cbilcblxuY29uc3QgSWNvbldob2xlVGFibGU9KHtjaGlsZHJlbiwgLi4ucHJvcHN9KT0+KFxuICAgIDxJY29uVGFibGUgey4uLnByb3BzfT5cbiAgICAgICAgPEIgeD1cIjRcIiB5PVwiNFwiLz5cbiAgICAgICAgPEIgeD1cIjEwXCIgeT1cIjRcIi8+XG4gICAgICAgIDxCIHg9XCIxNlwiIHk9XCI0XCIvPlxuXG4gICAgICAgIDxCIHg9XCI0XCIgeT1cIjEwXCIvPlxuICAgICAgICA8QiB4PVwiMTBcIiB5PVwiMTBcIi8+XG4gICAgICAgIDxCIHg9XCIxNlwiIHk9XCIxMFwiLz5cblxuICAgICAgICA8QiB4PVwiNFwiIHk9XCIxNlwiLz5cbiAgICAgICAgPEIgeD1cIjEwXCIgeT1cIjE2XCIvPlxuICAgICAgICA8QiB4PVwiMTZcIiB5PVwiMTZcIi8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0ljb25UYWJsZT5cbilcblxuY29uc3QgWD0oe3NpemU6dz04LHA9KDI0LXcpLzIsIC4uLnByb3BzfSk9PjxwYXRoIGQ9e2BNMCAwIGwke3d9ICR7d30gTTAgJHt3fSBsJHt3fSAtJHt3fWB9IHN0cm9rZT1cInJlZFwiIHN0cm9rZVdpZHRoPXsyfSB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoJHtwfSAke3B9KWB9IHsuLi5wcm9wc30vPlxuXG5cbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtUb29sYmFyLFRhYn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcbmltcG9ydCBEZXNpZ24gZnJvbSBcIi4vZGVzaWduXCJcbmV4cG9ydCBkZWZhdWx0IHByb3BzPT4oXG5cdDxUYWIgbGFiZWw9XCJUYWJsZVwiPlxuXHRcdDxUb29sYmFyPjxEZXNpZ24vPjwvVG9vbGJhcj5cblx0PC9UYWI+XG4pXG4iLCJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2NvbXBvc2UsIG1hcFByb3BzfSBmcm9tIFwicmVjb21wb3NlXCJcblxuaW1wb3J0IHsgUG9wb3ZlcixTdWJoZWFkZXIsIFRvb2xiYXJHcm91cH0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcbmltcG9ydCBJY29uVGFibGUgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvYm9yZGVyLWFsbFwiXG5cbmltcG9ydCB7QUNUSU9OLCB3aGVuU2VsZWN0aW9uQ2hhbmdlfSBmcm9tIFwid2UtZWRpdFwiXG5pbXBvcnQgU2l6ZUljb25CdXR0b24gZnJvbSBcIi4uL2NvbXBvbmVudHMvc2l6ZS1pY29uLWJ1dHRvblwiXG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBSaWJib259IGZyb20gXCIuL3JpYmJvblwiXG5cbmV4cG9ydCBjb25zdCBDcmVhdGU9d2hlblNlbGVjdGlvbkNoYW5nZSgpKGNsYXNzICBleHRlbmRzIENvbXBvbmVudHtcblx0c3RhdGU9e3Nob3c6ZmFsc2V9XG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtzZWxlY3Rpb24sIGNoaWxkcmVufT10aGlzLnByb3BzXG5cdFx0Y29uc3Qge3Nob3csYW5jaG9yfT10aGlzLnN0YXRlXG5cdFx0bGV0IHNldHRpbmc9bnVsbFxuXHRcdGlmKHNlbGVjdGlvbiAmJiBzaG93KXtcblx0XHRcdHNldHRpbmc9KFxuXHRcdFx0XHQ8UG9wb3ZlclxuXHRcdFx0XHRcdG9wZW49e3RydWV9XG5cdFx0XHRcdFx0YW5jaG9yRWw9e2FuY2hvcn1cblx0XHRcdFx0XHRvblJlcXVlc3RDbG9zZT17ZT0+dGhpcy5zZXRTdGF0ZSh7c2hvdzpmYWxzZX0pfVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHQ8U2V0dGluZyBvbkFjdGlvbj17ZT0+dGhpcy5zZXRTdGF0ZSh7c2hvdzpmYWxzZX0pfS8+XG5cdFx0XHRcdDwvUG9wb3Zlcj5cblx0XHRcdClcblx0XHR9XG5cdFx0cmV0dXJuIChcblx0XHRcdDxUb29sYmFyR3JvdXA+XG5cdFx0XHRcdDxTaXplSWNvbkJ1dHRvblxuXHRcdFx0XHRcdGRpc2FibGVkPXshc2VsZWN0aW9ufVxuXHRcdFx0XHRcdG9uQ2xpY2s9e2U9PnRoaXMuc2V0U3RhdGUoe3Nob3c6IXRoaXMuc3RhdGUuc2hvdyxhbmNob3I6ZS50YXJnZXR9KX0+XG5cdFx0XHRcdFx0PEljb25UYWJsZS8+XG5cdFx0XHRcdDwvU2l6ZUljb25CdXR0b24+XG5cdFx0XHRcdHtzZXR0aW5nfVxuXHRcdFx0XHR7Y2hpbGRyZW59XG5cdFx0XHQ8L1Rvb2xiYXJHcm91cD5cblx0XHQpXG5cdH1cbn0pXG5cbmNsYXNzIFNldHRpbmcgZXh0ZW5kcyBDb21wb25lbnR7XG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtvbkFjdGlvbn09dGhpcy5wcm9wc1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2PlxuXHRcdFx0XHQ8UkNTaXplIG9uQWN0aW9uPXtvbkFjdGlvbn0vPlxuXHRcdFx0PC9kaXY+XG5cdFx0KVxuXHR9XG59XG5cbmNvbnN0IFJDU2l6ZT1jb21wb3NlKFxuXHR3aGVuU2VsZWN0aW9uQ2hhbmdlKCksXG5cdG1hcFByb3BzKCh7b25BY3Rpb24sc2VsZWN0aW9uLGRpc3BhdGNofSk9Pih7XG5cdFx0Y3JlYXRlKHJvd3MsIGNvbCl7XG5cdFx0XHRsZXQgbGF5b3V0V2lkdGg9KCgpPT57XG5cdFx0XHRcdGxldCB7Y29sdW1uPTAsY29sc309c2VsZWN0aW9uLnByb3BzKFwicGFnZVwiKVxuXHRcdFx0XHRyZXR1cm4gY29sc1tjb2x1bW5dLndpZHRoXG5cdFx0XHR9KSgpO1xuXG5cdFx0XHRsZXQgY29scz1uZXcgQXJyYXkoY29sLTEpLmZpbGwocGFyc2VJbnQobGF5b3V0V2lkdGgvY29sKSlcblx0XHRcdGNvbHMucHVzaChsYXlvdXRXaWR0aC1jb2xzLnJlZHVjZSgoc3VtLGEpPT5zdW0rPWEsMCkpXG5cdFx0XHRsZXQgZWxlbWVudD17dHlwZTpcInRhYmxlXCIsIHJvd3MsIGNvbHN9XG5cdFx0XHRkaXNwYXRjaChBQ1RJT04uRW50aXR5LkNSRUFURShlbGVtZW50KSlcblx0XHRcdG9uQWN0aW9uKClcblx0XHR9XG5cdH0pKVxuKShjbGFzcyBSQ1NpemUgZXh0ZW5kcyBDb21wb25lbnR7XG5cdHN0YXRlPXtyb3c6MCxjb2w6MH1cblx0cmVuZGVyKCl7XG5cdFx0Y29uc3Qge3JvdywgY29sfT10aGlzLnN0YXRlXG5cdFx0bGV0IHRpdGxlPVwiSW5zZXJ0IFRhYmxlXCJcblx0XHRpZihyb3cpe1xuXHRcdFx0dGl0bGU9YCR7cm93fXgke2NvbH0gVGFibGVgXG5cdFx0fVxuXG5cdFx0Y29uc3QgdHI9dGhpcy50ci5iaW5kKHRoaXMpXG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PGRpdj5cblx0XHRcdFx0PFN1YmhlYWRlcj57dGl0bGV9PC9TdWJoZWFkZXI+XG5cdFx0XHRcdDx0YWJsZSBvbk1vdXNlT3V0PXtlPT50aGlzLnNldFN0YXRlKHtyb3c6MCxjb2w6MH0pfT5cblx0XHRcdFx0XHQ8dGJvZHk+XG5cdFx0XHRcdFx0XHR7dHIoKX1cblx0XHRcdFx0XHRcdHt0cigpfVxuXHRcdFx0XHRcdFx0e3RyKCl9XG5cdFx0XHRcdFx0XHR7dHIoKX1cblx0XHRcdFx0XHRcdHt0cigpfVxuXHRcdFx0XHRcdFx0e3RyKCl9XG5cdFx0XHRcdFx0XHR7dHIoKX1cblx0XHRcdFx0XHRcdHt0cigpfVxuXHRcdFx0XHRcdFx0e3RyKCl9XG5cdFx0XHRcdFx0XHR7dHIoKX1cblx0XHRcdFx0XHQ8L3Rib2R5PlxuXHRcdFx0XHQ8L3RhYmxlPlxuXHRcdFx0PC9kaXY+XG5cdFx0KVxuXHR9XG5cblx0dHIoKXtcblx0XHRjb25zdCB7Y3JlYXRlfT10aGlzLnByb3BzXG5cdFx0Y29uc3Qge3JvdywgY29sfT10aGlzLnN0YXRlXG5cdFx0Y29uc3QgdGQ9KCk9Pig8dGRcblx0XHRcdHN0eWxlPXt7d2lkdGg6NSxoZWlnaHQ6NSxib3JkZXI6XCIxcHggc29saWQgZ3JheVwifX1cblx0XHRcdG9uQ2xpY2s9e2U9PmNyZWF0ZShyb3csY29sKX1cblx0XHRcdG9uTW91c2VPdmVyPXtlPT50aGlzLnJvd0NvbChlLnRhcmdldCl9Lz4pXG5cdFx0cmV0dXJuIChcblx0XHRcdDx0cj5cblx0XHRcdFx0e3RkKCl9XG5cdFx0XHRcdHt0ZCgpfVxuXHRcdFx0XHR7dGQoKX1cblx0XHRcdFx0e3RkKCl9XG5cdFx0XHRcdHt0ZCgpfVxuXHRcdFx0XHR7dGQoKX1cblx0XHRcdFx0e3RkKCl9XG5cdFx0XHRcdHt0ZCgpfVxuXHRcdFx0XHR7dGQoKX1cblx0XHRcdFx0e3RkKCl9XG5cdFx0XHQ8L3RyPlxuXHRcdClcblx0fVxuXG5cdHJvd0NvbCh0ZCl7XG5cdFx0bGV0IHRyPXRkLnBhcmVudE5vZGVcblx0XHRsZXQgdGJvZHk9dHIucGFyZW50Tm9kZVxuXHRcdGxldCByb3c9LTEsIGNvbD0tMVxuXHRcdGZvcihsZXQgaT0wLCB0cnM9dGJvZHkuY2hpbGRyZW4sIGxlbj10cnMubGVuZ3RoO2k8bGVuO2krKyl7XG5cdFx0XHRpZih0cnNbaV09PXRyKXtcblx0XHRcdFx0cm93PWkrMVxuXHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZvcihsZXQgaT0wLCB0ZHM9dHIuY2hpbGRyZW4sIGxlbj10ZHMubGVuZ3RoO2k8bGVuO2krKyl7XG5cdFx0XHRpZih0ZHNbaV09PXRkKXtcblx0XHRcdFx0Y29sPWkrMVxuXHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMuc2V0U3RhdGUoe3JvdywgY29sfSlcblx0fVxufSlcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtjb21wb3NlLHNldERpc3BsYXlOYW1lLG1hcFByb3BzfSBmcm9tIFwicmVjb21wb3NlXCJcbmltcG9ydCB7d2hlblNlbGVjdGlvbkNoYW5nZX0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQge01lbnVJdGVtLFN2Z0ljb24sVG9vbGJhckdyb3VwfSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuaW1wb3J0IERyb3Bkb3duQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL2Ryb3AtZG93bi1idXR0b25cIlxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxuICAgIHNldERpc3BsYXlOYW1lKFwiUGljdHVyZVNpemVcIiksXG4gICAgd2hlblNlbGVjdGlvbkNoYW5nZSgpLFxuICAgIG1hcFByb3BzKCh7ZGlzcGF0Y2h9KT0+e1xuICAgIH0pLFxuKSgoe30pPT57XG4gICAgcmV0dXJuIChcbiAgICAgICAgPFRvb2xiYXJHcm91cD5cbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7d2hpdGVTcGFjZTpcIm5vd3JhcFwiLCBtYXJnaW5MZWZ0OjIsIG1hcmdpblJpZ3RoOjJ9fT5cbiAgICAgICAgICAgICAgICA8c3Bhbj5oZWlnaHQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIi8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT17e3doaXRlU3BhY2U6XCJub3dyYXBcIiwgbWFyZ2luTGVmdDoyLCBtYXJnaW5SaWd0aDoyfX0+XG4gICAgICAgICAgICAgICAgPHNwYW4+d2lkdGg8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIi8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvVG9vbGJhckdyb3VwPlxuICAgIClcbn0pIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2NvbXBvc2Usc2V0RGlzcGxheU5hbWUsbWFwUHJvcHN9IGZyb20gXCJyZWNvbXBvc2VcIlxuaW1wb3J0IHt3aGVuU2VsZWN0aW9uQ2hhbmdlfSBmcm9tIFwid2UtZWRpdFwiXG5cbmltcG9ydCB7TWVudUl0ZW0sU3ZnSWNvbixUb29sYmFyR3JvdXAsIFN1YmhlYWRlcn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcbmltcG9ydCBEcm9wZG93bkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9kcm9wLWRvd24tYnV0dG9uXCJcbmltcG9ydCBDb2xvckJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9jb2xvci1idXR0b25cIlxuaW1wb3J0IEljb25Db2xvciBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2ltYWdlL2NvbG9yLWxlbnNcIlxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoXG4gICAgc2V0RGlzcGxheU5hbWUoXCJQaWN0dXJlQm9yZGVyXCIpLFxuICAgIHdoZW5TZWxlY3Rpb25DaGFuZ2UoKSxcbikoKHt9KT0+e1xuICAgIHJldHVybiAoXG4gICAgICAgIDxUb29sYmFyR3JvdXA+XG4gICAgICAgICAgICA8Q29sb3JCdXR0b24gbGFiZWw9XCJib3JkZXIgY29sb3JcIj5cbiAgICAgICAgICAgICAgICA8SWNvbkNvbG9yLz5cbiAgICAgICAgICAgIDwvQ29sb3JCdXR0b24+XG5cbiAgICAgICAgICAgIDxEcm9wZG93bkJ1dHRvbiBsYWJlbD1cImJvcmRlciBjb2xvclwiPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cImF1dG9tYXRpY1wiPjwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwibm8gY29sb3JcIj48L01lbnVJdGVtPlxuICAgICAgICAgICAgICAgIDxTdWJoZWFkZXI+VGhlbWUgQ29sb3JzPC9TdWJoZWFkZXI+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICA8U3ZnSWNvbi8+XG4gICAgICAgICAgICAgICAgICAgIDxTdmdJY29uLz5cbiAgICAgICAgICAgICAgICAgICAgPFN2Z0ljb24vPlxuICAgICAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgPFN1YmhlYWRlcj5TdGFuZGFyZCBDb2xvcnM8L1N1YmhlYWRlcj5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxTdmdJY29uLz5cbiAgICAgICAgICAgICAgICAgICAgPFN2Z0ljb24vPlxuICAgICAgICAgICAgICAgICAgICA8U3ZnSWNvbi8+XG4gICAgICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICAgIDwvRHJvcGRvd25CdXR0b24+XG4gICAgICAgIDwvVG9vbGJhckdyb3VwPlxuICAgIClcbn0pIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2NvbXBvc2Usc2V0RGlzcGxheU5hbWUsbWFwUHJvcHN9IGZyb20gXCJyZWNvbXBvc2VcIlxuaW1wb3J0IHt3aGVuU2VsZWN0aW9uQ2hhbmdlfSBmcm9tIFwid2UtZWRpdFwiXG5cbmltcG9ydCB7TWVudUl0ZW0sU3ZnSWNvbixUb29sYmFyR3JvdXAsIERpdmlkZXJ9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgRHJvcGRvd25CdXR0b24gZnJvbSBcIi4uL2NvbXBvbmVudHMvZHJvcC1kb3duLWJ1dHRvblwiXG5pbXBvcnQgSWNvblJvdGF0ZSBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2ltYWdlL3JvdGF0ZS05MC1kZWdyZWVzLWNjd1wiXG5pbXBvcnQgSWNvbldyYXAgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9hY3Rpb24vcGljdHVyZS1pbi1waWN0dXJlXCJcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcbiAgICBzZXREaXNwbGF5TmFtZShcIlBpY3R1cmVQb3NpdGlvblwiKSxcbiAgICB3aGVuU2VsZWN0aW9uQ2hhbmdlKCksXG4gICAgbWFwUHJvcHMoKHtkaXNwYXRjaH0pPT57XG4gICAgfSksXG4pKCh7fSk9PntcbiAgICByZXR1cm4gKFxuICAgICAgICA8VG9vbGJhckdyb3VwPlxuICAgICAgICAgICAgPERyb3Bkb3duQnV0dG9uIGxhYmVsPVwid3JhcCB0ZXh0XCIgaWNvbj17PEljb25XcmFwLz59PlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkluIExpbmUgd2l0aCBUZXh0XCIgbGVmdEljb249ezxJY29uV3JhcC8+fS8+XG4gICAgICAgICAgICAgICAgPERpdmlkZXIvPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIlNxdWFyZVwiIGxlZnRJY29uPXs8SWNvbldyYXAvPn0vPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIlRpZ2h0XCIgbGVmdEljb249ezxJY29uV3JhcC8+fS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiVGhyb3VnaFwiIGxlZnRJY29uPXs8SWNvbldyYXAvPn0vPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIlRvcCBhbmQgQm90dG9tXCIgbGVmdEljb249ezxJY29uV3JhcC8+fS8+XG4gICAgICAgICAgICAgICAgPERpdmlkZXIvPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkJlaGluZCBUZXh0XCIgbGVmdEljb249ezxJY29uV3JhcC8+fS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiSW4gRnJvbnQgb2YgVGV4dFwiIGxlZnRJY29uPXs8SWNvbldyYXAvPn0vPlxuICAgICAgICAgICAgICAgIDxEaXZpZGVyLz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJNb3JlIExheW91dCBPcHRpb25zLi4uXCIvPlxuICAgICAgICAgICAgPC9Ecm9wZG93bkJ1dHRvbj5cblxuICAgICAgICAgICAgPERyb3Bkb3duQnV0dG9uIGxhYmVsPVwicm90YXRlXCIgaWNvbj17PEljb25Sb3RhdGUvPn0+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiUm90YXRlIFJpZ2h0IDkwXCIgbGVmdEljb249ezxJY29uUm90YXRlIGRlZ3JlZT17OTB9Lz59Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJSb3RhdGUgTGVmdCA5MFwiIGxlZnRJY29uPXs8SWNvblJvdGF0ZSBkZWdyZWU9ey05MH0vPn0vPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkZsaXAgVmVydGljYWxcIiBsZWZ0SWNvbj17PEljb25Sb3RhdGUgZGVncmVlPXsxODB9Lz59Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJGbGlwIEhvcml6b250YWxcIiBsZWZ0SWNvbj17PEljb25Sb3RhdGUgZGVncmVlPXstMTgwfS8+fS8+XG4gICAgICAgICAgICAgICAgPERpdmlkZXIvPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIk1vcmUgUm90YXRpb24gT3B0aW9ucy4uLlwiLz5cbiAgICAgICAgICAgIDwvRHJvcGRvd25CdXR0b24+XG4gICAgICAgIDwvVG9vbGJhckdyb3VwPlxuICAgIClcbn0pIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2NvbXBvc2Usc2V0RGlzcGxheU5hbWUsbWFwUHJvcHN9IGZyb20gXCJyZWNvbXBvc2VcIlxuaW1wb3J0IHt3aGVuU2VsZWN0aW9uQ2hhbmdlfSBmcm9tIFwid2UtZWRpdFwiXG5cbmltcG9ydCB7TWVudUl0ZW0sU3ViaGVhZGVyLFRvb2xiYXJHcm91cH0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcbmltcG9ydCBEcm9wZG93bkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9kcm9wLWRvd24tYnV0dG9uXCJcbmltcG9ydCBJY29uQ29sb3IgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9pbWFnZS9jb2xvci1sZW5zXCJcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcbiAgICBzZXREaXNwbGF5TmFtZShcIlBpY3R1cmVFZmZlY3RcIiksXG4gICAgd2hlblNlbGVjdGlvbkNoYW5nZSgpLFxuICAgIG1hcFByb3BzKCh7ZGlzcGF0Y2h9KT0+e1xuICAgICAgICByZXR1cm4ge1xuXG4gICAgICAgIH1cbiAgICB9KSxcbikoKHt9KT0+e1xuICAgIHJldHVybiAoXG4gICAgICAgIDxUb29sYmFyR3JvdXA+XG4gICAgICAgICAgICA8RHJvcGRvd25CdXR0b24gbGFiZWw9XCJwaWN0dXJlIGNvbG9yXCIgaWNvbj17PEljb25Db2xvci8+fT5cbiAgICAgICAgICAgICAgICA8U3ViaGVhZGVyPlJlY29sb3I8L1N1YmhlYWRlcj5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICAgIDwvRHJvcGRvd25CdXR0b24+XG4gICAgICAgIDwvVG9vbGJhckdyb3VwPlxuICAgIClcbn0pIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1Rvb2xiYXIsVG9vbGJhckdyb3VwLFRhYn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcblxuaW1wb3J0IFNpemUgZnJvbSBcIi4vc2l6ZVwiXG5pbXBvcnQgQm9yZGVyIGZyb20gXCIuL2JvcmRlclwiXG5pbXBvcnQgUG9zaXRpb24gZnJvbSBcIi4vcG9zaXRpb25cIlxuaW1wb3J0IEVmZmVjdCBmcm9tIFwiLi9lZmZlY3RcIlxuXG5leHBvcnQgZGVmYXVsdCAoe2NoaWxkcmVufSk9Pihcblx0PFRhYiBsYWJlbD1cIlBpY3R1cmUgRm9ybWF0XCI+XG5cdFx0PFRvb2xiYXI+XG5cdFx0XHQ8VG9vbGJhckdyb3VwPlxuXHRcdFx0XHQ8RWZmZWN0Lz5cblx0XHRcdFx0PEJvcmRlci8+XG5cdFx0XHRcdDxQb3NpdGlvbi8+XG5cdFx0XHRcdDxTaXplLz5cdFxuXHRcdFx0XHR7Y2hpbGRyZW59XG5cdFx0XHQ8L1Rvb2xiYXJHcm91cD5cblx0XHQ8L1Rvb2xiYXI+XG5cdDwvVGFiPlxuKSIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQge2NvbXBvc2UsIGdldENvbnRleHQsIG1hcFByb3BzfSBmcm9tIFwicmVjb21wb3NlXCJcblxuaW1wb3J0IHtUb29sYmFyR3JvdXB9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgSWNvblBpY3R1cmUgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvaW5zZXJ0LXBob3RvXCJcblxuaW1wb3J0IFNpemVJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL3NpemUtaWNvbi1idXR0b25cIlxuaW1wb3J0IHNlbGVjdEZpbGUgZnJvbSBcIi4uL2NvbXBvbmVudHMvZmlsZS1zZWxlY3RcIlxuXG5pbXBvcnQge0FDVElPTiwgY29ubmVjdH0gZnJvbSBcIndlLWVkaXRcIlxuXG5leHBvcnQge2RlZmF1bHQgYXMgUmliYm9ufSBmcm9tIFwiLi9yaWJib25cIlxuaW1wb3J0IEZpbGVUeXBlIGZyb20gXCJmaWxlLXR5cGUvYnJvd3NlclwiXG5cbmV4cG9ydCBjb25zdCBUb29scz1jb21wb3NlKFxuXHRjb25uZWN0KCksXG5cdG1hcFByb3BzKCh7Y2hpbGRyZW4sZGlzcGF0Y2h9KT0+KHtcblx0XHRjaGlsZHJlbixcblx0XHRpbnNlcnQodXJsKXtcblx0XHRcdGZldGNoKHVybClcblx0XHRcdFx0LnRoZW4ocmVzPT57XG5cdFx0XHRcdFx0aWYoIXJlcy5vayl7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IocmVzLnN0YXR1c1RleHQpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiByZXMuYXJyYXlCdWZmZXIoKVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQudGhlbihkYXRhPT57XG5cdFx0XHRcdFx0ZGF0YT1uZXcgVWludDhBcnJheShkYXRhKVxuXHRcdFx0XHRcdGRhdGEuY3JjMzI9dXJsXG5cdFx0XHRcdFx0RmlsZVR5cGUuZnJvbUJ1ZmZlcihkYXRhKVxuXHRcdFx0XHRcdC50aGVuKG1pbWU9Pntcblx0XHRcdFx0XHRcdGRlYnVnZ2VyXG5cdFx0XHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uRW50aXR5LkNSRUFURSh7dHlwZTpcImltYWdlXCIsZGF0YSwgbWltZX0pKVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pXG5cdFx0fVxuXHR9KSksXG4pKCh7Y2hpbGRyZW4sIGluc2VydH0pPT57XG5cdHJldHVybiAoXG5cdFx0PFRvb2xiYXJHcm91cD5cblx0XHRcdDxTaXplSWNvbkJ1dHRvbiBcblx0XHRcdFx0b25DbGljaz17ZT0+c2VsZWN0RmlsZShcImltYWdlLypcIikudGhlbihpbnNlcnQpfT5cblx0XHRcdFx0PEljb25QaWN0dXJlLz5cblx0XHRcdDwvU2l6ZUljb25CdXR0b24+XG5cdFx0XHRcblx0XHRcdHtjaGlsZHJlbn1cblx0XHQ8L1Rvb2xiYXJHcm91cD5cblx0KVxufSlcblxuXG5cbiIsImltcG9ydCBSZWFjdCx7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2NvbXBvc2UsIG1hcFByb3BzLCBzZXREaXNwbGF5TmFtZX0gZnJvbSBcInJlY29tcG9zZVwiXG5cbmltcG9ydCB7VG9vbGJhckdyb3VwLCBTdmdJY29ufSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuXG5pbXBvcnQgTWVudUl0ZW0gZnJvbSAnbWF0ZXJpYWwtdWkvTWVudUl0ZW0nXG5pbXBvcnQgU3ViaGVhZGVyIGZyb20gJ21hdGVyaWFsLXVpL1N1YmhlYWRlcidcbmltcG9ydCBEcm9wRG93bkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9kcm9wLWRvd24tYnV0dG9uXCJcbmltcG9ydCBJY29uQ2hlY2tlZCBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2FjdGlvbi9kb25lXCJcblxuaW1wb3J0IHtBQ1RJT04sd2hlblNlbGVjdGlvbkNoYW5nZX0gZnJvbSBcIndlLWVkaXRcIlxuXG5leHBvcnQgY29uc3QgVG9vbHM9Y29tcG9zZShcblx0c2V0RGlzcGxheU5hbWUoXCJQYWdlIExheW91dFwiKSxcblx0d2hlblNlbGVjdGlvbkNoYW5nZSgpLFxuXHRtYXBQcm9wcygoe2NoaWxkcmVuLGRpc3BhdGNoLHNlbGVjdGlvbn0pPT57XG5cdFx0Y29uc3Qgc3R5bGU9c2VsZWN0aW9uJiZzZWxlY3Rpb24ucHJvcHMoXCJwYWdlXCIsZmFsc2UpfHx7fVxuXHRcdHJldHVybiB7XG5cdFx0XHRjaGlsZHJlbixcblx0XHRcdHN0eWxlLFxuXHRcdFx0Y3JlYXRlU2VjdGlvbihwcm9wcz17fSl7XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5FbnRpdHkuQ1JFQVRFKHsuLi5wcm9wcyx0eXBlOlwic2VjdGlvblwiLH0pKVxuXHRcdFx0fSxcblx0XHRcdGNyZWF0ZVBhZ2VCcmVhaygpe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uRW50aXR5LkNSRUFURSh7dHlwZTpcInBhZ2VicmVha1wiLH0pKVxuXHRcdFx0fSxcblx0XHRcdGxhbmRzY2FwZSgpe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uRW50aXR5LlVQREFURSh7dHlwZTpcInNlY3Rpb25cIixvcmllbnRhdGlvbjpcImxhbmRzY2FwZVwifSkpXG5cdFx0XHR9LFxuXHRcdFx0cHJvdHJhaXQoKXtcblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLkVudGl0eS5VUERBVEUoe3R5cGU6XCJzZWN0aW9uXCIsb3JpZW50YXRpb246XCJwb3J0cmFpdFwifSkpXG5cdFx0XHR9LFxuXHRcdFx0bWFyZ2luKC4uLm1hcmdpbil7XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5FbnRpdHkuVVBEQVRFKHt0eXBlOlwic2VjdGlvblwiLG1hcmdpbn0pKVxuXHRcdFx0fSxcblx0XHRcdHNpemUod2lkdGgsaGVpZ2h0KXtcblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLkVudGl0eS5VUERBVEUoe3R5cGU6XCJzZWN0aW9uXCIsc2l6ZTp7d2lkdGgsaGVpZ2h0fX0pKVxuXHRcdFx0fSxcblx0XHRcdGNvbHVtbiguLi5jb2xzKXtcblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLkVudGl0eS5VUERBVEUoe3R5cGU6XCJzZWN0aW9uXCIsY29sc30pKVxuXHRcdFx0fSxcblx0XHRcdHNpemVFcXVhbCh3LGgpe1xuXHRcdFx0XHRjb25zdCBzaXplPXN0eWxlLnNpemVcblx0XHRcdFx0cmV0dXJuIHNpemUgJiYgTWF0aC5hYnMoc2l6ZS53aWR0aCpoLXNpemUuaGVpZ2h0KncpPDAuMVxuXHRcdFx0fSxcblx0XHRcdG1hcmdpbkVxdWFsKC4uLm1hcmdpbnMpe1xuXHRcdFx0XHRjb25zdCBbdG9wLHJpZ2h0PXRvcCxib3R0b209dG9wLGxlZnQ9cmlnaHRdPW1hcmdpbnNcblx0XHRcdFx0Y29uc3QgbWFyZ2luPXN0eWxlLm1hcmdpblxuXHRcdFx0XHR2YXIgYVxuXHRcdFx0XHRyZXR1cm4gbWFyZ2luICYmIFxuXHRcdFx0XHRcdChhPXBhcnNlSW50KG1hcmdpbi50b3AqMTAwL3RvcCkpICYmXG5cdFx0XHRcdFx0TWF0aC5hYnMoYS1tYXJnaW4ucmlnaHQqMTAwL3JpZ2h0KTwxICYmXG5cdFx0XHRcdFx0TWF0aC5hYnMoYS1tYXJnaW4uYm90dG9tKjEwMC9ib3R0b20pPDEgJiZcblx0XHRcdFx0XHRNYXRoLmFicyhhLW1hcmdpbi5sZWZ0KjEwMC9sZWZ0KTwxXG5cdFx0XHR9LFxuXHRcdFx0Y29scyhuLCBmPWE9PmEpe1xuXHRcdFx0XHRjb25zdCBjb2xzPXN0eWxlLmNvbHNcblx0XHRcdFx0cmV0dXJuIGNvbHMgJiYgY29scy5sZW5ndGg9PW4gJiYgZiguLi5jb2xzLm1hcChhPT5hLndpZHRoKSlcblx0XHRcdH1cblx0XHR9XG5cdH0pLFxuKSgoe2NoaWxkcmVuLCBjcmVhdGVTZWN0aW9uLGNyZWF0ZVBhZ2VCcmVhaywgbWFyZ2luLCBzaXplLCBjb2x1bW4sIGxhbmRzY2FwZSxwcm90cmFpdCwgXG5cdHNpemVFcXVhbCxtYXJnaW5FcXVhbCwgY29scyxcblx0c3R5bGVcbn0pPT57XG5cdHJldHVybiAoXG5cdFx0PFRvb2xiYXJHcm91cD5cdFx0XHRcblx0XHRcdDxEcm9wRG93bkJ1dHRvbiBcblx0XHRcdFx0bGFiZWw9XCJCcmVha3NcIlxuXHRcdFx0XHR0aXRsZT1cInBhZ2UgYnJlYWtzXCJcblx0XHRcdFx0aWNvbj17XG5cdFx0XHRcdFx0PFN2Z0ljb24+XG5cdFx0XHRcdFx0XHQ8SWNvblBhZ2UgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgLTEyKVwiLz5cblx0XHRcdFx0XHRcdDxsaW5lIHN0cm9rZURhc2hhcnJheT1cIjJcIiBzdHJva2U9XCJibHVlXCIgeDE9XCIwXCIgeDI9XCIyNFwiIHkxPVwiMTJcIiB5Mj1cIjEyXCIgc3Ryb2tlV2lkdGg9XCIyXCIvPlxuXHRcdFx0XHRcdFx0PEljb25QYWdlIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDEyKVwiLz5cblx0XHRcdFx0XHQ8L1N2Z0ljb24+XG5cdFx0XHRcdH0+XG5cdFx0XHRcdDxTdWJoZWFkZXI+UGFnZSBCcmVha3M8L1N1YmhlYWRlcj5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiUGFnZVwiIGxlZnRJY29uPXtcblx0XHRcdFx0XHRcdDxTdmdJY29uPlxuXHRcdFx0XHRcdFx0XHQ8SWNvbkJsYW5rIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIC0xMilcIi8+XG5cdFx0XHRcdFx0XHRcdDxwYXRoIGQ9XCJNMSAxMCBsMiAybC0yIDJ6XCIgZmlsbD1cImJsdWVcIi8+XG5cdFx0XHRcdFx0XHRcdDxJY29uQmxhbmsgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMTIpXCIvPlxuXHRcdFx0XHRcdFx0PC9TdmdJY29uPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvbkNsaWNrPXsoKT0+Y3JlYXRlUGFnZUJyZWFrKCl9XHRcblx0XHRcdFx0XHQvPlxuXG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkNvbHVtblwiIGxlZnRJY29uPXtcblx0XHRcdFx0XHQ8U3ZnSWNvbj5cblx0XHRcdFx0XHRcdDxwYXRoIGQ9XCJNOSA3IGwwIDEwIE0xNCA3IGwwIDEwXCIgc3Ryb2tlRGFzaGFycmF5PVwiMlwiIHN0cm9rZT1cImJsdWVcIiBzdHJva2VXaWR0aD1cIjJcIi8+XG5cdFx0XHRcdFx0XHQ8SWNvbkJsYW5rIC8+XG5cdFx0XHRcdFx0XHQ8cGF0aCBkPVwiTTguNSAxOCBoMyB2LTEyIGgxXCIgc3Ryb2tlPVwicmVkXCIgc3Ryb2tlV2lkdGg9XCIxXCIgZmlsbD1cIm5vbmVcIi8+XG5cdFx0XHRcdFx0PC9TdmdJY29uPlxuXHRcdFx0XHR9Lz5cblxuXHRcdFx0XHQ8U3ViaGVhZGVyPlNlY3Rpb24gQnJlYWtzPC9TdWJoZWFkZXI+XG5cdFx0XHRcdDxNZW51SXRlbSBcblx0XHRcdFx0XHRwcmltYXJ5VGV4dD1cIk5leHQgUGFnZVwiIFxuXHRcdFx0XHRcdG9uQ2xpY2s9e2U9PmNyZWF0ZVNlY3Rpb24oKX1cblx0XHRcdFx0XHRsZWZ0SWNvbj17XG5cdFx0XHRcdFx0XHQ8U3ZnSWNvbj5cblx0XHRcdFx0XHRcdFx0PEljb25QYWdlIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIC0xMilcIi8+XG5cdFx0XHRcdFx0XHRcdDxwYXRoIGQ9XCJNMSAxMCBsMiAybC0yIDJ6XCIgZmlsbD1cImJsdWVcIi8+XG5cdFx0XHRcdFx0XHRcdDxJY29uUGFnZSB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAxMilcIi8+XG5cdFx0XHRcdFx0XHQ8L1N2Z0ljb24+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkNvbnRpbnVvdXNcIiBcblx0XHRcdFx0XHRsZWZ0SWNvbj17XG5cdFx0XHRcdFx0XHQ8U3ZnSWNvbj5cblx0XHRcdFx0XHRcdFx0PHBhdGggZD1cIk0xMiA2IGwwIDVcIiBzdHJva2VEYXNoYXJyYXk9XCIxXCIgc3Ryb2tlPVwibGlnaHRibHVlXCIgc3Ryb2tlV2lkdGg9XCIxMFwiLz5cblx0XHRcdFx0XHRcdFx0PEljb25CbGFuayAvPlxuXHRcdFx0XHRcdFx0XHQ8cGF0aCBkPVwiTTEgMTAgbDIgMmwtMiAyelwiIGZpbGw9XCJibHVlXCIvPlxuXHRcdFx0XHRcdFx0XHQ8cGF0aCBkPVwiTTEyIDEyIGwwIDVcIiBzdHJva2VEYXNoYXJyYXk9XCIxXCIgc3Ryb2tlPVwiYmx1ZVwiIHN0cm9rZVdpZHRoPVwiMTBcIi8+XG5cdFx0XHRcdFx0XHQ8L1N2Z0ljb24+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG9uQ2xpY2s9e2U9PmNyZWF0ZVNlY3Rpb24oe2tpbmQ6XCJjb250aW51b3VzXCJ9KX0vPlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJFdmVuIFBhZ2VcIiBcblx0XHRcdFx0XHRsZWZ0SWNvbj17XG5cdFx0XHRcdFx0XHQ8U3ZnSWNvbj5cblx0XHRcdFx0XHRcdFx0PEljb25CbGFuayB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAtMTIpXCIvPlxuXHRcdFx0XHRcdFx0XHQ8SWNvbkJsYW5rIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDEyKVwiLz5cblx0XHRcdFx0XHRcdFx0PHRleHQgeD1cIjEwXCIgeT1cIjZcIiBmb250U2l6ZT1cIjZcIiBmb250RmFtaWx5PVwiYXJpYWxcIiBzdHJva2U9XCJibHVlXCI+MjwvdGV4dD5cblx0XHRcdFx0XHRcdFx0PHRleHQgeD1cIjEwXCIgeT1cIjIyXCIgZm9udFNpemU9XCI2XCIgZm9udEZhbWlseT1cImFyaWFsXCIgc3Ryb2tlPVwiYmx1ZVwiPjQ8L3RleHQ+XG5cdFx0XHRcdFx0XHQ8L1N2Z0ljb24+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG9uQ2xpY2s9e2U9PmNyZWF0ZVNlY3Rpb24oe2tpbmQ6XCJldmVuUGFnZVwifSl9Lz5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiT2RkIFBhZ2VcIiBcblx0XHRcdFx0XHRsZWZ0SWNvbj17XG5cdFx0XHRcdFx0XHQ8U3ZnSWNvbj5cblx0XHRcdFx0XHRcdFx0PEljb25CbGFuayB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAtMTIpXCIvPlxuXHRcdFx0XHRcdFx0XHQ8SWNvbkJsYW5rIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDEyKVwiLz5cblx0XHRcdFx0XHRcdFx0PHRleHQgeD1cIjEwXCIgeT1cIjZcIiBmb250U2l6ZT1cIjZcIiBmb250RmFtaWx5PVwiYXJpYWxcIiBzdHJva2U9XCJibHVlXCI+MTwvdGV4dD5cblx0XHRcdFx0XHRcdFx0PHRleHQgeD1cIjEwXCIgeT1cIjIyXCIgZm9udFNpemU9XCI2XCIgZm9udEZhbWlseT1cImFyaWFsXCIgc3Ryb2tlPVwiYmx1ZVwiPjM8L3RleHQ+XG5cdFx0XHRcdFx0XHQ8L1N2Z0ljb24+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG9uQ2xpY2s9e2U9PmNyZWF0ZVNlY3Rpb24oe2tpbmQ6XCJvZGRQYWdlXCJ9KX0vPlx0XHRcblx0XHRcdDwvRHJvcERvd25CdXR0b24+XG5cdFx0XHRcblx0XHRcdDxEcm9wRG93bkJ1dHRvbiBcblx0XHRcdFx0bGFiZWw9XCJNYXJnaW5zXCJcblx0XHRcdFx0dGl0bGU9XCJwYWdlIG1hcmdpblwiXG5cdFx0XHRcdGljb249ezxJY29uTWFyZ2luLz59PlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJOb3JtYWxcIiBcblx0XHRcdFx0XHRyaWdodEljb249e21hcmdpbkVxdWFsKDIuNTQpID8gY2hlY2tlZCA6IG51bGx9XG5cdFx0XHRcdFx0bGVmdEljb249ezxJY29uTWFyZ2luLz59IG9uQ2xpY2s9e2U9Pm1hcmdpbigyLjU0KX0vPlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJOYXJyb3dcIiBcblx0XHRcdFx0XHRyaWdodEljb249e21hcmdpbkVxdWFsKDEuMjcpID8gY2hlY2tlZCA6IG51bGx9XG5cdFx0XHRcdFx0bGVmdEljb249ezxTdmdJY29uLz59b25DbGljaz17ZT0+bWFyZ2luKDEuMjcpfS8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIk1vZGVyYXRlXCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXttYXJnaW5FcXVhbCgyLjU0LDEuOTEpID8gY2hlY2tlZCA6IG51bGx9XG5cdFx0XHRcdFx0bGVmdEljb249ezxTdmdJY29uLz59b25DbGljaz17ZT0+bWFyZ2luKDIuNTQsMS45MSl9Lz5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiV2lkZVwiIFxuXHRcdFx0XHRcdHJpZ2h0SWNvbj17bWFyZ2luRXF1YWwoMi41NCw1LjA4KSA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXs8U3ZnSWNvbi8+fW9uQ2xpY2s9e2U9Pm1hcmdpbigyLjU0LDUuMDgpfS8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIk1pcnJvcmVkXCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXttYXJnaW5FcXVhbCgyLjU0LDIuNTQsMi41NCwzLjE4KSA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXs8U3ZnSWNvbi8+fSBvbkNsaWNrPXtlPT5tYXJnaW4oMi41NCwyLjU0LDIuNTQsMy4xOCl9Lz5cdFxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJDdXN0b20gTWFyZ2lucy4uLlwiIGxlZnRJY29uPXs8U3ZnSWNvbi8+fSAvPlx0XHRcdFx0XHRcblx0XHRcdDwvRHJvcERvd25CdXR0b24+XG5cdFx0XHRcblx0XHRcdDxEcm9wRG93bkJ1dHRvbiBcblx0XHRcdFx0bGFiZWw9XCJPcmllbnRhdGlvblwiXG5cdFx0XHRcdHRpdGxlPVwicGFnZSBvcmllbnRhdGlvblwiXG5cdFx0XHRcdGljb249ezxJY29uT3JpZW50YXRpb24vPn0+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIlBvcnRyYWl0XCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXtzdHlsZS5zaXplICYmIHN0eWxlLnNpemUud2lkdGg8c3R5bGUuc2l6ZS5oZWlnaHQgPyBjaGVja2VkIDogbnVsbH1cblx0XHRcdFx0XHRsZWZ0SWNvbj17PFN2Z0ljb24gY2hpbGRyZW49ezxJY29uQmxhbmsvPn0vPn0gb25DbGljaz17cHJvdHJhaXR9Lz5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiTGFuZHNjYXBlXCIgIFxuXHRcdFx0XHRcdHJpZ2h0SWNvbj17c3R5bGUuc2l6ZSAmJiBzdHlsZS5zaXplLndpZHRoPnN0eWxlLnNpemUuaGVpZ2h0ID8gY2hlY2tlZCA6IG51bGx9XG5cdFx0XHRcdFx0bGVmdEljb249ezxTdmdJY29uICBjaGlsZHJlbj17PEljb25CbGFuayB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjUgMCkgcm90YXRlKDkwKVwiIC8+fSAvPn0gb25DbGljaz17bGFuZHNjYXBlfS8+XG5cdFx0XHQ8L0Ryb3BEb3duQnV0dG9uPlxuXHRcdFx0XG5cdFx0XHQ8RHJvcERvd25CdXR0b24gXG5cdFx0XHRcdGxhYmVsPVwiU2l6ZVwiXG5cdFx0XHRcdHRpdGxlPVwicGFnZSBzaXplXCJcblx0XHRcdFx0aWNvbj17PEljb25TaXplLz59PlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJMZXR0ZXJcIiBcblx0XHRcdFx0XHRyaWdodEljb249e3NpemVFcXVhbCgyMS41OSwyNy45NCkgPyBjaGVja2VkIDogbnVsbH1cblx0XHRcdFx0XHRsZWZ0SWNvbj17PFN2Z0ljb24vPn0gb25DbGljaz17ZT0+c2l6ZSgyMS41OSwyNy45NCl9Lz5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiTGVnYWxcIiBcblx0XHRcdFx0XHRyaWdodEljb249e3NpemVFcXVhbCgyMS41OSwzNS41NikgPyBjaGVja2VkIDogbnVsbH1cblx0XHRcdFx0XHRsZWZ0SWNvbj17PFN2Z0ljb24vPn0gb25DbGljaz17ZT0+c2l6ZSgyMS41OSwzNS41Nil9Lz5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiQTNcIiBcblx0XHRcdFx0XHRyaWdodEljb249e3NpemVFcXVhbCgyOS43LDQyLjAxKSA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXs8U3ZnSWNvbi8+fSBvbkNsaWNrPXtlPT5zaXplKDI5LjcsNDIuMDEpfS8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkE0XCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXtzaXplRXF1YWwoMjAuOTksIDI5LjcpID8gY2hlY2tlZCA6IG51bGx9XG5cdFx0XHRcdFx0bGVmdEljb249ezxTdmdJY29uLz59ICBvbkNsaWNrPXtlPT5zaXplKDIwLjk5LCAyOS43KX0vPlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJNb3JlIFBhcGVyIFNpemVzLi4uXCIgIGxlZnRJY29uPXs8U3ZnSWNvbi8+fSAvPlxuXHRcdFx0PC9Ecm9wRG93bkJ1dHRvbj5cblx0XHRcdFxuXHRcdFx0PERyb3BEb3duQnV0dG9uIFxuXHRcdFx0XHRsYWJlbD1cIkNvbHVtbnNcIlxuXHRcdFx0XHR0aXRsZT1cInBhZ2UgY29sdW1uXCJcblx0XHRcdFx0aWNvbj17PEljb25Db2x1bW4gY2hpbGRyZW49e1xuXHRcdFx0XHRcdDxGcmFnbWVudD5cblx0XHRcdFx0XHRcdDxDb2x1bW4vPlxuXHRcdFx0XHRcdFx0PENvbHVtbiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNyAwKVwiLz5cblx0XHRcdFx0XHQ8L0ZyYWdtZW50PlxuXHRcdFx0XHR9Lz59PlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCIxXCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXtjb2xzKDEpID8gY2hlY2tlZCA6IG51bGx9XG5cdFx0XHRcdFx0bGVmdEljb249e1xuXHRcdFx0XHRcdFx0PEljb25Db2x1bW4+XG5cdFx0XHRcdFx0XHRcdDxDb2x1bW4gZD1cIk0xMiA2LjV2MTJcIiBzdHJva2VXaWR0aD1cIjEyXCIvPlxuXHRcdFx0XHRcdFx0PC9JY29uQ29sdW1uPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvbkNsaWNrPXtlPT5jb2x1bW4oMSl9Lz5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiMlwiXG5cdFx0XHRcdFx0cmlnaHRJY29uPXtjb2xzKDIsIChhLGIpPT5hPT1iKSA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXtcblx0XHRcdFx0XHRcdDxJY29uQ29sdW1uPlxuXHRcdFx0XHRcdFx0XHQ8Q29sdW1uLz5cblx0XHRcdFx0XHRcdFx0PENvbHVtbiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNyAwKVwiLz5cblx0XHRcdFx0XHRcdDwvSWNvbkNvbHVtbj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b25DbGljaz17ZT0+Y29sdW1uKDIpfS8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIjNcIiBcblx0XHRcdFx0XHRyaWdodEljb249e2NvbHMoMykgPyBjaGVja2VkIDogbnVsbH1cblx0XHRcdFx0XHRsZWZ0SWNvbj17XG5cdFx0XHRcdFx0XHQ8SWNvbkNvbHVtbj5cblx0XHRcdFx0XHRcdFx0PENvbHVtbiBzdHJva2VXaWR0aD1cIjNcIi8+XG5cdFx0XHRcdFx0XHRcdDxDb2x1bW4gc3Ryb2tlV2lkdGg9XCIzXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDMuNSAwKVwiLz5cblx0XHRcdFx0XHRcdFx0PENvbHVtbiBzdHJva2VXaWR0aD1cIjNcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNyAwKVwiLz5cblx0XHRcdFx0XHRcdDwvSWNvbkNvbHVtbj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b25DbGljaz17ZT0+Y29sdW1uKDMpfS8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkxlZnRcIiBcblx0XHRcdFx0XHRyaWdodEljb249e2NvbHMoMiwoYSxiKT0+YTxiKSA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXtcblx0XHRcdFx0XHRcdDxJY29uQ29sdW1uPlxuXHRcdFx0XHRcdFx0XHQ8Q29sdW1uIHN0cm9rZVdpZHRoPVwiM1wiLz5cblx0XHRcdFx0XHRcdFx0PENvbHVtbiBzdHJva2VXaWR0aD1cIjdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNiAwKVwiLz5cblx0XHRcdFx0XHRcdDwvSWNvbkNvbHVtbj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b25DbGljaz17ZT0+Y29sdW1uKDEsMil9Lz5cdFxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJSaWdodFwiICBcblx0XHRcdFx0XHRyaWdodEljb249e2NvbHMoMiwoYSxiKT0+YT5iKSA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXtcblx0XHRcdFx0XHRcdDxJY29uQ29sdW1uPlxuXHRcdFx0XHRcdFx0XHQ8Q29sdW1uIHN0cm9rZVdpZHRoPVwiN1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxIDApXCIvPlxuXHRcdFx0XHRcdFx0XHQ8Q29sdW1uIHN0cm9rZVdpZHRoPVwiM1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg3IDApXCIvPlxuXHRcdFx0XHRcdFx0PC9JY29uQ29sdW1uPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvbkNsaWNrPXtlPT5jb2x1bW4oMiwxKX0vPlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJNb3JlIENvbHVtbnMuLi5cIiBsZWZ0SWNvbj17PFN2Z0ljb24vPn0gLz5cdFx0XHRcdFx0XG5cdFx0XHQ8L0Ryb3BEb3duQnV0dG9uPlxuXHRcdFx0e2NoaWxkcmVufVxuXHRcdDwvVG9vbGJhckdyb3VwPlxuXHQpXG59KVxuY29uc3QgY2hlY2tlZD08SWNvbkNoZWNrZWQvPlxuXG5jb25zdCBJY29uUGFnZT1wcm9wcz0+PHBhdGggey4uLnByb3BzfSBkPVwiTTggMTZoOHYySDh6bTAtNGg4djJIOHptNi0xMEg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTQgMThINlY0aDd2NWg1djExelwiLz5cbmNvbnN0IEljb25CbGFuaz1wcm9wcz0+PHBhdGggey4uLnByb3BzfSBkPVwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiAyMFY0aDd2NWg1djExSDZ6XCIvPlxuXG5jb25zdCBDb2x1bW49cHJvcHM9PjxwYXRoIGQ9XCJNOC41IDYuNXYxMlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiYmx1ZVwiIHN0cm9rZVdpZHRoPVwiNVwiIHN0cm9rZURhc2hhcnJheT1cIjEuNVwiIHsuLi5wcm9wc30vPlxuY29uc3QgSWNvbkNvbHVtbj0oe3NpemU9MjAsIGQ9KDI0LXNpemUpLzIsIGNoaWxkcmVuLC4uLnByb3BzfSk9Pihcblx0PFN2Z0ljb24gey4uLnByb3BzfT5cblx0XHQ8cGF0aCBkPVwiTTQgMmgxNnYyMEg0elwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiYmxhY2tcIi8+XG5cdFx0e2NoaWxkcmVufVxuXHQ8L1N2Z0ljb24+XG4pXG5cbmNvbnN0IEljb25TaXplPSgpPT4oXG5cdDxTdmdJY29uPlxuXHRcdDxJY29uQmxhbmsgdHJhbnNmb3JtPVwic2NhbGUoMC42KSB0cmFuc2xhdGUoMTAsMTApXCIvPlxuICAgIFx0PHBhdGggZD1cIk05IDMgdjN2LTEuNSBoMTB2LTEuNXYzXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJibHVlXCIvPlxuXHRcdDxwYXRoIGQ9XCJNOSAzIHYzdi0xLjUgaDEwdi0xLjV2M1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiYmx1ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg5LjUgLTEpIHJvdGF0ZSg5MClcIi8+XG5cdDwvU3ZnSWNvbj5cbilcblxuY29uc3QgSWNvbk9yaWVudGF0aW9uPXByb3BzPT4oXG5cdDxTdmdJY29uIHsuLi5wcm9wc30+XG5cdFx0PGcgdHJhbnNmb3JtPVwic2NhbGUoMC44KSB0cmFuc2xhdGUoNCA0KVwiPlxuXHRcdFx0PEljb25CbGFuayB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTMgLTEpIHNjYWxlKDAuOSlcIi8+XG5cdFx0XHQ8SWNvbkJsYW5rIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyNCA0LjUpIHNjYWxlKDAuOSkgcm90YXRlKDkwKVwiLz5cblx0XHQ8L2c+XG5cdDwvU3ZnSWNvbj5cbilcblxuY29uc3QgSWNvbk1hcmdpbj0oe2NoaWxkcmVuLCAuLi5wcm9wc30pPT4oXG5cdDxTdmdJY29uIHsuLi5wcm9wc30+XG5cdFx0PHBhdGggZD1cIk00IDJoMTZ2MjBINHpcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImJsYWNrXCIvPlxuXHRcdFxuXHRcdHtjaGlsZHJlbiB8fCBcblx0XHRcdDxGcmFnbWVudD5cblx0XHRcdFx0PEgvPlxuXHRcdFx0XHQ8SCB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTAgMClcIi8+XG5cdFx0XHRcdDxWLz5cblx0XHRcdFx0PFYgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMTQpXCIvPlxuXHRcdFx0PC9GcmFnbWVudD5cblx0XHR9XG5cdDwvU3ZnSWNvbj5cbilcblxuY29uc3QgSD1wcm9wcz0+PHBhdGggZD1cIk03IDIuNSB2MTlcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImJsdWVcIiB7Li4ucHJvcHN9Lz5cbmNvbnN0IFY9cHJvcHM9PjxwYXRoIGQ9XCJNNC41IDUgaDE1XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJibHVlXCIgey4uLnByb3BzfS8+IiwiaW1wb3J0IFJlYWN0LCB7RnJhZ21lbnQsQ2hpbGRyZW59IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7d2hlblNlbGVjdGlvbkNoYW5nZX0gZnJvbSBcIndlLWVkaXRcIlxuaW1wb3J0IHtjb21wb3NlLHNldERpc3BsYXlOYW1lLGdldENvbnRleHQsc2V0U3RhdGljLGJyYW5jaCxyZW5kZXJOb3RoaW5nfSAgZnJvbSBcInJlY29tcG9zZVwiXG5cbmltcG9ydCB7VG9vbGJhciBhcyBUb29sYmFyMCxUb29sYmFyU2VwYXJhdG9yIGFzIFRvb2xiYXJTZXBhcmF0b3IwLCBUYWJzLCBUYWJ9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgTXVpVGhlbWVQcm92aWRlciBmcm9tICdtYXRlcmlhbC11aS9zdHlsZXMvTXVpVGhlbWVQcm92aWRlcidcbmltcG9ydCBnZXRNdWlUaGVtZSBmcm9tICdtYXRlcmlhbC11aS9zdHlsZXMvZ2V0TXVpVGhlbWUnXG5cbmltcG9ydCBUZXh0IGZyb20gXCIuL3RleHRcIlxuaW1wb3J0IFBhcmFncmFwaCBmcm9tIFwiLi9wYXJhZ3JhcGhcIlxuaW1wb3J0IEZpbGUgZnJvbSBcIi4vZmlsZVwiXG5pbXBvcnQgSGlzdG9yeSBmcm9tIFwiLi9oaXN0b3J5XCJcbmltcG9ydCBDbGlwYm9hcmQgZnJvbSBcIi4vY2xpcGJvYXJkXCJcblxuaW1wb3J0ICogYXMgVGFibGUgZnJvbSBcIi4vdGFibGVcIlxuaW1wb3J0ICogYXMgUGljdHVyZSBmcm9tIFwiLi9waWN0dXJlXCJcbmltcG9ydCAqIGFzIExheW91dCBmcm9tIFwiLi9sYXlvdXRcIlxuaW1wb3J0IHtDaGVja0ljb25CdXR0b24sRHJvcERvd25CdXR0b259IGZyb20gXCIuL2NvbXBvbmVudHNcIlxuXG5jb25zdCBUb29sYmFyPXByb3BzPT48VG9vbGJhcjAgc3R5bGU9e3tqdXN0aWZ5Q29udGVudDpcImluaXRpYWxcIn19IHsuLi5wcm9wc30vPlxuY29uc3QgVG9vbGJhclNlcGFyYXRvcj1wcm9wcz0+PFRvb2xiYXJTZXBhcmF0b3IwIHN0eWxlPXt7bWFyZ2luUmlnaHQ6MiwgbWFyZ2luTGVmdDoyfX0gey4uLnByb3BzfS8+XG5jb25zdCBOb1RhYklmT25seTE9KHtjaGlsZHJlbjp0YWJ9KT0+e1xuXHRjb25zdCBjb250ZW50PUNoaWxkcmVuLnRvQXJyYXkodGFiLnByb3BzLmNoaWxkcmVuKS5maWx0ZXIoYT0+ISFhKVxuXHRpZihjb250ZW50Lmxlbmd0aD4xKXtcblx0XHRjb25zdCB0YWJzPWNvbnRlbnQuZmlsdGVyKGE9PmEudHlwZT09VGFiKVxuXHRcdGlmKHRhYnMubGVuZ3RoPT0yKXtcblx0XHRcdHJldHVybiA8RnJhZ21lbnQ+e3RhYnNbMF0ucHJvcHMuY2hpbGRyZW59PC9GcmFnbWVudD5cblx0XHR9XG5cdH1cblx0cmV0dXJuIHRhYlxufVxuY29uc3QgUmliYm9uPWNvbXBvc2UoXG5cdHNldERpc3BsYXlOYW1lKFwiUmliYm9uXCIpLFxuXHRnZXRDb250ZXh0KHttdWlUaGVtZTpQcm9wVHlwZXMub2JqZWN0LHNlbGVjdGlvbjpQcm9wVHlwZXMub2JqZWN0fSksXG5cdHdoZW5TZWxlY3Rpb25DaGFuZ2UoKVxuKSgoe2NoaWxkcmVuLCBzZWxlY3Rpb24sXG5cdG11aVRoZW1lLFxuXHRidXR0b25TdHlsZT17aGVpZ2h0OjI0LCBmb250U2l6ZToxMCwgbGluZUhlaWdodDpcIjI0cHhcIiwgcGFkZGluZ1JpZ2h0OjUsICBwYWRkaW5nTGVmdDo1fSxcblx0dGFiU3R5bGU9e3dpZHRoOlwiYXV0b1wifSxcblx0c3R5bGUsXG5cdGNvbW1hbmRzPXtsYXlvdXQ6ZmFsc2V9XG5cdH0pPT57XG5cdFx0bGV0IHtob21lLGluc2VydCxsYXlvdXQsd2hlbn09XCJob21lLGluc2VydCxsYXlvdXQsd2hlblwiLnNwbGl0KFwiLFwiKS5yZWR1Y2UoKG1lcmdlZCxrKT0+e1xuXHRcdFx0XHRpZihjb21tYW5kc1trXSAgfHwgY29tbWFuZHNba109PT11bmRlZmluZWQpe1xuXHRcdFx0XHRcdGlmKHR5cGVvZihjb21tYW5kc1trXSk9PVwib2JqZWN0XCIpe1xuXHRcdFx0XHRcdFx0bWVyZ2VkW2tdPXsuLi5tZXJnZWRba10sIC4uLmNvbW1hbmRzW2tdfVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihrPT1cIndoZW5cIil7XG5cdFx0XHRcdFx0XHRpZighc2VsZWN0aW9uKXtcblx0XHRcdFx0XHRcdFx0bWVyZ2VkW2tdPW51bGxcblx0XHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0XHRsZXQgd2hlbj1tZXJnZWQud2hlblxuXHRcdFx0XHRcdFx0XHRtZXJnZWQud2hlbj1PYmplY3Qua2V5cyh3aGVuKVxuXHRcdFx0XHRcdFx0XHRcdC5yZWR1Y2UoKGNvbGxlY3RlZCx0eXBlKT0+e1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHN0eWxlPXNlbGVjdGlvbi5wcm9wcyh0eXBlKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYoc3R5bGUpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgcGx1Z2lucz13aGVuW3R5cGVdLnR5cGUoe3N0eWxlLHNlbGVjdGlvbn0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmKEFycmF5LmlzQXJyYXkocGx1Z2lucykpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbGxlY3RlZD1bLi4uY29sbGVjdGVkLCAuLi5wbHVnaW5zXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9ZWxzZSBpZihwbHVnaW5zKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2xsZWN0ZWQucHVzaChwbHVnaW5zKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gY29sbGVjdGVkXG5cdFx0XHRcdFx0XHRcdFx0fSxbXSlcblx0XHRcdFx0XHRcdFx0XHQubWFwKGE9PlJlYWN0LmNsb25lRWxlbWVudChhLHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0a2V5OmEucHJvcHMubGFiZWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvblN0eWxlOntcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi4oYS5wcm9wcy5idXR0b25TdHlsZXx8e30pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLmJ1dHRvblN0eWxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmRDb2xvcjpcImFudGlxdWV3aGl0ZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlOnsuLi4oYS5wcm9wcy50YWJTdHlsZXx8e30pLC4uLnRhYlN0eWxlLCBtYXJnaW5SaWdodDoyfVxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRtZXJnZWRba109Y29tbWFuZHNba11cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbWVyZ2VkXG5cdFx0XHR9LHtcblx0XHRcdGhvbWU6e1xuXHRcdFx0XHRmaWxlOiA8RmlsZT48VG9vbGJhclNlcGFyYXRvci8+PC9GaWxlPixcblx0XHRcdFx0Y2xpcGJvYXJkOjxDbGlwYm9hcmQ+PFRvb2xiYXJTZXBhcmF0b3IvPjwvQ2xpcGJvYXJkPixcblx0XHRcdFx0aGlzdG9yeTogPEhpc3Rvcnk+PFRvb2xiYXJTZXBhcmF0b3IvPjwvSGlzdG9yeT4sXG5cdFx0XHRcdHRleHQ6IDxUZXh0PjxUb29sYmFyU2VwYXJhdG9yLz48L1RleHQ+LFxuXHRcdFx0XHRwYXJhZ3JhcGg6IDxQYXJhZ3JhcGg+PFRvb2xiYXJTZXBhcmF0b3IvPjwvUGFyYWdyYXBoPlxuXHRcdFx0fSxcblx0XHRcdGluc2VydDp7XG5cdFx0XHRcdHRhYmxlOjxUYWJsZS5DcmVhdGU+PFRvb2xiYXJTZXBhcmF0b3IvPjwvVGFibGUuQ3JlYXRlPixcblx0XHRcdFx0cGljdHVyZTo8UGljdHVyZS5Ub29scz48VG9vbGJhclNlcGFyYXRvci8+PC9QaWN0dXJlLlRvb2xzPixcblx0XHRcdH0sXG5cdFx0XHRsYXlvdXQ6e1xuXHRcdFx0XHRiYXNpYzo8TGF5b3V0LlRvb2xzLz5cblx0XHRcdH0sXG5cdFx0XHR3aGVuOntcblx0XHRcdFx0dGFibGU6PFRhYmxlLlJpYmJvbi8+LFxuXHRcdFx0XHRpbWFnZTogPFBpY3R1cmUuUmliYm9uLz4sXG5cdFx0XHR9XG5cdFx0fSlcblx0cmV0dXJuIChcblx0XHQ8ZGl2IHN0eWxlPXt7aGVpZ2h0OjI0KzMwLCBib3JkZXJCb3R0b206XCIwLjVweCBzb2xpZCBsaWdodGdyYXlcIixtYXJnaW5Cb3R0b206MSxwYWRkaW5nQm90dG9tOjQsIC4uLnN0eWxlfX0+XG5cdFx0XHQ8TXVpVGhlbWVQcm92aWRlciBtdWlUaGVtZT17Z2V0TXVpVGhlbWUobXVpVGhlbWUse1xuXHRcdFx0XHRzaXplSWNvbkJ1dHRvbjp7XG5cdFx0XHRcdFx0c2l6ZToyNCxcblx0XHRcdFx0XHRwYWRkaW5nOjQsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGNvbWJvQm94Ontcblx0XHRcdFx0XHRoZWlnaHQ6MjQsXG5cdFx0XHRcdFx0dGV4dEZpZWxkU3R5bGU6e1xuXHRcdFx0XHRcdFx0Zm9udFNpemU6MTJcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG1lbnU6e1xuXHRcdFx0XHRcdFx0c3R5bGU6e292ZXJmbG93WDpcImhpZGRlblwifSxcblx0XHRcdFx0XHRcdG1lbnVJdGVtU3R5bGU6e21pbkhlaWdodDpcIjI0cHhcIiwgbGluZUhlaWdodDpcIjI0cHhcIiwgZm9udFNpemU6MTJ9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR0b29sYmFyOntcblx0XHRcdFx0XHRoZWlnaHQ6MzBcblx0XHRcdFx0fVxuXHRcdFx0XHR9KX0+XG5cdFx0XHRcdDxUYWJzXG5cdFx0XHRcdFx0Y29udGVudENvbnRhaW5lclN0eWxlPXt7aGVpZ2h0OjMwfX1cblx0XHRcdFx0XHRpbmtCYXJTdHlsZT17e2Rpc3BsYXk6XCJub25lXCJ9fVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHR7aG9tZSAmJiA8VGFiIGxhYmVsPVwiSG9tZVwiIGJ1dHRvblN0eWxlPXtidXR0b25TdHlsZX0gc3R5bGU9e3RhYlN0eWxlfT5cblx0XHRcdFx0XHRcdDxUb29sYmFyPlxuXHRcdFx0XHRcdFx0XHR7aG9tZS5maWxlfVxuXG5cdFx0XHRcdFx0XHRcdHtob21lLmNsaXBib2FyZH1cblxuXHRcdFx0XHRcdFx0XHR7aG9tZS5oaXN0b3J5fVxuXG5cdFx0XHRcdFx0XHRcdHtob21lLnRleHR9XG5cblx0XHRcdFx0XHRcdFx0e2hvbWUucGFyYWdyYXBofVxuXG5cdFx0XHRcdFx0XHRcdHtob21lLm1vcmV9XG5cdFx0XHRcdFx0XHQ8L1Rvb2xiYXI+XG5cdFx0XHRcdFx0PC9UYWI+fVxuXHRcdFx0XHRcdHtpbnNlcnQgJiYgPFRhYiBsYWJlbD1cIkluc2VydFwiICBidXR0b25TdHlsZT17YnV0dG9uU3R5bGV9IHN0eWxlPXt0YWJTdHlsZX0+XG5cdFx0XHRcdFx0XHQ8VG9vbGJhcj5cblx0XHRcdFx0XHRcdFx0e2luc2VydC50YWJsZX1cblx0XHRcdFx0XHRcdFx0e2luc2VydC5waWN0dXJlfVxuXHRcdFx0XHRcdFx0XHR7aW5zZXJ0Lm1vcmV9XG5cdFx0XHRcdFx0XHQ8L1Rvb2xiYXI+XG5cdFx0XHRcdFx0PC9UYWI+fVxuXG5cdFx0XHRcdFx0e2xheW91dCAmJiA8VGFiIGxhYmVsPVwiUGFnZSBMYXlvdXRcIiAgYnV0dG9uU3R5bGU9e2J1dHRvblN0eWxlfSBzdHlsZT17dGFiU3R5bGV9PlxuXHRcdFx0XHRcdFx0PFRvb2xiYXI+XG5cdFx0XHRcdFx0XHRcdHtsYXlvdXQuYmFzaWN9XG5cdFx0XHRcdFx0XHRcdHtsYXlvdXQubW9yZX1cblx0XHRcdFx0XHRcdDwvVG9vbGJhcj5cblx0XHRcdFx0XHQ8L1RhYj59XG5cdFx0XHRcdFx0e1JlYWN0LkNoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pLm1hcChhPT5SZWFjdC5jbG9uZUVsZW1lbnQoYSx7YnV0dG9uU3R5bGUsIHN0eWxlOnRhYlN0eWxlLGtleTphLnByb3BzLmxhYmVsfSkpfVxuXHRcdFx0XHRcdHt3aGVufVxuXHRcdFx0XHRcdDxUYWIgbGFiZWw9XCJiZWF1dGlmaWVyXCJcblx0XHRcdFx0XHRcdGJ1dHRvblN0eWxlPXtidXR0b25TdHlsZX1cblx0XHRcdFx0XHRcdHN0eWxlPXt7dmlzaWJpbGl0eTpcImhpZGRlblwiLCBmbGV4OlwiMSAxMDAlXCIsLi4udGFiU3R5bGV9fVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9UYWJzPlxuXHRcdFx0PC9NdWlUaGVtZVByb3ZpZGVyPlxuXHRcdDwvZGl2PlxuXHQpXG59KVxuXG5leHBvcnQgZGVmYXVsdCBSaWJib25cblxuZXhwb3J0IHtSaWJib24sIFRleHQsIFBhcmFncmFwaCxGaWxlLEhpc3RvcnksVGFibGUsUGljdHVyZSxMYXlvdXQsIFRvb2xiYXIsIFRvb2xiYXJTZXBhcmF0b3IsIFRhYnMsIFRhYiwgQ2hlY2tJY29uQnV0dG9uLERyb3BEb3duQnV0dG9ufVxuIiwiaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBGcmFnbWVudH0gZnJvbSBcInJlYWN0XCJcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vdmFibGUgZXh0ZW5kcyBDb21wb25lbnR7XHJcblx0c3RhdGU9e21vdmU6ZmFsc2V9XHJcblx0Y2hhbmdpbmc9e31cclxuXHRyZW5kZXIoKXtcclxuXHRcdGNvbnN0IHttb3ZlLCB4MCx5MCx4LHl9PXRoaXMuc3RhdGVcclxuXHRcdGNvbnN0IHtjaGFuZ2luZ309dGhpc1xyXG5cdFx0bGV0IHtvbk1vdmU9YT0+bnVsbCwgY2hpbGRyZW59PXRoaXMucHJvcHNcclxuXHRcdFxyXG5cdFx0bGV0IG92ZXJsYXk9bnVsbFxyXG5cdFx0aWYobW92ZSl7XHJcblx0XHRcdG92ZXJsYXk9PE92ZXJsYXkgb25Nb3VzZVVwPXtlPT50aGlzLm9uRW5kTW92ZShlKX0gb25Nb3VzZU1vdmU9e2U9PnRoaXMubW92ZShlKX0vPlxyXG5cdFx0XHRjaGlsZHJlbj1SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHsuLi5jaGFuZ2luZywgb25Nb3VzZVVwOmU9PnRoaXMub25FbmRNb3ZlKGUpfSlcclxuXHRcdH1lbHNle1xyXG5cdFx0XHRjaGlsZHJlbj1SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcclxuXHRcdFx0XHRvbk1vdXNlRG93bjplPT50aGlzLm9uU3RhcnRNb3ZlKGUpLFxyXG5cdFx0XHR9KVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0PEZyYWdtZW50PlxyXG5cdFx0XHRcdHtvdmVybGF5fVxyXG5cdFx0XHRcdHtjaGlsZHJlbn1cclxuXHRcdFx0PC9GcmFnbWVudD5cclxuXHRcdClcclxuXHR9XHJcblx0XHJcblx0b25TdGFydE1vdmUoZSl7XHJcblx0XHRsZXQgeD1lLmNsaWVudFgseT1lLmNsaWVudFlcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHttb3ZlOnRydWUseDA6eCwgeTA6eSx4LHl9KVxyXG5cdFx0ZS5zdG9wUHJvcGFnYXRpb24oKVxyXG4gICAgfVxyXG5cclxuICAgIG9uRW5kTW92ZShlKXtcclxuICAgICAgICBsZXQge3gwLHkwLHgseX09dGhpcy5zdGF0ZVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe21vdmU6ZmFsc2V9LGE9PntcclxuXHRcdFx0dGhpcy5wcm9wcy5vbkFjY2VwdCAmJiB0aGlzLnByb3BzLm9uQWNjZXB0KHgteDAsIHkteTApXHJcbiAgICAgICAgfSlcclxuXHRcdGUuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgIH1cclxuXHJcbiAgICBtb3ZlKGUpe1xyXG5cdFx0dGhpcy5zZXRTdGF0ZSh7eDplLmNsaWVudFgsIHk6ZS5jbGllbnRZfSlcclxuXHRcdGUuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgIH1cclxuXHRcclxuXHRzaG91bGRDb21wb25lbnRVcGRhdGUoe29uTW92ZX0se21vdmUseDAseCwgeTAsIHl9KXtcclxuXHRcdGlmKG1vdmUgJiYgb25Nb3ZlKXtcclxuXHRcdFx0dGhpcy5jaGFuZ2luZz1vbk1vdmUoeC14MCx5LXkwKVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMucHJvcHMhPWFyZ3VtZW50c1swXSB8fCB0aGlzLnN0YXRlIT1hcmd1bWVudHNbMV1cclxuXHR9XHJcbn1cclxuXHJcbmNvbnN0IE92ZXJsYXk9cHJvcHM9PjxkaXYgey4uLnByb3BzfSBzdHlsZT17e3Bvc2l0aW9uOlwiZml4ZWRcIiwgbGVmdDowLCB0b3A6MCwgd2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLGN1cnNvcjpcImRlZmF1bHRcIn19Lz4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7b25seVVwZGF0ZUZvcktleXN9IGZyb20gXCJyZWNvbXBvc2VcIlxuaW1wb3J0IHtTdmdJY29ufSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuXG5pbXBvcnQgTW92YWJsZSBmcm9tIFwiLi4vY29tcG9uZW50cy9tb3ZhYmxlXCJcblxuZXhwb3J0IGRlZmF1bHQgb25seVVwZGF0ZUZvcktleXMoXCJ3aWR0aCxzY2FsZSxsZWZ0TWFyZ2luLHJpZ2h0TWFyZ2luLGZpcnN0TGluZSxsZWZ0SW5kZW50LGNtLHN0ZXBcIi5zcGxpdChcIixcIikpKChcblx0e3dpZHRoPTAsc2NhbGU9MSxcblx0bGVmdE1hcmdpbj0zLCByaWdodE1hcmdpbj0zLCBzZXRMZWZ0TWFyZ2luLCBzZXRSaWdodE1hcmdpbixcblx0Zmlyc3RMaW5lPTAsIGxlZnRJbmRlbnQ9MCwgcmlnaHRJbmRlbnQ9MCwgc2V0Rmlyc3RMaW5lLCBzZXRMZWZ0SW5kZW50LCBzZXRSaWdodEluZGVudCxcblx0Y209c2NhbGUqOTYvMi41NCwgc3RlcD1jbS84LCB0cmltPSh4LGR4KT0+TWF0aFtkeD4wID8gJ2NlaWwnIDogJ2Zsb29yJ10oKHgrZHgpL3N0ZXApKnN0ZXBcblx0fSk9Pntcblx0XHRsZXQgZmw9bnVsbFxuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cInJ1bGVyIGhvcml6b250YWxcIiBzdHlsZT17e3dpZHRoOndpZHRoKnNjYWxlLHBvc2l0aW9uOlwicmVsYXRpdmVcIn19PlxuXHRcdFx0XHQ8U2NhbGUgey4uLnt3aWR0aDp3aWR0aCpzY2FsZSxmcm9tOmxlZnRNYXJnaW4qc2NhbGUsY219fS8+XG5cblx0XHRcdFx0eyEhd2lkdGggJiYgKDxNYXJnaW4gc3R5bGU9e3twb3NpdGlvbjpcImFic29sdXRlXCIsIHRvcDowLGxlZnQ6MCx3aWR0aDpsZWZ0TWFyZ2luKnNjYWxlfX0gb25Nb3ZlPXtzZXRMZWZ0TWFyZ2lufS8+KX1cblxuXHRcdFx0XHR7ISF3aWR0aCAmJiAoPE1vdmFibGUgcmVmPXthPT5mbD1hfVxuXHRcdFx0XHRcdG9uQWNjZXB0PXtkeD0+c2V0Rmlyc3RMaW5lKCh0cmltKChsZWZ0SW5kZW50K2ZpcnN0TGluZSkqc2NhbGUsZHgpLWxlZnRJbmRlbnQqc2NhbGUpL3NjYWxlKX1cblx0XHRcdFx0XHRvbk1vdmU9e2R4PT4oe3N0eWxlOntwb3NpdGlvbjpcImFic29sdXRlXCIsIHRvcDowLGxlZnQ6bGVmdE1hcmdpbipzY2FsZSt0cmltKChsZWZ0SW5kZW50K2ZpcnN0TGluZSkqc2NhbGUsZHgpfX0pfVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHQ8Rmlyc3RMaW5lIHN0eWxlPXt7cG9zaXRpb246XCJhYnNvbHV0ZVwiLCB0b3A6MCxsZWZ0OihsZWZ0TWFyZ2luK2xlZnRJbmRlbnQrZmlyc3RMaW5lKSpzY2FsZX19Lz5cblx0XHRcdFx0PC9Nb3ZhYmxlPil9XG5cblx0XHRcdFx0eyEhd2lkdGggJiYgKDxNb3ZhYmxlXG5cdFx0XHRcdFx0b25BY2NlcHQ9e2R4PT57XG5cdFx0XHRcdFx0XHRmbC5zZXRTdGF0ZSh7bW92ZTpmYWxzZX0pXG5cdFx0XHRcdFx0XHRzZXRMZWZ0SW5kZW50KHRyaW0obGVmdEluZGVudCpzY2FsZSxkeCkvc2NhbGUpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRvbk1vdmU9e2R4PT57XG5cdFx0XHRcdFx0XHRmbC5zZXRTdGF0ZSh7bW92ZTp0cnVlLHgwOjAseTA6MCx4OmR4LHk6MH0pXG5cdFx0XHRcdFx0XHRyZXR1cm4ge3N0eWxlOntwb3NpdGlvbjpcImFic29sdXRlXCIsIHRvcDowLGxlZnQ6bGVmdE1hcmdpbipzY2FsZSt0cmltKGxlZnRJbmRlbnQqc2NhbGUsZHgpfX1cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHQ8SW5kZW50IHN0eWxlPXt7cG9zaXRpb246XCJhYnNvbHV0ZVwiLCB0b3A6MCxsZWZ0OihsZWZ0TWFyZ2luK2xlZnRJbmRlbnQpKnNjYWxlfX0vPlxuXHRcdFx0XHQ8L01vdmFibGU+KX1cblxuXHRcdFx0XHR7ISF3aWR0aCAmJiAoPE1hcmdpbiBzdHlsZT17e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIiwgdG9wOjAscmlnaHQ6MCx3aWR0aDpyaWdodE1hcmdpbipzY2FsZX19IG9uTW92ZT17c2V0UmlnaHRNYXJnaW59Lz4pfVxuXG5cdFx0XHRcdHshIXdpZHRoICYmICg8TW92YWJsZVxuXHRcdFx0XHRcdG9uQWNjZXB0PXtkeD0+c2V0UmlnaHRJbmRlbnQodHJpbShyaWdodEluZGVudCpzY2FsZSwtZHgpL3NjYWxlKX1cblx0XHRcdFx0XHRvbk1vdmU9e2R4PT4oe3N0eWxlOntwb3NpdGlvbjpcImFic29sdXRlXCIsIHRvcDowLHJpZ2h0OnJpZ2h0TWFyZ2luKnNjYWxlK3RyaW0ocmlnaHRJbmRlbnQqc2NhbGUsLWR4KX19KX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0PEluZGVudCBzdHlsZT17e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIiwgdG9wOjAscmlnaHQ6KHJpZ2h0TWFyZ2luK3JpZ2h0SW5kZW50KSpzY2FsZX19Lz5cblx0XHRcdFx0PC9Nb3ZhYmxlPil9XG5cdFx0XHQ8L2Rpdj5cblx0XHQpXG59KVxuXG5jb25zdCBBVD0oc3R5bGUsa2V5cz1PYmplY3Qua2V5cyhzdHlsZSkpPT5cImxlZnQscmlnaHRcIi5zcGxpdChcIixcIikuZmluZChhPT5rZXlzLmluY2x1ZGVzKGEpKVxuXG5jb25zdCBNYXJnaW49KHtzdHlsZSwgb25Nb3ZlLCBhdD1BVChzdHlsZSl9KT0+KFxuXHQ8ZGl2IGNsYXNzTmFtZT17YG1hcmdpbiAke2F0fWB9IHN0eWxlPXtzdHlsZX0gdGl0bGU9e2Ake2F0fSBNYXJnaW5gfT5cblx0XHQ8ZGl2IGNsYXNzTmFtZT1cIm1vdmVyXCIvPlxuXHQ8L2Rpdj5cbilcblxuY29uc3QgSW5kZW50PSh7c3R5bGUsYXQ9QVQoc3R5bGUpLCAuLi5wcm9wc30pPT4oXG5cdDxkaXYgY2xhc3NOYW1lPXtgaW5kZW50ICR7YXR9YH0gc3R5bGU9e3N0eWxlfSB0aXRsZT17YCR7YXR9IEluZGVudGB9IHsuLi5wcm9wc30+XG5cdFx0PE1hcmtlci8+XG5cdDwvZGl2PlxuKVxuXG5jb25zdCBGaXJzdExpbmU9cHJvcHM9Pihcblx0PGRpdiBjbGFzc05hbWU9XCJmaXJzdC1saW5lIGxlZnRcIiB7Li4ucHJvcHN9IHRpdGxlPVwiRmlyc3QgTGluZSBJbmRlbnRcIj5cblx0XHQ8TWFya2VyIGRpcmVjdGlvbj1cImJvdHRvbVwiLz5cblx0PC9kaXY+XG4pXG5cbmNvbnN0IE1hcmtlcj0oe2RpcmVjdGlvbj1cInRvcFwiLGRlZ3M9e2JvdHRvbToxODB9LCAuLi5wcm9wc30pPT4oXG5cdDxTdmdJY29uIHsuLi5wcm9wc30+XG5cdFx0PHBhdGggdHJhbnNmb3JtPXtgcm90YXRlKCR7ZGVnc1tkaXJlY3Rpb25dfHwwfSAxMiAxMilgfVxuXHRcdFx0ZD1cIk0xMS41IDAgTDIzIDExLjUgTDIzIDIzIEwwIDIzIEwwIDExLjVaXCIgZmlsbD1cIndoaXRlXCIgc3Ryb2tlV2lkdGg9XCIxXCIgc3Ryb2tlPVwiZ3JheVwiLz5cblx0PC9TdmdJY29uPlxuKVxuXG5jb25zdCBTY2FsZT0oe3dpZHRoLGhlaWdodD0yMCxmcm9tLGNtLCBjaGlsZHJlbn0pPT4oXG5cdDxzdmcgc3R5bGU9e3t3aWR0aDp3aWR0aCxoZWlnaHQsYmFja2dyb3VuZENvbG9yOlwid2hpdGVcIn19XG5cdFx0dmlld0JveD17YDAgMCAke3dpZHRofSAke2hlaWdodH1gfSA+XG5cdFx0PGcgdHJhbnNmb3JtPXtgdHJhbnNsYXRlKCR7ZnJvbX0gMClgfT5cblx0XHR7XG5cdFx0XHRuZXcgQXJyYXkoTWF0aC5jZWlsKGZyb20vY20pKS5maWxsKDApXG5cdFx0XHRcdC5tYXAoKGEsaSk9PjxDTSBjbT17Y219IGtleT17LWl9IGk9ey1pLTF9Lz4pXG5cdFx0fVxuXHRcdDwvZz5cblx0XHQ8ZyB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoJHtmcm9tfSAwKWB9PlxuXHRcdHtcblx0XHRcdG5ldyBBcnJheShNYXRoLmNlaWwoKHdpZHRoLWZyb20pL2NtKSkuZmlsbCgwKVxuXHRcdFx0XHQubWFwKChhLGkpPT48Q00gY209e2NtfSBrZXk9e2l9IGk9e2l9Lz4pXG5cdFx0fVxuXHRcdDwvZz5cblx0XHR7Y2hpbGRyZW59XG5cdDwvc3ZnPlxuKVxuXG5cblxuY29uc3QgQ009KHtpLGNtLG50aD1NYXRoLmFicyhpKzEpfSk9Pihcblx0PGcgdHJhbnNmb3JtPXtgdHJhbnNsYXRlKCR7aSpjbX0gMClgfT5cblx0XHQ8bGluZSB4MT17MSpjbS80fSB5MT17OH0geDI9ezEqY20vNH0geTI9ezEyfSBzdHJva2U9XCJsaWdodGdyYXlcIiBzdHJva2VXaWR0aD17MX0vPlxuXHRcdDxsaW5lIHgxPXsyKmNtLzR9IHkxPXs2fSB4Mj17MipjbS80fSB5Mj17MTR9IHN0cm9rZT1cImxpZ2h0Z3JheVwiIHN0cm9rZVdpZHRoPXsxfSAvPlxuXHRcdDxsaW5lIHgxPXszKmNtLzR9IHkxPXs4fSB4Mj17MypjbS80fSB5Mj17MTJ9IHN0cm9rZT1cImxpZ2h0Z3JheVwiIHN0cm9rZVdpZHRoPXsxfSAvPlxuXHRcdHtudGghPTAgPyA8dGV4dCB4PXtjbX0geT17MTN9IHRleHRBbmNob3I9XCJtaWRkbGVcIj57bnRofTwvdGV4dD4gOiBudWxsfVxuXHQ8L2c+XG4pXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7b25seVVwZGF0ZUZvcktleXN9IGZyb20gXCJyZWNvbXBvc2VcIlxuXG5leHBvcnQgZGVmYXVsdCBvbmx5VXBkYXRlRm9yS2V5cyhbJ2hlaWdodCcsJ2Zvb3RlcicsXCJoZWFkZXJcIiwnc2NhbGUnLCd0b3BNYXJnaW4nLCdib3R0b21NYXJnaW4nLF0pKFxuXHQoe2hlaWdodD0wLCBmb290ZXI9MCwgaGVhZGVyPTAsIHNjYWxlPTEsXG5cdHRvcE1hcmdpbj0zLCBib3R0b21NYXJnaW49Myxcblx0c2V0VG9wTWFyZ2luLCBzZXRCb3R0b21NYXJnaW4sXG5cdH0pPT4oXG5cdDxkaXYgY2xhc3NOYW1lPVwicnVsZXIgdmVydGljYWxcIj5cblx0XHQ8U2NhbGUgey4uLntoZWlnaHQ6aGVpZ2h0KnNjYWxlLGZyb206dG9wTWFyZ2luKnNjYWxlLCBjbTpzY2FsZSo5Ni8yLjU0fX0vPlxuXHRcdHshIWhlaWdodCAmJiA8TWFyZ2luIHN0eWxlPXt7cG9zaXRpb246XCJhYnNvbHV0ZVwiLHRvcDowLCBsZWZ0OjAsIGhlaWdodDp0b3BNYXJnaW4qc2NhbGV9fSBvbk1vdmU9e3NldFRvcE1hcmdpbn0vPn1cblx0XHR7ISFoZWlnaHQgJiYgPE1hcmdpbiBzdHlsZT17e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIiwgYm90dG9tOjAsIGxlZnQ6MCwgaGVpZ2h0OmJvdHRvbU1hcmdpbipzY2FsZX19IG9uTW92ZT17c2V0Qm90dG9tTWFyZ2lufS8+fVxuXHQ8L2Rpdj5cbikpXG5cblxuY29uc3QgQVQ9KHN0eWxlLGtleXM9T2JqZWN0LmtleXMoc3R5bGUpKT0+XCJ0b3AsYm90dG9tXCIuc3BsaXQoXCIsXCIpLmZpbmQoYT0+a2V5cy5pbmNsdWRlcyhhKSlcblxuY29uc3QgTWFyZ2luPSh7c3R5bGUsIG9uTW92ZSwgYXQ9QVQoc3R5bGUpfSk9Pihcblx0PGRpdiBjbGFzc05hbWU9e2BtYXJnaW4gJHthdH1gfSBzdHlsZT17c3R5bGV9IHRpdGxlPXtgJHthdH0gTWFyZ2luYH0+XG5cdFx0PGRpdiBjbGFzc05hbWU9XCJtb3ZlclwiLz5cblx0PC9kaXY+XG4pXG5cbmNvbnN0IFNjYWxlPSh7d2lkdGg9MjAsaGVpZ2h0LGZyb20sY209OTYvMi41NCwgc2NhbGV9KT0+KFxuXHQ8c3ZnIHN0eWxlPXt7d2lkdGgsaGVpZ2h0LGJhY2tncm91bmRDb2xvcjpcIndoaXRlXCJ9fVxuXHRcdHZpZXdCb3g9e2AwIDAgJHt3aWR0aH0gJHtoZWlnaHR9YH0gPlxuXHRcdDxnIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgwICR7ZnJvbX0pYH0+XG5cdFx0e1xuXHRcdFx0bmV3IEFycmF5KE1hdGguY2VpbChmcm9tL2NtKSkuZmlsbCgwKVxuXHRcdFx0XHQubWFwKChhLGkpPT48Q00gY209e2NtfSBrZXk9ey1pfSBpPXstaS0xfS8+KVxuXHRcdH1cblx0XHQ8L2c+XG5cdFx0PGcgdHJhbnNmb3JtPXtgdHJhbnNsYXRlKDAgJHtmcm9tfSlgfT5cblx0XHR7XG5cdFx0XHRuZXcgQXJyYXkoTWF0aC5jZWlsKChoZWlnaHQtZnJvbSkvY20pKS5maWxsKDApXG5cdFx0XHRcdC5tYXAoKGEsaSk9PjxDTSBjbT17Y219IGtleT17aX0gaT17aX0vPilcblx0XHR9XG5cdFx0PC9nPlxuXG5cdDwvc3ZnPlxuKVxuXG5cblxuY29uc3QgQ009KHtpLGNtLG50aD1NYXRoLmFicyhpKzEpfSk9Pihcblx0PGcgdHJhbnNmb3JtPXtgdHJhbnNsYXRlKDAgJHtpKmNtfSlgfT5cblx0XHQ8bGluZSB5MT17MSpjbS80fSB4MT17OH0geTI9ezEqY20vNH0geDI9ezEyfSBzdHJva2U9XCJsaWdodGdyYXlcIiBzdHJva2VXaWR0aD17MX0vPlxuXHRcdDxsaW5lIHkxPXsyKmNtLzR9IHgxPXs2fSB5Mj17MipjbS80fSB4Mj17MTR9IHN0cm9rZT1cImxpZ2h0Z3JheVwiIHN0cm9rZVdpZHRoPXsxfSAvPlxuXHRcdDxsaW5lIHkxPXszKmNtLzR9IHgxPXs4fSB5Mj17MypjbS80fSB4Mj17MTJ9IHN0cm9rZT1cImxpZ2h0Z3JheVwiIHN0cm9rZVdpZHRoPXsxfSAvPlxuXHRcdHtudGghPTAgPyA8dGV4dCB5PXtjbX0geD17MTN9IHRleHRBbmNob3I9XCJtaWRkbGVcIj57bnRofTwvdGV4dD4gOiBudWxsfVxuXHQ8L2c+XG4pXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcblxuaW1wb3J0IHtjb21wb3NlLHNldERpc3BsYXlOYW1lLHdpdGhQcm9wc30gZnJvbSBcInJlY29tcG9zZVwiXG5cbmltcG9ydCB7QUNUSU9OLCB3aGVuU2VsZWN0aW9uQ2hhbmdlfSBmcm9tIFwid2UtZWRpdFwiXG5cbmltcG9ydCBIb3Jpem9udGFsUnVsZXIgZnJvbSBcIi4vaG9yaXpvbnRhbFwiXG5pbXBvcnQgVmVydGljYWxSdWxlciBmcm9tIFwiLi92ZXJ0aWNhbFwiXG5cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcblx0c2V0RGlzcGxheU5hbWUoXCJSdWxlclwiKSxcblx0d2hlblNlbGVjdGlvbkNoYW5nZSgpLFxuXHR3aXRoUHJvcHMoKHtkaXNwYXRjaH0pPT4oe1xuXHRcdHNldExlZnRNYXJnaW4obGVmdCl7XG5cdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7c2VjdGlvbjp7cGdNYXI6e2xlZnR9fX0pKVxuXHRcdH0sXG5cdFx0c2V0UmlnaHRNYXJnaW4ocmlnaHQpe1xuXHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3NlY3Rpb246e3BnTWFyOntyaWdodH19fSkpXG5cdFx0fSxcblx0XHRzZXRCb3R0b21NYXJnaW4oYm90dG9tKXtcblx0XHRcdGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHtzZWN0aW9uOntwZ01hcjp7Ym90dG9tfX19KSlcblx0XHR9LFxuXHRcdHNldFRvcE1hcmdpbih0b3Ape1xuXHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3NlY3Rpb246e3BnTWFyOnt0b3B9fX0pKVxuXHRcdH0sXG5cdFx0c2V0Rmlyc3RMaW5lKGZpcnN0TGluZSl7XG5cdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7cGFyYWdyYXBoOntpbmRlbnQ6e2ZpcnN0TGluZX19fSkpXG5cdFx0fSxcblx0XHRzZXRMZWZ0SW5kZW50KGxlZnQpe1xuXHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3BhcmFncmFwaDp7aW5kZW50OntsZWZ0fX19KSlcblx0XHR9LFxuXHRcdHNldFJpZ2h0SW5kZW50KHJpZ2h0KXtcblx0XHRcdGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHtwYXJhZ3JhcGg6e2luZGVudDp7cmlnaHR9fX0pKVxuXHRcdH1cblx0fSkpLFxuXHR3aXRoUHJvcHMoKHtzZWxlY3Rpb259KT0+e1xuXHRcdGxldCB7XG5cdFx0XHRcdHdpZHRoLGhlaWdodCxcblx0XHRcdFx0bWFyZ2luOntcblx0XHRcdFx0XHRsZWZ0OmxlZnRNYXJnaW4sdG9wOnRvcE1hcmdpbixyaWdodDpyaWdodE1hcmdpbixib3R0b206Ym90dG9tTWFyZ2luLFxuXHRcdFx0XHRcdGhlYWRlcixmb290ZXIsXG5cdFx0XHRcdH09e30sXG5cdFx0XHRcdGNvbHM9W3t4OmxlZnRNYXJnaW4sd2lkdGg6d2lkdGgtbGVmdE1hcmdpbi1yaWdodE1hcmdpbn1dXG5cdFx0XHR9PShzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnByb3BzKFwibGF5b3V0XCIpfHx7fSlcblxuXHRcdGxldCB7XG5cdFx0XHRpbmRlbnQ6e2xlZnQ6bGVmdEluZGVudCxyaWdodDpyaWdodEluZGVudCxmaXJzdExpbmV9PXt9XG5cdFx0fT0oc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5wcm9wcyhcInBhcmFncmFwaFwiLGZhbHNlKXx8e30pXG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0d2lkdGgsaGVpZ2h0LGxlZnRNYXJnaW4sdG9wTWFyZ2luLGJvdHRvbU1hcmdpbixyaWdodE1hcmdpbixsZWZ0SW5kZW50LHJpZ2h0SW5kZW50LGZpcnN0TGluZSxcblx0XHRcdGNvbHMsXG5cdFx0XHRoZWFkZXIsZm9vdGVyXG5cdFx0fVxuXHR9KSxcbikoKHtkaXJlY3Rpb249XCJob3Jpem9udGFsXCIsIFJ1bGVyPWRpcmVjdGlvbj09XCJob3Jpem9udGFsXCIgPyBIb3Jpem9udGFsUnVsZXIgOiBWZXJ0aWNhbFJ1bGVyLCAuLi5wcm9wc30pPT4oXG5cdDxSdWxlciB7Li4ucHJvcHN9Lz5cbikpXG4iLCJpbXBvcnQgUmVhY3Qse0NvbXBvbmVudH0gZnJvbSAgXCJyZWFjdFwiXHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxyXG5pbXBvcnQge2Nvbm5lY3Qsd2hlblNlbGVjdGlvbkNoYW5nZSwgZ2V0VUl9IGZyb20gXCJ3ZS1lZGl0XCJcclxuaW1wb3J0IHtjb21wb3NlLCBzZXREaXNwbGF5TmFtZX0gZnJvbSBcInJlY29tcG9zZVwiXHJcblxyXG5pbXBvcnQgUnVsZXIgZnJvbSBcIi4vcnVsZXJcIlxyXG5pbXBvcnQge2dldE9mZmljZX0gZnJvbSBcIi4vc3RhdGUvYWN0aW9uXCJcclxuXHJcbnZhciB1dWlkPTBcclxuY29uc3QgVmVydGljYWxSdWxlcj1jb21wb3NlKFxyXG5cdHNldERpc3BsYXlOYW1lKFwiVmVydGljYWxSdWxlclwiKSxcclxuXHR3aGVuU2VsZWN0aW9uQ2hhbmdlKCh7c2VsZWN0aW9ufSk9PntcclxuXHRcdGlmKHNlbGVjdGlvbil7XHJcblx0XHRcdGxldCBwcm9wcz1zZWxlY3Rpb24ucHJvcHMoXCJwYWdlXCIsZmFsc2UpXHJcblx0XHRcdGlmKHByb3BzKXtcclxuXHRcdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFx0cGFnZVk6cHJvcHMucGFnZVlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9KVxyXG4pKCh7cGFnZVk9MCwgc2NhbGUsIC4uLnByb3BzfSk9PntcclxuXHRyZXR1cm4gKFxyXG5cdFx0PGRpdiBzdHlsZT17e3Bvc2l0aW9uOlwicmVsYXRpdmVcIix0b3A6cGFnZVkqc2NhbGV9fT5cclxuXHRcdFx0PFJ1bGVyIGRpcmVjdGlvbj1cInZlcnRpY2FsXCIgey4uLnByb3BzfSBzY2FsZT17c2NhbGV9Lz5cclxuXHRcdDwvZGl2PlxyXG5cdClcclxufSlcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3Qoc3RhdGU9Pih7c2NhbGU6Z2V0T2ZmaWNlKHN0YXRlKS5zY2FsZX0pKShcclxuY2xhc3MgQ2FudmFzIGV4dGVuZHMgQ29tcG9uZW50e1xyXG5cdGNvbnN0cnVjdG9yKCl7XHJcblx0XHRzdXBlciguLi5hcmd1bWVudHMpXHJcblx0XHR0aGlzLnVpZD11dWlkKytcclxuXHRcdHRoaXMuc3RhdGU9e31cclxuXHR9XHJcblxyXG5cdHJlbmRlcigpe1xyXG5cdFx0Y29uc3Qge3NjYWxlPTEwMCxydWxlcj17dmVydGljYWw6dHJ1ZX0sIHN0eWxlPXt9LCBjaGlsZHJlbn09dGhpcy5wcm9wc1xyXG5cdFx0Y29uc3Qge2Vycm9yfT10aGlzLnN0YXRlXHJcblx0XHRjb25zdCBob3Jpem9udGFsUnVsZXJIZWlnaHQ9MjBcclxuXHRcdGNvbnN0IGlkPWBjYW52YXMke3RoaXMudWlkfWBcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdDxkaXYgaWQ9e2lkfSBzdHlsZT17e1xyXG5cdFx0XHRcdFx0b3ZlcmZsb3c6XCJhdXRvXCIsIGZsZXg6XCIxIDEwMCVcIixcclxuXHRcdFx0XHRcdG92ZXJmbG93WTpcInNjcm9sbFwiLFxyXG5cdFx0XHRcdFx0Li4uc3R5bGUsXHJcblx0XHRcdFx0XHRkaXNwbGF5OlwiZmxleFwiLCBmbGV4RGlyZWN0aW9uOlwicm93XCJcclxuXHRcdFx0XHR9fT5cclxuXHRcdFx0XHQ8UGlsY3JvdyBjYW52YXNJZD17aWR9Lz5cclxuXHRcdFx0XHR7cnVsZXIgJiYgcnVsZXIudmVydGljYWwhPT1mYWxzZSAmJiAoXHJcblx0XHRcdFx0XHQ8ZGl2IHN0eWxlPXt7ZmxleDoxLCBwYWRkaW5nVG9wOmhvcml6b250YWxSdWxlckhlaWdodH19PlxyXG5cdFx0XHRcdFx0XHQ8VmVydGljYWxSdWxlciBzY2FsZT17c2NhbGUvMTAwfSAvPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0KX1cclxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXt7ZmxleDpcIjEgMTAwJVwiLCBkaXNwbGF5OlwiZmxleFwiLCBmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsd2lkdGg6XCIxMDAlXCJ9fT5cclxuXHRcdFx0XHRcdDxkaXYgc3R5bGU9e3tmbGV4OlwiMSAxMDAlXCIsdGV4dEFsaWduOlwiY2VudGVyXCJ9fT5cclxuXHRcdFx0XHRcdFx0e3J1bGVyICYmIChcclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IHN0eWxlPXt7cG9zaXRpb246XCJzdGlja3lcIix0b3A6MH19PlxyXG5cdFx0XHRcdFx0XHRcdFx0PFJ1bGVyIGRpcmVjdGlvbj1cImhvcml6b250YWxcIiBzY2FsZT17c2NhbGUvMTAwfS8+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdCl9XHJcblx0XHRcdFx0XHRcdHtlcnJvciA/ICBlcnJvci5zdGFjayA6IGNoaWxkcmVufVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdClcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3Ipe1xyXG5cdFx0cmV0dXJuIHtlcnJvcn1cclxuXHR9XHJcbn0pXHJcblxyXG5jb25zdCBQaWxjcm93PWNvbm5lY3Qoc3RhdGU9Pih7cGlsY3JvdzpnZXRVSShzdGF0ZSkucGlsY3Jvd30pKSgoe3BpbGNyb3d9KT0+PHN0eWxlPnshcGlsY3JvdyAmJiBgc3ZnIHRleHQuZW5kZXJ7dmlzaWJpbGl0eTpoaWRkZW59YH08L3N0eWxlPilcclxuIiwiaW1wb3J0IFJlYWN0LCB7UHVyZUNvbXBvbmVudCwgQ29tcG9uZW50LCBDaGlsZHJlbiwgRnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gXCJ3ZS1lZGl0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtwdXJlfSAgZnJvbSBcInJlY29tcG9zZVwiXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gXCJldmVudHNcIlxuaW1wb3J0IG1lbW9pemUgZnJvbSBcIm1lbW9pemUtb25lXCJcblxuaW1wb3J0IFN0YXR1cyBmcm9tIFwiLi9zdGF0dXNcIlxuaW1wb3J0IFJpYmJvbiBmcm9tIFwiLi9yaWJib25cIlxuaW1wb3J0IENhbnZhcyBmcm9tIFwiLi9jYW52YXNcIlxuaW1wb3J0IEFDVElPTix7Z2V0T2ZmaWNlfSBmcm9tIFwiLi9zdGF0ZS9hY3Rpb25cIlxuXG4vKipcbiAqIGRvYy5TdG9yZSBjYW4ndCBiZSByZW1vdmVkIHRvIFdvcmtzcGFjZSBzaW5jZSBjdXJzb3JcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV29ya3NwYWNlIGV4dGVuZHMgUHVyZUNvbXBvbmVudHtcblx0c3RhdGljIGNoaWxkQ29udGV4dFR5cGVzPXtcblx0XHRldmVudHM6IFByb3BUeXBlcy5vYmplY3QsXG5cdFx0ZGVidWc6IFByb3BUeXBlcy5ib29sLFxuXHR9XG5cblx0c3RhdGljIHByb3BUeXBlcz17XG5cdFx0dG9vbEJhcjpQcm9wVHlwZXMubm9kZSxcblx0XHRzdGF0dXNCYXI6IFByb3BUeXBlcy5ub2RlLFxuXHRcdGRlYnVnOiBQcm9wVHlwZXMuYm9vbCxcblx0XHRkb2M6IFByb3BUeXBlcy5vYmplY3QsXG5cdFx0cnVsZXI6IFByb3BUeXBlcy5ib29sLFxuXHRcdGNoYW5uZWw6IFByb3BUeXBlcy5zdHJpbmcsXG5cdFx0bGF5b3V0OiBQcm9wVHlwZXMubm9kZSxcblx0fVxuXG5cdHN0YXRpYyBkZWZhdWx0UHJvcHM9e1xuXHRcdHRvb2xCYXI6ICg8UmliYm9uLz4pLFxuXHRcdHN0YXR1c0JhcjooPFN0YXR1cy8+KVxuXHR9XG5cblx0Y29uc3RydWN0b3IoKXtcblx0XHRzdXBlciguLi5hcmd1bWVudHMpXG5cdFx0dGhpcy5zdGF0ZT17fVxuXHRcdHRoaXMuZXZlbnRzPW5ldyBFdmVudEVtaXR0ZXIoKVxuXHR9XG5cdFxuXHRnZXRDaGlsZENvbnRleHQoKXtcblx0XHRjb25zdCB7ZGVidWd9PXRoaXMucHJvcHNcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXZlbnRzOnRoaXMuZXZlbnRzLFxuXHRcdFx0ZGVidWdcblx0XHR9XG5cdH1cblxuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7ZXJyb3J9PXRoaXMuc3RhdGVcblx0XHRpZihlcnJvcil7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXt7ZmxleDoxLCBkaXNwbGF5OlwiZmxleFwiLCBmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCJ9fT5cblx0XHRcdFx0XHQ8cHJlIHN0eWxlPXt7bWFyZ2luOlwiYXV0b1wiLGNvbG9yOlwicmVkXCIsZm9udFNpemU6XCJiaWdnZXJcIn19PlxuXHRcdFx0XHRcdFx0e2Vycm9yLnN0YWNrfVxuXHRcdFx0XHRcdDwvcHJlPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdClcblx0XHR9XG5cdFx0Y29uc3Qge2RvYyxyZWR1Y2VyLCAuLi5wcm9wc309dGhpcy5wcm9wc1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZG9jLlN0b3JlIHJlZHVjZXI9e3JlZHVjZXJ9PlxuXHRcdFx0XHQ8Q2hhbm5lbHMgey4uLnByb3BzfS8+XG5cdFx0XHQ8L2RvYy5TdG9yZT5cblx0XHQpXG5cdH1cblxuXHRjb21wb25lbnREaWRDYXRjaChlcnJvcil7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7ZXJyb3J9KVxuXHR9XG5cblx0c3RhdGljIERlc2s9Y29ubmVjdCgoc3RhdGUpPT57XG5cdFx0Y29uc3Qgc2NhbGU9Z2V0T2ZmaWNlKHN0YXRlKS5zY2FsZVxuXHRcdGlmKHNjYWxlIT11bmRlZmluZWQpXG5cdFx0XHRyZXR1cm4ge3NjYWxlOnNjYWxlLzEwMH1cblx0XHRyZXR1cm4ge31cblx0fSkocHVyZSgoe2NoaWxkcmVuLCB0b29sQmFyLCBydWxlciwgY2hhbm5lbCwgc3RhdHVzQmFyLCBpY29uLCBsYXlvdXQsLi4ucHJvcHN9KT0+KFxuXHRcdDxGcmFnbWVudD5cblx0XHRcdHtSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4scHJvcHMpfVxuXHRcdDwvRnJhZ21lbnQ+XG5cdCkpKVxuXG5cdHN0YXRpYyBMYXlvdXQ9cHVyZSgoe2NhbnZhcywgbGVmdCwgIHJpZ2h0LCBzdHlsZX0pPT4oXG5cdFx0PGRpdiBzdHlsZT17e2ZsZXg6XCIxIDEwMCVcIiwgZGlzcGxheTpcImZsZXhcIiwgIGZsZXhEaXJlY3Rpb246XCJyb3dcIiwgb3ZlcmZsb3c6XCJhdXRvXCIsLi4uc3R5bGV9fT5cblx0XHRcdHtsZWZ0ICYmIDxkaXYgc3R5bGU9e3tvdmVyZmxvdzpcImF1dG9cIn19PntsZWZ0fTwvZGl2Pn1cblx0XHRcdHtjYW52YXN9XG5cdFx0XHR7cmlnaHQgJiYgPGRpdiBzdHlsZT17e292ZXJmbG93OlwiYXV0b1wifX0+e3JpZ2h0fTwvZGl2Pn1cblx0XHQ8L2Rpdj5cblx0KSlcbn1cblxuLy9leHRyYWN0IENoYW5uZWxzIGZyb20gV29ya3NwYWNlIHRvIG1ha2UgY2hhbm5lbCBpbnRvIHJlZHV4IHN0YXRlXG5jb25zdCBDaGFubmVscz1jb25uZWN0KChzdGF0ZSxwcm9wcyk9Pih7Y2hhbm5lbDpnZXRPZmZpY2Uoc3RhdGUpLmNoYW5uZWx8fHByb3BzLmNoYW5uZWx9KSkoXG5cdGNsYXNzIEJhc2VDaGFubmVscyBleHRlbmRzIENvbXBvbmVudHtcblx0XHRnZXRDaGFubmVscz1tZW1vaXplKGNoaWxkcmVuPT5cblx0XHRcdENoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pLmZpbHRlcihhPT5hLnByb3BzKVxuXHRcdFx0XHQubWFwKCh7cHJvcHM6e2NoYW5uZWwsaWNvbn19KT0+Y2hhbm5lbCA/IHtjaGFubmVsLGljb246aWNvbnx8PHNwYW4gdGl0bGU9e3tjaGFubmVsfX0vPn0gOiBudWxsKVxuXHRcdFx0XHQuZmlsdGVyKGE9PiEhYSlcblx0XHQpXG5cblx0XHRnZXRDdXJyZW50PW1lbW9pemUoKGNoaWxkcmVuLGNoYW5uZWwpPT57XG5cdFx0XHRjaGlsZHJlbj1DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKVxuXHRcdFx0Y29uc3QgY3VycmVudD1jaGlsZHJlbi5maWx0ZXIoYT0+YS5wcm9wcykuZmluZCgoe3Byb3BzfSk9PnByb3BzLmNoYW5uZWw9PWNoYW5uZWwpXG5cdFx0XHRjb25zdCB1bmNvbnRyb2xsZWQ9Y2hpbGRyZW4uZmlsdGVyKCh7cHJvcHN9KT0+IXByb3BzIHx8ICFwcm9wcy5jaGFubmVsKS5maWx0ZXIoYT0+YSE9Y3VycmVudClcblx0XHRcdHJldHVybiB7Y3VycmVudCwgdW5jb250cm9sbGVkfVxuXHRcdH0pXHRcblxuXHRcdHJlbmRlcigpe1xuXHRcdFx0bGV0IHtjaGFubmVsLCBjaGlsZHJlbiwgdG9vbEJhciwgc3RhdHVzQmFyLCBydWxlcj10cnVlLCBsYXlvdXQsIGRpc3BhdGNofT10aGlzLnByb3BzXG5cdFx0XHRsZXQge2N1cnJlbnQsdW5jb250cm9sbGVkfT10aGlzLmdldEN1cnJlbnQoY2hpbGRyZW4sIGNoYW5uZWwpXG5cblx0XHRcdGlmKGN1cnJlbnQpe1xuXHRcdFx0XHR0b29sQmFyPXR5cGVvZihjdXJyZW50LnByb3BzLnRvb2xCYXIpPT1cInVuZGVmaW5lZFwiID8gdG9vbEJhciA6IGN1cnJlbnQucHJvcHMudG9vbEJhclxuXHRcdFx0XHRzdGF0dXNCYXI9dHlwZW9mKGN1cnJlbnQucHJvcHMuc3RhdHVzQmFyKT09XCJ1bmRlZmluZWRcIj8gc3RhdHVzQmFyIDogY3VycmVudC5wcm9wcy5zdGF0dXNCYXJcblx0XHRcdFx0cnVsZXI9dHlwZW9mKGN1cnJlbnQucHJvcHMucnVsZXIpPT1cInVuZGVmaW5lZFwiPyBydWxlciA6IGN1cnJlbnQucHJvcHMucnVsZXJcblx0XHRcdFx0bGF5b3V0PXR5cGVvZihjdXJyZW50LnByb3BzLmxheW91dCk9PVwidW5kZWZpbmVkXCI/IGxheW91dCA6IGN1cnJlbnQucHJvcHMubGF5b3V0XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGNhbnZhcz0oXG5cdFx0XHRcdDxDYW52YXMgcnVsZXI9e3J1bGVyfT5cblx0XHRcdFx0XHR7Y3VycmVudH1cblx0XHRcdFx0XHR7dW5jb250cm9sbGVkfVxuXHRcdFx0XHQ8L0NhbnZhcz5cblx0XHRcdClcblxuXHRcdFx0Y29uc3Qgcm9vdFN0eWxlPXtcblx0XHRcdFx0ZmxleDoxLCBcblx0XHRcdFx0ZGlzcGxheTpcImZsZXhcIiwgXG5cdFx0XHRcdGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIiwgXG5cdFx0XHRcdG92ZXJmbG93OlwiaGlkZGVuXCIvKipjYW4ndCByZW1vdmUsIG90aGVyd2lzZSBlZGl0b3IgIHNjcm9sbCB3b3VsZCBiZSBkZXN0cm9pZWQgKi9cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PGRpdiBzdHlsZT17cm9vdFN0eWxlfSBrZXk9e2NoYW5uZWx9PlxuXHRcdFx0XHRcdHt0b29sQmFyfVxuXG5cdFx0XHRcdFx0e2xheW91dCA/IFJlYWN0LmNsb25lRWxlbWVudChsYXlvdXQsIHtjYW52YXMsIGNoaWxkcmVuOmxheW91dC5wcm9wcy5jaGlsZHJlbnx8Y2FudmFzfSkgOiBjYW52YXN9XG5cblx0XHRcdFx0XHR7c3RhdHVzQmFyICYmIFJlYWN0LmNsb25lRWxlbWVudChzdGF0dXNCYXIse1xuXHRcdFx0XHRcdFx0Y2hhbm5lbDp7XG5cdFx0XHRcdFx0XHRcdGl0ZW1zOnRoaXMuZ2V0Q2hhbm5lbHMoY2hpbGRyZW4pLFxuXHRcdFx0XHRcdFx0XHRjdXJyZW50OmNoYW5uZWwsXG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBjaGFubmVsPT5kaXNwYXRjaChBQ1RJT04uY2hhbm5lbChjaGFubmVsKSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KX1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQpXHRcdFxuXHRcdH1cblx0fVxuKSIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtFZGl0b3J9IGZyb20gXCJ3ZS1lZGl0XCJcbmltcG9ydCBJY29uUHJpbnQgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9hY3Rpb24vdmlldy1tb2R1bGVcIlxuaW1wb3J0IEljb25XZWIgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWFsaWduLWp1c3RpZnlcIlxuaW1wb3J0IEljb25UZXh0IGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC90ZXh0LWZvcm1hdFwiXG5cbmltcG9ydCBXb3Jrc3BhY2UgZnJvbSBcIi4uL3dvcmtzcGFjZVwiXG5pbXBvcnQgUmliYm9uLHt9IGZyb20gXCIuLi9yaWJib25cIlxuXG5cblxuZXhwb3J0IGRlZmF1bHQgKFxuICAgIDxXb3Jrc3BhY2Vcblx0XHRcdGRlYnVnPXt0cnVlfVxuXHRcdFx0YWNjZXB0PXtcblx0XHRcdFx0ZnVuY3Rpb24oe3Byb3BzOntzdXBwb3J0UGFnaW5hdGlvbn0sbmFtZX0pe1xuXHRcdFx0XHRcdHJldHVybiBzdXBwb3J0UGFnaW5hdGlvblxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRrZXk9XCJkZWZhdWx0KGFjY2VwdD1bc3VwcG9ydFBhZ2luYXRpb25dKVwiXG5cdFx0XHRjaGFubmVsPVwicHJpbnRcIlxuXHRcdFx0PlxuXG5cdFx0XHQ8V29ya3NwYWNlLkRlc2tcblx0XHRcdFx0Y2hhbm5lbD1cInByaW50XCJcblx0XHRcdFx0aWNvbj17PEljb25QcmludC8+fVxuXHRcdFx0XHRjaGlsZHJlbj17PEVkaXRvciByZXByZXNlbnRhdGlvbj1cInBhZ2luYXRpb25cIi8+fVxuXHRcdFx0XHQvPlxuXG5cblx0XHRcdDxXb3Jrc3BhY2UuRGVza1xuXHRcdFx0XHRjaGFubmVsPVwid2ViXCJcblx0XHRcdFx0cnVsZXI9e3t2ZXJ0aWNhbDpmYWxzZX19XG5cdFx0XHRcdGljb249ezxJY29uV2ViLz59XG5cdFx0XHRcdGNoaWxkcmVuPXs8RWRpdG9yIHJlcHJlc2VudGF0aW9uPVwiaHRtbFwiLz59XG5cdFx0XHRcdC8+XG5cblx0XHRcdDxXb3Jrc3BhY2UuRGVza1xuXHRcdFx0XHRjaGFubmVsPVwicGxhaW4gdGV4dFwiXG5cdFx0XHRcdHJ1bGVyPXtmYWxzZX1cblx0XHRcdFx0dG9vbEJhcj17XG5cdFx0XHRcdFx0PFJpYmJvbiBjb21tYW5kcz17e1xuXHRcdFx0XHRcdFx0aG9tZTp7XG5cdFx0XHRcdFx0XHRcdHRleHQ6ZmFsc2UsXG5cdFx0XHRcdFx0XHRcdHBhcmFncmFwaDpmYWxzZVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGluc2VydDpmYWxzZSxsYXlvdXQ6ZmFsc2Usd2hlbjpmYWxzZSxcblx0XHRcdFx0XHR9fT5cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdDwvUmliYm9uPlxuXHRcdFx0XHR9XG5cdFx0XHRcdGljb249ezxJY29uVGV4dC8+fVxuXHRcdFx0XHRjaGlsZHJlbj17PEVkaXRvciByZXByZXNlbnRhdGlvbj1cInRleHRcIi8+fVxuXHRcdFx0XHQvPlxuXHRcdDwvV29ya3NwYWNlPlxuKSIsImltcG9ydCBSZWFjdCx7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gIFwicmVhY3QtcmVkdXhcIlxuaW1wb3J0IHtFZGl0b3IsZ2V0QWN0aXZlfSBmcm9tIFwid2UtZWRpdFwiXG5pbXBvcnQge21vZGVzLCB0aGVtZXN9IGZyb20gXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLXBsYWluXCJcblxuXG5pbXBvcnQgRm9udExpc3QgZnJvbSBcIi4uL3RleHQvZm9udHNcIlxuaW1wb3J0IFdvcmtzcGFjZSBmcm9tIFwiLi4vd29ya3NwYWNlXCJcbmltcG9ydCBSaWJib24se1Rvb2xiYXJTZXBhcmF0b3J9IGZyb20gXCIuLi9yaWJib25cIlxuaW1wb3J0IENvbWJvQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2NvbWJvLWJveFwiXG5pbXBvcnQgQ2hlY2tJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL2NoZWNrLWljb24tYnV0dG9uXCJcblxuaW1wb3J0IEljb25XcmFwIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3dyYXAtdGV4dFwiXG5pbXBvcnQgSWNvbk51bWJlciBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtbGlzdC1udW1iZXJlZFwiXG5cbmNvbnN0IERPTUFJTj1cImRlZmF1bHQoYWNjZXB0PSopXCJcblxuZnVuY3Rpb24gcmVkdWNlcihzdGF0ZT17XG4gICAgbW9kZTpcIlwiLHRoZW1lOlwiZWNsaXBzZVwiLGZvbnQ6XCJDYWxpYnJpXCIsc2l6ZToxMix3cmFwOmZhbHNlLG51bWJlcjp0cnVlXG4gICAgfSx7dHlwZSxwYXlsb2FkfSl7XG5cdHN3aXRjaCh0eXBlKXtcblx0Y2FzZSBgJHtET01BSU59L21vZGVgOlxuXHRcdHJldHVybiB7Li4uc3RhdGUsbW9kZTpwYXlsb2FkfVxuXHRjYXNlIGAke0RPTUFJTn0vdGhlbWVgOlxuICAgICAgICByZXR1cm4gey4uLnN0YXRlLHRoZW1lOnBheWxvYWR9XHRcbiAgICBjYXNlIGAke0RPTUFJTn0vZm9udGA6XG4gICAgICAgIHJldHVybiB7Li4uc3RhdGUsZm9udDpwYXlsb2FkfVxuICAgIGNhc2UgYCR7RE9NQUlOfS9zaXplYDpcbiAgICAgICAgcmV0dXJuIHsuLi5zdGF0ZSxzaXplOnBheWxvYWR9XHRcbiAgICBjYXNlIGAke0RPTUFJTn0vd3JhcGA6XG4gICAgICAgIHJldHVybiB7Li4uc3RhdGUsd3JhcDpwYXlsb2FkfVxuICAgIGNhc2UgYCR7RE9NQUlOfS9udW1iZXJgOlxuICAgICAgICByZXR1cm4gey4uLnN0YXRlLG51bWJlcjpwYXlsb2FkfVx0XG5cdH1cblx0cmV0dXJuIHN0YXRlXG59XG5cbmNvbnN0IFNldHRpbmc9Y29ubmVjdChzdGF0ZT0+e1xuICAgIGNvbnN0IHNldHRpbmc9c3RhdGVbRE9NQUlOXVxuICAgIGNvbnN0IGFjdGl2ZT1nZXRBY3RpdmUoc3RhdGUpXG4gICAgY29uc3QgbW9kZT1hY3RpdmUuZG9jLm1vZGVcbiAgICBpZihtb2RlKXtcbiAgICAgICAgcmV0dXJuIHsuLi5zZXR0aW5nLG1vZGV9XG4gICAgfVxuICAgIHJldHVybiBzZXR0aW5nXG59KSgoe2Rpc3BhdGNoLG1vZGUsdGhlbWUsZm9udCxzaXplLHdyYXAsbnVtYmVyfSk9Pntcblx0cmV0dXJuIChcblx0XHQ8RnJhZ21lbnQ+XG4gICAgICAgICAgICA8Rm9udExpc3QgXG4gICAgICAgICAgICAgICAgdmFsdWU9e2ZvbnR9XG4gICAgICAgICAgICAgICAgY2hhbmdlRm9udD17cGF5bG9hZD0+ZGlzcGF0Y2goe3R5cGU6YCR7RE9NQUlOfS9mb250YCxwYXlsb2FkfSl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3twYWRkaW5nUmlnaHQ6MTUsd2lkdGg6ODB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Q29tYm9Cb3hcbiAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOjUwLHBhZGRpbmdSaWdodDoxNX19XG4gICAgICAgICAgICAgICAgaW5wdXRTdHlsZT17e2JvcmRlcjpcIjFweCBzb2xpZCBsaWdodGdyYXlcIn19XG4gICAgICAgICAgICAgICAgdmFsdWU9e3NpemV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NpemU9PmRpc3BhdGNoKHt0eXBlOmAke0RPTUFJTn0vc2l6ZWAscGF5bG9hZDpwYXJzZUludChzaXplKX0pfVxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U9e1s4LDksMTAsMTEsMTIsMTQsMTYsMjAsMjIsMjQsMjYsMjgsMzYsNzJdLm1hcChhPT5hK1wiXCIpfVxuICAgICAgICAgICAgICAgIHVuZGVybGluZVNob3c9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VG9vbGJhclNlcGFyYXRvci8+ICAgIFxuXHRcdFx0PENvbWJvQm94IC8vbGFiZWw9XCLmlofku7bnsbvlnotcIiBcblx0XHRcdFx0c3R5bGU9e3t3aWR0aDo4MCxwYWRkaW5nUmlnaHQ6MTV9fVxuXHRcdFx0XHR0aXRsZT1cIuaWh+S7tuexu+Wei1wiXG5cdFx0XHRcdGlucHV0U3R5bGU9e3tib3JkZXI6XCIxcHggc29saWQgbGlnaHRncmF5XCIscGFkZGluZ0xlZnQ6NX19XG5cdFx0XHRcdHVuZGVybGluZVNob3c9e2ZhbHNlfVxuXHRcdFx0XHR2YWx1ZT17bW9kZX1cblx0XHRcdFx0b25DaGFuZ2U9e3BheWxvYWQ9PmRpc3BhdGNoKHt0eXBlOmAke0RPTUFJTn0vbW9kZWAscGF5bG9hZH0pfVxuXHRcdFx0XHRkYXRhU291cmNlPXttb2Rlcy5tYXAoKHttb2RlfSk9Pm1vZGUpfVxuXHRcdFx0XHQvPlxuXHRcdFx0PENvbWJvQm94IC8vbGFiZWw9XCLpo47moLxcIiBcblx0XHRcdFx0c3R5bGU9e3t3aWR0aDoxMDAscGFkZGluZ1JpZ2h0OjE1fX1cblx0XHRcdFx0dGl0bGU9XCLpo47moLxcIlxuXHRcdFx0XHRpbnB1dFN0eWxlPXt7Ym9yZGVyOlwiMXB4IHNvbGlkIGxpZ2h0Z3JheVwiLHBhZGRpbmdMZWZ0OjV9fVxuXHRcdFx0XHR1bmRlcmxpbmVTaG93PXtmYWxzZX1cblx0XHRcdFx0dmFsdWU9e3RoZW1lfVxuXHRcdFx0XHRvbkNoYW5nZT17cGF5bG9hZD0+ZGlzcGF0Y2goe3R5cGU6YCR7RE9NQUlOfS90aGVtZWAscGF5bG9hZH0pfVxuXHRcdFx0XHRkYXRhU291cmNlPXtPYmplY3Qua2V5cyh0aGVtZXMpfVxuXHRcdFx0XHQvPlxuICAgICAgICAgICAgPFRvb2xiYXJTZXBhcmF0b3IvPlxuICAgICAgICAgICAgPENoZWNrSWNvbkJ1dHRvbiBsYWJlbD1cIndyYXBcIlxuICAgICAgICAgICAgICAgIHN0YXR1cz17d3JhcCA/IFwiY2hlY2tlZFwiIDogXCJ1bmNoZWNrZWRcIn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+ZGlzcGF0Y2goe3R5cGU6YCR7RE9NQUlOfS93cmFwYCxwYXlsb2FkOiF3cmFwfSl9XG4gICAgICAgICAgICAgICAgY2hpbGRyZW49ezxJY29uV3JhcC8+fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Q2hlY2tJY29uQnV0dG9uIGxhYmVsPVwic2hvdyBudW1iZXJcIlxuICAgICAgICAgICAgICAgIHN0YXR1cz17bnVtYmVyID8gXCJjaGVja2VkXCIgOiBcInVuY2hlY2tlZFwifVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT5kaXNwYXRjaCh7dHlwZTpgJHtET01BSU59L251bWJlcmAscGF5bG9hZDohbnVtYmVyfSl9XG4gICAgICAgICAgICAgICAgY2hpbGRyZW49ezxJY29uTnVtYmVyLz59XG4gICAgICAgICAgICAgICAgLz5cblx0XHQ8L0ZyYWdtZW50PlxuXHQpXG59KVxuXG5jb25zdCBQbGFpbkVkaXRvcj1jb25uZWN0KHN0YXRlPT5zdGF0ZVtET01BSU5dKSgoe21vZGUsdGhlbWUsZm9udCxzaXplLHdyYXAsbnVtYmVyfSk9Pihcblx0PEVkaXRvciByZXByZXNlbnRhdGlvbj1cInBsYWluXCIgc2V0dGluZz17e21vZGUsdGhlbWUsZm9udCxzaXplLHdyYXAsbnVtYmVyfX0vPlxuKSlcblxuZXhwb3J0IGRlZmF1bHQgKFxuICAgIDxXb3Jrc3BhY2VcbiAgICAgICAgZGVidWc9e3RydWV9XG4gICAgICAgIGFjY2VwdD1cIipcIlxuICAgICAgICBrZXk9e0RPTUFJTn1cbiAgICAgICAgcnVsZXI9e2ZhbHNlfVxuICAgICAgICBzdGF0dXNCYXI9e2ZhbHNlfVxuICAgICAgICByZWR1Y2VyPXtyZWR1Y2VyfVxuICAgICAgICB0b29sQmFyPXtcbiAgICAgICAgICAgIDxSaWJib24gY29tbWFuZHM9e3tcbiAgICAgICAgICAgICAgICBob21lOntcbiAgICAgICAgICAgICAgICAgICAgdGV4dDpmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoOmZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmQ6ZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1vcmU6KDxTZXR0aW5nLz4pXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpbnNlcnQ6ZmFsc2UsXG4gICAgICAgICAgICAgICAgbGF5b3V0OmZhbHNlLFxuICAgICAgICAgICAgICAgIHdoZW46ZmFsc2UsXG5cbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgPC9SaWJib24+XG4gICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICA8UGxhaW5FZGl0b3IvPlxuICAgIDwvV29ya3NwYWNlPlxuKSIsImltcG9ydCBSZWFjdCwge1B1cmVDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7V2VFZGl0LHNoYWxsb3dFcXVhbH0gZnJvbSBcIndlLWVkaXRcIlxuaW1wb3J0IG1lbW9pemUgZnJvbSBcIm1lbW9pemUtb25lXCJcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSBcImV2ZW50c1wiXG5cbmltcG9ydCBXZUVkaXRVSSBmcm9tIFwiLi4vd2UtZWRpdC11aVwiXG5cbmltcG9ydCBQYWdpbmF0aW9uT2ZmaWNlIGZyb20gXCIuL3BhZ2luYXRpb25cIlxuaW1wb3J0IFBsYWluT2ZmaWNlIGZyb20gXCIuL3BsYWluXCJcblxuXG5jb25zdCBteU9mZmljZT1bUGFnaW5hdGlvbk9mZmljZSxQbGFpbk9mZmljZV1cblxuY29uc3QgZXZlbnQ9bmV3IChjbGFzcyBPZmZpY2VFdmVudCBleHRlbmRzIEV2ZW50RW1pdHRlcntcblx0Y29uc3RydWN0b3IoKXtcblx0XHRzdXBlciguLi5hcmd1bWVudHMpXG5cdFx0dmFyIGluaXRzPVtdXG5cdFx0dmFyIG9uUmVhZHk9KHdvcmtzcGFjZXMsaW5pdCk9Pntcblx0XHRcdGlmKGluaXQpe1xuXHRcdFx0XHRpbml0cy5wdXNoKGluaXQpXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5vbihcImNoYW5nZVwiLG9uUmVhZHkpXG5cdFx0XG5cdFx0dGhpcy5vbmNlKCdvZmZpY2UgcmVhZHknLGRpc3BhdGNoPT57XG5cdFx0XHR0aGlzLnJlbW92ZUxpc3RlbmVyKFwiY2hhbmdlXCIsIG9uUmVhZHkpXG5cdFx0XHR0cnl7XG5cdFx0XHRcdGluaXRzLmZvckVhY2goaW5pdD0+aW5pdChkaXNwYXRjaCkpXG5cdFx0XHR9Y2F0Y2goZSl7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoZSlcblx0XHRcdH1cblx0XHR9KVxuXHR9XG5cblx0cmVhZHkoKXtcblx0XHR0aGlzLmVtaXQoXCJvZmZpY2UgcmVhZHlcIiwgLi4uYXJndW1lbnRzKVxuXHR9XG59KSgpO1xuXG5jb25zdCBleGNsdWRlUmVkdWNlcj0oc3RhdGU9e30pPT5zdGF0ZVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPZmZpY2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50e1xuXHRzdGF0aWMgcHJvcFR5cGVzPXtcblx0XHR3b3Jrc3BhY2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuZWxlbWVudCksXG5cdFx0aW5zdGFsbGFibGU6UHJvcFR5cGVzLmJvb2wsXG5cdH1cblxuXHRzdGF0aWMgZGVmYXVsdFByb3BzPXtcblx0XHRpbnN0YWxsYWJsZTp0cnVlLFxuXHR9XG5cblx0c3RhdGljIGluc3RhbGwod29ya3NwYWNlcyxpbml0KXtcblx0XHR3b3Jrc3BhY2VzPUFycmF5LmlzQXJyYXkod29ya3NwYWNlcykgJiYgd29ya3NwYWNlcyB8fCBbd29ya3NwYWNlc11cblx0XHR3b3Jrc3BhY2VzLnJldmVyc2UoKS5mb3JFYWNoKGE9Pm15T2ZmaWNlLnVuc2hpZnQoYSkpXG5cdFx0ZXZlbnQuZW1pdChcImNoYW5nZVwiLCBbLi4ubXlPZmZpY2VdLCBpbml0KVxuXHR9XG5cblx0c3RhdGljIHVuaW5zdGFsbCh3b3Jrc3BhY2VzKXtcblx0XHR3b3Jrc3BhY2VzPUFycmF5LmlzQXJyYXkod29ya3NwYWNlcykgJiYgd29ya3NwYWNlcyB8fCBbd29ya3NwYWNlc11cblx0XHR3b3Jrc3BhY2VzLmZvckVhY2goYT0+bXlPZmZpY2Uuc3BsaWNlKG15T2ZmaWNlLmluZGV4T2YoYSksMSkpXG5cdFx0ZXZlbnQuZW1pdChcImNoYW5nZVwiLFsuLi5teU9mZmljZV0pXG5cdH1cblxuXHRzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHt3b3Jrc3BhY2VzLGluc3RhbGxhYmxlfSxzdGF0ZSl7XG5cdFx0cmV0dXJuIHt3b3Jrc3BhY2VzOiAoaW5zdGFsbGFibGUgJiYgc3RhdGUud29ya3NwYWNlcyl8fHdvcmtzcGFjZXN8fFsuLi5teU9mZmljZV19XG5cdH1cblxuXHRjb25zdHJ1Y3Rvcigpe1xuXHRcdHN1cGVyKC4uLmFyZ3VtZW50cylcblx0XHR0aGlzLnN0YXRlPXt3b3Jrc3BhY2VzOm51bGwsZXhjbHVkZXM6e319XG5cdFx0dGhpcy53ZWRpdD1SZWFjdC5jcmVhdGVSZWYoKVxuXHR9XG5cblx0Z2V0UmVkdWNlcnM9bWVtb2l6ZSgod29ya3NwYWNlcyxyZWR1Y2Vycyk9Pntcblx0XHRyZXR1cm4gd29ya3NwYWNlcy5yZWR1Y2UoKGNvbGxlY3RlZCxhKT0+e1xuXHRcdFx0aWYoYS5wcm9wcy5yZWR1Y2VyKXtcblx0XHRcdFx0Y29sbGVjdGVkW2Eua2V5XT0oc3RhdGUsYWN0aW9uKT0+e1xuXHRcdFx0XHRcdGxldCByZWR1Y2VkPWEucHJvcHMucmVkdWNlcihzdGF0ZSxhY3Rpb24pXG5cdFx0XHRcdFx0cmV0dXJuIHsuLi5zdGF0ZSwuLi5yZWR1Y2VkfVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY29sbGVjdGVkXG5cdFx0fSx7Li4ucmVkdWNlcnN9KVxuXHR9LChhLGIpPT5hPT09YiB8fCBzaGFsbG93RXF1YWwoYSxiKSlcblxuXHRjb21wb25lbnREaWRNb3VudCgpe1xuXHRcdGNvbnN0IHtpbnN0YWxsYWJsZX09dGhpcy5wcm9wc1xuXHRcdGlmKGluc3RhbGxhYmxlKXtcblx0XHRcdGNvbnN0IGRpc3BhdGNoPXRoaXMud2VkaXQuY3VycmVudC5zdG9yZS5kaXNwYXRjaFxuXHRcdFx0ZXZlbnQucmVhZHkoZGlzcGF0Y2gpXG5cdFx0XHRldmVudC5vbihcImNoYW5nZVwiLCB0aGlzLnVwZGF0ZVdvcmtzcGFjZXM9KHdvcmtzcGFjZXMsaW5pdCk9Pntcblx0XHRcdFx0dGhpcy5zZXRTdGF0ZSgoe3dvcmtzcGFjZXM6Y3VycmVudH0pPT57XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHdvcmtzcGFjZXMsXG5cdFx0XHRcdFx0XHRleGNsdWRlczpjdXJyZW50LmZpbHRlcihhPT4hd29ya3NwYWNlcy5maW5kKGI9PmIua2V5PT09YS5rZXkpKVxuXHRcdFx0XHRcdFx0XHRcdFx0LnJlZHVjZSgoZXhjbHVkZXMsYSk9Pntcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZXhjbHVkZXNbYS5rZXldPWV4Y2x1ZGVSZWR1Y2VyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBleGNsdWRlc1xuXHRcdFx0XHRcdFx0XHRcdFx0fSx7fSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sIGluaXQgJiYgKCgpPT57XG5cdFx0XHRcdFx0aW5pdChkaXNwYXRjaClcblx0XHRcdFx0fSkpXG5cdFx0XHR9KVxuXHRcdH1cblx0fVxuXG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHt3b3Jrc3BhY2VzLCBleGNsdWRlc309dGhpcy5zdGF0ZVxuXHRcdGxldCB7dGl0bGVCYXJQcm9wcyxjaGlsZHJlbiwgdGl0bGVCYXIsIGRhc2hib2FyZCwgcmVkdWNlcnM9e319PXRoaXMucHJvcHNcblx0XHRcblx0XHRyZWR1Y2Vycz10aGlzLmdldFJlZHVjZXJzKHdvcmtzcGFjZXMsey4uLmV4Y2x1ZGVzLC4uLnJlZHVjZXJzfSlcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8V2VFZGl0IHJlZHVjZXJzPXtyZWR1Y2Vyc30gcmVmPXt0aGlzLndlZGl0fT5cblx0XHRcdFx0PFdlRWRpdFVJIHsuLi57dGl0bGVCYXJQcm9wcywgdGl0bGVCYXIsZGFzaGJvYXJkfX0+XG5cdFx0XHRcdFx0e3dvcmtzcGFjZXMubWFwKGE9PmEucHJvcHMucmVkdWNlciA/IFJlYWN0LmNsb25lRWxlbWVudChhLHtyZWR1Y2VyOnVuZGVmaW5lZH0pIDogYSl9XG5cdFx0XHRcdFx0e2NoaWxkcmVufVxuXHRcdFx0XHQ8L1dlRWRpdFVJPlxuXHRcdFx0PC9XZUVkaXQ+XG5cdFx0KVxuXHR9XG5cblx0Y29tcG9uZW50V2lsbFVubW91bnQoKXtcblx0XHRpZih0aGlzLnByb3BzLmluc3RhbGxhYmxlKXtcblx0XHRcdGV2ZW50LnJlbW92ZUxpc3RlbmVyKFwiY2hhbmdlXCIsdGhpcy51cGRhdGVXb3Jrc3BhY2VzKVxuXHRcdH1cblx0fVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbVwiXG5pbXBvcnQgT2ZmaWNlIGZyb20gXCIuL29mZmljZVwiXG5pbXBvcnQgKiBhcyBSaWJib24gIGZyb20gXCIuL3JpYmJvblwiXG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBXZUVkaXRVSX0gZnJvbSBcIi4vd2UtZWRpdC11aVwiXG5leHBvcnQge2RlZmF1bHQgYXMgV29ya3NwYWNlfSBmcm9tIFwiLi93b3Jrc3BhY2VcIlxuZXhwb3J0IHtkZWZhdWx0IGFzIFN0YXR1c0Jhcn0gZnJvbSBcIi4vc3RhdHVzXCJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBDYW52YXN9IGZyb20gXCIuL2NhbnZhc1wiXG5leHBvcnQge2RlZmF1bHQgYXMgVGl0bGVCYXJ9IGZyb20gXCIuL3RpdGxlLWJhclwiXG5leHBvcnQge2RlZmF1bHQgYXMgRGFzaGJvYXJkfSBmcm9tIFwiLi9kYXNoYm9hcmRcIlxuZXhwb3J0IHtkZWZhdWx0IGFzIHJlZHVjZXJ9IGZyb20gXCIuL3N0YXRlL3JlZHVjZXJcIlxuZXhwb3J0IHtkZWZhdWx0IGFzIEFDVElPTn0gZnJvbSBcIi4vc3RhdGUvYWN0aW9uXCJcblxuXG5leHBvcnQge1JpYmJvbixPZmZpY2V9XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoY29udGFpbmVyLCBvZmZpY2U9PE9mZmljZS8+KXtcblx0aWYoIWNvbnRhaW5lciB8fCBjb250YWluZXI9PWRvY3VtZW50LmJvZHkpe1xuXHRcdGNvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpXG5cdFx0ZG9jdW1lbnQuYm9keS5zdHlsZT1cIm1hcmdpbjowcHg7cGFkZGluZzowcHg7Ym9yZGVyOjBweFwiXG5cdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpXG5cdH1cblx0cmV0dXJuIFJlYWN0RE9NLnJlbmRlcihvZmZpY2UsIGNvbnRhaW5lcilcbn1cblxuKGZ1bmN0aW9uKG1lKXsvL21hZ2ljXG5cdG1lICYmIG1lLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsICgpPT57XG5cdFx0bGV0IGNvbnRhaW5lcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjT2ZmaWNlQ29udGFpbmVyJylcblx0XHRpZihjb250YWluZXIgfHwgZG9jdW1lbnQudGl0bGU9PVwidGVzdFwiKXtcblx0XHRcdGNyZWF0ZShjb250YWluZXIpXG5cdFx0fVxuXHR9KVxufSkod2luZG93KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
\No newline at end of file