UNPKG

39.8 kBJavaScriptView Raw
1module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=15)}([function(e,t){e.exports=require("@babel/runtime/helpers/defineProperty")},function(e,t){e.exports=require("react")},function(e,t){e.exports=require("prop-types")},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/createClass")},function(e,t){e.exports=require("@babel/runtime/helpers/objectWithoutProperties")},function(e,t){e.exports=require("we-edit")},function(e,t){e.exports=require("vm")},function(e,t){e.exports=require("@babel/runtime/helpers/extends")},function(e,t){e.exports=require("@babel/runtime/helpers/assertThisInitialized")},function(e,t){e.exports=require("memoize-one")},function(e,t){e.exports=require("@babel/runtime/helpers/typeof")},function(e,t,r){"use strict";r.r(t);var n={};r.r(n),r.d(n,"$exp",(function(){return A})),r.d(n,"$for",(function(){return V})),r.d(n,"$if",(function(){return L})),r.d(n,"$image",(function(){return z})),r.d(n,"$script",(function(){return I})),r.d(n,"$sub",(function(){return W})),r.d(n,"$type",(function(){return J}));var i=r(11),o=r.n(i),a=r(8),u=r.n(a),c=r(0),s=r.n(c),p=r(1),l=r.n(p),f=r(9),y=r(3),h=r.n(y),d=r(7),v=r.n(d),b=r(4),O=r.n(b),m=r(5),g=r.n(m),x=r(6),P=r.n(x),j=r(2),w=r.n(j),C=r(10),E=r.n(C),q=function(e){function t(){return h()(this,t),O()(this,g()(t).apply(this,arguments))}return P()(t,e),v()(t,[{key:"getChildContext",value:function(){return{variantContext:E.a.createContext(this.props.value)}}},{key:"render",value:function(){return l.a.createElement(p.Fragment,null,this.props.children)}}]),t}(p.PureComponent);s()(q,"displayName","VariantProvider"),s()(q,"childContextTypes",{variantContext:w.a.object.isRequired});var k=r(12),D=r.n(k),$=r(13),R=r.n($),S=function(e){function t(){var e,r;h()(this,t);for(var n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];return r=O()(this,(e=g()(t)).call.apply(e,[this].concat(i))),s()(D()(r),"scripts",new Map),r}return P()(t,e),v()(t,[{key:"eval",value:function(e,t){try{return E.a.runInContext(e,t)}catch(e){return""}}},{key:"canAssemble",get:function(){return!!this.context.variantContext}}]),t}(p.Component);s()(S,"contextTypes",{variantContext:w.a.object,parent:w.a.object});var A=function(e){var t,r,n=e.Text,i=e.Container;return r=t=function(e){function t(){var e,r;h()(this,t);for(var n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];return r=O()(this,(e=g()(t)).call.apply(e,[this].concat(i))),s()(D()(r),"getValue",R()((function(e){var t=e.variantContext,n=e.expression,i=e.name;return r.eval(i?"var ".concat(i,"=").concat(n,"; ").concat(i):n,t)}),f.shallowEqual)),r}return P()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.expression,r=e.name,a=e.children,c=u()(e,["expression","name","children"]),s=(Array.isArray(a)?a[0]:a)||l.a.createElement(n,c),p=a;if(this.canAssemble){var f=this.getValue({variantContext:this.context.variantContext,expression:t,name:r});p=l.a.cloneElement(s,{children:f+"",color:"red"})}else{var y=s.props.children,h=void 0===y?"":y;Array.isArray(h)&&(h=h.join("")),p=l.a.cloneElement(s,{children:h||"{".concat(t,"}")})}return l.a.createElement(i,o()({},c,{type:this.constructor.displayName}),p)}}]),t}(S),s()(t,"displayName","$exp"),s()(t,"propTypes",{expression:w.a.string.isRequired,name:w.a.string}),s()(t,"defaultProps",{expression:""}),r};function T(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function N(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?T(r,!0).forEach((function(t){s()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):T(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var V=function(e){var t,r,n=e.Container;return r=t=function(e){function t(){return h()(this,t),O()(this,g()(t).apply(this,arguments))}return P()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=(e.init,e.test,e.update,e.children),r=u()(e,["init","test","update","children"]),i=t;return this.canAssemble&&(i=this.getLoopContent()),l.a.createElement(n,o()({},r,{type:this.constructor.displayName}),i)}},{key:"getLoopContent",value:function(){var e=this.props,t=e.init,r=e.test,n=e.update,i=e.children,o=(u()(e,["init","test","update","children"]),E.a.createContext(N({},this.context.variantContext))),a=[];this.eval(t,o);for(var c=0;this.eval(r,o);this.eval(n,o),c++)a.push(l.a.createElement(q,{value:N({},o),key:c},i));return a}}]),t}(S),s()(t,"displayName","$for"),s()(t,"propTypes",{init:w.a.string.isRequired,test:w.a.string.isRequired,update:w.a.string.isRequired}),s()(t,"defaultProps",{init:"",test:"",update:""}),r};function _(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function M(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_(r,!0).forEach((function(t){s()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var L=function(e){var t,r,n=e.Container;return r=t=function(e){function t(){var e,r;h()(this,t);for(var n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];return r=O()(this,(e=g()(t)).call.apply(e,[this].concat(i))),s()(D()(r),"meet",R()((function(e){var t=e.variantContext,n=e.condition;return!!r.eval(n,t)}),f.shallowEqual)),r}return P()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.condition,r=e.children,i=u()(e,["condition","children"]),a=r;return this.canAssemble&&(this.meet({variantContext:this.context.variantContext,condition:t})||(a=null)),l.a.createElement(n,o()({},i,{type:this.constructor.displayName}),l.a.createElement(q,{value:M({},this.context.variantContext)},a))}}]),t}(S),s()(t,"displayName","$if"),s()(t,"propTypes",{condition:w.a.string.isRequired}),s()(t,"defaultProps",{condition:"true"}),r},z=function(e){var t,r;return r=t=function(e){function t(){return h()(this,t),O()(this,g()(t).apply(this,arguments))}return P()(t,e),t}(S),s()(t,"displayName","$picture"),s()(t,"propTypes",{}),s()(t,"defaultProps",{}),r},I=function(e){var t,r;return r=t=function(e){function t(){return h()(this,t),O()(this,g()(t).apply(this,arguments))}return P()(t,e),v()(t,[{key:"render",value:function(){return this.canAssemble&&this.eval(this.props.script,this.context.variantContext),null}}]),t}(S),s()(t,"displayName","$script"),s()(t,"propTypes",{script:w.a.string.isRequired}),s()(t,"defaultProps",{script:""}),r};function F(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var W=function(e){var t,r;return r=t=function(e){function t(){return h()(this,t),O()(this,g()(t).apply(this,arguments))}return P()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=(e.children,e.transform),r=e.data,n=void 0===r?function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?F(r,!0).forEach((function(t){s()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):F(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},this.context.variantContext):r,i=u()(e,["children","transform","data"]);return l.a.createElement(q,{value:t(n)},l.a.createElement(f.Loader,i))}}]),t}(S),s()(t,"displayName","$sub"),s()(t,"propTypes",{transform:w.a.func,data:w.a.any}),s()(t,"defaultProps",{transform:function(e){return e}}),r},B=r(14),G=r.n(B);function H(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var J=function(){return function(e){function t(){var e,r;h()(this,t);for(var n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];return r=O()(this,(e=g()(t)).call.apply(e,[this].concat(i))),s()(D()(r),"getResolvedProps",R()((function(e){var t=e.variantContext,n=e.props,i=E.a.createContext(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?H(r,!0).forEach((function(t){s()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):H(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},t,{$:function(e){return e}}));return function e(t){return Object.keys(t).reduce((function(n,o){switch(G()(n[o]=t[o])){case"object":n[o]=e(t[o]);break;case"string":if(/^\$\(.*\)$/.test(t[o])){n[o]=r.eval(t[o],i);break}}return n}),{})}(n)}),f.shallowEqual)),r}return P()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.children,r=u()(e,["children"]),n=l.a.Children.only(t);return l.a.cloneElement(n,this.getResolvedProps({variantContext:this.context.variantContext,props:r}))}}]),t}(S)};function K(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Q(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.keys(n).reduce((function(t,r){return t[r]=n[r](e),t}),{});return function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?K(r,!0).forEach((function(t){s()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):K(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},e,{},t)}r.d(t,"withVariant",(function(){return Q})),r.d(t,"VariantRepresentation",(function(){return U})),r.d(t,"Provider",(function(){return q}));var U=function(e){var t=e.variants,r=e.transformer,n=void 0===r?function(e){return e}:r,i=u()(e,["variants","transformer"]);return l.a.createElement(q,{value:t},l.a.createElement(f.Representation,o()({},i,{transformer:function(e){return e&&Q(n(e))}})))};t.default={install:function(){f.Representation.defaultProps.transformer=Q},uninstall:function(){f.Representation.defaultProps.transformer=void 0},Provider:q,VariantRepresentation:U,withVariant:Q}}]);
2//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2UtZWRpdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInZtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtZW1vaXplLW9uZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC12YXJpYW50L3NyYy92YXJpYW50LXByb3ZpZGVyLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtdmFyaWFudC9zcmMvZG9tLyQuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC12YXJpYW50L3NyYy9kb20vJGV4cC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LXZhcmlhbnQvc3JjL2RvbS8kZm9yLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtdmFyaWFudC9zcmMvZG9tLyRpZi5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LXZhcmlhbnQvc3JjL2RvbS8kaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC12YXJpYW50L3NyYy9kb20vJHNjcmlwdC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LXZhcmlhbnQvc3JjL2RvbS8kc3ViLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtdmFyaWFudC9zcmMvZG9tLyR0eXBlLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtdmFyaWFudC9zcmMvaW5kZXguanMiXSwibmFtZXMiOlsiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJyZXF1aXJlIiwiX18kMSIsInZhcmlhbnRDb250ZXh0Iiwidm0iLCJjcmVhdGVDb250ZXh0IiwidGhpcyIsInByb3BzIiwiY2hpbGRyZW4iLCJQdXJlQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiaXNSZXF1aXJlZCIsIk1hcCIsImNvZGUiLCJjb250ZXh0IiwicnVuSW5Db250ZXh0IiwiZSIsIkNvbXBvbmVudCIsInBhcmVudCIsIlRleHQiLCJDb250YWluZXIiLCJtZW1vaXplIiwiZXhwcmVzc2lvbiIsImV2YWwiLCJzaGFsbG93RXF1YWwiLCJ0ZXh0IiwiQXJyYXkiLCJpc0FycmF5IiwiY29udGVudCIsImNhbkFzc2VtYmxlIiwiZ2V0VmFsdWUiLCJSZWFjdCIsImNsb25lRWxlbWVudCIsImNvbG9yIiwidGV4dENvbnRlbnQiLCJqb2luIiwidHlwZSIsImNvbnN0cnVjdG9yIiwiZGlzcGxheU5hbWUiLCIkIiwic3RyaW5nIiwiaW5pdCIsInRlc3QiLCJ1cGRhdGUiLCJnZXRMb29wQ29udGVudCIsImZvckNvbnRleHQiLCJsb29wcyIsInB1c2giLCJjb25kaXRpb24iLCJtZWV0IiwiQ29tcG9uZW50cyIsInNjcmlwdCIsInRyYW5zZm9ybSIsImRhdGEiLCJmdW5jIiwiYW55IiwiYSIsInJlc29sdmVPYmplY3QiLCJvYiIsImtleXMiLCJyZWR1Y2UiLCJyZXNvbHZlZCIsImsiLCJjaGlsZCIsIkNoaWxkcmVuIiwib25seSIsImdldFJlc29sdmVkUHJvcHMiLCJ3aXRoVmFyaWFudCIsIlZhcmlhbnRzIiwidmFyaWFudHMiLCJ0cmFuc2Zvcm1lZCIsIlZhcmlhbnRSZXByZXNlbnRhdGlvbiIsInRyYW5zZm9ybWVyIiwiaW5zdGFsbCIsIlJlcHJlc2VudGF0aW9uIiwiZGVmYXVsdFByb3BzIiwidW5pbnN0YWxsIiwidW5kZWZpbmVkIiwiUHJvdmlkZXIiXSwibWFwcGluZ3MiOiIyQkFDRSxJQUFJQSxFQUFtQixHQUd2QixTQUFTQyxFQUFvQkMsR0FHNUIsR0FBR0YsRUFBaUJFLEdBQ25CLE9BQU9GLEVBQWlCRSxHQUFVQyxRQUduQyxJQUFJQyxFQUFTSixFQUFpQkUs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LEdBQXlCa0IsRywySUFJbkIsSUFBTUcsRUFBc0IsU0FBQyxHQUFELElBQUVGLEVBQUYsRUFBRUEsU0FBRixJQUFZRyxtQkFBWixNQUF3QixTQUFBaEIsR0FBQyxPQUFFQSxHQUEzQixFQUFpQ2pELEVBQWpDLHlDQUNsQyxrQkFBQyxFQUFELENBQVVyQixNQUFPbUYsR0FDaEIsa0JBQUMsaUJBQUQsT0FBb0I5RCxFQUFwQixDQUEyQmlFLFlBQWEsU0FBQWhCLEdBQUMsT0FBR0EsR0FBS1csRUFBWUssRUFBWWhCLFVBTTVELFdBQ2RpQixRQURjLFdBRWJDLGlCQUFlQyxhQUFhSCxZQUFZTCxHQUV6Q1MsVUFKYyxXQUtiRixpQkFBZUMsYUFBYUgsaUJBQVlLLEdBRXpDQyxXQUNBUCx3QkFDQUoiLCJmaWxlIjoidmFyaWFudC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAxNSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ3ZS1lZGl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInZtXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtZW1vaXplLW9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTsiLCJpbXBvcnQgUmVhY3QsIHtQdXJlQ29tcG9uZW50LCBGcmFnbWVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHZtIGZyb20gXCJ2bVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIF9fJDEgZXh0ZW5kcyBQdXJlQ29tcG9uZW50e1xuXHRzdGF0aWMgZGlzcGxheU5hbWU9XCJWYXJpYW50UHJvdmlkZXJcIlxuICAgIHN0YXRpYyBjaGlsZENvbnRleHRUeXBlcz17XG4gICAgICAgIHZhcmlhbnRDb250ZXh0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcbiAgICB9XG5cbiAgICBnZXRDaGlsZENvbnRleHQoKXtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhcmlhbnRDb250ZXh0OnZtLmNyZWF0ZUNvbnRleHQodGhpcy5wcm9wcy52YWx1ZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlcigpe1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgKVxuICAgIH1cbn1cbiIsImltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgRnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB2bSBmcm9tIFwidm1cIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBfXyQxIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRzdGF0aWMgY29udGV4dFR5cGVzPXtcblx0XHR2YXJpYW50Q29udGV4dDpQcm9wVHlwZXMub2JqZWN0LFxuXHRcdHBhcmVudDogUHJvcFR5cGVzLm9iamVjdCxcblx0fVxuXG5cdHNjcmlwdHM9bmV3IE1hcCgpXG5cblx0Z2V0IGNhbkFzc2VtYmxlKCl7XG5cdFx0cmV0dXJuICEhdGhpcy5jb250ZXh0LnZhcmlhbnRDb250ZXh0XG5cdH1cblxuXHRldmFsKGNvZGUsIGNvbnRleHQpe1xuXHRcdHRyeXtcblx0XHRcdHJldHVybiB2bS5ydW5JbkNvbnRleHQoY29kZSwgY29udGV4dClcblx0XHR9Y2F0Y2goZSl7XG5cdFx0XHRyZXR1cm4gXCJcIlxuXHRcdH1cblx0fVxufVxuIiwiaW1wb3J0IFJlYWN0LCB7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBtZW1vaXplIGZyb20gXCJtZW1vaXplLW9uZVwiXG5pbXBvcnQge3NoYWxsb3dFcXVhbH0gZnJvbSBcIndlLWVkaXRcIlxuaW1wb3J0IHZtIGZyb20gXCJ2bVwiXG5cbmltcG9ydCAkIGZyb20gXCIuLyRcIlxuXG5leHBvcnQgZGVmYXVsdCAoe1RleHQsQ29udGFpbmVyfSk9PmNsYXNzIF9fJDEgZXh0ZW5kcyAke1xuICAgIHN0YXRpYyBkaXNwbGF5TmFtZT1cIiRleHBcIlxuICAgIHN0YXRpYyBwcm9wVHlwZXM9e1xuICAgICAgICBleHByZXNzaW9uOlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH1cblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHM9e1xuICAgICAgICBleHByZXNzaW9uOlwiXCJcbiAgICB9XG5cblx0cmVuZGVyKCl7XG4gICAgICAgIGNvbnN0IHtleHByZXNzaW9uLG5hbWUsIGNoaWxkcmVuLCAuLi5wcm9wc309dGhpcy5wcm9wc1xuICAgICAgICBsZXQgdGV4dD0oQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlblswXSA6IGNoaWxkcmVuKXx8PFRleHQgey4uLnByb3BzfS8+XG4gICAgICAgIGxldCBjb250ZW50PWNoaWxkcmVuXG4gICAgICAgIGlmKHRoaXMuY2FuQXNzZW1ibGUpe1xuICAgICAgICAgICAgY29uc3QgdmFsdWU9dGhpcy5nZXRWYWx1ZSh7dmFyaWFudENvbnRleHQ6dGhpcy5jb250ZXh0LnZhcmlhbnRDb250ZXh0LCBleHByZXNzaW9uLG5hbWV9KVxuICAgIFx0XHRjb250ZW50PVJlYWN0LmNsb25lRWxlbWVudCh0ZXh0LHtjaGlsZHJlbjp2YWx1ZStcIlwiLCBjb2xvcjpcInJlZFwifSlcbiAgICAgICAgfWVsc2V7XG5cdFx0XHRsZXQge2NoaWxkcmVuOnRleHRDb250ZW50PVwiXCJ9PXRleHQucHJvcHNcblx0XHRcdGlmKEFycmF5LmlzQXJyYXkodGV4dENvbnRlbnQpKVxuXHRcdFx0XHR0ZXh0Q29udGVudD10ZXh0Q29udGVudC5qb2luKFwiXCIpXG4gICAgICAgICAgICBjb250ZW50PVJlYWN0LmNsb25lRWxlbWVudCh0ZXh0LHtjaGlsZHJlbjp0ZXh0Q29udGVudHx8YHske2V4cHJlc3Npb259fWB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICg8Q29udGFpbmVyIHsuLi5wcm9wc30gdHlwZT17dGhpcy5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZX0+e2NvbnRlbnR9PC9Db250YWluZXI+KVxuXHR9XG5cblxuXHRnZXRWYWx1ZT1tZW1vaXplKCh7dmFyaWFudENvbnRleHQsZXhwcmVzc2lvbixuYW1lfSk9PntcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbChuYW1lID8gYHZhciAke25hbWV9PSR7ZXhwcmVzc2lvbn07ICR7bmFtZX1gIDogZXhwcmVzc2lvbiwgdmFyaWFudENvbnRleHQpXG5cdH0sc2hhbGxvd0VxdWFsKVxufVxuIiwiaW1wb3J0IFJlYWN0LCB7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBtZW1vaXplIGZyb20gXCJtZW1vaXplLW9uZVwiXG5pbXBvcnQge3NoYWxsb3dFcXVhbH0gZnJvbSBcIndlLWVkaXRcIlxuaW1wb3J0IHZtIGZyb20gXCJ2bVwiXG5cbmltcG9ydCBWYXJpYW50UHJvdmlkZXIgZnJvbSBcIi4uL3ZhcmlhbnQtcHJvdmlkZXJcIlxuXG5pbXBvcnQgJCBmcm9tIFwiLi8kXCJcblxuXG5leHBvcnQgZGVmYXVsdCAoe0NvbnRhaW5lcn0pPT5jbGFzcyBfXyQxIGV4dGVuZHMgJHtcbiAgICBzdGF0aWMgZGlzcGxheU5hbWU9XCIkZm9yXCJcbiAgICBzdGF0aWMgcHJvcFR5cGVzPXtcbiAgICAgICAgaW5pdDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICB0ZXN0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgIHVwZGF0ZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIH1cblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHM9e1xuICAgICAgICBpbml0OlwiXCIsXG4gICAgICAgIHRlc3Q6XCJcIixcbiAgICAgICAgdXBkYXRlOlwiXCIsXG4gICAgfVxuXG4gICAgcmVuZGVyKCl7XG4gICAgICAgIGNvbnN0IHtpbml0LCB0ZXN0LCB1cGRhdGUsIGNoaWxkcmVuLC4uLnByb3BzfT10aGlzLnByb3BzXG4gICAgICAgIGxldCBjb250ZW50PWNoaWxkcmVuXG4gICAgICAgIGlmKHRoaXMuY2FuQXNzZW1ibGUpe1xuICAgICAgICAgICAgY29udGVudD10aGlzLmdldExvb3BDb250ZW50KClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiA8Q29udGFpbmVyIHsuLi5wcm9wc30gdHlwZT17dGhpcy5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZX0+e2NvbnRlbnR9PC9Db250YWluZXI+XG4gICAgfVxuXG4gICAgZ2V0TG9vcENvbnRlbnQoKXtcbiAgICAgICAgY29uc3Qge2luaXQsIHRlc3QsIHVwZGF0ZSwgY2hpbGRyZW4sLi4ucHJvcHN9PXRoaXMucHJvcHNcblxuICAgICAgICBjb25zdCBmb3JDb250ZXh0PXZtLmNyZWF0ZUNvbnRleHQoey4uLnRoaXMuY29udGV4dC52YXJpYW50Q29udGV4dH0pXG4gICAgICAgIGNvbnN0IGxvb3BzPVtdXG4gICAgICAgIHRoaXMuZXZhbChpbml0LGZvckNvbnRleHQpXG4gICAgICAgIGZvcihsZXQgaT0wOyB0aGlzLmV2YWwodGVzdCxmb3JDb250ZXh0KTsgdGhpcy5ldmFsKHVwZGF0ZSxmb3JDb250ZXh0KSwgaSsrKXtcbiAgICAgICAgICAgIGxvb3BzLnB1c2goXG4gICAgICAgICAgICAgICAgPFZhcmlhbnRQcm92aWRlciB2YWx1ZT17ey4uLmZvckNvbnRleHR9fSBrZXk9e2l9PlxuICAgICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgPC9WYXJpYW50UHJvdmlkZXI+XG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvb3BzXG4gICAgfVxufVxuIiwiaW1wb3J0IFJlYWN0LCB7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBtZW1vaXplIGZyb20gXCJtZW1vaXplLW9uZVwiXG5pbXBvcnQge3NoYWxsb3dFcXVhbH0gZnJvbSBcIndlLWVkaXRcIlxuaW1wb3J0IHZtIGZyb20gXCJ2bVwiXG5cbmltcG9ydCBWYXJpYW50UHJvdmlkZXIgZnJvbSBcIi4uL3ZhcmlhbnQtcHJvdmlkZXJcIlxuXG5pbXBvcnQgJCBmcm9tIFwiLi8kXCJcblxuXG5leHBvcnQgZGVmYXVsdCAoe0NvbnRhaW5lcn0pPT5jbGFzcyBfXyQxIGV4dGVuZHMgJHtcbiAgICBzdGF0aWMgZGlzcGxheU5hbWU9XCIkaWZcIlxuICAgIHN0YXRpYyBwcm9wVHlwZXM9e1xuXHRcdGNvbmRpdGlvbjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG4gICAgfVxuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcz17XG5cdFx0Y29uZGl0aW9uOiBcInRydWVcIlxuICAgIH1cblxuICAgIHJlbmRlcigpe1xuICAgICAgICBjb25zdCB7Y29uZGl0aW9uLCBjaGlsZHJlbiwgLi4ucHJvcHN9PXRoaXMucHJvcHNcbiAgICAgICAgbGV0IGNvbnRlbnQ9Y2hpbGRyZW5cbiAgICAgICAgaWYodGhpcy5jYW5Bc3NlbWJsZSl7XG4gICAgICAgICAgICBpZighdGhpcy5tZWV0KHt2YXJpYW50Q29udGV4dDp0aGlzLmNvbnRleHQudmFyaWFudENvbnRleHQsY29uZGl0aW9ufSkpXG4gICAgICAgICAgICAgICAgY29udGVudD1udWxsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENvbnRhaW5lciB7Li4ucHJvcHN9IHR5cGU9e3RoaXMuY29uc3RydWN0b3IuZGlzcGxheU5hbWV9PlxuICAgICAgICAgICAgICAgIDxWYXJpYW50UHJvdmlkZXIgdmFsdWU9e3suLi50aGlzLmNvbnRleHQudmFyaWFudENvbnRleHR9fT5cbiAgICAgICAgICAgICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgICAgICAgICAgPC9WYXJpYW50UHJvdmlkZXI+XG4gICAgICAgICAgICA8L0NvbnRhaW5lcj5cbiAgICAgICAgKVxuICAgIH1cblxuICAgIG1lZXQ9bWVtb2l6ZSgoe3ZhcmlhbnRDb250ZXh0LCBjb25kaXRpb259KT0+ISF0aGlzLmV2YWwoY29uZGl0aW9uLHZhcmlhbnRDb250ZXh0KSwgc2hhbGxvd0VxdWFsKVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcblxuaW1wb3J0ICQgZnJvbSBcIi4vJFwiXG5cblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50cz0+Y2xhc3MgX18kMSBleHRlbmRzICR7XG4gICAgc3RhdGljIGRpc3BsYXlOYW1lPVwiJHBpY3R1cmVcIlxuICAgIHN0YXRpYyBwcm9wVHlwZXM9e1xuXG4gICAgfVxuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcz17XG5cbiAgICB9XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuXG5pbXBvcnQgJCBmcm9tIFwiLi8kXCJcblxuXG5leHBvcnQgZGVmYXVsdCBDb21wb25lbnRzPT5jbGFzcyBfXyQxIGV4dGVuZHMgJHtcbiAgICBzdGF0aWMgZGlzcGxheU5hbWU9XCIkc2NyaXB0XCJcbiAgICBzdGF0aWMgcHJvcFR5cGVzPXtcbiAgICAgICAgc2NyaXB0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbiAgICB9XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzPXtcbiAgICAgICAgc2NyaXB0OlwiXCJcbiAgICB9XG5cblxuICAgIHJlbmRlcigpe1xuICAgICAgICBpZih0aGlzLmNhbkFzc2VtYmxlKXtcbiAgICAgICAgICAgIHRoaXMuZXZhbCh0aGlzLnByb3BzLnNjcmlwdCwgdGhpcy5jb250ZXh0LnZhcmlhbnRDb250ZXh0KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHZtIGZyb20gXCJ2bVwiXG5pbXBvcnQge0xvYWRlcn0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQgVmFyaWFudFByb3ZpZGVyIGZyb20gXCIuLi92YXJpYW50LXByb3ZpZGVyXCJcblxuaW1wb3J0ICQgZnJvbSBcIi4vJFwiXG5cblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50cz0+Y2xhc3MgX18kMSBleHRlbmRzICR7XG4gICAgc3RhdGljIGRpc3BsYXlOYW1lPVwiJHN1YlwiXG4gICAgc3RhdGljIHByb3BUeXBlcz17XG4gICAgICAgIHRyYW5zZm9ybTpQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgZGF0YTogUHJvcFR5cGVzLmFueVxuICAgIH1cblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHM9e1xuICAgICAgICB0cmFuc2Zvcm06YT0+YVxuICAgIH1cblxuICAgIHJlbmRlcigpe1xuICAgICAgICBjb25zdCB7Y2hpbGRyZW4sdHJhbnNmb3JtLCBkYXRhPXsuLi50aGlzLmNvbnRleHQudmFyaWFudENvbnRleHR9LCAuLi5wcm9wc309dGhpcy5wcm9wc1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFZhcmlhbnRQcm92aWRlciB2YWx1ZT17dHJhbnNmb3JtKGRhdGEpfT5cbiAgICAgICAgICAgICAgICA8TG9hZGVyIHsuLi5wcm9wc30vPlxuICAgICAgICAgICAgPC9WYXJpYW50UHJvdmlkZXI+XG4gICAgICAgIClcbiAgICB9XG59XG4iLCJpbXBvcnQgUmVhY3QsIHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IG1lbW9pemUgZnJvbSBcIm1lbW9pemUtb25lXCJcbmltcG9ydCB7c2hhbGxvd0VxdWFsfSBmcm9tIFwid2UtZWRpdFwiXG5pbXBvcnQgdm0gZnJvbSBcInZtXCJcblxuaW1wb3J0ICQgZnJvbSBcIi4vJFwiXG5cbmV4cG9ydCBkZWZhdWx0ICgpPT5jbGFzcyBfXyQxIGV4dGVuZHMgJHtcbiAgICByZW5kZXIoKXtcbiAgICAgICAgY29uc3Qge2NoaWxkcmVuLC4uLnByb3BzfT10aGlzLnByb3BzXG4gICAgICAgIGNvbnN0IGNoaWxkPVJlYWN0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pXG4gICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHRoaXMuZ2V0UmVzb2x2ZWRQcm9wcyh7dmFyaWFudENvbnRleHQ6dGhpcy5jb250ZXh0LnZhcmlhbnRDb250ZXh0LCBwcm9wc30pKVxuICAgIH1cblxuICAgIGdldFJlc29sdmVkUHJvcHM9bWVtb2l6ZSgoe3ZhcmlhbnRDb250ZXh0LCBwcm9wc30pPT57XG4gICAgICAgIGNvbnN0IGNvbnRleHQ9dm0uY3JlYXRlQ29udGV4dCh7Li4udmFyaWFudENvbnRleHQsICQ6YT0+YX0pXG5cbiAgICAgICAgY29uc3QgcmVzb2x2ZU9iamVjdD1vYj0+T2JqZWN0LmtleXMob2IpLnJlZHVjZSgocmVzb2x2ZWQsIGspPT57XG4gICAgICAgICAgICBzd2l0Y2godHlwZW9mKHJlc29sdmVkW2tdPW9iW2tdKSl7XG4gICAgICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFtrXT1yZXNvbHZlT2JqZWN0KG9iW2tdKVxuICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjp7XG4gICAgICAgICAgICAgICAgICAgIGlmKC9eXFwkXFwoLipcXCkkLy50ZXN0KG9iW2tdKSl7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFtrXT10aGlzLmV2YWwob2Jba10sY29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRcbiAgICAgICAgfSx7fSlcbiAgICAgICAgcmV0dXJuIHJlc29sdmVPYmplY3QocHJvcHMpXG4gICAgfSxzaGFsbG93RXF1YWwpXG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7UmVwcmVzZW50YXRpb259IGZyb20gXCJ3ZS1lZGl0XCJcblxuaW1wb3J0IFByb3ZpZGVyIGZyb20gXCIuL3ZhcmlhbnQtcHJvdmlkZXJcIlxuXG5pbXBvcnQgKiBhcyB2YXJpYW50cyBmcm9tIFwiLi9kb21cIlxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFZhcmlhbnQoQ29tcG9uZW50cz17fSl7XG5cdGxldCBWYXJpYW50cz1PYmplY3Qua2V5cyh2YXJpYW50cykucmVkdWNlKCh0cmFuc2Zvcm1lZCxrKT0+e1xuXHRcdFx0dHJhbnNmb3JtZWRba109dmFyaWFudHNba10oQ29tcG9uZW50cylcblx0XHRcdHJldHVybiB0cmFuc2Zvcm1lZFxuXHRcdH0se30pXG5cdHJldHVybiB7Li4uQ29tcG9uZW50cywuLi5WYXJpYW50c31cbn1cblxuXG5leHBvcnQgY29uc3QgVmFyaWFudFJlcHJlc2VudGF0aW9uPSh7dmFyaWFudHMsIHRyYW5zZm9ybWVyPWE9PmEsIC4uLnByb3BzfSk9Pihcblx0PFByb3ZpZGVyIHZhbHVlPXt2YXJpYW50c30+XG5cdFx0PFJlcHJlc2VudGF0aW9uIHsuLi5wcm9wc30gdHJhbnNmb3JtZXI9e2E9PiBhICYmIHdpdGhWYXJpYW50KHRyYW5zZm9ybWVyKGEpKX0vPlxuXHQ8L1Byb3ZpZGVyPlxuKVxuXG5leHBvcnQge1Byb3ZpZGVyfVxuXG5leHBvcnQgZGVmYXVsdCB7XG5cdGluc3RhbGwoKXtcblx0XHRSZXByZXNlbnRhdGlvbi5kZWZhdWx0UHJvcHMudHJhbnNmb3JtZXI9d2l0aFZhcmlhbnRcblx0fSxcblx0dW5pbnN0YWxsKCl7XG5cdFx0UmVwcmVzZW50YXRpb24uZGVmYXVsdFByb3BzLnRyYW5zZm9ybWVyPXVuZGVmaW5lZFxuXHR9LFxuXHRQcm92aWRlcixcblx0VmFyaWFudFJlcHJlc2VudGF0aW9uLFxuXHR3aXRoVmFyaWFudFxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
\No newline at end of file