@volcengine/veplayer 1.8.1-rc.0 → 1.8.2-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +1461 -769
- package/index.min.css +1 -1
- package/index.min.js +2 -2
- package/package.json +1 -5
- package/plugin/XGVideo.js +2 -0
- package/plugin/danmuMask.js +2 -0
- package/plugin/danmujs.js +2 -0
- package/plugin/dash.js +2 -0
- package/plugin/flv.js +2 -0
- package/plugin/hls.js +2 -0
- package/plugin/hlsEncrypt.js +2 -0
- package/plugin/mp4Encrypt.js +2 -0
- package/plugin/streamprobe.js +2 -0
- package/plugin/vestrategy.js +1 -0
- package/plugin/vestrategy_h265.js +1 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// Built @Fri, 08 Dec 2023 03:29:25 GMT
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("core-js/modules/es.array.filter.js"),require("core-js/modules/es.object.to-string.js"),require("core-js/modules/es.array.concat.js"),require("core-js/modules/es.regexp.to-string.js"),require("core-js/modules/es.array.slice.js"),require("core-js/modules/es.object.assign.js"),require("core-js/modules/es.array.map.js"),require("core-js/modules/web.dom-collections.for-each.js"),require("core-js/modules/es.array.iterator.js"),require("core-js/modules/es.promise.js"),require("core-js/modules/es.string.iterator.js"),require("core-js/modules/web.dom-collections.iterator.js"),require("core-js/modules/es.regexp.exec.js"),require("core-js/modules/es.promise.finally.js"),require("core-js/modules/es.number.constructor.js"),require("core-js/modules/es.array.find.js"),require("core-js/modules/es.object.keys.js"),require("core-js/modules/es.function.name.js"),require("core-js/modules/es.array.find-index.js"),require("core-js/modules/es.array.sort.js"),require("core-js/modules/es.array.splice.js"),require("core-js/modules/es.map.js"),require("core-js/modules/esnext.map.delete-all.js"),require("core-js/modules/esnext.map.every.js"),require("core-js/modules/esnext.map.filter.js"),require("core-js/modules/esnext.map.find.js"),require("core-js/modules/esnext.map.find-key.js"),require("core-js/modules/esnext.map.includes.js"),require("core-js/modules/esnext.map.key-of.js"),require("core-js/modules/esnext.map.map-keys.js"),require("core-js/modules/esnext.map.map-values.js"),require("core-js/modules/esnext.map.merge.js"),require("core-js/modules/esnext.map.reduce.js"),require("core-js/modules/esnext.map.some.js"),require("core-js/modules/esnext.map.update.js"),require("xgplayer"),require("core-js/modules/es.typed-array.uint8-array.js"),require("core-js/modules/es.typed-array.copy-within.js"),require("core-js/modules/es.typed-array.every.js"),require("core-js/modules/es.typed-array.fill.js"),require("core-js/modules/es.typed-array.filter.js"),require("core-js/modules/es.typed-array.find.js"),require("core-js/modules/es.typed-array.find-index.js"),require("core-js/modules/es.typed-array.for-each.js"),require("core-js/modules/es.typed-array.includes.js"),require("core-js/modules/es.typed-array.index-of.js"),require("core-js/modules/es.typed-array.iterator.js"),require("core-js/modules/es.typed-array.join.js"),require("core-js/modules/es.typed-array.last-index-of.js"),require("core-js/modules/es.typed-array.map.js"),require("core-js/modules/es.typed-array.reduce.js"),require("core-js/modules/es.typed-array.reduce-right.js"),require("core-js/modules/es.typed-array.reverse.js"),require("core-js/modules/es.typed-array.set.js"),require("core-js/modules/es.typed-array.slice.js"),require("core-js/modules/es.typed-array.some.js"),require("core-js/modules/es.typed-array.sort.js"),require("core-js/modules/es.typed-array.subarray.js"),require("core-js/modules/es.typed-array.to-locale-string.js"),require("core-js/modules/es.typed-array.to-string.js"),require("core-js/modules/es.array.join.js"),require("core-js/modules/es.array-buffer.constructor.js"),require("core-js/modules/es.string.replace.js"),require("core-js/modules/es.string.match.js"),require("core-js/modules/es.regexp.constructor.js"),require("core-js/modules/es.string.split.js"),require("core-js/modules/es.string.trim.js"),require("core-js/modules/web.url.js"),require("core-js/modules/web.url-search-params.js"),require("core-js/modules/es.typed-array.int8-array.js"),require("core-js/modules/es.typed-array.uint8-clamped-array.js"),require("core-js/modules/es.typed-array.int16-array.js"),require("core-js/modules/es.typed-array.uint16-array.js"),require("core-js/modules/es.typed-array.int32-array.js"),require("core-js/modules/es.typed-array.uint32-array.js"),require("core-js/modules/es.typed-array.float32-array.js"),require("core-js/modules/es.typed-array.float64-array.js"),require("core-js/modules/es.symbol.js"),require("core-js/modules/es.symbol.description.js"),require("core-js/modules/es.typed-array.of.js"),require("core-js/modules/es.number.to-fixed.js"),require("core-js/modules/es.object.values.js")):"function"==typeof define&&define.amd?define(["core-js/modules/es.array.filter.js","core-js/modules/es.object.to-string.js","core-js/modules/es.array.concat.js","core-js/modules/es.regexp.to-string.js","core-js/modules/es.array.slice.js","core-js/modules/es.object.assign.js","core-js/modules/es.array.map.js","core-js/modules/web.dom-collections.for-each.js","core-js/modules/es.array.iterator.js","core-js/modules/es.promise.js","core-js/modules/es.string.iterator.js","core-js/modules/web.dom-collections.iterator.js","core-js/modules/es.regexp.exec.js","core-js/modules/es.promise.finally.js","core-js/modules/es.number.constructor.js","core-js/modules/es.array.find.js","core-js/modules/es.object.keys.js","core-js/modules/es.function.name.js","core-js/modules/es.array.find-index.js","core-js/modules/es.array.sort.js","core-js/modules/es.array.splice.js","core-js/modules/es.map.js","core-js/modules/esnext.map.delete-all.js","core-js/modules/esnext.map.every.js","core-js/modules/esnext.map.filter.js","core-js/modules/esnext.map.find.js","core-js/modules/esnext.map.find-key.js","core-js/modules/esnext.map.includes.js","core-js/modules/esnext.map.key-of.js","core-js/modules/esnext.map.map-keys.js","core-js/modules/esnext.map.map-values.js","core-js/modules/esnext.map.merge.js","core-js/modules/esnext.map.reduce.js","core-js/modules/esnext.map.some.js","core-js/modules/esnext.map.update.js","xgplayer","core-js/modules/es.typed-array.uint8-array.js","core-js/modules/es.typed-array.copy-within.js","core-js/modules/es.typed-array.every.js","core-js/modules/es.typed-array.fill.js","core-js/modules/es.typed-array.filter.js","core-js/modules/es.typed-array.find.js","core-js/modules/es.typed-array.find-index.js","core-js/modules/es.typed-array.for-each.js","core-js/modules/es.typed-array.includes.js","core-js/modules/es.typed-array.index-of.js","core-js/modules/es.typed-array.iterator.js","core-js/modules/es.typed-array.join.js","core-js/modules/es.typed-array.last-index-of.js","core-js/modules/es.typed-array.map.js","core-js/modules/es.typed-array.reduce.js","core-js/modules/es.typed-array.reduce-right.js","core-js/modules/es.typed-array.reverse.js","core-js/modules/es.typed-array.set.js","core-js/modules/es.typed-array.slice.js","core-js/modules/es.typed-array.some.js","core-js/modules/es.typed-array.sort.js","core-js/modules/es.typed-array.subarray.js","core-js/modules/es.typed-array.to-locale-string.js","core-js/modules/es.typed-array.to-string.js","core-js/modules/es.array.join.js","core-js/modules/es.array-buffer.constructor.js","core-js/modules/es.string.replace.js","core-js/modules/es.string.match.js","core-js/modules/es.regexp.constructor.js","core-js/modules/es.string.split.js","core-js/modules/es.string.trim.js","core-js/modules/web.url.js","core-js/modules/web.url-search-params.js","core-js/modules/es.typed-array.int8-array.js","core-js/modules/es.typed-array.uint8-clamped-array.js","core-js/modules/es.typed-array.int16-array.js","core-js/modules/es.typed-array.uint16-array.js","core-js/modules/es.typed-array.int32-array.js","core-js/modules/es.typed-array.uint32-array.js","core-js/modules/es.typed-array.float32-array.js","core-js/modules/es.typed-array.float64-array.js","core-js/modules/es.symbol.js","core-js/modules/es.symbol.description.js","core-js/modules/es.typed-array.of.js","core-js/modules/es.number.to-fixed.js","core-js/modules/es.object.values.js"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Mp4EncryptPlayer=t(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,e.Player)}(this,(function(e,t,n,U,i,l,F,a,r,d,Q,o,s,c,R,B,u,h,V,Z,m,p,S,J,W,y,b,E,k,f,v,N,T,C,g,X){"use strict";function L(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var U=Object.getOwnPropertySymbols(e);t&&(U=U.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,U)}return n}function G(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?L(Object(n),!0).forEach((function(t){H(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):L(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function x(){x=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,U=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},l=i.iterator||"@@iterator",F=i.asyncIterator||"@@asyncIterator",a=i.toStringTag||"@@toStringTag";function r(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{r({},"")}catch(k){r=function(e,t,n){return e[t]=n}}function d(e,t,n,i){var l=t&&t.prototype instanceof s?t:s,F=Object.create(l.prototype),a=new y(i||[]);return U(F,"_invoke",{value:p(e,n,a)}),F}function Q(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(k){return{type:"throw",arg:k}}}e.wrap=d;var o={};function s(){}function c(){}function R(){}var B={};r(B,l,(function(){return this}));var u=Object.getPrototypeOf,h=u&&u(u(b([])));h&&h!==t&&n.call(h,l)&&(B=h);var V=R.prototype=s.prototype=Object.create(B);function Z(e){["next","throw","return"].forEach((function(t){r(e,t,(function(e){return this._invoke(t,e)}))}))}function m(e,t){function i(U,l,F,a){var r=Q(e[U],e,l);if("throw"!==r.type){var d=r.arg,o=d.value;return o&&"object"==typeof o&&n.call(o,"__await")?t.resolve(o.__await).then((function(e){i("next",e,F,a)}),(function(e){i("throw",e,F,a)})):t.resolve(o).then((function(e){d.value=e,F(d)}),(function(e){return i("throw",e,F,a)}))}a(r.arg)}var l;U(this,"_invoke",{value:function(e,n){function U(){return new t((function(t,U){i(e,n,t,U)}))}return l=l?l.then(U,U):U()}})}function p(e,t,n){var U="suspendedStart";return function(i,l){if("executing"===U)throw new Error("Generator is already running");if("completed"===U){if("throw"===i)throw l;return{value:void 0,done:!0}}for(n.method=i,n.arg=l;;){var F=n.delegate;if(F){var a=S(F,n);if(a){if(a===o)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===U)throw U="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);U="executing";var r=Q(e,t,n);if("normal"===r.type){if(U=n.done?"completed":"suspendedYield",r.arg===o)continue;return{value:r.arg,done:n.done}}"throw"===r.type&&(U="completed",n.method="throw",n.arg=r.arg)}}}function S(e,t){var n=t.method,U=e.iterator[n];if(void 0===U)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),o;var i=Q(U,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,o;var l=i.arg;return l?l.done?(t[e.resultName]=l.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,o):l:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,o)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function y(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function b(e){if(e){var t=e[l];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var U=-1,i=function t(){for(;++U<e.length;)if(n.call(e,U))return t.value=e[U],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:E}}function E(){return{value:void 0,done:!0}}return c.prototype=R,U(V,"constructor",{value:R,configurable:!0}),U(R,"constructor",{value:c,configurable:!0}),c.displayName=r(R,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,R):(e.__proto__=R,r(e,a,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},Z(m.prototype),r(m.prototype,F,(function(){return this})),e.AsyncIterator=m,e.async=function(t,n,U,i,l){void 0===l&&(l=Promise);var F=new m(d(t,n,U,i),l);return e.isGeneratorFunction(n)?F:F.next().then((function(e){return e.done?e.value:F.next()}))},Z(V),r(V,a,"Generator"),r(V,l,(function(){return this})),r(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var U in t)n.push(U);return n.reverse(),function e(){for(;n.length;){var U=n.pop();if(U in t)return e.value=U,e.done=!1,e}return e.done=!0,e}},e.values=b,y.prototype={constructor:y,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function U(n,U){return F.type="throw",F.arg=e,t.next=n,U&&(t.method="next",t.arg=void 0),!!U}for(var i=this.tryEntries.length-1;i>=0;--i){var l=this.tryEntries[i],F=l.completion;if("root"===l.tryLoc)return U("end");if(l.tryLoc<=this.prev){var a=n.call(l,"catchLoc"),r=n.call(l,"finallyLoc");if(a&&r){if(this.prev<l.catchLoc)return U(l.catchLoc,!0);if(this.prev<l.finallyLoc)return U(l.finallyLoc)}else if(a){if(this.prev<l.catchLoc)return U(l.catchLoc,!0)}else{if(!r)throw new Error("try statement without catch or finally");if(this.prev<l.finallyLoc)return U(l.finallyLoc)}}}},abrupt:function(e,t){for(var U=this.tryEntries.length-1;U>=0;--U){var i=this.tryEntries[U];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var l=i;break}}l&&("break"===e||"continue"===e)&&l.tryLoc<=t&&t<=l.finallyLoc&&(l=null);var F=l?l.completion:{};return F.type=e,F.arg=t,l?(this.method="next",this.next=l.finallyLoc,o):this.complete(F)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),o},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),o}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var U=n.completion;if("throw"===U.type){var i=U.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:b(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),o}},e}function I(e){return(I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function D(e,t,n,U,i,l,F){try{var a=e[l](F),r=a.value}catch(d){return void n(d)}a.done?t(r):Promise.resolve(r).then(U,i)}function Y(e){return function(){var t=this,n=arguments;return new Promise((function(U,i){var l=e.apply(t,n);function F(e){D(l,U,i,F,a,"next",e)}function a(e){D(l,U,i,F,a,"throw",e)}F(void 0)}))}}function M(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function K(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,ie(U.key),U)}}function w(e,t,n){return t&&K(e.prototype,t),n&&K(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function H(e,t,n){return(t=ie(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function P(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&z(e,t)}function j(e){return(j=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function z(e,t){return(z=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function O(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _(e,t,n){return(_=O()?Reflect.construct.bind():function(e,t,n){var U=[null];U.push.apply(U,t);var i=new(Function.bind.apply(e,U));return n&&z(i,n.prototype),i}).apply(null,arguments)}function A(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function q(e){var t=O();return function(){var n,U=j(e);if(t){var i=j(this).constructor;n=Reflect.construct(U,arguments,i)}else n=U.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return A(e)}(this,n)}}function $(){return $="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var U=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=j(e)););return e}(e,t);if(U){var i=Object.getOwnPropertyDescriptor(U,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},$.apply(this,arguments)}function ee(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var U,i,l,F,a=[],r=!0,d=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;r=!1}else for(;!(r=(U=l.call(n)).done)&&(a.push(U.value),a.length!==t);r=!0);}catch(Q){d=!0,i=Q}finally{try{if(!r&&null!=n.return&&(F=n.return(),Object(F)!==F))return}finally{if(d)throw i}}return a}}(e,t)||ne(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function te(e){return function(e){if(Array.isArray(e))return Ue(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ne(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ne(e,t){if(e){if("string"==typeof e)return Ue(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ue(e,t):void 0}}function Ue(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,U=new Array(t);n<t;n++)U[n]=e[n];return U}function ie(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var le=function(){function e(t,n,U,i){var l=this;M(this,e),this.config=e.getDefaultConfig(),Object.keys(i).map((function(e){void 0!==i[e]&&null!==i[e]&&(l.config[e]=i[e])})),this.duration=U,this.player=t,this.updateBitrate(n)}return w(e,[{key:"updateBitrate",value:function(e){this.bitrate=e,this.bitrate||(this.bitrate=this.config.minBandwidth)}},{key:"getAdaptLoadDuration",value:function(){var e=this.player,t=this.config;if(!t.rangeControl)return-1;var n=(null==e?void 0:e.bufferedPoint)||null,U=n&&n.end?n.end-e.currentTime:0;return Math.max(t.rangeMaxDuration-U,t.rangeMinDuration)}},{key:"getAdaptCacheBuffer",value:function(){var e=this.player,t=this.config,n=this.bitrate;if(!t.targetCacheControl)return-1;var U=t.estPlayTime,i=U;t.estPTcontrol&&(i=Math.min(U,this.duration-((null==e?void 0:e.currentTime)||0)));var l=1024*(null==e?void 0:e.avgSpeed)||0,F=Math.max(t.safeFactor*l,t.minBandwidth);e&&e.avgSpeed&&(F=t.safeFactor*l);var a=n>0?Math.floor((1-F/n)*i):0;return a=t.minDangerThreshold+Math.max(a,0),Math.min(Math.max(t.cacheSafeFactor*a,t.minTargetCacheDur),t.maxTargetCacheDur)}}],[{key:"getDefaultConfig",value:function(){return{rangeMaxDuration:15,rangeMinDuration:5,rangeMinSize:409600,safeFactor:.1,cacheSafeFactor:3,minDangerThreshold:5,estPlayTime:12,minBandwidth:1e6,estPTcontrol:!1,minTargetCacheDur:30,maxTargetCacheDur:60,targetCacheControl:!1,rangeControl:!1}}}]),e}(),Fe=function(){function e(t,n,U,i){var l=this;M(this,e),this.config=e.getDefaultConfig(),Object.keys(i).map((function(e){void 0!==i[e]&&null!==i[e]&&(l.config[e]=i[e])})),this.duration=U,this.player=t,this.updateBitrate(n)}return w(e,[{key:"updateBitrate",value:function(e){this.bitrate=e,this.bitrate||(this.bitrate=this.config.minBandwidth)}},{key:"getBuffer",value:function(){var e=this.player,t=(null==e?void 0:e.bufferedPoint)||null;return t&&t.end?t.end-e.currentTime:0}},{key:"getAdaptLoadDuration",value:function(){var e=this.config,t=this.duration;if(!e.rangeControl)return-1;var n=this.getBuffer(),U=t-n,i=Math.min(U,e.rangeMaxDuration-n);return Math.max(i,e.rangeMinDuration)}},{key:"getAdaptRangeSize",value:function(e){var t=this.config,n=this.bitrate,U=this.duration;if(!t.rangeControl)return-1;e||(e=this.getAdaptLoadDuration());var i=U-this.getBuffer(),l=Math.max(t.rangeMinSize,e*n/8),F=i*n/8;return l+t.rangeFloatSize>=F&&(l=F),Math.ceil(l)}},{key:"getAdaptCacheBuffer",value:function(){var e=this.player,t=this.config,n=this.bitrate;if(!t.targetCacheControl)return-1;var U=t.estPlayTime,i=U;t.estPTcontrol&&(i=Math.min(U,this.duration-((null==e?void 0:e.currentTime)||0)));var l=1024*(null==e?void 0:e.avgSpeed)||0,F=Math.max(t.safeFactor*l,t.minBandwidth);e&&e.avgSpeed&&(F=t.safeFactor*l);var a=n>0?Math.floor((1-F/n)*i):0;a=t.minDangerThreshold+Math.max(a,0);var r=Math.max(t.cacheSafeFactor*a,t.minTargetCacheDur);return Math.min(r,t.maxTargetCacheDur)}}],[{key:"getDefaultConfig",value:function(){return{rangeControl:!1,rangeMaxDuration:20,rangeMinDuration:5,rangeMinSize:409600,rangeFloatSize:10240,safeFactor:.1,cacheSafeFactor:3,minDangerThreshold:5,estPlayTime:12,minBandwidth:1e6,estPTcontrol:!1,minTargetCacheDur:30,maxTargetCacheDur:60,targetCacheControl:!1}}}]),e}(),ae=function(e){return e.CHANGE_FLYING_PLUGIN_CONFIG="CHANGE_FLYING_PLUGIN_CONFIG",e}(ae||{});function re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var U=Object.getOwnPropertySymbols(e);t&&(U=U.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,U)}return n}function de(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?re(Object(n),!0).forEach((function(t){he(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Qe(){Qe=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,U=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},l=i.iterator||"@@iterator",F=i.asyncIterator||"@@asyncIterator",a=i.toStringTag||"@@toStringTag";function r(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{r({},"")}catch(k){r=function(e,t,n){return e[t]=n}}function d(e,t,n,i){var l=t&&t.prototype instanceof s?t:s,F=Object.create(l.prototype),a=new y(i||[]);return U(F,"_invoke",{value:p(e,n,a)}),F}function Q(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(k){return{type:"throw",arg:k}}}e.wrap=d;var o={};function s(){}function c(){}function R(){}var B={};r(B,l,(function(){return this}));var u=Object.getPrototypeOf,h=u&&u(u(b([])));h&&h!==t&&n.call(h,l)&&(B=h);var V=R.prototype=s.prototype=Object.create(B);function Z(e){["next","throw","return"].forEach((function(t){r(e,t,(function(e){return this._invoke(t,e)}))}))}function m(e,t){function i(U,l,F,a){var r=Q(e[U],e,l);if("throw"!==r.type){var d=r.arg,o=d.value;return o&&"object"==typeof o&&n.call(o,"__await")?t.resolve(o.__await).then((function(e){i("next",e,F,a)}),(function(e){i("throw",e,F,a)})):t.resolve(o).then((function(e){d.value=e,F(d)}),(function(e){return i("throw",e,F,a)}))}a(r.arg)}var l;U(this,"_invoke",{value:function(e,n){function U(){return new t((function(t,U){i(e,n,t,U)}))}return l=l?l.then(U,U):U()}})}function p(e,t,n){var U="suspendedStart";return function(i,l){if("executing"===U)throw new Error("Generator is already running");if("completed"===U){if("throw"===i)throw l;return{value:void 0,done:!0}}for(n.method=i,n.arg=l;;){var F=n.delegate;if(F){var a=S(F,n);if(a){if(a===o)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===U)throw U="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);U="executing";var r=Q(e,t,n);if("normal"===r.type){if(U=n.done?"completed":"suspendedYield",r.arg===o)continue;return{value:r.arg,done:n.done}}"throw"===r.type&&(U="completed",n.method="throw",n.arg=r.arg)}}}function S(e,t){var n=t.method,U=e.iterator[n];if(void 0===U)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),o;var i=Q(U,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,o;var l=i.arg;return l?l.done?(t[e.resultName]=l.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,o):l:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,o)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function y(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function b(e){if(e){var t=e[l];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var U=-1,i=function t(){for(;++U<e.length;)if(n.call(e,U))return t.value=e[U],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:E}}function E(){return{value:void 0,done:!0}}return c.prototype=R,U(V,"constructor",{value:R,configurable:!0}),U(R,"constructor",{value:c,configurable:!0}),c.displayName=r(R,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,R):(e.__proto__=R,r(e,a,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},Z(m.prototype),r(m.prototype,F,(function(){return this})),e.AsyncIterator=m,e.async=function(t,n,U,i,l){void 0===l&&(l=Promise);var F=new m(d(t,n,U,i),l);return e.isGeneratorFunction(n)?F:F.next().then((function(e){return e.done?e.value:F.next()}))},Z(V),r(V,a,"Generator"),r(V,l,(function(){return this})),r(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var U in t)n.push(U);return n.reverse(),function e(){for(;n.length;){var U=n.pop();if(U in t)return e.value=U,e.done=!1,e}return e.done=!0,e}},e.values=b,y.prototype={constructor:y,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function U(n,U){return F.type="throw",F.arg=e,t.next=n,U&&(t.method="next",t.arg=void 0),!!U}for(var i=this.tryEntries.length-1;i>=0;--i){var l=this.tryEntries[i],F=l.completion;if("root"===l.tryLoc)return U("end");if(l.tryLoc<=this.prev){var a=n.call(l,"catchLoc"),r=n.call(l,"finallyLoc");if(a&&r){if(this.prev<l.catchLoc)return U(l.catchLoc,!0);if(this.prev<l.finallyLoc)return U(l.finallyLoc)}else if(a){if(this.prev<l.catchLoc)return U(l.catchLoc,!0)}else{if(!r)throw new Error("try statement without catch or finally");if(this.prev<l.finallyLoc)return U(l.finallyLoc)}}}},abrupt:function(e,t){for(var U=this.tryEntries.length-1;U>=0;--U){var i=this.tryEntries[U];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var l=i;break}}l&&("break"===e||"continue"===e)&&l.tryLoc<=t&&t<=l.finallyLoc&&(l=null);var F=l?l.completion:{};return F.type=e,F.arg=t,l?(this.method="next",this.next=l.finallyLoc,o):this.complete(F)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),o},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),o}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var U=n.completion;if("throw"===U.type){var i=U.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:b(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),o}},e}function oe(e){return(oe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function se(e,t,n,U,i,l,F){try{var a=e[l](F),r=a.value}catch(d){return void n(d)}a.done?t(r):Promise.resolve(r).then(U,i)}function ce(e){return function(){var t=this,n=arguments;return new Promise((function(U,i){var l=e.apply(t,n);function F(e){se(l,U,i,F,a,"next",e)}function a(e){se(l,U,i,F,a,"throw",e)}F(void 0)}))}}function Re(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Be(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,ve(U.key),U)}}function ue(e,t,n){return t&&Be(e.prototype,t),n&&Be(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function he(e,t,n){return(t=ve(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ve(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&me(e,t)}function Ze(e){return(Ze=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function me(e,t){return(me=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function pe(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function Se(e,t,n){return(Se=pe()?Reflect.construct.bind():function(e,t,n){var U=[null];U.push.apply(U,t);var i=new(Function.bind.apply(e,U));return n&&me(i,n.prototype),i}).apply(null,arguments)}function Je(e){var t="function"==typeof Map?new Map:void 0;return Je=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,U)}function U(){return Se(e,arguments,Ze(this).constructor)}return U.prototype=Object.create(e.prototype,{constructor:{value:U,enumerable:!1,writable:!0,configurable:!0}}),me(U,e)},Je(e)}function We(e,t){if(null==e)return{};var n,U,i=function(e,t){if(null==e)return{};var n,U,i={},l=Object.keys(e);for(U=0;U<l.length;U++)n=l[U],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(U=0;U<l.length;U++)n=l[U],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function ye(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function be(e){var t=pe();return function(){var n,U=Ze(e);if(t){var i=Ze(this).constructor;n=Reflect.construct(U,arguments,i)}else n=U.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return ye(e)}(this,n)}}function Ee(){return Ee="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var U=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=Ze(e)););return e}(e,t);if(U){var i=Object.getOwnPropertyDescriptor(U,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},Ee.apply(this,arguments)}function ke(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,U=new Array(t);n<t;n++)U[n]=e[n];return U}function fe(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return ke(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ke(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var U=0,i=function(){};return{s:i,n:function(){return U>=e.length?{done:!0}:{done:!1,value:e[U++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,F=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return F=e.done,e},e:function(e){a=!0,l=e},f:function(){try{F||null==n.return||n.return()}finally{if(a)throw l}}}}function ve(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function Ne(){var e,t,n=new Promise((function(n,U){e=n,t=U}));return n.used=!1,n.resolve=function(){return n.used=!0,e.apply(void 0,arguments)},n.reject=function(){return n.used=!0,t.apply(void 0,arguments)},n}var Te={DEBUG:1,LOG:2,WARN:3,ERROR:4},Ce=["Boolean","Number","String","Undefined","Null","Date","Object"],ge=function(){function e(t,n){Re(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),this.logCacheLevel=(null==n?void 0:n.logCacheLevel)||3,this.logMaxSize=(null==n?void 0:n.logMaxSize)||204800,this.logSize=0,this.logTextArray=[]}return ue(e,[{key:"debug",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[Te.DEBUG].concat(U)),e.disabled||(t=console).debug.apply(t,[this._prefix,Xe()].concat(U))}},{key:"log",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[Te.LOG].concat(U)),e.disabled||(t=console).log.apply(t,[this._prefix,Xe()].concat(U))}},{key:"warn",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[Te.WARN].concat(U)),e.disabled||(t=console).warn.apply(t,[this._prefix,Xe()].concat(U))}},{key:"error",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[Te.ERROR].concat(U)),e.disabled||(t=console).error.apply(t,[this._prefix,Xe()].concat(U))}},{key:"logCache",value:function(e){if(!(e<this.logCacheLevel)){var t="";try{for(var n=arguments.length,U=new Array(n>1?n-1:0),i=1;i<n;i++)U[i-1]=arguments[i];var l=U.map((function(e){return Ge(e)}));t=this._prefix+Xe()+JSON.stringify(l)}catch(a){return}if(e>=this.logCacheLevel&&(this.logSize+=t.length,this.logTextArray.push(t)),this.logSize>this.logMaxSize){var F=this.logTextArray.shift();this.logSize-=F.length}}}},{key:"getLogCache",value:function(){var e=this.logTextArray.join("\n");return this.reset(),e}},{key:"reset",value:function(){this.logTextArray=[],this.logSize=0}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}},{key:"setLogLevel",value:function(e){this.logCacheLevel=e}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();function Xe(){return(new Date).toLocaleString()}function Le(e){if("object"!==oe(e))return e;var t=Object.prototype.toString.call(e).slice(8,-1);switch(t){case"Array":case"Uint8Array":case"ArrayBuffer":return t+"["+e.length+"]";case"Object":return"{}";default:return t}}function Ge(e,t,n){n||(n=1),t||(t=2);var U={};if(!e||"object"!==oe(e))return e;var i=Object.prototype.toString.call(e).slice(8,-1);if(!Ce.includes(i))return i;if(!(n>t)){for(var l in e)Object.prototype.hasOwnProperty.call(e,l)&&(n===t?U[l]=Le(e[l]):"object"===oe(e[l])?U[l]=Ge(e[l],t,n+1):U[l]=e[l]);return U}}he(ge,"disabled",!0);var xe="fetch",Ie="xhr",De="arraybuffer",Ye="text",Me="json",Ke=function(e){Ve(n,e);var t=be(n);function n(e,U,i,l){var F;return Re(this,n),he(ye(F=t.call(this,l)),"retryCount",0),he(ye(F),"isTimeout",!1),he(ye(F),"loaderType",xe),he(ye(F),"startTime",0),he(ye(F),"endTime",0),he(ye(F),"options",{}),F.url=e,F.request=U,F.response=i,F}return ue(n)}(Je(Error)),we=Object.prototype.toString;function He(e){if("[object Object]"!==we.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function Pe(e){if(e&&null!==e[0]&&void 0!==e[0]&&(0!==e[0]||null!==e[1]&&void 0!==e[1])){var t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}}function je(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ze(e,t){if(e){if(!t)return e;var n,U=Object.keys(t).map((function(e){if(null!=(n=t[e]))return Array.isArray(n)?e+="[]":n=[n],n.map((function(t){var n;return n=t,"[object Date]"===we.call(n)?t=t.toISOString():function(e){return null!==e&&"object"===oe(e)}(t)&&(t=JSON.stringify(t)),"".concat(je(e),"=").concat(je(t))})).join("&")})).filter(Boolean).join("&");if(U){var i=e.indexOf("#");-1!==i&&(e=e.slice(0,i)),e+=(-1===e.indexOf("?")?"?":"&")+U}return e}}function Oe(e,t,n,U,i,l,F,a,r,d,Q){return i=null!=i?parseFloat(i):null,U=parseInt(U||"0",10),Number.isNaN(U)&&(U=0),{data:e,done:t,options:{range:r,vid:d,index:a,contentLength:U,age:i,startTime:l,firstByteTime:F,endTime:Date.now(),priOptions:Q},response:n}}function _e(e,t){return Math.round(8*e*1e3/t/1024)}var Ae="real_time_speed",qe="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function $e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var et={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function U(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function l(e,t,U,l,F){if("function"!=typeof U)throw new TypeError("The listener must be a function");var a=new i(U,l||e,F),r=n?n+t:t;return e._events[r]?e._events[r].fn?e._events[r]=[e._events[r],a]:e._events[r].push(a):(e._events[r]=a,e._eventsCount++),e}function F(e,t){0==--e._eventsCount?e._events=new U:delete e._events[t]}function a(){this._events=new U,this._eventsCount=0}Object.create&&(U.prototype=Object.create(null),(new U).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,U,i=[];if(0===this._eventsCount)return i;for(U in e=this._events)t.call(e,U)&&i.push(n?U.slice(1):U);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,U=this._events[t];if(!U)return[];if(U.fn)return[U.fn];for(var i=0,l=U.length,F=new Array(l);i<l;i++)F[i]=U[i].fn;return F},a.prototype.listenerCount=function(e){var t=n?n+e:e,U=this._events[t];return U?U.fn?1:U.length:0},a.prototype.emit=function(e,t,U,i,l,F){var a=n?n+e:e;if(!this._events[a])return!1;var r,d,Q=this._events[a],o=arguments.length;if(Q.fn){switch(Q.once&&this.removeListener(e,Q.fn,void 0,!0),o){case 1:return Q.fn.call(Q.context),!0;case 2:return Q.fn.call(Q.context,t),!0;case 3:return Q.fn.call(Q.context,t,U),!0;case 4:return Q.fn.call(Q.context,t,U,i),!0;case 5:return Q.fn.call(Q.context,t,U,i,l),!0;case 6:return Q.fn.call(Q.context,t,U,i,l,F),!0}for(d=1,r=new Array(o-1);d<o;d++)r[d-1]=arguments[d];Q.fn.apply(Q.context,r)}else{var s,c=Q.length;for(d=0;d<c;d++)switch(Q[d].once&&this.removeListener(e,Q[d].fn,void 0,!0),o){case 1:Q[d].fn.call(Q[d].context);break;case 2:Q[d].fn.call(Q[d].context,t);break;case 3:Q[d].fn.call(Q[d].context,t,U);break;case 4:Q[d].fn.call(Q[d].context,t,U,i);break;default:if(!r)for(s=1,r=new Array(o-1);s<o;s++)r[s-1]=arguments[s];Q[d].fn.apply(Q[d].context,r)}}return!0},a.prototype.on=function(e,t,n){return l(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return l(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,U,i){var l=n?n+e:e;if(!this._events[l])return this;if(!t)return F(this,l),this;var a=this._events[l];if(a.fn)a.fn!==t||i&&!a.once||U&&a.context!==U||F(this,l);else{for(var r=0,d=[],Q=a.length;r<Q;r++)(a[r].fn!==t||i&&!a[r].once||U&&a[r].context!==U)&&d.push(a[r]);d.length?this._events[l]=1===d.length?d[0]:d:F(this,l)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&F(this,t)):(this._events=new U,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}(et);var tt=$e(et.exports),nt=2097152,Ut=function(e){Ve(U,e);var t,n=be(U);function U(){var e;return Re(this,U),he(ye(e=n.call(this)),"_abortController",null),he(ye(e),"_timeoutTimer",null),he(ye(e),"_reader",null),he(ye(e),"_response",null),he(ye(e),"_aborted",!1),he(ye(e),"_index",-1),he(ye(e),"_range",null),he(ye(e),"_receivedLength",0),he(ye(e),"_running",!1),he(ye(e),"_logger",null),he(ye(e),"_vid",""),he(ye(e),"_onProcessMinLen",0),he(ye(e),"_onCancel",null),he(ye(e),"_priOptions",null),e}return ue(U,[{key:"load",value:function(e){var t,n=this,U=e.url,i=e.vid,l=e.timeout,F=e.responseType,a=e.onProgress,r=e.index,d=e.onTimeout,Q=e.onCancel,o=e.range,s=e.transformResponse,c=e.request,R=e.params,B=e.logger,u=e.method,h=e.headers,V=e.body,Z=e.mode,m=e.credentials,p=e.cache,S=e.redirect,J=e.referrer,W=e.referrerPolicy,y=e.onProcessMinLen,b=e.priOptions;this._logger=B,this._aborted=!1,this._onProcessMinLen=y,this._onCancel=Q,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=r,this._range=o||[0,0],this._vid=i||U,this._priOptions=b||{};var E={method:u,headers:h,body:V,mode:Z,credentials:m,cache:p,redirect:S,referrer:J,referrerPolicy:W,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal},k=!1;clearTimeout(this._timeoutTimer),U=ze(U,R);var f=Pe(o);f&&(h=c?c.headers:E.headers=E.headers||(Headers?new Headers:{}),Headers&&h instanceof Headers?h.append("Range",f):h.Range=f),l&&(this._timeoutTimer=setTimeout((function(){if(k=!0,n.cancel(),d){var e=new Ke(U,E,null,"timeout");e.isTimeout=!0,d(e,{index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions})}}),l));var v=Date.now();return this._logger.debug("[fetch load start], index,",r,",range,",o),new Promise((function(e,t){fetch(c||U,c?void 0:E).then(function(){var i=ce(Qe().mark((function i(l){var d,Q,c,R;return Qe().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(clearTimeout(n._timeoutTimer),n._response=l,!n._aborted&&n._running){i.next=4;break}return i.abrupt("return");case 4:if(s&&(l=s(l,U)||l),l.ok){i.next=7;break}throw new Ke(U,E,l,"bad network response");case 7:if(d=Date.now(),F!==Ye){i.next=15;break}return i.next=11,l.text();case 11:Q=i.sent,n._running=!1,i.next=37;break;case 15:if(F!==Me){i.next=22;break}return i.next=18,l.json();case 18:Q=i.sent,n._running=!1,i.next=37;break;case 22:if(!a){i.next=29;break}return n.resolve=e,n.reject=t,n._loadChunk(l,a,v,d),i.abrupt("return");case 29:return i.next=31,l.arrayBuffer();case 31:Q=i.sent,Q=new Uint8Array(Q),n._running=!1,c=Date.now()-v,R=_e(Q.byteLength,c),n.emit(Ae,{speed:R,len:Q.byteLength,time:c,vid:n._vid,index:n._index,range:n._range,priOptions:n._priOptions});case 37:n._logger.debug("[fetch load end], index,",r,",range,",o),e(Oe(Q,!0,l,l.headers.get("Content-Length"),l.headers.get("age"),v,d,r,o,n._vid,n._priOptions));case 39:case"end":return i.stop()}}),i)})));return function(e){return i.apply(this,arguments)}}()).catch((function(e){var i;clearTimeout(n._timeoutTimer),n._running=!1,n._aborted&&!k||((e=e instanceof Ke?e:new Ke(U,E,null,null===(i=e)||void 0===i?void 0:i.message)).startTime=v,e.endTime=Date.now(),e.isTimeout=k,e.options={index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions},t(e))}))}))}},{key:"cancel",value:(t=ce(Qe().mark((function e(){return Qe().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._aborted){e.next=2;break}return e.abrupt("return");case 2:if(this._aborted=!0,this._running=!1,!this._response){e.next=14;break}if(e.prev=5,!this._reader){e.next=9;break}return e.next=9,this._reader.cancel();case 9:e.next=13;break;case 11:e.prev=11,e.t0=e.catch(5);case 13:this._response=this._reader=null;case 14:if(this._abortController){try{this._abortController.abort()}catch(t){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions});case 16:case"end":return e.stop()}}),e,this,[[5,11]])}))),function(){return t.apply(this,arguments)})},{key:"_loadChunk",value:function(e,t,n,U){var i=this;if(!e.body||!e.body.getReader){this._running=!1;var l=new Ke(e.url,"",e,"onProgress of bad response.body.getReader");return l.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(l)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(nt),this._writeIdx=0);var F,a,r,d=this._reader=e.body.getReader(),Q=function(){var l=ce(Qe().mark((function l(){var o,s,c,R,B,u,h,V;return Qe().wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return a=Date.now(),l.prev=1,l.next=4,d.read();case 4:F=l.sent,r=Date.now(),l.next=13;break;case 8:return l.prev=8,l.t0=l.catch(1),r=Date.now(),i._aborted||(i._running=!1,l.t0.options={index:i._index,range:i._range,vid:i._vid,priOptions:i._priOptions},i.reject(l.t0)),l.abrupt("return");case 13:if(s=(null===(o=i._range)||void 0===o?void 0:o.length)>0?i._range[0]:0,c=s+i._receivedLength,!i._aborted){l.next=19;break}return i._running=!1,t(void 0,!1,{range:[c,c],vid:i._vid,index:i._index,startTime:a,endTime:r,st:n,firstByteTime:U,priOptions:i._priOptions},e),l.abrupt("return");case 19:R=F.value?F.value.byteLength:0,i._receivedLength+=R,i._logger.debug("【fetchLoader,onProgress call】,task,",i._range,", start,",c,", end,",s+i._receivedLength,", done,",F.done),i._onProcessMinLen>0?i._writeIdx+R>=i._onProcessMinLen||F.done?((B=new Uint8Array(i._writeIdx+R)).set(i._cache.slice(0,i._writeIdx),0),R>0&&B.set(F.value,i._writeIdx),i._writeIdx=0,i._logger.debug("【fetchLoader,onProgress enough】,done,",F.done,",len,",B.byteLength,", writeIdx,",i._writeIdx)):R>0&&i._writeIdx+R<nt?(i._cache.set(F.value,i._writeIdx),i._writeIdx+=R,i._logger.debug("【fetchLoader,onProgress cache】,len,",R,", writeIdx,",i._writeIdx)):R>0&&(u=new Uint8Array(i._writeIdx+R+2048),i._logger.debug("【fetchLoader,onProgress extra start】,size,",i._writeIdx+R+2048,", datalen,",R,", writeIdx,",i._writeIdx),u.set(i._cache.slice(0,i._writeIdx),0),R>0&&u.set(F.value,i._writeIdx),i._writeIdx+=R,delete i._cache,i._cache=u,i._logger.debug("【fetchLoader,onProgress extra end】,len,",R,", writeIdx,",i._writeIdx)):B=F.value,(B&&B.byteLength>0||F.done)&&t(B,F.done,{range:[i._range[0]+i._receivedLength-(B?B.byteLength:0),i._range[0]+i._receivedLength],vid:i._vid,index:i._index,startTime:a,endTime:r,st:n,firstByteTime:U,priOptions:i._priOptions},e),F.done?(h=Date.now()-n,V=_e(i._receivedLength,h),i.emit(Ae,{speed:V,len:i._receivedLength,time:h,vid:i._vid,index:i._index,range:i._range,priOptions:i._priOptions}),i._running=!1,i._logger.debug("[fetchLoader onProgress end],task,",i._range,",done,",F.done),i.resolve(Oe(F,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),n,U,i._index,i._range,i._vid,i._priOptions))):Q();case 25:case"end":return l.stop()}}),l,null,[[1,8]])})));return function(){return l.apply(this,arguments)}}();Q()}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}}],[{key:"isSupported",value:function(){return!("undefined"==typeof fetch)}}]),U}(tt);var it=function(e){Ve(n,e);var t=be(n);function n(){var e;return Re(this,n),he(ye(e=t.call(this)),"_xhr",null),he(ye(e),"_aborted",!1),he(ye(e),"_timeoutTimer",null),he(ye(e),"_range",null),he(ye(e),"_receivedLength",0),he(ye(e),"_url",null),he(ye(e),"_onProgress",null),he(ye(e),"_index",-1),he(ye(e),"_headers",null),he(ye(e),"_currentChunkSizeKB",384),he(ye(e),"_timeout",null),he(ye(e),"_xhr",null),he(ye(e),"_withCredentials",null),he(ye(e),"_startTime",-1),he(ye(e),"_loadCompleteResolve",null),he(ye(e),"_loadCompleteReject",null),he(ye(e),"_runing",!1),he(ye(e),"_logger",!1),he(ye(e),"_vid",""),he(ye(e),"_responseType",void 0),he(ye(e),"_credentials",void 0),he(ye(e),"_method",void 0),he(ye(e),"_transformResponse",void 0),he(ye(e),"_firstRtt",void 0),he(ye(e),"_onCancel",null),he(ye(e),"_priOptions",null),e}return ue(n,[{key:"load",value:function(e){var t=this;clearTimeout(this._timeoutTimer),this._logger=e.logger,this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this._logger.debug("【xhrLoader task】, range",this._range),this._url=ze(e.url,e.params);var n=Date.now();return new Promise((function(e,n){t._loadCompleteResolve=e,t._loadCompleteReject=n,t._startLoad()})).catch((function(e){if(clearTimeout(t._timeoutTimer),t._runing=!1,!t._aborted)throw(e=e instanceof Ke?e:new Ke(t._url,t._request)).startTime=n,e.endTime=Date.now(),e.options={index:t._index,vid:t._vid,priOptions:t._priOptions},e}))}},{key:"_startLoad",value:function(){var e=null;if(this._responseType===De&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;var t=1024*this._currentChunkSizeKB,n=this._range[0]+this._receivedLength,U=this._range[1];t<this._range[1]-n&&(U=n+t),e=[n,U],this._logger.debug("[xhr_loader->],tast :",this._range,", SubRange, ",e)}else e=this._range,this._logger.debug("[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}},{key:"_internalOpen",value:function(e){var t=this;try{this._startTime=Date.now();var n=this._xhr=new XMLHttpRequest;n.open(this._method||"GET",this._url,!0),n.responseType=this._responseType,this._timeout&&(n.timeout=this._timeout),n.withCredentials=this._withCredentials,n.onload=this._onLoad.bind(this),n.onreadystatechange=this._onReadyStatechange.bind(this),n.onerror=function(e){var n,U,i;t._running=!1;var l=new Ke(t._url,t._request,null==e||null===(n=e.currentTarget)||void 0===n?void 0:n.response,"xhr.onerror.status:"+(null==e||null===(U=e.currentTarget)||void 0===U?void 0:U.status)+",statusText,"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.statusText));l.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(l)},n.ontimeout=function(e){t.cancel();var n=new Ke(t._url,t._request,{status:408},"timeout");t._onTimeout&&(n.isTimeout=!0,t._onTimeout(n,{index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions})),n.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(n)};var U=this._headers||{},i=Pe(e);i&&(U.Range=i),U&&Object.keys(U).forEach((function(e){n.setRequestHeader(e,U[e])})),this._logger.debug("[xhr.send->] tast,",this._range,",load sub range, ",e),n.send(this._body)}catch(l){l.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(l)}}},{key:"_onReadyStatechange",value:function(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}},{key:"_onLoad",value:function(e){var t,n=e.target.status;if(n<200||n>299){var U=new Ke(this._url,null,de(de({},e.target.response),{},{status:n}),"bad response,status:"+n);return U.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(U)}var i,l=null,F=!1,a=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===De){var r,d=new Uint8Array(e.target.response);if(i=a+this._receivedLength,d&&d.byteLength>0){this._receivedLength+=d.byteLength;var Q=Date.now()-this._startTime,o=_e(this._receivedLength,Q);this.emit(Ae,{speed:o,len:this._receivedLength,time:Q,vid:this._vid,index:this._index,range:[i,a+this._receivedLength],priOptions:this._priOptions})}l=d,F=!((null===(r=this._range)||void 0===r?void 0:r.length)>1&&this._range[1]&&this._receivedLength<this._range[1]-this._range[0]),this._logger.debug("[xhr load done->], tast :",this._range,", start",i,"end ",a+this._receivedLength,",dataLen,",d?d.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",F)}else F=!0,l=e.target.response;var s={ok:n>=200&&n<300,status:n,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(s=this._transformResponse(s,this._url)||s),this._onProgress&&this._onProgress(l,F,{index:this._index,vid:this._vid,range:[i,a+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},s),F?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(Oe(this._onProgress?null:l,F,s,s.headers["content-length"],s.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}},{key:"cancel",value:function(){if(!this._aborted)return this._aborted=!0,this._runing=!1,Ee(Ze(n.prototype),"removeAllListeners",this).call(this),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}},{key:"_getHeaders",value:function(e){var t,n={},U=fe(e.getAllResponseHeaders().trim().split("\r\n"));try{for(U.s();!(t=U.n()).done;){var i=t.value.split(": ");n[i[0].toLowerCase()]=i.slice(1).join(": ")}}catch(l){U.e(l)}finally{U.f()}return n}}],[{key:"isSupported",value:function(){return"undefined"!=typeof XMLHttpRequest}}]),n}(tt),lt=["retry","retryDelay","onRetryError","transformError"],Ft=function(){function e(t,n){Re(this,e),this.promise=Ne(),this.alive=!!n.onProgress,!n.logger&&(n.logger=new ge("Loader")),this._loaderType=t,this._loader=t===xe&&window.fetch?new Ut:new it,this._config=n,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=n.retryCheckFunc,this._logger=n.logger}var t;return ue(e,[{key:"exec",value:function(){var e=this,t=this._config,n=t.retry,U=t.retryDelay,i=t.onRetryError,l=t.transformError,F=We(t,lt),a=function(){var t=ce(Qe().mark((function t(){var r,d,Q;return Qe().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,e._loader.load(F);case 3:r=t.sent,e.promise.resolve(r),t.next=27;break;case 7:if(t.prev=7,t.t0=t.catch(0),e._loader.running=!1,e._logger.debug("[task request catch err]",t.t0),!e._canceled){t.next=13;break}return t.abrupt("return");case 13:if(t.t0.loaderType=e._loaderType,t.t0.retryCount=e._retryCount,d=t.t0,l&&(d=l(d)||d),i&&e._retryCount>0&&i(d,e._retryCount,{index:F.index,vid:F.vid,range:F.range,priOptions:F.priOptions}),e._retryCount++,Q=!0,e._retryCheckFunc&&(Q=e._retryCheckFunc(t.t0)),!(Q&&e._retryCount<=n)){t.next=26;break}return clearTimeout(e._retryTimer),e._logger.debug("[task request setTimeout],retry",e._retryCount,",retry range,",F.range),e._retryTimer=setTimeout(a,U),t.abrupt("return");case 26:e.promise.reject(d);case 27:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(){return t.apply(this,arguments)}}();return a(),this.promise}},{key:"cancel",value:(t=ce(Qe().mark((function e(){return Qe().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,e.abrupt("return",this._loader.cancel());case 4:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"running",get:function(){return this._loader&&this._loader.running}},{key:"loader",get:function(){return this._loader}}]),e}();function at(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((function(t){return setTimeout(t,e)}))}var rt=function(e){Ve(U,e);var t,n=be(U);function U(e){var t;return Re(this,U),he(ye(t=n.call(this,e)),"type",xe),he(ye(t),"_queue",[]),he(ye(t),"_alive",[]),he(ye(t),"_currentTask",null),he(ye(t),"_config",void 0),t._config=function(e){return de({loaderType:xe,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:Ye,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0},e)}(e),t._config.loaderType!==Ie&&Ut.isSupported()||(t.type=Ie),t.log=e.logger,t}return ue(U,[{key:"isFetch",value:function(){return this.type===xe}},{key:"load",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?n=e:n.url=e||n.url||this._config.url,(n=Object.assign({},this._config,n)).params&&(n.params=Object.assign({},n.params)),n.headers&&He(n.headers)&&(n.headers=Object.assign({},n.headers)),n.body&&He(n.body)&&(n.body=Object.assign({},n.body)),n.transformRequest&&(n=n.transformRequest(n)||n),n.logger=this.log;var U=new Ft(this.type,n);return U.loader.on(Ae,(function(e){t.emit(Ae,e)})),this._queue.push(U),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),U.promise}},{key:"cancel",value:(t=ce(Qe().mark((function e(){var t;return Qe().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._queue.map((function(e){return e.cancel()})).concat(this._alive.map((function(e){return e.cancel()}))),this._currentTask&&t.push(this._currentTask.cancel()),this._queue=[],this._alive=[],e.next=6,Promise.all(t);case 6:return e.next=8,at();case 8:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"_processTask",value:function(){var e=this;if(this._currentTask=this._queue.shift(),this._currentTask){this._currentTask.alive&&this._alive.push(this._currentTask);var t=this._currentTask.exec().catch((function(e){}));t&&"function"==typeof t.finally&&t.finally((function(){var t,n;null!==(t=e._currentTask)&&void 0!==t&&t.alive&&(null===(n=e._alive)||void 0===n?void 0:n.length)>0&&(e._alive=e._alive.filter((function(t){return t&&t!==e._currentTask}))),e._processTask()}))}}}],[{key:"isFetchSupport",value:function(){return Ut.isSupported()}}]),U}(tt),dt=function(){function e(t,n,U,i){var l=this;M(this,e),this.config=e.getDefaultConfig(),Object.keys(i).map((function(e){void 0!==i[e]&&null!==i[e]&&(l.config[e]=i[e])})),this.duration=U,this.player=t,this.updateBitrate(n),this.curPCDNInBuffer=this.config.maxPCDNInBuffer,this.curPCDNOutBuffer=this.config.maxPCDNOutBuffer,this.PCDNChangeCnt=0}return w(e,[{key:"updateBitrate",value:function(e){this.bitrate=e,this.bitrate||(this.bitrate=this.config.minBandwidth)}},{key:"getPCDNInBuffer",value:function(){var e=this.config,t=this.player,n=this.bitrate;if(!e.PCDNBufferControl)return null;var U=e.estPlayTime,i=U;e.estPTcontrol&&(i=Math.min(U,Math.max(0,this.duration-((null==t?void 0:t.currentTime)||0))));var l=e.safePCDNInFactor,F=e.minBandwidth,a=e.maxPCDNInBuffer,r=e.minPCDNInBuffer,d=l*Math.max(1024*(null==t?void 0:t.avgSpeedPCDN)||0,F),Q=n>0?(1-d/n)*i:0;return this.curPCDNInBuffer=Math.min(a,Math.max(r,Q)),this.curPCDNInBuffer}},{key:"getPCDNOutBuffer",value:function(){var e=this.config,t=this.player,n=this.bitrate;if(!e.PCDNBufferControl)return null;var U=e.estPlayTime,i=U;e.estPTcontrol&&(i=Math.min(U,Math.max(0,this.duration-((null==t?void 0:t.currentTime)||0))));var l=e.safePCDNOutFactor,F=e.minBandwidth,a=e.maxPCDNOutBuffer,r=e.minPCDNOutBuffer,d=l*Math.max(1024*(null==t?void 0:t.avgSpeedPCDN)||0,F),Q=n>0?(1-d/n)*i:0;return this.curPCDNOutBuffer=Math.min(a,Math.max(r,Q)),this.curPCDNOutBuffer}},{key:"getPCDNChangeCnt",value:function(){var e=this.config,t=e.PCDNCntControl,n=e.alpha,U=this.curPCDNInBuffer,i=this.player,l=(null==i?void 0:i.bufferedPoint)||null,F=l&&l.end?l.end-i.currentTime:0;t?F>U+(this.PCDNChangeCnt-1)*n&&this.PCDNChangeCnt++:F>=U&&this.PCDNChangeCnt<2&&this.PCDNChangeCnt++;return this.PCDNChangeCnt}}],[{key:"getDefaultConfig",value:function(){return{PCDNBufferControl:!1,PCDNCntControl:!1,estPTcontrol:!1,minPCDNInBuffer:8,maxPCDNInBuffer:12,minPCDNOutBuffer:3,maxPCDNOutBuffer:6,safePCDNInFactor:.1,safePCDNOutFactor:.4,alpha:.5,estPlayTime:12,minBandwidth:1e6}}}]),e}(),Qt=new Map,ot=function(){function e(t,n,U,i){var l,F,a=this;M(this,e),this.options=e.getDefaultConfig(),Object.keys(t).map((function(e){void 0!==t[e]&&null!==t[e]&&(a.options[e]=t[e])})),this.options.productConfig&&this.options.productConfig.app_id||console.error("productConfig must has"),this.loader=new rt(this.options),this.resetTrackeArgs(),this._lastFileInfo=null,this.lastfetchNodeTime=-1,this._lastRetFileKey=null,this._minUpdateNodeStep=this.options.ErrorTimeStep,null!==(l=this.options)&&void 0!==l&&null!==(F=l.adaptPCDNConfig)&&void 0!==F&&F.PCDNBufferControl&&(this.pcdnAdapt=new dt(n,U,i,this.options.adaptPCDNConfig))}var t,n;return w(e,[{key:"isOpenAdaptPCDN",get:function(){return!!this.pcdnAdapt}},{key:"curPCDNInBuffer",get:function(){return this.pcdnAdapt.curPCDNInBuffer}},{key:"getPCDNInBuffer",value:function(){var e;return null===(e=this.pcdnAdapt)||void 0===e?void 0:e.getPCDNInBuffer()}},{key:"curPCDNOutBuffer",get:function(){return this.pcdnAdapt.curPCDNOutBuffer}},{key:"getPCDNOutBuffer",value:function(){var e;return null===(e=this.pcdnAdapt)||void 0===e?void 0:e.getPCDNOutBuffer()}},{key:"curPCDNChangeCnt",get:function(){return this.pcdnAdapt.PCDNChangeCnt}},{key:"getPCDNChangeCnt",value:function(){var e;return null===(e=this.pcdnAdapt)||void 0===e?void 0:e.getPCDNChangeCnt()}},{key:"resetTrackeArgs",value:function(e){this.trackeArgs={fid:null,trace_id:null,req_times:(null==e?void 0:e.req_times)||0,resp_times:(null==e?void 0:e.resp_times)||0,token:null,node_num:this.options.node_num,client_info:this.options.client_info}}},{key:"getPCDNNode",value:function(e,t,n){var U,i=ct(t),l=Qt.get(st(e,i)),F=new Ne;return null==l||!l.nodes||(null==l||null===(U=l.nodes)||void 0===U?void 0:U.length)<1?this.fetchPCDNNode(null,null,n).then((function(e){F.resolve(e)})).catch((function(e){F.reject(e)})):(l.fromCache=!0,F.resolve(l)),F}},{key:"removePCDNNode",value:function(e,t,n){var U=ct(t),i=Qt.get(st(e,U)),l=null==i?void 0:i.nodes;l&&(n?i.nodes=l.filter((function(e){return e&&n.indexOf(e.url)<0})):l.shift(),Qt.set(st(e,U),i)),l&&l.length||this.fetchPCDNNode().then().catch((function(){}))}},{key:"fetchPCDNNode",value:(n=Y(x().mark((function t(n,U,i){var l,F,a,r,d,Q,o,s,c,R,B,u,h,V,Z,m,p;return x().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(l=new Ne,U){t.next=5;break}U=this._lastFileInfo,t.next=13;break;case 5:if(U.byterate=ct(U.bitrate),!((null==(a=Qt.get(st(U.vid,U.byterate)))||null===(F=a.nodes)||void 0===F?void 0:F.length)>0)){t.next=11;break}return a.fromCache=!0,l.resolve(a),t.abrupt("return",l);case 11:delete U.bitrate,this._lastFileInfo=U;case 13:if(U){t.next=16;break}return l.resolve(null),t.abrupt("return",l);case 16:if(r=!1,d=st(U.vid,U.byterate),this._lastRetFileKey!==d&&(this.resetTrackeArgs(),r=!0),!(Date.now()-this.lastfetchNodeTime<this._minUpdateNodeStep)||r){t.next=22;break}return l.resolve(null),t.abrupt("return",l);case 22:if(this.lastfetchNodeTime=Date.now(),this._lastRetFileKey=d,U.sfid?U.version=1:U.vid&&(U.version=2),this.options.withReferer&&(U.with_referer=this.options.withReferer),Q=Object.assign(this.options.productConfig,{file_info:U},this.trackeArgs,{req_id:i}),o=JSON.stringify(Q),!(this.trackeArgs.req_times>=this.options.maxCnt)){t.next=31;break}return l.resolve(null),t.abrupt("return",l);case 31:return this.loader||(this.loader=new rt(this.options)),this.trackeArgs.req_times+=1,t.prev=33,e.pcdn_tracker_request_cnt++,t.next=37,this.loader.load(n||this.options.trackerUrl,{body:o});case 37:s=t.sent,c=null,s&&(this.trackeArgs.resp_times+=1,B=8*U.byterate,s.done&&null!==(R=s.data)&&void 0!==R&&R.Result?(u=s.data.Result,(c=u.nodes)&&c.length>0?e.pcdn_tracker_success_cnt++:this._minUpdateNodeStep=this.options.NULLNodeTimeStep,c.map((function(e){e.vid=U.vid,e.bitrate=B})),h=u.fid,V=u.trace_id,Z=u.req_id,m={nodes:c,fid:h,vid:U.vid,trace_id:V,req_id:Z,bitrate:B},p=st(U.vid,U.byterate),Qt.set(p,m),this.trackeArgs.fid=u.fid,this.trackeArgs.trace_id=u.trace_id,this.trackeArgs.token=u.token,l.resolve(m)):(this._minUpdateNodeStep=this.options.ErrorTimeStep,l.reject(s))),t.next=47;break;case 42:t.prev=42,t.t0=t.catch(33),this._minUpdateNodeStep=this.options.ErrorTimeStep,console.warn("tracker catch ERR,",t.t0),l.reject(t.t0);case 47:return t.abrupt("return",l);case 48:case"end":return t.stop()}}),t,this,[[33,42]])}))),function(e,t,U){return n.apply(this,arguments)})}],[{key:"pluginName",get:function(){return"PCDN"}},{key:"pcdnReqCnt",get:function(){var t=e.pcdn_tracker_request_cnt,n=e.pcdn_tracker_success_cnt;return e.pcdn_tracker_request_cnt=0,e.pcdn_tracker_success_cnt=0,{pcdn_tracker_request_cnt:t,pcdn_tracker_failed_cnt:t-n}}},{key:"getDefaultConfig",value:function(){return{trackerUrl:"",loaderType:xe,responseType:Me,mode:"cors",method:"POST",retry:0,retryDelay:3e3,timeout:5e3,node_num:5,client_info:null,maxCnt:30,withReferer:0,NULLNodeTimeStep:6e4,ErrorTimeStep:15e3}}},{key:"gainPCDNNode",value:(t=Y(x().mark((function t(n,U,i,l){var F,a,r,d,Q,o,s,c,R;return x().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return F=e.getDefaultConfig(),Object.keys(U).map((function(e){void 0!==U[e]&&null!==U[e]&&(F[e]=U[e])})),l&&l.app_id||console.error("productConfig must has"),a=new Ne,i?(i.byterate=ct(i.bitrate),delete i.bitrate):a.reject("video fileInfo need set"),r=Object.assign(l,{file_info:i},{node_num:(null==U?void 0:U.node_num)||3}),d=JSON.stringify(r),Q=new rt(F),t.prev=8,e.pcdn_tracker_request_cnt++,t.next=12,Q.load(n,{body:d});case 12:(R=t.sent).done&&(null===(o=R.data)||void 0===o||null===(s=o.Result)||void 0===s||null===(c=s.nodes)||void 0===c?void 0:c.length)>0&&e.pcdn_tracker_success_cnt++,a.resolve(R),t.next=20;break;case 17:t.prev=17,t.t0=t.catch(8),a.reject((null===t.t0||void 0===t.t0?void 0:t.t0.message)||"get pcdnNode error");case 20:return t.abrupt("return",a);case 21:case"end":return t.stop()}}),t,null,[[8,17]])}))),function(e,n,U,i){return t.apply(this,arguments)})}]),e}();function st(e,t){return"".concat(e,"-").concat(t)}function ct(e){return Math.floor(e/8)}function Rt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var U=Object.getOwnPropertySymbols(e);t&&(U=U.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,U)}return n}function Bt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Rt(Object(n),!0).forEach((function(t){Jt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ut(){ut=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,U=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},l=i.iterator||"@@iterator",F=i.asyncIterator||"@@asyncIterator",a=i.toStringTag||"@@toStringTag";function r(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{r({},"")}catch(k){r=function(e,t,n){return e[t]=n}}function d(e,t,n,i){var l=t&&t.prototype instanceof s?t:s,F=Object.create(l.prototype),a=new y(i||[]);return U(F,"_invoke",{value:p(e,n,a)}),F}function Q(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(k){return{type:"throw",arg:k}}}e.wrap=d;var o={};function s(){}function c(){}function R(){}var B={};r(B,l,(function(){return this}));var u=Object.getPrototypeOf,h=u&&u(u(b([])));h&&h!==t&&n.call(h,l)&&(B=h);var V=R.prototype=s.prototype=Object.create(B);function Z(e){["next","throw","return"].forEach((function(t){r(e,t,(function(e){return this._invoke(t,e)}))}))}function m(e,t){function i(U,l,F,a){var r=Q(e[U],e,l);if("throw"!==r.type){var d=r.arg,o=d.value;return o&&"object"==typeof o&&n.call(o,"__await")?t.resolve(o.__await).then((function(e){i("next",e,F,a)}),(function(e){i("throw",e,F,a)})):t.resolve(o).then((function(e){d.value=e,F(d)}),(function(e){return i("throw",e,F,a)}))}a(r.arg)}var l;U(this,"_invoke",{value:function(e,n){function U(){return new t((function(t,U){i(e,n,t,U)}))}return l=l?l.then(U,U):U()}})}function p(e,t,n){var U="suspendedStart";return function(i,l){if("executing"===U)throw new Error("Generator is already running");if("completed"===U){if("throw"===i)throw l;return{value:void 0,done:!0}}for(n.method=i,n.arg=l;;){var F=n.delegate;if(F){var a=S(F,n);if(a){if(a===o)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===U)throw U="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);U="executing";var r=Q(e,t,n);if("normal"===r.type){if(U=n.done?"completed":"suspendedYield",r.arg===o)continue;return{value:r.arg,done:n.done}}"throw"===r.type&&(U="completed",n.method="throw",n.arg=r.arg)}}}function S(e,t){var n=t.method,U=e.iterator[n];if(void 0===U)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),o;var i=Q(U,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,o;var l=i.arg;return l?l.done?(t[e.resultName]=l.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,o):l:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,o)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function y(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function b(e){if(e){var t=e[l];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var U=-1,i=function t(){for(;++U<e.length;)if(n.call(e,U))return t.value=e[U],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:E}}function E(){return{value:void 0,done:!0}}return c.prototype=R,U(V,"constructor",{value:R,configurable:!0}),U(R,"constructor",{value:c,configurable:!0}),c.displayName=r(R,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,R):(e.__proto__=R,r(e,a,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},Z(m.prototype),r(m.prototype,F,(function(){return this})),e.AsyncIterator=m,e.async=function(t,n,U,i,l){void 0===l&&(l=Promise);var F=new m(d(t,n,U,i),l);return e.isGeneratorFunction(n)?F:F.next().then((function(e){return e.done?e.value:F.next()}))},Z(V),r(V,a,"Generator"),r(V,l,(function(){return this})),r(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var U in t)n.push(U);return n.reverse(),function e(){for(;n.length;){var U=n.pop();if(U in t)return e.value=U,e.done=!1,e}return e.done=!0,e}},e.values=b,y.prototype={constructor:y,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function U(n,U){return F.type="throw",F.arg=e,t.next=n,U&&(t.method="next",t.arg=void 0),!!U}for(var i=this.tryEntries.length-1;i>=0;--i){var l=this.tryEntries[i],F=l.completion;if("root"===l.tryLoc)return U("end");if(l.tryLoc<=this.prev){var a=n.call(l,"catchLoc"),r=n.call(l,"finallyLoc");if(a&&r){if(this.prev<l.catchLoc)return U(l.catchLoc,!0);if(this.prev<l.finallyLoc)return U(l.finallyLoc)}else if(a){if(this.prev<l.catchLoc)return U(l.catchLoc,!0)}else{if(!r)throw new Error("try statement without catch or finally");if(this.prev<l.finallyLoc)return U(l.finallyLoc)}}}},abrupt:function(e,t){for(var U=this.tryEntries.length-1;U>=0;--U){var i=this.tryEntries[U];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var l=i;break}}l&&("break"===e||"continue"===e)&&l.tryLoc<=t&&t<=l.finallyLoc&&(l=null);var F=l?l.completion:{};return F.type=e,F.arg=t,l?(this.method="next",this.next=l.finallyLoc,o):this.complete(F)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),o},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),o}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var U=n.completion;if("throw"===U.type){var i=U.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:b(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),o}},e}function ht(e){return(ht="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Vt(e,t,n,U,i,l,F){try{var a=e[l](F),r=a.value}catch(d){return void n(d)}a.done?t(r):Promise.resolve(r).then(U,i)}function Zt(e){return function(){var t=this,n=arguments;return new Promise((function(U,i){var l=e.apply(t,n);function F(e){Vt(l,U,i,F,a,"next",e)}function a(e){Vt(l,U,i,F,a,"throw",e)}F(void 0)}))}}function mt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function pt(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,Lt(U.key),U)}}function St(e,t,n){return t&&pt(e.prototype,t),n&&pt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Jt(e,t,n){return(t=Lt(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Wt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&bt(e,t)}function yt(e){return(yt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function bt(e,t){return(bt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function Et(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function kt(e,t,n){return(kt=Et()?Reflect.construct.bind():function(e,t,n){var U=[null];U.push.apply(U,t);var i=new(Function.bind.apply(e,U));return n&&bt(i,n.prototype),i}).apply(null,arguments)}function ft(e){var t="function"==typeof Map?new Map:void 0;return ft=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,U)}function U(){return kt(e,arguments,yt(this).constructor)}return U.prototype=Object.create(e.prototype,{constructor:{value:U,enumerable:!1,writable:!0,configurable:!0}}),bt(U,e)},ft(e)}function vt(e,t){if(null==e)return{};var n,U,i=function(e,t){if(null==e)return{};var n,U,i={},l=Object.keys(e);for(U=0;U<l.length;U++)n=l[U],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(U=0;U<l.length;U++)n=l[U],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Nt(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Tt(e){var t=Et();return function(){var n,U=yt(e);if(t){var i=yt(this).constructor;n=Reflect.construct(U,arguments,i)}else n=U.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return Nt(e)}(this,n)}}function Ct(){return Ct="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var U=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=yt(e)););return e}(e,t);if(U){var i=Object.getOwnPropertyDescriptor(U,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},Ct.apply(this,arguments)}function gt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,U=new Array(t);n<t;n++)U[n]=e[n];return U}function Xt(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return gt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?gt(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var U=0,i=function(){};return{s:i,n:function(){return U>=e.length?{done:!0}:{done:!1,value:e[U++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,F=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return F=e.done,e},e:function(e){a=!0,l=e},f:function(){try{F||null==n.return||n.return()}finally{if(a)throw l}}}}function Lt(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function Gt(){var e,t,n=new Promise((function(n,U){e=n,t=U}));return n.used=!1,n.resolve=function(){return n.used=!0,e.apply(void 0,arguments)},n.reject=function(){return n.used=!0,t.apply(void 0,arguments)},n}function xt(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}}H(ot,"pcdn_tracker_request_cnt",0),H(ot,"pcdn_tracker_success_cnt",0);var It,Dt=function(){function e(){mt(this,e)}return St(e,null,[{key:"start",value:function(e){return e&&e.length?1===e.length&&e.end(0)-e.start(0)<1e-6||1===e.length&&e.start(0)<0?0:e.start(0):0}},{key:"end",value:function(e){return e&&e.length?1===e.length&&e.end(0)-e.start(0)<1e-6?0:e.end(e.length-1):0}},{key:"get",value:function(e){if(e)try{return e.buffered}catch(t){}}},{key:"buffers",value:function(e,t){if(!e||!e.length)return[];for(var n=[],U=0,i=e.length;U<i;U++){var l=n.length;if(l&&t){var F=n[l-1],a=F[1];if(e.start(U)-a<=t){var r=e.end(U);r>a&&(F[1]=r)}else n.push([e.start(U),e.end(U)])}else n.push([e.start(U),e.end(U)])}return n}},{key:"totalLength",value:function(e){return e&&e.length?e.reduce((function(e,t){return e+(t[1]-t[0])}),0):0}},{key:"info",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,U=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(!t||!t.length)return{start:0,end:0,buffers:[]};for(var i=0,l=0,F=0,a=0,r=0,d=0,Q=0,o=e.buffers(t,U),s=0,c=o.length;s<c;s++){var R=o[s];if(n+U>=R[0]&&n<=R[1])i=R[0],l=R[1],F=s;else{if(n+U<R[0]){a=R[0],r=R[1];break}n+U>R[1]&&(d=R[0],Q=R[1])}}return{start:i,end:l,index:F,buffers:o,nextStart:a,nextEnd:r,prevStart:d,prevEnd:Q,currentTime:n,behind:n-i,remaining:l?l-n:0,length:e.totalLength&&e.totalLength(o)}}}]),e}(),Yt={MANIFEST:"manifest",NETWORK:"network",NETWORK_TIMEOUT:"network_timeout",NETWORK_FORBIDDEN:"network_forbidden",NETWORK_NOTFOUND:"network_notfound",NETWROK_RANGE_NOT_SATISFIABLE:"network_range_not_satisfiable",DEMUX:"demux",REMUX:"remux",MEDIA:"media",DRM:"drm",OTHER:"other",RUNTIME:"runtime",SUB_TYPES:{FLV:"FLV",HLS:"HLS",MP4:"MP4",FMP4:"FMP4",MSE_ADD_SB:"MSE_ADD_SB",MSE_APPEND_BUFFER:"MSE_APPEND_BUFFER",MSE_OTHER:"MSE_OTHER",MSE_FULL:"MSE_FULL",OPTION:"OPTION",DASH:"DASH",LICENSE:"LICENSE",CUSTOM_LICENSE:"CUSTOM_LICENSE",MSE_HIJACK:"MSE_HIJACK",EME_HIJACK:"EME_HIJACK",SIDX:"SIDX",NO_CANPLAY_ERROR:"NO_CANPLAY_ERROR",BUFFERBREAK_ERROR:"BUFFERBREAK_ERROR",WAITING_TIMEOUT_ERROR:"WAITING_TIMEOUT_ERROR",MEDIA_ERR_ABORTED:"MEDIA_ERR_ABORTED",MEDIA_ERR_NETWORK:"MEDIA_ERR_NETWORK",MEDIA_ERR_DECODE:"MEDIA_ERR_DECODE",MEDIA_ERR_SRC_NOT_SUPPORTED:"MEDIA_ERR_SRC_NOT_SUPPORTED",MEDIA_ERR_CODEC_NOT_SUPPORTED:"MEDIA_ERR_CODEC_NOT_SUPPORTED",MEDIA_ERR_URL_EMPTY:"MEDIA_ERR_URL_EMPTY"}},Mt=(Jt(It={},Yt.MANIFEST,{HLS:1100,DASH:1200}),Jt(It,Yt.NETWORK,2100),Jt(It,Yt.NETWORK_TIMEOUT,2101),Jt(It,Yt.NETWORK_FORBIDDEN,2103),Jt(It,Yt.NETWORK_NOTFOUND,2104),Jt(It,Yt.NETWROK_RANGE_NOT_SATISFIABLE,2116),Jt(It,Yt.DEMUX,{FLV:3100,HLS:3200,MP4:3300,FMP4:3400,SIDX:3410}),Jt(It,Yt.REMUX,{FMP4:4100,MP4:4200}),Jt(It,Yt.MEDIA,{MEDIA_ERR_ABORTED:5101,MEDIA_ERR_NETWORK:5102,MEDIA_ERR_DECODE:5103,MEDIA_ERR_SRC_NOT_SUPPORTED:5104,MEDIA_ERR_CODEC_NOT_SUPPORTED:5105,MEDIA_ERR_URL_EMPTY:5106,MSE_ADD_SB:5200,MSE_APPEND_BUFFER:5201,MSE_OTHER:5202,MSE_FULL:5203,MSE_HIJACK:5204,EME_HIJACK:5301}),Jt(It,Yt.DRM,{LICENSE:7100,CUSTOM_LICENSE:7200}),Jt(It,Yt.OTHER,8e3),Jt(It,Yt.RUNTIME,{NO_CANPLAY_ERROR:9001,BUFFERBREAK_ERROR:9002,WAITING_TIMEOUT_ERROR:9003}),It),Kt=function(e){Wt(n,e);var t=Tt(n);function n(e,U,i,l,F){var a;return mt(this,n),(a=t.call(this,F||(null==i?void 0:i.message))).errorType=e===Yt.NETWORK_TIMEOUT?Yt.NETWORK:e,a.originError=i,a.ext=l,a.errorCode=Mt[e][U]||Mt[e],a.errorMessage=a.message,a.errorCode||(a.errorType=Yt.OTHER,a.errorCode=Mt[a.errorType]),a}return St(n,null,[{key:"create",value:function(e,t,U,i,l){return e instanceof n?e:(e instanceof Error&&(U=e,e=""),e||(e=Yt.OTHER),new n(e,t,U,i,l))}},{key:"network",value:function(e){var t;return new n(null!=e&&e.isTimeout?Yt.NETWORK_TIMEOUT:Yt.NETWORK,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==e||null===(t=e.response)||void 0===t?void 0:t.status})}}]),n}(ft(Error)),wt="undefined"!=typeof window,Ht={DEBUG:1,LOG:2,WARN:3,ERROR:4},Pt=["Boolean","Number","String","Undefined","Null","Date","Object"],jt=function(){function e(t,n){mt(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),this.logCacheLevel=(null==n?void 0:n.logCacheLevel)||3,this.logMaxSize=(null==n?void 0:n.logMaxSize)||204800,this.logSize=0,this.logTextArray=[]}return St(e,[{key:"debug",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[Ht.DEBUG].concat(U)),e.disabled||(t=console).debug.apply(t,[this._prefix,zt()].concat(U))}},{key:"log",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[Ht.LOG].concat(U)),e.disabled||(t=console).log.apply(t,[this._prefix,zt()].concat(U))}},{key:"warn",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[Ht.WARN].concat(U)),e.disabled||(t=console).warn.apply(t,[this._prefix,zt()].concat(U))}},{key:"error",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[Ht.ERROR].concat(U)),e.disabled||(t=console).error.apply(t,[this._prefix,zt()].concat(U))}},{key:"logCache",value:function(e){if(!(e<this.logCacheLevel)){var t="";try{for(var n=arguments.length,U=new Array(n>1?n-1:0),i=1;i<n;i++)U[i-1]=arguments[i];var l=U.map((function(e){return _t(e)}));t=this._prefix+zt()+JSON.stringify(l)}catch(a){return}if(e>=this.logCacheLevel&&(this.logSize+=t.length,this.logTextArray.push(t)),this.logSize>this.logMaxSize){var F=this.logTextArray.shift();this.logSize-=F.length}}}},{key:"getLogCache",value:function(){var e=this.logTextArray.join("\n");return this.reset(),e}},{key:"reset",value:function(){this.logTextArray=[],this.logSize=0}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}},{key:"setLogLevel",value:function(e){this.logCacheLevel=e}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();function zt(){return(new Date).toLocaleString()}function Ot(e){if("object"!==ht(e))return e;var t=Object.prototype.toString.call(e).slice(8,-1);switch(t){case"Array":case"Uint8Array":case"ArrayBuffer":return t+"["+e.length+"]";case"Object":return"{}";default:return t}}function _t(e,t,n){n||(n=1),t||(t=2);var U={};if(!e||"object"!==ht(e))return e;var i=Object.prototype.toString.call(e).slice(8,-1);if(!Pt.includes(i))return i;if(!(n>t)){for(var l in e)Object.prototype.hasOwnProperty.call(e,l)&&(n===t?U[l]=Ot(e[l]):"object"===ht(e[l])?U[l]=_t(e[l],t,n+1):U[l]=e[l]);return U}}Jt(jt,"disabled",!0);var At=function(){try{return wt?window.MediaSource:null}catch(e){}}(),qt="appendBuffer",$t="removeBuffer",en="updateDuration",tn=function(){function e(t,n){var U=this;mt(this,e),Jt(this,"media",null),Jt(this,"mediaSource",null),Jt(this,"_openPromise",Gt()),Jt(this,"_queue",Object.create(null)),Jt(this,"_sourceBuffer",Object.create(null)),Jt(this,"_mseFullFlag",{}),Jt(this,"_st",0),Jt(this,"_opst",0),Jt(this,"_logger",null),Jt(this,"_config",null),Jt(this,"_url",null),Jt(this,"_onSBUpdateEnd",(function(e){var t=U._queue[e];if(t){var n=t[0];if((null==n?void 0:n.opName)!==en&&t.shift(),n){var i=xt()-U._opst;U._logger.debug("UpdateEnd",n.opName,i,n.context),n.promise.resolve({name:n.opName,context:n.context,costtime:i}),U._startQueue(e)}}})),Jt(this,"_onSBUpdateError",(function(e,t){var n=U._queue[e];if(n){var i=n[0];i&&(U._logger.error("UpdateError",e,i.opName,i.context),i.promise.reject(new Kt(Yt.MEDIA,Yt.SUB_TYPES.MSE_APPEND_BUFFER,t)))}})),this._config=Object.assign(e.getDefaultConfig(),n),t&&this.bindMedia(t),this._logger=new jt("MSE"),this._config.openLog&&jt.enable()}var t,n,U;return St(e,[{key:"isOpened",get:function(){var e;return"open"===(null===(e=this.mediaSource)||void 0===e?void 0:e.readyState)}},{key:"url",get:function(){return this._url}},{key:"duration",get:function(){var e;return(null===(e=this.mediaSource)||void 0===e?void 0:e.duration)||-1}},{key:"isEnded",get:function(){return!!this.mediaSource&&"ended"===this.mediaSource.readyState}},{key:"isFull",value:function(t){return t?this._mseFullFlag[t]:this._mseFullFlag[e.VIDEO]}},{key:"updateDuration",value:function(e){var t=this,n=this.mediaSource&&this.mediaSource.duration>e;if(this.mediaSource&&this.mediaSource.duration>e){var U=0;if(Object.keys(this._sourceBuffer).forEach((function(e){try{U=Math.max(t.bufferEnd(e)||0,U)}catch(n){}})),e<U)return Promise.resolve()}return this._enqueueBlockingOp((function(){t.isEnded?t._logger.debug("[debug mse] setDuration ended"):t.mediaSource&&(t.mediaSource.duration=e,t._logger.debug("[debug mse] setDuration"))}),en,{isReduceDuration:n})}},{key:"open",value:function(){var e=this;if(this._openPromise.used&&!this.isOpened&&this.mediaSource){var t=this.mediaSource;t.addEventListener("sourceopen",(function n(){var U=xt()-e._st;e._logger.debug("MSE OPEN",U),t.removeEventListener("sourceopen",n),e._openPromise.resolve({costtime:U})})),this._openPromise=Gt()}return this._openPromise}},{key:"bindMedia",value:(U=Zt(ut().mark((function e(t){var n,U,i=this;return ut().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.mediaSource&&!this.media){e.next=3;break}return e.next=3,this.unbindMedia();case 3:if(t&&At){e.next=5;break}throw new Error("Param media or MediaSource does not exist");case 5:return this.media=t,n=this.mediaSource=new At,this._st=xt(),U=function e(){var U=xt()-i._st;i._logger.debug("MSE OPEN"),n.removeEventListener("sourceopen",e),URL.revokeObjectURL(t.src),i._openPromise.resolve({costtime:U})},n.addEventListener("sourceopen",U),this._url=URL.createObjectURL(n),t.src=this._url,e.abrupt("return",this._openPromise);case 13:case"end":return e.stop()}}),e,this)}))),function(e){return U.apply(this,arguments)})},{key:"unbindMedia",value:(n=Zt(ut().mark((function e(){var t,n,U,i=this;return ut().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._openPromise.used||this._openPromise.resolve(),t=this.mediaSource){if(Object.keys(this._queue).forEach((function(e){var t=i._queue[e];t&&t.forEach((function(e){var t,n;return null===(t=e.promise)||void 0===t||null===(n=t.resolve)||void 0===n?void 0:n.call(t)}))})),n=!!this.media&&this.media.readyState>=1,U="open"===t.readyState,n&&U)try{t.endOfStream()}catch(l){}Object.keys(this._sourceBuffer).forEach((function(e){try{t.removeSourceBuffer(i._sourceBuffer[e])}catch(l){}}))}if(this.media){this.media.removeAttribute("src");try{this.media.load()}catch(l){}this.media=null}this.mediaSource=null,this._openPromise=Gt(),this._queue=Object.create(null),this._sourceBuffer=Object.create(null);case 8:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"createSource",value:function(e,t){if(!this._sourceBuffer[e]&&this.mediaSource){var n;try{n=this._sourceBuffer[e]=this.mediaSource.addSourceBuffer(t)}catch(U){throw new Kt(Yt.MEDIA,Yt.SUB_TYPES.MSE_ADD_SB,U)}n.mimeType=t,n.addEventListener("updateend",this._onSBUpdateEnd.bind(this,e)),n.addEventListener("error",this._onSBUpdateError.bind(this,e))}}},{key:"changeType",value:function(e,t){var n=this,U=this._sourceBuffer[e];return this.mediaSource&&U&&U.mimeType!==t?"function"!=typeof U.changeType?Promise.reject():this._enqueueOp(e,(function(){U.changeType(t),U.mimeType=t,n._onSBUpdateEnd(e)}),"changeType",{mimeType:t}):Promise.resolve()}},{key:"createOrChangeSource",value:function(e,t){return this.createSource(e,t),this.changeType(e,t)}},{key:"append",value:function(e,t,n){var U=this;return t&&t.byteLength&&this._sourceBuffer[e]?this._enqueueOp(e,(function(){var i;U.mediaSource&&!U.media.error&&(U._logger.debug("MSE APPEND START",n),U._opst=xt(),null===(i=U._sourceBuffer[e])||void 0===i||i.appendBuffer(t))}),qt,n):Promise.resolve()}},{key:"remove",value:function(e,t,n,U){var i=this,l=!1;return this._mseFullFlag[e]&&(l=!0),this._enqueueOp(e,(function(){if(i.mediaSource&&!i.media.error){var l=i._sourceBuffer[e];t>=n||!l?i._onSBUpdateEnd(e):(i._opst=xt(),i._logger.debug("MSE REMOVE START",e,t,n,U),l.remove(t,n))}}),$t,U,l)}},{key:"clearBuffer",value:function(e,t){var n,U=this;return Object.keys(this._sourceBuffer).forEach((function(i){n=U._enqueueOp(i,(function(){if(U.mediaSource&&!U.media.error){var n=U._sourceBuffer[i];U._logger.debug("MSE clearBuffer START",i,e,t),n.remove(e,t)}}),$t)})),n||Promise.resolve()}},{key:"clearAllBuffer",value:function(){var e,t=this;return Object.keys(this._sourceBuffer).forEach((function(n){e=t._enqueueOp(n,(function(){if(t.mediaSource&&!t.media.error){var e=t._sourceBuffer[n];t._logger.debug("MSE clearAllBuffer START",n),e.remove(0,Dt.end(Dt.get(e)))}}))})),e}},{key:"clearOpQueues",value:function(e,t){var n;this._logger.debug("MSE clearOpQueue START");var U=this._queue[e];if(t&&U)this._queue[e]=[];else if(U&&U[e]&&!(U.length<5)){var i=[];U.forEach((function(e){e.context&&e.context.isinit&&i.push(e)})),this._queue[e]=U.slice(0,2),i.length>0&&(n=this._queue[e]).push.apply(n,i)}}},{key:"endOfStream",value:function(e){var t=this;return this.mediaSource&&"open"===this.mediaSource.readyState?this._enqueueBlockingOp((function(){var n=t.mediaSource;n&&"open"===n.readyState&&(t._logger.debug("MSE endOfStream START"),e?n.endOfStream(e):n.endOfStream())}),"endOfStream"):Promise.resolve()}},{key:"setLiveSeekableRange",value:function(e,t){var n=this.mediaSource;e<0||t<e||null==n||!n.setLiveSeekableRange||"open"!==n.readyState||n.setLiveSeekableRange(e,t)}},{key:"getSourceBuffer",value:function(e){return this._sourceBuffer[e]}},{key:"buffered",value:function(e){return Dt.get(this._sourceBuffer[e])}},{key:"bufferStart",value:function(e){return Dt.start(this.buffered(e))}},{key:"bufferEnd",value:function(e){return Dt.end(this.buffered(e))}},{key:"_enqueueOp",value:function(e,t,n,U,i){var l=this;if(!this.mediaSource)return Promise.resolve();var F=this._queue[e]=this._queue[e]||[],a={exec:t,promise:Gt(),opName:n,context:U};return i?(F.splice(0,0,a),this._mseFullFlag[e]=!1,this._startQueue(e)):F.push(a),this.isOpened||this.isEnded?1===F.length&&this._startQueue(e):this._openPromise.then((function(){1===F.length&&l._startQueue(e)})),a.promise}},{key:"_enqueueBlockingOp",value:(t=Zt(ut().mark((function e(t,n,U){var i,l,F=this;return ut().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.mediaSource){e.next=2;break}return e.abrupt("return",Promise.resolve());case 2:if((i=Object.keys(this._sourceBuffer)).length){e.next=5;break}return e.abrupt("return",t());case 5:return l=[],i.forEach((function(e){var t=F._queue[e],i=Gt();l.push(i),t.push({exec:function(){i.resolve()},promise:i,opName:n,context:U}),1===t.length&&F._startQueue(e)})),e.abrupt("return",Promise.all(l).then((function(){try{return t()}finally{i.forEach((function(e){var t=F._queue[e],n=F._sourceBuffer[e];null==t||t.shift(),n&&n.updating||F._startQueue(e)}))}})));case 8:case"end":return e.stop()}}),e,this)}))),function(e,n,U){return t.apply(this,arguments)})},{key:"_startQueue",value:function(e){var t=this._queue[e];if(t){var n=t[0];if(n&&!this._mseFullFlag[e])try{n.exec()}catch(U){U&&U.message&&U.message.indexOf("SourceBuffer is full")>=0?(this._mseFullFlag[e]=!0,this._logger.error("[MSE error], context,",n.context," ,name,",n.opName,",err,SourceBuffer is full"),n.promise.reject(new Kt(Yt.MEDIA,Yt.SUB_TYPES.MSE_FULL,U))):(this._logger.error(U),n.promise.reject(new Kt(Yt.MEDIA,Yt.SUB_TYPES.MSE_OTHER,U)),t.shift(),this._startQueue(e))}}}},{key:"setTimeoffset",value:function(e,t,n){var U=this;return this._enqueueOp(e,(function(){t<0&&(t+=.001),U._sourceBuffer[e].timestampOffset=t,U._onSBUpdateEnd(e)}),"setTimeoffset",n)}},{key:"abort",value:function(e,t){var n=this;return this.isOpened?this._enqueueOp(e,(function(){n._sourceBuffer[e].abort(),n._onSBUpdateEnd(e)}),"abort",t):Promise.resolve()}}],[{key:"getDefaultConfig",value:function(){return{openLog:!1}}},{key:"isSupported",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'video/mp4; codecs="avc1.42E01E,mp4a.40.2"';if(!At)return!1;try{return At.isTypeSupported(e)}catch(t){return this._logger.error(e,t),!1}}}]),e}();Jt(tn,"VIDEO","video"),Jt(tn,"AUDIO","audio");var nn="fetch",Un="xhr",ln="arraybuffer",Fn="text",an="json",rn=function(e){Wt(n,e);var t=Tt(n);function n(e,U,i,l){var F;return mt(this,n),Jt(Nt(F=t.call(this,l)),"retryCount",0),Jt(Nt(F),"isTimeout",!1),Jt(Nt(F),"loaderType",nn),Jt(Nt(F),"startTime",0),Jt(Nt(F),"endTime",0),Jt(Nt(F),"options",{}),F.url=e,F.request=U,F.response=i,F}return St(n)}(ft(Error)),dn=Object.prototype.toString;function Qn(e){if("[object Object]"!==dn.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function on(e){if(e&&null!==e[0]&&void 0!==e[0]&&(0!==e[0]||null!==e[1]&&void 0!==e[1])){var t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}}function sn(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function cn(e,t){if(e){if(!t)return e;var n,U=Object.keys(t).map((function(e){if(null!=(n=t[e]))return Array.isArray(n)?e+="[]":n=[n],n.map((function(t){var n;return n=t,"[object Date]"===dn.call(n)?t=t.toISOString():function(e){return null!==e&&"object"===ht(e)}(t)&&(t=JSON.stringify(t)),"".concat(sn(e),"=").concat(sn(t))})).join("&")})).filter(Boolean).join("&");if(U){var i=e.indexOf("#");-1!==i&&(e=e.slice(0,i)),e+=(-1===e.indexOf("?")?"?":"&")+U}return e}}function Rn(e,t,n,U,i,l,F,a,r,d,Q){return i=null!=i?parseFloat(i):null,U=parseInt(U||"0",10),Number.isNaN(U)&&(U=0),{data:e,done:t,options:{range:r,vid:d,index:a,contentLength:U,age:i,startTime:l,firstByteTime:F,endTime:Date.now(),priOptions:Q},response:n}}function Bn(e,t){return Math.round(8*e*1e3/t/1024)}var un="real_time_speed",hn=2097152,Vn=function(e){Wt(U,e);var t,n=Tt(U);function U(){var e;return mt(this,U),Jt(Nt(e=n.call(this)),"_abortController",null),Jt(Nt(e),"_timeoutTimer",null),Jt(Nt(e),"_reader",null),Jt(Nt(e),"_response",null),Jt(Nt(e),"_aborted",!1),Jt(Nt(e),"_index",-1),Jt(Nt(e),"_range",null),Jt(Nt(e),"_receivedLength",0),Jt(Nt(e),"_running",!1),Jt(Nt(e),"_logger",null),Jt(Nt(e),"_vid",""),Jt(Nt(e),"_onProcessMinLen",0),Jt(Nt(e),"_onCancel",null),Jt(Nt(e),"_priOptions",null),e}return St(U,[{key:"load",value:function(e){var t,n=this,U=e.url,i=e.vid,l=e.timeout,F=e.responseType,a=e.onProgress,r=e.index,d=e.onTimeout,Q=e.onCancel,o=e.range,s=e.transformResponse,c=e.request,R=e.params,B=e.logger,u=e.method,h=e.headers,V=e.body,Z=e.mode,m=e.credentials,p=e.cache,S=e.redirect,J=e.referrer,W=e.referrerPolicy,y=e.onProcessMinLen,b=e.priOptions;this._logger=B,this._aborted=!1,this._onProcessMinLen=y,this._onCancel=Q,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=r,this._range=o||[0,0],this._vid=i||U,this._priOptions=b||{};var E={method:u,headers:h,body:V,mode:Z,credentials:m,cache:p,redirect:S,referrer:J,referrerPolicy:W,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal},k=!1;clearTimeout(this._timeoutTimer),U=cn(U,R);var f=on(o);f&&(h=c?c.headers:E.headers=E.headers||(Headers?new Headers:{}),Headers&&h instanceof Headers?h.append("Range",f):h.Range=f),l&&(this._timeoutTimer=setTimeout((function(){if(k=!0,n.cancel(),d){var e=new rn(U,E,null,"timeout");e.isTimeout=!0,d(e,{index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions})}}),l));var v=Date.now();return this._logger.debug("[fetch load start], index,",r,",range,",o),new Promise((function(e,t){fetch(c||U,c?void 0:E).then(function(){var i=Zt(ut().mark((function i(l){var d,Q,c,R;return ut().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(clearTimeout(n._timeoutTimer),n._response=l,!n._aborted&&n._running){i.next=4;break}return i.abrupt("return");case 4:if(s&&(l=s(l,U)||l),l.ok){i.next=7;break}throw new rn(U,E,l,"bad network response");case 7:if(d=Date.now(),F!==Fn){i.next=15;break}return i.next=11,l.text();case 11:Q=i.sent,n._running=!1,i.next=37;break;case 15:if(F!==an){i.next=22;break}return i.next=18,l.json();case 18:Q=i.sent,n._running=!1,i.next=37;break;case 22:if(!a){i.next=29;break}return n.resolve=e,n.reject=t,n._loadChunk(l,a,v,d),i.abrupt("return");case 29:return i.next=31,l.arrayBuffer();case 31:Q=i.sent,Q=new Uint8Array(Q),n._running=!1,c=Date.now()-v,R=Bn(Q.byteLength,c),n.emit(un,{speed:R,len:Q.byteLength,time:c,vid:n._vid,index:n._index,range:n._range,priOptions:n._priOptions});case 37:n._logger.debug("[fetch load end], index,",r,",range,",o),e(Rn(Q,!0,l,l.headers.get("Content-Length"),l.headers.get("age"),v,d,r,o,n._vid,n._priOptions));case 39:case"end":return i.stop()}}),i)})));return function(e){return i.apply(this,arguments)}}()).catch((function(e){var i;clearTimeout(n._timeoutTimer),n._running=!1,n._aborted&&!k||((e=e instanceof rn?e:new rn(U,E,null,null===(i=e)||void 0===i?void 0:i.message)).startTime=v,e.endTime=Date.now(),e.isTimeout=k,e.options={index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions},t(e))}))}))}},{key:"cancel",value:(t=Zt(ut().mark((function e(){return ut().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._aborted){e.next=2;break}return e.abrupt("return");case 2:if(this._aborted=!0,this._running=!1,!this._response){e.next=14;break}if(e.prev=5,!this._reader){e.next=9;break}return e.next=9,this._reader.cancel();case 9:e.next=13;break;case 11:e.prev=11,e.t0=e.catch(5);case 13:this._response=this._reader=null;case 14:if(this._abortController){try{this._abortController.abort()}catch(t){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions});case 16:case"end":return e.stop()}}),e,this,[[5,11]])}))),function(){return t.apply(this,arguments)})},{key:"_loadChunk",value:function(e,t,n,U){var i=this;if(!e.body||!e.body.getReader){this._running=!1;var l=new rn(e.url,"",e,"onProgress of bad response.body.getReader");return l.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(l)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(hn),this._writeIdx=0);var F,a,r,d=this._reader=e.body.getReader(),Q=function(){var l=Zt(ut().mark((function l(){var o,s,c,R,B,u,h,V;return ut().wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return a=Date.now(),l.prev=1,l.next=4,d.read();case 4:F=l.sent,r=Date.now(),l.next=13;break;case 8:return l.prev=8,l.t0=l.catch(1),r=Date.now(),i._aborted||(i._running=!1,l.t0.options={index:i._index,range:i._range,vid:i._vid,priOptions:i._priOptions},i.reject(l.t0)),l.abrupt("return");case 13:if(s=(null===(o=i._range)||void 0===o?void 0:o.length)>0?i._range[0]:0,c=s+i._receivedLength,!i._aborted){l.next=19;break}return i._running=!1,t(void 0,!1,{range:[c,c],vid:i._vid,index:i._index,startTime:a,endTime:r,st:n,firstByteTime:U,priOptions:i._priOptions},e),l.abrupt("return");case 19:R=F.value?F.value.byteLength:0,i._receivedLength+=R,i._logger.debug("【fetchLoader,onProgress call】,task,",i._range,", start,",c,", end,",s+i._receivedLength,", done,",F.done),i._onProcessMinLen>0?i._writeIdx+R>=i._onProcessMinLen||F.done?((B=new Uint8Array(i._writeIdx+R)).set(i._cache.slice(0,i._writeIdx),0),R>0&&B.set(F.value,i._writeIdx),i._writeIdx=0,i._logger.debug("【fetchLoader,onProgress enough】,done,",F.done,",len,",B.byteLength,", writeIdx,",i._writeIdx)):R>0&&i._writeIdx+R<hn?(i._cache.set(F.value,i._writeIdx),i._writeIdx+=R,i._logger.debug("【fetchLoader,onProgress cache】,len,",R,", writeIdx,",i._writeIdx)):R>0&&(u=new Uint8Array(i._writeIdx+R+2048),i._logger.debug("【fetchLoader,onProgress extra start】,size,",i._writeIdx+R+2048,", datalen,",R,", writeIdx,",i._writeIdx),u.set(i._cache.slice(0,i._writeIdx),0),R>0&&u.set(F.value,i._writeIdx),i._writeIdx+=R,delete i._cache,i._cache=u,i._logger.debug("【fetchLoader,onProgress extra end】,len,",R,", writeIdx,",i._writeIdx)):B=F.value,(B&&B.byteLength>0||F.done)&&t(B,F.done,{range:[i._range[0]+i._receivedLength-(B?B.byteLength:0),i._range[0]+i._receivedLength],vid:i._vid,index:i._index,startTime:a,endTime:r,st:n,firstByteTime:U,priOptions:i._priOptions},e),F.done?(h=Date.now()-n,V=Bn(i._receivedLength,h),i.emit(un,{speed:V,len:i._receivedLength,time:h,vid:i._vid,index:i._index,range:i._range,priOptions:i._priOptions}),i._running=!1,i._logger.debug("[fetchLoader onProgress end],task,",i._range,",done,",F.done),i.resolve(Rn(F,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),n,U,i._index,i._range,i._vid,i._priOptions))):Q();case 25:case"end":return l.stop()}}),l,null,[[1,8]])})));return function(){return l.apply(this,arguments)}}();Q()}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}}],[{key:"isSupported",value:function(){return!("undefined"==typeof fetch)}}]),U}(tt);var Zn=function(e){Wt(n,e);var t=Tt(n);function n(){var e;return mt(this,n),Jt(Nt(e=t.call(this)),"_xhr",null),Jt(Nt(e),"_aborted",!1),Jt(Nt(e),"_timeoutTimer",null),Jt(Nt(e),"_range",null),Jt(Nt(e),"_receivedLength",0),Jt(Nt(e),"_url",null),Jt(Nt(e),"_onProgress",null),Jt(Nt(e),"_index",-1),Jt(Nt(e),"_headers",null),Jt(Nt(e),"_currentChunkSizeKB",384),Jt(Nt(e),"_timeout",null),Jt(Nt(e),"_xhr",null),Jt(Nt(e),"_withCredentials",null),Jt(Nt(e),"_startTime",-1),Jt(Nt(e),"_loadCompleteResolve",null),Jt(Nt(e),"_loadCompleteReject",null),Jt(Nt(e),"_runing",!1),Jt(Nt(e),"_logger",!1),Jt(Nt(e),"_vid",""),Jt(Nt(e),"_responseType",void 0),Jt(Nt(e),"_credentials",void 0),Jt(Nt(e),"_method",void 0),Jt(Nt(e),"_transformResponse",void 0),Jt(Nt(e),"_firstRtt",void 0),Jt(Nt(e),"_onCancel",null),Jt(Nt(e),"_priOptions",null),e}return St(n,[{key:"load",value:function(e){var t=this;clearTimeout(this._timeoutTimer),this._logger=e.logger,this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this._logger.debug("【xhrLoader task】, range",this._range),this._url=cn(e.url,e.params);var n=Date.now();return new Promise((function(e,n){t._loadCompleteResolve=e,t._loadCompleteReject=n,t._startLoad()})).catch((function(e){if(clearTimeout(t._timeoutTimer),t._runing=!1,!t._aborted)throw(e=e instanceof rn?e:new rn(t._url,t._request)).startTime=n,e.endTime=Date.now(),e.options={index:t._index,vid:t._vid,priOptions:t._priOptions},e}))}},{key:"_startLoad",value:function(){var e=null;if(this._responseType===ln&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;var t=1024*this._currentChunkSizeKB,n=this._range[0]+this._receivedLength,U=this._range[1];t<this._range[1]-n&&(U=n+t),e=[n,U],this._logger.debug("[xhr_loader->],tast :",this._range,", SubRange, ",e)}else e=this._range,this._logger.debug("[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}},{key:"_internalOpen",value:function(e){var t=this;try{this._startTime=Date.now();var n=this._xhr=new XMLHttpRequest;n.open(this._method||"GET",this._url,!0),n.responseType=this._responseType,this._timeout&&(n.timeout=this._timeout),n.withCredentials=this._withCredentials,n.onload=this._onLoad.bind(this),n.onreadystatechange=this._onReadyStatechange.bind(this),n.onerror=function(e){var n,U,i;t._running=!1;var l=new rn(t._url,t._request,null==e||null===(n=e.currentTarget)||void 0===n?void 0:n.response,"xhr.onerror.status:"+(null==e||null===(U=e.currentTarget)||void 0===U?void 0:U.status)+",statusText,"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.statusText));l.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(l)},n.ontimeout=function(e){t.cancel();var n=new rn(t._url,t._request,{status:408},"timeout");t._onTimeout&&(n.isTimeout=!0,t._onTimeout(n,{index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions})),n.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(n)};var U=this._headers||{},i=on(e);i&&(U.Range=i),U&&Object.keys(U).forEach((function(e){n.setRequestHeader(e,U[e])})),this._logger.debug("[xhr.send->] tast,",this._range,",load sub range, ",e),n.send(this._body)}catch(l){l.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(l)}}},{key:"_onReadyStatechange",value:function(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}},{key:"_onLoad",value:function(e){var t,n=e.target.status;if(n<200||n>299){var U=new rn(this._url,null,Bt(Bt({},e.target.response),{},{status:n}),"bad response,status:"+n);return U.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(U)}var i,l=null,F=!1,a=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===ln){var r,d=new Uint8Array(e.target.response);if(i=a+this._receivedLength,d&&d.byteLength>0){this._receivedLength+=d.byteLength;var Q=Date.now()-this._startTime,o=Bn(this._receivedLength,Q);this.emit(un,{speed:o,len:this._receivedLength,time:Q,vid:this._vid,index:this._index,range:[i,a+this._receivedLength],priOptions:this._priOptions})}l=d,F=!((null===(r=this._range)||void 0===r?void 0:r.length)>1&&this._range[1]&&this._receivedLength<this._range[1]-this._range[0]),this._logger.debug("[xhr load done->], tast :",this._range,", start",i,"end ",a+this._receivedLength,",dataLen,",d?d.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",F)}else F=!0,l=e.target.response;var s={ok:n>=200&&n<300,status:n,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(s=this._transformResponse(s,this._url)||s),this._onProgress&&this._onProgress(l,F,{index:this._index,vid:this._vid,range:[i,a+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},s),F?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(Rn(this._onProgress?null:l,F,s,s.headers["content-length"],s.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}},{key:"cancel",value:function(){if(!this._aborted)return this._aborted=!0,this._runing=!1,Ct(yt(n.prototype),"removeAllListeners",this).call(this),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}},{key:"_getHeaders",value:function(e){var t,n={},U=Xt(e.getAllResponseHeaders().trim().split("\r\n"));try{for(U.s();!(t=U.n()).done;){var i=t.value.split(": ");n[i[0].toLowerCase()]=i.slice(1).join(": ")}}catch(l){U.e(l)}finally{U.f()}return n}}],[{key:"isSupported",value:function(){return"undefined"!=typeof XMLHttpRequest}}]),n}(tt),mn=["retry","retryDelay","onRetryError","transformError"],pn=function(){function e(t,n){mt(this,e),this.promise=Gt(),this.alive=!!n.onProgress,!n.logger&&(n.logger=new jt("Loader")),this._loaderType=t,this._loader=t===nn&&window.fetch?new Vn:new Zn,this._config=n,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=n.retryCheckFunc,this._logger=n.logger}var t;return St(e,[{key:"exec",value:function(){var e=this,t=this._config,n=t.retry,U=t.retryDelay,i=t.onRetryError,l=t.transformError,F=vt(t,mn),a=function(){var t=Zt(ut().mark((function t(){var r,d,Q;return ut().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,e._loader.load(F);case 3:r=t.sent,e.promise.resolve(r),t.next=27;break;case 7:if(t.prev=7,t.t0=t.catch(0),e._loader.running=!1,e._logger.debug("[task request catch err]",t.t0),!e._canceled){t.next=13;break}return t.abrupt("return");case 13:if(t.t0.loaderType=e._loaderType,t.t0.retryCount=e._retryCount,d=t.t0,l&&(d=l(d)||d),i&&e._retryCount>0&&i(d,e._retryCount,{index:F.index,vid:F.vid,range:F.range,priOptions:F.priOptions}),e._retryCount++,Q=!0,e._retryCheckFunc&&(Q=e._retryCheckFunc(t.t0)),!(Q&&e._retryCount<=n)){t.next=26;break}return clearTimeout(e._retryTimer),e._logger.debug("[task request setTimeout],retry",e._retryCount,",retry range,",F.range),e._retryTimer=setTimeout(a,U),t.abrupt("return");case 26:e.promise.reject(d);case 27:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(){return t.apply(this,arguments)}}();return a(),this.promise}},{key:"cancel",value:(t=Zt(ut().mark((function e(){return ut().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,e.abrupt("return",this._loader.cancel());case 4:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"running",get:function(){return this._loader&&this._loader.running}},{key:"loader",get:function(){return this._loader}}]),e}();function Sn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if((t=t.filter(Boolean)).length<2)return t[0];var U=new Uint8Array(t.reduce((function(e,t){return e+t.byteLength}),0)),i=0;return t.forEach((function(e){U.set(e,i),i+=e.byteLength})),U}function Jn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((function(t){return setTimeout(t,e)}))}var Wn=function(e){Wt(U,e);var t,n=Tt(U);function U(e){var t;return mt(this,U),Jt(Nt(t=n.call(this,e)),"type",nn),Jt(Nt(t),"_queue",[]),Jt(Nt(t),"_alive",[]),Jt(Nt(t),"_currentTask",null),Jt(Nt(t),"_config",void 0),t._config=function(e){return Bt({loaderType:nn,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:Fn,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0},e)}(e),t._config.loaderType!==Un&&Vn.isSupported()||(t.type=Un),t.log=e.logger,t}return St(U,[{key:"isFetch",value:function(){return this.type===nn}},{key:"load",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?n=e:n.url=e||n.url||this._config.url,(n=Object.assign({},this._config,n)).params&&(n.params=Object.assign({},n.params)),n.headers&&Qn(n.headers)&&(n.headers=Object.assign({},n.headers)),n.body&&Qn(n.body)&&(n.body=Object.assign({},n.body)),n.transformRequest&&(n=n.transformRequest(n)||n),n.logger=this.log;var U=new pn(this.type,n);return U.loader.on(un,(function(e){t.emit(un,e)})),this._queue.push(U),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),U.promise}},{key:"cancel",value:(t=Zt(ut().mark((function e(){var t;return ut().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._queue.map((function(e){return e.cancel()})).concat(this._alive.map((function(e){return e.cancel()}))),this._currentTask&&t.push(this._currentTask.cancel()),this._queue=[],this._alive=[],e.next=6,Promise.all(t);case 6:return e.next=8,Jn();case 8:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"_processTask",value:function(){var e=this;if(this._currentTask=this._queue.shift(),this._currentTask){this._currentTask.alive&&this._alive.push(this._currentTask);var t=this._currentTask.exec().catch((function(e){}));t&&"function"==typeof t.finally&&t.finally((function(){var t,n;null!==(t=e._currentTask)&&void 0!==t&&t.alive&&(null===(n=e._alive)||void 0===n?void 0:n.length)>0&&(e._alive=e._alive.filter((function(t){return t&&t!==e._currentTask}))),e._processTask()}))}}}],[{key:"isFetchSupport",value:function(){return Vn.isSupported()}}]),U}(tt),yn={MEDIA_EXPIRED:"MEDIA_EXPIRED",INIT_FAIL:"INIT_FAIL",PARSE_ERROR:"PARSE_ERROR",PLAYER_LOG:"PLAYER_LOG",BUFFERED_RESET:"BUFFERED_RESET"},bn="real_time_speed",En="is unsupported",kn="buffer_control",fn="waiting",vn="playing",Nn={app_id:6383,sid:5,task_type:1},Tn=new Map,Cn=new Map,gn=new Map,Xn="gop",Ln="size",Gn={BUFFER_CONTROLS:"buffer_control"},xn="timer_update";function In(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var U=Object.getOwnPropertySymbols(e);t&&(U=U.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,U)}return n}function Dn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?In(Object(n),!0).forEach((function(t){jn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):In(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Yn(){Yn=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,U=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},l=i.iterator||"@@iterator",F=i.asyncIterator||"@@asyncIterator",a=i.toStringTag||"@@toStringTag";function r(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{r({},"")}catch(k){r=function(e,t,n){return e[t]=n}}function d(e,t,n,i){var l=t&&t.prototype instanceof s?t:s,F=Object.create(l.prototype),a=new y(i||[]);return U(F,"_invoke",{value:p(e,n,a)}),F}function Q(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(k){return{type:"throw",arg:k}}}e.wrap=d;var o={};function s(){}function c(){}function R(){}var B={};r(B,l,(function(){return this}));var u=Object.getPrototypeOf,h=u&&u(u(b([])));h&&h!==t&&n.call(h,l)&&(B=h);var V=R.prototype=s.prototype=Object.create(B);function Z(e){["next","throw","return"].forEach((function(t){r(e,t,(function(e){return this._invoke(t,e)}))}))}function m(e,t){function i(U,l,F,a){var r=Q(e[U],e,l);if("throw"!==r.type){var d=r.arg,o=d.value;return o&&"object"==typeof o&&n.call(o,"__await")?t.resolve(o.__await).then((function(e){i("next",e,F,a)}),(function(e){i("throw",e,F,a)})):t.resolve(o).then((function(e){d.value=e,F(d)}),(function(e){return i("throw",e,F,a)}))}a(r.arg)}var l;U(this,"_invoke",{value:function(e,n){function U(){return new t((function(t,U){i(e,n,t,U)}))}return l=l?l.then(U,U):U()}})}function p(e,t,n){var U="suspendedStart";return function(i,l){if("executing"===U)throw new Error("Generator is already running");if("completed"===U){if("throw"===i)throw l;return{value:void 0,done:!0}}for(n.method=i,n.arg=l;;){var F=n.delegate;if(F){var a=S(F,n);if(a){if(a===o)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===U)throw U="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);U="executing";var r=Q(e,t,n);if("normal"===r.type){if(U=n.done?"completed":"suspendedYield",r.arg===o)continue;return{value:r.arg,done:n.done}}"throw"===r.type&&(U="completed",n.method="throw",n.arg=r.arg)}}}function S(e,t){var n=t.method,U=e.iterator[n];if(void 0===U)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),o;var i=Q(U,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,o;var l=i.arg;return l?l.done?(t[e.resultName]=l.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,o):l:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,o)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function y(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function b(e){if(e){var t=e[l];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var U=-1,i=function t(){for(;++U<e.length;)if(n.call(e,U))return t.value=e[U],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:E}}function E(){return{value:void 0,done:!0}}return c.prototype=R,U(V,"constructor",{value:R,configurable:!0}),U(R,"constructor",{value:c,configurable:!0}),c.displayName=r(R,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,R):(e.__proto__=R,r(e,a,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},Z(m.prototype),r(m.prototype,F,(function(){return this})),e.AsyncIterator=m,e.async=function(t,n,U,i,l){void 0===l&&(l=Promise);var F=new m(d(t,n,U,i),l);return e.isGeneratorFunction(n)?F:F.next().then((function(e){return e.done?e.value:F.next()}))},Z(V),r(V,a,"Generator"),r(V,l,(function(){return this})),r(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var U in t)n.push(U);return n.reverse(),function e(){for(;n.length;){var U=n.pop();if(U in t)return e.value=U,e.done=!1,e}return e.done=!0,e}},e.values=b,y.prototype={constructor:y,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function U(n,U){return F.type="throw",F.arg=e,t.next=n,U&&(t.method="next",t.arg=void 0),!!U}for(var i=this.tryEntries.length-1;i>=0;--i){var l=this.tryEntries[i],F=l.completion;if("root"===l.tryLoc)return U("end");if(l.tryLoc<=this.prev){var a=n.call(l,"catchLoc"),r=n.call(l,"finallyLoc");if(a&&r){if(this.prev<l.catchLoc)return U(l.catchLoc,!0);if(this.prev<l.finallyLoc)return U(l.finallyLoc)}else if(a){if(this.prev<l.catchLoc)return U(l.catchLoc,!0)}else{if(!r)throw new Error("try statement without catch or finally");if(this.prev<l.finallyLoc)return U(l.finallyLoc)}}}},abrupt:function(e,t){for(var U=this.tryEntries.length-1;U>=0;--U){var i=this.tryEntries[U];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var l=i;break}}l&&("break"===e||"continue"===e)&&l.tryLoc<=t&&t<=l.finallyLoc&&(l=null);var F=l?l.completion:{};return F.type=e,F.arg=t,l?(this.method="next",this.next=l.finallyLoc,o):this.complete(F)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),o},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),o}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var U=n.completion;if("throw"===U.type){var i=U.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:b(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),o}},e}function Mn(e,t,n,U,i,l,F){try{var a=e[l](F),r=a.value}catch(d){return void n(d)}a.done?t(r):Promise.resolve(r).then(U,i)}function Kn(e){return function(){var t=this,n=arguments;return new Promise((function(U,i){var l=e.apply(t,n);function F(e){Mn(l,U,i,F,a,"next",e)}function a(e){Mn(l,U,i,F,a,"throw",e)}F(void 0)}))}}function wn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Hn(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,UU(U.key),U)}}function Pn(e,t,n){return t&&Hn(e.prototype,t),n&&Hn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function jn(e,t,n){return(t=UU(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function zn(e){return(zn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function On(e,t){return(On=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function _n(e,t){if(null==e)return{};var n,U,i=function(e,t){if(null==e)return{};var n,U,i={},l=Object.keys(e);for(U=0;U<l.length;U++)n=l[U],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(U=0;U<l.length;U++)n=l[U],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function An(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function qn(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,U=zn(e);if(t){var i=zn(this).constructor;n=Reflect.construct(U,arguments,i)}else n=U.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return An(e)}(this,n)}}function $n(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var U,i,l,F,a=[],r=!0,d=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;r=!1}else for(;!(r=(U=l.call(n)).done)&&(a.push(U.value),a.length!==t);r=!0);}catch(Q){d=!0,i=Q}finally{try{if(!r&&null!=n.return&&(F=n.return(),Object(F)!==F))return}finally{if(d)throw i}}return a}}(e,t)||tU(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function eU(e){return function(e){if(Array.isArray(e))return nU(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||tU(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function tU(e,t){if(e){if("string"==typeof e)return nU(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nU(e,t):void 0}}function nU(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,U=new Array(t);n<t;n++)U[n]=e[n];return U}function UU(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function iU(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function lU(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,sU(U.key),U)}}function FU(e,t,n){return t&&lU(e.prototype,t),n&&lU(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function aU(e,t,n){return(t=sU(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function rU(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var U,i,l,F,a=[],r=!0,d=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;r=!1}else for(;!(r=(U=l.call(n)).done)&&(a.push(U.value),a.length!==t);r=!0);}catch(Q){d=!0,i=Q}finally{try{if(!r&&null!=n.return&&(F=n.return(),Object(F)!==F))return}finally{if(d)throw i}}return a}}(e,t)||QU(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dU(e){return function(e){if(Array.isArray(e))return oU(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||QU(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function QU(e,t){if(e){if("string"==typeof e)return oU(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oU(e,t):void 0}}function oU(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,U=new Array(t);n<t;n++)U[n]=e[n];return U}function sU(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var cU="video",RU="audio",BU="metadata",uU="avc",hU="hevc",VU="vvcC",ZU="aac",mU="g7110a",pU="g7110m",SU=function(){function e(){iU(this,e),aU(this,"id",1),aU(this,"type",cU),aU(this,"codecType",uU),aU(this,"pid",-1),aU(this,"hvcC",void 0),aU(this,"codec",""),aU(this,"timescale",0),aU(this,"formatTimescale",0),aU(this,"sequenceNumber",0),aU(this,"baseMediaDecodeTime",0),aU(this,"baseDts",0),aU(this,"duration",0),aU(this,"warnings",[]),aU(this,"samples",[]),aU(this,"pps",[]),aU(this,"sps",[]),aU(this,"vps",[]),aU(this,"fpsNum",0),aU(this,"fpsDen",0),aU(this,"sarRatio",[]),aU(this,"width",0),aU(this,"height",0),aU(this,"nalUnitSize",4),aU(this,"present",!1),aU(this,"isVideoEncryption",!1),aU(this,"isAudioEncryption",!1),aU(this,"isVideo",!0),aU(this,"kid",null),aU(this,"pssh",null),aU(this,"ext",void 0)}return FU(e,[{key:"reset",value:function(){this.sequenceNumber=this.width=this.height=this.fpsDen=this.fpsNum=this.duration=this.baseMediaDecodeTime=this.timescale=0,this.codec="",this.present=!1,this.pid=-1,this.pps=[],this.sps=[],this.vps=[],this.sarRatio=[],this.samples=[],this.warnings=[],this.hvcC=null}},{key:"exist",value:function(){return!!(this.pps.length&&this.sps.length&&this.codec)}},{key:"hasSample",value:function(){return!!this.samples.length}},{key:"isEncryption",get:function(){return this.isVideoEncryption}}]),e}(),JU=function(){function e(){iU(this,e),aU(this,"id",2),aU(this,"type",RU),aU(this,"codecType",ZU),aU(this,"pid",-1),aU(this,"codec",""),aU(this,"sequenceNumber",0),aU(this,"sampleDuration",0),aU(this,"timescale",0),aU(this,"formatTimescale",0),aU(this,"baseMediaDecodeTime",0),aU(this,"duration",0),aU(this,"warnings",[]),aU(this,"samples",[]),aU(this,"baseDts",0),aU(this,"sampleSize",16),aU(this,"sampleRate",0),aU(this,"channelCount",0),aU(this,"objectType",0),aU(this,"sampleRateIndex",0),aU(this,"config",[]),aU(this,"present",!1),aU(this,"isVideoEncryption",!1),aU(this,"isAudioEncryption",!1),aU(this,"kid",null),aU(this,"ext",void 0)}return FU(e,[{key:"reset",value:function(){this.sequenceNumber=0,this.timescale=0,this.sampleDuration=0,this.sampleRate=0,this.channelCount=0,this.baseMediaDecodeTime=0,this.present=!1,this.pid=-1,this.codec="",this.samples=[],this.config=[],this.warnings=[]}},{key:"exist",value:function(){return!!(this.sampleRate&&this.channelCount&&this.codec&&this.codecType===ZU)}},{key:"hasSample",value:function(){return!!this.samples.length}},{key:"isEncryption",get:function(){return this.isAudioEncryption}}]),e}(),WU=function(){function e(t,n,U){iU(this,e),aU(this,"flag",{}),aU(this,"keyframe",!1),aU(this,"gopId",0),aU(this,"duration",0),aU(this,"size",0),aU(this,"units",[]),aU(this,"chromaFormat",420),this.originPts=this.pts=t,this.originDts=this.dts=n,U&&(this.units=U)}return FU(e,[{key:"cts",get:function(){return this.pts-this.dts}},{key:"setToKeyframe",value:function(){this.keyframe=!0,this.flag.dependsOn=2,this.flag.isNonSyncSample=0}}]),e}(),yU=FU((function e(t,n,U,i){iU(this,e),aU(this,"duration",1024),aU(this,"flag",{dependsOn:2,isNonSyncSample:0}),aU(this,"keyframe",!0),this.originPts=this.pts=this.dts=t,this.data=n,this.size=n.byteLength,this.sampleOffset=i,U&&(this.duration=U)})),bU=function(){function e(){iU(this,e),aU(this,"id",3),aU(this,"type",BU),aU(this,"timescale",0),aU(this,"flvScriptSamples",[]),aU(this,"seiSamples",[])}return FU(e,[{key:"exist",value:function(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length||!this.timescale)}},{key:"reset",value:function(){this.timescale=0,this.flvScriptSamples=[],this.seiSamples=[]}},{key:"hasSample",value:function(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length)}}]),e}(),EU="undefined"!=typeof window,kU=EU&&navigator.userAgent.toLocaleLowerCase(),fU=EU&&kU.includes("firefox"),vU=EU&&kU.includes("android"),NU=function(){function e(){iU(this,e)}return FU(e,null,[{key:"getRateIndexByRate",value:function(t){return e.FREQ.indexOf(t)}},{key:"parseADTS",value:function(t,n){for(var U=t.length,i=0;i+2<U&&(255!==t[i]||240!=(246&t[i+1]));)i++;if(!(i>=U)){var l=i,F=[],a=(60&t[i+2])>>>2,r=e.FREQ[a];if(!r)throw new Error("Invalid sampling index: ".concat(a));for(var d,Q,o=1+((192&t[i+2])>>>6),s=(1&t[i+2])<<2|(192&t[i+3])>>>6,c=e._getConfig(a,s,o),R=c.config,B=c.codec,u=0,h=e.getFrameDuration(r);i+7<U;)if(255===t[i]&&240==(246&t[i+1])){if(U-i<(Q=(3&t[i+3])<<11|t[i+4]<<3|(224&t[i+5])>>5))break;d=2*(1&~t[i+1]),F.push({pts:n+u*h,data:t.subarray(i+7+d,i+Q)}),u++,i+=Q}else i++;return{skip:l,remaining:i>=U?void 0:t.subarray(i),frames:F,samplingFrequencyIndex:a,sampleRate:r,objectType:o,channelCount:s,codec:B,config:R,originCodec:"mp4a.40.".concat(o)}}}},{key:"parseAudioSpecificConfig",value:function(t){if(t.length){var n=t[0]>>>3,U=(7&t[0])<<1|t[1]>>>7,i=(120&t[1])>>>3,l=e.FREQ[U];if(l){var F=e._getConfig(U,i,n);return{samplingFrequencyIndex:U,sampleRate:l,objectType:n,channelCount:i,config:F.config,codec:F.codec,originCodec:"mp4a.40.".concat(n)}}}}},{key:"getFrameDuration",value:function(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}},{key:"_getConfig",value:function(e,t,n){var U,i,l=[];return fU?e>=6?(U=5,i=e-3):(U=2,i=e):vU?(U=2,i=e):(U=2===n||5===n?n:5,i=e,e>=6?i=e-3:1===t&&(U=2,i=e)),l[0]=U<<3,l[0]|=(14&e)>>1,l[1]=(1&e)<<7,l[1]|=t<<3,5===U&&(l[1]|=(14&i)>>1,l[2]=(1&i)<<7,l[2]|=8,l[3]=0),{config:l,codec:"mp4a.40.".concat(U)}}},{key:"getSilentFrame",value:function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}}]),e}();function TU(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t=t.filter(Boolean);var U=new Uint8Array(t.reduce((function(e,t){return e+t.byteLength}),0)),i=0;return t.forEach((function(e){U.set(e,i),i+=e.byteLength})),U}aU(NU,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);var CU=Math.pow(2,32);function gU(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function XU(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function LU(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return XU(e,t)*CU+XU(e,t+4)}function GU(e){var t="";if(e.forEach((function(e){t+=function(e){return("0"+Number(e).toString(16)).slice(-2).toUpperCase()}(e)})),t.length<=32)for(var n=32-t.length,U=0;U<n;U++)t+="0";return t}function xU(e){if(!Array.isArray(e)){for(var t=[],n="",U=0;U<e.length;U++)U%2&&(n=e[U-1]+e[U],t.push(parseInt(n,16)),n="");return t}return e.map((function(e){return parseInt(e,16)}))}var IU=function(){function e(t){if(iU(this,e),aU(this,"_bytesAvailable",void 0),aU(this,"_bitsAvailable",0),aU(this,"_word",0),!t)throw new Error("ExpGolomb data params is required");this._data=t,this._bytesAvailable=t.byteLength,this._bytesAvailable&&this._loadWord()}return FU(e,[{key:"_loadWord",value:function(){var e=this._data.byteLength-this._bytesAvailable,t=Math.min(4,this._bytesAvailable);if(0===t)throw new Error("No bytes available");var n=new Uint8Array(4);n.set(this._data.subarray(e,e+t)),this._word=new DataView(n.buffer).getUint32(0),this._bitsAvailable=8*t,this._bytesAvailable-=t}},{key:"bitsPos",value:function(){return 8*this._bytesAvailable-this._bitsAvailable}},{key:"bitsLeft",value:function(){return 8*this._data.length-this.bitsPos()}},{key:"byteAligned",value:function(){return 0===this.bitsPos()||this.bitsPos()%8==0}},{key:"skipBits",value:function(e){if(this._bitsAvailable>e)this._word<<=e,this._bitsAvailable-=e;else{e-=this._bitsAvailable;var t=Math.floor(e/8);e-=8*t,this._bytesAvailable-=t,this._loadWord(),this._word<<=e,this._bitsAvailable-=e}}},{key:"readBits",value:function(e){if(e>32)throw new Error("Cannot read more than 32 bits");var t=Math.min(this._bitsAvailable,e),n=this._word>>>32-t;return this._bitsAvailable-=t,this._bitsAvailable>0?this._word<<=t:this._bytesAvailable>0&&this._loadWord(),(t=e-t)>0&&this._bitsAvailable?n<<t|this.readBits(t):n}},{key:"skipLZ",value:function(){var e;for(e=0;e<this._bitsAvailable;++e)if(0!=(this._word&2147483648>>>e))return this._word<<=e,this._bitsAvailable-=e,e;return this._loadWord(),e+this.skipLZ()}},{key:"skipUEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"readUEG",value:function(){var e=this.skipLZ();return this.readBits(e+1)-1}},{key:"readEG",value:function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}},{key:"readBool",value:function(){return 1===this.readBits(1)}},{key:"readUByte",value:function(){return this.readBits(8)}},{key:"skipScalingList",value:function(e){for(var t=8,n=8,U=0;U<e;U++)0!==n&&(n=(t+this.readEG()+256)%256),t=0===n?t:n}}]),e}(),DU=function(){function e(t){iU(this,e),this._buffer=t,this._offset=0,this._heldBits=0,this._numHeldBits=0}return FU(e,[{key:"readUint8",value:function(){return this._buffer[this._offset++]}},{key:"readUint16",value:function(){return this._buffer[this._offset++]<<8|this._buffer[this._offset++]}},{key:"readUint32",value:function(){return this._buffer[this._offset++]<<24|this._buffer[this._offset++]<<16|this._buffer[this._offset++]<<8|this._buffer[this._offset++]}},{key:"readUint8Array",value:function(e){var t=this._buffer.slice(this._offset,this._offset+e);return this._offset+=e,t}},{key:"streamRead1Bytes",value:function(){this._heldBits=this.readUint8(),this._numHeldBits=8}},{key:"streamRead2Bytes",value:function(){this._heldBits=this.readUint16(),this._numHeldBits=16}},{key:"extractBits",value:function(e){var t=this._heldBits>>this._numHeldBits-e&(1<<e)-1;return this._numHeldBits-=e,t}}]),e}(),YU=function(){function e(){iU(this,e)}return FU(e,null,[{key:"parseVVCDecoderConfigurationRecord",value:function(t){var n=new DU(t),U=n.readUint8();n.streamRead1Bytes(),n.extractBits(5);var i,l,F,a,r,d,Q,o,s=n.extractBits(2)+1,c=n.extractBits(1),R={};c&&(n.streamRead2Bytes(),a=n.extractBits(2),r=n.extractBits(3),l=n.extractBits(3),F=n.extractBits(2),n.extractBits(6),R=e.parseVVCPTLRecord(n,l),i=n.readUint16(),d=n.readUint16(),Q=n.readUint16(),o=n.readUint16());for(var B=n.readUint8(),u=[],h=[],V=[],Z=null,m=0;m<B;m++){n.streamRead1Bytes(),n.extractBits(1),n.extractBits(2);var p=n.extractBits(5),S=1;13!==p&&12!==p&&(S=n.readUint16());for(var J=0;J<S;J++){var W=n.readUint16();switch(p){case 14:u.push(n.readUint8Array(W));break;case 15:var y=n.readUint8Array(W);Z||(Z=e.parseSPS(e.removeEPB(y))),h.push(y);break;case 16:V.push(n.readUint8Array(W))}}}return{data:t,configurationVersion:U,codec:"bvc2.1.6.L93.B0",nalUnitSize:s,ptlPresentFlag:c,olsIdx:i,numSublayers:l,constantFrameRate:F,chromaFormatIdc:a,bitDepthLumaMinus8:r,ptlRecord:R,width:d,height:Q,sampleRate:o,numOfArrays:B,vps:u,sps:h,pps:V,spsParsed:Z}}},{key:"parseVVCPTLRecord",value:function(e,t){e.streamRead2Bytes(),e.extractBits(2);var n=e.extractBits(6),U=e.extractBits(7),i=e.extractBits(1),l=e.readUint8();e.streamRead1Bytes();var F=e.extractBits(1),a=e.extractBits(1),r=new Uint8Array(n);if(n){for(var d=0;d<n-1;d++){var Q=e.extractBits(6);e.streamRead1Bytes();var o=e.extractBits(2);r[d]=Q<<2|o}r[n-1]=e.extractBits(6)}else e.extractBits(6);var s=[];if(t>1){e.streamRead1Bytes();for(var c=0,R=t-2;R>=0;--R){c|=e.extractBits(1)<<R}for(var B=t;B<=8&&t>1;++B)e.extractBits(1);for(var u=t-2;u>=0;--u)c&1<<u&&(s[u]=e.readUint8())}var h=e.readUint8(),V=[];if(h)for(var Z=0;Z<h;Z++)V.push(e.readUint32());return{generalProfileIdc:U,generalTierFlag:i,generalLevelIdc:l,ptlFrameOnlyConstraintFlag:F,ptlMultilayerEnabledFlag:a,generalConstraintInfo:r,subLayerLevelIdc:s,generalSubProfileIdc:V,ptlNumSubProfiles:h,numBytesConstraintInfo:n}}},{key:"getAvccNals",value:function(e){for(var t=[];e.position<e.length-4;){var n=e.dataview.getInt32(e.dataview.position);if(!(e.length-e.position>=n))break;var U=e.buffer.slice(e.position,e.position+4);e.skip(4);var i=new Uint8Array(e.buffer.slice(e.position,e.position+n));e.skip(n),t.push({header:U,body:i})}return t}},{key:"analyseNal",value:function(e){var t=(248&e.body[1])>>3;switch(e.type=t,t){case 23:case 24:break;case 7:case 8:e.key=!0;break;case 14:e.vps=!0;break;case 15:e.sps=!0;break;case 16:e.pps=!0;break;case 17:e.aps=!0}}},{key:"removeEPB",value:function(e){for(var t=e.byteLength,n=[],U=1;U<t-2;)0===e[U]&&0===e[U+1]&&3===e[U+2]?(n.push(U+2),U+=2):U++;if(!n.length)return e;var i=t-n.length,l=new Uint8Array(i),F=0;for(U=0;U<i;F++,U++)F===n[0]&&(F++,n.shift()),l[U]=e[F];return l}},{key:"parseVps",value:function(){}},{key:"parseSPS",value:function(t){var n=new IU(t);n.readUByte(),n.readUByte(),n.skipBits(4);var U=n.readBits(4),i=n.readBits(3),l=n.readBits(2),F=420;l<=3&&(F=[0,420,422,444][l]),n.readBits(2),n.readBits(1);var a=e._parseProfileTierLevel(n,1,i);return n.readBits(1),n.readBits(1)&&n.readBits(1),{width:n.readUEG(),height:n.readUEG(),spsMaxSubLayerMinus1:i,spsVideoParameterSetId:U,chromaFormatIdc:l,chromaFormat:F,ptlInfo:a}}},{key:"_parseProfileTierLevel",value:function(t,n,U){var i,l=t.readBits(7),F=t.readBits(1),a=t.readBits(8),r=t.readBits(1),d=t.readBits(1);n&&(i=e._parseGeneralConstraintsInfo(t));for(var Q=U-1,o=[],s=[],c=[],R=Q;R>=0;--R)o[R]=t.readBits(1);for(;!t.byteAligned();)t.readBits(1);for(var B=Q;B>=0;--B)o[B]&&(s[B]=t.readUByte());if(n)for(var u=t.readUByte(),h=0;h<u;h++)c[h]=t.readBits(32);return{generalProfileIdc:l,generalTierFlag:F,generalLevelIdc:a,ptlFrameOnlyConstraintFlag:r,ptlMultilayerEnabledFlag:d,ptlSublayerLevelPresentFlags:o,ptlSublayerLevelIdcs:s,ptlSubProfileIdcs:c,gciInfo:i}}},{key:"_parseGeneralConstraintsInfo",value:function(e){var t=e.readBits(1);if(t){e.skipBits(71);var n=e.readBits(8);n&&e.skipBits(n)}var U=8-e.bitsPos()%8;return e.skipBits(U),{gciPresentFlag:t}}}]),e}(),MU=function(){function e(){iU(this,e)}return FU(e,null,[{key:"findBox",value:function(t,n){var U=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=[];if(!t)return i;for(var l=0,F="",a=0;t.length>7;){if(l=XU(t),F=String.fromCharCode.apply(null,t.subarray(4,8)),a=8,1===l?(l=LU(t,8),a+=8):l||(l=t.length),!n[0]||F===n[0]){var r=t.subarray(0,l);if(!(n.length<2))return e.findBox(r.subarray(a),n.slice(1),U+a);i.push({start:U,size:l,headerSize:a,type:F,data:r})}U+=l,t=t.subarray(l)}return i}},{key:"tfhd",value:function(e){return PU(e,!0,(function(e,t){e.trackId=XU(t);var n=4,U=1&e.flags,i=2&e.flags,l=8&e.flags,F=16&e.flags,a=32&e.flags;U&&(n+=4,e.baseDataOffset=XU(t,n),n+=4),i&&(e.sampleDescriptionIndex=XU(t,n),n+=4),l&&(e.defaultSampleDuration=XU(t,n),n+=4),F&&(e.defaultSampleSize=XU(t,n),n+=4),a&&(e.defaultSampleFlags=XU(t,n))}))}},{key:"sidx",value:function(e){return PU(e,!0,(function(e,t){var n=0;e.reference_ID=XU(t,n),n+=4,e.timescale=XU(t,n),n+=4,0===e.version?(e.earliest_presentation_time=XU(t,n),n+=4,e.first_offset=XU(t,n),n+=4):(e.earliest_presentation_time=LU(t,n),n+=8,e.first_offset=LU(t,n),n+=8),n+=2,e.references=[];var U=gU(t,n);n+=2;for(var i=0;i<U;i++){var l={};e.references.push(l);var F=XU(t,n);n+=4,l.reference_type=F>>31&1,l.referenced_size=2147483647&F,l.subsegment_duration=XU(t,n),F=XU(t,n+=4),n+=4,l.starts_with_SAP=F>>31&1,l.SAP_type=F>>28&7,l.SAP_delta_time=268435455&F}}))}},{key:"moov",value:function(t){return PU(t,!1,(function(t,n,U){t.mvhd=e.mvhd(e.findBox(n,["mvhd"],U)[0]),t.trak=e.findBox(n,["trak"],U).map((function(t){return e.trak(t)})),t.pssh=e.pssh(e.findBox(n,["pssh"],U)[0])}))}},{key:"mvhd",value:function(e){return PU(e,!0,(function(e,t){var n=0;1===e.version?(e.timescale=XU(t,16),e.duration=LU(t,20),n+=28):(e.timescale=XU(t,8),e.duration=XU(t,12),n+=16),e.nextTrackId=XU(t,n+76)}))}},{key:"trak",value:function(t){return PU(t,!1,(function(t,n,U){t.tkhd=e.tkhd(e.findBox(n,["tkhd"],U)[0]),t.mdia=e.mdia(e.findBox(n,["mdia"],U)[0])}))}},{key:"tkhd",value:function(e){return PU(e,!0,(function(e,t){var n=0;1===e.version?(e.trackId=XU(t,16),e.duration=LU(t,24),n+=32):(e.trackId=XU(t,8),e.duration=XU(t,16),n+=20),e.width=XU(t,n+52),e.height=XU(t,n+56)}))}},{key:"mdia",value:function(t){return PU(t,!1,(function(t,n,U){t.mdhd=e.mdhd(e.findBox(n,["mdhd"],U)[0]),t.hdlr=e.hdlr(e.findBox(n,["hdlr"],U)[0]),t.minf=e.minf(e.findBox(n,["minf"],U)[0])}))}},{key:"mdhd",value:function(e){return PU(e,!0,(function(e,t){var n=0;1===e.version?(e.timescale=XU(t,16),e.duration=LU(t,20),n+=28):(e.timescale=XU(t,8),e.duration=XU(t,12),n+=16);var U=gU(t,n);e.language=String.fromCharCode(96+(U>>10&31),96+(U>>5&31),96+(31&U))}))}},{key:"hdlr",value:function(e){return PU(e,!0,(function(e,t){0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}},{key:"minf",value:function(t){return PU(t,!1,(function(t,n,U){t.vmhd=e.vmhd(e.findBox(n,["vmhd"],U)[0]),t.smhd=e.smhd(e.findBox(n,["smhd"],U)[0]),t.stbl=e.stbl(e.findBox(n,["stbl"],U)[0])}))}},{key:"vmhd",value:function(e){return PU(e,!0,(function(e,t){e.graphicsmode=gU(t),e.opcolor=[gU(t,2),gU(t,4),gU(t,6)]}))}},{key:"smhd",value:function(e){return PU(e,!0,(function(e,t){e.balance=gU(t)}))}},{key:"stbl",value:function(t){return PU(t,!1,(function(t,n,U){var i,l,F;t.stsd=e.stsd(e.findBox(n,["stsd"],U)[0]),t.stts=e.stts(e.findBox(n,["stts"],U)[0]),t.ctts=e.ctts(e.findBox(n,["ctts"],U)[0]),t.stsc=e.stsc(e.findBox(n,["stsc"],U)[0]),t.stsz=e.stsz(e.findBox(n,["stsz"],U)[0]),t.stco=e.stco(e.findBox(n,["stco"],U)[0]),t.stco||(t.co64=e.co64(e.findBox(n,["co64"],U)[0]),t.stco=t.co64);var a=null===(i=t.stsd.entries[0])||void 0===i||null===(l=i.sinf)||void 0===l||null===(F=l.schi)||void 0===F?void 0:F.tenc.default_IV_size;t.stss=e.stss(e.findBox(n,["stss"],U)[0]),t.senc=e.senc(e.findBox(n,["senc"],U)[0],a)}))}},{key:"senc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return PU(e,!0,(function(e,n){var U=0,i=XU(n,U);U+=4,e.samples=[];for(var l=0;l<i;l++){for(var F={InitializationVector:[]},a=0;a<t;a++)F.InitializationVector[a]=n[U+a];if(U+=t,2&e.flags){F.subsamples=[];var r=gU(n,U);U+=2;for(var d=0;d<r;d++){var Q={};Q.BytesOfClearData=gU(n,U),U+=2,Q.BytesOfProtectedData=XU(n,U),U+=4,F.subsamples.push(Q)}}e.samples.push(F)}}))}},{key:"pssh",value:function(e){return PU(e,!0,(function(e,t){for(var n=[],U=[],i=0,l=0;l<16;l++)U.push(jU(t[i+l]));if(i+=16,e.version>0){var F=XU(t,i);i+=4;for(var a=0;a<(""+F).length;a++)for(var r=0;r<16;r++){var d=t[i];i+=1,n.push(jU(d))}}var Q=XU(t,i);e.data_size=Q,i+=4,e.kid=n,e.system_id=U,e.buffer=t}))}},{key:"bvc2",value:function(t){return PU(t,!1,(function(t,n,U){var i=wU(t,n),l=n.subarray(i);U+=i,t.vvcC=e.bv2C(e.findBox(l,["bv2C"],U)[0]),t.pasp=e.pasp(e.findBox(l,["pasp"],U)[0])}))}},{key:"bv2C",value:function(e){return PU(e,!1,(function(e,t,n){var U=YU.parseVVCDecoderConfigurationRecord(t);for(var i in U)Object.prototype.hasOwnProperty.call(U,i)&&(e[i]=U[i])}))}},{key:"stsd",value:function(t){return PU(t,!0,(function(t,n,U){t.entryCount=XU(n),t.entries=e.findBox(n.subarray(4),[],U+4).map((function(t){switch(t.type){case"avc1":case"avc2":case"avc3":case"avc4":return e.avc1(t);case"hvc1":case"hev1":return e.hvc1(t);case"bvc2":return e.bvc2(t);case"mp4a":return e.mp4a(t);case"alaw":case"ulaw":return e.alaw(t);case"enca":return PU(t,!1,(function(t,n,U){t.channelCount=gU(n,16),t.samplesize=gU(n,18),t.sampleRate=XU(n,24)/65536,n=n.subarray(28),t.sinf=e.sinf(e.findBox(n,["sinf"],U)[0]),t.esds=e.esds(e.findBox(n,["esds"],U)[0])}));case"encv":return PU(t,!1,(function(t,n,U){t.width=gU(n,24),t.height=gU(n,26),t.horizresolution=XU(n,28),t.vertresolution=XU(n,32),n=n.subarray(78),t.sinf=e.sinf(e.findBox(n,["sinf"],U)[0]),t.avcC=e.avcC(e.findBox(n,["avcC"],U)[0]),t.hvcC=e.hvcC(e.findBox(n,["hvcC"],U)[0]),t.pasp=e.pasp(e.findBox(n,["pasp"],U)[0])}))}})).filter(Boolean)}))}},{key:"tenc",value:function(e){return PU(e,!1,(function(e,t){var n=6;e.default_IsEncrypted=t[n],n+=1,e.default_IV_size=t[n],n+=1,e.default_KID=[];for(var U=0;U<16;U++)e.default_KID.push(jU(t[n])),n+=1}))}},{key:"schi",value:function(t){return PU(t,!1,(function(t,n,U){t.tenc=e.tenc(e.findBox(n,["tenc"],U)[0])}))}},{key:"sinf",value:function(t){return PU(t,!1,(function(t,n,U){t.schi=e.schi(e.findBox(n,["schi"],U)[0]),t.frma=e.frma(e.findBox(n,["frma"],U)[0])}))}},{key:"frma",value:function(e){return PU(e,!1,(function(e,t){e.data_format="";for(var n=0;n<4;n++)e.data_format+=String.fromCharCode(t[n])}))}},{key:"avc1",value:function(t){return PU(t,!1,(function(t,n,U){var i=wU(t,n),l=n.subarray(i);U+=i,t.avcC=e.avcC(e.findBox(l,["avcC"],U)[0]),t.pasp=e.pasp(e.findBox(l,["pasp"],U)[0])}))}},{key:"avcC",value:function(e){return PU(e,!1,(function(e,t){e.configurationVersion=t[0],e.AVCProfileIndication=t[1],e.profileCompatibility=t[2],e.AVCLevelIndication=t[3],e.codec=function(e){for(var t,n="avc1.",U=0;U<3;U++)(t=e[U].toString(16)).length<2&&(t="0".concat(t)),n+=t;return n}([t[1],t[2],t[3]]),e.lengthSizeMinusOne=3&t[4],e.spsLength=31&t[5],e.sps=[];for(var n=6,U=0;U<e.spsLength;U++){var i=gU(t,n);n+=2,e.sps.push(t.subarray(n,n+i)),n+=i}e.ppsLength=t[n],n+=1,e.pps=[];for(var l=0;l<e.ppsLength;l++){var F=gU(t,n);n+=2,e.pps.push(t.subarray(n,n+=F)),n+=F}}))}},{key:"hvc1",value:function(t){return PU(t,!1,(function(t,n,U){var i=wU(t,n),l=n.subarray(i);U+=i,t.hvcC=e.hvcC(e.findBox(l,["hvcC"],U)[0]),t.pasp=e.pasp(e.findBox(l,["pasp"],U)[0])}))}},{key:"hvcC",value:function(e){return PU(e,!1,(function(t,n){t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=n[0];var U=n[1];t.generalProfileSpace=U>>6,t.generalTierFlag=(32&U)>>5,t.generalProfileIdc=31&U,t.generalProfileCompatibility=XU(n,2),t.generalConstraintIndicatorFlags=n.subarray(6,12),t.generalLevelIdc=n[12],t.avgFrameRate=gU(n,19),t.numOfArrays=n[22],t.vps=[],t.sps=[],t.pps=[];for(var i=23,l=0,F=0,a=0,r=0;r<t.numOfArrays;r++){l=63&n[i],F=gU(n,i+1),i+=3;for(var d,Q=[],o=0;o<F;o++)a=gU(n,i),i+=2,Q.push(n.subarray(i,i+a)),i+=a;if(32===l)(d=t.vps).push.apply(d,Q);else if(33===l){var s;(s=t.sps).push.apply(s,Q)}else if(34===l){var c;(c=t.pps).push.apply(c,Q)}}}))}},{key:"pasp",value:function(e){return PU(e,!1,(function(e,t){e.hSpacing=XU(t),e.vSpacing=XU(t,4)}))}},{key:"mp4a",value:function(t){return PU(t,!1,(function(t,n,U){var i=HU(t,n);t.esds=e.esds(e.findBox(n.subarray(i),["esds"],U+i)[0])}))}},{key:"esds",value:function(e){return PU(e,!0,(function(e,t){e.codec="mp4a.";for(var n=0,U=0,i=0,l=0;t.length;){for(l=t[n=0],U=t[n+1],n+=2;128&U;)i=(127&U)<<7,U=t[n],n+=1;if(i+=127&U,3===l)t=t.subarray(n+3);else{if(4!==l){if(5===l){var F=e.config=t.subarray(n,n+i),a=(248&F[0])>>3;return 31===a&&F.length>=2&&(a=32+((7&F[0])<<3)+((224&F[1])>>5)),e.objectType=a,e.codec+=a.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[n].toString(16)+".").padStart(3,"0"),t=t.subarray(n+13)}}}))}},{key:"alaw",value:function(e){return PU(e,!1,(function(e,t){HU(e,t)}))}},{key:"stts",value:function(e){return PU(e,!0,(function(e,t){for(var n=XU(t),U=[],i=4,l=0;l<n;l++)U.push({count:XU(t,i),delta:XU(t,i+4)}),i+=8;e.entryCount=n,e.entries=U}))}},{key:"ctts",value:function(e){return PU(e,!0,(function(e,t){var n=XU(t),U=[],i=4;if(1===e.version)for(var l=0;l<n;l++)U.push({count:XU(t,i),offset:XU(t,i+4)}),i+=8;else for(var F=0;F<n;F++)U.push({count:XU(t,i),offset:-(1+~XU(t,i+4))}),i+=8;e.entryCount=n,e.entries=U}))}},{key:"stsc",value:function(e){return PU(e,!0,(function(e,t){for(var n=XU(t),U=[],i=4,l=0;l<n;l++)U.push({firstChunk:XU(t,i),samplesPerChunk:XU(t,i+4),sampleDescriptionIndex:XU(t,i+8)}),i+=12;e.entryCount=n,e.entries=U}))}},{key:"stsz",value:function(e){return PU(e,!0,(function(e,t){var n=XU(t),U=XU(t,4),i=[];if(!n)for(var l=8,F=0;F<U;F++)i.push(XU(t,l)),l+=4;e.sampleSize=n,e.sampleCount=U,e.entrySizes=i}))}},{key:"stco",value:function(e){return PU(e,!0,(function(e,t){for(var n=XU(t),U=[],i=4,l=0;l<n;l++)U.push(XU(t,i)),i+=4;e.entryCount=n,e.entries=U}))}},{key:"co64",value:function(e){return PU(e,!0,(function(e,t){for(var n=XU(t),U=[],i=4,l=0;l<n;l++)U.push(LU(t,i)),i+=8;e.entryCount=n,e.entries=U}))}},{key:"stss",value:function(e){return PU(e,!0,(function(e,t){for(var n=XU(t),U=[],i=4,l=0;l<n;l++)U.push(XU(t,i)),i+=4;e.entryCount=n,e.entries=U}))}},{key:"moof",value:function(t){return PU(t,!1,(function(t,n,U){t.mfhd=e.mfhd(e.findBox(n,["mfhd"],U)[0]),t.traf=e.findBox(n,["traf"],U).map((function(t){return e.traf(t)}))}))}},{key:"mfhd",value:function(e){return PU(e,!0,(function(e,t){e.sequenceNumber=XU(t)}))}},{key:"traf",value:function(t){return PU(t,!1,(function(t,n,U){t.tfhd=e.tfhd(e.findBox(n,["tfhd"],U)[0]),t.tfdt=e.tfdt(e.findBox(n,["tfdt"],U)[0]),t.trun=e.trun(e.findBox(n,["trun"],U)[0])}))}},{key:"trun",value:function(e){return PU(e,!0,(function(e,t){var n=e.version,U=e.flags,i=t.length,l=e.sampleCount=XU(t),F=4;if(i>F&&1&U&&(e.dataOffset=-(1+~XU(t,F)),F+=4),i>F&&4&U&&(e.firstSampleFlags=XU(t,F),F+=4),e.samples=[],i>F)for(var a,r=0;r<l;r++)a={},256&U&&(a.duration=XU(t,F),F+=4),512&U&&(a.size=XU(t,F),F+=4),1024&U&&(a.flags=XU(t,F),F+=4),2048&U&&(a.cts=n?-(1+~XU(t,F+4)):XU(t,F),F+=4),e.samples.push(a)}))}},{key:"tfdt",value:function(e){return PU(e,!0,(function(e,t){1===e.version?e.baseMediaDecodeTime=LU(t):e.baseMediaDecodeTime=XU(t)}))}},{key:"probe",value:function(t){return!!e.findBox(t,["ftyp"])}},{key:"parseSampleFlags",value:function(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}},{key:"moovToTrack",value:function(e,t,n){var U,i,l=e.trak;if(l&&l.length){var F=l.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),a=l.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)}));if(F&&t){var r,d,Q,o,s,c,R,B=t,u=null===(r=F.tkhd)||void 0===r?void 0:r.trackId;null!=u&&(B.id=F.tkhd.trackId),B.tkhdDuration=F.tkhd.duration,B.mvhdDurtion=e.mvhd.duration,B.mvhdTimecale=e.mvhd.timescale,B.timescale=B.formatTimescale=F.mdia.mdhd.timescale,B.duration=F.mdia.mdhd.duration||B.mvhdDurtion/B.mvhdTimecale*B.timescale;var h,V,Z,m,p,S,J,W,y=F.mdia.minf.stbl.stsd.entries[0];if(B.width=y.width,B.height=y.height,y.pasp&&(B.sarRatio=[y.pasp.hSpacing,y.pasp.vSpacing]),y.hvcC)B.codecType=hU,B.codec=y.hvcC.codec,B.vps=y.hvcC.vps,B.sps=y.hvcC.sps,B.pps=y.hvcC.pps,B.hvcC=y.hvcC.data;else if(y.avcC)B.codec=y.avcC.codec,B.sps=y.avcC.sps,B.pps=y.avcC.pps;else{if(!y.vvcC)throw new Error("unknown video stsd entry");B.codecType=VU,B.codec=y.vvcC.codec,B.sps=y.vvcC.sps,B.pps=y.vvcC.pps,B.vps=y.vvcC.vps,B.vvcC=y.vvcC.data}if(B.present=!0,B.ext={},B.ext.stss=null===(d=F.mdia)||void 0===d||null===(Q=d.minf)||void 0===Q||null===(o=Q.stbl)||void 0===o?void 0:o.stss,B.ext.ctts=null===(s=F.mdia)||void 0===s||null===(c=s.minf)||void 0===c||null===(R=c.stbl)||void 0===R?void 0:R.ctts,y&&"encv"===y.type)B.isVideoEncryption=!0,y.default_KID=null===(h=y.sinf)||void 0===h||null===(V=h.schi)||void 0===V?void 0:V.tenc.default_KID,y.default_IsEncrypted=null===(Z=y.sinf)||void 0===Z||null===(m=Z.schi)||void 0===m?void 0:m.tenc.default_IsEncrypted,y.default_IV_size=null===(p=y.sinf)||void 0===p||null===(S=p.schi)||void 0===S?void 0:S.tenc.default_IV_size,B.videoSenc=F.mdia.minf.stbl.senc&&F.mdia.minf.stbl.senc.samples,y.data_format=null===(J=y.sinf)||void 0===J||null===(W=J.frma)||void 0===W?void 0:W.data_format,B.useEME=e.useEME,B.kidValue=e.kidValue,B.pssh=e.pssh,B.encv=y}if(a&&n){var b,E,k,f,v,N,T,C,g,X=n,L=null===(b=a.tkhd)||void 0===b?void 0:b.trackId;null!=L&&(X.id=a.tkhd.trackId),X.tkhdDuration=a.tkhd.duration,X.mvhdDurtion=e.mvhd.duration,X.mvhdTimecale=e.mvhd.timescale,X.timescale=X.formatTimescale=a.mdia.mdhd.timescale,X.duration=a.mdia.mdhd.duration||X.mvhdDurtion/X.mvhdTimecale*X.timescale;var G,x,I,D,Y,M,K,w,H=a.mdia.minf.stbl.stsd.entries[0];switch(X.sampleSize=H.sampleSize,X.sampleRate=H.sampleRate,X.channelCount=H.channelCount,X.present=!0,H.type){case"alaw":X.codecType=X.codec=mU,X.sampleRate=8e3;break;case"ulaw":X.codecType=X.codec=pU,X.sampleRate=8e3;break;default:X.sampleDuration=NU.getFrameDuration(X.sampleRate,X.timescale),X.sampleRateIndex=NU.getRateIndexByRate(X.sampleRate),X.objectType=(null===(U=H.esds)||void 0===U?void 0:U.objectType)||2,H.esds&&(X.config=Array.from(H.esds.config)),X.codec=(null===(i=H.esds)||void 0===i?void 0:i.codec)||"mp4a.40.2"}if(X.sampleDuration=NU.getFrameDuration(X.sampleRate,X.timescale),X.objectType=(null===(E=H.esds)||void 0===E?void 0:E.objectType)||2,H.esds&&(H.esds.config?X.config=Array.from(H.esds.config):console.warn("esds config is null")),X.codec=(null===(k=H.esds)||void 0===k?void 0:k.codec)||"mp4a.40.2",X.sampleRateIndex=NU.getRateIndexByRate(X.sampleRate),X.ext={},X.ext.stss=null===(f=a.mdia)||void 0===f||null===(v=f.minf)||void 0===v||null===(N=v.stbl)||void 0===N?void 0:N.stss,X.ext.ctts=null===(T=a.mdia)||void 0===T||null===(C=T.minf)||void 0===C||null===(g=C.stbl)||void 0===g?void 0:g.ctts,X.present=!0,H&&"enca"===H.type)X.isAudioEncryption=!0,H.data_format=null===(G=H.sinf)||void 0===G||null===(x=G.frma)||void 0===x?void 0:x.data_format,H.default_KID=null===(I=H.sinf)||void 0===I||null===(D=I.schi)||void 0===D?void 0:D.tenc.default_KID,H.default_IsEncrypted=null===(Y=H.sinf)||void 0===Y||null===(M=Y.schi)||void 0===M?void 0:M.tenc.default_IsEncrypted,H.default_IV_size=null===(K=H.sinf)||void 0===K||null===(w=K.schi)||void 0===w?void 0:w.tenc.default_IV_size,X.audioSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,X.useEME=e.useEME,X.kidValue=e.kidValue,X.enca=H}if(n&&(n.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!n&&n.isAudioEncryption),null!=t&&t.encv||null!=n&&n.enca){var P,j,z=null==t||null===(P=t.encv)||void 0===P?void 0:P.default_KID,O=null==n||null===(j=n.enca)||void 0===j?void 0:j.default_KID,_=z||O?(z||O).join(""):null;t&&(t.kid=_),n&&(n.kid=_)}return t&&(t.flags=3841),n&&(n.flags=1793),{videoTrack:t,audioTrack:n}}}},{key:"evaluateDefaultDuration",value:function(e,t,n){var U,i=null==t||null===(U=t.samples)||void 0===U?void 0:U.length;return i?1024*i/t.timescale*e.timescale/n:1024}},{key:"moofToSamples",value:function(t,n,U){var i={};return t.mfhd&&(n&&(n.sequenceNumber=t.mfhd.sequenceNumber),U&&(U.sequenceNumber=t.mfhd.sequenceNumber)),t.traf.forEach((function(t){var l=t.tfhd,F=t.tfdt,a=t.trun;if(l&&a){F&&(n&&n.id===l.trackId&&(n.baseMediaDecodeTime=F.baseMediaDecodeTime),U&&U.id===l.trackId&&(U.baseMediaDecodeTime=F.baseMediaDecodeTime));var r=l.defaultSampleSize||0,d=l.defaultSampleDuration||e.evaluateDefaultDuration(n,U,a.samples.length||a.sampleCount),Q=a.dataOffset||0,o=0,s=-1;if(!a.samples.length&&a.sampleCount){i[l.trackId]=[];for(var c=0;c<a.sampleCount;c++)i[l.trackId].push({offset:Q,dts:o,duration:d,size:r}),o+=d,Q+=r}else i[l.trackId]=a.samples.map((function(e,t){return(e={offset:Q,dts:o,pts:o+(e.cts||0),duration:e.duration||d,size:e.size||r,gopId:s,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(s++,e.gopId=s),o+=e.duration,Q+=e.size,e}))}})),i}},{key:"moovToSamples",value:function(e){var t=e.trak;if(t&&t.length){var n=t.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),U=t.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)}));if(n||U){var i,l;if(n){var F,a,r=null===(F=n.mdia)||void 0===F||null===(a=F.minf)||void 0===a?void 0:a.stbl;if(!r)return;var d=r.stts,Q=r.stsc,o=r.stsz,s=r.stco,c=r.stss,R=r.ctts;if(!(d&&Q&&o&&s&&c))return;i=KU(d,Q,o,s,R,c)}if(U){var B,u,h,V=null===(B=U.mdia)||void 0===B||null===(u=B.minf)||void 0===u?void 0:u.stbl;if(!V)return;var Z=null===(h=U.mdia.mdhd)||void 0===h?void 0:h.timescale,m=V.stts,p=V.stsc,S=V.stsz,J=V.stco;if(!(Z&&m&&p&&S&&J))return;l=KU(m,p,S,J)}return{videoSamples:i,audioSamples:l}}}}}]),e}();function KU(e,t,n,U,i,l){var F,a,r,d=[],Q=null==i?void 0:i.entries,o=t.entries,s=U.entries,c=n.entrySizes,R=null==l?void 0:l.entries;R&&(F={},R.forEach((function(e){F[e-1]=!0}))),Q&&(a=[],Q.forEach((function(e){for(var t=e.count,n=e.offset,U=0;U<t;U++)a.push(n)})));var B=-1,u=0,h=0,V=0,Z=0,m=0,p=o[0].samplesPerChunk,S=o[1]?o[1].firstChunk-1:1/0;return e.entries.forEach((function(e){for(var t=e.count,U=e.delta,i=0;i<t;i++)r={dts:u,duration:U,size:c[h]||n.sampleSize,offset:s[V]+m,index:h},R&&(r.keyframe=F[h],r.keyframe&&B++,r.gopId=B),a&&h<a.length&&(r.pts=r.dts+a[h]),d.push(r),u+=U,++h<p?m+=r.size:(V++,m=0,V>=S&&(Z++,S=o[Z+1]?o[Z+1].firstChunk-1:1/0),p+=o[Z].samplesPerChunk)})),d}function wU(e,t){return e.dataReferenceIndex=gU(t,6),e.width=gU(t,24),e.height=gU(t,26),e.horizresolution=XU(t,28),e.vertresolution=XU(t,32),e.frameCount=gU(t,40),e.depth=gU(t,74),78}function HU(e,t){return e.dataReferenceIndex=gU(t,6),e.channelCount=gU(t,16),e.sampleSize=gU(t,18),e.sampleRate=XU(t,24)/65536,28}function PU(e,t,n){if(e){if(e.size!==e.data.length)throw new Error("box ".concat(e.type," size !== data.length"));var U={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(U.version=e.data[e.headerSize],U.flags=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),U.headerSize+=4),n(U,e.data.subarray(U.headerSize),U.start+U.headerSize),U}}var jU=function(){for(var e=[],t=arguments.length,n=new Array(t),U=0;U<t;U++)n[U]=arguments[U];return n.forEach((function(t){e.push(function(e,t,n){for(var U=String(n),i=t>>0,l=Math.ceil(i/U.length),F=[],a=String(e);l--;)F.push(U);return F.join("").substring(0,i-a.length)+a}(Number(t).toString(16),2,0))})),e[0]};var zU=function(){function e(){iU(this,e),this.buffer=new Uint8Array(0)}return FU(e,[{key:"write",value:function(){for(var e=this,t=arguments.length,n=new Array(t),U=0;U<t;U++)n[U]=arguments[U];n.forEach((function(t){t?e.buffer=function(e){for(var t=0,n=arguments.length,U=new Array(n>1?n-1:0),i=1;i<n;i++)U[i-1]=arguments[i];U.forEach((function(e){t+=e.length}));var l=new e(t),F=0;return U.forEach((function(e){l.set(e,F),F+=e.length})),l}(Uint8Array,e.buffer,t):window.console.warn(t)}))}}],[{key:"writeUint16",value:function(e){return new Uint8Array([e>>8&255,255&e])}},{key:"writeUint32",value:function(e){return new Uint8Array([e>>24,e>>16&255,e>>8&255,255&e])}}]),e}(),OU=Math.pow(2,32)-1,_U=function(){function e(){iU(this,e)}return FU(e,null,[{key:"box",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),U=1;U<t;U++)n[U-1]=arguments[U];var i=8+(n=n.filter(Boolean)).reduce((function(e,t){return e+t.byteLength}),0),l=new Uint8Array(i);l[0]=i>>24&255,l[1]=i>>16&255,l[2]=i>>8&255,l[3]=255&i,l.set(e,4);var F=8;return n.forEach((function(e){l.set(e,F),F+=e.byteLength})),l}},{key:"ftyp",value:function(t){return t.find((function(e){return e.type===cU&&e.codecType===hU}))?e.FTYPHEV1:e.FTYPAVC1}},{key:"initSegment",value:function(t){return TU(e.ftyp(t),e.moov(t))}},{key:"pssh",value:function(t){var n=new Uint8Array([1,0,0,0].concat([16,119,239,236,192,178,77,2,172,227,60,30,82,226,251,75],[0,0,0,1],xU(t.kid),[0,0,0,0]));return e.box(e.types.pssh,n)}},{key:"moov",value:function(t){if(t[0].useEME&&(t[0].encv||t[0].enca)){t[0].pssh||(t[0].pssh={kid:t[0].kid});var n=this.pssh(t[0].pssh);return e.box.apply(e,[e.types.moov,e.mvhd(t[0].mvhdDurtion||t[0].duration,t[0].mvhdTimecale||t[0].timescale),e.mvex(t)].concat(dU(t.map((function(t){return e.trak(t)}))),[n]))}return e.box.apply(e,[e.types.moov,e.mvhd(t[0].mvhdDurtion||t[0].duration,t[0].mvhdTimecale||t[0].timescale)].concat(dU(t.map((function(t){return e.trak(t)}))),[e.mvex(t)]))}},{key:"mvhd",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return e.box(e.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n,t>>24&255,t>>16&255,t>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}},{key:"trak",value:function(t){return e.box(e.types.trak,e.tkhd(t.id,t.tkhdDuration||0,t.width,t.height),e.mdia(t))}},{key:"tkhd",value:function(t,n){var U=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,U>>8&255,255&U,0,0,i>>8&255,255&i,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.duration,t.timescale),e.hdlr(t.type),e.minf(t))}},{key:"mdhd",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n,t>>24&255,t>>16&255,t>>8&255,255&t,85,196,0,0]))}},{key:"hdlr",value:function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])}},{key:"minf",value:function(t){return e.box(e.types.minf,t.type===cU?e.VMHD:e.SMHD,e.DINF,e.stbl(t))}},{key:"stbl",value:function(t){var n=[];return t&&t.ext&&t.ext.stss&&n.push(e.stss(t.ext.stss.entries)),e.box(e.types.stbl,e.stsd(t),e.STTS,n[0],e.STSC,e.STSZ,e.STCO)}},{key:"stsd",value:function(t){var n;return n="audio"===t.type?t.useEME&&t.enca?e.enca(t):e.mp4a(t):t.useEME&&t.encv?e.encv(t):e.avc1hev1vvc1(t),e.box(e.types.stsd,new Uint8Array([0,0,0,0,0,0,0,1]),n)}},{key:"enca",value:function(t){var n=t.enca.channelCount,U=t.enca.sampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,U>>8&255,255&U,0,0]),l=e.esds(t.config),F=e.sinf(t.enca);return e.box(e.types.enca,i,l,F)}},{key:"encv",value:function(t){var n,U,i=t.sps.length>0?t.sps[0]:[],l=t.pps.length>0?t.pps[0]:[],F=t.width,a=t.height,r=t.sarRatio[0],d=t.sarRatio[1],Q=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,F>>8&255,255&F,a>>8&255,255&a,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o=new Uint8Array((n=(U=[1,i[1],i[2],i[3],255,225,i.length>>>8&255,255&i.length]).concat.apply(U,dU(i)).concat([1,l.length>>>8&255,255&l.length])).concat.apply(n,dU(l))),s=new Uint8Array([0,0,88,57,0,15,200,192,0,4,86,72]),c=e.sinf(t.encv),R=new Uint8Array([r>>24,r>>16&255,r>>8&255,255&r,d>>24,d>>16&255,d>>8&255,255&d]);return e.box(e.types.encv,Q,e.box(e.types.avcC,o),e.box(e.types.btrt,s),c,e.box(e.types.pasp,R))}},{key:"schi",value:function(t){var n=new Uint8Array([]),U=e.tenc(t);return e.box(e.types.schi,n,U)}},{key:"tenc",value:function(t){var n=new Uint8Array([0,0,0,0,0,0,255&t.default_IsEncrypted,255&t.default_IV_size].concat(xU(t.default_KID)));return e.box(e.types.tenc,n)}},{key:"sinf",value:function(t){var n=new Uint8Array([]),U=new Uint8Array([t.data_format.charCodeAt(0),t.data_format.charCodeAt(1),t.data_format.charCodeAt(2),t.data_format.charCodeAt(3)]),i=new Uint8Array([0,0,0,0,99,101,110,99,0,1,0,0]),l=e.schi(t);return e.box(e.types.sinf,n,e.box(e.types.frma,U),e.box(e.types.schm,i),l)}},{key:"avc1hev1vvc1",value:function(t){var n,U;t.codecType===hU?(n=e.hvcC(t),U=e.types.hvc1):t.codecType===VU?(n=e.vvcC(t),U=e.types.bvc2):(n=e.avcC(t),U=e.types.avc1);var i=[new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,t.width>>8&255,255&t.width,t.height>>8&255,255&t.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),n];return t.codecType===hU?i.push(e.box(e.types.fiel,new Uint8Array([1,0]))):t.sarRatio&&t.sarRatio.length>1&&i.push(e.pasp(t.sarRatio)),e.box.apply(e,[U].concat(i))}},{key:"avcC",value:function(t){var n,U,i,l=[],F=[];return t.sps.forEach((function(e){i=e.byteLength,l.push(i>>>8&255),l.push(255&i),l.push.apply(l,dU(e))})),t.pps.forEach((function(e){i=e.byteLength,F.push(i>>>8&255),F.push(255&i),F.push.apply(F,dU(e))})),e.box(e.types.avcC,new Uint8Array((n=(U=[1,l[3],l[4],l[5],255,224|t.sps.length]).concat.apply(U,l).concat([t.pps.length])).concat.apply(n,F)))}},{key:"vvcC",value:function(t){var n=t.vvcC;return e.box(e.types.bv2C,new Uint8Array(n))}},{key:"hvcC",value:function(t){var n=t.hvcC;if(n instanceof ArrayBuffer||n instanceof Uint8Array)return n;var U,i=t.vps,l=t.sps,F=t.pps;if(n){var a=n.generalProfileCompatibilityFlags,r=n.generalConstraintIndicatorFlags,d=(i.length&&1)+(l.length&&1)+(F.length&&1);U=[1,n.generalProfileSpace<<6|n.generalTierFlag<<5|n.generalProfileIdc,a>>>24,a>>>16,a>>>8,a,r[0],r[1],r[2],r[3],r[4],r[5],n.generalLevelIdc,240,0,252,252|n.chromaFormatIdc,248|n.bitDepthLumaMinus8,248|n.bitDepthChromaMinus8,0,0,n.numTemporalLayers<<3|n.temporalIdNested<<2|3,d];var Q=function(e){var t;U.push(e.length>>8,e.length),(t=U).push.apply(t,dU(e))};i.length&&(U.push(160,0,i.length),i.forEach(Q)),l.length&&(U.push(161,0,l.length),l.forEach(Q)),F.length&&(U.push(162,0,F.length),F.forEach(Q))}else U=[1,1,96,0,0,0,144,0,0,0,0,0,93,240,0,252,253,248,248,0,0,15,3,160,0,1,0,24,64,1,12,1,255,255,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,153,152,9,161,0,1,0,45,66,1,1,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,160,2,128,128,45,22,89,153,164,147,43,154,128,128,128,130,0,0,3,0,2,0,0,3,0,50,16,162,0,1,0,7,68,1,193,114,180,98,64];return e.box(e.types.hvcC,new Uint8Array(U))}},{key:"pasp",value:function(t){var n=rU(t,2),U=n[0],i=n[1];return e.box(e.types.pasp,new Uint8Array([U>>24,U>>16&255,U>>8&255,255&U,i>>24,i>>16&255,i>>8&255,255&i]))}},{key:"mp4a",value:function(t){return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,t.sampleRate>>8&255,255&t.sampleRate,0,0]),t.config.length?e.esds(t.config):void 0)}},{key:"esds",value:function(t){var n=t.length;return e.box(e.types.esds,new Uint8Array([0,0,0,0,3,23+n,0,0,0,4,15+n,64,21,0,6,0,0,0,218,192,0,0,218,192,5].concat([n]).concat(t).concat([6,1,2])))}},{key:"mvex",value:function(t){return e.box.apply(e,[e.types.mvex].concat(dU(t.map((function(t){return e.trex(t.id)})))))}},{key:"trex",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trex1",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,2,0,0,0,0,0,0,1,0,0]))}},{key:"trex2",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,4,0,0,0,0,0,2,0,0,0]))}},{key:"moof",value:function(t){return e.box.apply(e,[e.types.moof,e.mfhd(t[0].samples?t[0].samples[0].gopId:0)].concat(dU(t.map((function(t){return e.traf(t)})))))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"traf",value:function(t){var n=e.tfhd(t.id),U=e.tfdt(t,t.baseMediaDecodeTime),i=0;if(t.isVideo&&t.videoSenc&&t.videoSenc.forEach((function(e){i+=8,e.subsamples&&e.subsamples.length&&(i+=2,i+=6*e.subsamples.length)})),t.videoSencLength=i,t.useEME&&(t.isVideoEncryption||t.isAudioEncryption)){if(t.isVideoEncryption){if(t.isVideo){var l=e.saiz(t),F=e.saio(t),a=e.trun1(t),r=e.senc(t);return e.box(e.types.traf,n,U,l,F,a,r)}if(t.isAudioEncryption){var d=e.sbgp(),Q=e.saiz(t),o=e.saio(t),s=e.senc(t),c=e.trun1(t);return e.box(e.types.traf,n,U,d,Q,o,s,c)}var R=e.sbgp(),B=e.trun1(t);return e.box(e.types.traf,n,U,R,B)}if(t.isVideo){var u=e.trun1(t);return e.box(e.types.traf,n,U,u)}var h=e.sbgp(),V=e.saiz(t),Z=e.saio(t),m=e.senc(t),p=e.trun1(t);return e.box(e.types.traf,n,U,h,V,Z,m,p)}var S=e.sdtp(t);return e.box(e.types.traf,n,U,S,e.trun(t.samples,S.byteLength+76))}},{key:"sdtp",value:function(t){var n=new zU;return t.samples.forEach((function(e){n.write(new Uint8Array(t.isVideo?[e.keyframe?32:16]:[16]))})),e.box(e.types.sdtp,this.extension(0,0),n.buffer)}},{key:"trun1",value:function(t){var n=new zU,U=zU.writeUint32(t.samples.length),i=null;if(t.isVideo){var l=t.videoSencLength;i=zU.writeUint32(16*t.samples.length+l+149),!t.isVideoEncryption&&t.isAudioEncryption&&(i=zU.writeUint32(16*t.samples.length+92))}else{var F=12*t.samples.length+124;t.isAudioEncryption&&(F=12*t.samples.length+8*t.audioSenc.length+177),i=zU.writeUint32(F)}return t.samples.forEach((function(e){n.write(zU.writeUint32(e.duration)),n.write(zU.writeUint32(e.size)),n.write(zU.writeUint32(e.keyframe?33554432:65536)),t.isVideo&&n.write(zU.writeUint32(e.cts?e.cts:0))})),e.box(e.types.trun,this.extension(0,t.flags),U,i,n.buffer)}},{key:"senc",value:function(t){var n=new zU,U=t.samples.length,i=t.isVideo?16:8,l=t.isVideo?2:0,F=[],a=0;return t.isVideo?(F=t.videoSenc,a=t.videoSencLength):F=t.audioSenc,a=a||i*U,n.write(zU.writeUint32(16+a),e.types.senc,this.extension(0,l)),n.write(zU.writeUint32(U)),F.forEach((function(e){for(var t=0;t<e.InitializationVector.length;t++)n.write(new Uint8Array([e.InitializationVector[t]]));e.subsamples&&e.subsamples.length&&(n.write(zU.writeUint16(e.subsamples.length)),e.subsamples.forEach((function(e){n.write(zU.writeUint16(e.BytesOfClearData)),n.write(zU.writeUint32(e.BytesOfProtectedData))})))})),n.buffer}},{key:"saio",value:function(t){var n=12*t.samples.length+141;!t.isVideo&&t.isAudioEncryption&&(n=149);var U=new Uint8Array([1,0,0,0,0,0,0,1,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n]);return e.box(e.types.saio,U)}},{key:"saiz",value:function(t){var n=t.samples.length,U=new Uint8Array([0,0,0,0,16,n>>24&255,n>>16&255,n>>8&255,255&n]);return e.box(e.types.saiz,U)}},{key:"sbgp",value:function(){var t=new Uint8Array([114,111,108,108,0,0,0,1,0,0,1,25,0,0,0,1]);return e.box(e.types.sbgp,this.extension(0,0),t)}},{key:"extension",value:function(e,t){return new Uint8Array([e,t>>16&255,t>>8&255,255&t])}},{key:"tfhd",value:function(t){return e.box(e.types.tfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"tfdt",value:function(t,n){var U=Math.floor(n/(OU+1)),i=Math.floor(n%(OU+1));return t.useEME&&(t.isVideoEncryption||t.isAudioEncryption)?e.box(e.types.tfdt,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i])):e.box(e.types.tfdt,new Uint8Array([1,0,0,0,U>>24,U>>16&255,U>>8&255,255&U,i>>24,i>>16&255,i>>8&255,255&i]))}},{key:"trun",value:function(t,n){var U=t.length,i=12+16*U;n+=8+i;var l=new Uint8Array(i);l.set([0,0,15,1,U>>>24&255,U>>>16&255,U>>>8&255,255&U,n>>>24&255,n>>>16&255,n>>>8&255,255&n],0);for(var F=0;F<U;F++){var a=t[F],r=a.duration,d=a.size,Q=a.flag,o=void 0===Q?{}:Q,s=a.cts,c=void 0===s?0:s;l.set([r>>>24&255,r>>>16&255,r>>>8&255,255&r,d>>>24&255,d>>>16&255,d>>>8&255,255&d,o.isLeading<<2|(null===o.dependsOn||void 0===o.dependsOn?1:o.dependsOn),o.isDependedOn<<6|o.hasRedundancy<<4|o.paddingValue<<1|(null===o.isNonSyncSample||void 0===o.isNonSyncSample?1:o.isNonSyncSample),61440&o.degradationPriority,15&o.degradationPriority,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*F)}return e.box(e.types.trun,l)}},{key:"moovMP4",value:function(t){return e.box.apply(e,[e.types.moov,e.mvhd(t[0].duration,t[0].timescale)].concat(dU(t.map((function(t){return e.trackMP4(t)})))))}},{key:"trackMP4",value:function(t){return e.box(e.types.trak,e.tkhd(t.id,t.duration,t.width,t.height),e.mdiaMP4(t))}},{key:"mdiaMP4",value:function(t){return e.box(e.types.mdia,e.mdhd(t.duration,t.timescale),e.hdlr(t.type),e.minfMP4(t))}},{key:"minfMP4",value:function(t){return e.box(e.types.minf,t.type===cU?e.VMHD:e.SMHD,e.DINF,e.stblMP4(t))}},{key:"stblMP4",value:function(t){var n=t.ext,U=[e.stsd(t),e.stts(n.stts),e.stsc(n.stsc),e.stsz(n.stsz),e.stco(n.stco)];return n.stss.length&&U.push(e.stss(n.stss)),n.ctts.length&&U.push(e.ctts(n.ctts)),e.box.apply(e,[e.types.stbl].concat(U))}},{key:"stts",value:function(t){var n=t.length,U=new Uint8Array(8*n),i=0;return t.forEach((function(e){var t=e.value,n=e.count;U.set([n>>24,n>>16&255,n>>8&255,255&n,t>>24,t>>16&255,t>>8&255,255&t],i),i+=8})),e.box(e.types.stts,TU(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"stsc",value:function(t){var n=t.length,U=new Uint8Array(12*n),i=0;return t.forEach((function(e){var t=e.firstChunk,n=e.samplesPerChunk,l=e.sampleDescIndex;U.set([t>>24,t>>16&255,t>>8&255,255&t,n>>24,n>>16&255,n>>8&255,255&n,l>>24,l>>16&255,l>>8&255,255&l],i),i+=12})),e.box(e.types.stsc,TU(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"stsz",value:function(t){var n=t.length,U=new Uint8Array(4*n),i=0;return t.forEach((function(e){U.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stsz,TU(new Uint8Array([0,0,0,0,0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"stco",value:function(t){var n=t.length,U=new Uint8Array(4*n),i=0;return t.forEach((function(e){U.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stco,TU(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"stss",value:function(t){var n=t.length,U=new Uint8Array(4*n),i=0;return t.forEach((function(e){U.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stss,TU(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"ctts",value:function(t){var n=t.length,U=new Uint8Array(8*n),i=0;return t.forEach((function(e){var t=e.value,n=e.count;U.set([n>>24,n>>16&255,n>>8&255,255&n,t>>24,t>>16&255,t>>8&255,255&t],i),i+=8})),e.box(e.types.ctts,TU(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"styp",value:function(){return e.box(e.types.styp,new Uint8Array([109,115,100,104,0,0,0,0,109,115,100,104,109,115,105,120]))}},{key:"sidx",value:function(t){var n=t.timescale,U=t.samples[0].duration,i=U*t.samples.length,l=t.samples[0].sampleOffset*U,F=8;t.samples.forEach((function(e){F+=e.size}));var a=0;if(t.isVideo){var r,d=0;t.videoSenc&&(r=t.videoSenc),t.isVideo&&r.forEach((function(e){d+=8,e.subsamples&&e.subsamples.length&&(d+=2,d+=6*e.subsamples.length)})),t.videoSencLength=d,a=F+141+16*t.samples.length+d,t.useEME&&t.isAudioEncryption&&!t.isVideoEncryption&&(a=F+16*t.samples.length+84)}else a=F+116+12*t.samples.length,t.useEME&&t.isAudioEncryption&&(a=F+169+12*t.samples.length+8*t.audioSenc.length);var Q=new Uint8Array([0,0,0,0,0,0,0,255&t.id,n>>24&255,n>>16&255,n>>8&255,255&n,l>>24&255,l>>16&255,l>>8&255,255&l,0,0,0,0,0,0,0,1,0,a>>16&255,a>>8&255,255&a,i>>24&255,i>>16&255,i>>8&255,255&i,144,0,0,0]);return e.box(e.types.sidx,Q)}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}}]),e}();aU(_U,"types",["avc1","avcC","hvc1","hvcC","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","pasp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trex","tkhd","vmhd","smhd","ctts","stss","styp","pssh","sidx","sbgp","saiz","saio","senc","trun","encv","enca","sinf","btrt","frma","tenc","schm","schi","mehd","fiel","sdtp","bvc2","bv2C"].reduce((function(e,t){return e[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)],e}),Object.create(null))),aU(_U,"HDLR_TYPES",{video:new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),audio:new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0])}),aU(_U,"FTYPAVC1",_U.box(_U.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]))),aU(_U,"FTYPHEV1",_U.box(_U.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,104,101,118,49]))),aU(_U,"DINF",_U.box(_U.types.dinf,_U.box(_U.types.dref,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1])))),aU(_U,"VMHD",_U.box(_U.types.vmhd,new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]))),aU(_U,"SMHD",_U.box(_U.types.smhd,new Uint8Array([0,0,0,0,0,0,0,0]))),aU(_U,"StblTable",new Uint8Array([0,0,0,0,0,0,0,0])),aU(_U,"STTS",_U.box(_U.types.stts,_U.StblTable)),aU(_U,"STSC",_U.box(_U.types.stsc,_U.StblTable)),aU(_U,"STSZ",_U.box(_U.types.stsz,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]))),aU(_U,"STCO",_U.box(_U.types.stco,_U.StblTable));var AU=function(){function e(t,n){iU(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),e.disabled=n}return FU(e,[{key:"debug",value:function(){var t;if(!e.disabled){for(var n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];(t=console).debug.apply(t,[this._prefix].concat(U))}}},{key:"log",value:function(){var t;if(!e.disabled){for(var n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];(t=console).log.apply(t,[this._prefix].concat(U))}}},{key:"warn",value:function(){var t;if(!e.disabled){for(var n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];(t=console).warn.apply(t,[this._prefix].concat(U))}}},{key:"error",value:function(){var t;if(!e.disabled){for(var n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];(t=console).error.apply(t,[this._prefix].concat(U))}}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();aU(AU,"disabled",!0);for(var qU=function(){function e(t,n,U){iU(this,e),this.videoTrack=t,this.audioTrack=n;var i=/Chrome\/([^.]+)/.exec(navigator.userAgent);this.forceFirstIDR=i&&Number(i[1])<50,this.log=new AU("FMP4Remuxer",!U||!U.openLog||!U.openLog)}return FU(e,[{key:"remux",value:function(){var e,t,n,U,i,l=arguments.length>0&&void 0!==arguments[0]&&arguments[0],F=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=this.videoTrack,r=this.audioTrack,d=a.exist(),Q=r.exist(),o=[];return l&&(F&&F.initMerge?(d&&o.push(this.videoTrack),Q&&o.push(this.audioTrack),n=_U.initSegment(o)):(d&&(e=_U.initSegment([this.videoTrack])),Q&&(t=_U.initSegment([this.audioTrack])))),d&&a.hasSample()&&(U=this._remuxVideo()),Q&&r.hasSample()&&(i=this._remuxAudio()),a.samples=[],r.samples=[],{initSegment:n,videoInitSegment:e,audioInitSegment:t,videoSegment:U,audioSegment:i}}},{key:"_remuxVideo",value:function(){var e=this.videoTrack;this.forceFirstIDR&&(e.samples[0].flag={dependsOn:2,isNonSyncSample:0});var t=e.samples,n=0;t.forEach((function(e){n+=e.units.reduce((function(e,t){return e+t.byteLength}),0),n+=4*e.units.length}));for(var U,i=new Uint8Array(n),l=new DataView(i.buffer),F=function(e,n){n=t[a];var F=0;n.units.forEach((function(t){l.setUint32(e,t.byteLength),e+=4,i.set(t,e),e+=t.byteLength,F+=4+t.byteLength})),n.size=F,d=e,U=n},a=0,r=t.length,d=0;a<r;a++)F(d,U);var Q=_U.mdat(i);return TU(_U.moof([e]),Q)}},{key:"_remuxAudio",value:function(){var e=this.audioTrack,t=new Uint8Array(e.samples.reduce((function(e,t){return e+t.size}),0));e.samples.reduce((function(e,n){return t.set(n.data,e),e+n.size}),0);var n=_U.mdat(t);return TU(_U.moof([e]),n)}},{key:"reset",value:function(){this.videoTrack.reset(),this.audioTrack.reset()}}]),e}(),$U=function(){function e(){M(this,e)}return w(e,[{key:"mixIn",value:function(e){return Object.assign(this,e)}},{key:"clone",value:function(){var e=new this.constructor;return Object.assign(e,this),e}}],[{key:"create",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return _(this,t)}}]),e}(),ei=function(e){P(n,e);var t=q(n);function n(){var e,U=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4*U.length;M(this,n),e=t.call(this);var l=U;if(l instanceof ArrayBuffer&&(l=new Uint8Array(l)),(l instanceof Int8Array||l instanceof Uint8ClampedArray||l instanceof Int16Array||l instanceof Uint16Array||l instanceof Int32Array||l instanceof Uint32Array||l instanceof Float32Array||l instanceof Float64Array)&&(l=new Uint8Array(l.buffer,l.byteOffset,l.byteLength)),l instanceof Uint8Array){for(var F=l.byteLength,a=[],r=0;r<F;r+=1)a[r>>>2]|=l[r]<<24-r%4*8;e.words=a,e.sigBytes=F}else e.words=U,e.sigBytes=i;return e}return w(n,[{key:"toString",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:ti).stringify(this)}},{key:"concat",value:function(e){var t=this.words,n=e.words,U=this.sigBytes,i=e.sigBytes;if(this.clamp(),U%4)for(var l=0;l<i;l+=1){var F=n[l>>>2]>>>24-l%4*8&255;t[U+l>>>2]|=F<<24-(U+l)%4*8}else for(var a=0;a<i;a+=4)t[U+a>>>2]=n[a>>>2];return this.sigBytes+=i,this}},{key:"clamp",value:function(){var e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=Math.ceil(t/4)}},{key:"clone",value:function(){var e=$(j(n.prototype),"clone",this).call(this);return e.words=this.words.slice(0),e}}],[{key:"random",value:function(e){for(var t,U=[],i=function(e){var t=e,n=987654321,U=4294967295;return function(){var e=((n=36969*(65535&n)+(n>>16)&U)<<16)+(t=18e3*(65535&t)+(t>>16)&U)&U;return e/=4294967296,(e+=.5)*(Math.random()>.5?1:-1)}},l=0;l<e;l+=4){var F=i(4294967296*(t||Math.random()));t=987654071*F(),U.push(4294967296*F()|0)}return new n(U,e)}}]),n}($U),ti={stringify:function(e){for(var t=e.words,n=e.sigBytes,U=[],i=0;i<n;i+=1){var l=t[i>>>2]>>>24-i%4*8&255;U.push((l>>>4).toString(16)),U.push((15&l).toString(16))}return U.join("")},parse:function(e){for(var t=e.length,n=[],U=0;U<t;U+=2)n[U>>>3]|=parseInt(e.substr(U,2),16)<<24-U%8*4;return new ei(n,t/2)}},ni=function(e){for(var t=e.length,n=[],U=0;U<t;U+=1)n[U>>>2]|=(255&e.charCodeAt(U))<<24-U%4*8;return new ei(n,t)},Ui=function(e){return ni(unescape(encodeURIComponent(e)))},ii=function(e){P(n,e);var t=q(n);function n(){var e;return M(this,n),(e=t.call(this))._minBufferSize=0,e}return w(n,[{key:"reset",value:function(){this._data=new ei,this._nDataBytes=0}},{key:"_append",value:function(e){var t=e;"string"==typeof t&&(t=Ui(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}},{key:"_process",value:function(e){var t,n=this._data,U=this.blockSize,i=n.words,l=n.sigBytes,F=l/(4*U),a=(F=e?Math.ceil(F):Math.max((0|F)-this._minBufferSize,0))*U,r=Math.min(4*a,l);if(a){for(var d=0;d<a;d+=U)this._doProcessBlock(i,d);t=i.splice(0,a),n.sigBytes-=r}return new ei(t,r)}},{key:"clone",value:function(){var e=$(j(n.prototype),"clone",this).call(this);return e._data=this._data.clone(),e}}]),n}($U),li=function(e){P(n,e);var t=q(n);function n(e){var U;return M(this,n),(U=t.call(this)).blockSize=16,U.cfg=Object.assign(new $U,e),U.reset(),U}return w(n,[{key:"reset",value:function(){$(j(n.prototype),"reset",this).call(this),this._doReset()}},{key:"update",value:function(e){return this._append(e),this._process(),this}},{key:"finalize",value:function(e){return e&&this._append(e),this._doFinalize()}}],[{key:"_createHelper",value:function(e){return function(t,n){return new e(n).finalize(t)}}},{key:"_createHmacHelper",value:function(e){return function(t,n){return new Fi(e,n).finalize(t)}}}]),n}(ii),Fi=function(e){P(n,e);var t=q(n);function n(e,U){var i;M(this,n),i=t.call(this);var l=new e;i._hasher=l;var F=U;"string"==typeof F&&(F=Ui(F));var a=l.blockSize,r=4*a;F.sigBytes>r&&(F=l.finalize(U)),F.clamp();var d=F.clone();i._oKey=d;var Q=F.clone();i._iKey=Q;for(var o=d.words,s=Q.words,c=0;c<a;c+=1)o[c]^=1549556828,s[c]^=909522486;return d.sigBytes=r,Q.sigBytes=r,i.reset(),i}return w(n,[{key:"reset",value:function(){var e=this._hasher;e.reset(),e.update(this._iKey)}},{key:"update",value:function(e){return this._hasher.update(e),this}},{key:"finalize",value:function(e){var t=this._hasher,n=t.finalize(e);return t.reset(),t.finalize(this._oKey.clone().concat(n))}}]),n}($U),ai={stringify:function(e){var t=e.words,n=e.sigBytes,U=this._map;e.clamp();for(var i=[],l=0;l<n;l+=3)for(var F=(t[l>>>2]>>>24-l%4*8&255)<<16|(t[l+1>>>2]>>>24-(l+1)%4*8&255)<<8|t[l+2>>>2]>>>24-(l+2)%4*8&255,a=0;a<4&&l+.75*a<n;a+=1)i.push(U.charAt(F>>>6*(3-a)&63));var r=U.charAt(64);if(r)for(;i.length%4;)i.push(r);return i.join("")},parse:function(e){var t=e.length,n=this._map,U=this._reverseMap;if(!U){this._reverseMap=[],U=this._reverseMap;for(var i=0;i<n.length;i+=1)U[n.charCodeAt(i)]=i}var l=n.charAt(64);if(l){var F=e.indexOf(l);-1!==F&&(t=F)}return function(e,t,n){for(var U=[],i=0,l=0;l<t;l+=1)if(l%4){var F=n[e.charCodeAt(l-1)]<<l%4*2|n[e.charCodeAt(l)]>>>6-l%4*2;U[i>>>2]|=F<<24-i%4*8,i+=1}return ei.create(U,i)}(e,t,U)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},ri=[],di=0;di<64;di+=1)ri[di]=4294967296*Math.abs(Math.sin(di+1))|0;var Qi=function(e,t,n,U,i,l,F){var a=e+(t&n|~t&U)+i+F;return(a<<l|a>>>32-l)+t},oi=function(e,t,n,U,i,l,F){var a=e+(t&U|n&~U)+i+F;return(a<<l|a>>>32-l)+t},si=function(e,t,n,U,i,l,F){var a=e+(t^n^U)+i+F;return(a<<l|a>>>32-l)+t},ci=function(e,t,n,U,i,l,F){var a=e+(n^(t|~U))+i+F;return(a<<l|a>>>32-l)+t},Ri=function(e){P(n,e);var t=q(n);function n(){return M(this,n),t.apply(this,arguments)}return w(n,[{key:"_doReset",value:function(){this._hash=new ei([1732584193,4023233417,2562383102,271733878])}},{key:"_doProcessBlock",value:function(e,t){for(var n=e,U=0;U<16;U+=1){var i=t+U,l=e[i];n[i]=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8)}var F=this._hash.words,a=n[t+0],r=n[t+1],d=n[t+2],Q=n[t+3],o=n[t+4],s=n[t+5],c=n[t+6],R=n[t+7],B=n[t+8],u=n[t+9],h=n[t+10],V=n[t+11],Z=n[t+12],m=n[t+13],p=n[t+14],S=n[t+15],J=F[0],W=F[1],y=F[2],b=F[3];J=Qi(J,W,y,b,a,7,ri[0]),b=Qi(b,J,W,y,r,12,ri[1]),y=Qi(y,b,J,W,d,17,ri[2]),W=Qi(W,y,b,J,Q,22,ri[3]),J=Qi(J,W,y,b,o,7,ri[4]),b=Qi(b,J,W,y,s,12,ri[5]),y=Qi(y,b,J,W,c,17,ri[6]),W=Qi(W,y,b,J,R,22,ri[7]),J=Qi(J,W,y,b,B,7,ri[8]),b=Qi(b,J,W,y,u,12,ri[9]),y=Qi(y,b,J,W,h,17,ri[10]),W=Qi(W,y,b,J,V,22,ri[11]),J=Qi(J,W,y,b,Z,7,ri[12]),b=Qi(b,J,W,y,m,12,ri[13]),y=Qi(y,b,J,W,p,17,ri[14]),W=Qi(W,y,b,J,S,22,ri[15]),J=oi(J,W,y,b,r,5,ri[16]),b=oi(b,J,W,y,c,9,ri[17]),y=oi(y,b,J,W,V,14,ri[18]),W=oi(W,y,b,J,a,20,ri[19]),J=oi(J,W,y,b,s,5,ri[20]),b=oi(b,J,W,y,h,9,ri[21]),y=oi(y,b,J,W,S,14,ri[22]),W=oi(W,y,b,J,o,20,ri[23]),J=oi(J,W,y,b,u,5,ri[24]),b=oi(b,J,W,y,p,9,ri[25]),y=oi(y,b,J,W,Q,14,ri[26]),W=oi(W,y,b,J,B,20,ri[27]),J=oi(J,W,y,b,m,5,ri[28]),b=oi(b,J,W,y,d,9,ri[29]),y=oi(y,b,J,W,R,14,ri[30]),W=oi(W,y,b,J,Z,20,ri[31]),J=si(J,W,y,b,s,4,ri[32]),b=si(b,J,W,y,B,11,ri[33]),y=si(y,b,J,W,V,16,ri[34]),W=si(W,y,b,J,p,23,ri[35]),J=si(J,W,y,b,r,4,ri[36]),b=si(b,J,W,y,o,11,ri[37]),y=si(y,b,J,W,R,16,ri[38]),W=si(W,y,b,J,h,23,ri[39]),J=si(J,W,y,b,m,4,ri[40]),b=si(b,J,W,y,a,11,ri[41]),y=si(y,b,J,W,Q,16,ri[42]),W=si(W,y,b,J,c,23,ri[43]),J=si(J,W,y,b,u,4,ri[44]),b=si(b,J,W,y,Z,11,ri[45]),y=si(y,b,J,W,S,16,ri[46]),W=si(W,y,b,J,d,23,ri[47]),J=ci(J,W,y,b,a,6,ri[48]),b=ci(b,J,W,y,R,10,ri[49]),y=ci(y,b,J,W,p,15,ri[50]),W=ci(W,y,b,J,s,21,ri[51]),J=ci(J,W,y,b,Z,6,ri[52]),b=ci(b,J,W,y,Q,10,ri[53]),y=ci(y,b,J,W,h,15,ri[54]),W=ci(W,y,b,J,r,21,ri[55]),J=ci(J,W,y,b,B,6,ri[56]),b=ci(b,J,W,y,S,10,ri[57]),y=ci(y,b,J,W,c,15,ri[58]),W=ci(W,y,b,J,m,21,ri[59]),J=ci(J,W,y,b,o,6,ri[60]),b=ci(b,J,W,y,V,10,ri[61]),y=ci(y,b,J,W,d,15,ri[62]),W=ci(W,y,b,J,u,21,ri[63]),F[0]=F[0]+J|0,F[1]=F[1]+W|0,F[2]=F[2]+y|0,F[3]=F[3]+b|0}},{key:"_doFinalize",value:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,U=8*e.sigBytes;t[U>>>5]|=128<<24-U%32;var i=Math.floor(n/4294967296),l=n;t[15+(U+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(U+64>>>9<<4)]=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8),e.sigBytes=4*(t.length+1),this._process();for(var F=this._hash,a=F.words,r=0;r<4;r+=1){var d=a[r];a[r]=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8)}return F}},{key:"clone",value:function(){var e=$(j(n.prototype),"clone",this).call(this);return e._hash=this._hash.clone(),e}}]),n}(li);li._createHelper(Ri),li._createHmacHelper(Ri);var Bi=function(e){P(n,e);var t=q(n);function n(e){var U;return M(this,n),(U=t.call(this)).cfg=Object.assign(new $U,{keySize:4,hasher:Ri,iterations:1},e),U}return w(n,[{key:"compute",value:function(e,t){for(var n,U=this.cfg,i=U.hasher.create(),l=ei.create(),F=l.words,a=U.keySize,r=U.iterations;F.length<a;){n&&i.update(n),n=i.update(e).finalize(t),i.reset();for(var d=1;d<r;d+=1)n=i.finalize(n),i.reset();l.concat(n)}return l.sigBytes=4*a,l}}]),n}($U),ui=function(e){P(n,e);var t=q(n);function n(e,U,i){var l;return M(this,n),(l=t.call(this)).cfg=Object.assign(new $U,i),l._xformMode=e,l._key=U,l.reset(),l}return w(n,[{key:"reset",value:function(){$(j(n.prototype),"reset",this).call(this),this._doReset()}},{key:"process",value:function(e){return this._append(e),this._process()}},{key:"finalize",value:function(e){return e&&this._append(e),this._doFinalize()}}],[{key:"createEncryptor",value:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)}},{key:"createDecryptor",value:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)}},{key:"_createHelper",value:function(e){var t=function(e){return"string"==typeof e?bi:Wi};return{encrypt:function(n,U,i){return t(U).encrypt(e,n,U,i)},decrypt:function(n,U,i){return t(U).decrypt(e,n,U,i)}}}}]),n}(ii);ui._ENC_XFORM_MODE=1,ui._DEC_XFORM_MODE=2,ui.keySize=4,ui.ivSize=4;var hi=function(e){P(n,e);var t=q(n);function n(e,U){var i;return M(this,n),(i=t.call(this))._cipher=e,i._iv=U,i}return w(n,null,[{key:"createEncryptor",value:function(e,t){return this.Encryptor.create(e,t)}},{key:"createDecryptor",value:function(e,t){return this.Decryptor.create(e,t)}}]),n}($U);function Vi(e,t,n){var U,i=e,l=this._iv;l?(U=l,this._iv=void 0):U=this._prevBlock;for(var F=0;F<n;F+=1)i[t+F]^=U[F]}var Zi=function(e){P(n,e);var t=q(n);function n(){return M(this,n),t.apply(this,arguments)}return w(n)}(hi);Zi.Encryptor=function(e){P(n,e);var t=q(n);function n(){return M(this,n),t.apply(this,arguments)}return w(n,[{key:"processBlock",value:function(e,t){var n=this._cipher,U=n.blockSize;Vi.call(this,e,t,U),n.encryptBlock(e,t),this._prevBlock=e.slice(t,t+U)}}]),n}(Zi),Zi.Decryptor=function(e){P(n,e);var t=q(n);function n(){return M(this,n),t.apply(this,arguments)}return w(n,[{key:"processBlock",value:function(e,t){var n=this._cipher,U=n.blockSize,i=e.slice(t,t+U);n.decryptBlock(e,t),Vi.call(this,e,t,U),this._prevBlock=i}}]),n}(Zi);var mi={pad:function(e,t){for(var n=4*t,U=n-e.sigBytes%n,i=U<<24|U<<16|U<<8|U,l=[],F=0;F<U;F+=4)l.push(i);var a=ei.create(l,U);e.concat(a)},unpad:function(e){var t=e,n=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=n}},pi=function(e){P(n,e);var t=q(n);function n(e,U,i){var l;return M(this,n),(l=t.call(this,e,U,Object.assign({mode:Zi,padding:mi},i))).blockSize=4,l}return w(n,[{key:"reset",value:function(){var e;$(j(n.prototype),"reset",this).call(this);var t=this.cfg,U=t.iv,i=t.mode;this._xformMode===this.constructor._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode=e.call(i,this,U&&U.words),this._mode.__creator=e}},{key:"_doProcessBlock",value:function(e,t){this._mode.processBlock(e,t)}},{key:"_doFinalize",value:function(){var e,t=this.cfg.padding;return this._xformMode===this.constructor._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e}}]),n}(ui),Si=function(e){P(n,e);var t=q(n);function n(e){var U;return M(this,n),(U=t.call(this)).mixIn(e),U}return w(n,[{key:"toString",value:function(e){return(e||this.formatter).stringify(this)}}]),n}($U),Ji={stringify:function(e){var t=e.ciphertext,n=e.salt;return(n?ei.create([1398893684,1701076831]).concat(n).concat(t):t).toString(ai)},parse:function(e){var t,n=ai.parse(e),U=n.words;return 1398893684===U[0]&&1701076831===U[1]&&(t=ei.create(U.slice(2,4)),U.splice(0,4),n.sigBytes-=16),Si.create({ciphertext:n,salt:t})}},Wi=function(e){P(n,e);var t=q(n);function n(){return M(this,n),t.apply(this,arguments)}return w(n,null,[{key:"encrypt",value:function(e,t,n,U){var i=Object.assign(new $U,this.cfg,U),l=e.createEncryptor(n,i),F=l.finalize(t),a=l.cfg;return Si.create({ciphertext:F,key:n,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:l.blockSize,formatter:i.format})}},{key:"decrypt",value:function(e,t,n,U){var i=t,l=Object.assign(new $U,this.cfg,U);return i=this._parse(i,l.format),e.createDecryptor(n,l).finalize(i.ciphertext)}},{key:"_parse",value:function(e,t){return"string"==typeof e?t.parse(e,this):e}}]),n}($U);Wi.cfg=Object.assign(new $U,{format:Ji});var yi={execute:function(e,t,n,U){var i=U;i||(i=ei.random(8));var l=Bi.create({keySize:t+n}).compute(e,i),F=ei.create(l.words.slice(t),4*n);return l.sigBytes=4*t,Si.create({key:l,iv:F,salt:i})}},bi=function(e){P(n,e);var t=q(n);function n(){return M(this,n),t.apply(this,arguments)}return w(n,null,[{key:"encrypt",value:function(e,t,n,U){var i=Object.assign(new $U,this.cfg,U),l=i.kdf.execute(n,e.keySize,e.ivSize);i.iv=l.iv;var F=Wi.encrypt.call(this,e,t,l.key,i);return F.mixIn(l),F}},{key:"decrypt",value:function(e,t,n,U){var i=t,l=Object.assign(new $U,this.cfg,U);i=this._parse(i,l.format);var F=l.kdf.execute(n,e.keySize,e.ivSize,i.salt);return l.iv=F.iv,Wi.decrypt.call(this,e,i,F.key,l)}}]),n}(Wi);bi.cfg=Object.assign(Wi.cfg,{kdf:yi});for(var Ei=[],ki=[],fi=[],vi=[],Ni=[],Ti=[],Ci=[],gi=[],Xi=[],Li=[],Gi=[],xi=0;xi<256;xi+=1)Gi[xi]=xi<128?xi<<1:xi<<1^283;for(var Ii=0,Di=0,Yi=0;Yi<256;Yi+=1){var Mi=Di^Di<<1^Di<<2^Di<<3^Di<<4;Mi=Mi>>>8^255&Mi^99,Ei[Ii]=Mi,ki[Mi]=Ii;var Ki=Gi[Ii],wi=Gi[Ki],Hi=Gi[wi],Pi=257*Gi[Mi]^16843008*Mi;fi[Ii]=Pi<<24|Pi>>>8,vi[Ii]=Pi<<16|Pi>>>16,Ni[Ii]=Pi<<8|Pi>>>24,Ti[Ii]=Pi,Pi=16843009*Hi^65537*wi^257*Ki^16843008*Ii,Ci[Mi]=Pi<<24|Pi>>>8,gi[Mi]=Pi<<16|Pi>>>16,Xi[Mi]=Pi<<8|Pi>>>24,Li[Mi]=Pi,Ii?(Ii=Ki^Gi[Gi[Gi[Hi^Ki]]],Di^=Gi[Gi[Di]]):Ii=Di=1}var ji=[0,1,2,4,8,16,32,64,128,27,54],zi=function(e){P(n,e);var t=q(n);function n(){return M(this,n),t.apply(this,arguments)}return w(n,[{key:"_doReset",value:function(){var e;if(!this._nRounds||this._keyPriorReset!==this._key){this._keyPriorReset=this._key;var t=this._keyPriorReset,n=t.words,U=t.sigBytes/4;this._nRounds=U+6;var i=4*(this._nRounds+1);this._keySchedule=[];for(var l=this._keySchedule,F=0;F<i;F+=1)F<U?l[F]=n[F]:(e=l[F-1],F%U?U>6&&F%U==4&&(e=Ei[e>>>24]<<24|Ei[e>>>16&255]<<16|Ei[e>>>8&255]<<8|Ei[255&e]):(e=Ei[(e=e<<8|e>>>24)>>>24]<<24|Ei[e>>>16&255]<<16|Ei[e>>>8&255]<<8|Ei[255&e],e^=ji[F/U|0]<<24),l[F]=l[F-U]^e);this._invKeySchedule=[];for(var a=this._invKeySchedule,r=0;r<i;r+=1){var d=i-r;e=r%4?l[d]:l[d-4],a[r]=r<4||d<=4?e:Ci[Ei[e>>>24]]^gi[Ei[e>>>16&255]]^Xi[Ei[e>>>8&255]]^Li[Ei[255&e]]}}}},{key:"encryptBlock",value:function(e,t){this._doCryptBlock(e,t,this._keySchedule,fi,vi,Ni,Ti,Ei)}},{key:"decryptBlock",value:function(e,t){var n=e,U=n[t+1];n[t+1]=n[t+3],n[t+3]=U,this._doCryptBlock(n,t,this._invKeySchedule,Ci,gi,Xi,Li,ki),U=n[t+1],n[t+1]=n[t+3],n[t+3]=U}},{key:"_doCryptBlock",value:function(e,t,n,U,i,l,F,a){for(var r=e,d=this._nRounds,Q=r[t]^n[0],o=r[t+1]^n[1],s=r[t+2]^n[2],c=r[t+3]^n[3],R=4,B=1;B<d;B+=1){var u=U[Q>>>24]^i[o>>>16&255]^l[s>>>8&255]^F[255&c]^n[R];R+=1;var h=U[o>>>24]^i[s>>>16&255]^l[c>>>8&255]^F[255&Q]^n[R];R+=1;var V=U[s>>>24]^i[c>>>16&255]^l[Q>>>8&255]^F[255&o]^n[R];R+=1;var Z=U[c>>>24]^i[Q>>>16&255]^l[o>>>8&255]^F[255&s]^n[R];R+=1,Q=u,o=h,s=V,c=Z}var m=(a[Q>>>24]<<24|a[o>>>16&255]<<16|a[s>>>8&255]<<8|a[255&c])^n[R];R+=1;var p=(a[o>>>24]<<24|a[s>>>16&255]<<16|a[c>>>8&255]<<8|a[255&Q])^n[R];R+=1;var S=(a[s>>>24]<<24|a[c>>>16&255]<<16|a[Q>>>8&255]<<8|a[255&o])^n[R];R+=1;var J=(a[c>>>24]<<24|a[Q>>>16&255]<<16|a[o>>>8&255]<<8|a[255&s])^n[R];R+=1,r[t]=m,r[t+1]=p,r[t+2]=S,r[t+3]=J}}]),n}(pi);zi.keySize=8;var Oi=pi._createHelper(zi),_i=function(e){P(n,e);var t=q(n);function n(){return M(this,n),t.apply(this,arguments)}return w(n)}(hi);_i.Encryptor=function(e){P(n,e);var t=q(n);function n(){return M(this,n),t.apply(this,arguments)}return w(n,[{key:"processBlock",value:function(e,t){var n=e,U=this._cipher,i=U.blockSize,l=this._iv,F=this._counter;l&&(this._counter=l.slice(0),F=this._counter,this._iv=void 0);var a=F.slice(0);U.encryptBlock(a,0),F[i-1]=F[i-1]+1|0;for(var r=0;r<i;r+=1)n[t+r]^=a[r]}}]),n}(_i),_i.Decryptor=_i.Encryptor;var Ai={pad:function(){},unpad:function(){}},qi={decryptWordArray:function(e,t,n){var U=ti.parse(t),i=ti.parse(GU(n)),l=ei.create(new Uint8Array(e)),F=Oi.decrypt(Si.create({ciphertext:l}),U,{iv:i,mode:_i,padding:Ai});return qi.wordArrayToUint8Array(F)},wordArrayToUint8Array:function(e){for(var t=e.sigBytes,n=e.words,U=new Uint8Array(t),i=0,l=0;i!==t;){var F=n[l++];if(U[i++]=(4278190080&F)>>>24,i===t)break;if(U[i++]=(16711680&F)>>>16,i===t)break;if(U[i++]=(65280&F)>>>8,i===t)break;U[i++]=255&F}return U},decoderAESCTRData:function(e,t,n){if(e.videoSenc){var U=e.kidValue,i=e.videoSenc;e.samples.forEach((function(t,l){var F=i[l],a=t.data,r=[],d=[],Q=F.InitializationVector;if(F.subsamples&&F.subsamples.length)F.subsamples.forEach((function(e){var t=e.BytesOfClearData+e.BytesOfProtectedData,n=a.slice(0,t);r.push(n.slice(0,e.BytesOfClearData)),d.push(n.slice(e.BytesOfClearData)),a=a.slice(t)}));else{var o=t.size;r.push(a.slice(0,0)),d.push(a.slice(0,o)),a=a.slice(o)}var s=new zU;s.write.apply(s,d);var c=n?n(s.buffer,U,Q):qi.decryptWordArray(s.buffer,U,Q),R=new zU;r.forEach((function(e,t){var n=d[t].length,U=c.slice(0,n);R.write(e),R.write(U),c=c.slice(n)})),e.samples[l].data=R.buffer}))}if(t.audioSenc){var l=t.kidValue,F=t.audioSenc;t.samples.forEach((function(e,U){var i=F[U],a=n?n(e.data,l,i.InitializationVector):qi.decryptWordArray(e.data,l,i.InitializationVector);t.samples[U].data=a}))}}},$i=function(){function e(t,n,U,i){var l=this;iU(this,e),aU(this,"_videoSamples",[]),aU(this,"_audioSamples",[]),aU(this,"_lastRemainBuffer",[]),aU(this,"_lastRemainBufferStartPos",0),this.videoTrack=new SU,this.audioTrack=new JU,this.metadataTrack=U||new bU,this.log=new AU("MP4Demuxer",!i||!i.openLog||!i.openLog),t&&t.forEach((function(e){var t;(t=l._videoSamples).push.apply(t,dU(e.frames))})),n&&n.forEach((function(e){var t;(t=l._audioSamples).push.apply(t,dU(e.frames))}))}return FU(e,[{key:"parseSamples",value:function(e){if(!e)throw new Error("moov is required");if(this.videoTrack.codec||this.audioTrack.codec||(MU.moovToTrack(e,this.videoTrack,this.audioTrack),this.videoSenc=this.videoTrack.videoSenc,this.audioSenc=this.audioTrack.audioSenc),!this._audioSamples.length&&!this._videoSamples.length){var t=MU.moovToSamples(e);if(!t)throw new Error("cannot parse samples from moov box");this._videoSamples=t.videoSamples||[],this._audioSamples=t.audioSamples||[]}}},{key:"demux",value:function(e,t,n,U,i){this.parseSamples(i);var l,F,a,r=this.videoTrack,d=this.audioTrack;if(r.samples=[],d.samples=[],n){for(var Q,o=0,s=n[0],c=n[1];s<=c;s++){if(!(l=this._videoSamples[s]))throw new Error("cannot found video frame #".concat(s));a=l.offset-t,F=e.subarray(a,a+l.size),(Q=new WU(l.pts||l.dts,l.dts)).duration=l.duration,Q.gopId=l.gopId,l.keyframe&&Q.setToKeyframe();for(var R=0,B=F.length-1;R<B;)o=XU(F,R),R+=4,Q.units.push(F.subarray(R,R+o)),R+=o;r.samples.push(Q)}r.baseMediaDecodeTime=r.samples[0].dts}if(U){for(var u=U[0],h=U[1];u<=h;u++){if(!(l=this._audioSamples[u]))throw new Error("cannot found video frame #".concat(u));a=l.offset-t,F=e.subarray(a,a+l.size),d.samples.push(new yU(l.dts,F,l.duration))}d.baseMediaDecodeTime=d.samples[0].dts}return{videoTrack:r,audioTrack:d,metadataTrack:this.metadataTrack}}},{key:"demuxPart",value:function(e,t,n,U,i,l,F,a){if(this.parseSamples(i),this.videoTrack.useEME=l,this.audioTrack.useEME=l,this._lastRemainBuffer&&this._lastRemainBuffer.byteLength>0&&t>this._lastRemainBufferStartPos&&t<=this._lastRemainBufferStartPos+this._lastRemainBuffer.byteLength)for(var r=0;r<20;)try{var d=this._lastRemainBuffer.subarray(0,t-this._lastRemainBufferStartPos),Q=new Uint8Array(e.byteLength+d.byteLength);Q.set(d,0),Q.set(new Uint8Array(e),d.byteLength),e=Q,t-=d.byteLength,this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0;break}catch(E){if(!(r<20))throw new Error("new Uint8Array error:,"+E.errorMessage);r++}var o,s,c,R=this.videoTrack,B=this.audioTrack;R.samples=[],B.samples=[],R.videoSenc=null,B.audioSenc=null;var u=0,h=0;if(this._videoSamples.length>0&&n.length>0){for(var V,Z=e.byteLength+t,m=n[0];m<=n[1];m++){if(!(o=this._videoSamples[m]))throw new Error("cannot found video frame #".concat(m));o.offset>=t&&o.offset+o.size<=Z&&(u=(c=o.offset-t)+o.size,s=e.subarray(c,u),(V=new WU(o.pts||o.dts,o.dts)).duration=o.duration,V.gopId=o.gopId,V.sampleOffset=o.index,o.keyframe&&V.setToKeyframe(),V.data=s,V.size=o.size,R.samples.push(V))}R.samples.length>0&&(R.gopId=R.samples[0].gopId,R.baseMediaDecodeTime=R.samples[0].dts,R.startPts=R.samples[0].pts/R.timescale,R.endPts=R.samples[R.samples.length-1].pts/R.timescale,this.videoSenc&&(R.videoSenc=this.videoSenc.slice(R.samples[0].sampleOffset,R.samples[0].sampleOffset+R.samples.length),R.kidValue=F))}if(this._audioSamples.length>0&&U.length>0){for(var p=U[0];p<=U[1];p++){if(!(o=this._audioSamples[p]))throw new Error("cannot found video frame #".concat(p));o.offset>=t&&o.offset+o.size<=e.byteLength+t&&(h=(c=o.offset-t)+o.size,s=e.subarray(c,h),B.samples.push(new yU(o.dts,s,o.duration,o.index)))}B.samples.length>0&&(B.gopId=B.samples[0].gopId||R.gopId,B.baseMediaDecodeTime=B.samples[0].dts,B.startPts=B.samples[0].pts/B.timescale,B.endPts=B.samples[B.samples.length-1].pts/B.timescale,this.audioSenc&&(B.audioSenc=this.audioSenc.slice(B.samples[0].sampleOffset,B.samples[0].sampleOffset+B.samples.length),B.kidValue=F))}this.decoderData(R,B,a);for(var S=0,J=0;J<R.samples.length;J++)for(var W=0,y=R.samples[J].data,b=y.length-1;W<b;)S=XU(y,W),W+=4,R.samples[J].units.push(y.subarray(W,W+S)),W+=S;return this._lastRemainBuffer=e.subarray(Math.max(u,h)),this._lastRemainBuffer.byteLength>0?this._lastRemainBufferStartPos=t+e.byteLength-this._lastRemainBuffer.byteLength:this._lastRemainBufferStartPos=0,{videoTrack:R,audioTrack:B,metadataTrack:this.metadataTrack}}},{key:"reset",value:function(){this._videoSamples=[],this._audioSamples=[],this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0,this.videoTrack.reset(),this.audioTrack.reset(),this.metadataTrack.reset()}},{key:"decoderData",value:function(e,t,n){e.useEME||t.useEME||qi.decoderAESCTRData(e,t,n)}}],[{key:"probe",value:function(e){return MU.probe(e)}}]),e}();var el=Pn((function e(t,n){wn(this,e),this.type="file",this.message=t,this.data=n})),tl=function(){function e(){wn(this,e),jn(this,"_data",Object.create(null))}return Pn(e,[{key:"set",value:function(e,t){this._data[e]=t}},{key:"get",value:function(e){return this._data[e]}},{key:"clear",value:function(){this._data=Object.create(null)}}]),e}();function nl(e,t){var n=e.trak;if(n&&n.length){var U=n.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),i=n.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)}));if(U||i){var l,F=[],a=[];if(U){var r,d,Q,o=null===(r=U.mdia)||void 0===r||null===(d=r.minf)||void 0===d?void 0:d.stbl;if(!o)return;var s=null===(Q=U.mdia.mdhd)||void 0===Q?void 0:Q.timescale,c=o.stts,R=o.stsc,B=o.stsz,u=o.stco,h=o.stss,V=o.ctts;if(!(s&&c&&R&&B&&u&&h))return;l=(F=Ul(t,s,c,R,B,u,h,V)).map((function(e){return e.duration}))}if(i){var Z,m,p,S=null===(Z=i.mdia)||void 0===Z||null===(m=Z.minf)||void 0===m?void 0:m.stbl;if(!S)return;var J=null===(p=i.mdia.mdhd)||void 0===p?void 0:p.timescale,W=S.stts,y=S.stsc,b=S.stsz,E=S.stco;if(!(J&&W&&y&&b&&E))return;a=Ul(t,J,W,y,b,E,null,null,l)}return{videoSegments:F,audioSegments:a}}}}function Ul(e,t,n,U,i,l,F,a,r){var d,Q,o,s,c=[],R=[],B=[],u=[],h=[],V=U.entries,Z=l.entries,m=i.entrySizes,p=null==F?void 0:F.entries,S=null==a?void 0:a.entries;S&&(d=[],S.forEach((function(e){for(var t=e.count,n=e.offset,U=0;U<t;U++)d.push(n)}))),p&&(Q={},p.forEach((function(e){Q[e-1]=!0})));var J=0,W=0,y=0,b=0,E=V[0].samplesPerChunk,k=V[1]?V[1].firstChunk-1:1/0,f=0,v=-1;n.entries.forEach((function(e){var t=e.count,n=e.delta;s=n;for(var U=0;U<t;U++){if(o={dts:f,duration:s,size:m[J]||i.sampleSize,offset:Z[W]+b,index:J},p&&(o.keyframe=Q[J],o.keyframe?(v++,R.push([o]),B.push(o.duration)):(R[R.length-1].push(o),B[R.length-1]+=o.duration),o.gopId=v),d&&J<d.length&&(o.pts=f+d[J]),0===J&&(o.pts=0),void 0===o.pts&&(o.pts=o.dts),o.keyframe?u.push(o.pts):o.pts<u[R.length-1]&&(u[R.length-1]=o.pts),o.keyframe)h.push(o.index);else if(R.length>0&&void 0!==h[R.length-1]){var l,F=null===(l=c[h[R.length-1]])||void 0===l?void 0:l.pts;void 0!==F&&o.pts>F&&(h[R.length-1]=o.index)}c.push(o),f+=n,++J<E?b+=o.size:(W++,b=0,W>=k&&(y++,k=V[y+1]?V[y+1].firstChunk-1:1/0),E+=V[y].samplesPerChunk)}}));var N=c.length;if(N&&(!F||c[0].keyframe)){var T,C=[],g=[],X=0,L=0,G=0,x=0,I=function(e,n,U){(T=g[g.length-1],G=u[n],x=c[h[U]],0===C.length)&&(e=(x.pts+x.duration-G)/t);C.push({index:C.length,startTime:G/t,endTime:(x.pts+x.duration)/t,duration:e,range:[g[0].offset,T.offset+T.size-1],frames:g}),X=0,g=[]},D=0;if(F)for(var Y=e*t,M=0,K=R.length;M<K;M++){var w;X+=B[M],(w=g).push.apply(w,eU(R[M])),M+1<K?(0===M||X>Y)&&(I(X/t,D,M),D=M+1):(I(X/t,D,M),D=M+1)}else{u=[],h=[];for(var H=(r=r||[])[0]||e,P=0;P<N;P++){g.push(c[P]);var j=(X+=c[P].duration)/t;(P+1>=N||j+L>=H)&&(L+=j-H,u.push(g[0].pts),h.push(g[g.length-1].index),I(j,C.length,C.length),H=r[C.length]||e)}}return C}}function il(e){var t="",n="",U=0,i=0,l=0,F=0,a=0,r=0,d=0;e.mvhd&&(a=e.mvhd.duration/e.mvhd.timescale);var Q=e.trak;if(Q){var o,s,c,R,B,u,h,V,Z,m,p,S,J,W,y,b,E,k=Q.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),f=Q.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),v=null;if(k)if(v=null===(s=k.mdia)||void 0===s||null===(c=s.minf)||void 0===c||null===(R=c.stbl)||void 0===R?void 0:R.stsd.entries[0])if(U=v.width,i=v.height,r=null===(B=k.mdia)||void 0===B||null===(u=B.mdhd)||void 0===u?void 0:u.timescale,t=null===(h=v.avcC||v.hvcC||v.vvcC)||void 0===h?void 0:h.codec,"encv"===v.type)o=null===(V=v.sinf)||void 0===V||null===(Z=V.schi)||void 0===Z?void 0:Z.tenc.default_KID;if(f)if(v=null===(m=f.mdia)||void 0===m||null===(p=m.minf)||void 0===p||null===(S=p.stbl)||void 0===S?void 0:S.stsd.entries[0])if(l=v.channelCount,F=v.sampleRate,n=null===(J=v.esds)||void 0===J?void 0:J.codec,d=null===(W=f.mdia)||void 0===W||null===(y=W.mdhd)||void 0===y?void 0:y.timescale,"enca"===v.type)o=o||(null===(b=v.sinf)||void 0===b||null===(E=b.schi)||void 0===E?void 0:E.tenc.default_KID);return{kid:o?o.join(""):null,videoCodec:t,audioCodec:n,width:U,height:i,videoTimescale:r,audioChannelCount:l,audioSampleRate:F,duration:a,audioTimescale:d,moov:e}}}function ll(e){return"number"==typeof e&&!Number.isNaN(e)}var Fl=["vid","cache"],al=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&On(e,t)}(c,e);var t,n,U,i,l,F,a,r,d,Q,o,s=qn(c);function c(e){var t;wn(this,c),jn(An(t=s.call(this)),"vid",""),jn(An(t),"url",""),jn(An(t),"meta",{}),jn(An(t),"downloadInfo",[]),jn(An(t),"videoSegments",[]),jn(An(t),"audioSegments",[]),jn(An(t),"cache",null),jn(An(t),"_currentSegmentIndex",-1),jn(An(t),"_currentLoadingSegmentIndex",-1),jn(An(t),"buffer",void 0),jn(An(t),"_error",void 0),jn(An(t),"_transformError",(function(e){return e})),t._config=Dn({vid:"",moovEnd:8e4,segmentDuration:2,maxDownloadInfoSize:30,responseType:"arraybuffer",cache:null},e);var n=t._config,U=n.vid,i=n.cache,l=_n(n,Fl);return t.cache=i||new tl,t.vid=U||l.url,t.url=l.url,l.transformError=t._transformError,t.logger=new jt("MP4Loader_"+t.vid),e.openLog&&jt.enable(),l.logger=t.logger,t._loader=new Wn(l),t._loader.on(un,(function(e){t.emit(un,e)})),t}return Pn(c,[{key:"isMetaLoaded",get:function(){return this.videoSegments.length||this.audioSegments.length}},{key:"setCurrentSegment",value:function(e){ll(e)&&(this._currentSegmentIndex=e)}},{key:"isLastSegment",value:function(e){var t,n;return!!ll(e)&&e>=((null===(t=this.videoSegments[this.videoSegments.length-1])||void 0===t?void 0:t.index)||(null===(n=this.audioSegments[this.audioSegments.length-1])||void 0===n?void 0:n.index)||0)}},{key:"isSegmentLoading",value:function(e){return e===this._currentLoadingSegmentIndex}},{key:"changeUrl",value:(o=Kn(Yn().mark((function e(t){var n,U,i,l=arguments;return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=l.length>1&&void 0!==l[1]?l[1]:t,U=l.length>2?l[2]:void 0,i=l.length>3?l[3]:void 0,e.next=5,this.reset(i);case 5:t&&(this.url=t),n&&(this.vid=n),U&&(this._config.moovEnd=U);case 8:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"getOrLoadMeta",value:(Q=Kn(Yn().mark((function e(t){return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isMetaLoaded){e.next=3;break}return e.next=3,this.loadMeta(t);case 3:return e.abrupt("return",this.meta);case 4:case"end":return e.stop()}}),e,this)}))),function(e){return Q.apply(this,arguments)})},{key:"loadMetaProcess",value:(d=Kn(Yn().mark((function e(t,n,U,i){var l,F,a,r,d=this;return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l=$n(n,2),F=l[0],a=l[1],this._error=!1,this.logger.debug("[loadMetaProcess start], range,",[F,a]),r=function(){var e=Kn(Yn().mark((function e(n,l,r,Q){var o,s,c,R,B,u,h,V;return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(d.meta&&null!=r&&r.range&&r.range.length>0&&r.range[1]>=a&&(l=!0,d.logger.debug("[loadMetaProcess],data done,setstate true,[",F,a,"]")),l&&null!=r&&r.range&&r.range.length>0&&r.range[1]<a&&(l=!1,d.logger.debug("[loadMetaProcess],data not done,setstate false,[",F,a,"]")),d.logger.debug("[loadMetaProcess],task,[",F,a,"], range,",r.range,",dataLen,",n?n.byteLength:void 0,", state,",l,",err,",d._error),!d._error&&n&&n.byteLength>0&&U(n,l,r,null,Q),!d.meta.moov&&!d._error){e.next=6;break}return e.abrupt("return");case 6:if(!(n&&n.byteLength>0)){e.next=44;break}if(d.buffer=Sn(d.buffer,n),o=MU.findBox(d.buffer,["moov"])[0]){e.next=23;break}if(s=MU.findBox(d.buffer,["mdat"])[0],!l){e.next=23;break}if(s){e.next=18;break}return d._error=!0,U(null,l,r,{err:"cannot find moov or mdat box"},Q),e.abrupt("return");case 18:return c=s.start+s.size,e.next=21,d.loadData([c,""],t,i);case 21:(R=e.sent)&&(o=MU.findBox(R.data,["moov"])[0]);case 23:if(!(o&&l&&o.size>o.data.length)){e.next=27;break}return d.logger.debug("[loadMetaProcess],moov not all, range,",r.range[1],",dataLen,",d.buffer.byteLength,", state,",l),e.next=27,d.loadMetaProcess(t,[r.range[1],o.start+o.size-1],U);case 27:if(!(o&&o.size<=o.data.length)||d.meta.moov){e.next=44;break}if(B=MU.moov(o)){e.next=33;break}return d._error=!0,U(null,l,r,{err:"cannot parse moov box"},Q),e.abrupt("return");case 33:if(u=nl(B,d._config.segmentDuration)){e.next=38;break}return d._error=!0,U(null,l,r,{err:"cannot parse segments"},Q),e.abrupt("return");case 38:d.meta=il(B),h=u.videoSegments,V=u.audioSegments,d.videoSegments=h,d.audioSegments=V,d.logger.debug("[loadMetaProcess] moov ok"),U(void 0,l,{meta:{meta:d.meta,videoSegments:h,audioSegments:V}},null,Q);case 44:case"end":return e.stop()}}),e)})));return function(t,n,U,i){return e.apply(this,arguments)}}(),e.next=6,this.loadData([F,a||this._config.moovEnd],t,Dn({onProgress:r},i));case 6:case"end":return e.stop()}}),e,this)}))),function(e,t,n,U){return d.apply(this,arguments)})},{key:"loadMeta",value:(r=Kn(Yn().mark((function e(t,n,U){var i,l,F,a,r,d,Q,o,s;return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=[],this.logger.debug("[loadMeta start]"),e.next=4,this.loadData([0,n||this._config.moovEnd],t,U);case 4:if(l=e.sent){e.next=7;break}return e.abrupt("return");case 7:if(i.push(l),F=MU.findBox(l.data,["moov"])[0]){e.next=23;break}if(a=MU.findBox(l.data,["mdat"])[0]){e.next=13;break}throw new el("cannot find moov or mdat box",l.data);case 13:return r=a.start+a.size,e.next=16,this.loadData([r],t,U);case 16:if(l=e.sent){e.next=19;break}return e.abrupt("return");case 19:if(i.push(l),F=MU.findBox(l.data,["moov"],r)[0]){e.next=23;break}throw new el("cannot find moov box",l.data);case 23:if(!(F.size>F.data.length)){e.next=31;break}return e.next=26,this.loadData([l.data.length,F.start+F.size-1],t,U);case 26:if(l=e.sent){e.next=29;break}return e.abrupt("return");case 29:i.push(l),F.data=Sn(F.data,l.data);case 31:if(d=MU.moov(F)){e.next=34;break}throw new el("cannot parse moov box",F.data);case 34:if(Q=nl(d,this._config.segmentDuration)){e.next=37;break}throw new el("cannot parse segments",F.data);case 37:return this.meta=il(d),o=Q.videoSegments,s=Q.audioSegments,this.videoSegments=o,this.audioSegments=s,this.logger.debug("[load moov end!!!!!]"),e.abrupt("return",{meta:this.meta,videoSegments:o,audioSegments:s,responses:i});case 43:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return r.apply(this,arguments)})},{key:"loadCacheMeta",value:function(e,t){var n=nl(e.moov,this._config.segmentDuration),U=n.videoSegments,i=n.audioSegments;this.videoSegments=U,this.audioSegments=i,this._currentSegmentIndex=t,this.meta=e}},{key:"getSegmentByTime",value:function(e){var t,n;return this.videoSegments.length?(t=this.videoSegments.find((function(t){return t.startTime<=e&&t.endTime>e})))&&(n=this.audioSegments[t.index]):n=this.audioSegments.find((function(t){return t.startTime<=e&&t.endTime>e})),{video:t,audio:n}}},{key:"loadSegmentByTime",value:(a=Kn(Yn().mark((function e(t,n){var U,i,l,F,a,r=arguments;return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U=!(r.length>2&&void 0!==r[2])||r[2],i=r.length>3&&void 0!==r[3]?r[3]:{},this.isMetaLoaded){e.next=5;break}return e.next=5,this.loadMeta(n);case 5:return l=this.getSegmentByTime(t),F=l.video,a=l.audio,e.abrupt("return",this._loadSegment(F,a,n,U,i));case 7:case"end":return e.stop()}}),e,this)}))),function(e,t){return a.apply(this,arguments)})},{key:"loadNextSegment",value:(F=Kn(Yn().mark((function e(t){var n,U,i,l,F=arguments;return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=!(F.length>1&&void 0!==F[1])||F[1],U=F.length>2&&void 0!==F[2]?F[2]:{},this.isMetaLoaded){e.next=5;break}return e.next=5,this.loadMeta();case 5:return i=this.videoSegments[this._currentSegmentIndex+1],l=this.audioSegments[this._currentSegmentIndex+1],e.abrupt("return",this._loadSegment(i,l,t,n,U));case 8:case"end":return e.stop()}}),e,this)}))),function(e){return F.apply(this,arguments)})},{key:"preload",value:(l=Kn(Yn().mark((function e(t){var n,U,i,l,F,a,r,d=this;return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isMetaLoaded){e.next=3;break}return e.next=3,this.loadMeta(!0);case 3:if(t&&!(t<0)){e.next=5;break}return e.abrupt("return");case 5:if(n=this.getSegmentByTime(t),U=n.video,i=n.audio,l=Math.max((null==U?void 0:U.index)||0,(null==i?void 0:i.index)||0)){e.next=9;break}return e.abrupt("return");case 9:return F=this.videoSegments.slice(0,l),a=this.audioSegments.slice(0,l),r=function(){var e=Kn(Yn().mark((function e(t){return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t>l)){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,d._loadSegment(F[t],a[t],!0,!1);case 4:return e.next=6,r(t+1);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.next=14,r(0);case 14:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"cancel",value:function(){return this._loader.cancel()}},{key:"reset",value:(i=Kn(Yn().mark((function e(){var t=arguments;return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.length>0&&void 0!==t[0]&&t[0]){e.next=5;break}return this.logger.debug("[MP4loader reset func call loader.cancel]"),e.next=5,this._loader.cancel();case 5:this.vid=this.url="",this.meta={},this.downloadInfo=[],this.videoSegments=[],this.audioSegments=[],this._currentSegmentIndex=-1,this._currentLoadingSegmentIndex=-1;case 12:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"destroy",value:(U=Kn(Yn().mark((function e(){return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.reset();case 2:this.cache.clear();case 3:case"end":return e.stop()}}),e,this)}))),function(){return U.apply(this,arguments)})},{key:"_loadSegment",value:(n=Kn(Yn().mark((function e(t,n,U,i,l){var F,a;return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t||n){e.next=2;break}return e.abrupt("return");case 2:return F=(null==t?void 0:t.index)||(null==n?void 0:n.index)||0,this._currentLoadingSegmentIndex=F,e.prev=4,e.next=7,this.loadData([Math.min((null==t?void 0:t.range[0])||1/0,(null==n?void 0:n.range[0])||1/0),Math.max((null==t?void 0:t.range[1])||0,(null==n?void 0:n.range[1])||0)],U,l);case 7:a=e.sent;case 8:return e.prev=8,this._currentLoadingSegmentIndex=-1,e.finish(8);case 11:if(a){e.next=13;break}return e.abrupt("return");case 13:return i&&(this._currentSegmentIndex=F),a.video=t,a.audio=n,e.abrupt("return",a);case 17:case"end":return e.stop()}}),e,this,[[4,,8,11]])}))),function(e,t,U,i,l){return n.apply(this,arguments)})},{key:"loadData",value:(t=Kn(Yn().mark((function e(t,n,U){var i,l,F,a;return Yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=this._getCacheKey(t),e.next=3,this.cache.get(i);case 3:if(l=e.sent){e.next=11;break}return a=U&&U.url?U.url:this.url,e.next=8,this._loader.load(a,Dn({range:t,vid:this.vid},U));case 8:F=e.sent,e.next=12;break;case 11:F={data:l,state:!0,options:{fromCache:!0,range:t,vid:this.vid}};case 12:if(F){e.next=14;break}return e.abrupt("return");case 14:return l||(F.data&&this.downloadInfo.push({startTime:F.startTime,endTime:F.endTime,size:F.data.byteLength,range:t}),this.downloadInfo&&this.downloadInfo.length>this._config.maxDownloadInfoSize&&(this.downloadInfo=this.downloadInfo.slice(-this._config.maxDownloadInfoSize))),e.abrupt("return",F);case 17:case"end":return e.stop()}}),e,this)}))),function(e,n,U){return t.apply(this,arguments)})},{key:"_getCacheKey",value:function(e){return(this.vid||this.url)+":"+e}}]),c}(tt),rl="3.0.9",dl={416:Mt[Yt.NETWROK_RANGE_NOT_SATISFIABLE],403:Mt[Yt.NETWORK_FORBIDDEN],404:Mt[Yt.NETWORK_NOTFOUND],timeout:Mt[Yt.NETWORK_TIMEOUT],"4xx":"".concat(Mt[Yt.NETWORK],"4XX"),"5xx":"".concat(Mt[Yt.NETWORK],"5XX"),networkError:Mt[Yt.NETWORK],contentError:"".concat(Mt[Yt.NETWORK],"contentError"),mse:Mt[Yt.MEDIA][Yt.SUB_TYPES.MSE_OTHER],mseOpen:Mt[Yt.MEDIA][Yt.SUB_TYPES.MSE_ADD_SB],mseAppend:Mt[Yt.MEDIA][Yt.SUB_TYPES.MSE_APPEND_BUFFER],mse_hijack:Mt[Yt.MEDIA][Yt.SUB_TYPES.MSE_HIJACK],eme_hijack:Mt[Yt.MEDIA][Yt.SUB_TYPES.EME_HIJACK],metaError:Mt[Yt.DEMUX][Yt.SUB_TYPES.MP4],muxError:Mt[Yt.REMUX][Yt.SUB_TYPES.FMP4],other:Mt[Yt.OTHER],waitTimeout:Mt[Yt.RUNTIME][Yt.SUB_TYPES.BUFFERBREAK_ERROR],waitTimeoutWithHidden:Mt[Yt.RUNTIME][Yt.SUB_TYPES.WAITING_TIMEOUT_ERROR],drm:Mt[Yt.DRM][Yt.SUB_TYPES.LICENSE]},Ql=Yt;var ol=w((function e(t,n,U){M(this,e);var i=0,l=0;U&&U.range&&U.range.length>1&&(i=U.range[0],l=U.range[1]);var F=function(e){return dl[e]||e}(n);return{errorCode:F,errorType:t,errorMessage:(null==U?void 0:U.httpText)||(null==U?void 0:U.message),url:null==U?void 0:U.url,httpCode:n,version:rl,rangeStart:i,rangeEnd:l,ext:U,mediaError:{code:F,message:(null==U?void 0:U.httpText)||(null==U?void 0:U.message)}}})),sl=w((function e(t,n,U){return M(this,e),{errorCode:n,errorType:t,version:rl,errorMessage:U.msg,ext:U,mediaError:{code:n,message:U.msg}}})),cl=[{range:[0,90],size:614400},{range:[90,120],size:819200},{range:[120,Number.MAX_VALUE],size:1024e3}];function Rl(e,t,n){var U=n>51200?Math.min(n,t):t;if(!e)return U;for(var i=0;i<cl.length;i++)if(e>=cl[i].range[0]&&e<cl[i].range[1]){U=Math.min(Math.max(U,cl[i].size),n>0?n:t);break}return U}var Bl=function(){try{return"undefined"!=typeof localStorage&&"setItem"in window.localStorage&&!!window.localStorage.setItem}catch(e){return!1}}()&&!function(){var e="_localstorage_support_test";try{return window.localStorage.setItem(e,!0),window.localStorage.removeItem(e),!1}catch(t){return!0}}(),ul=Zl(),hl=function(){if(Bl)try{return!!window.localStorage.getItem("playertestlog")}catch(e){return!1}return!1}(),Vl={1:"debug",2:"log",3:"warn",4:"error"};function Zl(){if(Bl)try{return!!window.localStorage.getItem("playerlog")}catch(e){return!1}return!1}function ml(e,t,n){var U=Vl[t];if(U&&e&&e[U]){for(var i=arguments.length,l=new Array(i>3?i-3:0),F=3;F<i;F++)l[F-3]=arguments[F];e[U].apply(e,[n].concat(l))}}var pl={playBtnClick:function(e,t,n,U){e.paused||e.waitingMoreBuffer&&(e.waitingMoreBuffer=!1),U.call(e,t,n)}},Sl={waiting:function(e,t){var n=e.player,U=e.eventName;n.waitingMoreBuffer=!0,t(U,e)},play:function(e,t){var n=e.player,U=e.eventName;n.waitingMoreBuffer||t(U,e)},pause:function(e,t){var n=e.player,U=e.eventName;n.waitingMoreBuffer||t(U,e)},seeking:function(e,t){var n=e.player,U=e.eventName;n.isSeekingStart=!0,t(U,e)},progress:function(e,t){ml(">>>>progress");var n=e.player,U=e.eventName;if(n.waitingMoreBuffer){var i=n.getBufferedRange(n.buffered2);0===i[0]&&0===i[1]||(void 0===n.inWaitingStart||n.isSeekingStart?(ml("progress startplay or seek ended"),i[1]-n.currentTime>=(n.config.canplayWaterLevel||1)||i[1]>n.duration-1?(ml("progress out bufferWaterLevel"),n.play()):(ml("progress not out bufferWaterLevel"),n.emit("waiting"))):(ml("progress video waiting end"),i[1]-n.currentTime>=(n.config.bufferWaterLevel||5)||i[1]>n.duration-1?(ml("progress out bufferWaterLevel"),n.play()):(ml("progress not out bufferWaterLevel"),n.emit("waiting"))))}t(U,e)},playing:function(e,t){var n=e.player,U=e.eventName;ml("playing");var i=n.getBufferedRange(n.buffered2);if(0===i[0]&&0===i[1])return ml("playing currentTime no buffer, not out bufferWaterLevel"),n.waitingMoreBuffer=!0,n.pause(),void t.call("waiting",e);void 0===n.inWaitingStart||n.isSeekingStart?(ml("playing startplay or seek ended"),i[1]-n.currentTime>=(n.config.canplayWaterLevel||1)||i[1]>n.duration-1?(ml("playing out bufferWaterLevel"),n.waitingMoreBuffer=!1,n.isSeekingStart=!1,t(U,e)):(ml("playing not out bufferWaterLevel"),n.waitingMoreBuffer=!0,n.pause(),t.call("waiting",e))):(ml("playing video waiting ended"),i[1]-n.currentTime>=(n.config.bufferWaterLevel||5)||i[1]>n.duration-1?(ml("playing out bufferWaterLevel"),n.waitingMoreBuffer=!1,t(U,e)):(ml("playing not out bufferWaterLevel"),n.waitingMoreBuffer=!0,n.pause(),t.call("waiting",e)))}};function Jl(e){return/^http(s)?:\/\/.+/.test(e)}function Wl(e,t){return Math.round(8*e*1e3/t/1024)}function yl(e){var t,n;return!((null==e||null===(t=e.message)||void 0===t?void 0:t.indexOf("Failed to fetch"))>=0||null!=e&&e.response&&(null===(n=e.response)||void 0===n?void 0:n.status)>=400&&e.response.status<=599)}var bl={};bl.findBox=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(e.type!==t){if(e&&e.subBox){var U=e.subBox.filter((function(e){return e.type===t}));U.length?U.forEach((function(e){return n.push(e)})):e.subBox.forEach((function(e){return bl.findBox(e,t,n)}))}}else n.push(e);return(n=[].concat(n)).length>1?n:n[0]},bl.padStart=function(e,t,n){for(var U=String(n),i=t>>0,l=Math.ceil(i/U.length),F=[],a=String(e);l--;)F.push(U);return F.join("").substring(0,i-a.length)+a},bl.toHex=function(){for(var e=[],t=arguments.length,n=new Array(t),U=0;U<t;U++)n[U]=arguments[U];return n.forEach((function(t){e.push(bl.padStart(Number(t).toString(16),2,0))})),e},bl.sum=function(){for(var e=0,t=arguments.length,n=new Array(t),U=0;U<t;U++)n[U]=arguments[U];return n.forEach((function(t){e+=t})),e},bl.StringToArrayBuffer=function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),U=0;U<e.length;U++)n[U]=e.charCodeAt(U);return t},bl.fromHex=function(e){for(var t=new Uint8Array(e.length/2),n=0;n<e.length;n+=2)t[n/2]=window.parseInt(e.substr(n,2),16);return t},bl.fromCharCode=function(e){for(var t="",n=0;n<e.length;n+=16e3){var U=e.subarray(n,n+16e3);t+=String.fromCharCode.apply(null,U)}return t},bl.ArrayBufferToString=function(e){for(var t="",n=new Uint8Array(e),U=0;U<n.length;U++)t+=String.fromCharCode(n[U]);return t},bl.formatIV=function(e){var t="";if(e.forEach((function(e){t+=function(e){return"0".concat(Number(e).toString(16)).slice(-2).toUpperCase()}(e)})),t.length<=32)for(var n=32-t.length,U=0;U<n;U++)t+="0";return t},bl.Base64ToHex=function(e){for(var t=window.atob(e.replace(/-/g,"+").replace(/_/g,"/")),n="",U=0;U<t.length;U++)n+="0".concat(t.charCodeAt(U).toString(16)).substr(-2);return n},bl.toBase64=function(e,t){var n=bl.fromCharCode(e);t=void 0===t||t;var U=window.btoa(n).replace(/\+/g,"-").replace(/\//g,"_");return t?U:U.replace(/=*$/,"")},bl.toUTF8=function(e){for(var t=encodeURIComponent(e),n=unescape(t),U=new Uint8Array(n.length),i=0;i<n.length;++i)U[i]=n.charCodeAt(i);return U.buffer},bl.strToBuf=function(e){for(var t=[],n=0;n<e.length;n+=2)t.push(parseInt(e[n]+e[n+1],16));return new Uint8Array(t)},bl.formatIV=function(e){if(e.length>=16)return e;for(var t=new Uint8Array(16),n=0;n<t.length;n++)t[n]=n<e.length?e[n]:0;return t},bl.str2hex=function(e){if(""===e)return"";for(var t=[],n=0;n<e.length;n++)t.push(e.charCodeAt(n));return t},bl.parse=function(e){if(!Array.isArray(e)){for(var t=[],n="",U=0;U<e.length;U++)U%2&&(n=e[U-1]+e[U],t.push(parseInt(n,16)),n="");return t}return e.map((function(e){return parseInt(e,16)}))},bl.generateUniqueKey=function(e){var t=e.vid;e.start,e.end;var n=e.mediaType,U=e.definition;return e.preloadTime,n=n||"video",U=U||-1,t?"".concat(t,"#").concat(n,"#").concat(U,"#mp4"):null},bl.validateFragment=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(e instanceof ArrayBuffer){try{if(2===t.length){var n=t[1]-t[0]+1;if(!(e.byteLength===n))return}}catch(U){return console.error(U),!1}return!0}return!1},bl.typeOf=function(e){return Object.prototype.toString.call(e).match(/([^\s.*]+)(?=]$)/g)[0]},bl.getBufferSplits=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e5;if(t-e-n<n/2||!t)return[[e,t]];for(var U=[];e<t;){var i=e+n;(i>t||t-i<n/2)&&(i=t),U.push([e,i]),e=i+1}return U},bl.nowTime=function(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}},bl.extUrl=function(e,t){try{var n=e.indexOf("?");return n<0?Object.keys(t).forEach((function(n,U){e+=0===U?"?".concat(n,"=").concat(t[n]):"&".concat(n,"=").concat(t[n])})):Object.keys(t).forEach((function(U){n===e.length-1?e+="".concat(U,"=").concat(t[U]):e+="&".concat(U,"=").concat(t[U])})),e}catch(U){return e}},bl.deepMerge=function(e,t){return Object.keys(t).forEach((function(n){var U,i=bl.typeOf(t[n]),l=bl.typeOf(e[n]);"Array"===i?("Array"!==l&&(e[n]=[]),(U=e[n]).push.apply(U,te(t[n]))):"Object"===i?("Object"!==l&&(e[n]={}),bl.deepMerge(e[n],t[n])):e[n]=t[n]})),e},bl.getFileSize=function(e,t){try{return e&&t?parseInt(t*e/8,10):0}catch(n){return 0}},bl.hashVal=function(e){var t,n=0;if(0===e.length)return n;for(t=0;t<e.length;t++)n=(n<<5)-n+e.charCodeAt(t),n|=0;return n},bl.ArrayCopy=function(e){var t=[];if(!e||!e.length||0===e.length)return t;for(var n=0;n<e.length;n++){var U=e[n],i={};for(var l in U)Object.prototype.hasOwnProperty.call(U,l)&&(i[l]=U[l]);t.push(i)}return t},bl.getFileSize=function(e,t){try{return e&&t?parseInt(t*e/8,10):0}catch(n){return 0}},bl.concatData=function(e,t){var n=[],U=0;e&&n.push(e),t&&n.push(t),n.every((function(e){return e&&(U+=e.byteLength),!0}));var i=new Uint8Array(U),l=0;return n.every((function(e){return e&&(i.set(e,l),l+=e.byteLength),!0})),i},bl.getFragRange=function(e,t,n){var U,i,l,F,a=null,r=null;return a=e<t.length-1?t[e]:t[t.length-1],r=e<n.length-1?n[e]:n[n.length-1],[Math.min((null===(U=a)||void 0===U?void 0:U.range[0])||1/0,(null===(i=r)||void 0===i?void 0:i.range[0])||1/0),Math.max(null===(l=a)||void 0===l?void 0:l.range[1],null===(F=r)||void 0===F?void 0:F.range[1])]},bl.getHostFromUrl=function(e){if("String"!==bl.typeOf(e)||!e)return"";var t=e.split("/"),n="";return t.length>3&&t[2]&&(n=t[2]),n},bl.checkUrlIsExpired=function(e){if(!e||"String"!==bl.typeOf(e))return 0;var t=0;try{var n=new RegExp("(\\?|&)x-tos-expires=([^&]*)(&|$)"),U=e.match(n);if(null!==U)t=parseInt(U[2],10);else{var i=e.split("/");i.length>5&&8===i[4].length&&(t=parseInt(i[4],16))}return t>0?t<parseInt((new Date).getTime()/1e3,10)?1:2:0}catch(l){return 0}},bl.newUint8Arrray=function(e){for(var t,n=0;n<10;)try{if((t=new Uint8Array(e))&&t.byteLength>0)break;n++}catch(U){n<10?n++:console.error("repeat data cache new array failed final",10)}return t};var El={"x-cache":"x_cache","x-response-sinfo":"server_ip","x-response-cinfo":"x-response-cinfo","content-range":"content-range","content-length":"content-length","content-type":"content-type"};function kl(e){var t={};return Object.keys(El).forEach((function(n){var U=El[n];e&&e.get&&e.get(n)&&(t[U]=e.get(n))})),t}function fl(e){var t=El["content-range"];if(e&&e.get&&e.get(t)){var n=e.get(t).split("/");if(2===(null==n?void 0:n.length))return n[1]}return null}var vl="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEEoQSxnKXt2YXIgST1PYmplY3Qua2V5cyhBKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgQj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKEEpO2cmJihCPUIuZmlsdGVyKChmdW5jdGlvbihnKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihBLGcpLmVudW1lcmFibGV9KSkpLEkucHVzaC5hcHBseShJLEIpfXJldHVybiBJfWZ1bmN0aW9uIGcoZyl7Zm9yKHZhciBJPTE7STxhcmd1bWVudHMubGVuZ3RoO0krKyl7dmFyIEI9bnVsbCE9YXJndW1lbnRzW0ldP2FyZ3VtZW50c1tJXTp7fTtJJTI/QShPYmplY3QoQiksITApLmZvckVhY2goKGZ1bmN0aW9uKEEpe2koZyxBLEJbQV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGcsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQikpOkEoT2JqZWN0KEIpKS5mb3JFYWNoKChmdW5jdGlvbihBKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZyxBLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQixBKSl9KSl9cmV0dXJuIGd9ZnVuY3Rpb24gSSgpe0k9ZnVuY3Rpb24oKXtyZXR1cm4gQX07dmFyIEE9e30sZz1PYmplY3QucHJvdG90eXBlLEI9Zy5oYXNPd25Qcm9wZXJ0eSxRPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24oQSxnLEkpe0FbZ109SS52YWx1ZX0sRT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxDPUUuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix0PUUuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsaT1FLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gZShBLGcsSSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLGcse3ZhbHVlOkksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxBW2ddfXRyeXtlKHt9LCIiKX1jYXRjaChTKXtlPWZ1bmN0aW9uKEEsZyxJKXtyZXR1cm4gQVtnXT1JfX1mdW5jdGlvbiBvKEEsZyxJLEIpe3ZhciBFPWcmJmcucHJvdG90eXBlIGluc3RhbmNlb2YgYT9nOmEsQz1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSx0PW5ldyBHKEJ8fFtdKTtyZXR1cm4gUShDLCJfaW52b2tlIix7dmFsdWU6dyhBLEksdCl9KSxDfWZ1bmN0aW9uIHIoQSxnLEkpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6QS5jYWxsKGcsSSl9fWNhdGNoKFMpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOlN9fX1BLndyYXA9bzt2YXIgbj17fTtmdW5jdGlvbiBhKCl7fWZ1bmN0aW9uIHMoKXt9ZnVuY3Rpb24gYygpe312YXIgaD17fTtlKGgsQywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgZj1PYmplY3QuZ2V0UHJvdG90eXBlT2YsdT1mJiZmKGYoayhbXSkpKTt1JiZ1IT09ZyYmQi5jYWxsKHUsQykmJihoPXUpO3ZhciB5PWMucHJvdG90eXBlPWEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoaCk7ZnVuY3Rpb24gRChBKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGcpe2UoQSxnLChmdW5jdGlvbihBKXtyZXR1cm4gdGhpcy5faW52b2tlKGcsQSl9KSl9KSl9ZnVuY3Rpb24gbChBLGcpe2Z1bmN0aW9uIEkoUSxFLEMsdCl7dmFyIGk9cihBW1FdLEEsRSk7aWYoInRocm93IiE9PWkudHlwZSl7dmFyIGU9aS5hcmcsbz1lLnZhbHVlO3JldHVybiBvJiYib2JqZWN0Ij09dHlwZW9mIG8mJkIuY2FsbChvLCJfX2F3YWl0Iik/Zy5yZXNvbHZlKG8uX19hd2FpdCkudGhlbigoZnVuY3Rpb24oQSl7SSgibmV4dCIsQSxDLHQpfSksKGZ1bmN0aW9uKEEpe0koInRocm93IixBLEMsdCl9KSk6Zy5yZXNvbHZlKG8pLnRoZW4oKGZ1bmN0aW9uKEEpe2UudmFsdWU9QSxDKGUpfSksKGZ1bmN0aW9uKEEpe3JldHVybiBJKCJ0aHJvdyIsQSxDLHQpfSkpfXQoaS5hcmcpfXZhciBFO1EodGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKEEsQil7ZnVuY3Rpb24gUSgpe3JldHVybiBuZXcgZygoZnVuY3Rpb24oZyxRKXtJKEEsQixnLFEpfSkpfXJldHVybiBFPUU/RS50aGVuKFEsUSk6USgpfX0pfWZ1bmN0aW9uIHcoQSxnLEkpe3ZhciBCPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKFEsRSl7aWYoImV4ZWN1dGluZyI9PT1CKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09Qil7aWYoInRocm93Ij09PVEpdGhyb3cgRTtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihJLm1ldGhvZD1RLEkuYXJnPUU7Oyl7dmFyIEM9SS5kZWxlZ2F0ZTtpZihDKXt2YXIgdD1kKEMsSSk7aWYodCl7aWYodD09PW4pY29udGludWU7cmV0dXJuIHR9fWlmKCJuZXh0Ij09PUkubWV0aG9kKUkuc2VudD1JLl9zZW50PUkuYXJnO2Vsc2UgaWYoInRocm93Ij09PUkubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09Qil0aHJvdyBCPSJjb21wbGV0ZWQiLEkuYXJnO0kuZGlzcGF0Y2hFeGNlcHRpb24oSS5hcmcpfWVsc2UicmV0dXJuIj09PUkubWV0aG9kJiZJLmFicnVwdCgicmV0dXJuIixJLmFyZyk7Qj0iZXhlY3V0aW5nIjt2YXIgaT1yKEEsZyxJKTtpZigibm9ybWFsIj09PWkudHlwZSl7aWYoQj1JLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixpLmFyZz09PW4pY29udGludWU7cmV0dXJue3ZhbHVlOmkuYXJnLGRvbmU6SS5kb25lfX0idGhyb3ciPT09aS50eXBlJiYoQj0iY29tcGxldGVkIixJLm1ldGhvZD0idGhyb3ciLEkuYXJnPWkuYXJnKX19fWZ1bmN0aW9uIGQoQSxnKXt2YXIgST1nLm1ldGhvZCxCPUEuaXRlcmF0b3JbSV07aWYodm9pZCAwPT09QilyZXR1cm4gZy5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1JJiZBLml0ZXJhdG9yLnJldHVybiYmKGcubWV0aG9kPSJyZXR1cm4iLGcuYXJnPXZvaWQgMCxkKEEsZyksInRocm93Ij09PWcubWV0aG9kKXx8InJldHVybiIhPT1JJiYoZy5tZXRob2Q9InRocm93IixnLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK0krIicgbWV0aG9kIikpLG47dmFyIFE9cihCLEEuaXRlcmF0b3IsZy5hcmcpO2lmKCJ0aHJvdyI9PT1RLnR5cGUpcmV0dXJuIGcubWV0aG9kPSJ0aHJvdyIsZy5hcmc9US5hcmcsZy5kZWxlZ2F0ZT1udWxsLG47dmFyIEU9US5hcmc7cmV0dXJuIEU/RS5kb25lPyhnW0EucmVzdWx0TmFtZV09RS52YWx1ZSxnLm5leHQ9QS5uZXh0TG9jLCJyZXR1cm4iIT09Zy5tZXRob2QmJihnLm1ldGhvZD0ibmV4dCIsZy5hcmc9dm9pZCAwKSxnLmRlbGVnYXRlPW51bGwsbik6RTooZy5tZXRob2Q9InRocm93IixnLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLGcuZGVsZWdhdGU9bnVsbCxuKX1mdW5jdGlvbiBGKEEpe3ZhciBnPXt0cnlMb2M6QVswXX07MSBpbiBBJiYoZy5jYXRjaExvYz1BWzFdKSwyIGluIEEmJihnLmZpbmFsbHlMb2M9QVsyXSxnLmFmdGVyTG9jPUFbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGcpfWZ1bmN0aW9uIFIoQSl7dmFyIGc9QS5jb21wbGV0aW9ufHx7fTtnLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGcuYXJnLEEuY29tcGxldGlvbj1nfWZ1bmN0aW9uIEcoQSl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLEEuZm9yRWFjaChGLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIGsoQSl7aWYoQSl7dmFyIGc9QVtDXTtpZihnKXJldHVybiBnLmNhbGwoQSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEEubmV4dClyZXR1cm4gQTtpZighaXNOYU4oQS5sZW5ndGgpKXt2YXIgST0tMSxRPWZ1bmN0aW9uIGcoKXtmb3IoOysrSTxBLmxlbmd0aDspaWYoQi5jYWxsKEEsSSkpcmV0dXJuIGcudmFsdWU9QVtJXSxnLmRvbmU9ITEsZztyZXR1cm4gZy52YWx1ZT12b2lkIDAsZy5kb25lPSEwLGd9O3JldHVybiBRLm5leHQ9UX19cmV0dXJue25leHQ6cH19ZnVuY3Rpb24gcCgpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIHMucHJvdG90eXBlPWMsUSh5LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmMsY29uZmlndXJhYmxlOiEwfSksUShjLCJjb25zdHJ1Y3RvciIse3ZhbHVlOnMsY29uZmlndXJhYmxlOiEwfSkscy5kaXNwbGF5TmFtZT1lKGMsaSwiR2VuZXJhdG9yRnVuY3Rpb24iKSxBLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oQSl7dmFyIGc9ImZ1bmN0aW9uIj09dHlwZW9mIEEmJkEuY29uc3RydWN0b3I7cmV0dXJuISFnJiYoZz09PXN8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZy5kaXNwbGF5TmFtZXx8Zy5uYW1lKSl9LEEubWFyaz1mdW5jdGlvbihBKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihBLGMpOihBLl9fcHJvdG9fXz1jLGUoQSxpLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxBLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHkpLEF9LEEuYXdyYXA9ZnVuY3Rpb24oQSl7cmV0dXJue19fYXdhaXQ6QX19LEQobC5wcm90b3R5cGUpLGUobC5wcm90b3R5cGUsdCwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxBLkFzeW5jSXRlcmF0b3I9bCxBLmFzeW5jPWZ1bmN0aW9uKGcsSSxCLFEsRSl7dm9pZCAwPT09RSYmKEU9UHJvbWlzZSk7dmFyIEM9bmV3IGwobyhnLEksQixRKSxFKTtyZXR1cm4gQS5pc0dlbmVyYXRvckZ1bmN0aW9uKEkpP0M6Qy5uZXh0KCkudGhlbigoZnVuY3Rpb24oQSl7cmV0dXJuIEEuZG9uZT9BLnZhbHVlOkMubmV4dCgpfSkpfSxEKHkpLGUoeSxpLCJHZW5lcmF0b3IiKSxlKHksQywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlKHksInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxBLmtleXM9ZnVuY3Rpb24oQSl7dmFyIGc9T2JqZWN0KEEpLEk9W107Zm9yKHZhciBCIGluIGcpSS5wdXNoKEIpO3JldHVybiBJLnJldmVyc2UoKSxmdW5jdGlvbiBBKCl7Zm9yKDtJLmxlbmd0aDspe3ZhciBCPUkucG9wKCk7aWYoQiBpbiBnKXJldHVybiBBLnZhbHVlPUIsQS5kb25lPSExLEF9cmV0dXJuIEEuZG9uZT0hMCxBfX0sQS52YWx1ZXM9ayxHLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RyxyZXNldDpmdW5jdGlvbihBKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFIpLCFBKWZvcih2YXIgZyBpbiB0aGlzKSJ0Ij09PWcuY2hhckF0KDApJiZCLmNhbGwodGhpcyxnKSYmIWlzTmFOKCtnLnNsaWNlKDEpKSYmKHRoaXNbZ109dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgQT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09QS50eXBlKXRocm93IEEuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKEEpe2lmKHRoaXMuZG9uZSl0aHJvdyBBO3ZhciBnPXRoaXM7ZnVuY3Rpb24gSShJLEIpe3JldHVybiBDLnR5cGU9InRocm93IixDLmFyZz1BLGcubmV4dD1JLEImJihnLm1ldGhvZD0ibmV4dCIsZy5hcmc9dm9pZCAwKSwhIUJ9Zm9yKHZhciBRPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtRPj0wOy0tUSl7dmFyIEU9dGhpcy50cnlFbnRyaWVzW1FdLEM9RS5jb21wbGV0aW9uO2lmKCJyb290Ij09PUUudHJ5TG9jKXJldHVybiBJKCJlbmQiKTtpZihFLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgdD1CLmNhbGwoRSwiY2F0Y2hMb2MiKSxpPUIuY2FsbChFLCJmaW5hbGx5TG9jIik7aWYodCYmaSl7aWYodGhpcy5wcmV2PEUuY2F0Y2hMb2MpcmV0dXJuIEkoRS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PEUuZmluYWxseUxvYylyZXR1cm4gSShFLmZpbmFsbHlMb2MpfWVsc2UgaWYodCl7aWYodGhpcy5wcmV2PEUuY2F0Y2hMb2MpcmV0dXJuIEkoRS5jYXRjaExvYywhMCl9ZWxzZXtpZighaSl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PEUuZmluYWxseUxvYylyZXR1cm4gSShFLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO0k+PTA7LS1JKXt2YXIgUT10aGlzLnRyeUVudHJpZXNbSV07aWYoUS50cnlMb2M8PXRoaXMucHJldiYmQi5jYWxsKFEsImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PFEuZmluYWxseUxvYyl7dmFyIEU9UTticmVha319RSYmKCJicmVhayI9PT1BfHwiY29udGludWUiPT09QSkmJkUudHJ5TG9jPD1nJiZnPD1FLmZpbmFsbHlMb2MmJihFPW51bGwpO3ZhciBDPUU/RS5jb21wbGV0aW9uOnt9O3JldHVybiBDLnR5cGU9QSxDLmFyZz1nLEU/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9RS5maW5hbGx5TG9jLG4pOnRoaXMuY29tcGxldGUoQyl9LGNvbXBsZXRlOmZ1bmN0aW9uKEEsZyl7aWYoInRocm93Ij09PUEudHlwZSl0aHJvdyBBLmFyZztyZXR1cm4iYnJlYWsiPT09QS50eXBlfHwiY29udGludWUiPT09QS50eXBlP3RoaXMubmV4dD1BLmFyZzoicmV0dXJuIj09PUEudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPUEuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT1BLnR5cGUmJmcmJih0aGlzLm5leHQ9Zyksbn0sZmluaXNoOmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7Zz49MDstLWcpe3ZhciBJPXRoaXMudHJ5RW50cmllc1tnXTtpZihJLmZpbmFsbHlMb2M9PT1BKXJldHVybiB0aGlzLmNvbXBsZXRlKEkuY29tcGxldGlvbixJLmFmdGVyTG9jKSxSKEkpLG59fSxjYXRjaDpmdW5jdGlvbihBKXtmb3IodmFyIGc9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2c+PTA7LS1nKXt2YXIgST10aGlzLnRyeUVudHJpZXNbZ107aWYoSS50cnlMb2M9PT1BKXt2YXIgQj1JLmNvbXBsZXRpb247aWYoInRocm93Ij09PUIudHlwZSl7dmFyIFE9Qi5hcmc7UihJKX1yZXR1cm4gUX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihBLGcsSSl7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOmsoQSkscmVzdWx0TmFtZTpnLG5leHRMb2M6SX0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLG59fSxBfWZ1bmN0aW9uIEIoQSl7cmV0dXJuKEI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oQSl7cmV0dXJuIHR5cGVvZiBBfTpmdW5jdGlvbihBKXtyZXR1cm4gQSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmQS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmQSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIEF9KShBKX1mdW5jdGlvbiBRKEEsZyxJLEIsUSxFLEMpe3RyeXt2YXIgdD1BW0VdKEMpLGk9dC52YWx1ZX1jYXRjaChlKXtyZXR1cm4gdm9pZCBJKGUpfXQuZG9uZT9nKGkpOlByb21pc2UucmVzb2x2ZShpKS50aGVuKEIsUSl9ZnVuY3Rpb24gRShBLGcpe2lmKCEoQSBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEMoQSxnKXtmb3IodmFyIEk9MDtJPGcubGVuZ3RoO0krKyl7dmFyIEI9Z1tJXTtCLmVudW1lcmFibGU9Qi5lbnVtZXJhYmxlfHwhMSxCLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gQiYmKEIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLHkoQi5rZXkpLEIpfX1mdW5jdGlvbiB0KEEsZyxJKXtyZXR1cm4gZyYmQyhBLnByb3RvdHlwZSxnKSxJJiZDKEEsSSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksQX1mdW5jdGlvbiBpKEEsZyxJKXtyZXR1cm4oZz15KGcpKWluIEE/T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsZyx7dmFsdWU6SSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOkFbZ109SSxBfWZ1bmN0aW9uIGUoQSxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtBLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6QSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmcihBLGcpfWZ1bmN0aW9uIG8oQSl7cmV0dXJuKG89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oQSl7cmV0dXJuIEEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoQSl9KShBKX1mdW5jdGlvbiByKEEsZyl7cmV0dXJuKHI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oQSxnKXtyZXR1cm4gQS5fX3Byb3RvX189ZyxBfSkoQSxnKX1mdW5jdGlvbiBuKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKEEpe3JldHVybiExfX1mdW5jdGlvbiBhKEEsZyxJKXtyZXR1cm4oYT1uKCk/UmVmbGVjdC5jb25zdHJ1Y3QuYmluZCgpOmZ1bmN0aW9uKEEsZyxJKXt2YXIgQj1bbnVsbF07Qi5wdXNoLmFwcGx5KEIsZyk7dmFyIFE9bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHkoQSxCKSk7cmV0dXJuIEkmJnIoUSxJLnByb3RvdHlwZSksUX0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBzKEEsZyl7aWYoZyYmKCJvYmplY3QiPT10eXBlb2YgZ3x8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oQSl7aWYodm9pZCAwPT09QSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBBfShBKX1mdW5jdGlvbiBjKEEpe3ZhciBnPW4oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgSSxCPW8oQSk7aWYoZyl7dmFyIFE9byh0aGlzKS5jb25zdHJ1Y3RvcjtJPVJlZmxlY3QuY29uc3RydWN0KEIsYXJndW1lbnRzLFEpfWVsc2UgST1CLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gcyh0aGlzLEkpfX1mdW5jdGlvbiBoKCl7cmV0dXJuIGg9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCPWZ1bmN0aW9uKEEsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEEsZykmJm51bGwhPT0oQT1vKEEpKTspO3JldHVybiBBfShBLGcpO2lmKEIpe3ZhciBRPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQixnKTtyZXR1cm4gUS5nZXQ/US5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/QTpJKTpRLnZhbHVlfX0saC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZihBKXtyZXR1cm4gZnVuY3Rpb24oQSl7aWYoQXJyYXkuaXNBcnJheShBKSlyZXR1cm4gdShBKX0oQSl8fGZ1bmN0aW9uKEEpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1BW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPUFbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShBKX0oQSl8fGZ1bmN0aW9uKEEsZyl7aWYoIUEpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgQSlyZXR1cm4gdShBLGcpO3ZhciBJPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChBKS5zbGljZSg4LC0xKTsiT2JqZWN0Ij09PUkmJkEuY29uc3RydWN0b3ImJihJPUEuY29uc3RydWN0b3IubmFtZSk7aWYoIk1hcCI9PT1JfHwiU2V0Ij09PUkpcmV0dXJuIEFycmF5LmZyb20oQSk7aWYoIkFyZ3VtZW50cyI9PT1JfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChJKSlyZXR1cm4gdShBLGcpfShBKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB1KEEsZyl7KG51bGw9PWd8fGc+QS5sZW5ndGgpJiYoZz1BLmxlbmd0aCk7Zm9yKHZhciBJPTAsQj1uZXcgQXJyYXkoZyk7STxnO0krKylCW0ldPUFbSV07cmV0dXJuIEJ9ZnVuY3Rpb24geShBKXt2YXIgZz1mdW5jdGlvbihBLGcpe2lmKCJvYmplY3QiIT10eXBlb2YgQXx8bnVsbD09PUEpcmV0dXJuIEE7dmFyIEk9QVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PUkpe3ZhciBCPUkuY2FsbChBLGd8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBCKXJldHVybiBCO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Zz9TdHJpbmc6TnVtYmVyKShBKX0oQSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBnP2c6U3RyaW5nKGcpfXZhciBEPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30sbD1mdW5jdGlvbihBKXt0cnl7cmV0dXJuISFBKCl9Y2F0Y2goZyl7cmV0dXJuITB9fSx3PXt9LnRvU3RyaW5nLGQ9ZnVuY3Rpb24oQSl7cmV0dXJuIHcuY2FsbChBKS5zbGljZSg4LC0xKX0sRj1kLFI9IiIuc3BsaXQsRz1sKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbihBKXtyZXR1cm4iU3RyaW5nIj09RihBKT9SLmNhbGwoQSwiIik6T2JqZWN0KEEpfTpPYmplY3Qsaz1mdW5jdGlvbihBKXtpZihudWxsPT1BKXRocm93IFR5cGVFcnJvcigiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIitBKTtyZXR1cm4gQX0scD1HLFM9ayxVPWZ1bmN0aW9uKEEpe3JldHVybiBwKFMoQSkpfSxNPWZ1bmN0aW9uKEEpe3JldHVybiBBJiZBLk1hdGg9PU1hdGgmJkF9LE49TSgib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxNKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxNKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fE0oIm9iamVjdCI9PXR5cGVvZiBEJiZEKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSx2PXtleHBvcnRzOnt9fSxZPSFsKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KSksSD17fSxMPWZ1bmN0aW9uKEEpe3JldHVybiJvYmplY3QiPT10eXBlb2YgQT9udWxsIT09QToiZnVuY3Rpb24iPT10eXBlb2YgQX0sSj1MLEs9Ti5kb2N1bWVudCxtPUooSykmJkooSy5jcmVhdGVFbGVtZW50KSx4PWZ1bmN0aW9uKEEpe3JldHVybiBtP0suY3JlYXRlRWxlbWVudChBKTp7fX0scT14LGI9IVkmJiFsKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkocSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpLFQ9TCxqPWZ1bmN0aW9uKEEpe2lmKCFUKEEpKXRocm93IFR5cGVFcnJvcihTdHJpbmcoQSkrIiBpcyBub3QgYW4gb2JqZWN0Iik7cmV0dXJuIEF9LE89TCxaPWZ1bmN0aW9uKEEsZyl7aWYoIU8oQSkpcmV0dXJuIEE7dmFyIEksQjtpZihnJiYiZnVuY3Rpb24iPT10eXBlb2YoST1BLnRvU3RyaW5nKSYmIU8oQj1JLmNhbGwoQSkpKXJldHVybiBCO2lmKCJmdW5jdGlvbiI9PXR5cGVvZihJPUEudmFsdWVPZikmJiFPKEI9SS5jYWxsKEEpKSlyZXR1cm4gQjtpZighZyYmImZ1bmN0aW9uIj09dHlwZW9mKEk9QS50b1N0cmluZykmJiFPKEI9SS5jYWxsKEEpKSlyZXR1cm4gQjt0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfSxQPVksVz1iLFY9aixYPVosej1PYmplY3QuZGVmaW5lUHJvcGVydHk7SC5mPVA/ejpmdW5jdGlvbihBLGcsSSl7aWYoVihBKSxnPVgoZywhMCksVihJKSxXKXRyeXtyZXR1cm4geihBLGcsSSl9Y2F0Y2goQil7fWlmKCJnZXQiaW4gSXx8InNldCJpbiBJKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4idmFsdWUiaW4gSSYmKEFbZ109SS52YWx1ZSksQX07dmFyIF89ZnVuY3Rpb24oQSxnKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmQSksY29uZmlndXJhYmxlOiEoMiZBKSx3cml0YWJsZTohKDQmQSksdmFsdWU6Z319LCQ9SCxBQT1fLGdBPVk/ZnVuY3Rpb24oQSxnLEkpe3JldHVybiAkLmYoQSxnLEFBKDEsSSkpfTpmdW5jdGlvbihBLGcsSSl7cmV0dXJuIEFbZ109SSxBfSxJQT1OLEJBPWdBLFFBPWZ1bmN0aW9uKEEsZyl7dHJ5e0JBKElBLEEsZyl9Y2F0Y2goSSl7SUFbQV09Z31yZXR1cm4gZ30sRUE9UUEsQ0E9Il9fY29yZS1qc19zaGFyZWRfXyIsdEE9TltDQV18fEVBKENBLHt9KSxpQT10QTsodi5leHBvcnRzPWZ1bmN0aW9uKEEsZyl7cmV0dXJuIGlBW0FdfHwoaUFbQV09dm9pZCAwIT09Zz9nOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMTIuMSIsbW9kZToiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMjEgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSk7dmFyIGVBLG9BLHJBPXYuZXhwb3J0cyxuQT1rLGFBPWZ1bmN0aW9uKEEpe3JldHVybiBPYmplY3QobkEoQSkpfSxzQT1hQSxjQT17fS5oYXNPd25Qcm9wZXJ0eSxoQT1mdW5jdGlvbihBLGcpe3JldHVybiBjQS5jYWxsKHNBKEEpLGcpfSxmQT0wLHVBPU1hdGgucmFuZG9tKCkseUE9ZnVuY3Rpb24oQSl7cmV0dXJuIlN5bWJvbCgiK1N0cmluZyh2b2lkIDA9PT1BPyIiOkEpKyIpXyIrKCsrZkErdUEpLnRvU3RyaW5nKDM2KX0sREE9TixsQT1OLHdBPWZ1bmN0aW9uKEEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBBP0E6dm9pZCAwfSxkQT1mdW5jdGlvbihBLGcpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/d0EoREFbQV0pfHx3QShsQVtBXSk6REFbQV0mJkRBW0FdW2ddfHxsQVtBXSYmbEFbQV1bZ119LEZBPWRBKCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiKXx8IiIsUkE9RkEsR0E9Ti5wcm9jZXNzLGtBPUdBJiZHQS52ZXJzaW9ucyxwQT1rQSYma0Eudjg7cEE/b0E9KGVBPXBBLnNwbGl0KCIuIikpWzBdPDQ/MTplQVswXStlQVsxXTpSQSYmKCEoZUE9UkEubWF0Y2goL0VkZ2VcLyhcZCspLykpfHxlQVsxXT49NzQpJiYoZUE9UkEubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihvQT1lQVsxXSk7dmFyIFNBLFVBPW9BJiYrb0EsTUE9VUEsTkE9bCx2QT0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFOQSgoZnVuY3Rpb24oKXtyZXR1cm4hU3RyaW5nKFN5bWJvbCgpKXx8IVN5bWJvbC5zaGFtJiZNQSYmTUE8NDF9KSksWUE9dkEmJiFTeW1ib2wuc2hhbSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3IsSEE9TixMQT1oQSxKQT15QSxLQT12QSxtQT1ZQSx4QT1yQSgid2tzIikscUE9SEEuU3ltYm9sLGJBPW1BP3FBOnFBJiZxQS53aXRob3V0U2V0dGVyfHxKQSxUQT1mdW5jdGlvbihBKXtyZXR1cm4gTEEoeEEsQSkmJihLQXx8InN0cmluZyI9PXR5cGVvZiB4QVtBXSl8fChLQSYmTEEocUEsQSk/eEFbQV09cUFbQV06eEFbQV09YkEoIlN5bWJvbC4iK0EpKSx4QVtBXX0sakE9TWF0aC5jZWlsLE9BPU1hdGguZmxvb3IsWkE9ZnVuY3Rpb24oQSl7cmV0dXJuIGlzTmFOKEE9K0EpPzA6KEE+MD9PQTpqQSkoQSl9LFBBPVpBLFdBPU1hdGgubWluLFZBPWZ1bmN0aW9uKEEpe3JldHVybiBBPjA/V0EoUEEoQSksOTAwNzE5OTI1NDc0MDk5MSk6MH0sWEE9WkEsekE9TWF0aC5tYXgsX0E9TWF0aC5taW4sJEE9ZnVuY3Rpb24oQSxnKXt2YXIgST1YQShBKTtyZXR1cm4gSTwwP3pBKEkrZywwKTpfQShJLGcpfSxBZz1VLGdnPVZBLElnPSRBLEJnPWZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7dmFyIFEsRT1BZyhnKSxDPWdnKEUubGVuZ3RoKSx0PUlnKEIsQyk7aWYoQSYmSSE9SSl7Zm9yKDtDPnQ7KWlmKChRPUVbdCsrXSkhPVEpcmV0dXJuITB9ZWxzZSBmb3IoO0M+dDt0KyspaWYoKEF8fHQgaW4gRSkmJkVbdF09PT1JKXJldHVybiBBfHx0fHwwO3JldHVybiFBJiYtMX19LFFnPXtpbmNsdWRlczpCZyghMCksaW5kZXhPZjpCZyghMSl9LEVnPXt9LENnPWhBLHRnPVUsaWc9UWcuaW5kZXhPZixlZz1FZyxvZz1mdW5jdGlvbihBLGcpe3ZhciBJLEI9dGcoQSksUT0wLEU9W107Zm9yKEkgaW4gQikhQ2coZWcsSSkmJkNnKEIsSSkmJkUucHVzaChJKTtmb3IoO2cubGVuZ3RoPlE7KUNnKEIsST1nW1ErK10pJiYofmlnKEUsSSl8fEUucHVzaChJKSk7cmV0dXJuIEV9LHJnPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl0sbmc9b2csYWc9cmcsc2c9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKEEpe3JldHVybiBuZyhBLGFnKX0sY2c9SCxoZz1qLGZnPXNnLHVnPVk/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oQSxnKXtoZyhBKTtmb3IodmFyIEksQj1mZyhnKSxRPUIubGVuZ3RoLEU9MDtRPkU7KWNnLmYoQSxJPUJbRSsrXSxnW0ldKTtyZXR1cm4gQX0seWc9ZEEoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiksRGc9eUEsbGc9ckEoImtleXMiKSx3Zz1mdW5jdGlvbihBKXtyZXR1cm4gbGdbQV18fChsZ1tBXT1EZyhBKSl9LGRnPWosRmc9dWcsUmc9cmcsR2c9RWcsa2c9eWcscGc9eCxTZz0icHJvdG90eXBlIixVZz0ic2NyaXB0IixNZz13ZygiSUVfUFJPVE8iKSxOZz1mdW5jdGlvbigpe30sdmc9ZnVuY3Rpb24oQSl7cmV0dXJuIjwiK1VnKyI+IitBKyI8LyIrVWcrIj4ifSxZZz1mdW5jdGlvbigpe3RyeXtTQT1kb2N1bWVudC5kb21haW4mJm5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKFEpe312YXIgQSxnLEk7WWc9U0E/ZnVuY3Rpb24oQSl7QS53cml0ZSh2ZygiIikpLEEuY2xvc2UoKTt2YXIgZz1BLnBhcmVudFdpbmRvdy5PYmplY3Q7cmV0dXJuIEE9bnVsbCxnfShTQSk6KGc9cGcoImlmcmFtZSIpLEk9ImphdmEiK1VnKyI6IixnLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGtnLmFwcGVuZENoaWxkKGcpLGcuc3JjPVN0cmluZyhJKSwoQT1nLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSxBLndyaXRlKHZnKCJkb2N1bWVudC5GPU9iamVjdCIpKSxBLmNsb3NlKCksQS5GKTtmb3IodmFyIEI9UmcubGVuZ3RoO0ItLTspZGVsZXRlIFlnW1NnXVtSZ1tCXV07cmV0dXJuIFlnKCl9O0dnW01nXT0hMDt2YXIgSGc9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oQSxnKXt2YXIgSTtyZXR1cm4gbnVsbCE9PUE/KE5nW1NnXT1kZyhBKSxJPW5ldyBOZyxOZ1tTZ109bnVsbCxJW01nXT1BKTpJPVlnKCksdm9pZCAwPT09Zz9JOkZnKEksZyl9LExnPUhnLEpnPUgsS2c9VEEoInVuc2NvcGFibGVzIiksbWc9QXJyYXkucHJvdG90eXBlO251bGw9PW1nW0tnXSYmSmcuZihtZyxLZyx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOkxnKG51bGwpfSk7dmFyIHhnPWZ1bmN0aW9uKEEpe21nW0tnXVtBXT0hMH0scWc9e30sYmc9dEEsVGc9RnVuY3Rpb24udG9TdHJpbmc7ImZ1bmN0aW9uIiE9dHlwZW9mIGJnLmluc3BlY3RTb3VyY2UmJihiZy5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKEEpe3JldHVybiBUZy5jYWxsKEEpfSk7dmFyIGpnLE9nLFpnLFBnPWJnLmluc3BlY3RTb3VyY2UsV2c9UGcsVmc9Ti5XZWFrTWFwLFhnPSJmdW5jdGlvbiI9PXR5cGVvZiBWZyYmL25hdGl2ZSBjb2RlLy50ZXN0KFdnKFZnKSksemc9TCxfZz1nQSwkZz1oQSxBST10QSxnST13ZyxJST1FZyxCST0iT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQiLFFJPU4uV2Vha01hcDtpZihYZ3x8QUkuc3RhdGUpe3ZhciBFST1BSS5zdGF0ZXx8KEFJLnN0YXRlPW5ldyBRSSksQ0k9RUkuZ2V0LHRJPUVJLmhhcyxpST1FSS5zZXQ7amc9ZnVuY3Rpb24oQSxnKXtpZih0SS5jYWxsKEVJLEEpKXRocm93IG5ldyBUeXBlRXJyb3IoQkkpO3JldHVybiBnLmZhY2FkZT1BLGlJLmNhbGwoRUksQSxnKSxnfSxPZz1mdW5jdGlvbihBKXtyZXR1cm4gQ0kuY2FsbChFSSxBKXx8e319LFpnPWZ1bmN0aW9uKEEpe3JldHVybiB0SS5jYWxsKEVJLEEpfX1lbHNle3ZhciBlST1nSSgic3RhdGUiKTtJSVtlSV09ITAsamc9ZnVuY3Rpb24oQSxnKXtpZigkZyhBLGVJKSl0aHJvdyBuZXcgVHlwZUVycm9yKEJJKTtyZXR1cm4gZy5mYWNhZGU9QSxfZyhBLGVJLGcpLGd9LE9nPWZ1bmN0aW9uKEEpe3JldHVybiAkZyhBLGVJKT9BW2VJXTp7fX0sWmc9ZnVuY3Rpb24oQSl7cmV0dXJuICRnKEEsZUkpfX12YXIgb0k9e3NldDpqZyxnZXQ6T2csaGFzOlpnLGVuZm9yY2U6ZnVuY3Rpb24oQSl7cmV0dXJuIFpnKEEpP09nKEEpOmpnKEEse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcpe3ZhciBJO2lmKCF6ZyhnKXx8KEk9T2coZykpLnR5cGUhPT1BKXRocm93IFR5cGVFcnJvcigiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK0ErIiByZXF1aXJlZCIpO3JldHVybiBJfX19LHJJPXt9LG5JPXt9LGFJPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLHNJPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsY0k9c0kmJiFhSS5jYWxsKHsxOjJ9LDEpO25JLmY9Y0k/ZnVuY3Rpb24oQSl7dmFyIGc9c0kodGhpcyxBKTtyZXR1cm4hIWcmJmcuZW51bWVyYWJsZX06YUk7dmFyIGhJPVksZkk9bkksdUk9Xyx5ST1VLERJPVosbEk9aEEsd0k9YixkST1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3JJLmY9aEk/ZEk6ZnVuY3Rpb24oQSxnKXtpZihBPXlJKEEpLGc9REkoZywhMCksd0kpdHJ5e3JldHVybiBkSShBLGcpfWNhdGNoKEkpe31pZihsSShBLGcpKXJldHVybiB1SSghZkkuZi5jYWxsKEEsZyksQVtnXSl9O3ZhciBGST17ZXhwb3J0czp7fX0sUkk9TixHST1nQSxrST1oQSxwST1RQSxTST1QZyxVST1vSS5nZXQsTUk9b0kuZW5mb3JjZSxOST1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIik7KEZJLmV4cG9ydHM9ZnVuY3Rpb24oQSxnLEksQil7dmFyIFEsRT0hIUImJiEhQi51bnNhZmUsQz0hIUImJiEhQi5lbnVtZXJhYmxlLHQ9ISFCJiYhIUIubm9UYXJnZXRHZXQ7ImZ1bmN0aW9uIj09dHlwZW9mIEkmJigic3RyaW5nIiE9dHlwZW9mIGd8fGtJKEksIm5hbWUiKXx8R0koSSwibmFtZSIsZyksKFE9TUkoSSkpLnNvdXJjZXx8KFEuc291cmNlPU5JLmpvaW4oInN0cmluZyI9PXR5cGVvZiBnP2c6IiIpKSksQSE9PVJJPyhFPyF0JiZBW2ddJiYoQz0hMCk6ZGVsZXRlIEFbZ10sQz9BW2ddPUk6R0koQSxnLEkpKTpDP0FbZ109STpwSShnLEkpfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJlVJKHRoaXMpLnNvdXJjZXx8U0kodGhpcyl9KSk7dmFyIHZJPUZJLmV4cG9ydHMsWUk9e30sSEk9b2csTEk9cmcuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtZSS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihBKXtyZXR1cm4gSEkoQSxMSSl9O3ZhciBKST17fTtKSS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7dmFyIEtJLG1JLHhJLHFJPVlJLGJJPUpJLFRJPWosakk9ZEEoIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9uKEEpe3ZhciBnPXFJLmYoVEkoQSkpLEk9YkkuZjtyZXR1cm4gST9nLmNvbmNhdChJKEEpKTpnfSxPST1oQSxaST1qSSxQST1ySSxXST1ILFZJPWwsWEk9LyN8XC5wcm90b3R5cGVcLi8sekk9ZnVuY3Rpb24oQSxnKXt2YXIgST0kSVtfSShBKV07cmV0dXJuIEk9PWdCfHxJIT1BQiYmKCJmdW5jdGlvbiI9PXR5cGVvZiBnP1ZJKGcpOiEhZyl9LF9JPXpJLm5vcm1hbGl6ZT1mdW5jdGlvbihBKXtyZXR1cm4gU3RyaW5nKEEpLnJlcGxhY2UoWEksIi4iKS50b0xvd2VyQ2FzZSgpfSwkST16SS5kYXRhPXt9LEFCPXpJLk5BVElWRT0iTiIsZ0I9ekkuUE9MWUZJTEw9IlAiLElCPXpJLEJCPU4sUUI9ckkuZixFQj1nQSxDQj12SSx0Qj1RQSxpQj1mdW5jdGlvbihBLGcpe2Zvcih2YXIgST1aSShnKSxCPVdJLmYsUT1QSS5mLEU9MDtFPEkubGVuZ3RoO0UrKyl7dmFyIEM9SVtFXTtPSShBLEMpfHxCKEEsQyxRKGcsQykpfX0sZUI9SUIsb0I9ZnVuY3Rpb24oQSxnKXt2YXIgSSxCLFEsRSxDLHQ9QS50YXJnZXQsaT1BLmdsb2JhbCxlPUEuc3RhdDtpZihJPWk/QkI6ZT9CQlt0XXx8dEIodCx7fSk6KEJCW3RdfHx7fSkucHJvdG90eXBlKWZvcihCIGluIGcpe2lmKEU9Z1tCXSxRPUEubm9UYXJnZXRHZXQ/KEM9UUIoSSxCKSkmJkMudmFsdWU6SVtCXSwhZUIoaT9COnQrKGU/Ii4iOiIjIikrQixBLmZvcmNlZCkmJnZvaWQgMCE9PVEpe2lmKHR5cGVvZiBFPT10eXBlb2YgUSljb250aW51ZTtpQihFLFEpfShBLnNoYW18fFEmJlEuc2hhbSkmJkVCKEUsInNoYW0iLCEwKSxDQihJLEIsRSxBKX19LHJCPSFsKChmdW5jdGlvbigpe2Z1bmN0aW9uIEEoKXt9cmV0dXJuIEEucHJvdG90eXBlLmNvbnN0cnVjdG9yPW51bGwsT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBBKSE9PUEucHJvdG90eXBlfSkpLG5CPWhBLGFCPWFBLHNCPXJCLGNCPXdnKCJJRV9QUk9UTyIpLGhCPU9iamVjdC5wcm90b3R5cGUsZkI9c0I/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKEEpe3JldHVybiBBPWFCKEEpLG5CKEEsY0IpP0FbY0JdOiJmdW5jdGlvbiI9PXR5cGVvZiBBLmNvbnN0cnVjdG9yJiZBIGluc3RhbmNlb2YgQS5jb25zdHJ1Y3Rvcj9BLmNvbnN0cnVjdG9yLnByb3RvdHlwZTpBIGluc3RhbmNlb2YgT2JqZWN0P2hCOm51bGx9LHVCPWwseUI9ZkIsREI9Z0EsbEI9aEEsd0I9VEEoIml0ZXJhdG9yIiksZEI9ITE7W10ua2V5cyYmKCJuZXh0ImluKHhJPVtdLmtleXMoKSk/KG1JPXlCKHlCKHhJKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKEtJPW1JKTpkQj0hMCksKG51bGw9PUtJfHx1QigoZnVuY3Rpb24oKXt2YXIgQT17fTtyZXR1cm4gS0lbd0JdLmNhbGwoQSkhPT1BfSkpKSYmKEtJPXt9KSxsQihLSSx3Qil8fERCKEtJLHdCLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBGQj17SXRlcmF0b3JQcm90b3R5cGU6S0ksQlVHR1lfU0FGQVJJX0lURVJBVE9SUzpkQn0sUkI9SC5mLEdCPWhBLGtCPVRBKCJ0b1N0cmluZ1RhZyIpLHBCPWZ1bmN0aW9uKEEsZyxJKXtBJiYhR0IoQT1JP0E6QS5wcm90b3R5cGUsa0IpJiZSQihBLGtCLHtjb25maWd1cmFibGU6ITAsdmFsdWU6Z30pfSxTQj1GQi5JdGVyYXRvclByb3RvdHlwZSxVQj1IZyxNQj1fLE5CPXBCLHZCPXFnLFlCPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LEhCPUwsTEI9aixKQj1mdW5jdGlvbihBKXtpZighSEIoQSkmJm51bGwhPT1BKXRocm93IFR5cGVFcnJvcigiQ2FuJ3Qgc2V0ICIrU3RyaW5nKEEpKyIgYXMgYSBwcm90b3R5cGUiKTtyZXR1cm4gQX0sS0I9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIEEsZz0hMSxJPXt9O3RyeXsoQT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCkuY2FsbChJLFtdKSxnPUkgaW5zdGFuY2VvZiBBcnJheX1jYXRjaChCKXt9cmV0dXJuIGZ1bmN0aW9uKEksQil7cmV0dXJuIExCKEkpLEpCKEIpLGc/QS5jYWxsKEksQik6SS5fX3Byb3RvX189QixJfX0oKTp2b2lkIDApLG1CPW9CLHhCPWZ1bmN0aW9uKEEsZyxJKXt2YXIgQj1nKyIgSXRlcmF0b3IiO3JldHVybiBBLnByb3RvdHlwZT1VQihTQix7bmV4dDpNQigxLEkpfSksTkIoQSxCLCExKSx2QltCXT1ZQixBfSxxQj1mQixiQj1LQixUQj1wQixqQj1nQSxPQj12SSxaQj1xZyxQQj1GQi5JdGVyYXRvclByb3RvdHlwZSxXQj1GQi5CVUdHWV9TQUZBUklfSVRFUkFUT1JTLFZCPVRBKCJpdGVyYXRvciIpLFhCPSJrZXlzIix6Qj0idmFsdWVzIixfQj0iZW50cmllcyIsJEI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sQVE9ZnVuY3Rpb24oQSxnLEksQixRLEUsQyl7eEIoSSxnLEIpO3ZhciB0LGksZSxvPWZ1bmN0aW9uKEEpe2lmKEE9PT1RJiZjKXJldHVybiBjO2lmKCFXQiYmQSBpbiBhKXJldHVybiBhW0FdO3N3aXRjaChBKXtjYXNlIFhCOmNhc2UgekI6Y2FzZSBfQjpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEkodGhpcyxBKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBJKHRoaXMpfX0scj1nKyIgSXRlcmF0b3IiLG49ITEsYT1BLnByb3RvdHlwZSxzPWFbVkJdfHxhWyJAQGl0ZXJhdG9yIl18fFEmJmFbUV0sYz0hV0ImJnN8fG8oUSksaD0iQXJyYXkiPT1nJiZhLmVudHJpZXN8fHM7aWYoaCYmKHQ9cUIoaC5jYWxsKG5ldyBBKSksUEIhPT1PYmplY3QucHJvdG90eXBlJiZ0Lm5leHQmJihxQih0KSE9PVBCJiYoYkI/YkIodCxQQik6ImZ1bmN0aW9uIiE9dHlwZW9mIHRbVkJdJiZqQih0LFZCLCRCKSksVEIodCxyLCEwKSkpLFE9PXpCJiZzJiZzLm5hbWUhPT16QiYmKG49ITAsYz1mdW5jdGlvbigpe3JldHVybiBzLmNhbGwodGhpcyl9KSxhW1ZCXSE9PWMmJmpCKGEsVkIsYyksWkJbZ109YyxRKWlmKGk9e3ZhbHVlczpvKHpCKSxrZXlzOkU/YzpvKFhCKSxlbnRyaWVzOm8oX0IpfSxDKWZvcihlIGluIGkpKFdCfHxufHwhKGUgaW4gYSkpJiZPQihhLGUsaVtlXSk7ZWxzZSBtQih7dGFyZ2V0OmcscHJvdG86ITAsZm9yY2VkOldCfHxufSxpKTtyZXR1cm4gaX0sZ1E9VSxJUT14ZyxCUT1xZyxRUT1vSSxFUT1BUSxDUT0iQXJyYXkgSXRlcmF0b3IiLHRRPVFRLnNldCxpUT1RUS5nZXR0ZXJGb3IoQ1EpLGVRPUVRKEFycmF5LCJBcnJheSIsKGZ1bmN0aW9uKEEsZyl7dFEodGhpcyx7dHlwZTpDUSx0YXJnZXQ6Z1EoQSksaW5kZXg6MCxraW5kOmd9KX0pLChmdW5jdGlvbigpe3ZhciBBPWlRKHRoaXMpLGc9QS50YXJnZXQsST1BLmtpbmQsQj1BLmluZGV4Kys7cmV0dXJuIWd8fEI+PWcubGVuZ3RoPyhBLnRhcmdldD12b2lkIDAse3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk6ImtleXMiPT1JP3t2YWx1ZTpCLGRvbmU6ITF9OiJ2YWx1ZXMiPT1JP3t2YWx1ZTpnW0JdLGRvbmU6ITF9Ont2YWx1ZTpbQixnW0JdXSxkb25lOiExfX0pLCJ2YWx1ZXMiKTtCUS5Bcmd1bWVudHM9QlEuQXJyYXksSVEoImtleXMiKSxJUSgidmFsdWVzIiksSVEoImVudHJpZXMiKTt2YXIgb1E9e307b1FbVEEoInRvU3RyaW5nVGFnIildPSJ6Ijt2YXIgclE9IltvYmplY3Qgel0iPT09U3RyaW5nKG9RKSxuUT1yUSxhUT1kLHNRPVRBKCJ0b1N0cmluZ1RhZyIpLGNRPSJBcmd1bWVudHMiPT1hUShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLGhRPW5RP2FROmZ1bmN0aW9uKEEpe3ZhciBnLEksQjtyZXR1cm4gdm9pZCAwPT09QT8iVW5kZWZpbmVkIjpudWxsPT09QT8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihJPWZ1bmN0aW9uKEEsZyl7dHJ5e3JldHVybiBBW2ddfWNhdGNoKEkpe319KGc9T2JqZWN0KEEpLHNRKSk/STpjUT9hUShnKToiT2JqZWN0Ij09KEI9YVEoZykpJiYiZnVuY3Rpb24iPT10eXBlb2YgZy5jYWxsZWU/IkFyZ3VtZW50cyI6Qn0sZlE9aFEsdVE9clE/e30udG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK2ZRKHRoaXMpKyJdIn07clF8fHZJKE9iamVjdC5wcm90b3R5cGUsInRvU3RyaW5nIix1USx7dW5zYWZlOiEwfSk7dmFyIHlRPXtleHBvcnRzOnt9fSxEUT1UQSgiaXRlcmF0b3IiKSxsUT0hMTt0cnl7dmFyIHdRPTAsZFE9e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohIXdRKyt9fSxyZXR1cm46ZnVuY3Rpb24oKXtsUT0hMH19O2RRW0RRXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBcnJheS5mcm9tKGRRLChmdW5jdGlvbigpe3Rocm93IDJ9KSl9Y2F0Y2goWUQpe312YXIgRlEsUlE9ZnVuY3Rpb24oQSxnKXtpZighZyYmIWxRKXJldHVybiExO3ZhciBJPSExO3RyeXt2YXIgQj17fTtCW0RRXT1mdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ST0hMH19fX0sQShCKX1jYXRjaChZRCl7fXJldHVybiBJfSxHUT0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3LGtRPUdRLHBRPVksU1E9TixVUT1MLE1RPWhBLE5RPWhRLHZRPWdBLFlRPXZJLEhRPUguZixMUT1mQixKUT1LQixLUT1UQSxtUT15QSx4UT1TUS5JbnQ4QXJyYXkscVE9eFEmJnhRLnByb3RvdHlwZSxiUT1TUS5VaW50OENsYW1wZWRBcnJheSxUUT1iUSYmYlEucHJvdG90eXBlLGpRPXhRJiZMUSh4USksT1E9cVEmJkxRKHFRKSxaUT1PYmplY3QucHJvdG90eXBlLFBRPVpRLmlzUHJvdG90eXBlT2YsV1E9S1EoInRvU3RyaW5nVGFnIiksVlE9bVEoIlRZUEVEX0FSUkFZX1RBRyIpLFhRPWtRJiYhIUpRJiYiT3BlcmEiIT09TlEoU1Eub3BlcmEpLHpRPSExLF9RPXtJbnQ4QXJyYXk6MSxVaW50OEFycmF5OjEsVWludDhDbGFtcGVkQXJyYXk6MSxJbnQxNkFycmF5OjIsVWludDE2QXJyYXk6MixJbnQzMkFycmF5OjQsVWludDMyQXJyYXk6NCxGbG9hdDMyQXJyYXk6NCxGbG9hdDY0QXJyYXk6OH0sJFE9e0JpZ0ludDY0QXJyYXk6OCxCaWdVaW50NjRBcnJheTo4fSxBRT1mdW5jdGlvbihBKXtpZighVVEoQSkpcmV0dXJuITE7dmFyIGc9TlEoQSk7cmV0dXJuIE1RKF9RLGcpfHxNUSgkUSxnKX07Zm9yKEZRIGluIF9RKVNRW0ZRXXx8KFhRPSExKTtpZigoIVhRfHwiZnVuY3Rpb24iIT10eXBlb2YgalF8fGpRPT09RnVuY3Rpb24ucHJvdG90eXBlKSYmKGpRPWZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfSxYUSkpZm9yKEZRIGluIF9RKVNRW0ZRXSYmSlEoU1FbRlFdLGpRKTtpZigoIVhRfHwhT1F8fE9RPT09WlEpJiYoT1E9alEucHJvdG90eXBlLFhRKSlmb3IoRlEgaW4gX1EpU1FbRlFdJiZKUShTUVtGUV0ucHJvdG90eXBlLE9RKTtpZihYUSYmTFEoVFEpIT09T1EmJkpRKFRRLE9RKSxwUSYmIU1RKE9RLFdRKSlmb3IoRlEgaW4gelE9ITAsSFEoT1EsV1Ese2dldDpmdW5jdGlvbigpe3JldHVybiBVUSh0aGlzKT90aGlzW1ZRXTp2b2lkIDB9fSksX1EpU1FbRlFdJiZ2UShTUVtGUV0sVlEsRlEpO3ZhciBnRT17TkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUzpYUSxUWVBFRF9BUlJBWV9UQUc6elEmJlZRLGFUeXBlZEFycmF5OmZ1bmN0aW9uKEEpe2lmKEFFKEEpKXJldHVybiBBO3Rocm93IFR5cGVFcnJvcigiVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5Iil9LGFUeXBlZEFycmF5Q29uc3RydWN0b3I6ZnVuY3Rpb24oQSl7aWYoSlEpe2lmKFBRLmNhbGwoalEsQSkpcmV0dXJuIEF9ZWxzZSBmb3IodmFyIGcgaW4gX1EpaWYoTVEoX1EsRlEpKXt2YXIgST1TUVtnXTtpZihJJiYoQT09PUl8fFBRLmNhbGwoSSxBKSkpcmV0dXJuIEF9dGhyb3cgVHlwZUVycm9yKCJUYXJnZXQgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0sZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpmdW5jdGlvbihBLGcsSSl7aWYocFEpe2lmKEkpZm9yKHZhciBCIGluIF9RKXt2YXIgUT1TUVtCXTtpZihRJiZNUShRLnByb3RvdHlwZSxBKSl0cnl7ZGVsZXRlIFEucHJvdG90eXBlW0FdfWNhdGNoKFlEKXt9fU9RW0FdJiYhSXx8WVEoT1EsQSxJP2c6WFEmJnFRW0FdfHxnKX19LGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFE7aWYocFEpe2lmKEpRKXtpZihJKWZvcihCIGluIF9RKWlmKChRPVNRW0JdKSYmTVEoUSxBKSl0cnl7ZGVsZXRlIFFbQV19Y2F0Y2goWUQpe31pZihqUVtBXSYmIUkpcmV0dXJuO3RyeXtyZXR1cm4gWVEoalEsQSxJP2c6WFEmJmpRW0FdfHxnKX1jYXRjaChZRCl7fX1mb3IoQiBpbiBfUSkhKFE9U1FbQl0pfHxRW0FdJiYhSXx8WVEoUSxBLGcpfX0saXNWaWV3OmZ1bmN0aW9uKEEpe2lmKCFVUShBKSlyZXR1cm4hMTt2YXIgZz1OUShBKTtyZXR1cm4iRGF0YVZpZXciPT09Z3x8TVEoX1EsZyl8fE1RKCRRLGcpfSxpc1R5cGVkQXJyYXk6QUUsVHlwZWRBcnJheTpqUSxUeXBlZEFycmF5UHJvdG90eXBlOk9RfSxJRT1OLEJFPWwsUUU9UlEsRUU9Z0UuTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyxDRT1JRS5BcnJheUJ1ZmZlcix0RT1JRS5JbnQ4QXJyYXksaUU9IUVFfHwhQkUoKGZ1bmN0aW9uKCl7dEUoMSl9KSl8fCFCRSgoZnVuY3Rpb24oKXtuZXcgdEUoLTEpfSkpfHwhUUUoKGZ1bmN0aW9uKEEpe25ldyB0RSxuZXcgdEUobnVsbCksbmV3IHRFKDEuNSksbmV3IHRFKEEpfSksITApfHxCRSgoZnVuY3Rpb24oKXtyZXR1cm4gMSE9PW5ldyB0RShuZXcgQ0UoMiksMSx2b2lkIDApLmxlbmd0aH0pKSxlRT12SSxvRT1mdW5jdGlvbihBLGcsSSl7Zm9yKHZhciBCIGluIGcpZUUoQSxCLGdbQl0sSSk7cmV0dXJuIEF9LHJFPWZ1bmN0aW9uKEEsZyxJKXtpZighKEEgaW5zdGFuY2VvZiBnKSl0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCAiKyhJP0krIiAiOiIiKSsiaW52b2NhdGlvbiIpO3JldHVybiBBfSxuRT1aQSxhRT1WQSxzRT1mdW5jdGlvbihBKXtpZih2b2lkIDA9PT1BKXJldHVybiAwO3ZhciBnPW5FKEEpLEk9YUUoZyk7aWYoZyE9PUkpdGhyb3cgUmFuZ2VFcnJvcigiV3JvbmcgbGVuZ3RoIG9yIGluZGV4Iik7cmV0dXJuIEl9LGNFPU1hdGguYWJzLGhFPU1hdGgucG93LGZFPU1hdGguZmxvb3IsdUU9TWF0aC5sb2cseUU9TWF0aC5MTjIsREU9YUEsbEU9JEEsd0U9VkEsZEU9ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPURFKHRoaXMpLEk9d0UoZy5sZW5ndGgpLEI9YXJndW1lbnRzLmxlbmd0aCxRPWxFKEI+MT9hcmd1bWVudHNbMV06dm9pZCAwLEkpLEU9Qj4yP2FyZ3VtZW50c1syXTp2b2lkIDAsQz12b2lkIDA9PT1FP0k6bEUoRSxJKTtDPlE7KWdbUSsrXT1BO3JldHVybiBnfSxGRT1OLFJFPVksR0U9R1Esa0U9Z0EscEU9b0UsU0U9bCxVRT1yRSxNRT1aQSxORT1WQSx2RT1zRSxZRT17cGFjazpmdW5jdGlvbihBLGcsSSl7dmFyIEIsUSxFLEM9bmV3IEFycmF5KEkpLHQ9OCpJLWctMSxpPSgxPDx0KS0xLGU9aT4+MSxvPTIzPT09Zz9oRSgyLC0yNCktaEUoMiwtNzcpOjAscj1BPDB8fDA9PT1BJiYxL0E8MD8xOjAsbj0wO2ZvcigoQT1jRShBKSkhPUF8fEE9PT0xLzA/KFE9QSE9QT8xOjAsQj1pKTooQj1mRSh1RShBKS95RSksQSooRT1oRSgyLC1CKSk8MSYmKEItLSxFKj0yKSwoQSs9QitlPj0xP28vRTpvKmhFKDIsMS1lKSkqRT49MiYmKEIrKyxFLz0yKSxCK2U+PWk/KFE9MCxCPWkpOkIrZT49MT8oUT0oQSpFLTEpKmhFKDIsZyksQis9ZSk6KFE9QSpoRSgyLGUtMSkqaEUoMixnKSxCPTApKTtnPj04O0NbbisrXT0yNTUmUSxRLz0yNTYsZy09OCk7Zm9yKEI9Qjw8Z3xRLHQrPWc7dD4wO0NbbisrXT0yNTUmQixCLz0yNTYsdC09OCk7cmV0dXJuIENbLS1uXXw9MTI4KnIsQ30sdW5wYWNrOmZ1bmN0aW9uKEEsZyl7dmFyIEksQj1BLmxlbmd0aCxRPTgqQi1nLTEsRT0oMTw8USktMSxDPUU+PjEsdD1RLTcsaT1CLTEsZT1BW2ktLV0sbz0xMjcmZTtmb3IoZT4+PTc7dD4wO289MjU2Km8rQVtpXSxpLS0sdC09OCk7Zm9yKEk9byYoMTw8LXQpLTEsbz4+PS10LHQrPWc7dD4wO0k9MjU2KkkrQVtpXSxpLS0sdC09OCk7aWYoMD09PW8pbz0xLUM7ZWxzZXtpZihvPT09RSlyZXR1cm4gST9OYU46ZT8tMS8wOjEvMDtJKz1oRSgyLGcpLG8tPUN9cmV0dXJuKGU/LTE6MSkqSSpoRSgyLG8tZyl9fSxIRT1mQixMRT1LQixKRT1ZSS5mLEtFPUguZixtRT1kRSx4RT1wQixxRT1vSS5nZXQsYkU9b0kuc2V0LFRFPSJBcnJheUJ1ZmZlciIsakU9IkRhdGFWaWV3IixPRT0icHJvdG90eXBlIixaRT0iV3JvbmcgaW5kZXgiLFBFPUZFW1RFXSxXRT1QRSxWRT1GRVtqRV0sWEU9VkUmJlZFW09FXSx6RT1PYmplY3QucHJvdG90eXBlLF9FPUZFLlJhbmdlRXJyb3IsJEU9WUUucGFjayxBQz1ZRS51bnBhY2ssZ0M9ZnVuY3Rpb24oQSl7cmV0dXJuWzI1NSZBXX0sSUM9ZnVuY3Rpb24oQSl7cmV0dXJuWzI1NSZBLEE+PjgmMjU1XX0sQkM9ZnVuY3Rpb24oQSl7cmV0dXJuWzI1NSZBLEE+PjgmMjU1LEE+PjE2JjI1NSxBPj4yNCYyNTVdfSxRQz1mdW5jdGlvbihBKXtyZXR1cm4gQVszXTw8MjR8QVsyXTw8MTZ8QVsxXTw8OHxBWzBdfSxFQz1mdW5jdGlvbihBKXtyZXR1cm4gJEUoQSwyMyw0KX0sQ0M9ZnVuY3Rpb24oQSl7cmV0dXJuICRFKEEsNTIsOCl9LHRDPWZ1bmN0aW9uKEEsZyl7S0UoQVtPRV0sZyx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHFFKHRoaXMpW2ddfX0pfSxpQz1mdW5jdGlvbihBLGcsSSxCKXt2YXIgUT12RShJKSxFPXFFKEEpO2lmKFErZz5FLmJ5dGVMZW5ndGgpdGhyb3cgX0UoWkUpO3ZhciBDPXFFKEUuYnVmZmVyKS5ieXRlcyx0PVErRS5ieXRlT2Zmc2V0LGk9Qy5zbGljZSh0LHQrZyk7cmV0dXJuIEI/aTppLnJldmVyc2UoKX0sZUM9ZnVuY3Rpb24oQSxnLEksQixRLEUpe3ZhciBDPXZFKEkpLHQ9cUUoQSk7aWYoQytnPnQuYnl0ZUxlbmd0aCl0aHJvdyBfRShaRSk7Zm9yKHZhciBpPXFFKHQuYnVmZmVyKS5ieXRlcyxlPUMrdC5ieXRlT2Zmc2V0LG89QigrUSkscj0wO3I8ZztyKyspaVtlK3JdPW9bRT9yOmctci0xXX07aWYoR0Upe2lmKCFTRSgoZnVuY3Rpb24oKXtQRSgxKX0pKXx8IVNFKChmdW5jdGlvbigpe25ldyBQRSgtMSl9KSl8fFNFKChmdW5jdGlvbigpe3JldHVybiBuZXcgUEUsbmV3IFBFKDEuNSksbmV3IFBFKE5hTiksUEUubmFtZSE9VEV9KSkpe2Zvcih2YXIgb0MsckM9KFdFPWZ1bmN0aW9uKEEpe3JldHVybiBVRSh0aGlzLFdFKSxuZXcgUEUodkUoQSkpfSlbT0VdPVBFW09FXSxuQz1KRShQRSksYUM9MDtuQy5sZW5ndGg+YUM7KShvQz1uQ1thQysrXSlpbiBXRXx8a0UoV0Usb0MsUEVbb0NdKTtyQy5jb25zdHJ1Y3Rvcj1XRX1MRSYmSEUoWEUpIT09ekUmJkxFKFhFLHpFKTt2YXIgc0M9bmV3IFZFKG5ldyBXRSgyKSksY0M9WEUuc2V0SW50ODtzQy5zZXRJbnQ4KDAsMjE0NzQ4MzY0OCksc0Muc2V0SW50OCgxLDIxNDc0ODM2NDkpLCFzQy5nZXRJbnQ4KDApJiZzQy5nZXRJbnQ4KDEpfHxwRShYRSx7c2V0SW50ODpmdW5jdGlvbihBLGcpe2NDLmNhbGwodGhpcyxBLGc8PDI0Pj4yNCl9LHNldFVpbnQ4OmZ1bmN0aW9uKEEsZyl7Y0MuY2FsbCh0aGlzLEEsZzw8MjQ+PjI0KX19LHt1bnNhZmU6ITB9KX1lbHNlIFdFPWZ1bmN0aW9uKEEpe1VFKHRoaXMsV0UsVEUpO3ZhciBnPXZFKEEpO2JFKHRoaXMse2J5dGVzOm1FLmNhbGwobmV3IEFycmF5KGcpLDApLGJ5dGVMZW5ndGg6Z30pLFJFfHwodGhpcy5ieXRlTGVuZ3RoPWcpfSxWRT1mdW5jdGlvbihBLGcsSSl7VUUodGhpcyxWRSxqRSksVUUoQSxXRSxqRSk7dmFyIEI9cUUoQSkuYnl0ZUxlbmd0aCxRPU1FKGcpO2lmKFE8MHx8UT5CKXRocm93IF9FKCJXcm9uZyBvZmZzZXQiKTtpZihRKyhJPXZvaWQgMD09PUk/Qi1ROk5FKEkpKT5CKXRocm93IF9FKCJXcm9uZyBsZW5ndGgiKTtiRSh0aGlzLHtidWZmZXI6QSxieXRlTGVuZ3RoOkksYnl0ZU9mZnNldDpRfSksUkV8fCh0aGlzLmJ1ZmZlcj1BLHRoaXMuYnl0ZUxlbmd0aD1JLHRoaXMuYnl0ZU9mZnNldD1RKX0sUkUmJih0QyhXRSwiYnl0ZUxlbmd0aCIpLHRDKFZFLCJidWZmZXIiKSx0QyhWRSwiYnl0ZUxlbmd0aCIpLHRDKFZFLCJieXRlT2Zmc2V0IikpLHBFKFZFW09FXSx7Z2V0SW50ODpmdW5jdGlvbihBKXtyZXR1cm4gaUModGhpcywxLEEpWzBdPDwyND4+MjR9LGdldFVpbnQ4OmZ1bmN0aW9uKEEpe3JldHVybiBpQyh0aGlzLDEsQSlbMF19LGdldEludDE2OmZ1bmN0aW9uKEEpe3ZhciBnPWlDKHRoaXMsMixBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKTtyZXR1cm4oZ1sxXTw8OHxnWzBdKTw8MTY+PjE2fSxnZXRVaW50MTY6ZnVuY3Rpb24oQSl7dmFyIGc9aUModGhpcywyLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3JldHVybiBnWzFdPDw4fGdbMF19LGdldEludDMyOmZ1bmN0aW9uKEEpe3JldHVybiBRQyhpQyh0aGlzLDQsQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCkpfSxnZXRVaW50MzI6ZnVuY3Rpb24oQSl7cmV0dXJuIFFDKGlDKHRoaXMsNCxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSk+Pj4wfSxnZXRGbG9hdDMyOmZ1bmN0aW9uKEEpe3JldHVybiBBQyhpQyh0aGlzLDQsQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCksMjMpfSxnZXRGbG9hdDY0OmZ1bmN0aW9uKEEpe3JldHVybiBBQyhpQyh0aGlzLDgsQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCksNTIpfSxzZXRJbnQ4OmZ1bmN0aW9uKEEsZyl7ZUModGhpcywxLEEsZ0MsZyl9LHNldFVpbnQ4OmZ1bmN0aW9uKEEsZyl7ZUModGhpcywxLEEsZ0MsZyl9LHNldEludDE2OmZ1bmN0aW9uKEEsZyl7ZUModGhpcywyLEEsSUMsZyxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldFVpbnQxNjpmdW5jdGlvbihBLGcpe2VDKHRoaXMsMixBLElDLGcsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRJbnQzMjpmdW5jdGlvbihBLGcpe2VDKHRoaXMsNCxBLEJDLGcsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRVaW50MzI6ZnVuY3Rpb24oQSxnKXtlQyh0aGlzLDQsQSxCQyxnLGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sc2V0RmxvYXQzMjpmdW5jdGlvbihBLGcpe2VDKHRoaXMsNCxBLEVDLGcsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRGbG9hdDY0OmZ1bmN0aW9uKEEsZyl7ZUModGhpcyw4LEEsQ0MsZyxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9fSk7eEUoV0UsVEUpLHhFKFZFLGpFKTt2YXIgaEM9e0FycmF5QnVmZmVyOldFLERhdGFWaWV3OlZFfSxmQz1aQSx1Qz1mdW5jdGlvbihBKXt2YXIgZz1mQyhBKTtpZihnPDApdGhyb3cgUmFuZ2VFcnJvcigiVGhlIGFyZ3VtZW50IGNhbid0IGJlIGxlc3MgdGhhbiAwIik7cmV0dXJuIGd9LHlDPWZ1bmN0aW9uKEEsZyl7dmFyIEk9dUMoQSk7aWYoSSVnKXRocm93IFJhbmdlRXJyb3IoIldyb25nIG9mZnNldCIpO3JldHVybiBJfSxEQz1oUSxsQz1xZyx3Qz1UQSgiaXRlcmF0b3IiKSxkQz1mdW5jdGlvbihBKXtpZihudWxsIT1BKXJldHVybiBBW3dDXXx8QVsiQEBpdGVyYXRvciJdfHxsQ1tEQyhBKV19LEZDPXFnLFJDPVRBKCJpdGVyYXRvciIpLEdDPUFycmF5LnByb3RvdHlwZSxrQz1mdW5jdGlvbihBKXtyZXR1cm4gdm9pZCAwIT09QSYmKEZDLkFycmF5PT09QXx8R0NbUkNdPT09QSl9LHBDPWZ1bmN0aW9uKEEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBBKXRocm93IFR5cGVFcnJvcihTdHJpbmcoQSkrIiBpcyBub3QgYSBmdW5jdGlvbiIpO3JldHVybiBBfSxTQz1wQyxVQz1mdW5jdGlvbihBLGcsSSl7aWYoU0MoQSksdm9pZCAwPT09ZylyZXR1cm4gQTtzd2l0Y2goSSl7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBBLmNhbGwoZyl9O2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24oSSl7cmV0dXJuIEEuY2FsbChnLEkpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKEksQil7cmV0dXJuIEEuY2FsbChnLEksQil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oSSxCLFEpe3JldHVybiBBLmNhbGwoZyxJLEIsUSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBBLmFwcGx5KGcsYXJndW1lbnRzKX19LE1DPWFBLE5DPVZBLHZDPWRDLFlDPWtDLEhDPVVDLExDPWdFLmFUeXBlZEFycmF5Q29uc3RydWN0b3IsSkM9ZCxLQz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihBKXtyZXR1cm4iQXJyYXkiPT1KQyhBKX0sbUM9TCx4Qz1LQyxxQz1UQSgic3BlY2llcyIpLGJDPWZ1bmN0aW9uKEEsZyl7dmFyIEk7cmV0dXJuIHhDKEEpJiYoImZ1bmN0aW9uIiE9dHlwZW9mKEk9QS5jb25zdHJ1Y3Rvcil8fEkhPT1BcnJheSYmIXhDKEkucHJvdG90eXBlKT9tQyhJKSYmbnVsbD09PShJPUlbcUNdKSYmKEk9dm9pZCAwKTpJPXZvaWQgMCksbmV3KHZvaWQgMD09PUk/QXJyYXk6SSkoMD09PWc/MDpnKX0sVEM9VUMsakM9RyxPQz1hQSxaQz1WQSxQQz1iQyxXQz1bXS5wdXNoLFZDPWZ1bmN0aW9uKEEpe3ZhciBnPTE9PUEsST0yPT1BLEI9Mz09QSxRPTQ9PUEsRT02PT1BLEM9Nz09QSx0PTU9PUF8fEU7cmV0dXJuIGZ1bmN0aW9uKGksZSxvLHIpe2Zvcih2YXIgbixhLHM9T0MoaSksYz1qQyhzKSxoPVRDKGUsbywzKSxmPVpDKGMubGVuZ3RoKSx1PTAseT1yfHxQQyxEPWc/eShpLGYpOkl8fEM/eShpLDApOnZvaWQgMDtmPnU7dSsrKWlmKCh0fHx1IGluIGMpJiYoYT1oKG49Y1t1XSx1LHMpLEEpKWlmKGcpRFt1XT1hO2Vsc2UgaWYoYSlzd2l0Y2goQSl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4gbjtjYXNlIDY6cmV0dXJuIHU7Y2FzZSAyOldDLmNhbGwoRCxuKX1lbHNlIHN3aXRjaChBKXtjYXNlIDQ6cmV0dXJuITE7Y2FzZSA3OldDLmNhbGwoRCxuKX1yZXR1cm4gRT8tMTpCfHxRP1E6RH19LFhDPXtmb3JFYWNoOlZDKDApLG1hcDpWQygxKSxmaWx0ZXI6VkMoMiksc29tZTpWQygzKSxldmVyeTpWQyg0KSxmaW5kOlZDKDUpLGZpbmRJbmRleDpWQyg2KSxmaWx0ZXJPdXQ6VkMoNyl9LHpDPWRBLF9DPUgsJEM9WSxBdD1UQSgic3BlY2llcyIpLGd0PWZ1bmN0aW9uKEEpe3ZhciBnPXpDKEEpLEk9X0MuZjskQyYmZyYmIWdbQXRdJiZJKGcsQXQse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX0sSXQ9TCxCdD1LQixRdD1mdW5jdGlvbihBLGcsSSl7dmFyIEIsUTtyZXR1cm4gQnQmJiJmdW5jdGlvbiI9PXR5cGVvZihCPWcuY29uc3RydWN0b3IpJiZCIT09SSYmSXQoUT1CLnByb3RvdHlwZSkmJlEhPT1JLnByb3RvdHlwZSYmQnQoQSxRKSxBfSxFdD1vQixDdD1OLHR0PVksaXQ9aUUsZXQ9Z0Usb3Q9aEMscnQ9ckUsbnQ9XyxhdD1nQSxzdD1WQSxjdD1zRSxodD15QyxmdD1aLHV0PWhBLHl0PWhRLER0PUwsbHQ9SGcsd3Q9S0IsZHQ9WUkuZixGdD1mdW5jdGlvbihBKXt2YXIgZyxJLEIsUSxFLEMsdD1NQyhBKSxpPWFyZ3VtZW50cy5sZW5ndGgsZT1pPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxvPXZvaWQgMCE9PWUscj12Qyh0KTtpZihudWxsIT1yJiYhWUMocikpZm9yKEM9KEU9ci5jYWxsKHQpKS5uZXh0LHQ9W107IShRPUMuY2FsbChFKSkuZG9uZTspdC5wdXNoKFEudmFsdWUpO2ZvcihvJiZpPjImJihlPUhDKGUsYXJndW1lbnRzWzJdLDIpKSxJPU5DKHQubGVuZ3RoKSxCPW5ldyhMQyh0aGlzKSkoSSksZz0wO0k+ZztnKyspQltnXT1vP2UodFtnXSxnKTp0W2ddO3JldHVybiBCfSxSdD1YQy5mb3JFYWNoLEd0PWd0LGt0PUgscHQ9ckksU3Q9UXQsVXQ9b0kuZ2V0LE10PW9JLnNldCxOdD1rdC5mLHZ0PXB0LmYsWXQ9TWF0aC5yb3VuZCxIdD1DdC5SYW5nZUVycm9yLEx0PW90LkFycmF5QnVmZmVyLEp0PW90LkRhdGFWaWV3LEt0PWV0Lk5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MsbXQ9ZXQuVFlQRURfQVJSQVlfVEFHLHh0PWV0LlR5cGVkQXJyYXkscXQ9ZXQuVHlwZWRBcnJheVByb3RvdHlwZSxidD1ldC5hVHlwZWRBcnJheUNvbnN0cnVjdG9yLFR0PWV0LmlzVHlwZWRBcnJheSxqdD0iQllURVNfUEVSX0VMRU1FTlQiLE90PSJXcm9uZyBsZW5ndGgiLFp0PWZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPTAsQj1nLmxlbmd0aCxRPW5ldyhidChBKSkoQik7Qj5JOylRW0ldPWdbSSsrXTtyZXR1cm4gUX0sUHQ9ZnVuY3Rpb24oQSxnKXtOdChBLGcse2dldDpmdW5jdGlvbigpe3JldHVybiBVdCh0aGlzKVtnXX19KX0sV3Q9ZnVuY3Rpb24oQSl7dmFyIGc7cmV0dXJuIEEgaW5zdGFuY2VvZiBMdHx8IkFycmF5QnVmZmVyIj09KGc9eXQoQSkpfHwiU2hhcmVkQXJyYXlCdWZmZXIiPT1nfSxWdD1mdW5jdGlvbihBLGcpe3JldHVybiBUdChBKSYmInN5bWJvbCIhPXR5cGVvZiBnJiZnIGluIEEmJlN0cmluZygrZyk9PVN0cmluZyhnKX0sWHQ9ZnVuY3Rpb24oQSxnKXtyZXR1cm4gVnQoQSxnPWZ0KGcsITApKT9udCgyLEFbZ10pOnZ0KEEsZyl9LHp0PWZ1bmN0aW9uKEEsZyxJKXtyZXR1cm4hKFZ0KEEsZz1mdChnLCEwKSkmJkR0KEkpJiZ1dChJLCJ2YWx1ZSIpKXx8dXQoSSwiZ2V0Iil8fHV0KEksInNldCIpfHxJLmNvbmZpZ3VyYWJsZXx8dXQoSSwid3JpdGFibGUiKSYmIUkud3JpdGFibGV8fHV0KEksImVudW1lcmFibGUiKSYmIUkuZW51bWVyYWJsZT9OdChBLGcsSSk6KEFbZ109SS52YWx1ZSxBKX07dHQ/KEt0fHwocHQuZj1YdCxrdC5mPXp0LFB0KHF0LCJidWZmZXIiKSxQdChxdCwiYnl0ZU9mZnNldCIpLFB0KHF0LCJieXRlTGVuZ3RoIiksUHQocXQsImxlbmd0aCIpKSxFdCh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFLdH0se2dldE93blByb3BlcnR5RGVzY3JpcHRvcjpYdCxkZWZpbmVQcm9wZXJ0eTp6dH0pLHlRLmV4cG9ydHM9ZnVuY3Rpb24oQSxnLEkpe3ZhciBCPUEubWF0Y2goL1xkKyQvKVswXS84LFE9QSsoST8iQ2xhbXBlZCI6IiIpKyJBcnJheSIsRT0iZ2V0IitBLEM9InNldCIrQSx0PUN0W1FdLGk9dCxlPWkmJmkucHJvdG90eXBlLG89e30scj1mdW5jdGlvbihBLGcpe050KEEsZyx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKEEsZyl7dmFyIEk9VXQoQSk7cmV0dXJuIEkudmlld1tFXShnKkIrSS5ieXRlT2Zmc2V0LCEwKX0odGhpcyxnKX0sc2V0OmZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihBLGcsUSl7dmFyIEU9VXQoQSk7SSYmKFE9KFE9WXQoUSkpPDA/MDpRPjI1NT8yNTU6MjU1JlEpLEUudmlld1tDXShnKkIrRS5ieXRlT2Zmc2V0LFEsITApfSh0aGlzLGcsQSl9LGVudW1lcmFibGU6ITB9KX07S3Q/aXQmJihpPWcoKGZ1bmN0aW9uKEEsZyxJLEUpe3JldHVybiBydChBLGksUSksU3QoRHQoZyk/V3QoZyk/dm9pZCAwIT09RT9uZXcgdChnLGh0KEksQiksRSk6dm9pZCAwIT09ST9uZXcgdChnLGh0KEksQikpOm5ldyB0KGcpOlR0KGcpP1p0KGksZyk6RnQuY2FsbChpLGcpOm5ldyB0KGN0KGcpKSxBLGkpfSkpLHd0JiZ3dChpLHh0KSxSdChkdCh0KSwoZnVuY3Rpb24oQSl7QSBpbiBpfHxhdChpLEEsdFtBXSl9KSksaS5wcm90b3R5cGU9ZSk6KGk9ZygoZnVuY3Rpb24oQSxnLEksRSl7cnQoQSxpLFEpO3ZhciBDLHQsZSxvPTAsbj0wO2lmKER0KGcpKXtpZighV3QoZykpcmV0dXJuIFR0KGcpP1p0KGksZyk6RnQuY2FsbChpLGcpO0M9ZyxuPWh0KEksQik7dmFyIGE9Zy5ieXRlTGVuZ3RoO2lmKHZvaWQgMD09PUUpe2lmKGElQil0aHJvdyBIdChPdCk7aWYoKHQ9YS1uKTwwKXRocm93IEh0KE90KX1lbHNlIGlmKCh0PXN0KEUpKkIpK24+YSl0aHJvdyBIdChPdCk7ZT10L0J9ZWxzZSBlPWN0KGcpLEM9bmV3IEx0KHQ9ZSpCKTtmb3IoTXQoQSx7YnVmZmVyOkMsYnl0ZU9mZnNldDpuLGJ5dGVMZW5ndGg6dCxsZW5ndGg6ZSx2aWV3Om5ldyBKdChDKX0pO288ZTspcihBLG8rKyl9KSksd3QmJnd0KGkseHQpLGU9aS5wcm90b3R5cGU9bHQocXQpKSxlLmNvbnN0cnVjdG9yIT09aSYmYXQoZSwiY29uc3RydWN0b3IiLGkpLG10JiZhdChlLG10LFEpLG9bUV09aSxFdCh7Z2xvYmFsOiEwLGZvcmNlZDppIT10LHNoYW06IUt0fSxvKSxqdCBpbiBpfHxhdChpLGp0LEIpLGp0IGluIGV8fGF0KGUsanQsQiksR3QoUSl9KTp5US5leHBvcnRzPWZ1bmN0aW9uKCl7fTt2YXIgX3Q9eVEuZXhwb3J0cztfdCgiVWludDgiLChmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJLEIpe3JldHVybiBBKHRoaXMsZyxJLEIpfX0pKTt2YXIgJHQ9YUEsQWk9JEEsZ2k9VkEsSWk9TWF0aC5taW4sQmk9W10uY29weVdpdGhpbnx8ZnVuY3Rpb24oQSxnKXt2YXIgST0kdCh0aGlzKSxCPWdpKEkubGVuZ3RoKSxRPUFpKEEsQiksRT1BaShnLEIpLEM9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsdD1JaSgodm9pZCAwPT09Qz9COkFpKEMsQikpLUUsQi1RKSxpPTE7Zm9yKEU8USYmUTxFK3QmJihpPS0xLEUrPXQtMSxRKz10LTEpO3QtLSA+MDspRSBpbiBJP0lbUV09SVtFXTpkZWxldGUgSVtRXSxRKz1pLEUrPWk7cmV0dXJuIEl9LFFpPUJpLEVpPWdFLmFUeXBlZEFycmF5OygwLGdFLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJjb3B5V2l0aGluIiwoZnVuY3Rpb24oQSxnKXtyZXR1cm4gUWkuY2FsbChFaSh0aGlzKSxBLGcsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSkpO3ZhciBDaT1YQy5ldmVyeSx0aT1nRS5hVHlwZWRBcnJheTsoMCxnRS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZXZlcnkiLChmdW5jdGlvbihBKXtyZXR1cm4gQ2kodGkodGhpcyksQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIGlpPWRFLGVpPWdFLmFUeXBlZEFycmF5OygwLGdFLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaWxsIiwoZnVuY3Rpb24oQSl7cmV0dXJuIGlpLmFwcGx5KGVpKHRoaXMpLGFyZ3VtZW50cyl9KSk7dmFyIG9pPWoscmk9cEMsbmk9VEEoInNwZWNpZXMiKSxhaT1mdW5jdGlvbihBLGcpe3ZhciBJLEI9b2koQSkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PUJ8fG51bGw9PShJPW9pKEIpW25pXSk/ZzpyaShJKX0sc2k9Z0UuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcixjaT1haSxoaT1YQy5maWx0ZXIsZmk9ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9Y2koQSxBLmNvbnN0cnVjdG9yKSxCPTAsUT1nLmxlbmd0aCxFPW5ldyhzaShJKSkoUSk7UT5COylFW0JdPWdbQisrXTtyZXR1cm4gRX0sdWk9Z0UuYVR5cGVkQXJyYXk7KDAsZ0UuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbHRlciIsKGZ1bmN0aW9uKEEpe3ZhciBnPWhpKHVpKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3JldHVybiBmaSh0aGlzLGcpfSkpO3ZhciB5aT1YQy5maW5kLERpPWdFLmFUeXBlZEFycmF5OygwLGdFLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaW5kIiwoZnVuY3Rpb24oQSl7cmV0dXJuIHlpKERpKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBsaT1YQy5maW5kSW5kZXgsd2k9Z0UuYVR5cGVkQXJyYXk7KDAsZ0UuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbmRJbmRleCIsKGZ1bmN0aW9uKEEpe3JldHVybiBsaSh3aSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgZGk9WEMuZm9yRWFjaCxGaT1nRS5hVHlwZWRBcnJheTsoMCxnRS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZm9yRWFjaCIsKGZ1bmN0aW9uKEEpe2RpKEZpKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBSaT1RZy5pbmNsdWRlcyxHaT1nRS5hVHlwZWRBcnJheTsoMCxnRS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiaW5jbHVkZXMiLChmdW5jdGlvbihBKXtyZXR1cm4gUmkoR2kodGhpcyksQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIGtpPVFnLmluZGV4T2YscGk9Z0UuYVR5cGVkQXJyYXk7KDAsZ0UuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImluZGV4T2YiLChmdW5jdGlvbihBKXtyZXR1cm4ga2kocGkodGhpcyksQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIFNpPU4sVWk9Z0UsTWk9ZVEsTmk9VEEoIml0ZXJhdG9yIiksdmk9U2kuVWludDhBcnJheSxZaT1NaS52YWx1ZXMsSGk9TWkua2V5cyxMaT1NaS5lbnRyaWVzLEppPVVpLmFUeXBlZEFycmF5LEtpPVVpLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsbWk9dmkmJnZpLnByb3RvdHlwZVtOaV0seGk9ISFtaSYmKCJ2YWx1ZXMiPT1taS5uYW1lfHxudWxsPT1taS5uYW1lKSxxaT1mdW5jdGlvbigpe3JldHVybiBZaS5jYWxsKEppKHRoaXMpKX07S2koImVudHJpZXMiLChmdW5jdGlvbigpe3JldHVybiBMaS5jYWxsKEppKHRoaXMpKX0pKSxLaSgia2V5cyIsKGZ1bmN0aW9uKCl7cmV0dXJuIEhpLmNhbGwoSmkodGhpcykpfSkpLEtpKCJ2YWx1ZXMiLHFpLCF4aSksS2koTmkscWksIXhpKTt2YXIgYmk9Z0UuYVR5cGVkQXJyYXksVGk9W10uam9pbjsoMCxnRS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiam9pbiIsKGZ1bmN0aW9uKEEpe3JldHVybiBUaS5hcHBseShiaSh0aGlzKSxhcmd1bWVudHMpfSkpO3ZhciBqaT1sLE9pPWZ1bmN0aW9uKEEsZyl7dmFyIEk9W11bQV07cmV0dXJuISFJJiZqaSgoZnVuY3Rpb24oKXtJLmNhbGwobnVsbCxnfHxmdW5jdGlvbigpe3Rocm93IDF9LDEpfSkpfSxaaT1VLFBpPVpBLFdpPVZBLFZpPU9pLFhpPU1hdGgubWluLHppPVtdLmxhc3RJbmRleE9mLF9pPSEhemkmJjEvWzFdLmxhc3RJbmRleE9mKDEsLTApPDAsJGk9VmkoImxhc3RJbmRleE9mIiksQWU9X2l8fCEkaT9mdW5jdGlvbihBKXtpZihfaSlyZXR1cm4gemkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwO3ZhciBnPVppKHRoaXMpLEk9V2koZy5sZW5ndGgpLEI9SS0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihCPVhpKEIsUGkoYXJndW1lbnRzWzFdKSkpLEI8MCYmKEI9SStCKTtCPj0wO0ItLSlpZihCIGluIGcmJmdbQl09PT1BKXJldHVybiBCfHwwO3JldHVybi0xfTp6aSxnZT1BZSxJZT1nRS5hVHlwZWRBcnJheTsoMCxnRS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgibGFzdEluZGV4T2YiLChmdW5jdGlvbihBKXtyZXR1cm4gZ2UuYXBwbHkoSWUodGhpcyksYXJndW1lbnRzKX0pKTt2YXIgQmU9WEMubWFwLFFlPWFpLEVlPWdFLmFUeXBlZEFycmF5LENlPWdFLmFUeXBlZEFycmF5Q29uc3RydWN0b3I7KDAsZ0UuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoIm1hcCIsKGZ1bmN0aW9uKEEpe3JldHVybiBCZShFZSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLChmdW5jdGlvbihBLGcpe3JldHVybiBuZXcoQ2UoUWUoQSxBLmNvbnN0cnVjdG9yKSkpKGcpfSkpfSkpO3ZhciB0ZT1wQyxpZT1hQSxlZT1HLG9lPVZBLHJlPWZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQixRKXt0ZShJKTt2YXIgRT1pZShnKSxDPWVlKEUpLHQ9b2UoRS5sZW5ndGgpLGk9QT90LTE6MCxlPUE/LTE6MTtpZihCPDIpZm9yKDs7KXtpZihpIGluIEMpe1E9Q1tpXSxpKz1lO2JyZWFrfWlmKGkrPWUsQT9pPDA6dDw9aSl0aHJvdyBUeXBlRXJyb3IoIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKX1mb3IoO0E/aT49MDp0Pmk7aSs9ZSlpIGluIEMmJihRPUkoUSxDW2ldLGksRSkpO3JldHVybiBRfX0sbmU9e2xlZnQ6cmUoITEpLHJpZ2h0OnJlKCEwKX0sYWU9bmUubGVmdCxzZT1nRS5hVHlwZWRBcnJheTsoMCxnRS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgicmVkdWNlIiwoZnVuY3Rpb24oQSl7cmV0dXJuIGFlKHNlKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIGNlPW5lLnJpZ2h0LGhlPWdFLmFUeXBlZEFycmF5OygwLGdFLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJyZWR1Y2VSaWdodCIsKGZ1bmN0aW9uKEEpe3JldHVybiBjZShoZSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBmZT1nRS5hVHlwZWRBcnJheSx1ZT1nRS5leHBvcnRUeXBlZEFycmF5TWV0aG9kLHllPU1hdGguZmxvb3I7dWUoInJldmVyc2UiLChmdW5jdGlvbigpe2Zvcih2YXIgQSxnPXRoaXMsST1mZShnKS5sZW5ndGgsQj15ZShJLzIpLFE9MDtRPEI7KUE9Z1tRXSxnW1ErK109Z1stLUldLGdbSV09QTtyZXR1cm4gZ30pKTt2YXIgRGU9VkEsbGU9eUMsd2U9YUEsZGU9Z0UuYVR5cGVkQXJyYXk7KDAsZ0UuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInNldCIsKGZ1bmN0aW9uKEEpe2RlKHRoaXMpO3ZhciBnPWxlKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDEpLEk9dGhpcy5sZW5ndGgsQj13ZShBKSxRPURlKEIubGVuZ3RoKSxFPTA7aWYoUStnPkkpdGhyb3cgUmFuZ2VFcnJvcigiV3JvbmcgbGVuZ3RoIik7Zm9yKDtFPFE7KXRoaXNbZytFXT1CW0UrK119KSxsKChmdW5jdGlvbigpe25ldyBJbnQ4QXJyYXkoMSkuc2V0KHt9KX0pKSk7dmFyIEZlPWFpLFJlPWdFLmFUeXBlZEFycmF5LEdlPWdFLmFUeXBlZEFycmF5Q29uc3RydWN0b3Isa2U9W10uc2xpY2U7KDAsZ0UuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInNsaWNlIiwoZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9a2UuY2FsbChSZSh0aGlzKSxBLGcpLEI9RmUodGhpcyx0aGlzLmNvbnN0cnVjdG9yKSxRPTAsRT1JLmxlbmd0aCxDPW5ldyhHZShCKSkoRSk7RT5ROylDW1FdPUlbUSsrXTtyZXR1cm4gQ30pLGwoKGZ1bmN0aW9uKCl7bmV3IEludDhBcnJheSgxKS5zbGljZSgpfSkpKTt2YXIgcGU9WEMuc29tZSxTZT1nRS5hVHlwZWRBcnJheTsoMCxnRS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic29tZSIsKGZ1bmN0aW9uKEEpe3JldHVybiBwZShTZSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgVWU9Z0UuYVR5cGVkQXJyYXksTWU9W10uc29ydDsoMCxnRS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic29ydCIsKGZ1bmN0aW9uKEEpe3JldHVybiBNZS5jYWxsKFVlKHRoaXMpLEEpfSkpO3ZhciBOZT1WQSx2ZT0kQSxZZT1haSxIZT1nRS5hVHlwZWRBcnJheTsoMCxnRS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic3ViYXJyYXkiLChmdW5jdGlvbihBLGcpe3ZhciBJPUhlKHRoaXMpLEI9SS5sZW5ndGgsUT12ZShBLEIpO3JldHVybiBuZXcoWWUoSSxJLmNvbnN0cnVjdG9yKSkoSS5idWZmZXIsSS5ieXRlT2Zmc2V0K1EqSS5CWVRFU19QRVJfRUxFTUVOVCxOZSgodm9pZCAwPT09Zz9COnZlKGcsQikpLVEpKX0pKTt2YXIgTGU9Z0UsSmU9bCxLZT1OLkludDhBcnJheSxtZT1MZS5hVHlwZWRBcnJheSx4ZT1MZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kLHFlPVtdLnRvTG9jYWxlU3RyaW5nLGJlPVtdLnNsaWNlLFRlPSEhS2UmJkplKChmdW5jdGlvbigpe3FlLmNhbGwobmV3IEtlKDEpKX0pKTt4ZSgidG9Mb2NhbGVTdHJpbmciLChmdW5jdGlvbigpe3JldHVybiBxZS5hcHBseShUZT9iZS5jYWxsKG1lKHRoaXMpKTptZSh0aGlzKSxhcmd1bWVudHMpfSksSmUoKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9bmV3IEtlKFsxLDJdKS50b0xvY2FsZVN0cmluZygpfSkpfHwhSmUoKGZ1bmN0aW9uKCl7S2UucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpKTt2YXIgamU9Z0UuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxPZT1sLFplPU4uVWludDhBcnJheSxQZT1aZSYmWmUucHJvdG90eXBlfHx7fSxXZT1bXS50b1N0cmluZyxWZT1bXS5qb2luO09lKChmdW5jdGlvbigpe1dlLmNhbGwoe30pfSkpJiYoV2U9ZnVuY3Rpb24oKXtyZXR1cm4gVmUuY2FsbCh0aGlzKX0pO3ZhciBYZT1QZS50b1N0cmluZyE9V2U7amUoInRvU3RyaW5nIixXZSxYZSk7dmFyIHplPWssX2U9IltcdFxuXHZcZlxyIMKg4ZqA4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI5XHVmZWZmXSIsJGU9UmVnRXhwKCJeIitfZStfZSsiKiIpLEFvPVJlZ0V4cChfZStfZSsiKiQiKSxnbz1mdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyl7dmFyIEk9U3RyaW5nKHplKGcpKTtyZXR1cm4gMSZBJiYoST1JLnJlcGxhY2UoJGUsIiIpKSwyJkEmJihJPUkucmVwbGFjZShBbywiIikpLEl9fSxJbz17c3RhcnQ6Z28oMSksZW5kOmdvKDIpLHRyaW06Z28oMyl9LEJvPVksUW89TixFbz1JQixDbz12SSx0bz1oQSxpbz1kLGVvPVF0LG9vPVoscm89bCxubz1IZyxhbz1ZSS5mLHNvPXJJLmYsY289SC5mLGhvPUlvLnRyaW0sZm89Ik51bWJlciIsdW89UW9bZm9dLHlvPXVvLnByb3RvdHlwZSxEbz1pbyhubyh5bykpPT1mbyxsbz1mdW5jdGlvbihBKXt2YXIgZyxJLEIsUSxFLEMsdCxpLGU9b28oQSwhMSk7aWYoInN0cmluZyI9PXR5cGVvZiBlJiZlLmxlbmd0aD4yKWlmKDQzPT09KGc9KGU9aG8oZSkpLmNoYXJDb2RlQXQoMCkpfHw0NT09PWcpe2lmKDg4PT09KEk9ZS5jaGFyQ29kZUF0KDIpKXx8MTIwPT09SSlyZXR1cm4gTmFOfWVsc2UgaWYoNDg9PT1nKXtzd2l0Y2goZS5jaGFyQ29kZUF0KDEpKXtjYXNlIDY2OmNhc2UgOTg6Qj0yLFE9NDk7YnJlYWs7Y2FzZSA3OTpjYXNlIDExMTpCPTgsUT01NTticmVhaztkZWZhdWx0OnJldHVybitlfWZvcihDPShFPWUuc2xpY2UoMikpLmxlbmd0aCx0PTA7dDxDO3QrKylpZigoaT1FLmNoYXJDb2RlQXQodCkpPDQ4fHxpPlEpcmV0dXJuIE5hTjtyZXR1cm4gcGFyc2VJbnQoRSxCKX1yZXR1cm4rZX07aWYoRW8oZm8sIXVvKCIgMG8xIil8fCF1bygiMGIxIil8fHVvKCIrMHgxIikpKXtmb3IodmFyIHdvLEZvPWZ1bmN0aW9uKEEpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg8MT8wOkEsST10aGlzO3JldHVybiBJIGluc3RhbmNlb2YgRm8mJihEbz9ybygoZnVuY3Rpb24oKXt5by52YWx1ZU9mLmNhbGwoSSl9KSk6aW8oSSkhPWZvKT9lbyhuZXcgdW8obG8oZykpLEksRm8pOmxvKGcpfSxSbz1Cbz9hbyh1byk6Ik1BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLEVQU0lMT04saXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIsTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJbnQsaXNJbnRlZ2VyLGZyb21TdHJpbmcscmFuZ2UiLnNwbGl0KCIsIiksR289MDtSby5sZW5ndGg+R287R28rKyl0byh1byx3bz1Sb1tHb10pJiYhdG8oRm8sd28pJiZjbyhGbyx3byxzbyh1byx3bykpO0ZvLnByb3RvdHlwZT15byx5by5jb25zdHJ1Y3Rvcj1GbyxDbyhRbyxmbyxGbyl9dmFyIGtvPVoscG89SCxTbz1fLFVvPWZ1bmN0aW9uKEEsZyxJKXt2YXIgQj1rbyhnKTtCIGluIEE/cG8uZihBLEIsU28oMCxJKSk6QVtCXT1JfSxNbz1sLE5vPVVBLHZvPVRBKCJzcGVjaWVzIiksWW89ZnVuY3Rpb24oQSl7cmV0dXJuIE5vPj01MXx8IU1vKChmdW5jdGlvbigpe3ZhciBnPVtdO3JldHVybihnLmNvbnN0cnVjdG9yPXt9KVt2b109ZnVuY3Rpb24oKXtyZXR1cm57Zm9vOjF9fSwxIT09Z1tBXShCb29sZWFuKS5mb299KSl9LEhvPW9CLExvPUwsSm89S0MsS289JEEsbW89VkEseG89VSxxbz1Vbyxibz1UQSxUbz1Zbygic2xpY2UiKSxqbz1ibygic3BlY2llcyIpLE9vPVtdLnNsaWNlLFpvPU1hdGgubWF4O0hvKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IVRvfSx7c2xpY2U6ZnVuY3Rpb24oQSxnKXt2YXIgSSxCLFEsRT14byh0aGlzKSxDPW1vKEUubGVuZ3RoKSx0PUtvKEEsQyksaT1Lbyh2b2lkIDA9PT1nP0M6ZyxDKTtpZihKbyhFKSYmKCJmdW5jdGlvbiIhPXR5cGVvZihJPUUuY29uc3RydWN0b3IpfHxJIT09QXJyYXkmJiFKbyhJLnByb3RvdHlwZSk/TG8oSSkmJm51bGw9PT0oST1JW2pvXSkmJihJPXZvaWQgMCk6ST12b2lkIDAsST09PUFycmF5fHx2b2lkIDA9PT1JKSlyZXR1cm4gT28uY2FsbChFLHQsaSk7Zm9yKEI9bmV3KHZvaWQgMD09PUk/QXJyYXk6SSkoWm8oaS10LDApKSxRPTA7dDxpO3QrKyxRKyspdCBpbiBFJiZxbyhCLFEsRVt0XSk7cmV0dXJuIEIubGVuZ3RoPVEsQn19KTt2YXIgUG8sV28sVm8sWG89Ti5Qcm9taXNlLHpvPWosX289aiwkbz1rQyxBcj1WQSxncj1VQyxJcj1kQyxCcj1mdW5jdGlvbihBKXt2YXIgZz1BLnJldHVybjtpZih2b2lkIDAhPT1nKXJldHVybiB6byhnLmNhbGwoQSkpLnZhbHVlfSxRcj1mdW5jdGlvbihBLGcpe3RoaXMuc3RvcHBlZD1BLHRoaXMucmVzdWx0PWd9LEVyPWZ1bmN0aW9uKEEsZyxJKXt2YXIgQixRLEUsQyx0LGksZSxvPUkmJkkudGhhdCxyPSEoIUl8fCFJLkFTX0VOVFJJRVMpLG49ISghSXx8IUkuSVNfSVRFUkFUT1IpLGE9ISghSXx8IUkuSU5URVJSVVBURUQpLHM9Z3IoZyxvLDErcithKSxjPWZ1bmN0aW9uKEEpe3JldHVybiBCJiZCcihCKSxuZXcgUXIoITAsQSl9LGg9ZnVuY3Rpb24oQSl7cmV0dXJuIHI/KF9vKEEpLGE/cyhBWzBdLEFbMV0sYyk6cyhBWzBdLEFbMV0pKTphP3MoQSxjKTpzKEEpfTtpZihuKUI9QTtlbHNle2lmKCJmdW5jdGlvbiIhPXR5cGVvZihRPUlyKEEpKSl0aHJvdyBUeXBlRXJyb3IoIlRhcmdldCBpcyBub3QgaXRlcmFibGUiKTtpZigkbyhRKSl7Zm9yKEU9MCxDPUFyKEEubGVuZ3RoKTtDPkU7RSsrKWlmKCh0PWgoQVtFXSkpJiZ0IGluc3RhbmNlb2YgUXIpcmV0dXJuIHQ7cmV0dXJuIG5ldyBRcighMSl9Qj1RLmNhbGwoQSl9Zm9yKGk9Qi5uZXh0OyEoZT1pLmNhbGwoQikpLmRvbmU7KXt0cnl7dD1oKGUudmFsdWUpfWNhdGNoKFlEKXt0aHJvdyBCcihCKSxZRH1pZigib2JqZWN0Ij09dHlwZW9mIHQmJnQmJnQgaW5zdGFuY2VvZiBRcilyZXR1cm4gdH1yZXR1cm4gbmV3IFFyKCExKX0sQ3I9Lyg/OmlwaG9uZXxpcG9kfGlwYWQpLiphcHBsZXdlYmtpdC9pLnRlc3QoRkEpLHRyPSJwcm9jZXNzIj09ZChOLnByb2Nlc3MpLGlyPU4sZXI9bCxvcj1VQyxycj15Zyxucj14LGFyPUNyLHNyPXRyLGNyPWlyLmxvY2F0aW9uLGhyPWlyLnNldEltbWVkaWF0ZSxmcj1pci5jbGVhckltbWVkaWF0ZSx1cj1pci5wcm9jZXNzLHlyPWlyLk1lc3NhZ2VDaGFubmVsLERyPWlyLkRpc3BhdGNoLGxyPTAsd3I9e30sZHI9Im9ucmVhZHlzdGF0ZWNoYW5nZSIsRnI9ZnVuY3Rpb24oQSl7aWYod3IuaGFzT3duUHJvcGVydHkoQSkpe3ZhciBnPXdyW0FdO2RlbGV0ZSB3cltBXSxnKCl9fSxScj1mdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oKXtGcihBKX19LEdyPWZ1bmN0aW9uKEEpe0ZyKEEuZGF0YSl9LGtyPWZ1bmN0aW9uKEEpe2lyLnBvc3RNZXNzYWdlKEErIiIsY3IucHJvdG9jb2wrIi8vIitjci5ob3N0KX07aHImJmZyfHwoaHI9ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPVtdLEk9MTthcmd1bWVudHMubGVuZ3RoPkk7KWcucHVzaChhcmd1bWVudHNbSSsrXSk7cmV0dXJuIHdyWysrbHJdPWZ1bmN0aW9uKCl7KCJmdW5jdGlvbiI9PXR5cGVvZiBBP0E6RnVuY3Rpb24oQSkpLmFwcGx5KHZvaWQgMCxnKX0sUG8obHIpLGxyfSxmcj1mdW5jdGlvbihBKXtkZWxldGUgd3JbQV19LHNyP1BvPWZ1bmN0aW9uKEEpe3VyLm5leHRUaWNrKFJyKEEpKX06RHImJkRyLm5vdz9Qbz1mdW5jdGlvbihBKXtEci5ub3coUnIoQSkpfTp5ciYmIWFyPyhWbz0oV289bmV3IHlyKS5wb3J0MixXby5wb3J0MS5vbm1lc3NhZ2U9R3IsUG89b3IoVm8ucG9zdE1lc3NhZ2UsVm8sMSkpOmlyLmFkZEV2ZW50TGlzdGVuZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBwb3N0TWVzc2FnZSYmIWlyLmltcG9ydFNjcmlwdHMmJmNyJiYiZmlsZToiIT09Y3IucHJvdG9jb2wmJiFlcihrcik/KFBvPWtyLGlyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLEdyLCExKSk6UG89ZHIgaW4gbnIoInNjcmlwdCIpP2Z1bmN0aW9uKEEpe3JyLmFwcGVuZENoaWxkKG5yKCJzY3JpcHQiKSlbZHJdPWZ1bmN0aW9uKCl7cnIucmVtb3ZlQ2hpbGQodGhpcyksRnIoQSl9fTpmdW5jdGlvbihBKXtzZXRUaW1lb3V0KFJyKEEpLDApfSk7dmFyIHByLFNyLFVyLE1yLE5yLHZyLFlyLEhyLExyPXtzZXQ6aHIsY2xlYXI6ZnJ9LEpyPS93ZWIwcyg/IS4qY2hyb21lKS9pLnRlc3QoRkEpLEtyPU4sbXI9ckkuZix4cj1Mci5zZXQscXI9Q3IsYnI9SnIsVHI9dHIsanI9S3IuTXV0YXRpb25PYnNlcnZlcnx8S3IuV2ViS2l0TXV0YXRpb25PYnNlcnZlcixPcj1Lci5kb2N1bWVudCxacj1Lci5wcm9jZXNzLFByPUtyLlByb21pc2UsV3I9bXIoS3IsInF1ZXVlTWljcm90YXNrIiksVnI9V3ImJldyLnZhbHVlO1ZyfHwocHI9ZnVuY3Rpb24oKXt2YXIgQSxnO2ZvcihUciYmKEE9WnIuZG9tYWluKSYmQS5leGl0KCk7U3I7KXtnPVNyLmZuLFNyPVNyLm5leHQ7dHJ5e2coKX1jYXRjaChZRCl7dGhyb3cgU3I/TXIoKTpVcj12b2lkIDAsWUR9fVVyPXZvaWQgMCxBJiZBLmVudGVyKCl9LHFyfHxUcnx8YnJ8fCFqcnx8IU9yP1ByJiZQci5yZXNvbHZlPygoWXI9UHIucmVzb2x2ZSh2b2lkIDApKS5jb25zdHJ1Y3Rvcj1QcixIcj1Zci50aGVuLE1yPWZ1bmN0aW9uKCl7SHIuY2FsbChZcixwcil9KTpNcj1Ucj9mdW5jdGlvbigpe1pyLm5leHRUaWNrKHByKX06ZnVuY3Rpb24oKXt4ci5jYWxsKEtyLHByKX06KE5yPSEwLHZyPU9yLmNyZWF0ZVRleHROb2RlKCIiKSxuZXcganIocHIpLm9ic2VydmUodnIse2NoYXJhY3RlckRhdGE6ITB9KSxNcj1mdW5jdGlvbigpe3ZyLmRhdGE9TnI9IU5yfSkpO3ZhciBYcj1Wcnx8ZnVuY3Rpb24oQSl7dmFyIGc9e2ZuOkEsbmV4dDp2b2lkIDB9O1VyJiYoVXIubmV4dD1nKSxTcnx8KFNyPWcsTXIoKSksVXI9Z30senI9e30sX3I9cEMsJHI9ZnVuY3Rpb24oQSl7dmFyIGcsSTt0aGlzLnByb21pc2U9bmV3IEEoKGZ1bmN0aW9uKEEsQil7aWYodm9pZCAwIT09Z3x8dm9pZCAwIT09SSl0aHJvdyBUeXBlRXJyb3IoIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yIik7Zz1BLEk9Qn0pKSx0aGlzLnJlc29sdmU9X3IoZyksdGhpcy5yZWplY3Q9X3IoSSl9O3pyLmY9ZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyAkcihBKX07dmFyIEFuLGduLEluLEJuLFFuPWosRW49TCxDbj16cix0bj1OLGVuPSJvYmplY3QiPT10eXBlb2Ygd2luZG93LG9uPW9CLHJuPU4sbm49ZEEsYW49WG8sc249dkksY249b0UsaG49S0IsZm49cEIsdW49Z3QseW49TCxEbj1wQyxsbj1yRSx3bj1QZyxkbj1FcixGbj1SUSxSbj1haSxHbj1Mci5zZXQsa249WHIscG49ZnVuY3Rpb24oQSxnKXtpZihRbihBKSxFbihnKSYmZy5jb25zdHJ1Y3Rvcj09PUEpcmV0dXJuIGc7dmFyIEk9Q24uZihBKTtyZXR1cm4oMCxJLnJlc29sdmUpKGcpLEkucHJvbWlzZX0sU249ZnVuY3Rpb24oQSxnKXt2YXIgST10bi5jb25zb2xlO0kmJkkuZXJyb3ImJigxPT09YXJndW1lbnRzLmxlbmd0aD9JLmVycm9yKEEpOkkuZXJyb3IoQSxnKSl9LFVuPXpyLE1uPWZ1bmN0aW9uKEEpe3RyeXtyZXR1cm57ZXJyb3I6ITEsdmFsdWU6QSgpfX1jYXRjaChZRCl7cmV0dXJue2Vycm9yOiEwLHZhbHVlOllEfX19LE5uPW9JLHZuPUlCLFluPWVuLEhuPXRyLExuPVVBLEpuPVRBKCJzcGVjaWVzIiksS249IlByb21pc2UiLG1uPU5uLmdldCx4bj1Obi5zZXQscW49Tm4uZ2V0dGVyRm9yKEtuKSxibj1hbiYmYW4ucHJvdG90eXBlLFRuPWFuLGpuPWJuLE9uPXJuLlR5cGVFcnJvcixabj1ybi5kb2N1bWVudCxQbj1ybi5wcm9jZXNzLFduPVVuLmYsVm49V24sWG49ISEoWm4mJlpuLmNyZWF0ZUV2ZW50JiZybi5kaXNwYXRjaEV2ZW50KSx6bj0iZnVuY3Rpb24iPT10eXBlb2YgUHJvbWlzZVJlamVjdGlvbkV2ZW50LF9uPSJ1bmhhbmRsZWRyZWplY3Rpb24iLCRuPSExLEFhPXZuKEtuLChmdW5jdGlvbigpe3ZhciBBPXduKFRuKSE9PVN0cmluZyhUbik7aWYoIUEmJjY2PT09TG4pcmV0dXJuITA7aWYoTG4+PTUxJiYvbmF0aXZlIGNvZGUvLnRlc3QoVG4pKXJldHVybiExO3ZhciBnPW5ldyBUbigoZnVuY3Rpb24oQSl7QSgxKX0pKSxJPWZ1bmN0aW9uKEEpe0EoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKCl7fSkpfTtyZXR1cm4oZy5jb25zdHJ1Y3Rvcj17fSlbSm5dPUksISgkbj1nLnRoZW4oKGZ1bmN0aW9uKCl7fSkpaW5zdGFuY2VvZiBJKXx8IUEmJlluJiYhem59KSksZ2E9QWF8fCFGbigoZnVuY3Rpb24oQSl7VG4uYWxsKEEpLmNhdGNoKChmdW5jdGlvbigpe30pKX0pKSxJYT1mdW5jdGlvbihBKXt2YXIgZztyZXR1cm4hKCF5bihBKXx8ImZ1bmN0aW9uIiE9dHlwZW9mKGc9QS50aGVuKSkmJmd9LEJhPWZ1bmN0aW9uKEEsZyl7aWYoIUEubm90aWZpZWQpe0Eubm90aWZpZWQ9ITA7dmFyIEk9QS5yZWFjdGlvbnM7a24oKGZ1bmN0aW9uKCl7Zm9yKHZhciBCPUEudmFsdWUsUT0xPT1BLnN0YXRlLEU9MDtJLmxlbmd0aD5FOyl7dmFyIEMsdCxpLGU9SVtFKytdLG89UT9lLm9rOmUuZmFpbCxyPWUucmVzb2x2ZSxuPWUucmVqZWN0LGE9ZS5kb21haW47dHJ5e28/KFF8fCgyPT09QS5yZWplY3Rpb24mJnRhKEEpLEEucmVqZWN0aW9uPTEpLCEwPT09bz9DPUI6KGEmJmEuZW50ZXIoKSxDPW8oQiksYSYmKGEuZXhpdCgpLGk9ITApKSxDPT09ZS5wcm9taXNlP24oT24oIlByb21pc2UtY2hhaW4gY3ljbGUiKSk6KHQ9SWEoQykpP3QuY2FsbChDLHIsbik6cihDKSk6bihCKX1jYXRjaChZRCl7YSYmIWkmJmEuZXhpdCgpLG4oWUQpfX1BLnJlYWN0aW9ucz1bXSxBLm5vdGlmaWVkPSExLGcmJiFBLnJlamVjdGlvbiYmRWEoQSl9KSl9fSxRYT1mdW5jdGlvbihBLGcsSSl7dmFyIEIsUTtYbj8oKEI9Wm4uY3JlYXRlRXZlbnQoIkV2ZW50IikpLnByb21pc2U9ZyxCLnJlYXNvbj1JLEIuaW5pdEV2ZW50KEEsITEsITApLHJuLmRpc3BhdGNoRXZlbnQoQikpOkI9e3Byb21pc2U6ZyxyZWFzb246SX0sIXpuJiYoUT1yblsib24iK0FdKT9RKEIpOkE9PT1fbiYmU24oIlVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbiIsSSl9LEVhPWZ1bmN0aW9uKEEpe0duLmNhbGwocm4sKGZ1bmN0aW9uKCl7dmFyIGcsST1BLmZhY2FkZSxCPUEudmFsdWU7aWYoQ2EoQSkmJihnPU1uKChmdW5jdGlvbigpe0huP1BuLmVtaXQoInVuaGFuZGxlZFJlamVjdGlvbiIsQixJKTpRYShfbixJLEIpfSkpLEEucmVqZWN0aW9uPUhufHxDYShBKT8yOjEsZy5lcnJvcikpdGhyb3cgZy52YWx1ZX0pKX0sQ2E9ZnVuY3Rpb24oQSl7cmV0dXJuIDEhPT1BLnJlamVjdGlvbiYmIUEucGFyZW50fSx0YT1mdW5jdGlvbihBKXtHbi5jYWxsKHJuLChmdW5jdGlvbigpe3ZhciBnPUEuZmFjYWRlO0huP1BuLmVtaXQoInJlamVjdGlvbkhhbmRsZWQiLGcpOlFhKCJyZWplY3Rpb25oYW5kbGVkIixnLEEudmFsdWUpfSkpfSxpYT1mdW5jdGlvbihBLGcsSSl7cmV0dXJuIGZ1bmN0aW9uKEIpe0EoZyxCLEkpfX0sZWE9ZnVuY3Rpb24oQSxnLEkpe0EuZG9uZXx8KEEuZG9uZT0hMCxJJiYoQT1JKSxBLnZhbHVlPWcsQS5zdGF0ZT0yLEJhKEEsITApKX0sb2E9ZnVuY3Rpb24oQSxnLEkpe2lmKCFBLmRvbmUpe0EuZG9uZT0hMCxJJiYoQT1JKTt0cnl7aWYoQS5mYWNhZGU9PT1nKXRocm93IE9uKCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZiIpO3ZhciBCPUlhKGcpO0I/a24oKGZ1bmN0aW9uKCl7dmFyIEk9e2RvbmU6ITF9O3RyeXtCLmNhbGwoZyxpYShvYSxJLEEpLGlhKGVhLEksQSkpfWNhdGNoKFlEKXtlYShJLFlELEEpfX0pKTooQS52YWx1ZT1nLEEuc3RhdGU9MSxCYShBLCExKSl9Y2F0Y2goWUQpe2VhKHtkb25lOiExfSxZRCxBKX19fTtpZihBYSYmKGpuPShUbj1mdW5jdGlvbihBKXtsbih0aGlzLFRuLEtuKSxEbihBKSxBbi5jYWxsKHRoaXMpO3ZhciBnPW1uKHRoaXMpO3RyeXtBKGlhKG9hLGcpLGlhKGVhLGcpKX1jYXRjaChZRCl7ZWEoZyxZRCl9fSkucHJvdG90eXBlLChBbj1mdW5jdGlvbihBKXt4bih0aGlzLHt0eXBlOktuLGRvbmU6ITEsbm90aWZpZWQ6ITEscGFyZW50OiExLHJlYWN0aW9uczpbXSxyZWplY3Rpb246ITEsc3RhdGU6MCx2YWx1ZTp2b2lkIDB9KX0pLnByb3RvdHlwZT1jbihqbix7dGhlbjpmdW5jdGlvbihBLGcpe3ZhciBJPXFuKHRoaXMpLEI9V24oUm4odGhpcyxUbikpO3JldHVybiBCLm9rPSJmdW5jdGlvbiIhPXR5cGVvZiBBfHxBLEIuZmFpbD0iZnVuY3Rpb24iPT10eXBlb2YgZyYmZyxCLmRvbWFpbj1Ibj9Qbi5kb21haW46dm9pZCAwLEkucGFyZW50PSEwLEkucmVhY3Rpb25zLnB1c2goQiksMCE9SS5zdGF0ZSYmQmEoSSwhMSksQi5wcm9taXNlfSxjYXRjaDpmdW5jdGlvbihBKXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCxBKX19KSxnbj1mdW5jdGlvbigpe3ZhciBBPW5ldyBBbixnPW1uKEEpO3RoaXMucHJvbWlzZT1BLHRoaXMucmVzb2x2ZT1pYShvYSxnKSx0aGlzLnJlamVjdD1pYShlYSxnKX0sVW4uZj1Xbj1mdW5jdGlvbihBKXtyZXR1cm4gQT09PVRufHxBPT09SW4/bmV3IGduKEEpOlZuKEEpfSwiZnVuY3Rpb24iPT10eXBlb2YgYW4mJmJuIT09T2JqZWN0LnByb3RvdHlwZSkpe0JuPWJuLnRoZW4sJG58fChzbihibiwidGhlbiIsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9dGhpcztyZXR1cm4gbmV3IFRuKChmdW5jdGlvbihBLGcpe0JuLmNhbGwoSSxBLGcpfSkpLnRoZW4oQSxnKX0pLHt1bnNhZmU6ITB9KSxzbihibiwiY2F0Y2giLGpuLmNhdGNoLHt1bnNhZmU6ITB9KSk7dHJ5e2RlbGV0ZSBibi5jb25zdHJ1Y3Rvcn1jYXRjaChZRCl7fWhuJiZobihibixqbil9b24oe2dsb2JhbDohMCx3cmFwOiEwLGZvcmNlZDpBYX0se1Byb21pc2U6VG59KSxmbihUbixLbiwhMSksdW4oS24pLEluPW5uKEtuKSxvbih7dGFyZ2V0OktuLHN0YXQ6ITAsZm9yY2VkOkFhfSx7cmVqZWN0OmZ1bmN0aW9uKEEpe3ZhciBnPVduKHRoaXMpO3JldHVybiBnLnJlamVjdC5jYWxsKHZvaWQgMCxBKSxnLnByb21pc2V9fSksb24oe3RhcmdldDpLbixzdGF0OiEwLGZvcmNlZDpBYX0se3Jlc29sdmU6ZnVuY3Rpb24oQSl7cmV0dXJuIHBuKHRoaXMsQSl9fSksb24oe3RhcmdldDpLbixzdGF0OiEwLGZvcmNlZDpnYX0se2FsbDpmdW5jdGlvbihBKXt2YXIgZz10aGlzLEk9V24oZyksQj1JLnJlc29sdmUsUT1JLnJlamVjdCxFPU1uKChmdW5jdGlvbigpe3ZhciBJPURuKGcucmVzb2x2ZSksRT1bXSxDPTAsdD0xO2RuKEEsKGZ1bmN0aW9uKEEpe3ZhciBpPUMrKyxlPSExO0UucHVzaCh2b2lkIDApLHQrKyxJLmNhbGwoZyxBKS50aGVuKChmdW5jdGlvbihBKXtlfHwoZT0hMCxFW2ldPUEsLS10fHxCKEUpKX0pLFEpfSkpLC0tdHx8QihFKX0pKTtyZXR1cm4gRS5lcnJvciYmUShFLnZhbHVlKSxJLnByb21pc2V9LHJhY2U6ZnVuY3Rpb24oQSl7dmFyIGc9dGhpcyxJPVduKGcpLEI9SS5yZWplY3QsUT1NbigoZnVuY3Rpb24oKXt2YXIgUT1EbihnLnJlc29sdmUpO2RuKEEsKGZ1bmN0aW9uKEEpe1EuY2FsbChnLEEpLnRoZW4oSS5yZXNvbHZlLEIpfSkpfSkpO3JldHVybiBRLmVycm9yJiZCKFEudmFsdWUpLEkucHJvbWlzZX19KTt2YXIgcmE9WSxuYT1sLGFhPXNnLHNhPUpJLGNhPW5JLGhhPWFBLGZhPUcsdWE9T2JqZWN0LmFzc2lnbix5YT1PYmplY3QuZGVmaW5lUHJvcGVydHksRGE9IXVhfHxuYSgoZnVuY3Rpb24oKXtpZihyYSYmMSE9PXVhKHtiOjF9LHVhKHlhKHt9LCJhIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt5YSh0aGlzLCJiIix7dmFsdWU6MyxlbnVtZXJhYmxlOiExfSl9fSkse2I6Mn0pKS5iKXJldHVybiEwO3ZhciBBPXt9LGc9e30sST1TeW1ib2woKSxCPSJhYmNkZWZnaGlqa2xtbm9wcXJzdCI7cmV0dXJuIEFbSV09NyxCLnNwbGl0KCIiKS5mb3JFYWNoKChmdW5jdGlvbihBKXtnW0FdPUF9KSksNyE9dWEoe30sQSlbSV18fGFhKHVhKHt9LGcpKS5qb2luKCIiKSE9Qn0pKT9mdW5jdGlvbihBLGcpe2Zvcih2YXIgST1oYShBKSxCPWFyZ3VtZW50cy5sZW5ndGgsUT0xLEU9c2EuZixDPWNhLmY7Qj5ROylmb3IodmFyIHQsaT1mYShhcmd1bWVudHNbUSsrXSksZT1FP2FhKGkpLmNvbmNhdChFKGkpKTphYShpKSxvPWUubGVuZ3RoLHI9MDtvPnI7KXQ9ZVtyKytdLHJhJiYhQy5jYWxsKGksdCl8fChJW3RdPWlbdF0pO3JldHVybiBJfTp1YSxsYT1EYTtvQih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOk9iamVjdC5hc3NpZ24hPT1sYX0se2Fzc2lnbjpsYX0pO3ZhciB3YT1qLGRhPWZ1bmN0aW9uKCl7dmFyIEE9d2EodGhpcyksZz0iIjtyZXR1cm4gQS5nbG9iYWwmJihnKz0iZyIpLEEuaWdub3JlQ2FzZSYmKGcrPSJpIiksQS5tdWx0aWxpbmUmJihnKz0ibSIpLEEuZG90QWxsJiYoZys9InMiKSxBLnVuaWNvZGUmJihnKz0idSIpLEEuc3RpY2t5JiYoZys9InkiKSxnfSxGYT17fSxSYT1sO2Z1bmN0aW9uIEdhKEEsZyl7cmV0dXJuIFJlZ0V4cChBLGcpfUZhLlVOU1VQUE9SVEVEX1k9UmEoKGZ1bmN0aW9uKCl7dmFyIEE9R2EoImEiLCJ5Iik7cmV0dXJuIEEubGFzdEluZGV4PTIsbnVsbCE9QS5leGVjKCJhYmNkIil9KSksRmEuQlJPS0VOX0NBUkVUPVJhKChmdW5jdGlvbigpe3ZhciBBPUdhKCJeciIsImd5Iik7cmV0dXJuIEEubGFzdEluZGV4PTIsbnVsbCE9QS5leGVjKCJzdHIiKX0pKTt2YXIga2EscGEsU2E9ZGEsVWE9RmEsTWE9ckEsTmE9UmVnRXhwLnByb3RvdHlwZS5leGVjLHZhPU1hKCJuYXRpdmUtc3RyaW5nLXJlcGxhY2UiLFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSksWWE9TmEsSGE9KGthPS9hLyxwYT0vYiovZyxOYS5jYWxsKGthLCJhIiksTmEuY2FsbChwYSwiYSIpLDAhPT1rYS5sYXN0SW5kZXh8fDAhPT1wYS5sYXN0SW5kZXgpLExhPVVhLlVOU1VQUE9SVEVEX1l8fFVhLkJST0tFTl9DQVJFVCxKYT12b2lkIDAhPT0vKCk/Py8uZXhlYygiIilbMV07KEhhfHxKYXx8TGEpJiYoWWE9ZnVuY3Rpb24oQSl7dmFyIGcsSSxCLFEsRT10aGlzLEM9TGEmJkUuc3RpY2t5LHQ9U2EuY2FsbChFKSxpPUUuc291cmNlLGU9MCxvPUE7cmV0dXJuIEMmJigtMT09PSh0PXQucmVwbGFjZSgieSIsIiIpKS5pbmRleE9mKCJnIikmJih0Kz0iZyIpLG89U3RyaW5nKEEpLnNsaWNlKEUubGFzdEluZGV4KSxFLmxhc3RJbmRleD4wJiYoIUUubXVsdGlsaW5lfHxFLm11bHRpbGluZSYmIlxuIiE9PUFbRS5sYXN0SW5kZXgtMV0pJiYoaT0iKD86ICIraSsiKSIsbz0iICIrbyxlKyspLEk9bmV3IFJlZ0V4cCgiXig/OiIraSsiKSIsdCkpLEphJiYoST1uZXcgUmVnRXhwKCJeIitpKyIkKD8hXFxzKSIsdCkpLEhhJiYoZz1FLmxhc3RJbmRleCksQj1OYS5jYWxsKEM/STpFLG8pLEM/Qj8oQi5pbnB1dD1CLmlucHV0LnNsaWNlKGUpLEJbMF09QlswXS5zbGljZShlKSxCLmluZGV4PUUubGFzdEluZGV4LEUubGFzdEluZGV4Kz1CWzBdLmxlbmd0aCk6RS5sYXN0SW5kZXg9MDpIYSYmQiYmKEUubGFzdEluZGV4PUUuZ2xvYmFsP0IuaW5kZXgrQlswXS5sZW5ndGg6ZyksSmEmJkImJkIubGVuZ3RoPjEmJnZhLmNhbGwoQlswXSxJLChmdW5jdGlvbigpe2ZvcihRPTE7UTxhcmd1bWVudHMubGVuZ3RoLTI7USsrKXZvaWQgMD09PWFyZ3VtZW50c1tRXSYmKEJbUV09dm9pZCAwKX0pKSxCfSk7dmFyIEthPVlhO29CKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAsZm9yY2VkOi8uLy5leGVjIT09S2F9LHtleGVjOkthfSk7dmFyIG1hPXZJLHhhPUthLHFhPWwsYmE9VEEsVGE9Z0EsamE9YmEoInNwZWNpZXMiKSxPYT1SZWdFeHAucHJvdG90eXBlLFphPSFxYSgoZnVuY3Rpb24oKXt2YXIgQT0vLi87cmV0dXJuIEEuZXhlYz1mdW5jdGlvbigpe3ZhciBBPVtdO3JldHVybiBBLmdyb3Vwcz17YToiNyJ9LEF9LCI3IiE9PSIiLnJlcGxhY2UoQSwiJDxhPiIpfSkpLFBhPSIkMCI9PT0iYSIucmVwbGFjZSgvLi8sIiQwIiksV2E9YmEoInJlcGxhY2UiKSxWYT0hIS8uL1tXYV0mJiIiPT09Ly4vW1dhXSgiYSIsIiQwIiksWGE9IXFhKChmdW5jdGlvbigpe3ZhciBBPS8oPzopLyxnPUEuZXhlYztBLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBJPSJhYiIuc3BsaXQoQSk7cmV0dXJuIDIhPT1JLmxlbmd0aHx8ImEiIT09SVswXXx8ImIiIT09SVsxXX0pKSx6YT1mdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1iYShBKSxFPSFxYSgoZnVuY3Rpb24oKXt2YXIgZz17fTtyZXR1cm4gZ1tRXT1mdW5jdGlvbigpe3JldHVybiA3fSw3IT0iIltBXShnKX0pKSxDPUUmJiFxYSgoZnVuY3Rpb24oKXt2YXIgZz0hMSxJPS9hLztyZXR1cm4ic3BsaXQiPT09QSYmKChJPXt9KS5jb25zdHJ1Y3Rvcj17fSxJLmNvbnN0cnVjdG9yW2phXT1mdW5jdGlvbigpe3JldHVybiBJfSxJLmZsYWdzPSIiLElbUV09Ly4vW1FdKSxJLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZz0hMCxudWxsfSxJW1FdKCIiKSwhZ30pKTtpZighRXx8IUN8fCJyZXBsYWNlIj09PUEmJighWmF8fCFQYXx8VmEpfHwic3BsaXQiPT09QSYmIVhhKXt2YXIgdD0vLi9bUV0saT1JKFEsIiJbQV0sKGZ1bmN0aW9uKEEsZyxJLEIsUSl7dmFyIEM9Zy5leGVjO3JldHVybiBDPT09eGF8fEM9PT1PYS5leGVjP0UmJiFRP3tkb25lOiEwLHZhbHVlOnQuY2FsbChnLEksQil9Ontkb25lOiEwLHZhbHVlOkEuY2FsbChJLGcsQil9Ontkb25lOiExfX0pLHtSRVBMQUNFX0tFRVBTXyQwOlBhLFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFOlZhfSksZT1pWzBdLG89aVsxXTttYShTdHJpbmcucHJvdG90eXBlLEEsZSksbWEoT2EsUSwyPT1nP2Z1bmN0aW9uKEEsZyl7cmV0dXJuIG8uY2FsbChBLHRoaXMsZyl9OmZ1bmN0aW9uKEEpe3JldHVybiBvLmNhbGwoQSx0aGlzKX0pfUImJlRhKE9hW1FdLCJzaGFtIiwhMCl9LF9hPVpBLCRhPWssQXM9ZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcsSSl7dmFyIEIsUSxFPVN0cmluZygkYShnKSksQz1fYShJKSx0PUUubGVuZ3RoO3JldHVybiBDPDB8fEM+PXQ/QT8iIjp2b2lkIDA6KEI9RS5jaGFyQ29kZUF0KEMpKTw1NTI5Nnx8Qj41NjMxOXx8QysxPT09dHx8KFE9RS5jaGFyQ29kZUF0KEMrMSkpPDU2MzIwfHxRPjU3MzQzP0E/RS5jaGFyQXQoQyk6QjpBP0Uuc2xpY2UoQyxDKzIpOlEtNTYzMjArKEItNTUyOTY8PDEwKSs2NTUzNn19LGdzPXtjb2RlQXQ6QXMoITEpLGNoYXJBdDpBcyghMCl9LElzPWdzLmNoYXJBdCxCcz1mdW5jdGlvbihBLGcsSSl7cmV0dXJuIGcrKEk/SXMoQSxnKS5sZW5ndGg6MSl9LFFzPWFBLEVzPU1hdGguZmxvb3IsQ3M9IiIucmVwbGFjZSx0cz0vXCQoWyQmJ2BdfFxkezEsMn18PFtePl0qPikvZyxpcz0vXCQoWyQmJ2BdfFxkezEsMn0pL2csZXM9ZCxvcz1LYSxycz1mdW5jdGlvbihBLGcpe3ZhciBJPUEuZXhlYztpZigiZnVuY3Rpb24iPT10eXBlb2YgSSl7dmFyIEI9SS5jYWxsKEEsZyk7aWYoIm9iamVjdCIhPXR5cGVvZiBCKXRocm93IFR5cGVFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuIEJ9aWYoIlJlZ0V4cCIhPT1lcyhBKSl0aHJvdyBUeXBlRXJyb3IoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKTtyZXR1cm4gb3MuY2FsbChBLGcpfSxucz16YSxhcz1qLHNzPVZBLGNzPVpBLGhzPWssZnM9QnMsdXM9ZnVuY3Rpb24oQSxnLEksQixRLEUpe3ZhciBDPUkrQS5sZW5ndGgsdD1CLmxlbmd0aCxpPWlzO3JldHVybiB2b2lkIDAhPT1RJiYoUT1RcyhRKSxpPXRzKSxDcy5jYWxsKEUsaSwoZnVuY3Rpb24oRSxpKXt2YXIgZTtzd2l0Y2goaS5jaGFyQXQoMCkpe2Nhc2UiJCI6cmV0dXJuIiQiO2Nhc2UiJiI6cmV0dXJuIEE7Y2FzZSJgIjpyZXR1cm4gZy5zbGljZSgwLEkpO2Nhc2UiJyI6cmV0dXJuIGcuc2xpY2UoQyk7Y2FzZSI8IjplPVFbaS5zbGljZSgxLC0xKV07YnJlYWs7ZGVmYXVsdDp2YXIgbz0raTtpZigwPT09bylyZXR1cm4gRTtpZihvPnQpe3ZhciByPUVzKG8vMTApO3JldHVybiAwPT09cj9FOnI8PXQ/dm9pZCAwPT09QltyLTFdP2kuY2hhckF0KDEpOkJbci0xXStpLmNoYXJBdCgxKTpFfWU9QltvLTFdfXJldHVybiB2b2lkIDA9PT1lPyIiOmV9KSl9LHlzPXJzLERzPU1hdGgubWF4LGxzPU1hdGgubWluO25zKCJyZXBsYWNlIiwyLChmdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1CLlJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFLEU9Qi5SRVBMQUNFX0tFRVBTXyQwLEM9UT8iJCI6IiQwIjtyZXR1cm5bZnVuY3Rpb24oSSxCKXt2YXIgUT1ocyh0aGlzKSxFPW51bGw9PUk/dm9pZCAwOklbQV07cmV0dXJuIHZvaWQgMCE9PUU/RS5jYWxsKEksUSxCKTpnLmNhbGwoU3RyaW5nKFEpLEksQil9LGZ1bmN0aW9uKEEsQil7aWYoIVEmJkV8fCJzdHJpbmciPT10eXBlb2YgQiYmLTE9PT1CLmluZGV4T2YoQykpe3ZhciB0PUkoZyxBLHRoaXMsQik7aWYodC5kb25lKXJldHVybiB0LnZhbHVlfXZhciBpPWFzKEEpLGU9U3RyaW5nKHRoaXMpLG89ImZ1bmN0aW9uIj09dHlwZW9mIEI7b3x8KEI9U3RyaW5nKEIpKTt2YXIgcj1pLmdsb2JhbDtpZihyKXt2YXIgbj1pLnVuaWNvZGU7aS5sYXN0SW5kZXg9MH1mb3IodmFyIGE9W107Oyl7dmFyIHM9eXMoaSxlKTtpZihudWxsPT09cylicmVhaztpZihhLnB1c2gocyksIXIpYnJlYWs7IiI9PT1TdHJpbmcoc1swXSkmJihpLmxhc3RJbmRleD1mcyhlLHNzKGkubGFzdEluZGV4KSxuKSl9Zm9yKHZhciBjLGg9IiIsZj0wLHU9MDt1PGEubGVuZ3RoO3UrKyl7cz1hW3VdO2Zvcih2YXIgeT1TdHJpbmcoc1swXSksRD1EcyhscyhjcyhzLmluZGV4KSxlLmxlbmd0aCksMCksbD1bXSx3PTE7dzxzLmxlbmd0aDt3KyspbC5wdXNoKHZvaWQgMD09PShjPXNbd10pP2M6U3RyaW5nKGMpKTt2YXIgZD1zLmdyb3VwcztpZihvKXt2YXIgRj1beV0uY29uY2F0KGwsRCxlKTt2b2lkIDAhPT1kJiZGLnB1c2goZCk7dmFyIFI9U3RyaW5nKEIuYXBwbHkodm9pZCAwLEYpKX1lbHNlIFI9dXMoeSxlLEQsbCxkLEIpO0Q+PWYmJihoKz1lLnNsaWNlKGYsRCkrUixmPUQreS5sZW5ndGgpfXJldHVybiBoK2Uuc2xpY2UoZil9XX0pKSxfdCgiSW50OCIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSkpLF90KCJJbnQxNiIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSkpLF90KCJJbnQzMiIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSkpLF90KCJVaW50MTYiLChmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJLEIpe3JldHVybiBBKHRoaXMsZyxJLEIpfX0pKSxfdCgiVWludDMyIiwoZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcsSSxCKXtyZXR1cm4gQSh0aGlzLGcsSSxCKX19KSksX3QoIkZsb2F0MzIiLChmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJLEIpe3JldHVybiBBKHRoaXMsZyxJLEIpfX0pKSxfdCgiRmxvYXQ2NCIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSkpO3ZhciB3cyxkcz1MLEZzPWQsUnM9VEEoIm1hdGNoIiksR3M9ZnVuY3Rpb24oQSl7dmFyIGc7cmV0dXJuIGRzKEEpJiYodm9pZCAwIT09KGc9QVtSc10pPyEhZzoiUmVnRXhwIj09RnMoQSkpfSxrcz1Hcyxwcz1mdW5jdGlvbihBKXtpZihrcyhBKSl0aHJvdyBUeXBlRXJyb3IoIlRoZSBtZXRob2QgZG9lc24ndCBhY2NlcHQgcmVndWxhciBleHByZXNzaW9ucyIpO3JldHVybiBBfSxTcz1UQSgibWF0Y2giKSxVcz1mdW5jdGlvbihBKXt2YXIgZz0vLi87dHJ5eyIvLi8iW0FdKGcpfWNhdGNoKEkpe3RyeXtyZXR1cm4gZ1tTc109ITEsIi8uLyJbQV0oZyl9Y2F0Y2goQil7fX1yZXR1cm4hMX0sTXM9b0IsTnM9ckkuZix2cz1WQSxZcz1wcyxIcz1rLExzPVVzLEpzPSIiLnN0YXJ0c1dpdGgsS3M9TWF0aC5taW4sbXM9THMoInN0YXJ0c1dpdGgiKTtNcyh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohIShtc3x8KHdzPU5zKFN0cmluZy5wcm90b3R5cGUsInN0YXJ0c1dpdGgiKSwhd3N8fHdzLndyaXRhYmxlKSkmJiFtc30se3N0YXJ0c1dpdGg6ZnVuY3Rpb24oQSl7dmFyIGc9U3RyaW5nKEhzKHRoaXMpKTtZcyhBKTt2YXIgST12cyhLcyhhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxnLmxlbmd0aCkpLEI9U3RyaW5nKEEpO3JldHVybiBKcz9Kcy5jYWxsKGcsQixJKTpnLnNsaWNlKEksSStCLmxlbmd0aCk9PT1CfX0pO3ZhciB4cz14ZztvQih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHtjb3B5V2l0aGluOkJpfSkseHMoImNvcHlXaXRoaW4iKTt2YXIgcXM9e0NTU1J1bGVMaXN0OjAsQ1NTU3R5bGVEZWNsYXJhdGlvbjowLENTU1ZhbHVlTGlzdDowLENsaWVudFJlY3RMaXN0OjAsRE9NUmVjdExpc3Q6MCxET01TdHJpbmdMaXN0OjAsRE9NVG9rZW5MaXN0OjEsRGF0YVRyYW5zZmVySXRlbUxpc3Q6MCxGaWxlTGlzdDowLEhUTUxBbGxDb2xsZWN0aW9uOjAsSFRNTENvbGxlY3Rpb246MCxIVE1MRm9ybUVsZW1lbnQ6MCxIVE1MU2VsZWN0RWxlbWVudDowLE1lZGlhTGlzdDowLE1pbWVUeXBlQXJyYXk6MCxOYW1lZE5vZGVNYXA6MCxOb2RlTGlzdDoxLFBhaW50UmVxdWVzdExpc3Q6MCxQbHVnaW46MCxQbHVnaW5BcnJheTowLFNWR0xlbmd0aExpc3Q6MCxTVkdOdW1iZXJMaXN0OjAsU1ZHUGF0aFNlZ0xpc3Q6MCxTVkdQb2ludExpc3Q6MCxTVkdTdHJpbmdMaXN0OjAsU1ZHVHJhbnNmb3JtTGlzdDowLFNvdXJjZUJ1ZmZlckxpc3Q6MCxTdHlsZVNoZWV0TGlzdDowLFRleHRUcmFja0N1ZUxpc3Q6MCxUZXh0VHJhY2tMaXN0OjAsVG91Y2hMaXN0OjB9LGJzPVhDLmZvckVhY2gsVHM9T2koImZvckVhY2giKT9bXS5mb3JFYWNoOmZ1bmN0aW9uKEEpe3JldHVybiBicyh0aGlzLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxqcz1OLE9zPXFzLFpzPVRzLFBzPWdBO2Zvcih2YXIgV3MgaW4gT3Mpe3ZhciBWcz1qc1tXc10sWHM9VnMmJlZzLnByb3RvdHlwZTtpZihYcyYmWHMuZm9yRWFjaCE9PVpzKXRyeXtQcyhYcywiZm9yRWFjaCIsWnMpfWNhdGNoKFlEKXtYcy5mb3JFYWNoPVpzfX12YXIgenM9WSxfcz1OLCRzPUlCLEFjPVF0LGdjPUguZixJYz1ZSS5mLEJjPUdzLFFjPWRhLEVjPUZhLENjPXZJLHRjPWwsaWM9b0kuZW5mb3JjZSxlYz1ndCxvYz1UQSgibWF0Y2giKSxyYz1fcy5SZWdFeHAsbmM9cmMucHJvdG90eXBlLGFjPS9hL2csc2M9L2EvZyxjYz1uZXcgcmMoYWMpIT09YWMsaGM9RWMuVU5TVVBQT1JURURfWTtpZih6cyYmJHMoIlJlZ0V4cCIsIWNjfHxoY3x8dGMoKGZ1bmN0aW9uKCl7cmV0dXJuIHNjW29jXT0hMSxyYyhhYykhPWFjfHxyYyhzYyk9PXNjfHwiL2EvaSIhPXJjKGFjLCJpIil9KSkpKXtmb3IodmFyIGZjPWZ1bmN0aW9uKEEsZyl7dmFyIEksQj10aGlzIGluc3RhbmNlb2YgZmMsUT1CYyhBKSxFPXZvaWQgMD09PWc7aWYoIUImJlEmJkEuY29uc3RydWN0b3I9PT1mYyYmRSlyZXR1cm4gQTtjYz9RJiYhRSYmKEE9QS5zb3VyY2UpOkEgaW5zdGFuY2VvZiBmYyYmKEUmJihnPVFjLmNhbGwoQSkpLEE9QS5zb3VyY2UpLGhjJiYoST0hIWcmJmcuaW5kZXhPZigieSIpPi0xKSYmKGc9Zy5yZXBsYWNlKC95L2csIiIpKTt2YXIgQz1BYyhjYz9uZXcgcmMoQSxnKTpyYyhBLGcpLEI/dGhpczpuYyxmYyk7aGMmJkkmJihpYyhDKS5zdGlja3k9ITApO3JldHVybiBDfSx1Yz1mdW5jdGlvbihBKXtBIGluIGZjfHxnYyhmYyxBLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHJjW0FdfSxzZXQ6ZnVuY3Rpb24oZyl7cmNbQV09Z319KX0seWM9SWMocmMpLERjPTA7eWMubGVuZ3RoPkRjOyl1Yyh5Y1tEYysrXSk7bmMuY29uc3RydWN0b3I9ZmMsZmMucHJvdG90eXBlPW5jLENjKF9zLCJSZWdFeHAiLGZjKX1lYygiUmVnRXhwIik7dmFyIGxjPXZJLHdjPWosZGM9bCxGYz1kYSxSYz0idG9TdHJpbmciLEdjPVJlZ0V4cC5wcm90b3R5cGUsa2M9R2NbUmNdLHBjPWRjKChmdW5jdGlvbigpe3JldHVybiIvYS9iIiE9a2MuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pKSxTYz1rYy5uYW1lIT1SYzsocGN8fFNjKSYmbGMoUmVnRXhwLnByb3RvdHlwZSxSYywoZnVuY3Rpb24oKXt2YXIgQT13Yyh0aGlzKSxnPVN0cmluZyhBLnNvdXJjZSksST1BLmZsYWdzO3JldHVybiIvIitnKyIvIitTdHJpbmcodm9pZCAwPT09SSYmQSBpbnN0YW5jZW9mIFJlZ0V4cCYmISgiZmxhZ3MiaW4gR2MpP0ZjLmNhbGwoQSk6SSl9KSx7dW5zYWZlOiEwfSk7dmFyIFVjPVFnLmluY2x1ZGVzLE1jPXhnO29CKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMH0se2luY2x1ZGVzOmZ1bmN0aW9uKEEpe3JldHVybiBVYyh0aGlzLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLE1jKCJpbmNsdWRlcyIpO3ZhciBOYz1wcyx2Yz1rO29CKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOiFVcygiaW5jbHVkZXMiKX0se2luY2x1ZGVzOmZ1bmN0aW9uKEEpe3JldHVybiEhflN0cmluZyh2Yyh0aGlzKSkuaW5kZXhPZihOYyhBKSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSk7dmFyIFljLEhjPUE9PmZ1bmN0aW9uKEEsZyl7aWYoZy5zdGFydHNXaXRoKCJkYXRhOiIpKXt2YXIgSSxCPWcucmVwbGFjZSgvXmRhdGE6Lio/YmFzZTY0LC8sIiIpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBCdWZmZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBCdWZmZXIuZnJvbSlJPUJ1ZmZlci5mcm9tKEIsImJhc2U2NCIpO2Vsc2V7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGF0b2IpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gZGVjb2RlIGJhc2U2NC1lbmNvZGVkIGRhdGEgVVJMLCBCdWZmZXIgYW5kIGF0b2IgYXJlIG5vdCBzdXBwb3J0ZWQiKTt2YXIgUT1hdG9iKEIpO0k9bmV3IFVpbnQ4QXJyYXkoUS5sZW5ndGgpO2Zvcih2YXIgRT0wO0U8US5sZW5ndGg7RSsrKUlbRV09US5jaGFyQ29kZUF0KEUpfXJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShJLEEpLnRoZW4oKGZ1bmN0aW9uKEEpe3JldHVybiBBLmluc3RhbmNlfSkpfXZhciBDPXZvaWQgMCx0PXZvaWQgMDtyZXR1cm4gZmV0Y2goZykudGhlbigoZnVuY3Rpb24oZyl7cmV0dXJuIHQ9KEM9ZykuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpfHwiIiwiaW5zdGFudGlhdGVTdHJlYW1pbmciaW4gV2ViQXNzZW1ibHkmJnQuc3RhcnRzV2l0aCgiYXBwbGljYXRpb24vd2FzbSIpP1dlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKEMsQSk6Qy5hcnJheUJ1ZmZlcigpfSkpLnRoZW4oKGZ1bmN0aW9uKGcpe3JldHVybiBnIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZyxBKTpnfSkpLnRoZW4oKGZ1bmN0aW9uKEEpe3JldHVybiBBLmluc3RhbmNlfSkpfShBLCJkYXRhOmFwcGxpY2F0aW9uL3dhc207YmFzZTY0LEFHRnpiUUVBQUFBQi9BSXVZQUYvQVg5Z0FYOEFZQUovZndGL1lBSi9md0JnQTM5L2Z3Ri9ZQVovZjM5L2YzOEJmMkFGZjM5L2YzOEJmMkFEZjM5L0FHQUVmMzkvZndCZ0JuOS9mMzkvZndCZ0JYOS9mMzkvQUdBRWYzOS9md0YvWUFoL2YzOS9mMzkvZndGL1lBZC9mMzkvZjM5L0FYOWdCWDkrZm41K0FHQUFBR0FIZjM5L2YzOS9md0JnQkg5L2YzOEJmbUFGZjM5L2YzNEJmMkFFZjM1K2Z3QmdBbjkrQUdBRmYzOStmMzhBWUFBQmYyQUtmMzkvZjM5L2YzOS9md0YvWUF4L2YzOS9mMzkvZjM5L2YzOEJmMkFJZjM5L2YzOS9mMzhBWUE5L2YzOS9mMzkvZjM5L2YzOS9mMzhBWUFwL2YzOS9mMzkvZjM5L0FHQUxmMzkvZjM5L2YzOS9mMzhCZjJBR2YzeC9mMzkvQVg5Z0IzOS9mMzkvZm40QmYyQUdmMzkvZjM1K0FYOWdCWDkvZjM5OEFYOWdBbjk4QUdBRWZuNStmZ0YvWUFKK2Z3Ri9ZQUorZmdGOFlBRi9BWHhnQTM1K2ZnRi9ZQU4vZjM4QmZHQURmMzkvQVgxZ0JIOS9mMzRCZm1BQ2ZIOEJmR0FEZjM5K0FHQUNmbjRCZldBQ2YzOEJmZ0l4Q0FGaEFXRUFEd0ZoQVdJQUJnRmhBV01BQWdGaEFXUUFBZ0ZoQVdVQUFBRmhBV1lBQkFGaEFXY0FCd0ZoQVdnQUFBUERCTUVFQWdBQUFnTUFBUU1CQUFBQUF3TVdEdzRBQUFFREFRUUFBUUFBQVFBQUFnTUNBZ2NPQmdnS0V3TUNBQU1EQUFJREFBTURBQTRDQkFRQUF3UUFCQUFFQUFBQUF3TURBd1FBQUFFQ0ZBSUhCUU1HQmdzQ0FDRUFBZ0FNREFVSUFnY0FBd01EQXdBQUNBQUlBQUFBQUFNQ0FnTURBaUlUQUFBRUF3SUFBd0FBQndJQ0FCY0FBQmNBSXdNQUF3QUJBQUVIQWdjSUFBTUNBQUlLQXdJQkJBTUhBQUlEQUFBREVBUVFBd0lOQWcwTEFnc0FBQUFDRkFBQUNBQUpCd2dDQndNQ0NnQUJCQVlCQUFNREFBUVlDZ1FZQ2dnUkFnQUVKQTRsSmdBQkFRQUtEd0lBQVFBSEF4UUJCQWdDQ2hrQUJ3Y1pBQUVEQndJREFRSVdBUUlLQUFBSUFBQUdEQWNBQVFFREFRQUFCd01CQVFBRUdoc2FHd0FDQUFBQ0F4d0RBZ0FBQVFjREhBTURBZ0lEQ1FvSkNRb0pDUUFRQkFjUUFnVUVDQ2NvRVFzRkN4RURDd2NDQUFjUktRQUxBQUVDQWdJQUJ3QUdLZ0lBQWdRckxDMElEZzRUQWc0QkFnSUFBQUFEQndNSEF3TUJBQUFDQXdJQUFBSUJBQUlBQVFFRUJBQUFCQWdWQkFFQkFBRUJBQWtKQ1FvS0NnZ0lDQVFQQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUF3TURBd01EQUFBQkFRWU1EQVlNREFBR0FBWU1EQUVHQmdRTEJBSUVBZ0VHQkFzRUFnUUNDd3NMQkFFQkFRRUpDUVVlQlI0TkRRME5EUTBNQlFVRkJRVU1CUVVGQlFVR0h5QVNCaElHQmdZZklBY1NCaElHQmdjRkJRVUZCUVVGQlFVSkJRVUZCUVVGQlFVRkJBZ0dCQWdHQUFRREhRa0VDQUVCQUFFQUNBRVZBZ0lBQUFFQkFBQUJBQUVCQUFRSEFYQUJ3UUxCQWdVR0FRRXdnSUFDQmdnQmZ3RkJrTmNCQ3djNURBRnBBZ0FCYWdEbUFRRnJBQmtCYkFBUUFXMEE1d0lCYmdDekJBRnZBTEVFQVhBQW5RUUJjUUNUQkFGeUFMQUJBWE1BalFRQmRBRUFDY2NFQVFCQkFRdkFBc1lFclFUQUFiMEJqQU93QVlzRGlnT0pBMDlQaUFPSEE0WUQ1d0dGQStjQnVnR0RBOGdFeHdUa0FmVUN4UVRFQkxnQjR3SERCTUVFd2dUQUJORUJ1Z1M3QkxrRXZnUzlCTHdFZm8wRGpBSGlBYmdFdHdTMkJMVUU0UUcwQkxJRXNBU3ZCSzRFRU1vQjZBUG1BN2tEdHdPMUE3TURzUU92QTYwRHF3T3BBNmNEcFFPakE2RURud09TQXVrRDV3T01BdG9EMlFQWUE5Y0QxZ092QXRVRDFBUFRBNWNDMFFQUUE4OER6Z1BOQTAvTUE4c0RoUUxFQThJRHdRUEFBNzREdkFPRUFzTUR2d1NPQTc4RHZRTzdBMndnSU9VRDVBUGpBK0lENFFQZ0E5OEQzZ092QXQwRDNBUGJBeUNLQW9vQ3pBRytBYjRCMGdPK0FTREtBOGtEekFGUFQ4Z0Rod0lneHdQR0E4d0JUMC9GQTRjQ2JDQ3NCS3NFcWdSc0lLa0VxQVNuQkNDbUJLVUVwQVNqQk1VQ3hRS2lCS0VFb0FTZkJKNEVJSndFbXdTYUJKa0V2Z0srQXBnRWx3U1dCSlVFbEFRZ2tnU1JCSkFFandTT0JJd0Vpd1NLQkNDSkJJZ0Vod1NHQklVRWhBU0RCSUlFYkNDNEFvRUVnQVQvQS80RC9RUDhBN29EdGdPeUE2WURvZ091QTZvRGJDQzRBdnNEK2dQNUEvZ0Q5d1AyQTdnRHRBT3dBNlFEb0FPc0E2Z0R5UUdCQXZVRHlRR0JBdlFESUtzQnF3RnJhMnV0QWs5cWFpQ3JBYXNCYTJ0cnJRSlBhbW9ncWdHcUFXdXBBYWtCckFKUGFtb2dxZ0dxQVd1cEFha0JyQUpQYW1vZzh3UHlBeUR4QS9BRElPOEQ3Z01nN1FQc0F5Q1lBdXNEc0FFZ21BTHFBN0FCYkowRG5BTnNJTW9CeWdHYkE1SURsUU9hQXlDVEE1WURtUU1nbEFPWEE1Z0RiQ0NSQTVBRG5nT1BBd3JpMWdmQkJBY0FJQUFnQVhnTEZBQWdBQkExQkVBZ0FDZ0NCQThMSUFBdEFBc0xIUUVCZnlBQUVEVUVRQ0FBS0FJQUlRRWdBQkI5R2lBQkVCQUxJQUFMQ1FBZ0FCQU5JQUZxQzlJQkFRUi9Ba0FnQVNBQUVBa2lBMHNFUUNNQVFSQnJJZ0lrQUNBQklBTnJJZ01FUUNBQUVCTWhCQ0FBRUFraUFTQURhaUVGSUFNZ0JDQUJhMHNFUUNBQUlBUWdCU0FFYXlBQklBRVF5QUVMSUFFZ0FCQU5JZ1JxSUFOQkFCRDJBU0FBSUFVUWVDQUNRUUE2QUE4Z0JDQUZhaUFDUVE5cUVEUUxEQUVMSXdCQkVHc2lBaVFBQWtBZ0FCQTFCRUFnQUNnQ0FDRURJQUpCQURvQUR5QUJJQU5xSUFKQkQyb1FOQ0FBSUFFUU9Rd0JDeUFDUVFBNkFBNGdBQ0FCYWlBQ1FRNXFFRFFnQUNBQkVEb0xDeUFDUVJCcUpBQUxFUUFnQUJBMUJFQWdBQ2dDQUE4TElBQUxDZ0FnQUNnQ0FCQ2pBUXNNQUNBQUlBRkJIR29RandJTHpBd0JCMzhDUUNBQVJRMEFJQUJCQ0dzaUF5QUFRUVJyS0FJQUlnRkJlSEVpQUdvaEJRSkFJQUZCQVhFTkFDQUJRUU54UlEwQklBTWdBeWdDQUNJQmF5SURRZGlCQVNnQ0FFa05BU0FBSUFGcUlRQWdBMEhjZ1FFb0FnQkhCRUFnQVVIL0FVMEVRQ0FES0FJSUlnSWdBVUVEZGlJRVFRTjBRZkNCQVdwR0dpQUNJQU1vQWd3aUFVWUVRRUhJZ1FGQnlJRUJLQUlBUVg0Z0JIZHhOZ0lBREFNTElBSWdBVFlDRENBQklBSTJBZ2dNQWdzZ0F5Z0NHQ0VHQWtBZ0F5QURLQUlNSWdGSEJFQWdBeWdDQ0NJQ0lBRTJBZ3dnQVNBQ05nSUlEQUVMQWtBZ0EwRVVhaUlDS0FJQUlnUU5BQ0FEUVJCcUlnSW9BZ0FpQkEwQVFRQWhBUXdCQ3dOQUlBSWhCeUFFSWdGQkZHb2lBaWdDQUNJRURRQWdBVUVRYWlFQ0lBRW9BaEFpQkEwQUN5QUhRUUEyQWdBTElBWkZEUUVDUUNBRElBTW9BaHdpQWtFQ2RFSDRnd0ZxSWdRb0FnQkdCRUFnQkNBQk5nSUFJQUVOQVVITWdRRkJ6SUVCS0FJQVFYNGdBbmR4TmdJQURBTUxJQVpCRUVFVUlBWW9BaEFnQTBZYmFpQUJOZ0lBSUFGRkRRSUxJQUVnQmpZQ0dDQURLQUlRSWdJRVFDQUJJQUkyQWhBZ0FpQUJOZ0lZQ3lBREtBSVVJZ0pGRFFFZ0FTQUNOZ0lVSUFJZ0FUWUNHQXdCQ3lBRktBSUVJZ0ZCQTNGQkEwY05BRUhRZ1FFZ0FEWUNBQ0FGSUFGQmZuRTJBZ1FnQXlBQVFRRnlOZ0lFSUFBZ0Eyb2dBRFlDQUE4TElBTWdCVThOQUNBRktBSUVJZ0ZCQVhGRkRRQUNRQ0FCUVFKeFJRUkFJQVZCNElFQktBSUFSZ1JBUWVDQkFTQUROZ0lBUWRTQkFVSFVnUUVvQWdBZ0FHb2lBRFlDQUNBRElBQkJBWEkyQWdRZ0EwSGNnUUVvQWdCSERRTkIwSUVCUVFBMkFnQkIzSUVCUVFBMkFnQVBDeUFGUWR5QkFTZ0NBRVlFUUVIY2dRRWdBellDQUVIUWdRRkIwSUVCS0FJQUlBQnFJZ0EyQWdBZ0F5QUFRUUZ5TmdJRUlBQWdBMm9nQURZQ0FBOExJQUZCZUhFZ0FHb2hBQUpBSUFGQi93Rk5CRUFnQlNnQ0NDSUNJQUZCQTNZaUJFRURkRUh3Z1FGcVJob2dBaUFGS0FJTUlnRkdCRUJCeUlFQlFjaUJBU2dDQUVGK0lBUjNjVFlDQUF3Q0N5QUNJQUUyQWd3Z0FTQUNOZ0lJREFFTElBVW9BaGdoQmdKQUlBVWdCU2dDRENJQlJ3UkFJQVVvQWdnaUFrSFlnUUVvQWdCSkdpQUNJQUUyQWd3Z0FTQUNOZ0lJREFFTEFrQWdCVUVVYWlJQ0tBSUFJZ1FOQUNBRlFSQnFJZ0lvQWdBaUJBMEFRUUFoQVF3QkN3TkFJQUloQnlBRUlnRkJGR29pQWlnQ0FDSUVEUUFnQVVFUWFpRUNJQUVvQWhBaUJBMEFDeUFIUVFBMkFnQUxJQVpGRFFBQ1FDQUZJQVVvQWh3aUFrRUNkRUg0Z3dGcUlnUW9BZ0JHQkVBZ0JDQUJOZ0lBSUFFTkFVSE1nUUZCeklFQktBSUFRWDRnQW5keE5nSUFEQUlMSUFaQkVFRVVJQVlvQWhBZ0JVWWJhaUFCTmdJQUlBRkZEUUVMSUFFZ0JqWUNHQ0FGS0FJUUlnSUVRQ0FCSUFJMkFoQWdBaUFCTmdJWUN5QUZLQUlVSWdKRkRRQWdBU0FDTmdJVUlBSWdBVFlDR0FzZ0F5QUFRUUZ5TmdJRUlBQWdBMm9nQURZQ0FDQURRZHlCQVNnQ0FFY05BVUhRZ1FFZ0FEWUNBQThMSUFVZ0FVRitjVFlDQkNBRElBQkJBWEkyQWdRZ0FDQURhaUFBTmdJQUN5QUFRZjhCVFFSQUlBQkJBM1lpQVVFRGRFSHdnUUZxSVFBQ2YwSElnUUVvQWdBaUFrRUJJQUYwSWdGeFJRUkFRY2lCQVNBQklBSnlOZ0lBSUFBTUFRc2dBQ2dDQ0FzaEFpQUFJQU0yQWdnZ0FpQUROZ0lNSUFNZ0FEWUNEQ0FESUFJMkFnZ1BDMEVmSVFJZ0EwSUFOd0lRSUFCQi8vLy9CMDBFUUNBQVFRaDJJZ0VnQVVHQS9qOXFRUkIyUVFoeElnRjBJZ0lnQWtHQTRCOXFRUkIyUVFSeElnSjBJZ1FnQkVHQWdBOXFRUkIyUVFKeElnUjBRUTkySUFFZ0FuSWdCSEpySWdGQkFYUWdBQ0FCUVJWcWRrRUJjWEpCSEdvaEFnc2dBeUFDTmdJY0lBSkJBblJCK0lNQmFpRUJBa0FDUUFKQVFjeUJBU2dDQUNJRVFRRWdBblFpQjNGRkJFQkJ6SUVCSUFRZ0IzSTJBZ0FnQVNBRE5nSUFJQU1nQVRZQ0dBd0JDeUFBUVFCQkdTQUNRUUYyYXlBQ1FSOUdHM1FoQWlBQktBSUFJUUVEUUNBQklnUW9BZ1JCZUhFZ0FFWU5BaUFDUVIxMklRRWdBa0VCZENFQ0lBUWdBVUVFY1dvaUIwRVFhaWdDQUNJQkRRQUxJQWNnQXpZQ0VDQURJQVEyQWhnTElBTWdBellDRENBRElBTTJBZ2dNQVFzZ0JDZ0NDQ0lBSUFNMkFnd2dCQ0FETmdJSUlBTkJBRFlDR0NBRElBUTJBZ3dnQXlBQU5nSUlDMEhvZ1FGQjZJRUJLQUlBUVFGcklnQkJmeUFBR3pZQ0FBc0xKQUVCZnlNQVFSQnJJZ0VrQUNBQVFnQTNBZ0FnQUVFQU5nSUlJQUZCRUdva0FDQUFDNHNDQWdOL0FuNENRQ0FBS1FOd0lnUlFSU0FFSUFBcEEzZ2dBQ2dDQkNJQklBQW9BaXdpQW11c2ZDSUZWM0ZGQkVBakFFRVFheUlDSkFCQmZ5RUJBa0FnQUJEcUFRMEFJQUFnQWtFUGFrRUJJQUFvQWlBUkJBQkJBVWNOQUNBQ0xRQVBJUUVMSUFKQkVHb2tBQ0FCSWdOQkFFNE5BU0FBS0FJRUlRRWdBQ2dDTENFQ0N5QUFRbjgzQTNBZ0FDQUJOZ0pvSUFBZ0JTQUNJQUZyckh3M0EzaEJmdzhMSUFWQ0FYd2hCU0FBS0FJRUlRRWdBQ2dDQ0NFQ0FrQWdBQ2tEY0NJRVVBMEFJQVFnQlgwaUJDQUNJQUZyckZrTkFDQUJJQVNuYWlFQ0N5QUFJQUkyQW1nZ0FDQUZJQUFvQWl3aUFDQUJhNng4TndONElBQWdBVThFUUNBQlFRRnJJQU02QUFBTElBTUxHUUVCZjBFS0lRRWdBQkExQkg4Z0FCQjlRUUZyQlNBQkN3dmpBUUVHZnlBQkVOSUNJUU1qQUVFUWF5SUZKQUFDUUNBRElBQWlCQkRPQVNJQVRRUkFJQVFRRFNJR0lRSWdBeUlBQkg4Q1FDQUJJQUpHRFFBZ0FpQUJheUFBUVFKMFR3UkFJQUJGRFFFRFFDQUNJQUVvQWdBMkFnQWdBa0VFYWlFQ0lBRkJCR29oQVNBQVFRRnJJZ0FOQUFzTUFRc2dBRVVOQUFOQUlBSWdBRUVCYXlJQVFRSjBJZ2RxSUFFZ0Iyb29BZ0EyQWdBZ0FBMEFDd3RCQUFVZ0Fnc2FJQVZCQURZQ0RDQUdJQU5CQW5ScUlBVkJER29RTXlBRUlBTVFlQXdCQ3lBRUlBQWdBeUFBYXlBRUVBa2lBRUVBSUFBZ0F5QUJFUE1CQ3lBRlFSQnFKQUFMY3dFRGZ5QUJFSjRCSVFJakFFRVFheUlFSkFBQ1FDQUNJQUFRRXlJRFRRUkFJQUFRRFNFRElBSUVRQ0FESUFFZ0FoRHJBUXNnQkVFQU9nQVBJQUlnQTJvZ0JFRVBhaEEwSUFBZ0FoQjREQUVMSUFBZ0F5QUNJQU5ySUFBUUNTSUFRUUFnQUNBQ0lBRVE5d0VMSUFSQkVHb2tBQXZ0QWdFRWZ3SkFRY3lJQVMwQUFFRUJjUTBBUWN5SUFSQWtSUTBBSXdCQklHc2lBaVFBQWtBQ1FBTkFJQUpCQ0dvZ0FFRUNkR29DZjBFQklBQjBRZi8vLy84SGNTSURRUUZ5UlFSQUlBQkJBblFvQWdBTUFRc2dBRUdhSGtHV0h5QURHeERlQWdzaUF6WUNBQ0FEUVg5SEJFQWdBRUVCYWlJQVFRWkdEUUlNQVFzTERBRUxRUUFRM1FKRkJFQkJ1QzBoQVNBQ1FRaHFRYmd0RUo4QlJRMEJRZEF0SVFFZ0FrRUlha0hRTFJDZkFVVU5BVUVBSVFCQm9JY0JMUUFBUlFSQUEwQWdBRUVDZEVId2hnRnFJQUJCbGg4UTNnSTJBZ0FnQUVFQmFpSUFRUVpIRFFBTFFhQ0hBVUVCT2dBQVFZaUhBVUh3aGdFb0FnQTJBZ0FMUWZDR0FTRUJJQUpCQ0dwQjhJWUJFSjhCUlEwQlFZaUhBU0VCSUFKQkNHcEJpSWNCRUo4QlJRMEJRUmdRR1NJQlJRMEJDeUFCSUFJcEF3ZzNBZ0FnQVNBQ0tRTVlOd0lRSUFFZ0Fpa0RFRGNDQ0FzZ0FrRWdhaVFBUWNpSUFTQUJOZ0lBUWN5SUFSQWpDMEhJaUFFb0FnQUxCUUFRQUFBTDN3b0NCWDhQZmlNQVFlQUFheUlGSkFBZ0JFTC8vLy8vLy84L2d5SU5RZytHSUFOQ01ZaUVJUTRnQWlBRWhVS0FnSUNBZ0lDQWdJQi9neUVLSUFKQy8vLy8vLy8vUDRNaUMwSWdpQ0VQSUExQ0VZZ2hFQ0FFUWpDSXAwSC8vd0Z4SVFjQ1FBSkFJQUpDTUlpblFmLy9BWEVpQ1VFQmEwSDkvd0ZOQkVBZ0IwRUJhMEgrL3dGSkRRRUxJQUZRSUFKQy8vLy8vLy8vLy8vL0FJTWlERUtBZ0lDQWdJREEvLzhBVkNBTVFvQ0FnSUNBZ01ELy93QlJHMFVFUUNBQ1FvQ0FnSUNBZ0NDRUlRb01BZ3NnQTFBZ0JFTC8vLy8vLy8vLy8vOEFneUlDUW9DQWdJQ0FnTUQvL3dCVUlBSkNnSUNBZ0lDQXdQLy9BRkViUlFSQUlBUkNnSUNBZ0lDQUlJUWhDaUFESVFFTUFnc2dBU0FNUW9DQWdJQ0FnTUQvL3dDRmhGQUVRQ0FDSUFPRVVBUkFRb0NBZ0lDQWdPRC8vd0FoQ2tJQUlRRU1Bd3NnQ2tLQWdJQ0FnSURBLy84QWhDRUtRZ0FoQVF3Q0N5QURJQUpDZ0lDQWdJQ0F3UC8vQUlXRVVBUkFJQUVnRElRaEFrSUFJUUVnQWxBRVFFS0FnSUNBZ0lEZy8vOEFJUW9NQXdzZ0NrS0FnSUNBZ0lEQS8vOEFoQ0VLREFJTElBRWdESVJRQkVCQ0FDRUJEQUlMSUFJZ0E0UlFCRUJDQUNFQkRBSUxJQXhDLy8vLy8vLy9QMWdFUUNBRlFkQUFhaUFCSUFzZ0FTQUxJQXRRSWdZYmVTQUdRUVowclh5bklnWkJEMnNRTDBFUUlBWnJJUVlnQlNrRFdDSUxRaUNJSVE4Z0JTa0RVQ0VCQ3lBQ1F2Ly8vLy8vL3o5V0RRQWdCVUZBYXlBRElBMGdBeUFOSUExUUlnZ2JlU0FJUVFaMHJYeW5JZ2hCRDJzUUx5QUdJQWhyUVJCcUlRWWdCU2tEU0NJQ1FnK0dJQVVwQTBBaUEwSXhpSVFoRGlBQ1FoR0lJUkFMSUFOQ0Q0WkNnSUQrL3crRElnSWdBVUlnaUNJRWZpSVNJQU5DRVloQy8vLy8vdytESWd3Z0FVTC8vLy8vRDRNaUFYNThJaEZDSUlZaURTQUJJQUorZkNJRElBMVVyU0FDSUF0Qy8vLy8vdytESWd0K0loVWdCQ0FNZm53aUV5QU9Rdi8vLy84UGd5SU5JQUYrZkNJVUlCRWdFbFN0UWlDR0lCRkNJSWlFZkNJUklBSWdEMEtBZ0FTRUlnNStJaFlnQ3lBTWZud2lEeUFFSUExK2ZDSVNJQkJDLy8vLy93ZURRb0NBZ0lBSWhDSUNJQUYrZkNJUVFpQ0dmQ0lYZkNFQklBY2dDV29nQm1wQi8vOEFheUVHQWtBZ0N5QU5maUlZSUF3Z0RuNThJZ3dnR0ZTdElBd2dBaUFFZm53aUJDQU1WSzE4SUFJZ0RuNThJQVFnQkNBVElCVlVyU0FUSUJSV3JYeDhJZ1JXclh3Z0FpQUxmaUlMSUEwZ0RuNThJZ0lnQzFTdFFpQ0dJQUpDSUlpRWZDQUVJQUpDSUlaOElnSWdCRlN0ZkNBQ0lBSWdFQ0FTVkswZ0R5QVdWSzBnRHlBU1ZxMThmRUlnaGlBUVFpQ0loSHdpQWxhdGZDQUNJQUlnRVNBVVZLMGdFU0FYVnExOGZDSUNWcTE4SWdSQ2dJQ0FnSUNBd0FDRFVFVUVRQ0FHUVFGcUlRWU1BUXNnQTBJL2lDRUxJQVJDQVlZZ0FrSS9pSVFoQkNBQ1FnR0dJQUZDUDRpRUlRSWdBMElCaGlFRElBc2dBVUlCaG9RaEFRc2dCa0gvL3dGT0JFQWdDa0tBZ0lDQWdJREEvLzhBaENFS1FnQWhBUXdCQ3dKK0lBWkJBRXdFUUVFQklBWnJJZ2RCZ0FGUEJFQkNBQ0VCREFNTElBVkJNR29nQXlBQklBWkIvd0JxSWdZUUx5QUZRU0JxSUFJZ0JDQUdFQzhnQlVFUWFpQURJQUVnQnhCOElBVWdBaUFFSUFjUWZDQUZLUU13SUFVcEF6aUVRZ0JTclNBRktRTWdJQVVwQXhDRWhDRURJQVVwQXlnZ0JTa0RHSVFoQVNBRktRTUFJUUlnQlNrRENBd0JDeUFFUXYvLy8vLy8veitESUFhdFFqQ0doQXNnQ29RaENpQURVQ0FCUWdCWklBRkNnSUNBZ0lDQWdJQ0FmMUViUlFSQUlBb2dBa0lCZkNJQklBSlVyWHdoQ2d3QkN5QURJQUZDZ0lDQWdJQ0FnSUNBZjRXRVVFVUVRQ0FDSVFFTUFRc2dDaUFDSUFKQ0FZTjhJZ0VnQWxTdGZDRUtDeUFBSUFFM0F3QWdBQ0FLTndNSUlBVkI0QUJxSkFBTGdDNEJDMzhqQUVFUWF5SUxKQUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkI5QUZOQkVCQnlJRUJLQUlBSWdaQkVDQUFRUXRxUVhoeElBQkJDMGtiSWdkQkEzWWlBbllpQVVFRGNRUkFJQUZCZjNOQkFYRWdBbW9pQTBFRGRDSUJRZmlCQVdvb0FnQWlCRUVJYWlFQUFrQWdCQ2dDQ0NJQ0lBRkI4SUVCYWlJQlJnUkFRY2lCQVNBR1FYNGdBM2R4TmdJQURBRUxJQUlnQVRZQ0RDQUJJQUkyQWdnTElBUWdBMEVEZENJQlFRTnlOZ0lFSUFFZ0JHb2lBU0FCS0FJRVFRRnlOZ0lFREF3TElBZEIwSUVCS0FJQUlncE5EUUVnQVFSQUFrQkJBaUFDZENJQVFRQWdBR3R5SUFFZ0FuUnhJZ0JCQUNBQWEzRkJBV3NpQUNBQVFReDJRUkJ4SWdKMklnRkJCWFpCQ0hFaUFDQUNjaUFCSUFCMklnRkJBblpCQkhFaUFISWdBU0FBZGlJQlFRRjJRUUp4SWdCeUlBRWdBSFlpQVVFQmRrRUJjU0lBY2lBQklBQjJhaUlEUVFOMElnQkIrSUVCYWlnQ0FDSUVLQUlJSWdFZ0FFSHdnUUZxSWdCR0JFQkJ5SUVCSUFaQmZpQURkM0VpQmpZQ0FBd0JDeUFCSUFBMkFnd2dBQ0FCTmdJSUN5QUVRUWhxSVFBZ0JDQUhRUU55TmdJRUlBUWdCMm9pQWlBRFFRTjBJZ0VnQjJzaUEwRUJjallDQkNBQklBUnFJQU0yQWdBZ0NnUkFJQXBCQTNZaUFVRURkRUh3Z1FGcUlRVkIzSUVCS0FJQUlRUUNmeUFHUVFFZ0FYUWlBWEZGQkVCQnlJRUJJQUVnQm5JMkFnQWdCUXdCQ3lBRktBSUlDeUVCSUFVZ0JEWUNDQ0FCSUFRMkFnd2dCQ0FGTmdJTUlBUWdBVFlDQ0F0QjNJRUJJQUkyQWdCQjBJRUJJQU0yQWdBTURBdEJ6SUVCS0FJQUlnbEZEUUVnQ1VFQUlBbHJjVUVCYXlJQUlBQkJESFpCRUhFaUFuWWlBVUVGZGtFSWNTSUFJQUp5SUFFZ0FIWWlBVUVDZGtFRWNTSUFjaUFCSUFCMklnRkJBWFpCQW5FaUFISWdBU0FBZGlJQlFRRjJRUUZ4SWdCeUlBRWdBSFpxUVFKMFFmaURBV29vQWdBaUFTZ0NCRUY0Y1NBSGF5RURJQUVoQWdOQUFrQWdBaWdDRUNJQVJRUkFJQUlvQWhRaUFFVU5BUXNnQUNnQ0JFRjRjU0FIYXlJQ0lBTWdBaUFEU1NJQ0d5RURJQUFnQVNBQ0d5RUJJQUFoQWd3QkN3c2dBU2dDR0NFSUlBRWdBU2dDRENJRVJ3UkFJQUVvQWdnaUFFSFlnUUVvQWdCSkdpQUFJQVEyQWd3Z0JDQUFOZ0lJREFzTElBRkJGR29pQWlnQ0FDSUFSUVJBSUFFb0FoQWlBRVVOQXlBQlFSQnFJUUlMQTBBZ0FpRUZJQUFpQkVFVWFpSUNLQUlBSWdBTkFDQUVRUkJxSVFJZ0JDZ0NFQ0lBRFFBTElBVkJBRFlDQUF3S0MwRi9JUWNnQUVHL2Ywc05BQ0FBUVF0cUlnQkJlSEVoQjBITWdRRW9BZ0FpQ1VVTkFFRUFJQWRySVFNQ1FBSkFBa0FDZjBFQUlBZEJnQUpKRFFBYVFSOGdCMEgvLy84SFN3MEFHaUFBUVFoMklnQWdBRUdBL2o5cVFSQjJRUWh4SWdKMElnQWdBRUdBNEI5cVFSQjJRUVJ4SWdGMElnQWdBRUdBZ0E5cVFSQjJRUUp4SWdCMFFROTJJQUVnQW5JZ0FISnJJZ0JCQVhRZ0J5QUFRUlZxZGtFQmNYSkJIR29MSWdaQkFuUkIrSU1CYWlnQ0FDSUNSUVJBUVFBaEFBd0JDMEVBSVFBZ0IwRUFRUmtnQmtFQmRtc2dCa0VmUmh0MElRRURRQUpBSUFJb0FnUkJlSEVnQjJzaUJTQURUdzBBSUFJaEJDQUZJZ01OQUVFQUlRTWdBaUVBREFNTElBQWdBaWdDRkNJRklBVWdBaUFCUVIxMlFRUnhhaWdDRUNJQ1Joc2dBQ0FGR3lFQUlBRkJBWFFoQVNBQ0RRQUxDeUFBSUFSeVJRUkFRUUFoQkVFQ0lBWjBJZ0JCQUNBQWEzSWdDWEVpQUVVTkF5QUFRUUFnQUd0eFFRRnJJZ0FnQUVFTWRrRVFjU0lDZGlJQlFRVjJRUWh4SWdBZ0FuSWdBU0FBZGlJQlFRSjJRUVJ4SWdCeUlBRWdBSFlpQVVFQmRrRUNjU0lBY2lBQklBQjJJZ0ZCQVhaQkFYRWlBSElnQVNBQWRtcEJBblJCK0lNQmFpZ0NBQ0VBQ3lBQVJRMEJDd05BSUFBb0FnUkJlSEVnQjJzaUFTQURTU0VDSUFFZ0F5QUNHeUVESUFBZ0JDQUNHeUVFSUFBb0FoQWlBUVIvSUFFRklBQW9BaFFMSWdBTkFBc0xJQVJGRFFBZ0EwSFFnUUVvQWdBZ0IydFBEUUFnQkNnQ0dDRUdJQVFnQkNnQ0RDSUJSd1JBSUFRb0FnZ2lBRUhZZ1FFb0FnQkpHaUFBSUFFMkFnd2dBU0FBTmdJSURBa0xJQVJCRkdvaUFpZ0NBQ0lBUlFSQUlBUW9BaEFpQUVVTkF5QUVRUkJxSVFJTEEwQWdBaUVGSUFBaUFVRVVhaUlDS0FJQUlnQU5BQ0FCUVJCcUlRSWdBU2dDRUNJQURRQUxJQVZCQURZQ0FBd0lDeUFIUWRDQkFTZ0NBQ0lDVFFSQVFkeUJBU2dDQUNFREFrQWdBaUFIYXlJQlFSQlBCRUJCMElFQklBRTJBZ0JCM0lFQklBTWdCMm9pQURZQ0FDQUFJQUZCQVhJMkFnUWdBaUFEYWlBQk5nSUFJQU1nQjBFRGNqWUNCQXdCQzBIY2dRRkJBRFlDQUVIUWdRRkJBRFlDQUNBRElBSkJBM0kyQWdRZ0FpQURhaUlBSUFBb0FnUkJBWEkyQWdRTElBTkJDR29oQUF3S0N5QUhRZFNCQVNnQ0FDSUlTUVJBUWRTQkFTQUlJQWRySWdFMkFnQkI0SUVCUWVDQkFTZ0NBQ0lDSUFkcUlnQTJBZ0FnQUNBQlFRRnlOZ0lFSUFJZ0IwRURjallDQkNBQ1FRaHFJUUFNQ2d0QkFDRUFJQWRCTDJvaUNRSi9RYUNGQVNnQ0FBUkFRYWlGQVNnQ0FBd0JDMEdzaFFGQ2Z6Y0NBRUdraFFGQ2dLQ0FnSUNBQkRjQ0FFR2doUUVnQzBFTWFrRndjVUhZcXRXcUJYTTJBZ0JCdElVQlFRQTJBZ0JCaElVQlFRQTJBZ0JCZ0NBTElnRnFJZ1pCQUNBQmF5SUZjU0lDSUFkTkRRbEJnSVVCS0FJQUlnUUVRRUg0aEFFb0FnQWlBeUFDYWlJQklBTk5JQUVnQkV0eURRb0xRWVNGQVMwQUFFRUVjUTBFQWtBQ1FFSGdnUUVvQWdBaUF3UkFRWWlGQVNFQUEwQWdBeUFBS0FJQUlnRlBCRUFnQVNBQUtBSUVhaUFEU3cwREN5QUFLQUlJSWdBTkFBc0xRUUFRY2lJQlFYOUdEUVVnQWlFR1FhU0ZBU2dDQUNJRFFRRnJJZ0FnQVhFRVFDQUNJQUZySUFBZ0FXcEJBQ0FEYTNGcUlRWUxJQVlnQjAwZ0JrSCsvLy8vQjB0eURRVkJnSVVCS0FJQUlnUUVRRUg0aEFFb0FnQWlBeUFHYWlJQUlBTk5JQUFnQkV0eURRWUxJQVlRY2lJQUlBRkhEUUVNQndzZ0JpQUlheUFGY1NJR1FmNy8vLzhIU3cwRUlBWVFjaUlCSUFBb0FnQWdBQ2dDQkdwR0RRTWdBU0VBQ3lBQVFYOUdJQWRCTUdvZ0JrMXlSUVJBUWFpRkFTZ0NBQ0lCSUFrZ0JtdHFRUUFnQVd0eElnRkIvdi8vL3dkTEJFQWdBQ0VCREFjTElBRVFja0YvUndSQUlBRWdCbW9oQmlBQUlRRU1Cd3RCQUNBR2F4QnlHZ3dFQ3lBQUlnRkJmMGNOQlF3REMwRUFJUVFNQnd0QkFDRUJEQVVMSUFGQmYwY05BZ3RCaElVQlFZU0ZBU2dDQUVFRWNqWUNBQXNnQWtIKy8vLy9CMHNOQVNBQ0VISWlBVUYvUmtFQUVISWlBRUYvUm5JZ0FDQUJUWElOQVNBQUlBRnJJZ1lnQjBFb2FrME5BUXRCK0lRQlFmaUVBU2dDQUNBR2FpSUFOZ0lBUWZ5RUFTZ0NBQ0FBU1FSQVFmeUVBU0FBTmdJQUN3SkFBa0FDUUVIZ2dRRW9BZ0FpQlFSQVFZaUZBU0VBQTBBZ0FTQUFLQUlBSWdNZ0FDZ0NCQ0lDYWtZTkFpQUFLQUlJSWdBTkFBc01BZ3RCMklFQktBSUFJZ0JCQUNBQUlBRk5HMFVFUUVIWWdRRWdBVFlDQUF0QkFDRUFRWXlGQVNBR05nSUFRWWlGQVNBQk5nSUFRZWlCQVVGL05nSUFRZXlCQVVHZ2hRRW9BZ0EyQWdCQmxJVUJRUUEyQWdBRFFDQUFRUU4wSWdOQitJRUJhaUFEUWZDQkFXb2lBallDQUNBRFFmeUJBV29nQWpZQ0FDQUFRUUZxSWdCQklFY05BQXRCMUlFQklBWkJLR3NpQTBGNElBRnJRUWR4UVFBZ0FVRUlha0VIY1JzaUFHc2lBallDQUVIZ2dRRWdBQ0FCYWlJQU5nSUFJQUFnQWtFQmNqWUNCQ0FCSUFOcVFTZzJBZ1JCNUlFQlFiQ0ZBU2dDQURZQ0FBd0NDeUFBTFFBTVFRaHhJQU1nQlV0eUlBRWdCVTF5RFFBZ0FDQUNJQVpxTmdJRVFlQ0JBU0FGUVhnZ0JXdEJCM0ZCQUNBRlFRaHFRUWR4R3lJQWFpSUNOZ0lBUWRTQkFVSFVnUUVvQWdBZ0Jtb2lBU0FBYXlJQU5nSUFJQUlnQUVFQmNqWUNCQ0FCSUFWcVFTZzJBZ1JCNUlFQlFiQ0ZBU2dDQURZQ0FBd0JDMEhZZ1FFb0FnQWdBVXNFUUVIWWdRRWdBVFlDQUFzZ0FTQUdhaUVDUVlpRkFTRUFBa0FDUUFKQUFrQUNRQUpBQTBBZ0FpQUFLQUlBUndSQUlBQW9BZ2dpQUEwQkRBSUxDeUFBTFFBTVFRaHhSUTBCQzBHSWhRRWhBQU5BSUFVZ0FDZ0NBQ0lDVHdSQUlBSWdBQ2dDQkdvaUJDQUZTdzBEQ3lBQUtBSUlJUUFNQUFzQUN5QUFJQUUyQWdBZ0FDQUFLQUlFSUFacU5nSUVJQUZCZUNBQmEwRUhjVUVBSUFGQkNHcEJCM0ViYWlJSklBZEJBM0kyQWdRZ0FrRjRJQUpyUVFkeFFRQWdBa0VJYWtFSGNSdHFJZ1lnQnlBSmFpSUlheUVDSUFVZ0JrWUVRRUhnZ1FFZ0NEWUNBRUhVZ1FGQjFJRUJLQUlBSUFKcUlnQTJBZ0FnQ0NBQVFRRnlOZ0lFREFNTElBWkIzSUVCS0FJQVJnUkFRZHlCQVNBSU5nSUFRZENCQVVIUWdRRW9BZ0FnQW1vaUFEWUNBQ0FJSUFCQkFYSTJBZ1FnQUNBSWFpQUFOZ0lBREFNTElBWW9BZ1FpQUVFRGNVRUJSZ1JBSUFCQmVIRWhCUUpBSUFCQi93Rk5CRUFnQmlnQ0NDSURJQUJCQTNZaUFFRURkRUh3Z1FGcVJob2dBeUFHS0FJTUlnRkdCRUJCeUlFQlFjaUJBU2dDQUVGK0lBQjNjVFlDQUF3Q0N5QURJQUUyQWd3Z0FTQUROZ0lJREFFTElBWW9BaGdoQndKQUlBWWdCaWdDRENJQlJ3UkFJQVlvQWdnaUFDQUJOZ0lNSUFFZ0FEWUNDQXdCQ3dKQUlBWkJGR29pQUNnQ0FDSUREUUFnQmtFUWFpSUFLQUlBSWdNTkFFRUFJUUVNQVFzRFFDQUFJUVFnQXlJQlFSUnFJZ0FvQWdBaUF3MEFJQUZCRUdvaEFDQUJLQUlRSWdNTkFBc2dCRUVBTmdJQUN5QUhSUTBBQWtBZ0JpQUdLQUljSWdOQkFuUkIrSU1CYWlJQUtBSUFSZ1JBSUFBZ0FUWUNBQ0FCRFFGQnpJRUJRY3lCQVNnQ0FFRitJQU4zY1RZQ0FBd0NDeUFIUVJCQkZDQUhLQUlRSUFaR0cyb2dBVFlDQUNBQlJRMEJDeUFCSUFjMkFoZ2dCaWdDRUNJQUJFQWdBU0FBTmdJUUlBQWdBVFlDR0FzZ0JpZ0NGQ0lBUlEwQUlBRWdBRFlDRkNBQUlBRTJBaGdMSUFVZ0Jtb2hCaUFDSUFWcUlRSUxJQVlnQmlnQ0JFRitjVFlDQkNBSUlBSkJBWEkyQWdRZ0FpQUlhaUFDTmdJQUlBSkIvd0ZOQkVBZ0FrRURkaUlBUVFOMFFmQ0JBV29oQWdKL1FjaUJBU2dDQUNJQlFRRWdBSFFpQUhGRkJFQkJ5SUVCSUFBZ0FYSTJBZ0FnQWd3QkN5QUNLQUlJQ3lFQUlBSWdDRFlDQ0NBQUlBZzJBZ3dnQ0NBQ05nSU1JQWdnQURZQ0NBd0RDMEVmSVFBZ0FrSC8vLzhIVFFSQUlBSkJDSFlpQUNBQVFZRCtQMnBCRUhaQkNIRWlBM1FpQUNBQVFZRGdIMnBCRUhaQkJIRWlBWFFpQUNBQVFZQ0FEMnBCRUhaQkFuRWlBSFJCRDNZZ0FTQURjaUFBY21zaUFFRUJkQ0FDSUFCQkZXcDJRUUZ4Y2tFY2FpRUFDeUFJSUFBMkFod2dDRUlBTndJUUlBQkJBblJCK0lNQmFpRUVBa0JCeklFQktBSUFJZ05CQVNBQWRDSUJjVVVFUUVITWdRRWdBU0FEY2pZQ0FDQUVJQWcyQWdBZ0NDQUVOZ0lZREFFTElBSkJBRUVaSUFCQkFYWnJJQUJCSDBZYmRDRUFJQVFvQWdBaEFRTkFJQUVpQXlnQ0JFRjRjU0FDUmcwRElBQkJIWFloQVNBQVFRRjBJUUFnQXlBQlFRUnhhaUlFS0FJUUlnRU5BQXNnQkNBSU5nSVFJQWdnQXpZQ0dBc2dDQ0FJTmdJTUlBZ2dDRFlDQ0F3Q0MwSFVnUUVnQmtFb2F5SURRWGdnQVd0QkIzRkJBQ0FCUVFocVFRZHhHeUlBYXlJQ05nSUFRZUNCQVNBQUlBRnFJZ0EyQWdBZ0FDQUNRUUZ5TmdJRUlBRWdBMnBCS0RZQ0JFSGtnUUZCc0lVQktBSUFOZ0lBSUFVZ0JFRW5JQVJyUVFkeFFRQWdCRUVuYTBFSGNSdHFRUzlySWdBZ0FDQUZRUkJxU1JzaUFrRWJOZ0lFSUFKQmtJVUJLUUlBTndJUUlBSkJpSVVCS1FJQU53SUlRWkNGQVNBQ1FRaHFOZ0lBUVl5RkFTQUdOZ0lBUVlpRkFTQUJOZ0lBUVpTRkFVRUFOZ0lBSUFKQkdHb2hBQU5BSUFCQkJ6WUNCQ0FBUVFocUlRRWdBRUVFYWlFQUlBRWdCRWtOQUFzZ0FpQUZSZzBESUFJZ0FpZ0NCRUYrY1RZQ0JDQUZJQUlnQldzaUJFRUJjallDQkNBQ0lBUTJBZ0FnQkVIL0FVMEVRQ0FFUVFOMklnQkJBM1JCOElFQmFpRUNBbjlCeUlFQktBSUFJZ0ZCQVNBQWRDSUFjVVVFUUVISWdRRWdBQ0FCY2pZQ0FDQUNEQUVMSUFJb0FnZ0xJUUFnQWlBRk5nSUlJQUFnQlRZQ0RDQUZJQUkyQWd3Z0JTQUFOZ0lJREFRTFFSOGhBQ0FGUWdBM0FoQWdCRUgvLy84SFRRUkFJQVJCQ0hZaUFDQUFRWUQrUDJwQkVIWkJDSEVpQW5RaUFDQUFRWURnSDJwQkVIWkJCSEVpQVhRaUFDQUFRWUNBRDJwQkVIWkJBbkVpQUhSQkQzWWdBU0FDY2lBQWNtc2lBRUVCZENBRUlBQkJGV3AyUVFGeGNrRWNhaUVBQ3lBRklBQTJBaHdnQUVFQ2RFSDRnd0ZxSVFNQ1FFSE1nUUVvQWdBaUFrRUJJQUIwSWdGeFJRUkFRY3lCQVNBQklBSnlOZ0lBSUFNZ0JUWUNBQ0FGSUFNMkFoZ01BUXNnQkVFQVFSa2dBRUVCZG1zZ0FFRWZSaHQwSVFBZ0F5Z0NBQ0VCQTBBZ0FTSUNLQUlFUVhoeElBUkdEUVFnQUVFZGRpRUJJQUJCQVhRaEFDQUNJQUZCQkhGcUlnTW9BaEFpQVEwQUN5QURJQVUyQWhBZ0JTQUNOZ0lZQ3lBRklBVTJBZ3dnQlNBRk5nSUlEQU1MSUFNb0FnZ2lBQ0FJTmdJTUlBTWdDRFlDQ0NBSVFRQTJBaGdnQ0NBRE5nSU1JQWdnQURZQ0NBc2dDVUVJYWlFQURBVUxJQUlvQWdnaUFDQUZOZ0lNSUFJZ0JUWUNDQ0FGUVFBMkFoZ2dCU0FDTmdJTUlBVWdBRFlDQ0F0QjFJRUJLQUlBSWdBZ0IwME5BRUhVZ1FFZ0FDQUhheUlCTmdJQVFlQ0JBVUhnZ1FFb0FnQWlBaUFIYWlJQU5nSUFJQUFnQVVFQmNqWUNCQ0FDSUFkQkEzSTJBZ1FnQWtFSWFpRUFEQU1MUWNTQkFVRXdOZ0lBUVFBaEFBd0NDd0pBSUFaRkRRQUNRQ0FFS0FJY0lnSkJBblJCK0lNQmFpSUFLQUlBSUFSR0JFQWdBQ0FCTmdJQUlBRU5BVUhNZ1FFZ0NVRitJQUozY1NJSk5nSUFEQUlMSUFaQkVFRVVJQVlvQWhBZ0JFWWJhaUFCTmdJQUlBRkZEUUVMSUFFZ0JqWUNHQ0FFS0FJUUlnQUVRQ0FCSUFBMkFoQWdBQ0FCTmdJWUN5QUVLQUlVSWdCRkRRQWdBU0FBTmdJVUlBQWdBVFlDR0FzQ1FDQURRUTlOQkVBZ0JDQURJQWRxSWdCQkEzSTJBZ1FnQUNBRWFpSUFJQUFvQWdSQkFYSTJBZ1FNQVFzZ0JDQUhRUU55TmdJRUlBUWdCMm9pQlNBRFFRRnlOZ0lFSUFNZ0JXb2dBellDQUNBRFFmOEJUUVJBSUFOQkEzWWlBRUVEZEVId2dRRnFJUUlDZjBISWdRRW9BZ0FpQVVFQklBQjBJZ0J4UlFSQVFjaUJBU0FBSUFGeU5nSUFJQUlNQVFzZ0FpZ0NDQXNoQUNBQ0lBVTJBZ2dnQUNBRk5nSU1JQVVnQWpZQ0RDQUZJQUEyQWdnTUFRdEJIeUVBSUFOQi8vLy9CMDBFUUNBRFFRaDJJZ0FnQUVHQS9qOXFRUkIyUVFoeElnSjBJZ0FnQUVHQTRCOXFRUkIyUVFSeElnRjBJZ0FnQUVHQWdBOXFRUkIyUVFKeElnQjBRUTkySUFFZ0FuSWdBSEpySWdCQkFYUWdBeUFBUVJWcWRrRUJjWEpCSEdvaEFBc2dCU0FBTmdJY0lBVkNBRGNDRUNBQVFRSjBRZmlEQVdvaEFRSkFBa0FnQ1VFQklBQjBJZ0p4UlFSQVFjeUJBU0FDSUFseU5nSUFJQUVnQlRZQ0FBd0JDeUFEUVFCQkdTQUFRUUYyYXlBQVFSOUdHM1FoQUNBQktBSUFJUWNEUUNBSElnRW9BZ1JCZUhFZ0EwWU5BaUFBUVIxMklRSWdBRUVCZENFQUlBRWdBa0VFY1dvaUFpZ0NFQ0lIRFFBTElBSWdCVFlDRUFzZ0JTQUJOZ0lZSUFVZ0JUWUNEQ0FGSUFVMkFnZ01BUXNnQVNnQ0NDSUFJQVUyQWd3Z0FTQUZOZ0lJSUFWQkFEWUNHQ0FGSUFFMkFnd2dCU0FBTmdJSUN5QUVRUWhxSVFBTUFRc0NRQ0FJUlEwQUFrQWdBU2dDSENJQ1FRSjBRZmlEQVdvaUFDZ0NBQ0FCUmdSQUlBQWdCRFlDQUNBRURRRkJ6SUVCSUFsQmZpQUNkM0UyQWdBTUFnc2dDRUVRUVJRZ0NDZ0NFQ0FCUmh0cUlBUTJBZ0FnQkVVTkFRc2dCQ0FJTmdJWUlBRW9BaEFpQUFSQUlBUWdBRFlDRUNBQUlBUTJBaGdMSUFFb0FoUWlBRVVOQUNBRUlBQTJBaFFnQUNBRU5nSVlDd0pBSUFOQkQwMEVRQ0FCSUFNZ0Iyb2lBRUVEY2pZQ0JDQUFJQUZxSWdBZ0FDZ0NCRUVCY2pZQ0JBd0JDeUFCSUFkQkEzSTJBZ1FnQVNBSGFpSUNJQU5CQVhJMkFnUWdBaUFEYWlBRE5nSUFJQW9FUUNBS1FRTjJJZ0JCQTNSQjhJRUJhaUVGUWR5QkFTZ0NBQ0VFQW45QkFTQUFkQ0lBSUFaeFJRUkFRY2lCQVNBQUlBWnlOZ0lBSUFVTUFRc2dCU2dDQ0FzaEFDQUZJQVEyQWdnZ0FDQUVOZ0lNSUFRZ0JUWUNEQ0FFSUFBMkFnZ0xRZHlCQVNBQ05nSUFRZENCQVNBRE5nSUFDeUFCUVFocUlRQUxJQXRCRUdva0FDQUFDNmNCQVFSL0l3QkJJR3NpQVNRQUlBRkJBRFlDRENBQlFUYzJBZ2dnQVNBQktRTUlOd01BSUFGQkVHb2lBeUFCS1FJQU53SUVJQU1nQURZQ0FDTUFRUkJySWdJa0FDQUFLQUlBUVg5SEJFQWdBa0VJYWlJRUlBTVFlaG9nQWlBRUVIb2FBMEFnQUNnQ0FFRUJSZzBBQ3lBQUtBSUFSUVJBSUFCQkFUWUNBQ0FDUVRnUkFRQWdBRUYvTmdJQUN3c2dBa0VRYWlRQUlBQW9BZ1FoQUNBQlFTQnFKQUFnQUVFQmF3c2JBQ0FBUVFBMkFnUWdBRUhJL0FBMkFnQWdBRUdJMWdBMkFnQUxtQVlCQ1g4akFFRVFheUlJSkFBZ0FCRE5BU01BUVJCcklnSWtBQ0FDSUFBMkFnd2dDRUVJYWlJRklBSkJER29RTXlBQ1FSQnFKQUJCb0pVQkVGQWdBVTBFUUFKQVFhQ1ZBUkJRSWdJZ0FVRUJhaUlBU1FSQUl3QkJJR3NpQ1NRQUFrQWdBQ0FDYXlJR1FhQ1ZBUkJES0FJQVFhU1ZBU2dDQUd0QkFuVk5CRUFnQmhDV0Fnd0JDMEdnbFFFUWRDRUhJQWxCQ0dvaEFnSi9RYUNWQVJCUUlBWnFJUVFqQUVFUWF5SUFKQUFnQUNBRU5nSU1JQVFRZ0FJaUEwMEVRRUdnbFFFUWN5SUVJQU5CQVhaSkJFQWdBQ0FFUVFGME5nSUlJQUJCQ0dvZ0FFRU1haEIyS0FJQUlRTUxJQUJCRUdva0FDQUREQUVMRUJjQUN5RUFRYUNWQVJCUUlRcEJBQ0VESXdCQkVHc2lCQ1FBSUFSQkFEWUNEQ0FDUVF4cUlBUkJER29nQnhDTEFpQUFCRUFnQWlnQ0VDQUFFUDhCSVFNTElBSWdBellDQUNBQ0lBTWdDa0VDZEdvaUJ6WUNDQ0FDSUFjMkFnUWdBaENFQVNBRElBQkJBblJxTmdJQUlBUkJFR29rQUNNQVFSQnJJZ0FrQUNBQUlBSW9BZ2cyQWdBZ0FpZ0NDQ0VESUFBZ0FrRUlhallDQ0NBQUlBTWdCa0VDZEdvMkFnUWdBQ2dDQUNFREEwQWdBQ2dDQkNBRFJ3UkFJQUlvQWhBZ0FDZ0NBQkQ5QVNBQUlBQW9BZ0JCQkdvaUF6WUNBQXdCQ3dzZ0FDZ0NDQ0FBS0FJQU5nSUFJQUJCRUdva0FFR2dsUUVRa0FKQm9KVUJFSFJCb0pVQktBSUFRYVNWQVNnQ0FDQUNRUVJxSWdBUWhnSkJvSlVCSUFBUWRVR2tsUUVnQWtFSWFoQjFRYUNWQVJCRElBSVFoQUVRZFNBQ0lBSW9BZ1EyQWdCQm9KVUJFRkFRL2dFZ0FpZ0NCQ0VBQTBBZ0FDQUNLQUlJUndSQUlBSW9BaEFhSUFJZ0FpZ0NDRUVFYXpZQ0NBd0JDd3NnQWlnQ0FBUkFJQUlvQWhBZ0FpZ0NBQ0FDRUlRQktBSUFJQUlvQWdCclFRSjFFUHNCQ3dzZ0NVRWdhaVFBREFFTElBQWdBa2tFUUVHZ2xRRW9BZ0FnQUVFQ2RHb2hBRUdnbFFFUVVDRUNRYUNWQVNBQUVQb0JRYUNWQVNBQ0VKUUNDd3NMUWFDVkFTQUJFSGNvQWdBRVFFR2dsUUVnQVJCM0tBSUFFS01CQ3lBRkVLY0JJUUJCb0pVQklBRVFkeUFBTmdJQUlBVW9BZ0FoQUNBRlFRQTJBZ0FnQUFSQUlBQVFvd0VMSUFoQkVHb2tBQXNJQUNBQVFRQVFKd3N2QVFGL0l3QkJFR3NpQXlRQUlBTWdBVFlDRENBQUlBTkJER29RTXlBQVFRUnFJQUlRTXlBRFFSQnFKQUFnQUFzUUFDQUFLQUlBRVB3Q1FSaDBRUmgxQ3dZQUlBQVFFQXNLQUNBQUtBSUFFUGNDQ3cwQUlBQW9BZ0FRK3dJYUlBQUxTd0VDZnlNQVFSQnJJZ0VrQUNBQklBQVE4UUVoQUNNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFvQWdRUWVpZ0NBRUVCT2dBQUlBQW9BZ2hCQVRvQUFDQUNRUkJxSkFBZ0FVRVFhaVFBQzNjQkEzOGpBRUVRYXlJQ0pBQWdBaUFBRVBFQklRQWpBRUVRYXlJREpBQWdBMEVJYWlBQUtBSUVFSG9vQWdBdEFBQkZCRUFDZndKQUlBQW9BZ2dpQUMwQUFDSUJRUUZIQkg4Z0FVRUNjUTBCSUFCQkFqb0FBRUVCQlVFQUN3d0JDeEFYQUFzaEFRc2dBMEVRYWlRQUlBSkJFR29rQUNBQkN3MEFJQUFvQWdBUTlnSWFJQUFMQ1FBZ0FDQUJFUDBDQ3lRQkFYOGdBQ2dDQUNFQ0lBQWdBVFlDQUNBQ0JFQWdBaUFBRUpVQktBSUFFUUVBQ3dzSkFDQUFJQUVRK0FJTEVRQWdBQ0FCSUFBb0FnQW9BaHdSQWdBTHZ3RUJBMzhnQUMwQUFFRWdjVVVFUUFKQUlBRWhBd0pBSUFJZ0FDSUJLQUlRSWdBRWZ5QUFCU0FCRU9nQkRRRWdBU2dDRUFzZ0FTZ0NGQ0lGYTBzRVFDQUJJQU1nQWlBQktBSWtFUVFBR2d3Q0N3SkFJQUVvQWxCQkFFZ05BQ0FDSVFBRFFDQUFJZ1JGRFFFZ0F5QUVRUUZySWdCcUxRQUFRUXBIRFFBTElBRWdBeUFFSUFFb0FpUVJCQUFnQkVrTkFTQURJQVJxSVFNZ0FpQUVheUVDSUFFb0FoUWhCUXNnQlNBRElBSVFRaG9nQVNBQktBSVVJQUpxTmdJVUN3c0xDM1VCQVg0Z0FDQUJJQVIrSUFJZ0EzNThJQU5DSUlnaUFpQUJRaUNJSWdSK2ZDQURRdi8vLy84UGd5SURJQUZDLy8vLy93K0RJZ0YrSWdWQ0lJZ2dBeUFFZm53aUEwSWdpSHdnQVNBQ2ZpQURRdi8vLy84UGczd2lBVUlnaUh3M0F3Z2dBQ0FGUXYvLy8vOFBneUFCUWlDR2hEY0RBQXREQVFGL0l3QkJFR3NpQlNRQUlBVWdBallDRENBRklBUTJBZ2dnQlNBRlFReHFFRkloQWlBQUlBRWdBeUFGS0FJSUVMVUJJUUFnQWhCUklBVkJFR29rQUNBQUM2RUJBUUovQWtBZ0FCQUpSU0FDSUFGclFRVkljZzBBSUFFZ0FoQ3NBU0FDUVFScklRUWdBQkFOSWdJZ0FCQUphaUVGQWtBRFFBSkFJQUlzQUFBaEFDQUJJQVJQRFFBZ0FFRUFUQ0FBUWY4QVRuSkZCRUFnQVNnQ0FDQUNMQUFBUncwREN5QUJRUVJxSVFFZ0FpQUZJQUpyUVFGS2FpRUNEQUVMQ3lBQVFRQk1JQUJCL3dCT2NnMEJJQUlzQUFBZ0JDZ0NBRUVCYTBzTkFRc2dBMEVFTmdJQUN3dHRBUUYvSXdCQmdBSnJJZ1VrQUNBRVFZREFCSEVnQWlBRFRISkZCRUFnQlNBQlFmOEJjU0FDSUFOcklnSkJnQUlnQWtHQUFra2lBUnNRUmhvZ0FVVUVRQU5BSUFBZ0JVR0FBaEFxSUFKQmdBSnJJZ0pCL3dGTERRQUxDeUFBSUFVZ0FoQXFDeUFGUVlBQ2FpUUFDMUFCQVg0Q1FDQURRY0FBY1FSQUlBRWdBMEZBYXEyR0lRSkNBQ0VCREFFTElBTkZEUUFnQWlBRHJTSUVoaUFCUWNBQUlBTnJyWWlFSVFJZ0FTQUVoaUVCQ3lBQUlBRTNBd0FnQUNBQ053TUlDMVVCQW44akFFRVFheUlDSkFBZ0FCQTFCRUFnQUNnQ0FDRURJQUFRZlJvZ0F4QVFDeUFBSUFFb0FnZzJBZ2dnQUNBQktRSUFOd0lBSUFGQkFCQTZJQUpCQURvQUR5QUJJQUpCRDJvUU5DQUNRUkJxSkFBTERBQWdBQ0FCRVAwQ1FRRnpDd29BSUFCQjlJZ0JFR1VMREFBZ0FDQUJLQUlBTmdJQUN3d0FJQUFnQVMwQUFEb0FBQXNLQUNBQUxRQUxRUWQyQ3d3QUlBQWdBUkQ0QWtFQmN3c1JBQ0FBSUFFZ0FTZ0NBQ2dDRkJFREFBc1BBQ0FBSUFBb0FnQW9BaEFSQUFBTENRQWdBQ0FCTmdJRUN3a0FJQUFnQVRvQUN3c0tBQ0FBUWV5SUFSQmxDOUVKQWdSL0JINGpBRUh3QUdzaUJTUUFJQVJDLy8vLy8vLy8vLy8vQUlNaENnSkFBa0FnQVVJQmZTSUxRbjlSSUFKQy8vLy8vLy8vLy8vL0FJTWlDU0FCSUF0V3JYeENBWDBpQzBMLy8vLy8vLysvLy84QVZpQUxRdi8vLy8vLy83Ly8vd0JSRzBVRVFDQURRZ0Y5SWd0Q2YxSWdDaUFESUF0V3JYeENBWDBpQzBMLy8vLy8vLysvLy84QVZDQUxRdi8vLy8vLy83Ly8vd0JSR3cwQkN5QUJVQ0FKUW9DQWdJQ0FnTUQvL3dCVUlBbENnSUNBZ0lDQXdQLy9BRkViUlFSQUlBSkNnSUNBZ0lDQUlJUWhCQ0FCSVFNTUFnc2dBMUFnQ2tLQWdJQ0FnSURBLy84QVZDQUtRb0NBZ0lDQWdNRC8vd0JSRzBVRVFDQUVRb0NBZ0lDQWdDQ0VJUVFNQWdzZ0FTQUpRb0NBZ0lDQWdNRC8vd0NGaEZBRVFFS0FnSUNBZ0lEZy8vOEFJQUlnQVNBRGhTQUNJQVNGUW9DQWdJQ0FnSUNBZ0grRmhGQWlCaHNoQkVJQUlBRWdCaHNoQXd3Q0N5QURJQXBDZ0lDQWdJQ0F3UC8vQUlXRVVBMEJJQUVnQ1lSUUJFQWdBeUFLaEVJQVVnMENJQUVnQTRNaEF5QUNJQVNESVFRTUFnc2dBeUFLaEZCRkRRQWdBU0VESUFJaEJBd0JDeUFESUFFZ0FTQURWQ0FKSUFwVUlBa2dDbEViSWdjYklRb2dCQ0FDSUFjYklndEMvLy8vLy8vL1A0TWhDU0FDSUFRZ0J4c2lBa0l3aUtkQi8vOEJjU0VJSUF0Q01JaW5RZi8vQVhFaUJrVUVRQ0FGUWVBQWFpQUtJQWtnQ2lBSklBbFFJZ1liZVNBR1FRWjByWHluSWdaQkQyc1FMeUFGS1FOb0lRa2dCU2tEWUNFS1FSQWdCbXNoQmdzZ0FTQURJQWNiSVFNZ0FrTC8vLy8vLy84L2d5RUVJQWhGQkVBZ0JVSFFBR29nQXlBRUlBTWdCQ0FFVUNJSEcza2dCMEVHZEsxOHB5SUhRUTlyRUM5QkVDQUhheUVJSUFVcEExZ2hCQ0FGS1FOUUlRTUxJQVJDQTRZZ0EwSTlpSVJDZ0lDQWdJQ0FnQVNFSVFRZ0NVSURoaUFLUWoySWhDRUpJQUlnQzRVaERBSitJQU5DQTRZaUFTQUdJQWhySWdkRkRRQWFJQWRCL3dCTEJFQkNBQ0VFUWdFTUFRc2dCVUZBYXlBQklBUkJnQUVnQjJzUUx5QUZRVEJxSUFFZ0JDQUhFSHdnQlNrRE9DRUVJQVVwQXpBZ0JTa0RRQ0FGS1FOSWhFSUFVcTJFQ3lFQ0lBbENnSUNBZ0lDQWdBU0VJUWtnQ2tJRGhpRURBa0FnREVJQVV3UkFJQU1nQW4waUFTQUpJQVI5SUFJZ0ExYXRmU0lFaEZBRVFFSUFJUU5DQUNFRURBTUxJQVJDLy8vLy8vLy8vd05XRFFFZ0JVRWdhaUFCSUFRZ0FTQUVJQVJRSWdjYmVTQUhRUVowclh5blFReHJJZ2NRTHlBR0lBZHJJUVlnQlNrREtDRUVJQVVwQXlBaEFRd0JDeUFDSUFOOElnRWdBbFN0SUFRZ0NYeDhJZ1JDZ0lDQWdJQ0FnQWlEVUEwQUlBRkNBWU1nQkVJL2hpQUJRZ0dJaElRaEFTQUdRUUZxSVFZZ0JFSUJpQ0VFQ3lBTFFvQ0FnSUNBZ0lDQWdIK0RJUUlnQmtILy93Rk9CRUFnQWtLQWdJQ0FnSURBLy84QWhDRUVRZ0FoQXd3QkMwRUFJUWNDUUNBR1FRQktCRUFnQmlFSERBRUxJQVZCRUdvZ0FTQUVJQVpCL3dCcUVDOGdCU0FCSUFSQkFTQUdheEI4SUFVcEF3QWdCU2tERUNBRktRTVloRUlBVXEyRUlRRWdCU2tEQ0NFRUN5QUJwMEVIY1NJR1FRUkxyU0FFUWoyR0lBRkNBNGlFSWdGOElnTWdBVlN0SUFSQ0E0aEMvLy8vLy8vL1A0TWdCNjFDTUlhRUlBS0VmQ0VFQWtBZ0JrRUVSZ1JBSUFRZ0EwSUJneUlCSUFOOElnTWdBVlN0ZkNFRURBRUxJQVpGRFFFTEN5QUFJQU0zQXdBZ0FDQUVOd01JSUFWQjhBQnFKQUFMRVFBZ0FDQUJJQUFvQWdBb0Fpd1JBZ0FMTFFBZ0FrVUVRQ0FBS0FJRUlBRW9BZ1JHRHdzZ0FDQUJSZ1JBUVFFUEN5QUFLQUlFSUFFb0FnUVF0Z0ZGQzJNQUlBSW9BZ1JCc0FGeElnSkJJRVlFUUNBQkR3c0NRQ0FDUVJCSERRQUNRQUpBSUFBdEFBQWlBa0VyYXc0REFBRUFBUXNnQUVFQmFnOExJQUpCTUVjZ0FTQUFhMEVDU0hJTkFDQUFMUUFCUVNCeVFmZ0FSdzBBSUFCQkFtb2hBQXNnQUFzbUFRRi9Jd0JCRUdzaUFTUUFJQUZCQ0dvZ0FCQU5FSG9vQWdBaEFDQUJRUkJxSkFBZ0FBdCtBZ0ovQVg0akFFRVFheUlESkFBZ0FBSitJQUZGQkVCQ0FBd0JDeUFESUFFZ0FVRWZkU0lDYWlBQ2N5SUNyVUlBSUFKbklnSkIwUUJxRUM4Z0F5a0RDRUtBZ0lDQWdJREFBSVZCbm9BQklBSnJyVUl3aG53Z0FVR0FnSUNBZUhHdFFpQ0doQ0VFSUFNcEF3QUxOd01BSUFBZ0JEY0RDQ0FEUVJCcUpBQUxnd1FCQTM4Z0FrR0FCRThFUUNBQUlBRWdBaEFGR2lBQUR3c2dBQ0FDYWlFREFrQWdBQ0FCYzBFRGNVVUVRQUpBSUFCQkEzRkZCRUFnQUNFQ0RBRUxJQUpCQUV3RVFDQUFJUUlNQVFzZ0FDRUNBMEFnQWlBQkxRQUFPZ0FBSUFGQkFXb2hBU0FDUVFGcUlnSkJBM0ZGRFFFZ0FpQURTUTBBQ3dzQ1FDQURRWHh4SWdSQndBQkpEUUFnQWlBRVFVQnFJZ1ZMRFFBRFFDQUNJQUVvQWdBMkFnQWdBaUFCS0FJRU5nSUVJQUlnQVNnQ0NEWUNDQ0FDSUFFb0FndzJBZ3dnQWlBQktBSVFOZ0lRSUFJZ0FTZ0NGRFlDRkNBQ0lBRW9BaGcyQWhnZ0FpQUJLQUljTmdJY0lBSWdBU2dDSURZQ0lDQUNJQUVvQWlRMkFpUWdBaUFCS0FJb05nSW9JQUlnQVNnQ0xEWUNMQ0FDSUFFb0FqQTJBakFnQWlBQktBSTBOZ0kwSUFJZ0FTZ0NPRFlDT0NBQ0lBRW9BancyQWp3Z0FVRkFheUVCSUFKQlFHc2lBaUFGVFEwQUN3c2dBaUFFVHcwQkEwQWdBaUFCS0FJQU5nSUFJQUZCQkdvaEFTQUNRUVJxSWdJZ0JFa05BQXNNQVFzZ0EwRUVTUVJBSUFBaEFnd0JDeUFBSUFOQkJHc2lCRXNFUUNBQUlRSU1BUXNnQUNFQ0EwQWdBaUFCTFFBQU9nQUFJQUlnQVMwQUFUb0FBU0FDSUFFdEFBSTZBQUlnQWlBQkxRQURPZ0FESUFGQkJHb2hBU0FDUVFScUlnSWdCRTBOQUFzTElBSWdBMGtFUUFOQUlBSWdBUzBBQURvQUFDQUJRUUZxSVFFZ0FrRUJhaUlDSUFOSERRQUxDeUFBQ3djQUlBQkJDR29MSndFQmZ5QUNRUUJPQkg4Z0FDZ0NDQ0FDUWY4QmNVRUJkR292QVFBZ0FYRkJBRWNGSUFNTEN3b0FJQUJCTUd0QkNra0w4Z0lDQW44QmZnSkFJQUpGRFFBZ0FDQUJPZ0FBSUFBZ0Ftb2lBMEVCYXlBQk9nQUFJQUpCQTBrTkFDQUFJQUU2QUFJZ0FDQUJPZ0FCSUFOQkEyc2dBVG9BQUNBRFFRSnJJQUU2QUFBZ0FrRUhTUTBBSUFBZ0FUb0FBeUFEUVFScklBRTZBQUFnQWtFSlNRMEFJQUJCQUNBQWEwRURjU0lFYWlJRElBRkIvd0Z4UVlHQ2hBaHNJZ0UyQWdBZ0F5QUNJQVJyUVh4eElnUnFJZ0pCQkdzZ0FUWUNBQ0FFUVFsSkRRQWdBeUFCTmdJSUlBTWdBVFlDQkNBQ1FRaHJJQUUyQWdBZ0FrRU1heUFCTmdJQUlBUkJHVWtOQUNBRElBRTJBaGdnQXlBQk5nSVVJQU1nQVRZQ0VDQURJQUUyQWd3Z0FrRVFheUFCTmdJQUlBSkJGR3NnQVRZQ0FDQUNRUmhySUFFMkFnQWdBa0VjYXlBQk5nSUFJQVFnQTBFRWNVRVljaUlFYXlJQ1FTQkpEUUFnQWExQ2dZQ0FnQkIrSVFVZ0F5QUVhaUVCQTBBZ0FTQUZOd01ZSUFFZ0JUY0RFQ0FCSUFVM0F3Z2dBU0FGTndNQUlBRkJJR29oQVNBQ1FTQnJJZ0pCSDBzTkFBc0xJQUFMTndFQ2Z5TUFRUkJySWdJa0FBTkFJQUZCQTBjRVFDQUFJQUZCQW5ScVFRQTJBZ0FnQVVFQmFpRUJEQUVMQ3lBQ1FSQnFKQUFnQUFzUEFDQUFJQUFvQWdBb0Fnd1JBQUFMQndBZ0FCQUpSUXNSQUNBQUlBRWdBU2dDQUNnQ0hCRURBQXNSQUNBQUlBRWdBU2dDQUNnQ0dCRURBQXNRQUNBQUlBRkJnSUNBZ0hoeU5nSUlDd2tBSUFBZ0FUWUNBQXNUQUNBQUlBRWdBaUFBS0FJQUtBSU1FUVFBQ3dRQVFRQUxFQUFnQUNnQ0JDQUFLQUlBYTBFQ2RRc1NBQ0FBS0FJQUlnQUVRQ0FBRU5BQ0dnc0xFUUFnQUNBQktBSUFFTkFDTmdJQUlBQUxRUUVCZnlBQUlBRTNBM0FnQUNBQUtBSXNJQUFvQWdRaUFtdXNOd040SUFBZ0FWQWdBQ2dDQ0NJQUlBSnJyQ0FCVjNJRWZ5QUFCU0FDSUFHbmFnczJBbWdMSWdFQmZ5TUFRUkJySWdJa0FDQUFJQUVnQVJDZUFSRDFBU0FDUVJCcUpBQWdBQXNRQUNBQ0JFQWdBQ0FCSUFJUVFob0xDNTBCQVFSL0l3QkJFR3NpQnlRQUFrQWdBRVVOQUNBRUtBSU1JUVlnQWlBQmF5SUlRUUJLQkVBZ0FDQUJJQWdRZnlBSVJ3MEJDeUFHSUFNZ0FXc2lBV3RCQUNBQklBWklHeUlCUVFCS0JFQWdBQ0FISUFFZ0JSRHZBU0lGRUEwZ0FSQi9JUVlnQlJBS0dpQUJJQVpIRFFFTElBTWdBbXNpQVVFQVNnUkFJQUFnQWlBQkVIOGdBVWNOQVFzZ0JCRHVBU0FBSVFrTElBZEJFR29rQUNBSkMxVUJBbjhqQUVFUWF5SUNKQUFnQUJBMUJFQWdBQ2dDQUNFRElBQVFmUm9nQXhBUUN5QUFJQUVvQWdnMkFnZ2dBQ0FCS1FJQU53SUFJQUZCQUJBNklBSkJBRFlDRENBQklBSkJER29RTXlBQ1FSQnFKQUFMdkFFQkEzOGpBRUVRYXlJRkpBQWdCU0FCTmdJSVFRQWhBVUVHSVFZQ1FBSkFJQUFnQlVFSWFoQW9EUUJCQkNFR0lBTkJnQkFnQUJBaElnY1FUa1VOQUNBRElBY1Fod0VoQVFOQUFrQWdBQkFsR2lBQlFUQnJJUUVnQUNBRlFRaHFFRFpGSUFSQkFraHlEUUFnQTBHQUVDQUFFQ0VpQmhCT1JRMERJQVJCQVdzaEJDQURJQVlRaHdFZ0FVRUtiR29oQVF3QkN3dEJBaUVHSUFBZ0JVRUlhaEFvUlEwQkN5QUNJQUlvQWdBZ0JuSTJBZ0FMSUFWQkVHb2tBQ0FCQzd3QkFRTi9Jd0JCRUdzaUJTUUFJQVVnQVRZQ0NFRUFJUUZCQmlFR0FrQUNRQ0FBSUFWQkNHb1FKZzBBUVFRaEJpQURRWUFRSUFBUUh5SUhFRVJGRFFBZ0F5QUhFSWdCSVFFRFFBSkFJQUFRSWhvZ0FVRXdheUVCSUFBZ0JVRUlhaEF4UlNBRVFRSkljZzBBSUFOQmdCQWdBQkFmSWdZUVJFVU5BeUFFUVFGcklRUWdBeUFHRUlnQklBRkJDbXhxSVFFTUFRc0xRUUloQmlBQUlBVkJDR29RSmtVTkFRc2dBaUFDS0FJQUlBWnlOZ0lBQ3lBRlFSQnFKQUFnQVF1YUFRRURmeU1BUVJCcklnUWtBQ0FFSUFFMkFnd2dCQ0FETmdJSUlBUWdCRUVNYWhCU0lRWWdCQ2dDQ0NFREl3QkJFR3NpQVNRQUlBRWdBellDRENBQklBTTJBZ2hCZnlFRkFrQkJBRUVBSUFJZ0F4QzFBU0lEUVFCSURRQWdBQ0FEUVFGcUlnTVFHU0lBTmdJQUlBQkZEUUFnQUNBRElBSWdBU2dDREJDMUFTRUZDeUFCUVJCcUpBQWdCU0VBSUFZUVVTQUVRUkJxSkFBZ0FBc05BQ0FBS0FJQUlBRW9BZ0JIQ3k0QUFrQWdBQ2dDQkVIS0FIRWlBQVJBSUFCQndBQkdCRUJCQ0E4TElBQkJDRWNOQVVFUUR3dEJBQThMUVFvTCtRRUNBMzRDZnlNQVFSQnJJZ1VrQUFKK0lBRzlJZ05DLy8vLy8vLy8vLy8vQUlNaUFrS0FnSUNBZ0lDQUNIMUMvLy8vLy8vLy8rLy9BRmdFUUNBQ1FqeUdJUVFnQWtJRWlFS0FnSUNBZ0lDQWdEeDhEQUVMSUFKQ2dJQ0FnSUNBZ1BqL0FGb0VRQ0FEUWp5R0lRUWdBMElFaUVLQWdJQ0FnSURBLy84QWhBd0JDeUFDVUFSQVFnQU1BUXNnQlNBQ1FnQWdBNmRuUVNCcUlBSkNJSWluWnlBQ1FvQ0FnSUFRVkJzaUJrRXhhaEF2SUFVcEF3QWhCQ0FGS1FNSVFvQ0FnSUNBZ01BQWhVR00rQUFnQm11dFFqQ0doQXNoQWlBQUlBUTNBd0FnQUNBQ0lBTkNnSUNBZ0lDQWdJQ0FmNE9FTndNSUlBVkJFR29rQUFzSUFDQUFRZjhCY1FzSEFDQUFJQUZHQ3pNQkFYOGdBRUVCSUFBYklRQUNRQU5BSUFBUUdTSUJEUUZCaUpjQktBSUFJZ0VFUUNBQkVROEFEQUVMQ3hBQUFBc2dBUXZFQXdFRGZ5TUFRU0JySWdna0FDQUlJQUkyQWhBZ0NDQUJOZ0lZSUFoQkNHb2lBU0FERUE4Z0FSQTdJUWtnQVJBT0lBUkJBRFlDQUVFQUlRSUNRQU5BSUFZZ0IwWWdBbklOQVFKQUlBaEJHR29nQ0VFUWFoQW9EUUFDUUNBSklBWW9BZ0FRaHdGQkpVWUVRQ0FHUVFScUlnSWdCMFlOQWtFQUlRb0NmeUFKSUFJb0FnQVFod0VpQVVIRkFFWWdBVUgvQVhGQk1FWnlSUVJBSUFZaEFpQUJEQUVMSUFaQkNHb2dCMFlOQXlBQklRb2dDU0FHS0FJSUVJY0JDeUVCSUFnZ0FDQUlLQUlZSUFnb0FoQWdBeUFFSUFVZ0FTQUtJQUFvQWdBb0FpUVJEQUEyQWhnZ0FrRUlhaUVHREFFTElBbEJnTUFBSUFZb0FnQVFUZ1JBQTBBQ1FDQUhJQVpCQkdvaUJrWUVRQ0FISVFZTUFRc2dDVUdBd0FBZ0JpZ0NBQkJPRFFFTEN3TkFJQWhCR0dvZ0NFRVFhaEEyUlEwQ0lBbEJnTUFBSUFoQkdHb1FJUkJPUlEwQ0lBaEJHR29RSlJvTUFBc0FDeUFKSUFoQkdHb1FJUkFwSUFrZ0JpZ0NBQkFwUmdSQUlBWkJCR29oQmlBSVFSaHFFQ1VhREFFTElBUkJCRFlDQUFzZ0JDZ0NBQ0VDREFFTEN5QUVRUVEyQWdBTElBaEJHR29nQ0VFUWFoQW9CRUFnQkNBRUtBSUFRUUp5TmdJQUN5QUlLQUlZSVFBZ0NFRWdhaVFBSUFBTHhnTUJBMzhqQUVFZ2F5SUlKQUFnQ0NBQ05nSVFJQWdnQVRZQ0dDQUlRUWhxSWdFZ0F4QVBJQUVRTWlFSklBRVFEaUFFUVFBMkFnQkJBQ0VDQWtBRFFDQUdJQWRHSUFKeURRRUNRQ0FJUVJocUlBaEJFR29RSmcwQUFrQWdDU0FHTEFBQUVJZ0JRU1ZHQkVBZ0JrRUJhaUlDSUFkR0RRSkJBQ0VLQW44Z0NTQUNMQUFBRUlnQklnRkJ4UUJHSUFGQi93RnhRVEJHY2tVRVFDQUdJUUlnQVF3QkN5QUdRUUpxSUFkR0RRTWdBU0VLSUFrZ0Jpd0FBaENJQVFzaEFTQUlJQUFnQ0NnQ0dDQUlLQUlRSUFNZ0JDQUZJQUVnQ2lBQUtBSUFLQUlrRVF3QU5nSVlJQUpCQW1vaEJnd0JDeUFKUVlEQUFDQUdMQUFBRUVRRVFBTkFBa0FnQnlBR1FRRnFJZ1pHQkVBZ0J5RUdEQUVMSUFsQmdNQUFJQVlzQUFBUVJBMEJDd3NEUUNBSVFSaHFJQWhCRUdvUU1VVU5BaUFKUVlEQUFDQUlRUmhxRUI4UVJFVU5BaUFJUVJocUVDSWFEQUFMQUFzZ0NTQUlRUmhxRUI4UXN3RWdDU0FHTEFBQUVMTUJSZ1JBSUFaQkFXb2hCaUFJUVJocUVDSWFEQUVMSUFSQkJEWUNBQXNnQkNnQ0FDRUNEQUVMQ3lBRVFRUTJBZ0FMSUFoQkdHb2dDRUVRYWhBbUJFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBSUtBSVlJUUFnQ0VFZ2FpUUFJQUFMcWdFQkJIOGpBRUVRYXlJSUpBQUNRQ0FBUlEwQUlBUW9BZ3doQmlBQ0lBRnJJZ2RCQUVvRVFDQUFJQUVnQjBFQ2RTSUhFSDhnQjBjTkFRc2dCaUFESUFGclFRSjFJZ0ZyUVFBZ0FTQUdTQnNpQVVFQVNnUkFJQUFnQ0NBQklBVVF1Z0lpQlJBTklBRVFmeUVHSUFVUUNob2dBU0FHUncwQkN5QURJQUpySWdGQkFFb0VRQ0FBSUFJZ0FVRUNkU0lCRUg4Z0FVY05BUXNnQkJEdUFTQUFJUWtMSUFoQkVHb2tBQ0FKQ3hZQUlBQWdBU0FDSUFNZ0FDZ0NBQ2dDTUJFTEFCb0xRZ0VCZnlBQUtBSUFJUUlnQVJBYUlRQWdBa0VJYWlJQkVGQWdBRXNFZnlBQklBQVFkeWdDQUVFQVJ3VkJBQXRGQkVBUUZ3QUxJQUpCQ0dvZ0FCQjNLQUlBQ3pZQUlBSUVmeUFDQkVBRFFDQUFJQUVvQWdBMkFnQWdBRUVFYWlFQUlBRkJCR29oQVNBQ1FRRnJJZ0lOQUFzTFFRQUZJQUFMR2dzUEFDQUFJQUFvQWdBb0FpUVJBQUFMRVFBZ0FDQUJJQUVvQWdBb0FpQVJBd0FMRVFBZ0FDQUJJQUVvQWdBb0Fpd1JBd0FMREFBZ0FFR0Nob0FnTmdBQUN3Y0FJQUFRRVJvTEJBQWdBQXN1QVFGL0l3QkJFR3NpQVNRQUlBRkJDR29nQUJBTklBQVFDVUVDZEdvUWVpZ0NBQ0VBSUFGQkVHb2tBQ0FBQzZvQkFRRi9Ba0FnQTBHQUVIRkZEUUFnQWtVZ0EwSEtBSEVpQkVFSVJpQUVRY0FBUm5KeURRQWdBRUVyT2dBQUlBQkJBV29oQUFzZ0EwR0FCSEVFUUNBQVFTTTZBQUFnQUVFQmFpRUFDd05BSUFFdEFBQWlCQVJBSUFBZ0JEb0FBQ0FBUVFGcUlRQWdBVUVCYWlFQkRBRUxDeUFBQW45Qjd3QWdBMEhLQUhFaUFVSEFBRVlOQUJwQjJBQkIrQUFnQTBHQWdBRnhHeUFCUVFoR0RRQWFRZVFBUWZVQUlBSWJDem9BQUFzckFRRi9Jd0JCRUdzaUFTUUFJQUZCQ0dvZ0FCQU5JQUFRQ1dvUWVpZ0NBQ0VBSUFGQkVHb2tBQ0FBQ3hZQUlBQWdBU0FDSUFNZ0FDZ0NBQ2dDSUJFTEFCb0xFQUFnQUVFZ1JpQUFRUWxyUVFWSmNndFNBUUovUWVDQUFTZ0NBQ0lCSUFCQkEycEJmSEVpQW1vaEFBSkFJQUpCQUNBQUlBRk5HdzBBSUFBL0FFRVFkRXNFUUNBQUVBUkZEUUVMUWVDQUFTQUFOZ0lBSUFFUEMwSEVnUUZCTURZQ0FFRi9DeElBSUFBUVF5Z0NBQ0FBS0FJQWEwRUNkUXNIQUNBQVFSQnFDelVCQVg4akFFRVFheUlDSkFBZ0FpQUFLQUlBTmdJTUlBQWdBU2dDQURZQ0FDQUJJQUpCREdvb0FnQTJBZ0FnQWtFUWFpUUFDeVFCQW44akFFRVFheUlDSkFBZ0FDQUJFSUlDSVFNZ0FrRVFhaVFBSUFFZ0FDQURHd3NOQUNBQUtBSUFJQUZCQW5ScUN4WUFJQUFRTlFSQUlBQWdBUkE1RHdzZ0FDQUJFRG9MTEFBQ1FDQUFJQUZHRFFBRFFDQUFJQUZCQVdzaUFVOE5BU0FBSUFFUXNBSWdBRUVCYWlFQURBQUxBQXNMQ3dBZ0FDQUJOZ0lBSUFBTDJ3RUNBWDhDZmtFQklRUUNRQ0FBUWdCU0lBRkMvLy8vLy8vLy8vLy9BSU1pQlVLQWdJQ0FnSURBLy84QVZpQUZRb0NBZ0lDQWdNRC8vd0JSR3cwQUlBSkNBRklnQTBMLy8vLy8vLy8vLy84QWd5SUdRb0NBZ0lDQWdNRC8vd0JXSUFaQ2dJQ0FnSUNBd1AvL0FGRWJEUUFnQUNBQ2hDQUZJQWFFaEZBRVFFRUFEd3NnQVNBRGcwSUFXUVJBUVg4aEJDQUFJQUpVSUFFZ0ExTWdBU0FEVVJzTkFTQUFJQUtGSUFFZ0E0V0VRZ0JTRHd0QmZ5RUVJQUFnQWxZZ0FTQURWU0FCSUFOUkd3MEFJQUFnQW9VZ0FTQURoWVJDQUZJaEJBc2dCQXRRQVFGK0FrQWdBMEhBQUhFRVFDQUNJQU5CUUdxdGlDRUJRZ0FoQWd3QkN5QURSUTBBSUFKQndBQWdBMnV0aGlBQklBT3RJZ1NJaENFQklBSWdCSWdoQWdzZ0FDQUJOd01BSUFBZ0FqY0RDQXNPQUNBQUtBSUlRZi8vLy84SGNRc0tBQ0FBRU9FQkdpQUFDeE1BSUFBZ0FTQUNJQUFvQWdBb0FqQVJCQUFMSmdBZ0FDQUFLQUlZUlNBQUtBSVFJQUZ5Y2lJQk5nSVFJQUFvQWhRZ0FYRUVRQkFYQUFzTENRQWdBQ0FCRVB3QkN5UUFJQUJCQWs4RWZ5QUFRUVJxUVh4eElnQWdBRUVCYXlJQUlBQkJBa1liQlVFQkN3dVZBUUVGZnlNQVFSQnJJZ1VrQUNBQkVOSUNJUUlqQUVFUWF5SURKQUFDUUNBQ1FlLy8vLzhEVFFSQUFrQWdBa0VCVFFSQUlBQWdBaEE2SUFBaEJBd0JDeUFBSUFBZ0FoQ0NBVUVCYWlJR0VJRUJJZ1FRVFNBQUlBWVFUQ0FBSUFJUU9Rc2dCQ0FCSUFJUVppQURRUUEyQWd3Z0JDQUNRUUowYWlBRFFReHFFRE1nQTBFUWFpUUFEQUVMRUJjQUN5QUZRUkJxSkFBTEJ3QWdBRUVNYWdzUEFDQUFFRU1vQWdBZ0FDZ0NBR3NMeEFFQkJuOGpBRUVRYXlJRUpBQWdBQkNWQVNnQ0FDRUZBbjhnQWlnQ0FDQUFLQUlBYXlJRFFmLy8vLzhIU1FSQUlBTkJBWFFNQVF0QmZ3c2lBMEVFSUFNYklRTWdBU2dDQUNFR0lBQW9BZ0FoQnlBRlFUWkdCSDlCQUFVZ0FDZ0NBQXNnQXhDZEFTSUlCRUFnQlVFMlJ3UkFJQUFRcHdFYUN5QUVRVFUyQWdRZ0FDQUVRUWhxSUFnZ0JFRUVhaEFlSWdVUXBBSWdCUkFkSUFFZ0FDZ0NBQ0FHSUFkcmFqWUNBQ0FDSUFBb0FnQWdBMEY4Y1dvMkFnQWdCRUVRYWlRQUR3c1FGd0FMRXdBZ0FDQUJRUUFnQUNnQ0FDZ0NOQkVFQUFzVEFDQUFJQUZCQUNBQUtBSUFLQUlrRVFRQUN3MEFJQUFvQWdRZ0FDZ0NBR3NMOGdJQkFuOGpBRUVRYXlJS0pBQWdDaUFBTmdJTUFrQUNRQUpBSUFNb0FnQWdBa2NOQUVFcklRc2dBQ0FKS0FKZ1J3UkFRUzBoQ3lBSktBSmtJQUJIRFFFTElBTWdBa0VCYWpZQ0FDQUNJQXM2QUFBTUFRc2dCaEFKUlNBQUlBVkhja1VFUUVFQUlRQWdDQ2dDQUNJQklBZHJRWjhCU2cwQ0lBUW9BZ0FoQUNBSUlBRkJCR28yQWdBZ0FTQUFOZ0lBREFFTFFYOGhBQ0FKSUFsQjZBQnFJQXBCREdvUTBnRWdDV3NpQmtIY0FFb05BU0FHUVFKMUlRVUNRQUpBQWtBZ0FVRUlhdzREQUFJQUFRc2dBU0FGU2cwQkRBTUxJQUZCRUVjZ0JrSFlBRWh5RFFBZ0F5Z0NBQ0lCSUFKR0lBRWdBbXRCQWtweURRSWdBVUVCYXkwQUFFRXdSdzBDUVFBaEFDQUVRUUEyQWdBZ0F5QUJRUUZxTmdJQUlBRWdCVUhRMEFCcUxRQUFPZ0FBREFJTElBTWdBeWdDQUNJQVFRRnFOZ0lBSUFBZ0JVSFEwQUJxTFFBQU9nQUFJQVFnQkNnQ0FFRUJhallDQUVFQUlRQU1BUXRCQUNFQUlBUkJBRFlDQUFzZ0NrRVFhaVFBSUFBTENnQWdBRUdraVFFUVpRdERBUUYvSUFCQm5DWW9BZ0FpQVRZQ0FDQUFJQUZCREdzb0FnQnFRYndtS0FJQU5nSUFJQUJCd0NZb0FnQTJBZ2dnQUVFTWFoRFJBUm9nQUVGQWF4QitHaUFBQys0Q0FRTi9Jd0JCRUdzaUNpUUFJQW9nQURvQUR3SkFBa0FDUUNBREtBSUFJQUpIRFFCQkt5RUxJQUJCL3dGeElnd2dDUzBBR0VjRVFFRXRJUXNnQ1MwQUdTQU1SdzBCQ3lBRElBSkJBV28yQWdBZ0FpQUxPZ0FBREFFTElBWVFDVVVnQUNBRlIzSkZCRUJCQUNFQUlBZ29BZ0FpQVNBSGEwR2ZBVW9OQWlBRUtBSUFJUUFnQ0NBQlFRUnFOZ0lBSUFFZ0FEWUNBQXdCQzBGL0lRQWdDU0FKUVJwcUlBcEJEMm9RMVFFZ0NXc2lCVUVYU2cwQkFrQUNRQUpBSUFGQkNHc09Bd0FDQUFFTElBRWdCVW9OQVF3REN5QUJRUkJISUFWQkZraHlEUUFnQXlnQ0FDSUJJQUpHSUFFZ0FtdEJBa3B5RFFJZ0FVRUJheTBBQUVFd1J3MENRUUFoQUNBRVFRQTJBZ0FnQXlBQlFRRnFOZ0lBSUFFZ0JVSFEwQUJxTFFBQU9nQUFEQUlMSUFNZ0F5Z0NBQ0lBUVFGcU5nSUFJQUFnQlVIUTBBQnFMUUFBT2dBQUlBUWdCQ2dDQUVFQmFqWUNBRUVBSVFBTUFRdEJBQ0VBSUFSQkFEWUNBQXNnQ2tFUWFpUUFJQUFMQ2dBZ0FFR2NpUUVRWlF1REFRSURmd0YrQWtBZ0FFS0FnSUNBRUZRRVFDQUFJUVVNQVFzRFFDQUJRUUZySWdFZ0FDQUFRZ3FBSWdWQ0NuNTlwMEV3Y2pvQUFDQUFRdi8vLy8rZkFWWWhBaUFGSVFBZ0FnMEFDd3NnQmFjaUFnUkFBMEFnQVVFQmF5SUJJQUlnQWtFS2JpSURRUXBzYTBFd2Nqb0FBQ0FDUVFsTElRUWdBeUVDSUFRTkFBc0xJQUVMWXdJQmZ3RitJd0JCRUdzaUFpUUFJQUFDZmlBQlJRUkFRZ0FNQVFzZ0FpQUJyVUlBSUFGbklnRkIwUUJxRUM4Z0Fpa0RDRUtBZ0lDQWdJREFBSVZCbm9BQklBRnJyVUl3aG53aEF5QUNLUU1BQ3pjREFDQUFJQU0zQXdnZ0FrRVFhaVFBQ3lRQUlBQkJDMDhFZnlBQVFSQnFRWEJ4SWdBZ0FFRUJheUlBSUFCQkMwWWJCVUVLQ3dzcEFDQUFJQUZCQ0hSQmdJRDhCM0VnQVVFWWRISWdBVUVJZGtHQS9nTnhJQUZCR0haeWNqWUFBQXNwQUNBQUtBQUFJZ0JCR0hRZ0FFRUlkRUdBZ1B3SGNYSWdBRUVJZGtHQS9nTnhJQUJCR0haeWNnc1BBQ0FBSUFBb0FnQkJCR28yQWdBTEJ3QWdBRUVFYWdzUEFDQUFJQUFvQWdCQkFXbzJBZ0FMTndFQ2Z5TUFRUkJySWdNa0FDQURRUWhxSWdRZ0FSQVBJQUlnQkJDTEFTSUJFRGcyQWdBZ0FDQUJFRGNnQkJBT0lBTkJFR29rQUFzMUFRSi9Jd0JCRUdzaUFpUUFJQUpCQ0dvaUF5QUFFQThnQXhBN1FkRFFBRUhxMEFBZ0FSQmtJQU1RRGlBQ1FSQnFKQUFnQVFzM0FRSi9Jd0JCRUdzaUF5UUFJQU5CQ0dvaUJDQUJFQThnQWlBRUVJNEJJZ0VRT0RvQUFDQUFJQUVRTnlBRUVBNGdBMEVRYWlRQUN4Y0FJQUFnQXpZQ0VDQUFJQUkyQWd3Z0FDQUJOZ0lJQ3dvQUlBQkJHSFJCR0hVTFFnQWdBQ0FBS0FJQUlBRW9BZ0J6TmdJQUlBQWdBQ2dDQkNBQktBSUVjellDQkNBQUlBQW9BZ2dnQVNnQ0NITTJBZ2dnQUNBQUtBSU1JQUVvQWd4ek5nSU1DNXdJQVF0L0lBQkZCRUFnQVJBWkR3c2dBVUZBVHdSQVFjU0JBVUV3TmdJQVFRQVBDd0ovUVJBZ0FVRUxha0Y0Y1NBQlFRdEpHeUVHSUFCQkNHc2lCU2dDQkNJSlFYaHhJUVFDUUNBSlFRTnhSUVJBUVFBZ0JrR0FBa2tOQWhvZ0JrRUVhaUFFVFFSQUlBVWhBaUFFSUFaclFhaUZBU2dDQUVFQmRFME5BZ3RCQUF3Q0N5QUVJQVZxSVFjQ1FDQUVJQVpQQkVBZ0JDQUdheUlEUVJCSkRRRWdCU0FKUVFGeElBWnlRUUp5TmdJRUlBVWdCbW9pQWlBRFFRTnlOZ0lFSUFjZ0J5Z0NCRUVCY2pZQ0JDQUNJQU1RN0FFTUFRc2dCMEhnZ1FFb0FnQkdCRUJCMUlFQktBSUFJQVJxSWdRZ0JrME5BaUFGSUFsQkFYRWdCbkpCQW5JMkFnUWdCU0FHYWlJRElBUWdCbXNpQWtFQmNqWUNCRUhVZ1FFZ0FqWUNBRUhnZ1FFZ0F6WUNBQXdCQ3lBSFFkeUJBU2dDQUVZRVFFSFFnUUVvQWdBZ0JHb2lBeUFHU1EwQ0FrQWdBeUFHYXlJQ1FSQlBCRUFnQlNBSlFRRnhJQVp5UVFKeU5nSUVJQVVnQm1vaUJDQUNRUUZ5TmdJRUlBTWdCV29pQXlBQ05nSUFJQU1nQXlnQ0JFRitjVFlDQkF3QkN5QUZJQWxCQVhFZ0EzSkJBbkkyQWdRZ0F5QUZhaUlDSUFJb0FnUkJBWEkyQWdSQkFDRUNRUUFoQkF0QjNJRUJJQVEyQWdCQjBJRUJJQUkyQWdBTUFRc2dCeWdDQkNJRFFRSnhEUUVnQTBGNGNTQUVhaUlLSUFaSkRRRWdDaUFHYXlFTUFrQWdBMEgvQVUwRVFDQUhLQUlJSWdRZ0EwRURkaUlDUVFOMFFmQ0JBV3BHR2lBRUlBY29BZ3dpQTBZRVFFSElnUUZCeUlFQktBSUFRWDRnQW5keE5nSUFEQUlMSUFRZ0F6WUNEQ0FESUFRMkFnZ01BUXNnQnlnQ0dDRUxBa0FnQnlBSEtBSU1JZ2hIQkVBZ0J5Z0NDQ0lDUWRpQkFTZ0NBRWthSUFJZ0NEWUNEQ0FJSUFJMkFnZ01BUXNDUUNBSFFSUnFJZ1FvQWdBaUFnMEFJQWRCRUdvaUJDZ0NBQ0lDRFFCQkFDRUlEQUVMQTBBZ0JDRURJQUlpQ0VFVWFpSUVLQUlBSWdJTkFDQUlRUkJxSVFRZ0NDZ0NFQ0lDRFFBTElBTkJBRFlDQUFzZ0MwVU5BQUpBSUFjZ0J5Z0NIQ0lEUVFKMFFmaURBV29pQWlnQ0FFWUVRQ0FDSUFnMkFnQWdDQTBCUWN5QkFVSE1nUUVvQWdCQmZpQURkM0UyQWdBTUFnc2dDMEVRUVJRZ0N5Z0NFQ0FIUmh0cUlBZzJBZ0FnQ0VVTkFRc2dDQ0FMTmdJWUlBY29BaEFpQWdSQUlBZ2dBallDRUNBQ0lBZzJBaGdMSUFjb0FoUWlBa1VOQUNBSUlBSTJBaFFnQWlBSU5nSVlDeUFNUVE5TkJFQWdCU0FKUVFGeElBcHlRUUp5TmdJRUlBVWdDbW9pQWlBQ0tBSUVRUUZ5TmdJRURBRUxJQVVnQ1VFQmNTQUdja0VDY2pZQ0JDQUZJQVpxSWdNZ0RFRURjallDQkNBRklBcHFJZ0lnQWlnQ0JFRUJjallDQkNBRElBd1E3QUVMSUFVaEFnc2dBZ3NpQWdSQUlBSkJDR29QQ3lBQkVCa2lCVVVFUUVFQUR3c2dCU0FBUVh4QmVDQUFRUVJyS0FJQUlnSkJBM0ViSUFKQmVIRnFJZ0lnQVNBQklBSkxHeEJDR2lBQUVCQWdCUXQvQVFOL0lBQWhBUUpBSUFCQkEzRUVRQU5BSUFFdEFBQkZEUUlnQVVFQmFpSUJRUU54RFFBTEN3TkFJQUVpQWtFRWFpRUJJQUlvQWdBaUEwRi9jeUFEUVlHQ2hBaHJjVUdBZ1lLRWVIRkZEUUFMSUFOQi93RnhSUVJBSUFJZ0FHc1BDd05BSUFJdEFBRWhBeUFDUVFGcUlnRWhBaUFERFFBTEN5QUJJQUJyQzMwQkEzOUJHQ0VDQWtBQ1FDQUFJQUZ5UVFOeERRQURRQ0FBS0FJQUlBRW9BZ0JIRFFFZ0FVRUVhaUVCSUFCQkJHb2hBQ0FDUVFScklnSkJBMHNOQUFzZ0FrVU5BUXNEUUNBQUxRQUFJZ01nQVMwQUFDSUVSZ1JBSUFGQkFXb2hBU0FBUVFGcUlRQWdBa0VCYXlJQ0RRRU1BZ3NMSUFNZ0JHc1BDMEVBQzBrQkFuOGdBQ2dDQkNJR1FRaDFJUVVnQmtFQmNRUkFJQUlvQWdBZ0JSREVBU0VGQ3lBQUtBSUFJZ0FnQVNBQ0lBVnFJQU5CQWlBR1FRSnhHeUFFSUFBb0FnQW9BaGdSQ2dBTHRnRUJBMzhqQUVFUWF5SURKQUFnQXlBQk9nQVBBa0FDUUFKQUFrQWdBQkExQkVBZ0FCQjlJUUVnQUNnQ0JDSUVJQUZCQVdzaUFrWU5BUXdEQzBFS0lRUkJDaUVDSUFBdEFBc2lBVUVLUncwQkN5QUFJQUpCQVNBQ0lBSVF5QUVnQkNFQklBQVFOUTBCQ3lBQUlRSWdBQ0FCUVFGcUVEb01BUXNnQUNnQ0FDRUNJQUFnQkVFQmFoQTVJQVFoQVFzZ0FTQUNhaUlBSUFOQkQyb1FOQ0FEUVFBNkFBNGdBRUVCYWlBRFFRNXFFRFFnQTBFUWFpUUFDeVFCQW44akFFRVFheUlDSkFBZ0FTQUFFSUlDSVFNZ0FrRVFhaVFBSUFFZ0FDQURHd3NkQUNBQVFRUnFFSkVDUVg5R0JFQWdBQ0FBS0FJQUtBSUlFUUVBQ3dza0FDQUFFUGdCSVFBZ0FSRDRBU0FBYXlJQkJFQWdBaUFBSUFFUTZ3RUxJQUVnQW1vTEVRQWdBQ0FCSUFFb0FnQW9BaWdSQXdBTHF5d0JFWDhnQUNnQzhBRWhFaUFBS0FJRUlBRW9BQVFpQkVFWWRDQUVRUWgwUVlDQS9BZHhjaUFFUVFoMlFZRCtBM0VnQkVFWWRuSnljeUlFUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVFZZ0FDZ0NDQ0FCS0FBSUlnVkJHSFFnQlVFSWRFR0FnUHdIY1hJZ0JVRUlka0dBL2dOeElBVkJHSFp5Y25NaUJVRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRUlJQUFvQWd3Z0FTZ0FEQ0lEUVJoMElBTkJDSFJCZ0lEOEIzRnlJQU5CQ0haQmdQNERjU0FEUVJoMmNuSnpJZ05CL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoQnlBRlFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRa2dBMEVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VLSUFBb0FnQWdBU2dBQUNJQlFSaDBJQUZCQ0hSQmdJRDhCM0Z5SUFGQkNIWkJnUDREY1NBQlFSaDJjbkp6SWdGQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaEN5QURRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJUXdnQVVFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFTklBUkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hEaUFCUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVE4Z0JFRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRVFJQVZCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoRVNBQUtBSVVJQXNnQ2lBSklBUkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlCRUVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0VKSUFBb0FoZ2dEaUFOSUF3Z0JVRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUZRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUW9nQUNnQ0hDQVJJQkFnRHlBRFFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnTkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hDeUFGUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVF3Z0EwRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRU5JQUFvQWhBZ0J5QUlJQVlnQVVFV2RrSDhCM0ZCZ0FocUtBSUFjM056Y3lJQlFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlRWWdBMEVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0VJSUFGQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFnaEJ5QUVRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUTRnQVVFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFUElBUkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hFQ0FGUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVJFZ0FDZ0NKQ0FHSUEwZ0RDQUVRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ1JCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoQmlBQUtBSW9JQTRnQnlBSUlBVkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlCVUVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VJSUFBb0Fpd2dFU0FRSUE4Z0EwRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SURRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUWNnQlVFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFTUlBTkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hEU0FBS0FJZ0lBc2dDaUFKSUFGQkZuWkIvQWR4UVlBSWFpZ0NBSE56YzNNaUFVSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRUpJQU5CRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoQ2lBQlFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSUlRc2dCRUgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VPSUFGQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaER5QUVRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUkFnQlVIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFUklBQW9BalFnQ1NBTklBd2dCRUVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlFUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVFrZ0FDZ0NPQ0FPSUFzZ0NpQUZRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ1ZCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoQ2lBQUtBSThJQkVnRUNBUElBTkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlBMEgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VMSUFWQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaERDQURRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUTBnQUNnQ01DQUhJQWdnQmlBQlFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnRkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hCaUFEUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVFnZ0FVRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRUhJQVJCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoRGlBQlFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlROGdCRUVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VRSUFWQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaEVTQUFLQUpFSUFZZ0RTQU1JQVJCRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQkVFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFR0lBQW9Ba2dnRGlBSElBZ2dCVUVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlGUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVFnZ0FDZ0NUQ0FSSUJBZ0R5QURRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ05CL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoQnlBRlFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRd2dBMEVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VOSUFBb0FrQWdDeUFLSUFrZ0FVRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUJRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUWtnQTBFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFS0lBRkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hDeUFFUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVE0Z0FVRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRVBJQVJCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoRUNBRlFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlSRWdBQ2dDVkNBSklBMGdEQ0FFUVJaMlFmd0hjVUdBQ0dvb0FnQnpjM056SWdSQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaENTQUFLQUpZSUE0Z0N5QUtJQVZCRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQlVFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFS0lBQW9BbHdnRVNBUUlBOGdBMEVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlEUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVFzZ0JVRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRU1JQU5CQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoRFNBQUtBSlFJQWNnQ0NBR0lBRkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlBVUgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VHSUFOQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaENDQUJRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUWNnQkVIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFT0lBRkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2hEeUFFUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVJBZ0JVSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRVJJQUFvQW1RZ0JpQU5JQXdnQkVFV2RrSDhCM0ZCZ0FocUtBSUFjM056Y3lJRVFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRWWdBQ2dDYUNBT0lBY2dDQ0FGUVJaMlFmd0hjVUdBQ0dvb0FnQnpjM056SWdWQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFnaENDQUFLQUpzSUJFZ0VDQVBJQU5CRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQTBIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFSElBVkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2hEQ0FEUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVEwZ0FDZ0NZQ0FMSUFvZ0NTQUJRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ0ZCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoQ1NBRFFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRb2dBVUVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VMSUFSQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaERpQUJRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJUThnQkVFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFUUlBVkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hFU0FBS0FKMElBa2dEU0FNSUFSQkZuWkIvQWR4UVlBSWFpZ0NBSE56YzNNaUJFRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRUpJQUFvQW5nZ0RpQUxJQW9nQlVFV2RrSDhCM0ZCZ0FocUtBSUFjM056Y3lJRlFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSUlRb2dBQ2dDZkNBUklCQWdEeUFEUVJaMlFmd0hjVUdBQ0dvb0FnQnpjM056SWdOQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaEN5QUZRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJUXdnQTBFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFTklBQW9BbkFnQnlBSUlBWWdBVUVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlCUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVFZZ0EwRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRUhJQUZCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoRGlBRVFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlROGdBVUVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0VRSUFSQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFnaEVTQUZRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUk1nQUNnQ2hBRWdCaUFOSUF3Z0JFRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUdRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJQUFvQW9BQklBc2dDaUFKSUFGQkZuWkIvQWR4UVlBSWFpZ0NBSE56YzNNaUNFRVdka0g4QjNGQmdBaHFLQUlBY3lBQUtBS0lBU0FQSUE0Z0J5QUZRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ2RCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWh6SUFBb0Fvd0JJQk1nRVNBUUlBTkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlBMEgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDSE1nQUNnQ2tBRnpJUUVnQjBFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NBR1FSWjJRZndIY1VHQUNHb29BZ0J6SUFOQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFoeklBaEIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBaHpJQUFvQXBRQmN5RUVJQU5CRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdnQjBFV2RrSDhCM0ZCZ0FocUtBSUFjeUFJUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJY3lBR1FmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSWN5QUFLQUtZQVhNaEJRSi9JQWhCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdnQTBFV2RrSDhCM0ZCZ0FocUtBSUFjeUFHUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJY3lBSFFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSWN5QUFLQUtjQVhNaUF5QVNRUXRJRFFBYUlBUkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2hDQ0FGUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVFjZ0EwSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRUpJQVZCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoQmlBRFFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSUlRb2dBVUgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VMSUFOQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaERDQUJRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUTBnQkVIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFT0lBRkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2hEeUFFUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVJBZ0JVSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRVJJQUFvQXFRQklBc2dDaUFHSUFSQkZuWkIvQWR4UVlBSWFpZ0NBSE56YzNNaUJrRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDQUFLQUtnQVNBSklBY2dDQ0FCUVJaMlFmd0hjVUdBQ0dvb0FnQnpjM056SWdoQkZuWkIvQWR4UVlBSWFpZ0NBSE1nQUNnQ3FBRWdEaUFOSUF3Z0JVRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUhRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUljeUFBS0FLc0FTQVJJQkFnRHlBRFFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnTkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBaHpJQUFvQXJBQmN5RUJJQWRCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdnQmtFV2RrSDhCM0ZCZ0FocUtBSUFjeUFEUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJY3lBSVFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSWN5QUFLQUswQVhNaEJDQURRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJQWRCRm5aQi9BZHhRWUFJYWlnQ0FITWdDRUVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDSE1nQmtIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0hNZ0FDZ0N1QUZ6SVFVZ0NFRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDQURRUloyUWZ3SGNVR0FDR29vQWdCeklBWkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBaHpJQWRCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWh6SUFBb0Fyd0JjeUlESUJKQkRVZ05BQm9nQkVFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFSUlBVkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hCeUFEUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVFrZ0JVRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRUdJQU5CQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoQ2lBQlFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlRc2dBMEVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0VNSUFGQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFnaERTQUVRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUTRnQVVFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFUElBUkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hFQ0FGUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVJFZ0FDZ0N4QUVnQ3lBS0lBWWdCRUVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlHUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSUFBb0FzQUJJQWtnQnlBSUlBRkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlDRUVXZGtIOEIzRkJnQWhxS0FJQWN5QUFLQUxJQVNBT0lBMGdEQ0FGUVJaMlFmd0hjVUdBQ0dvb0FnQnpjM056SWdkQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFoeklBQW9Bc3dCSUJFZ0VDQVBJQU5CRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQTBIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0hNZ0FDZ0MwQUZ6SVFFZ0IwRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDQUdRUloyUWZ3SGNVR0FDR29vQWdCeklBTkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBaHpJQWhCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWh6SUFBb0F0UUJjeUVFSUFOQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnZ0IwRVdka0g4QjNGQmdBaHFLQUlBY3lBSVFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSWN5QUdRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUljeUFBS0FMWUFYTWhCU0FJUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSUFOQkZuWkIvQWR4UVlBSWFpZ0NBSE1nQmtFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0hNZ0IwSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNITWdBQ2dDM0FGekN5RURJQUlnQUNBU1FRUjBhaUlBS0FJQUlBTkIvd0Z4UVFKMFFZQUlhaTBBQVNBQlFSWjJRZndIY1VHQUNHb29BZ0JCQ0hSQmdJQ0FlSEVnQkVFT2RrSDhCM0ZCZ0FocUxRQUNRUkIwY2lBRlFRWjJRZndIY1VHQUNHb3RBQUZCQ0hSeWNuTWlFa0VZZENBU1FRaDBRWUNBL0FkeGNpQVNRUWgyUVlEK0EzRWdFa0VZZG5KeU5nQUFJQUlnQUNnQ0JDQUJRZjhCY1VFQ2RFR0FDR290QUFFZ0JFRVdka0g4QjNGQmdBaHFLQUlBUVFoMFFZQ0FnSGh4SUFWQkRuWkIvQWR4UVlBSWFpMEFBa0VRZEhJZ0EwRUdka0g4QjNGQmdBaHFMUUFCUVFoMGNuSnpJaEpCR0hRZ0VrRUlkRUdBZ1B3SGNYSWdFa0VJZGtHQS9nTnhJQkpCR0haeWNqWUFCQ0FDSUFBb0FnZ2dCRUgvQVhGQkFuUkJnQWhxTFFBQklBVkJGblpCL0FkeFFZQUlhaWdDQUVFSWRFR0FnSUI0Y1NBRFFRNTJRZndIY1VHQUNHb3RBQUpCRUhSeUlBRkJCblpCL0FkeFFZQUlhaTBBQVVFSWRISnljeUlTUVJoMElCSkJDSFJCZ0lEOEIzRnlJQkpCQ0haQmdQNERjU0FTUVJoMmNuSTJBQWdnQWlBQUtBSU1JQVZCL3dGeFFRSjBRWUFJYWkwQUFTQURRUloyUWZ3SGNVR0FDR29vQWdCQkNIUkJnSUNBZUhFZ0FVRU9ka0g4QjNGQmdBaHFMUUFDUVJCMGNpQUVRUVoyUWZ3SGNVR0FDR290QUFGQkNIUnljbk1pQUVFWWRDQUFRUWgwUVlDQS9BZHhjaUFBUVFoMlFZRCtBM0VnQUVFWWRuSnlOZ0FNQ3hRQkFYOGdBQ2dDQUNFQklBQkJBRFlDQUNBQkN3NEFJQUFnQVNnQ0FEWUNBQ0FBQ3djQUlBQVFSeG9MQ0FCQi8vLy8vd2NMQlFCQi93QUxLd0FDUUNBQUlBRkdEUUFEUUNBQUlBRkJCR3NpQVU4TkFTQUFJQUVRZFNBQVFRUnFJUUFNQUFzQUN3dlVBd0VJZnlNQVFSQnJJZ29rQUNBR0VEc2hDeUFLSUFZUWl3RWlCaEEzQWtBZ0NoQkpCRUFnQ3lBQUlBSWdBeEJrSUFVZ0F5QUNJQUJyUVFKMGFpSUdOZ0lBREFFTElBVWdBellDQUFKQUFrQWdBQ0lJTFFBQUlnZEJLMnNPQXdBQkFBRUxJQXNnQjBFWWRFRVlkUkE5SVFnZ0JTQUZLQUlBSWdkQkJHbzJBZ0FnQnlBSU5nSUFJQUJCQVdvaENBc0NRQ0FDSUFoclFRSklEUUFnQ0MwQUFFRXdSdzBBSUFndEFBRkJJSEpCK0FCSERRQWdDMEV3RUQwaEJ5QUZJQVVvQWdBaUNVRUVhallDQUNBSklBYzJBZ0FnQ3lBSUxBQUJFRDBoQnlBRklBVW9BZ0FpQ1VFRWFqWUNBQ0FKSUFjMkFnQWdDRUVDYWlFSUN5QUlJQUlRZVVFQUlRa2dCaEE0SVF4QkFDRUhJQWdoQmdOL0lBSWdCazBFZnlBRElBZ2dBR3RCQW5ScUlBVW9BZ0FRckFFZ0JTZ0NBQVVDUUNBS0lBY1FDeTBBQUVVTkFDQUpJQW9nQnhBTExBQUFSdzBBSUFVZ0JTZ0NBQ0lKUVFScU5nSUFJQWtnRERZQ0FDQUhJQWNnQ2hBSlFRRnJTV29oQjBFQUlRa0xJQXNnQml3QUFCQTlJUTBnQlNBRktBSUFJZzVCQkdvMkFnQWdEaUFOTmdJQUlBWkJBV29oQmlBSlFRRnFJUWtNQVFzTElRWUxJQVFnQmlBRElBRWdBR3RCQW5ScUlBRWdBa1liTmdJQUlBb1FDaG9nQ2tFUWFpUUFDOUFCQVFKL0lBSkJnQkJ4QkVBZ0FFRXJPZ0FBSUFCQkFXb2hBQXNnQWtHQUNIRUVRQ0FBUVNNNkFBQWdBRUVCYWlFQUN5QUNRWVFDY1NJRFFZUUNSd1JBSUFCQnJ0UUFPd0FBSUFCQkFtb2hBQXNnQWtHQWdBRnhJUUlEUUNBQkxRQUFJZ1FFUUNBQUlBUTZBQUFnQUVFQmFpRUFJQUZCQVdvaEFRd0JDd3NnQUFKL0FrQWdBMEdBQWtjRVFDQURRUVJIRFFGQnhnQkI1Z0FnQWhzTUFndEJ4UUJCNVFBZ0Foc01BUXRCd1FCQjRRQWdBaHNnQTBHRUFrWU5BQnBCeHdCQjV3QWdBaHNMT2dBQUlBTkJoQUpIQzhvREFRaC9Jd0JCRUdzaUNpUUFJQVlRTWlFTElBb2dCaENPQVNJR0VEY0NRQ0FLRUVrRVFDQUxJQUFnQWlBREVIQWdCU0FESUFJZ0FHdHFJZ1kyQWdBTUFRc2dCU0FETmdJQUFrQUNRQ0FBSWdndEFBQWlCMEVyYXc0REFBRUFBUXNnQ3lBSFFSaDBRUmgxRUNraENDQUZJQVVvQWdBaUIwRUJhallDQUNBSElBZzZBQUFnQUVFQmFpRUlDd0pBSUFJZ0NHdEJBa2dOQUNBSUxRQUFRVEJIRFFBZ0NDMEFBVUVnY2tINEFFY05BQ0FMUVRBUUtTRUhJQVVnQlNnQ0FDSUpRUUZxTmdJQUlBa2dCem9BQUNBTElBZ3NBQUVRS1NFSElBVWdCU2dDQUNJSlFRRnFOZ0lBSUFrZ0J6b0FBQ0FJUVFKcUlRZ0xJQWdnQWhCNVFRQWhDU0FHRURnaERFRUFJUWNnQ0NFR0EzOGdBaUFHVFFSL0lBTWdDQ0FBYTJvZ0JTZ0NBQkI1SUFVb0FnQUZBa0FnQ2lBSEVBc3RBQUJGRFFBZ0NTQUtJQWNRQ3l3QUFFY05BQ0FGSUFVb0FnQWlDVUVCYWpZQ0FDQUpJQXc2QUFBZ0J5QUhJQW9RQ1VFQmEwbHFJUWRCQUNFSkN5QUxJQVlzQUFBUUtTRU5JQVVnQlNnQ0FDSU9RUUZxTmdJQUlBNGdEVG9BQUNBR1FRRnFJUVlnQ1VFQmFpRUpEQUVMQ3lFR0N5QUVJQVlnQXlBQklBQnJhaUFCSUFKR0d6WUNBQ0FLRUFvYUlBcEJFR29rQUFzREFBRUxEQUFnQUJBTklBRkJBblJxQzZvRUFRdC9Jd0JCZ0FGcklnb2tBQ0FLSUFFMkFuZ2dBaUFERU1zQ0lRZ2dDa0UxTmdJUUlBcEJDR3BCQUNBS1FSQnFJZ2tRSGlFUUFrQWdDRUhsQUU4RVFDQUlFQmtpQ1VVTkFTQVFJQWtRSndzZ0NTRUhJQUloQVFOQUlBRWdBMFlFUUFOQUFrQWdBQ0FLUWZnQWFoQTJRUUFnQ0J0RkJFQWdBQ0FLUWZnQWFoQW9CRUFnQlNBRktBSUFRUUp5TmdJQUN3d0JDeUFBRUNFaERpQUdSUVJBSUFRZ0RoQXBJUTRMSUF4QkFXb2hEVUVBSVE4Z0NTRUhJQUloQVFOQUlBRWdBMFlFUUNBTklRd2dEMFVOQXlBQUVDVWFJQWtoQnlBQ0lRRWdDQ0FMYWtFQ1NRMERBMEFnQVNBRFJnUkFEQVVGQWtBZ0J5MEFBRUVDUncwQUlBRVFDU0FOUmcwQUlBZEJBRG9BQUNBTFFRRnJJUXNMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQ3dBRkFrQWdCeTBBQUVFQlJ3MEFJQUVnREJDeEFTZ0NBQ0VSQWtBZ0JnUi9JQkVGSUFRZ0VSQXBDeUFPUmdSQVFRRWhEeUFCRUFrZ0RVY05BaUFIUVFJNkFBQWdDMEVCYWlFTERBRUxJQWRCQURvQUFBc2dDRUVCYXlFSUN5QUhRUUZxSVFjZ0FVRU1haUVCREFFTEFBc0FDd3NDUUFKQUEwQWdBaUFEUmcwQklBa3RBQUJCQWtjRVFDQUpRUUZxSVFrZ0FrRU1haUVDREFFTEN5QUNJUU1NQVFzZ0JTQUZLQUlBUVFSeU5nSUFDeUFRRUIwZ0NrR0FBV29rQUNBRER3VUNRQ0FCRUVsRkJFQWdCMEVCT2dBQURBRUxJQWRCQWpvQUFDQUxRUUZxSVFzZ0NFRUJheUVJQ3lBSFFRRnFJUWNnQVVFTWFpRUJEQUVMQUFzQUN4QVhBQXNSQUNBQUlBRWdBQ2dDQUNnQ0RCRUNBQXV6QkFFTGZ5TUFRWUFCYXlJS0pBQWdDaUFCTmdKNElBSWdBeERMQWlFSUlBcEJOVFlDRUNBS1FRaHFRUUFnQ2tFUWFpSUpFQjRoRUFKQUlBaEI1UUJQQkVBZ0NCQVpJZ2xGRFFFZ0VDQUpFQ2NMSUFraEJ5QUNJUUVEUUNBQklBTkdCRUFEUUFKQUlBQWdDa0g0QUdvUU1VRUFJQWdiUlFSQUlBQWdDa0g0QUdvUUpnUkFJQVVnQlNnQ0FFRUNjallDQUFzTUFRc2dBQkFmSVE0Z0JrVUVRQ0FFSUE0UXN3RWhEZ3NnREVFQmFpRU5RUUFoRHlBSklRY2dBaUVCQTBBZ0FTQURSZ1JBSUEwaERDQVBSUTBESUFBUUlob2dDU0VISUFJaEFTQUlJQXRxUVFKSkRRTURRQ0FCSUFOR0JFQU1CUVVDUUNBSExRQUFRUUpIRFFBZ0FSQUpJQTFHRFFBZ0IwRUFPZ0FBSUF0QkFXc2hDd3NnQjBFQmFpRUhJQUZCREdvaEFRd0JDd0FMQUFVQ1FDQUhMUUFBUVFGSERRQWdBU0FNRUFzc0FBQWhFUUpBSUE1Qi93RnhJQVlFZnlBUkJTQUVJQkVRc3dFTFFmOEJjVVlFUUVFQklROGdBUkFKSUExSERRSWdCMEVDT2dBQUlBdEJBV29oQ3d3QkN5QUhRUUE2QUFBTElBaEJBV3NoQ0FzZ0IwRUJhaUVISUFGQkRHb2hBUXdCQ3dBTEFBc0xBa0FDUUFOQUlBSWdBMFlOQVNBSkxRQUFRUUpIQkVBZ0NVRUJhaUVKSUFKQkRHb2hBZ3dCQ3dzZ0FpRUREQUVMSUFVZ0JTZ0NBRUVFY2pZQ0FBc2dFQkFkSUFwQmdBRnFKQUFnQXc4RkFrQWdBUkJKUlFSQUlBZEJBVG9BQUF3QkN5QUhRUUk2QUFBZ0MwRUJhaUVMSUFoQkFXc2hDQXNnQjBFQmFpRUhJQUZCREdvaEFRd0JDd0FMQUFzUUZ3QUw1UU1CQTM4akFFR2dBV3NpQkNRQVFYOGhCU0FFSUFGQkFXdEJBQ0FCR3pZQ2xBRWdCQ0FBSUFSQm5nRnFJQUViSWdZMkFwQUJJQVJCQUVHUUFSQkdJZ0JCZnpZQ1RDQUFRVFEyQWlRZ0FFRi9OZ0pRSUFBZ0FFR2ZBV28yQWl3Z0FDQUFRWkFCYWpZQ1ZBSkFJQUZCQUVnRVFFSEVnUUZCUFRZQ0FBd0JDeUFHUVFBNkFBQkJBQ0VFSXdCQjBBRnJJZ0VrQUNBQklBTTJBc3dCSUFGQm9BRnFJZ05CQUVFb0VFWWFJQUVnQVNnQ3pBRTJBc2dCQWtCQkFDQUNJQUZCeUFGcUlBRkIwQUJxSUFNUTJnSkJBRWdFUUVGL0lRSU1BUXNnQUNnQ1RFRUFUaUVGSUFBb0FnQWhBeUFBS0FKSVFRQk1CRUFnQUNBRFFWOXhOZ0lBQ3dKL0FrQUNRQ0FBS0FJd1JRUkFJQUJCMEFBMkFqQWdBRUVBTmdJY0lBQkNBRGNERUNBQUtBSXNJUVFnQUNBQk5nSXNEQUVMSUFBb0FoQU5BUXRCZnlBQUVPZ0JEUUVhQ3lBQUlBSWdBVUhJQVdvZ0FVSFFBR29nQVVHZ0FXb1EyZ0lMSVFJZ0JBUkFJQUJCQUVFQUlBQW9BaVFSQkFBYUlBQkJBRFlDTUNBQUlBUTJBaXdnQUVFQU5nSWNJQUJCQURZQ0VDQUFLQUlVSVFRZ0FFRUFOZ0lVSUFKQmZ5QUVHeUVDQ3lBQUlBQW9BZ0FpQkNBRFFTQnhjallDQUVGL0lBSWdCRUVnY1JzaEFpQUZSUTBBQ3lBQlFkQUJhaVFBSUFJaEJRc2dBRUdnQVdva0FDQUZDMG9CQW44Q1FDQUFMUUFBSWdKRklBSWdBUzBBQUNJRFIzSU5BQU5BSUFFdEFBRWhBeUFBTFFBQklnSkZEUUVnQVVFQmFpRUJJQUJCQVdvaEFDQUNJQU5HRFFBTEN5QUNJQU5yQytRQ0FRWi9Jd0JCRUdzaUJ5UUFJQU5CNElZQklBTWJJZ1VvQWdBaEF3SkFBa0FDUUNBQlJRUkFJQU1OQVF3REMwRitJUVFnQWtVTkFpQUFJQWRCREdvZ0FCc2hCZ0pBSUFNRVFDQUNJUUFNQVFzZ0FTMEFBQ0lBUVJoMFFSaDFJZ05CQUU0RVFDQUdJQUEyQWdBZ0EwRUFSeUVFREFRTElBRXNBQUFoQUVISWhnRW9BZ0FvQWdCRkJFQWdCaUFBUWYrL0EzRTJBZ0JCQVNFRURBUUxJQUJCL3dGeFFjSUJheUlBUVRKTERRRWdBRUVDZEVHd0syb29BZ0FoQXlBQ1FRRnJJZ0JGRFFJZ0FVRUJhaUVCQ3lBQkxRQUFJZ2hCQTNZaUNVRVFheUFEUVJwMUlBbHFja0VIU3cwQUEwQWdBRUVCYXlFQUlBaEJnQUZySUFOQkJuUnlJZ05CQUU0RVFDQUZRUUEyQWdBZ0JpQUROZ0lBSUFJZ0FHc2hCQXdFQ3lBQVJRMENJQUZCQVdvaUFTMEFBQ0lJUWNBQmNVR0FBVVlOQUFzTElBVkJBRFlDQUVIRWdRRkJHVFlDQUVGL0lRUU1BUXNnQlNBRE5nSUFDeUFIUVJCcUpBQWdCQXNNQUNBQVFReHFFSDRhSUFBTENBQWdBQ2dDRUVVTERBQWdBRUVJYWhCK0dpQUFDeWdCQW44akFFRVFheUlDSkFBZ0FTZ0NBQ0FBS0FJQVNDRURJQUpCRUdva0FDQUJJQUFnQXhzTEVBQWdBQ0FCTndNSUlBQkNBRGNEQUFzVEFDQUFRYXdmTmdJQUlBQkJCR29RRGlBQUN3UUFRUUVMcmdFQkJIOGpBRUVRYXlJRkpBQWdBU0VFSUFKQkVFOEVRQ0FDUVFSMklRY0RRQ0FESUFRUW5BRWdBeUFBSUFVUXV3SWdBeUFGS1FNSU53QUlJQU1nQlNrREFEY0FBQ0FFUVJCcUlRUWdCa0VCYWlJR0lBZEhEUUFMQ3lBRUlBRWdBbW9pQVVrRVFDQUZJQVFnQVNBRWF5SUNFRUlpQVNBQ2FrRUFRUkFnQW1zUVJob2dBeUFCRUp3QklBTWdBQ0FCRUxzQ0lBTWdBU2tEQ0RjQUNDQURJQUVwQXdBM0FBQUxJQVZCRUdva0FBc3JBUUYvSUFCQjdQOEFOZ0lBQWtBZ0FDZ0NCRUVNYXlJQlFRaHFFSkVDUVFCT0RRQWdBUkFRQ3lBQUMwc0JBbjhnQUNnQ0JDSUhRUWgxSVFZZ0IwRUJjUVJBSUFNb0FnQWdCaERFQVNFR0N5QUFLQUlBSWdBZ0FTQUNJQU1nQm1vZ0JFRUNJQWRCQW5FYklBVWdBQ2dDQUNnQ0ZCRUpBQXNnQUFKQUlBQW9BZ1FnQVVjTkFDQUFLQUljUVFGR0RRQWdBQ0FDTmdJY0N3dWFBUUFnQUVFQk9nQTFBa0FnQUNnQ0JDQUNSdzBBSUFCQkFUb0FOQUpBSUFBb0FoQWlBa1VFUUNBQVFRRTJBaVFnQUNBRE5nSVlJQUFnQVRZQ0VDQUFLQUl3UVFGSERRSWdBMEVCUmcwQkRBSUxJQUVnQWtZRVFDQUFLQUlZSWdKQkFrWUVRQ0FBSUFNMkFoZ2dBeUVDQ3lBQUtBSXdRUUZIRFFJZ0FrRUJSZzBCREFJTElBQWdBQ2dDSkVFQmFqWUNKQXNnQUVFQk9nQTJDd3NLQUNBQUlBRnFLQUlBQzEwQkFYOGdBQ2dDRUNJRFJRUkFJQUJCQVRZQ0pDQUFJQUkyQWhnZ0FDQUJOZ0lRRHdzQ1FDQUJJQU5HQkVBZ0FDZ0NHRUVDUncwQklBQWdBallDR0E4TElBQkJBVG9BTmlBQVFRSTJBaGdnQUNBQUtBSWtRUUZxTmdJa0N3dTVBUUVEZnlNQVFSQnJJZ01rQUNBRElBRTJBZ3dDUUFKQUFrQUNRQ0FBRURVRVFDQUFFSDBoQVNBQUtBSUVJZ1FnQVVFQmF5SUNSZzBCREFNTFFRRWhCRUVCSVFJZ0FDMEFDeUlCUVFGSERRRUxJQUFnQWtFQklBSWdBaER5QVNBRUlRRWdBQkExRFFFTElBQWhBaUFBSUFGQkFXb1FPZ3dCQ3lBQUtBSUFJUUlnQUNBRVFRRnFFRGtnQkNFQkN5QUNJQUZCQW5ScUlnQWdBMEVNYWhBeklBTkJBRFlDQ0NBQVFRUnFJQU5CQ0dvUU15QURRUkJxSkFBTEdnQWdBQ0FCSUFFb0FnQkJER3NvQWdCcUtBSVlOZ0lBSUFBTHJ3RUJBMzhqQUVFUWF5SUZKQUFnQWtGdklnWWdBV3ROQkVBZ0FCQU5JUWNDZnlBQklBWkJBWFpCRUd0SkJFQWdCU0FCUVFGME5nSUlJQVVnQVNBQ2FqWUNEQ0FGUVF4cUlBVkJDR29RZGlnQ0FCQ1JBUXdCQ3lBR1FRRnJDMEVCYWlJR0VHQWhBaUFFQkVBZ0FpQUhJQVFRVlFzZ0F5QUVheUlEQkVBZ0FpQUVhaUFFSUFkcUlBTVFWUXNnQVVFS1J3UkFJQWNRRUFzZ0FDQUNFRTBnQUNBR0VFd2dCVUVRYWlRQUR3c1FGd0FMRndBZ0FDZ0NDQkFXUndSQUlBQW9BZ2dRMHdJTElBQUxBd0FCQ3pnQkFYOGpBRUVRYXlJREpBQWdBeUFDTmdJTUlBTkJDR29nQTBFTWFoQlNJUUlnQUNBQkVOb0JJUUFnQWhCUklBTkJFR29rQUNBQUN3c0FJQVFnQWpZQ0FFRURDdzhBSUFBZ0FDZ0NCRUVCYWpZQ0JBc1pBUUYvUVFFaEFTQUFFRFVFZnlBQUVIMUJBV3NGSUFFTEN3a0FJQUJCQURZQ0FBdVRBUUVFZnlNQVFSQnJJZ01rQUFKQUlBRVFOVVVFUUNBQUlBRW9BZ2cyQWdnZ0FDQUJLUUlBTndJQURBRUxJQUVvQWdBaEJBSkFBa0FDUUNBQktBSUVJZ0pCQ2swRVFDQUFJUUVnQUNBQ0VEb01BUXNnQWtGdlN3MEJJQUFnQWhDUkFVRUJhaUlGRUdBaUFSQk5JQUFnQlJCTUlBQWdBaEE1Q3lBQklBUWdBa0VCYWhCVkRBRUxFQmNBQ3dzZ0EwRVFhaVFBQ3hvQUlBQkJwQ0UyQWdBZ0FFRWdhaEFLR2lBQUVMMEJHaUFBQ3pFQUlBSW9BZ0FoQWdOQUFrQWdBQ0FCUndSL0lBQW9BZ0FnQWtjTkFTQUFCU0FCQ3c4TElBQkJCR29oQUF3QUN3QUwrUU1CQVg4akFFRVFheUlNSkFBZ0RDQUFOZ0lNQWtBQ1FDQUFJQVZHQkVBZ0FTMEFBRVVOQVVFQUlRQWdBVUVBT2dBQUlBUWdCQ2dDQUNJQlFRRnFOZ0lBSUFGQkxqb0FBQ0FIRUFsRkRRSWdDU2dDQUNJQklBaHJRWjhCU2cwQ0lBb29BZ0FoQWlBSklBRkJCR28yQWdBZ0FTQUNOZ0lBREFJTEFrQWdBQ0FHUncwQUlBY1FDVVVOQUNBQkxRQUFSUTBCUVFBaEFDQUpLQUlBSWdFZ0NHdEJud0ZLRFFJZ0NpZ0NBQ0VBSUFrZ0FVRUVhallDQUNBQklBQTJBZ0JCQUNFQUlBcEJBRFlDQUF3Q0MwRi9JUUFnQ3lBTFFZQUJhaUFNUVF4cUVOSUJJQXRySWdWQi9BQktEUUVnQlVFQ2RVSFEwQUJxTFFBQUlRWUNRQUpBSUFWQmUzRWlBRUhZQUVjRVFDQUFRZUFBUncwQklBTWdCQ2dDQUNJQlJ3UkFRWDhoQUNBQlFRRnJMUUFBUWQ4QWNTQUNMUUFBUWY4QWNVY05CUXNnQkNBQlFRRnFOZ0lBSUFFZ0Jqb0FBRUVBSVFBTUJBc2dBa0hRQURvQUFBd0JDeUFDTEFBQUlnQWdCa0hmQUhGSERRQWdBaUFBUVlBQmNqb0FBQ0FCTFFBQVJRMEFJQUZCQURvQUFDQUhFQWxGRFFBZ0NTZ0NBQ0lBSUFoclFaOEJTZzBBSUFvb0FnQWhBU0FKSUFCQkJHbzJBZ0FnQUNBQk5nSUFDeUFFSUFRb0FnQWlBRUVCYWpZQ0FDQUFJQVk2QUFCQkFDRUFJQVZCMUFCS0RRRWdDaUFLS0FJQVFRRnFOZ0lBREFFTFFYOGhBQXNnREVFUWFpUUFJQUFMVUFFQ2Z5TUFRUkJySWdZa0FDQUdRUWhxSWdVZ0FSQVBJQVVRTzBIUTBBQkI4TkFBSUFJUVpDQURJQVVRaXdFaUFSQklOZ0lBSUFRZ0FSQTROZ0lBSUFBZ0FSQTNJQVVRRGlBR1FSQnFKQUFMTVFBZ0FpMEFBQ0VDQTBBQ1FDQUFJQUZIQkg4Z0FDMEFBQ0FDUncwQklBQUZJQUVMRHdzZ0FFRUJhaUVBREFBTEFBdnRBd0VCZnlNQVFSQnJJZ3drQUNBTUlBQTZBQThDUUFKQUlBQWdCVVlFUUNBQkxRQUFSUTBCUVFBaEFDQUJRUUE2QUFBZ0JDQUVLQUlBSWdGQkFXbzJBZ0FnQVVFdU9nQUFJQWNRQ1VVTkFpQUpLQUlBSWdFZ0NHdEJud0ZLRFFJZ0NpZ0NBQ0VDSUFrZ0FVRUVhallDQUNBQklBSTJBZ0FNQWdzQ1FDQUFJQVpIRFFBZ0J4QUpSUTBBSUFFdEFBQkZEUUZCQUNFQUlBa29BZ0FpQVNBSWEwR2ZBVW9OQWlBS0tBSUFJUUFnQ1NBQlFRUnFOZ0lBSUFFZ0FEWUNBRUVBSVFBZ0NrRUFOZ0lBREFJTFFYOGhBQ0FMSUF0QklHb2dERUVQYWhEVkFTQUxheUlGUVI5S0RRRWdCVUhRMEFCcUxRQUFJUVlDUUFKQUFrQUNRQ0FGUVg1eFFSWnJEZ01CQWdBQ0N5QURJQVFvQWdBaUFVY0VRQ0FCUVFGckxRQUFRZDhBY1NBQ0xRQUFRZjhBY1VjTkJRc2dCQ0FCUVFGcU5nSUFJQUVnQmpvQUFFRUFJUUFNQkFzZ0FrSFFBRG9BQUF3QkN5QUNMQUFBSWdBZ0JrSGZBSEZIRFFBZ0FpQUFRWUFCY2pvQUFDQUJMUUFBUlEwQUlBRkJBRG9BQUNBSEVBbEZEUUFnQ1NnQ0FDSUFJQWhyUVo4QlNnMEFJQW9vQWdBaEFTQUpJQUJCQkdvMkFnQWdBQ0FCTmdJQUN5QUVJQVFvQWdBaUFFRUJhallDQUNBQUlBWTZBQUJCQUNFQUlBVkJGVW9OQVNBS0lBb29BZ0JCQVdvMkFnQU1BUXRCZnlFQUN5QU1RUkJxSkFBZ0FBdFFBUUovSXdCQkVHc2lCaVFBSUFaQkNHb2lCU0FCRUE4Z0JSQXlRZERRQUVIdzBBQWdBaEJ3SUFNZ0JSQ09BU0lCRUVnNkFBQWdCQ0FCRURnNkFBQWdBQ0FCRURjZ0JSQU9JQVpCRUdva0FBdCtBZ0ovQW40akFFR2dBV3NpQkNRQUlBUWdBVFlDUENBRUlBRTJBaFFnQkVGL05nSVlJQVJCRUdvaUJVSUFFRk1nQkNBRklBTkJBUkRqQWlBRUtRTUlJUVlnQkNrREFDRUhJQUlFUUNBQ0lBRWdCQ2dDRkNBRUtBS0lBV29nQkNnQ1BHdHFOZ0lBQ3lBQUlBYzNBd0FnQUNBR053TUlJQVJCb0FGcUpBQUxEUUFnQUNBQklBSkNmeERQQWd1SkFnQUNRQ0FBQkg4Z0FVSC9BRTBOQVFKQVFjaUdBU2dDQUNnQ0FFVUVRQ0FCUVlCL2NVR0F2d05HRFFNTUFRc2dBVUgvRDAwRVFDQUFJQUZCUDNGQmdBRnlPZ0FCSUFBZ0FVRUdka0hBQVhJNkFBQkJBZzhMSUFGQmdFQnhRWURBQTBjZ0FVR0FzQU5QY1VVRVFDQUFJQUZCUDNGQmdBRnlPZ0FDSUFBZ0FVRU1ka0hnQVhJNkFBQWdBQ0FCUVFaMlFUOXhRWUFCY2pvQUFVRUREd3NnQVVHQWdBUnJRZi8vUDAwRVFDQUFJQUZCUDNGQmdBRnlPZ0FESUFBZ0FVRVNka0h3QVhJNkFBQWdBQ0FCUVFaMlFUOXhRWUFCY2pvQUFpQUFJQUZCREhaQlAzRkJnQUZ5T2dBQlFRUVBDd3RCeElFQlFSazJBZ0JCZndWQkFRc1BDeUFBSUFFNkFBQkJBUXVUQXdFSmZ3Si9Ba0FnQUNJQ1FRTnhCRUFEUUNBQ0xRQUFJZ0ZGSUFGQlBVWnlEUUlnQWtFQmFpSUNRUU54RFFBTEN3SkFJQUlvQWdBaUFVRi9jeUFCUVlHQ2hBaHJjVUdBZ1lLRWVIRU5BQU5BSUFGQnZmcjA2UU56SWdGQmYzTWdBVUdCZ29RSWEzRkJnSUdDaEhoeERRRWdBaWdDQkNFQklBSkJCR29oQWlBQlFZR0NoQWhySUFGQmYzTnhRWUNCZ29SNGNVVU5BQXNMQTBBZ0FpSUJMUUFBSWdNRVFDQUJRUUZxSVFJZ0EwRTlSdzBCQ3dzZ0FRd0JDeUFDQ3lBQWF5SUZSUVJBUVFBUEN3SkFJQUFnQldvdEFBQU5BRUhraGdFb0FnQWlCRVVOQUNBRUtBSUFJZ0ZGRFFBRFFBSkFBbjhnQUNFQ1FRQWhCa0VBSUFVaUIwVU5BQm9DUUNBQ0xRQUFJZ05GRFFBRFFBSkFJQUV0QUFBaUNFVU5BQ0FIUVFGcklnZEZJQU1nQ0VkeURRQWdBVUVCYWlFQklBSXRBQUVoQXlBQ1FRRnFJUUlnQXcwQkRBSUxDeUFESVFZTElBWkIvd0Z4SUFFdEFBQnJDMFVFUUNBRUtBSUFJQVZxSWdJdEFBQkJQVVlOQVFzZ0JDZ0NCQ0VCSUFSQkJHb2hCQ0FCRFFFTUFnc0xJQUpCQVdvaENRc2dDUXZoQVFFQ2Z5QUNRUUJISVFNQ1FBSkFBa0FnQUVFRGNVVWdBa1Z5RFFBZ0FVSC9BWEVoQkFOQUlBQXRBQUFnQkVZTkFpQUNRUUZySWdKQkFFY2hBeUFBUVFGcUlnQkJBM0ZGRFFFZ0FnMEFDd3NnQTBVTkFRc0NRQ0FBTFFBQUlBRkIvd0Z4UmlBQ1FRUkpjZzBBSUFGQi93RnhRWUdDaEFoc0lRTURRQ0FBS0FJQUlBTnpJZ1JCZjNNZ0JFR0Jnb1FJYTNGQmdJR0NoSGh4RFFFZ0FFRUVhaUVBSUFKQkJHc2lBa0VEU3cwQUN3c2dBa1VOQUNBQlFmOEJjU0VCQTBBZ0FTQUFMUUFBUmdSQUlBQVBDeUFBUVFGcUlRQWdBa0VCYXlJQ0RRQUxDMEVBQzljREFnSitBbjhqQUVFZ2F5SUVKQUFDUUNBQlF2Ly8vLy8vLy8vLy93Q0RJZ05DZ0lDQWdJQ0F3SUE4ZlNBRFFvQ0FnSUNBZ01EL3d3QjlWQVJBSUFGQ0JJWWdBRUk4aUlRaEF5QUFRdi8vLy8vLy8vLy9ENE1pQUVLQmdJQ0FnSUNBZ0FoYUJFQWdBMEtCZ0lDQWdJQ0FnTUFBZkNFQ0RBSUxJQU5DZ0lDQWdJQ0FnSUJBZlNFQ0lBQkNnSUNBZ0lDQWdJQUloVUlBVWcwQklBSWdBMElCZzN3aEFnd0JDeUFBVUNBRFFvQ0FnSUNBZ01ELy93QlVJQU5DZ0lDQWdJQ0F3UC8vQUZFYlJRUkFJQUZDQklZZ0FFSThpSVJDLy8vLy8vLy8vd09EUW9DQWdJQ0FnSUQ4L3dDRUlRSU1BUXRDZ0lDQWdJQ0FnUGovQUNFQ0lBTkMvLy8vLy8vL3YvL0RBRllOQUVJQUlRSWdBMEl3aUtjaUJVR1I5d0JKRFFBZ0JFRVFhaUFBSUFGQy8vLy8vLy8vUDROQ2dJQ0FnSUNBd0FDRUlnSWdCVUdCOXdCckVDOGdCQ0FBSUFKQmdmZ0FJQVZyRUh3Z0JDa0RDRUlFaGlBRUtRTUFJZ0JDUElpRUlRSWdCQ2tERUNBRUtRTVloRUlBVXEwZ0FFTC8vLy8vLy8vLy93K0RoQ0lBUW9HQWdJQ0FnSUNBQ0ZvRVFDQUNRZ0Y4SVFJTUFRc2dBRUtBZ0lDQWdJQ0FnQWlGUWdCU0RRQWdBa0lCZ3lBQ2ZDRUNDeUFFUVNCcUpBQWdBaUFCUW9DQWdJQ0FnSUNBZ0grRGhMOExSQUVCZnlNQVFSQnJJZ1VrQUNBRklBRWdBaUFESUFSQ2dJQ0FnSUNBZ0lDQWY0VVFQQ0FGS1FNQUlRRWdBQ0FGS1FNSU53TUlJQUFnQVRjREFDQUZRUkJxSkFBTHFRRUJBWHhFQUFBQUFBQUE4RDhoQVFKQUlBQkJnQWhPQkVCRUFBQUFBQUFBNEg4aEFTQUFRZjhQU0FSQUlBQkIvd2RySVFBTUFndEVBQUFBQUFBQThIOGhBU0FBUWYwWElBQkIvUmRJRzBIK0Qyc2hBQXdCQ3lBQVFZRjRTZzBBUkFBQUFBQUFBR0FESVFFZ0FFRzRjRW9FUUNBQVFja0hhaUVBREFFTFJBQUFBQUFBQUFBQUlRRWdBRUh3YUNBQVFmQm9TaHRCa2c5cUlRQUxJQUVnQUVIL0IycXRRalNHdjZJTHhBRUNBWDhDZmtGL0lRTUNRQ0FBUWdCU0lBRkMvLy8vLy8vLy8vLy9BSU1pQkVLQWdJQ0FnSURBLy84QVZpQUVRb0NBZ0lDQWdNRC8vd0JSR3cwQVFRQWdBa0wvLy8vLy8vLy8vLzhBZ3lJRlFvQ0FnSUNBZ01ELy93QldJQVZDZ0lDQWdJQ0F3UC8vQUZFYkRRQWdBQ0FFSUFXRWhGQUVRRUVBRHdzZ0FTQUNnMElBV1FSQVFRQWdBU0FDVXlBQklBSlJHdzBCSUFBZ0FTQUNoWVJDQUZJUEN5QUFRZ0JTSUFFZ0FsVWdBU0FDVVJzTkFDQUFJQUVnQW9XRVFnQlNJUU1MSUFNTGFRRUNmeUFBUWF3b05nSUFJQUFvQWlnaEFRTkFJQUVFUUVFQUlBQWdBVUVCYXlJQlFRSjBJZ0lnQUNnQ0pHb29BZ0FnQUNnQ0lDQUNhaWdDQUJFSEFBd0JDd3NnQUVFY2FoQU9JQUFvQWlBUUVDQUFLQUlrRUJBZ0FDZ0NNQkFRSUFBb0Fqd1FFQ0FBQ3drQUlBQVFqQUVRRUFzSkFDQUFFTGdCRUJBTERBQWdBRUVFYWhCK0dpQUFDLzh2QVJGL0l3QkJJR3NpRXlRQUFuOUI5QUVRR1NJSUJIOENRQ0FJSWdZZ0FDQUJRUU4wRUlRRElnQkJBRXdOQUNBQVFRSjBJUThEUUNBR0lCRkJBblFpQjJvaUFTZ0NBQ0VLSUFFZ0JpQVBRUUowSWhCcUlnRW9BZ0EyQWdBZ0FTQUtOZ0lBSUFZZ0IwRUVjbW9pQVNnQ0FDRUtJQUVnQmlBUVFRUnlhaUlCS0FJQU5nSUFJQUVnQ2pZQ0FDQUdJQWRCQ0hKcUlnRW9BZ0FoQ2lBQklBWWdFRUVJY21vaUFTZ0NBRFlDQUNBQklBbzJBZ0FnQmlBSFFReHlhaUlCS0FJQUlRb2dBU0FHSUJCQkRISnFJZ0VvQWdBMkFnQWdBU0FLTmdJQUlCRkJCR29pRVNBUFFRUnJJZzlJRFFBTFFRRWhFU0FBUVFGTURRQURRQ0FHUVJCcUlRWkJBQ0VQQTBBZ0JpQVBRUUowYWlJQklBRW9BZ0FpQVVFT2RrSDhCM0ZCZ0FocUtBSUFRUVoyUWZ3SGNVR0FFR29vQWdCQkNCQUlJQUZCRm5aQi9BZHhRWUFJYWlnQ0FFRUdka0g4QjNGQmdCQnFLQUlBY3lBQlFRWjJRZndIY1VHQUNHb29BZ0JCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUFGQi93RnhRUUowUVlBSWFpZ0NBRUVHZGtIOEIzRkJnQkJxS0FJQVFSZ1FDSE0yQWdBZ0QwRUJhaUlQUVFSSERRQUxJQkZCQVdvaUVTQUFSdzBBQ3dzZ0FFRUFTQVJBSUFnUUVFRUFEQUlMSUFnZ0FEWUM4QUVnQ0FWQkFBc0xJZ0FFZnlBVElBSXBBQUEzQXhBZ0V5QUNLUUFJTndNWUlBUkJFRThFUUNBRVFRUjJJUlZCQUNFQkEwQWdFeUFES1FBQU53TUFJQk1nQXlrQUNEY0RDQ0FBS0FMd0FTRVVJQUFvQWd3Z0F5Z0FEQ0lDUVJoMElBSkJDSFJCZ0lEOEIzRnlJQUpCQ0haQmdQNERjU0FDUVJoMmNuSnpJZzlCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoRWlBQUtBSUlJQU1vQUFnaUFrRVlkQ0FDUVFoMFFZQ0EvQWR4Y2lBQ1FRaDJRWUQrQTNFZ0FrRVlkbkp5Y3lJUlFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlRNGdBQ2dDQkNBREtBQUVJZ0pCR0hRZ0FrRUlkRUdBZ1B3SGNYSWdBa0VJZGtHQS9nTnhJQUpCR0haeWNuTWlCMEgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VKSUFBb0FnQWdBeWdBQUNJQ1FSaDBJQUpCQ0hSQmdJRDhCM0Z5SUFKQkNIWkJnUDREY1NBQ1FSaDJjbkp6SWd0QkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnaEVDQVBRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUlJUW9nRVVIL0FYRkJBblJCZ0JCcUtBSUFRUmdRQ0NFR0lBZEJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2hDQ0FMUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJSVFRZ0QwSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNDRUNJQkZCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdnRDBFV2RrSDhCM0ZCZ0JCcUtBSUFjeUFIUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJY3lBTFFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSWN5QUFLQUljY3lJTVFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlROGdBQ2dDR0NBQ0lBUWdDQ0FSUVJaMlFmd0hjVUdBRUdvb0FnQnpjM056SWcxQkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFnaEVTQUFLQUlVSUFZZ0NpQVFJQWRCRm5aQi9BZHhRWUFRYWlnQ0FITnpjM01pQlVIL0FYRkJBblJCZ0JCcUtBSUFRUmdRQ0NFSElBQW9BaEFnQ1NBT0lCSWdDMEVXZGtIOEIzRkJnQkJxS0FJQWMzTnpjeUlMUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSVJBZ0RFRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNDRUtJQTFCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWdoQmlBRlFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlRZ2dDMEVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDQ0VFSUF4Qi93RnhRUUowUVlBUWFpZ0NBRUVZRUFnaEFpQU5RUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJQXhCRm5aQi9BZHhRWUFRYWlnQ0FITWdCVUVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDSE1nQzBIL0FYRkJBblJCZ0JCcUtBSUFRUmdRQ0hNZ0FDZ0NMSE1pREVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFU0lBQW9BaWdnQWlBRUlBZ2dEVUVXZGtIOEIzRkJnQkJxS0FJQWMzTnpjeUlOUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJSVE0Z0FDZ0NKQ0FHSUFvZ0VDQUZRUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZ1ZCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWdoQ1NBQUtBSWdJQWNnRVNBUElBdEJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlDMEVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0VRSUF4QkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFnaENpQU5RZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUlJUVlnQlVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFSUlBdEJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hCQ0FNUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFJZ0RVRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDQU1RUloyUWZ3SGNVR0FFR29vQWdCeklBVkJCblpCL0FkeFFZQVFhaWdDQUVFUUVBaHpJQXRCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWh6SUFBb0FqeHpJZ3hCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoRHlBQUtBSTRJQUlnQkNBSUlBMUJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlEVUVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDQ0VSSUFBb0FqUWdCaUFLSUJBZ0JVRVdka0g4QjNGQmdCQnFLQUlBYzNOemN5SUZRZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUlJUWNnQUNnQ01DQUpJQTRnRWlBTFFSWjJRZndIY1VHQUVHb29BZ0J6YzNOeklndEJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2hFQ0FNUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJSVFvZ0RVSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNDRUdJQVZCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoQ0NBTFFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlRUWdERUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VDSUExQkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnZ0RFRVdka0g4QjNGQmdCQnFLQUlBY3lBRlFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSWN5QUxRZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUljeUFBS0FKTWN5SU1RUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUklnQUNnQ1NDQUNJQVFnQ0NBTlFSWjJRZndIY1VHQUVHb29BZ0J6YzNOeklnMUJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hEaUFBS0FKRUlBWWdDaUFRSUFWQkZuWkIvQWR4UVlBUWFpZ0NBSE56YzNNaUJVSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNDRUpJQUFvQWtBZ0J5QVJJQThnQzBFV2RrSDhCM0ZCZ0JCcUtBSUFjM056Y3lJTFFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlSQWdERUVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDQ0VLSUExQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFnaEJpQUZRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUWdnQzBFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFRUlBeEIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBZ2hBaUFOUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSUF4QkZuWkIvQWR4UVlBUWFpZ0NBSE1nQlVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0hNZ0MwSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNITWdBQ2dDWEhNaURFRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDRVBJQUFvQWxnZ0FpQUVJQWdnRFVFV2RrSDhCM0ZCZ0JCcUtBSUFjM056Y3lJTlFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlSRWdBQ2dDVkNBR0lBb2dFQ0FGUVJaMlFmd0hjVUdBRUdvb0FnQnpjM056SWdWQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFnaEJ5QUFLQUpRSUFrZ0RpQVNJQXRCRm5aQi9BZHhRWUFRYWlnQ0FITnpjM01pQzBFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFUUlBeEJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hDaUFOUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFZZ0JVRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDRUlJQXRCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWdoQkNBTVFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSUlRSWdEVUVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0FNUVJaMlFmd0hjVUdBRUdvb0FnQnpJQVZCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUF0Qi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9BbXh6SWd4QkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnaEVpQUFLQUpvSUFJZ0JDQUlJQTFCRm5aQi9BZHhRWUFRYWlnQ0FITnpjM01pRFVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFT0lBQW9BbVFnQmlBS0lCQWdCVUVXZGtIOEIzRkJnQkJxS0FJQWMzTnpjeUlGUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFrZ0FDZ0NZQ0FISUJFZ0R5QUxRUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZ3RCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoRUNBTVFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlRb2dEVUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VHSUFWQkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnaENDQUxRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUlJUVFnREVIL0FYRkJBblJCZ0JCcUtBSUFRUmdRQ0NFQ0lBMUJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dERUVXZGtIOEIzRkJnQkJxS0FJQWN5QUZRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFMUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBSjhjeUlNUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSVE4Z0FDZ0NlQ0FDSUFRZ0NDQU5RUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZzFCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWdoRVNBQUtBSjBJQVlnQ2lBUUlBVkJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlCVUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VISUFBb0FuQWdDU0FPSUJJZ0MwRVdka0g4QjNGQmdCQnFLQUlBYzNOemN5SU9RUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUkFnREVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFS0lBMUIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBZ2hCaUFGUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSVFnZ0RrRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNDRUVJQXhCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWdoQWlBTlFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBeEJGblpCL0FkeFFZQVFhaWdDQUhNZ0JVRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNITWdEa0gvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDSE1nQUNnQ2pBRnpJZ2xCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdnQUNnQ2dBRWdCeUFSSUE4Z0RrRVdka0g4QjNGQmdCQnFLQUlBYzNOemN5SUhRUloyUWZ3SGNVR0FFR29vQWdCeklBQW9Bb2dCSUFJZ0JDQUlJQTFCRm5aQi9BZHhRWUFRYWlnQ0FITnpjM01pQkVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0hNZ0FDZ0NoQUVnQmlBS0lCQWdCVUVXZGtIOEIzRkJnQkJxS0FJQWMzTnpjeUlDUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBS1FBWE1oQlNBSFFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBSkJGblpCL0FkeFFZQVFhaWdDQUhNZ0NVRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNITWdCRUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDSE1nQUNnQ2xBRnpJUklnQWtFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NBRVFSWjJRZndIY1VHQUVHb29BZ0J6SUFkQkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFoeklBbEIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBaHpJQUFvQXBnQmN5RU9BbjhnQkVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NBSlFSWjJRZndIY1VHQUVHb29BZ0J6SUFKQkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFoeklBZEIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBaHpJQUFvQXB3QmN5SUpJQlJCQzBnTkFCb2dDVUVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0VQSUE1QkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFnaEVTQVNRZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUlJUWNnQlVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFUUlBbEJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hDaUFPUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFZZ0VrRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDRUlJQVZCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWdoQkNBSlFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSUlRSWdEa0VPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0FKUVJaMlFmd0hjVUdBRUdvb0FnQnpJQkpCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUFWQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9BcXdCY3lJSlFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBQW9BcUFCSUFjZ0VTQVBJQVZCRm5aQi9BZHhRWUFRYWlnQ0FITnpjM01pQjBFV2RrSDhCM0ZCZ0JCcUtBSUFjeUFBS0FLb0FTQUNJQVFnQ0NBT1FSWjJRZndIY1VHQUVHb29BZ0J6YzNOeklnUkJCblpCL0FkeFFZQVFhaWdDQUVFUUVBaHpJQUFvQXFRQklBWWdDaUFRSUJKQkZuWkIvQWR4UVlBUWFpZ0NBSE56YzNNaUFrSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNITWdBQ2dDc0FGeklRVWdCMEVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0FDUVJaMlFmd0hjVUdBRUdvb0FnQnpJQWxCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUFSQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9BclFCY3lFU0lBSkJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dCRUVXZGtIOEIzRkJnQkJxS0FJQWN5QUhRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFKUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBSzRBWE1oRGlBRVFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBbEJGblpCL0FkeFFZQVFhaWdDQUhNZ0FrRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNITWdCMEgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDSE1nQUNnQ3ZBRnpJZ2tnRkVFTlNBMEFHaUFKUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSVE4Z0RrRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNDRVJJQkpCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWdoQnlBRlFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlSQWdDVUVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDQ0VLSUE1Qi93RnhRUUowUVlBUWFpZ0NBRUVZRUFnaEJpQVNRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUWdnQlVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFRUlBbEIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBZ2hBaUFPUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSUFsQkZuWkIvQWR4UVlBUWFpZ0NBSE1nRWtFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0hNZ0JVSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNITWdBQ2dDekFGeklnbEJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dBQ2dDd0FFZ0J5QVJJQThnQlVFV2RrSDhCM0ZCZ0JCcUtBSUFjM056Y3lJSFFSWjJRZndIY1VHQUVHb29BZ0J6SUFBb0FzZ0JJQUlnQkNBSUlBNUJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlCRUVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDSE1nQUNnQ3hBRWdCaUFLSUJBZ0VrRVdka0g4QjNGQmdCQnFLQUlBYzNOemN5SUNRZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUljeUFBS0FMUUFYTWhCU0FIUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSUFKQkZuWkIvQWR4UVlBUWFpZ0NBSE1nQ1VFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0hNZ0JFSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNITWdBQ2dDMUFGeklSSWdBa0VPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0FFUVJaMlFmd0hjVUdBRUdvb0FnQnpJQWRCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUFsQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9BdGdCY3lFT0lBUkJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dDVUVXZGtIOEIzRkJnQkJxS0FJQWN5QUNRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFIUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBTGNBWE1MSVFnZ0F5QUFJQlJCQkhScUlnUW9BZ0FnRWtIL0FYRkJnQmhxTFFBQUlBaEJFSFpCL3dGeFFZQVlhaTBBQUVFUWRDQUZRUmgyUVlBWWFpMEFBRUVZZEhJZ0RrRUlka0gvQVhGQmdCaHFMUUFBUVFoMGNuSnpJZ0pCR0hRZ0FrRUlkRUdBZ1B3SGNYSWdBa0VJZGtHQS9nTnhJQUpCR0haeWNqWUFBQ0FESUFRb0FnUWdEa0gvQVhGQmdCaHFMUUFBSUFWQkVIWkIvd0Z4UVlBWWFpMEFBRUVRZENBU1FSaDJRWUFZYWkwQUFFRVlkSElnQ0VFSWRrSC9BWEZCZ0JocUxRQUFRUWgwY25KeklnSkJHSFFnQWtFSWRFR0FnUHdIY1hJZ0FrRUlka0dBL2dOeElBSkJHSFp5Y2pZQUJDQURJQVFvQWdnZ0NFSC9BWEZCZ0JocUxRQUFJQkpCRUhaQi93RnhRWUFZYWkwQUFFRVFkQ0FPUVJoMlFZQVlhaTBBQUVFWWRISWdCVUVJZGtIL0FYRkJnQmhxTFFBQVFRaDBjbkp6SWdKQkdIUWdBa0VJZEVHQWdQd0hjWElnQWtFSWRrR0EvZ054SUFKQkdIWnljallBQ0NBRElBUW9BZ3dnQlVIL0FYRkJnQmhxTFFBQUlBNUJFSFpCL3dGeFFZQVlhaTBBQUVFUWRDQUlRUmgyUVlBWWFpMEFBRUVZZEhJZ0VrRUlka0gvQVhGQmdCaHFMUUFBUVFoMGNuSnpJZ0pCR0hRZ0FrRUlkRUdBZ1B3SGNYSWdBa0VJZGtHQS9nTnhJQUpCR0haeWNqWUFERUVBSVFJRFFDQUNJQU5xSWdRZ0JDMEFBQ0FUUVJCcUlBSnFMUUFBY3pvQUFDQUNRUUZxSWdKQkVFY05BQXNnRXlBVEtRTUlOd01ZSUJNZ0V5a0RBRGNERUNBRFFSQnFJUU1nQVVFQmFpSUJJQlZIRFFBTEN5QUFFQkJCQUFWQmZ3c2FJQk5CSUdva0FBdVdBUUVDZnlNQVFSQnJJZ0FrQUFKQUlBQkJER29nQUVFSWFoQUREUUJCNUlZQklBQW9BZ3hCQW5SQkJHb1FHU0lCTmdJQUlBRkZEUUFnQUNnQ0NCQVpJZ0VFUUVIa2hnRW9BZ0FnQUNnQ0RFRUNkR3BCQURZQ0FFSGtoZ0VvQWdBZ0FSQUNSUTBCQzBIa2hnRkJBRFlDQUFzZ0FFRVFhaVFBUWJpQkFVR3ZIaEJVR2tISWhnRkIySVVCTmdJQVFZQ0dBVUVxTmdJQUN3UUFRWDhMV1FFQmZ5QUFJQUFvQWtnaUFVRUJheUFCY2pZQ1NDQUFLQUlBSWdGQkNIRUVRQ0FBSUFGQklISTJBZ0JCZnc4TElBQkNBRGNDQkNBQUlBQW9BaXdpQVRZQ0hDQUFJQUUyQWhRZ0FDQUJJQUFvQWpCcU5nSVFRUUFMRkFBZ0FFRU1haUlBSUFBUWt3RkJBV29Ra2dFTGZBRUNmeUFBSUFBb0FrZ2lBVUVCYXlBQmNqWUNTQ0FBS0FJVUlBQW9BaHhIQkVBZ0FFRUFRUUFnQUNnQ0pCRUVBQm9MSUFCQkFEWUNIQ0FBUWdBM0F4QWdBQ2dDQUNJQlFRUnhCRUFnQUNBQlFTQnlOZ0lBUVg4UEN5QUFJQUFvQWl3Z0FDZ0NNR29pQWpZQ0NDQUFJQUkyQWdRZ0FVRWJkRUVmZFF2VkFnRUNmd0pBSUFBZ0FVWU5BQ0FCSUFBZ0Ftb2lCR3RCQUNBQ1FRRjBhMDBFUUNBQUlBRWdBaEJDR2c4TElBQWdBWE5CQTNFaEF3SkFBa0FnQUNBQlNRUkFJQU1OQWlBQVFRTnhSUTBCQTBBZ0FrVU5CQ0FBSUFFdEFBQTZBQUFnQVVFQmFpRUJJQUpCQVdzaEFpQUFRUUZxSWdCQkEzRU5BQXNNQVFzQ1FDQUREUUFnQkVFRGNRUkFBMEFnQWtVTkJTQUFJQUpCQVdzaUFtb2lBeUFCSUFKcUxRQUFPZ0FBSUFOQkEzRU5BQXNMSUFKQkEwME5BQU5BSUFBZ0FrRUVheUlDYWlBQklBSnFLQUlBTmdJQUlBSkJBMHNOQUFzTElBSkZEUUlEUUNBQUlBSkJBV3NpQW1vZ0FTQUNhaTBBQURvQUFDQUNEUUFMREFJTElBSkJBMDBOQUFOQUlBQWdBU2dDQURZQ0FDQUJRUVJxSVFFZ0FFRUVhaUVBSUFKQkJHc2lBa0VEU3cwQUN3c2dBa1VOQUFOQUlBQWdBUzBBQURvQUFDQUFRUUZxSVFBZ0FVRUJhaUVCSUFKQkFXc2lBZzBBQ3dzTGl3d0JCbjhnQUNBQmFpRUZBa0FDUUNBQUtBSUVJZ0pCQVhFTkFDQUNRUU54UlEwQklBQW9BZ0FpQWlBQmFpRUJBa0FnQUNBQ2F5SUFRZHlCQVNnQ0FFY0VRQ0FDUWY4QlRRUkFJQUFvQWdnaUJDQUNRUU4ySWdKQkEzUkI4SUVCYWtZYUlBQW9BZ3dpQXlBRVJ3MENRY2lCQVVISWdRRW9BZ0JCZmlBQ2QzRTJBZ0FNQXdzZ0FDZ0NHQ0VHQWtBZ0FDQUFLQUlNSWdOSEJFQWdBQ2dDQ0NJQ1FkaUJBU2dDQUVrYUlBSWdBellDRENBRElBSTJBZ2dNQVFzQ1FDQUFRUlJxSWdJb0FnQWlCQTBBSUFCQkVHb2lBaWdDQUNJRURRQkJBQ0VEREFFTEEwQWdBaUVISUFRaUEwRVVhaUlDS0FJQUlnUU5BQ0FEUVJCcUlRSWdBeWdDRUNJRURRQUxJQWRCQURZQ0FBc2dCa1VOQWdKQUlBQWdBQ2dDSENJRVFRSjBRZmlEQVdvaUFpZ0NBRVlFUUNBQ0lBTTJBZ0FnQXcwQlFjeUJBVUhNZ1FFb0FnQkJmaUFFZDNFMkFnQU1CQXNnQmtFUVFSUWdCaWdDRUNBQVJodHFJQU0yQWdBZ0EwVU5Bd3NnQXlBR05nSVlJQUFvQWhBaUFnUkFJQU1nQWpZQ0VDQUNJQU0yQWhnTElBQW9BaFFpQWtVTkFpQURJQUkyQWhRZ0FpQUROZ0lZREFJTElBVW9BZ1FpQWtFRGNVRURSdzBCUWRDQkFTQUJOZ0lBSUFVZ0FrRitjVFlDQkNBQUlBRkJBWEkyQWdRZ0JTQUJOZ0lBRHdzZ0JDQUROZ0lNSUFNZ0JEWUNDQXNDUUNBRktBSUVJZ0pCQW5GRkJFQWdCVUhnZ1FFb0FnQkdCRUJCNElFQklBQTJBZ0JCMUlFQlFkU0JBU2dDQUNBQmFpSUJOZ0lBSUFBZ0FVRUJjallDQkNBQVFkeUJBU2dDQUVjTkEwSFFnUUZCQURZQ0FFSGNnUUZCQURZQ0FBOExJQVZCM0lFQktBSUFSZ1JBUWR5QkFTQUFOZ0lBUWRDQkFVSFFnUUVvQWdBZ0FXb2lBVFlDQUNBQUlBRkJBWEkyQWdRZ0FDQUJhaUFCTmdJQUR3c2dBa0Y0Y1NBQmFpRUJBa0FnQWtIL0FVMEVRQ0FGS0FJSUlnUWdBa0VEZGlJQ1FRTjBRZkNCQVdwR0dpQUVJQVVvQWd3aUEwWUVRRUhJZ1FGQnlJRUJLQUlBUVg0Z0FuZHhOZ0lBREFJTElBUWdBellDRENBRElBUTJBZ2dNQVFzZ0JTZ0NHQ0VHQWtBZ0JTQUZLQUlNSWdOSEJFQWdCU2dDQ0NJQ1FkaUJBU2dDQUVrYUlBSWdBellDRENBRElBSTJBZ2dNQVFzQ1FDQUZRUlJxSWdRb0FnQWlBZzBBSUFWQkVHb2lCQ2dDQUNJQ0RRQkJBQ0VEREFFTEEwQWdCQ0VISUFJaUEwRVVhaUlFS0FJQUlnSU5BQ0FEUVJCcUlRUWdBeWdDRUNJQ0RRQUxJQWRCQURZQ0FBc2dCa1VOQUFKQUlBVWdCU2dDSENJRVFRSjBRZmlEQVdvaUFpZ0NBRVlFUUNBQ0lBTTJBZ0FnQXcwQlFjeUJBVUhNZ1FFb0FnQkJmaUFFZDNFMkFnQU1BZ3NnQmtFUVFSUWdCaWdDRUNBRlJodHFJQU0yQWdBZ0EwVU5BUXNnQXlBR05nSVlJQVVvQWhBaUFnUkFJQU1nQWpZQ0VDQUNJQU0yQWhnTElBVW9BaFFpQWtVTkFDQURJQUkyQWhRZ0FpQUROZ0lZQ3lBQUlBRkJBWEkyQWdRZ0FDQUJhaUFCTmdJQUlBQkIzSUVCS0FJQVJ3MEJRZENCQVNBQk5nSUFEd3NnQlNBQ1FYNXhOZ0lFSUFBZ0FVRUJjallDQkNBQUlBRnFJQUUyQWdBTElBRkIvd0ZOQkVBZ0FVRURkaUlDUVFOMFFmQ0JBV29oQVFKL1FjaUJBU2dDQUNJRFFRRWdBblFpQW5GRkJFQkJ5SUVCSUFJZ0EzSTJBZ0FnQVF3QkN5QUJLQUlJQ3lFQ0lBRWdBRFlDQ0NBQ0lBQTJBZ3dnQUNBQk5nSU1JQUFnQWpZQ0NBOExRUjhoQWlBQVFnQTNBaEFnQVVILy8vOEhUUVJBSUFGQkNIWWlBaUFDUVlEK1AycEJFSFpCQ0hFaUJIUWlBaUFDUVlEZ0gycEJFSFpCQkhFaUEzUWlBaUFDUVlDQUQycEJFSFpCQW5FaUFuUkJEM1lnQXlBRWNpQUNjbXNpQWtFQmRDQUJJQUpCRldwMlFRRnhja0VjYWlFQ0N5QUFJQUkyQWh3Z0FrRUNkRUg0Z3dGcUlRY0NRQUpBUWN5QkFTZ0NBQ0lFUVFFZ0FuUWlBM0ZGQkVCQnpJRUJJQU1nQkhJMkFnQWdCeUFBTmdJQUlBQWdCellDR0F3QkN5QUJRUUJCR1NBQ1FRRjJheUFDUVI5R0czUWhBaUFIS0FJQUlRTURRQ0FESWdRb0FnUkJlSEVnQVVZTkFpQUNRUjEySVFNZ0FrRUJkQ0VDSUFRZ0EwRUVjV29pQjBFUWFpZ0NBQ0lERFFBTElBY2dBRFlDRUNBQUlBUTJBaGdMSUFBZ0FEWUNEQ0FBSUFBMkFnZ1BDeUFFS0FJSUlnRWdBRFlDRENBRUlBQTJBZ2dnQUVFQU5nSVlJQUFnQkRZQ0RDQUFJQUUyQWdnTEMyUUFJQUFnQVVJb2hrS0FnSUNBZ0lEQS93Q0RJQUZDT0lhRUlBRkNHSVpDZ0lDQWdJRGdQNE1nQVVJSWhrS0FnSUNBOEIrRGhJUWdBVUlJaUVLQWdJRDRENE1nQVVJWWlFS0FnUHdIZzRRZ0FVSW9pRUtBL2dPRElBRkNPSWlFaElRM0FBQUxEd0FnQUNnQ0RCb2dBRUVBTmdJTUM0Y0JBUVIvSXdCQkVHc2lCU1FBSXdCQkVHc2lBeVFBQWtBZ0FVRnZUUVJBQWtBZ0FVRUtUUVJBSUFBZ0FSQTZJQUFoQkF3QkN5QUFJQUVRa1FGQkFXb2lCaEJnSWdRUVRTQUFJQVlRVENBQUlBRVFPUXNnQkNBQklBSVE5Z0VnQTBFQU9nQVBJQUVnQkdvZ0EwRVBhaEEwSUFOQkVHb2tBQXdCQ3hBWEFBc2dCVUVRYWlRQUlBQUxWUUVDZnlBQUtBSUVJUVFDZjBFQUlBSkZEUUFhSUFSQkNIVWlCU0FFUVFGeFJRMEFHaUFDS0FJQUlBVVF4QUVMSVFVZ0FDZ0NBQ0lBSUFFZ0FpQUZhaUFEUVFJZ0JFRUNjUnNnQUNnQ0FDZ0NIQkVJQUFzakFDQUFRUUEyQWd3Z0FDQUJOZ0lFSUFBZ0FUWUNBQ0FBSUFGQkFXbzJBZ2dnQUF1N0FRRURmeU1BUVJCcklnVWtBQ0FDUWUvLy8vOERJZ1lnQVd0TkJFQWdBQkFOSVFjZ0FBSi9JQUVnQmtFQmRrRVFhMGtFUUNBRklBRkJBWFEyQWdnZ0JTQUJJQUpxTmdJTUlBVkJER29nQlVFSWFoQjJLQUlBRUlJQkRBRUxJQVpCQVdzTFFRRnFJZ1lRZ1FFaEFpQUVCRUFnQWlBSElBUVFaZ3NnQXlBRWF5SURCRUFnQkVFQ2RDSUVJQUpxSUFRZ0Iyb2dBeEJtQ3lBQlFRRkhCRUFnQnhBUUN5QUFJQUlRVFNBQUlBWVFUQ0FGUVJCcUpBQVBDeEFYQUF1RUFnRURmeU1BUVJCcklnZ2tBQ0FDUWUvLy8vOERJZ2tnQVVGL2MycE5CRUFnQUJBTklRb2dBQUovSUFFZ0NVRUJka0VRYTBrRVFDQUlJQUZCQVhRMkFnZ2dDQ0FCSUFKcU5nSU1JQWhCREdvZ0NFRUlhaEIyS0FJQUVJSUJEQUVMSUFsQkFXc0xRUUZxSWdrUWdRRWhBaUFFQkVBZ0FpQUtJQVFRWmdzZ0JnUkFJQVJCQW5RZ0Ftb2dCeUFHRUdZTElBTWdCQ0FGYW1zaUF3UkFJQVJCQW5RaUJ5QUNhaUFHUVFKMGFpQUhJQXBxSUFWQkFuUnFJQU1RWmdzZ0FVRUJSd1JBSUFvUUVBc2dBQ0FDRUUwZ0FDQUpFRXdnQUNBRUlBWnFJQU5xSWdBUU9TQUlRUUEyQWdRZ0FpQUFRUUowYWlBSVFRUnFFRE1nQ0VFUWFpUUFEd3NRRndBTFdBRURmMEc0Z1FFUURTRURRYmlCQVJBSklRRWpBRUVRYXlJQ0pBQWdBaUFBT2dBUFFYOGhBQ0FCQkVBZ0FRUi9JQU1nQWl3QUR4QmVJQUVRM0FFRlFRQUxJZ0FnQTJ0QmZ5QUFHeUVBQ3lBQ1FSQnFKQUFnQUF0d0FRTi9Jd0JCRUdzaUF5UUFJQUpCYjAwRVFBSkFJQUpCQ2swRVFDQUFJQUlRT2lBQUlRUU1BUXNnQUNBQ0VKRUJRUUZxSWdVUVlDSUVFRTBnQUNBRkVFd2dBQ0FDRURrTElBUWdBU0FDRUZVZ0EwRUFPZ0FQSUFJZ0JHb2dBMEVQYWhBMElBTkJFR29rQUE4TEVCY0FDeElBSUFFRVFDQUFJQUlRWGlBQkVFWWFDd3ZzQVFFRGZ5TUFRUkJySWdna0FDQUNRVzhpQ1NBQlFYOXphazBFUUNBQUVBMGhDZ0ovSUFFZ0NVRUJka0VRYTBrRVFDQUlJQUZCQVhRMkFnZ2dDQ0FCSUFKcU5nSU1JQWhCREdvZ0NFRUlhaEIyS0FJQUVKRUJEQUVMSUFsQkFXc0xRUUZxSWdrUVlDRUNJQVFFUUNBQ0lBb2dCQkJWQ3lBR0JFQWdBaUFFYWlBSElBWVFWUXNnQXlBRUlBVnFheUlEQkVBZ0FpQUVhaUFHYWlBRUlBcHFJQVZxSUFNUVZRc2dBVUVLUndSQUlBb1FFQXNnQUNBQ0VFMGdBQ0FKRUV3Z0FDQUVJQVpxSUFOcUlnQVFPU0FJUVFBNkFBY2dBQ0FDYWlBSVFRZHFFRFFnQ0VFUWFpUUFEd3NRRndBTEpBRUJmeU1BUVJCcklnRWtBQ0FCSUFBMkFnZ2dBU2dDQ0NFQUlBRkJFR29rQUNBQUN3a0FJQUFRRmpZQ0FBc3JBUUYvSUFBb0FnUWhBZ05BSUFFZ0FrY0VRQ0FBRUhRYUlBSkJCR3NoQWd3QkN3c2dBQ0FCTmdJRUN5b0FJd0JCRUdzaUFpUUFBa0FnQUNBQlJnUkFJQUJCQURvQWVBd0JDeUFCRUJBTElBSkJFR29rQUFzY0FDQUJRZi8vLy84RFN3UkFRZmdjRUtnQ0FBc2dBVUVDZEJCZ0N3a0FJQUZCQURZQ0FBczJBRUdnbFFFb0FnQWFRYUNWQVNnQ0FFR2dsUUVRYzBFQ2RHb2FRYUNWQVNnQ0FFR2dsUUVRYzBFQ2RHb2FRYUNWQVNnQ0FCb0xQUUVCZnlNQVFSQnJJZ0lrQUFKQUlBQXRBSGdnQVVFZVMzSkZCRUFnQUVFQk9nQjREQUVMSUFKQkNHb2dBUkQ4QVNFQUN5QUNRUkJxSkFBZ0FBdEZBUUovSXdCQkVHc2lBQ1FBUWFDVkFSQjBHaUFBUWYvLy8vOEROZ0lNSUFCQi8vLy8vd2MyQWdnZ0FFRU1haUFBUVFocUVLSUJLQUlBSVFFZ0FFRVFhaVFBSUFFTENRQWdBQkRKQVJBUUN3MEFJQUFvQWdBZ0FTZ0NBRWtMeUFFQkJIOGpBRUVnYXlJRkpBQWdCU0FCS1FBQU53TVFJQVVnQVNrQUNEY0RHQUpBSUFOQkVFa0VRQ0FDSVFFTUFRc2dBMEVFZGlFSElBSWhBUU5BSUFBZ0JVRVFhaUlJSUFRUXBnRWdCQ0FCRUp3QklBUkJFR29oQkNBQlFSQnFJUUVnQ0JEcEFTQUdRUUZxSWdZZ0IwY05BQXNMSUFJZ0Eyb2dBV3NpQWdSQUlBQWdCVUVRYWlBRkVLWUJRUUFoQmdOQUlBUWdCU0FHYWkwQUFDQUJMUUFBY3pvQUFDQUVRUUZxSVFRZ0FVRUJhaUVCSUFaQkFXb2lCaUFDUncwQUN3c2dCVUVnYWlRQUN4VUFJQUJCNk5NQU5nSUFJQUJCRUdvUUNob2dBQXNWQUNBQVFjRFRBRFlDQUNBQVFReHFFQW9hSUFBTEp3QWdBeUFES0FJQUlBSWdBV3NpQUdzaUFqWUNBQ0FBUVFCS0JFQWdBaUFCSUFBUVFob0xDd1FBUVFRTFFBRUNmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBVUVJYWlBQlFReHFFRkloQUVFRVFRRkJ5SVlCS0FJQUtBSUFHeUVDSUFBUVVTQUJRUkJxSkFBZ0FnczhBUUYvSXdCQkVHc2lCU1FBSUFVZ0JEWUNEQ0FGUVFocUlBVkJER29RVWlFRUlBQWdBU0FDSUFNUXR3RWhBQ0FFRUZFZ0JVRVFhaVFBSUFBTEVnQWdCQ0FDTmdJQUlBY2dCVFlDQUVFREN4QUFJQUFnQVJEUEFTQUFJQUkyQWdRTEtBRUJmeUFBUWR6U0FEWUNBQUpBSUFBb0FnZ2lBVVVOQUNBQUxRQU1SUTBBSUFFUUVBc2dBQXNQQUNBQUtBSUFJQUFvQWdRMkFnUUw1QWtCQVg4Q1FFSGtpQUV0QUFCQkFYRU5BRUhraUFFUUpFVU5BQUpBUWRpSUFTMEFBRUVCY1EwQVFkaUlBUkFrUlEwQVFaaVZBUkFiUVppVkFVSEkwZ0EyQWdBakFFRVFheUlCSkFCQm9KVUJRZ0EzQXdBZ0FVRUFOZ0lNUWFpVkFTQUJRUXhxRU04QlFhaVdBVUVBT2dBQUlBRkJFR29rQUJDQUFrRWVTUVJBRUJjQUMwR2dsUUZCb0pVQkVIUkJIaEQvQVNJQk5nSUFRYVNWQVNBQk5nSUFRYUNWQVJCRElBRkIrQUJxTmdJQVFRQVEvZ0ZCSGhDV0FrR3dsZ0ZCbWg0UVZCcEJvSlVCRUZBaEFVR2dsUUVRbFFKQm9KVUJJQUVRbEFKQjRKSUJFQnRCNEpJQlFmVGNBRFlDQUVIZ2tnRkJxSWNCRUJvUUhFSG9rZ0VRRzBIb2tnRkJsTjBBTmdJQVFlaVNBVUd3aHdFUUdoQWNRZkNTQVJBYlFmeVNBVUVBT2dBQVFmaVNBVUVBTmdJQVFmQ1NBVUhjMGdBMkFnQkIrSklCUWFBeUtBSUFOZ0lBUWZDU0FVSDBpQUVRR2hBY1FZQ1RBUkFiUVlDVEFVSEExZ0EyQWdCQmdKTUJRZXlJQVJBYUVCeEJpSk1CRUJ0QmlKTUJRZFRYQURZQ0FFR0lrd0ZCL0lnQkVCb1FIRUdRa3dFUUcwR1Frd0ZCa05NQU5nSUFRWmlUQVJBV05nSUFRWkNUQVVHRWlRRVFHaEFjUWFDVEFSQWJRYUNUQVVIbzJBQTJBZ0JCb0pNQlFZeUpBUkFhRUJ4QnFKTUJFQnRCcUpNQlFkelpBRFlDQUVHb2t3RkJsSWtCRUJvUUhFR3drd0VRRzBHNGt3RkJydGdBT3dFQVFiQ1RBVUhBMHdBMkFnQkJ2Sk1CRUJFYVFiQ1RBVUdjaVFFUUdoQWNRY2lUQVJBYlFkQ1RBVUt1Z0lDQXdBVTNBZ0JCeUpNQlFlalRBRFlDQUVIWWt3RVFFUnBCeUpNQlFhU0pBUkFhRUJ4QjZKTUJFQnRCNkpNQlFiVGRBRFlDQUVIb2t3RkJ1SWNCRUJvUUhFSHdrd0VRRzBId2t3RkJxTjhBTmdJQVFmQ1RBVUhBaHdFUUdoQWNRZmlUQVJBYlFmaVRBVUg4NEFBMkFnQkIrSk1CUWNpSEFSQWFFQnhCZ0pRQkVCdEJnSlFCUWVUaUFEWUNBRUdBbEFGQjBJY0JFQm9RSEVHSWxBRVFHMEdJbEFGQnZPb0FOZ0lBUVlpVUFVSDRod0VRR2hBY1FaQ1VBUkFiUVpDVUFVSFE2d0EyQWdCQmtKUUJRWUNJQVJBYUVCeEJtSlFCRUJ0Qm1KUUJRY1RzQURZQ0FFR1lsQUZCaUlnQkVCb1FIRUdnbEFFUUcwR2dsQUZCdU8wQU5nSUFRYUNVQVVHUWlBRVFHaEFjUWFpVUFSQWJRYWlVQVVHczdnQTJBZ0JCcUpRQlFaaUlBUkFhRUJ4QnNKUUJFQnRCc0pRQlFkRHZBRFlDQUVHd2xBRkJvSWdCRUJvUUhFRzRsQUVRRzBHNGxBRkI5UEFBTmdJQVFiaVVBVUdvaUFFUUdoQWNRY0NVQVJBYlFjQ1VBVUdZOGdBMkFnQkJ3SlFCUWJDSUFSQWFFQnhCeUpRQkVCdEIwSlFCUVlEOEFEWUNBRUhJbEFGQnJPUUFOZ0lBUWRDVUFVSGM1QUEyQWdCQnlKUUJRZGlIQVJBYUVCeEIySlFCRUJ0QjRKUUJRYVQ4QURZQ0FFSFlsQUZCdE9ZQU5nSUFRZUNVQVVIazVnQTJBZ0JCMkpRQlFlQ0hBUkFhRUJ4QjZKUUJFQnRCOEpRQkVQa0JRZWlVQVVHZzZBQTJBZ0JCNkpRQlFlaUhBUkFhRUJ4QitKUUJFQnRCZ0pVQkVQa0JRZmlVQVVHODZRQTJBZ0JCK0pRQlFmQ0hBUkFhRUJ4QmlKVUJFQnRCaUpVQlFienpBRFlDQUVHSWxRRkJ1SWdCRUJvUUhFR1FsUUVRRzBHUWxRRkJ0UFFBTmdJQVFaQ1ZBVUhBaUFFUUdoQWNRZENJQVVHWWxRRTJBZ0JCMUlnQlFkQ0lBVFlDQUVIWWlBRVFJd3RCM0lnQlFkU0lBU2dDQUJDUEFrSGdpQUZCM0lnQk5nSUFRZVNJQVJBakN5QUFRZUNJQVNnQ0FDZ0NBQ0lBTmdJQUlBQVF6UUVMRXdBZ0FDQUJLQUlBSWdBMkFnQWdBQkROQVFzeUFDQUFLQUlBR2lBQUtBSUFJQUFRYzBFQ2RHb2FJQUFvQWdBZ0FCQlFRUUowYWhvZ0FDZ0NBQ0FBRUhOQkFuUnFHZ3NUQUNBQUlBQW9BZ0JCQVdzaUFEWUNBQ0FBQzI4QkFuOGdBRUhJMGdBMkFnQWdBRUVJYWlFQkEwQWdBUkJRSUFKTEJFQWdBU0FDRUhjb0FnQUVRQ0FCSUFJUWR5Z0NBQkNqQVFzZ0FrRUJhaUVDREFFTEN5QUFRWmdCYWhBS0dpQUJFSkFDSUFFb0FnQUVRQ0FCRUpVQ0lBRVFkQ0FCS0FJQUlBRVFjeEQ3QVFzZ0FBc01BQ0FCSUFJdEFBQTZBQUFMS2dBZ0FDZ0NBQm9nQUNnQ0FDQUFFSE5CQW5ScUdpQUFLQUlBR2lBQUtBSUFJQUFRVUVFQ2RHb2FDd3dBSUFBZ0FDZ0NBQkQ2QVF0eUFRTi9Jd0JCRUdzaUFTUUFJQUZCb0pVQk5nSUFJQUZCcEpVQktBSUFJZ0kyQWdRZ0FTQUNJQUJCQW5ScU5nSUlJQUVpQXlnQ0JDRUFJQU1vQWdnaEFnTkFJQUFnQWtZRVFDQURFSTBDSUFGQkVHb2tBQVZCb0pVQkVIUWdBQkQ5QVNBRElBQkJCR29pQURZQ0JBd0JDd3NMSUFBZ0FFR1Ewd0EyQWdBZ0FDZ0NDQkFXUndSQUlBQW9BZ2dRMHdJTElBQUxCQUJCZnd2aUJRRUtmeU1BUVJCckloTWtBQ0FDSUFBMkFnQWdBMEdBQkhFaEZTQUhRUUowSVJZRFFDQVVRUVJHQkVBZ0RSQUpRUUZMQkVBZ0V5QU5FRUEyQWdnZ0FpQVRRUWhxUVFFUW5nSWdEUkJ0SUFJb0FnQVFwQUUyQWdBTElBTkJzQUZ4SWdOQkVFY0VRQ0FCSUFOQklFWUVmeUFDS0FJQUJTQUFDellDQUFzZ0UwRVFhaVFBQlFKQUFrQUNRQUpBQWtBQ1FDQUlJQlJxTEFBQURnVUFBUU1DQkFVTElBRWdBaWdDQURZQ0FBd0VDeUFCSUFJb0FnQTJBZ0FnQmtFZ0VEMGhCeUFDSUFJb0FnQWlEMEVFYWpZQ0FDQVBJQWMyQWdBTUF3c2dEUkJKRFFJZ0RVRUFFTEVCS0FJQUlRY2dBaUFDS0FJQUlnOUJCR28yQWdBZ0R5QUhOZ0lBREFJTElBd1FTU0FWUlhJTkFTQUNJQXdRUUNBTUVHMGdBaWdDQUJDa0FUWUNBQXdCQ3lBQ0tBSUFJUmNnQkNBV2FpSUVJUWNEUUFKQUlBVWdCMDBOQUNBR1FZQVFJQWNvQWdBUVRrVU5BQ0FIUVFScUlRY01BUXNMSUE0aUQwRUFTZ1JBQTBBZ0QwRUFUQ0FFSUFkUGNrVUVRQ0FIUVFScklnY29BZ0FoRUNBQ0lBSW9BZ0FpRVVFRWFqWUNBQ0FSSUJBMkFnQWdEMEVCYXlFUERBRUxDeUFQUVFCTUJIOUJBQVVnQmtFd0VEMExJUkVEUUNBQ0lBSW9BZ0FpRUVFRWFqWUNBQ0FQUVFCS0JFQWdFQ0FSTmdJQUlBOUJBV3NoRHd3QkN3c2dFQ0FKTmdJQUN3SkFJQVFnQjBZRVFDQUdRVEFRUFNFUElBSWdBaWdDQUNJUVFRUnFJZ2MyQWdBZ0VDQVBOZ0lBREFFTElBc1FTUVIvUVg4RklBdEJBQkFMTEFBQUN5RVFRUUFoRDBFQUlSSURRQ0FFSUFkSEJFQUNRQ0FQSUJCSEJFQWdEeUVSREFFTElBSWdBaWdDQUNJUVFRUnFOZ0lBSUJBZ0NqWUNBRUVBSVJFZ0N4QUpJQkpCQVdvaUVrMEVRQ0FQSVJBTUFRc2dDeUFTRUFzdEFBQkIvd0JHQkVCQmZ5RVFEQUVMSUFzZ0VoQUxMQUFBSVJBTElBZEJCR3NpQnlnQ0FDRVBJQUlnQWlnQ0FDSVlRUVJxTmdJQUlCZ2dEellDQUNBUlFRRnFJUThNQVFzTElBSW9BZ0FoQndzZ0Z5QUhFS3dCQ3lBVVFRRnFJUlFNQVFzTEM2VUNBUUYvSXdCQkVHc2lDaVFBSUFrQ2Z5QUFCRUFnQWhDZ0FpRUFBa0FnQVFSQUlBb2dBQkJwSUFNZ0NpZ0NBRFlBQUNBS0lBQVFhQXdCQ3lBS0lBQVFwUUVnQXlBS0tBSUFOZ0FBSUFvZ0FCQktDeUFJSUFvUVZ5QUtFQW9hSUFRZ0FCQklOZ0lBSUFVZ0FCQTROZ0lBSUFvZ0FCQTNJQVlnQ2hBd0lBb1FDaG9nQ2lBQUVFc2dCeUFLRUZjZ0NoQUtHaUFBRUdjTUFRc2dBaENmQWlFQUFrQWdBUVJBSUFvZ0FCQnBJQU1nQ2lnQ0FEWUFBQ0FLSUFBUWFBd0JDeUFLSUFBUXBRRWdBeUFLS0FJQU5nQUFJQW9nQUJCS0N5QUlJQW9RVnlBS0VBb2FJQVFnQUJCSU5nSUFJQVVnQUJBNE5nSUFJQW9nQUJBM0lBWWdDaEF3SUFvUUNob2dDaUFBRUVzZ0J5QUtFRmNnQ2hBS0dpQUFFR2NMTmdJQUlBcEJFR29rQUF2VUJRRUtmeU1BUVJCckloUWtBQ0FDSUFBMkFnQWdBMEdBQkhFaEZnTkFJQlZCQkVZRVFDQU5FQWxCQVVzRVFDQVVJQTBRUURZQ0NDQUNJQlJCQ0dwQkFSQ2xBaUFORUc4Z0FpZ0NBQkNrQVRZQ0FBc2dBMEd3QVhFaUEwRVFSd1JBSUFFZ0EwRWdSZ1IvSUFJb0FnQUZJQUFMTmdJQUN5QVVRUkJxSkFBUEN3SkFBa0FDUUFKQUFrQUNRQ0FJSUJWcUxBQUFEZ1VBQVFNQ0JBVUxJQUVnQWlnQ0FEWUNBQXdFQ3lBQklBSW9BZ0EyQWdBZ0JrRWdFQ2toRHlBQ0lBSW9BZ0FpRUVFQmFqWUNBQ0FRSUE4NkFBQU1Bd3NnRFJCSkRRSWdEVUVBRUFzdEFBQWhEeUFDSUFJb0FnQWlFRUVCYWpZQ0FDQVFJQTg2QUFBTUFnc2dEQkJKSUJaRmNnMEJJQUlnREJCQUlBd1FieUFDS0FJQUVLUUJOZ0lBREFFTElBSW9BZ0FoRnlBRUlBZHFJZ1FoRVFOQUFrQWdCU0FSVFEwQUlBWkJnQkFnRVN3QUFCQkVSUTBBSUJGQkFXb2hFUXdCQ3dzZ0RpSVBRUUJLQkVBRFFDQVBRUUJNSUFRZ0VVOXlSUVJBSUJGQkFXc2lFUzBBQUNFUUlBSWdBaWdDQUNJU1FRRnFOZ0lBSUJJZ0VEb0FBQ0FQUVFGcklROE1BUXNMSUE5QkFFd0VmMEVBQlNBR1FUQVFLUXNoRWdOQUlBSWdBaWdDQUNJUVFRRnFOZ0lBSUE5QkFFb0VRQ0FRSUJJNkFBQWdEMEVCYXlFUERBRUxDeUFRSUFrNkFBQUxBa0FnQkNBUlJnUkFJQVpCTUJBcElROGdBaUFDS0FJQUloQkJBV28yQWdBZ0VDQVBPZ0FBREFFTElBc1FTUVIvUVg4RklBdEJBQkFMTEFBQUN5RVFRUUFoRDBFQUlSTURRQ0FFSUJGR0RRRUNRQ0FQSUJCSEJFQWdEeUVTREFFTElBSWdBaWdDQUNJUVFRRnFOZ0lBSUJBZ0Nqb0FBRUVBSVJJZ0N4QUpJQk5CQVdvaUUwMEVRQ0FQSVJBTUFRc2dDeUFURUFzdEFBQkIvd0JHQkVCQmZ5RVFEQUVMSUFzZ0V4QUxMQUFBSVJBTElCRkJBV3NpRVMwQUFDRVBJQUlnQWlnQ0FDSVlRUUZxTmdJQUlCZ2dEem9BQUNBU1FRRnFJUThNQUFzQUN5QVhJQUlvQWdBUWVRc2dGVUVCYWlFVkRBQUxBQXVsQWdFQmZ5TUFRUkJySWdva0FDQUpBbjhnQUFSQUlBSVFwd0loQUFKQUlBRUVRQ0FLSUFBUWFTQURJQW9vQWdBMkFBQWdDaUFBRUdnTUFRc2dDaUFBRUtVQklBTWdDaWdDQURZQUFDQUtJQUFRU2dzZ0NDQUtFREFnQ2hBS0dpQUVJQUFRU0RvQUFDQUZJQUFRT0RvQUFDQUtJQUFRTnlBR0lBb1FNQ0FLRUFvYUlBb2dBQkJMSUFjZ0NoQXdJQW9RQ2hvZ0FCQm5EQUVMSUFJUXBnSWhBQUpBSUFFRVFDQUtJQUFRYVNBRElBb29BZ0EyQUFBZ0NpQUFFR2dNQVFzZ0NpQUFFS1VCSUFNZ0NpZ0NBRFlBQUNBS0lBQVFTZ3NnQ0NBS0VEQWdDaEFLR2lBRUlBQVFTRG9BQUNBRklBQVFPRG9BQUNBS0lBQVFOeUFHSUFvUU1DQUtFQW9hSUFvZ0FCQkxJQWNnQ2hBd0lBb1FDaG9nQUJCbkN6WUNBQ0FLUVJCcUpBQUxDQUFnQUNnQ0FFVUxOd0VCZnlNQVFSQnJJZ0lrQUNBQ0lBQW9BZ0EyQWdnZ0FpQUNLQUlJSUFGQkFuUnFOZ0lJSUFJb0FnZ2hBQ0FDUVJCcUpBQWdBQXNLQUNBQVFZaUlBUkJsQ3dvQUlBQkJrSWdCRUdVTENRQWdBQ0FCRUs0Q0N4OEJBWDhnQVNnQ0FCRDJBaUVDSUFBZ0FTZ0NBRFlDQkNBQUlBSTJBZ0FMOFE4QkNuOGpBRUd3QkdzaUN5UUFJQXNnQ2pZQ3BBUWdDeUFCTmdLb0JDQUxRVFkyQW1BZ0N5QUxRWWdCYWlBTFFaQUJhaUFMUWVBQWFpSUJFQjRpRHlnQ0FDSUtOZ0tFQVNBTElBcEJrQU5xTmdLQUFTQUJFQkVoRVNBTFFkQUFhaEJISVE0Z0MwRkFheEJISVF3Z0MwRXdhaEJISVEwZ0MwRWdhaEJISVJBakFFRVFheUlCSkFBZ0N3Si9JQUlFUUNBQklBTVFvQUlpQWhCcElBc2dBU2dDQURZQWVDQUJJQUlRYUNBTklBRVFWeUFCRUFvYUlBRWdBaEJLSUF3Z0FSQlhJQUVRQ2hvZ0N5QUNFRWcyQW5RZ0N5QUNFRGcyQW5BZ0FTQUNFRGNnRVNBQkVEQWdBUkFLR2lBQklBSVFTeUFPSUFFUVZ5QUJFQW9hSUFJUVp3d0JDeUFCSUFNUW53SWlBaEJwSUFzZ0FTZ0NBRFlBZUNBQklBSVFhQ0FOSUFFUVZ5QUJFQW9hSUFFZ0FoQktJQXdnQVJCWElBRVFDaG9nQ3lBQ0VFZzJBblFnQ3lBQ0VEZzJBbkFnQVNBQ0VEY2dFU0FCRURBZ0FSQUtHaUFCSUFJUVN5QU9JQUVRVnlBQkVBb2FJQUlRWndzMkFod2dBVUVRYWlRQUlBa2dDQ2dDQURZQ0FDQUVRWUFFY1NJU1FRbDJJUk5CQUNFQlFRQWhBZ05BSUFJaENnSkFBa0FDUUFKQUlBRkJCRVlOQUNBQUlBdEJxQVJxRURaRkRRQkJBQ0VFQWtBQ1FBSkFBa0FDUUFKQUlBdEIrQUJxSUFGcUxBQUFEZ1VCQUFRREJRa0xJQUZCQTBZTkJ5QUhRWURBQUNBQUVDRVFUZ1JBSUF0QkVHb2dBQkNpQWlBUUlBc29BaEFReGdFTUFnc2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0dDeUFCUVFOR0RRWUxBMEFnQUNBTFFhZ0VhaEEyUlEwR0lBZEJnTUFBSUFBUUlSQk9SUTBHSUF0QkVHb2dBQkNpQWlBUUlBc29BaEFReGdFTUFBc0FDeUFNRUFsQkFDQU5FQWxyUmcwRUFrQWdEQkFKQkVBZ0RSQUpEUUVMSUF3UUNTRURJQUFRSVNFQ0lBTUVRQ0FNRUEwb0FnQWdBa1lFUUNBQUVDVWFJQXdnQ2lBTUVBbEJBVXNiSVFJTUNBc2dCa0VCT2dBQURBWUxJQUlnRFJBTktBSUFSdzBGSUFBUUpSb2dCa0VCT2dBQUlBMGdDaUFORUFsQkFVc2JJUUlNQmdzZ0FCQWhJQXdRRFNnQ0FFWUVRQ0FBRUNVYUlBd2dDaUFNRUFsQkFVc2JJUUlNQmdzZ0FCQWhJQTBRRFNnQ0FFWUVRQ0FBRUNVYUlBWkJBVG9BQUNBTklBb2dEUkFKUVFGTEd5RUNEQVlMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQXdzZ0NpQUJRUUpKY2tVRVFFRUFJUUlnRXlBQlFRSkdJQXN0QUh0QkFFZHhja1VOQlFzZ0N5QU9FRUEyQWdnZ0MwRVFhaUFMUVFocUVLZ0JJUUlDUUNBQlJRMEFJQUVnQzJvdEFIZEJBVXNOQUFOQUFrQWdDeUFPRUcwMkFnZ2dBaUFMUVFocUVGdEZEUUFnQjBHQXdBQWdBaWdDQUNnQ0FCQk9SUTBBSUFJUWxBRU1BUXNMSUFzZ0RoQkFOZ0lJSUFJb0FnQWdDeWdDQ0d0QkFuVWlBaUFRRUFsTkJFQWdDeUFRRUcwMkFnZ2dDMEVJYWtFQUlBSnJFSjRDSVFNZ0VCQnRJUVFnRGhCQUlSUWpBRUVnYXlJQ0pBQWdBaUFFTmdJUUlBSWdBellDR0NBQ0lCUTJBZ2dEUUFKQUlBSkJHR29nQWtFUWFoQmJJZ05GRFFBZ0FpZ0NHQ2dDQUNBQ0tBSUlLQUlBUncwQUlBSkJHR29RbEFFZ0FrRUlhaENVQVF3QkN3c2dBa0VnYWlRQUlBTkJBWE1OQVFzZ0N5QU9FRUEyQWdBZ0MwRUlhaUFMRUtnQkdpQUxJQXNvQWdnMkFoQUxJQXNnQ3lnQ0VEWUNDQU5BQWtBZ0N5QU9FRzAyQWdBZ0MwRUlhaUFMRUZ0RkRRQWdBQ0FMUWFnRWFoQTJSUTBBSUFBUUlTQUxLQUlJS0FJQVJ3MEFJQUFRSlJvZ0MwRUlhaENVQVF3QkN3c2dFa1VOQXlBTElBNFFiVFlDQUNBTFFRaHFJQXNRVzBVTkF5QUZJQVVvQWdCQkJISTJBZ0JCQUNFQURBSUxBMEFDUUNBQUlBdEJxQVJxRURaRkRRQUNmeUFIUVlBUUlBQVFJU0lDRUU0RVFDQUpLQUlBSWdNZ0N5Z0NwQVJHQkVBZ0NDQUpJQXRCcEFScUVJWUJJQWtvQWdBaEF3c2dDU0FEUVFScU5nSUFJQU1nQWpZQ0FDQUVRUUZxREFFTElCRVFDVVVnQkVWeURRRWdBaUFMS0FKd1J3MEJJQXNvQW9RQklnSWdDeWdDZ0FGR0JFQWdEeUFMUVlRQmFpQUxRWUFCYWhDR0FTQUxLQUtFQVNFQ0N5QUxJQUpCQkdvMkFvUUJJQUlnQkRZQ0FFRUFDeUVFSUFBUUpSb01BUXNMSUFSRklBc29Bb1FCSWdJZ0R5Z0NBRVp5UlFSQUlBc29Bb0FCSUFKR0JFQWdEeUFMUVlRQmFpQUxRWUFCYWhDR0FTQUxLQUtFQVNFQ0N5QUxJQUpCQkdvMkFvUUJJQUlnQkRZQ0FBc0NRQ0FMS0FJY1FRQk1EUUFDUUNBQUlBdEJxQVJxRUNoRkJFQWdBQkFoSUFzb0FuUkdEUUVMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQXdzRFFDQUFFQ1VhSUFzb0FoeEJBRXdOQVFKQUlBQWdDMEdvQkdvUUtFVUVRQ0FIUVlBUUlBQVFJUkJPRFFFTElBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUJBc2dDU2dDQUNBTEtBS2tCRVlFUUNBSUlBa2dDMEdrQkdvUWhnRUxJQUFRSVNFQ0lBa2dDU2dDQUNJRFFRUnFOZ0lBSUFNZ0FqWUNBQ0FMSUFzb0FoeEJBV3MyQWh3TUFBc0FDeUFLSVFJZ0NDZ0NBQ0FKS0FJQVJ3MERJQVVnQlNnQ0FFRUVjallDQUVFQUlRQU1BUXNDUUNBS1JRMEFRUUVoQkFOQUlBb1FDU0FFVFEwQkFrQWdBQ0FMUWFnRWFoQW9SUVJBSUFBUUlTQUtJQVFRc1FFb0FnQkdEUUVMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQXdzZ0FCQWxHaUFFUVFGcUlRUU1BQXNBQzBFQklRQWdEeWdDQUNBTEtBS0VBVVlOQUVFQUlRQWdDMEVBTmdJUUlCRWdEeWdDQUNBTEtBS0VBU0FMUVJCcUVDMGdDeWdDRUFSQUlBVWdCU2dDQUVFRWNqWUNBQXdCQzBFQklRQUxJQkFRQ2hvZ0RSQUtHaUFNRUFvYUlBNFFDaG9nRVJBS0dpQVBFQjBnQzBHd0JHb2tBQ0FBRHdzZ0NpRUNDeUFCUVFGcUlRRU1BQXNBQ3g4QUlBQWdBUkNuQVJBbklBRVFsUUVvQWdBaEFTQUFFSlVCSUFFMkFnQUxOQUVCZnlNQVFSQnJJZ0lrQUNBQ0lBQW9BZ0EyQWdnZ0FpQUNLQUlJSUFGcU5nSUlJQUlvQWdnaEFDQUNRUkJxSkFBZ0FBc0tBQ0FBUWZpSEFSQmxDd29BSUFCQmdJZ0JFR1VMWWdFRGYwRUlFQWNpQVVIQS93QTJBZ0FnQVVIcy93QTJBZ0FnQUJDZUFTSUNRUTFxRUdBaUEwRUFOZ0lJSUFNZ0FqWUNCQ0FESUFJMkFnQWdBU0FEUVF4cUlBQWdBa0VCYWhCQ05nSUVJQUZCbklBQk5nSUFJQUZCdklBQlFRTVFCZ0FMd1FFQkJuOGpBRUVRYXlJRUpBQWdBQkNWQVNnQ0FDRUZBbjhnQWlnQ0FDQUFLQUlBYXlJRFFmLy8vLzhIU1FSQUlBTkJBWFFNQVF0QmZ3c2lBMEVCSUFNYklRTWdBU2dDQUNFR0lBQW9BZ0FoQnlBRlFUWkdCSDlCQUFVZ0FDZ0NBQXNnQXhDZEFTSUlCRUFnQlVFMlJ3UkFJQUFRcHdFYUN5QUVRVFUyQWdRZ0FDQUVRUWhxSUFnZ0JFRUVhaEFlSWdVUXBBSWdCUkFkSUFFZ0FDZ0NBQ0FHSUFkcmFqWUNBQ0FDSUFNZ0FDZ0NBR28yQWdBZ0JFRVFhaVFBRHdzUUZ3QUxKUUVCZnlBQktBSUFFUHNDUVJoMFFSaDFJUUlnQUNBQktBSUFOZ0lFSUFBZ0Fqb0FBQXVmRUFFS2Z5TUFRYkFFYXlJTEpBQWdDeUFLTmdLa0JDQUxJQUUyQXFnRUlBdEJOallDYUNBTElBdEJpQUZxSUF0QmtBRnFJQXRCNkFCcUlnRVFIaUlQS0FJQUlnbzJBb1FCSUFzZ0NrR1FBMm8yQW9BQklBRVFFU0VSSUF0QjJBQnFFQkVoRGlBTFFjZ0FhaEFSSVF3Z0MwRTRhaEFSSVEwZ0MwRW9haEFSSVJBakFFRVFheUlCSkFBZ0N3Si9JQUlFUUNBQklBTVFwd0lpQWhCcElBc2dBU2dDQURZQWVDQUJJQUlRYUNBTklBRVFNQ0FCRUFvYUlBRWdBaEJLSUF3Z0FSQXdJQUVRQ2hvZ0N5QUNFRWc2QUhjZ0N5QUNFRGc2QUhZZ0FTQUNFRGNnRVNBQkVEQWdBUkFLR2lBQklBSVFTeUFPSUFFUU1DQUJFQW9hSUFJUVp3d0JDeUFCSUFNUXBnSWlBaEJwSUFzZ0FTZ0NBRFlBZUNBQklBSVFhQ0FOSUFFUU1DQUJFQW9hSUFFZ0FoQktJQXdnQVJBd0lBRVFDaG9nQ3lBQ0VFZzZBSGNnQ3lBQ0VEZzZBSFlnQVNBQ0VEY2dFU0FCRURBZ0FSQUtHaUFCSUFJUVN5QU9JQUVRTUNBQkVBb2FJQUlRWndzMkFpUWdBVUVRYWlRQUlBa2dDQ2dDQURZQ0FDQUVRWUFFY1NJU1FRbDJJUk5CQUNFQlFRQWhBZ05BSUFJaENnSkFBa0FDUUFKQUlBRkJCRVlOQUNBQUlBdEJxQVJxRURGRkRRQkJBQ0VFQWtBQ1FBSkFBa0FDUUFKQUlBdEIrQUJxSUFGcUxBQUFEZ1VCQUFRREJRa0xJQUZCQTBZTkJ5QUhRWURBQUNBQUVCOFFSQVJBSUF0QkdHb2dBQkNxQWlBUUlBc3NBQmdRb1FFTUFnc2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0dDeUFCUVFOR0RRWUxBMEFnQUNBTFFhZ0VhaEF4UlEwR0lBZEJnTUFBSUFBUUh4QkVSUTBHSUF0QkdHb2dBQkNxQWlBUUlBc3NBQmdRb1FFTUFBc0FDeUFNRUFsQkFDQU5FQWxyUmcwRUFrQWdEQkFKQkVBZ0RSQUpEUUVMSUF3UUNTRURJQUFRSHlFQ0lBTUVRQ0FNUVFBUUN5MEFBQ0FDUWY4QmNVWUVRQ0FBRUNJYUlBd2dDaUFNRUFsQkFVc2JJUUlNQ0FzZ0JrRUJPZ0FBREFZTElBMUJBQkFMTFFBQUlBSkIvd0Z4UncwRklBQVFJaG9nQmtFQk9nQUFJQTBnQ2lBTkVBbEJBVXNiSVFJTUJnc2dBQkFmUWY4QmNTQU1RUUFRQ3kwQUFFWUVRQ0FBRUNJYUlBd2dDaUFNRUFsQkFVc2JJUUlNQmdzZ0FCQWZRZjhCY1NBTlFRQVFDeTBBQUVZRVFDQUFFQ0lhSUFaQkFUb0FBQ0FOSUFvZ0RSQUpRUUZMR3lFQ0RBWUxJQVVnQlNnQ0FFRUVjallDQUVFQUlRQU1Bd3NnQ2lBQlFRSkpja1VFUUVFQUlRSWdFeUFCUVFKR0lBc3RBSHRCQUVkeGNrVU5CUXNnQ3lBT0VFQTJBaEFnQzBFWWFpQUxRUkJxRUtnQklRSUNRQ0FCUlEwQUlBRWdDMm90QUhkQkFVc05BQU5BQWtBZ0N5QU9FRzgyQWhBZ0FpQUxRUkJxRUZ0RkRRQWdCMEdBd0FBZ0FpZ0NBQ3dBQUJCRVJRMEFJQUlRbGdFTUFRc0xJQXNnRGhCQU5nSVFJQUlvQWdBZ0N5Z0NFR3NpQWlBUUVBbE5CRUFnQ3lBUUVHODJBaEFnQzBFUWFrRUFJQUpyRUtVQ0lRTWdFQkJ2SVFRZ0RoQkFJUlFqQUVFZ2F5SUNKQUFnQWlBRU5nSVFJQUlnQXpZQ0dDQUNJQlEyQWdnRFFBSkFJQUpCR0dvZ0FrRVFhaEJiSWdORkRRQWdBaWdDR0MwQUFDQUNLQUlJTFFBQVJ3MEFJQUpCR0dvUWxnRWdBa0VJYWhDV0FRd0JDd3NnQWtFZ2FpUUFJQU5CQVhNTkFRc2dDeUFPRUVBMkFnZ2dDMEVRYWlBTFFRaHFFS2dCR2lBTElBc29BaEEyQWhnTElBc2dDeWdDR0RZQ0VBTkFBa0FnQ3lBT0VHODJBZ2dnQzBFUWFpQUxRUWhxRUZ0RkRRQWdBQ0FMUWFnRWFoQXhSUTBBSUFBUUgwSC9BWEVnQ3lnQ0VDMEFBRWNOQUNBQUVDSWFJQXRCRUdvUWxnRU1BUXNMSUJKRkRRTWdDeUFPRUc4MkFnZ2dDMEVRYWlBTFFRaHFFRnRGRFFNZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3Q0N3TkFBa0FnQUNBTFFhZ0VhaEF4UlEwQUFuOGdCMEdBRUNBQUVCOGlBaEJFQkVBZ0NTZ0NBQ0lESUFzb0FxUUVSZ1JBSUFnZ0NTQUxRYVFFYWhDcEFpQUpLQUlBSVFNTElBa2dBMEVCYWpZQ0FDQURJQUk2QUFBZ0JFRUJhZ3dCQ3lBUkVBbEZJQVJGY2cwQklBc3RBSFlnQWtIL0FYRkhEUUVnQ3lnQ2hBRWlBaUFMS0FLQUFVWUVRQ0FQSUF0QmhBRnFJQXRCZ0FGcUVJWUJJQXNvQW9RQklRSUxJQXNnQWtFRWFqWUNoQUVnQWlBRU5nSUFRUUFMSVFRZ0FCQWlHZ3dCQ3dzZ0JFVWdDeWdDaEFFaUFpQVBLQUlBUm5KRkJFQWdDeWdDZ0FFZ0FrWUVRQ0FQSUF0QmhBRnFJQXRCZ0FGcUVJWUJJQXNvQW9RQklRSUxJQXNnQWtFRWFqWUNoQUVnQWlBRU5nSUFDd0pBSUFzb0FpUkJBRXdOQUFKQUlBQWdDMEdvQkdvUUprVUVRQ0FBRUI5Qi93RnhJQXN0QUhkR0RRRUxJQVVnQlNnQ0FFRUVjallDQUVFQUlRQU1Bd3NEUUNBQUVDSWFJQXNvQWlSQkFFd05BUUpBSUFBZ0MwR29CR29RSmtVRVFDQUhRWUFRSUFBUUh4QkVEUUVMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQkFzZ0NTZ0NBQ0FMS0FLa0JFWUVRQ0FJSUFrZ0MwR2tCR29RcVFJTElBQVFIeUVDSUFrZ0NTZ0NBQ0lEUVFGcU5nSUFJQU1nQWpvQUFDQUxJQXNvQWlSQkFXczJBaVFNQUFzQUN5QUtJUUlnQ0NnQ0FDQUpLQUlBUncwRElBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUFRc0NRQ0FLUlEwQVFRRWhCQU5BSUFvUUNTQUVUUTBCQWtBZ0FDQUxRYWdFYWhBbVJRUkFJQUFRSDBIL0FYRWdDaUFFRUFzdEFBQkdEUUVMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQXdzZ0FCQWlHaUFFUVFGcUlRUU1BQXNBQzBFQklRQWdEeWdDQUNBTEtBS0VBVVlOQUVFQUlRQWdDMEVBTmdJWUlCRWdEeWdDQUNBTEtBS0VBU0FMUVJocUVDMGdDeWdDR0FSQUlBVWdCU2dDQUVFRWNqWUNBQXdCQzBFQklRQUxJQkFRQ2hvZ0RSQUtHaUFNRUFvYUlBNFFDaG9nRVJBS0dpQVBFQjBnQzBHd0JHb2tBQ0FBRHdzZ0NpRUNDeUFCUVFGcUlRRU1BQXNBQ3d3QUlBQkJBVUV0RUxvQ0dnc01BQ0FBUVFGQkxSRHZBUm9MQ2dBZ0FTQUFhMEVDZFFzRUFDQUJDelVCQVg4akFFRVFheUlDSkFBZ0FpQUFMUUFBT2dBUElBQWdBUzBBQURvQUFDQUJJQUpCRDJvdEFBQTZBQUFnQWtFUWFpUUFDMlFCQVg4akFFRVFheUlHSkFBZ0JrRUFPZ0FQSUFZZ0JUb0FEaUFHSUFRNkFBMGdCa0VsT2dBTUlBVUVRQ0FHUVExcUlBWkJEbW9Rc0FJTElBSWdBU0FCSUFJb0FnQVE2Z0lnQmtFTWFpQURJQUFvQWdBUUFTQUJhallDQUNBR1FSQnFKQUFMUVFBZ0FTQUNJQU1nQkVFRUVGZ2hBU0FETFFBQVFRUnhSUVJBSUFBZ0FVSFFEMm9nQVVIc0Rtb2dBU0FCUWVRQVNCc2dBVUhGQUVnYlFld09hellDQUFzTFFBQWdBaUFESUFCQkNHb2dBQ2dDQ0NnQ0JCRUFBQ0lBSUFCQm9BSnFJQVVnQkVFQUVMSUJJQUJySWdCQm53Sk1CRUFnQVNBQVFReHRRUXh2TmdJQUN3dEFBQ0FDSUFNZ0FFRUlhaUFBS0FJSUtBSUFFUUFBSWdBZ0FFR29BV29nQlNBRVFRQVFzZ0VnQUdzaUFFR25BVXdFUUNBQklBQkJERzFCQjI4MkFnQUxDMEVBSUFFZ0FpQURJQVJCQkJCWklRRWdBeTBBQUVFRWNVVUVRQ0FBSUFGQjBBOXFJQUZCN0E1cUlBRWdBVUhrQUVnYklBRkJ4UUJJRzBIc0RtczJBZ0FMQzBBQUlBSWdBeUFBUVFocUlBQW9BZ2dvQWdRUkFBQWlBQ0FBUWFBQ2FpQUZJQVJCQUJDMEFTQUFheUlBUVo4Q1RBUkFJQUVnQUVFTWJVRU1iellDQUFzTFFBQWdBaUFESUFCQkNHb2dBQ2dDQ0NnQ0FCRUFBQ0lBSUFCQnFBRnFJQVVnQkVFQUVMUUJJQUJySWdCQnB3Rk1CRUFnQVNBQVFReHRRUWR2TmdJQUN3c0VBRUVDQzY4RkFRcC9Jd0JCRUdzaUNTUUFJQVlRT3lFS0lBa2dCaENMQVNJTkVEY2dCU0FETmdJQUFrQUNRQ0FBSWdjdEFBQWlCa0VyYXc0REFBRUFBUXNnQ2lBR1FSaDBRUmgxRUQwaEJpQUZJQVVvQWdBaUIwRUVhallDQUNBSElBWTJBZ0FnQUVFQmFpRUhDd0pBQWtBZ0FpQUhJZ1pyUVFGTURRQWdCeTBBQUVFd1J3MEFJQWN0QUFGQklISkIrQUJIRFFBZ0NrRXdFRDBoQmlBRklBVW9BZ0FpQ0VFRWFqWUNBQ0FJSUFZMkFnQWdDaUFITEFBQkVEMGhCaUFGSUFVb0FnQWlDRUVFYWpZQ0FDQUlJQVkyQWdBZ0IwRUNhaUlISVFZRFFDQUNJQVpORFFJZ0Jpd0FBQkFXRU5ZQ1JRMENJQVpCQVdvaEJnd0FDd0FMQTBBZ0FpQUdUUTBCSUFZc0FBQWhDQkFXR2lBSUVFVkZEUUVnQmtFQmFpRUdEQUFMQUFzQ1FDQUpFRWtFUUNBS0lBY2dCaUFGS0FJQUVHUWdCU0FGS0FJQUlBWWdCMnRCQW5ScU5nSUFEQUVMSUFjZ0JoQjVJQTBRT0NFT0lBY2hDQU5BSUFZZ0NFMEVRQ0FESUFjZ0FHdEJBblJxSUFVb0FnQVFyQUVGQWtBZ0NTQUxFQXNzQUFCQkFFd05BQ0FNSUFrZ0N4QUxMQUFBUncwQUlBVWdCU2dDQUNJTVFRUnFOZ0lBSUF3Z0RqWUNBQ0FMSUFzZ0NSQUpRUUZyU1dvaEMwRUFJUXdMSUFvZ0NDd0FBQkE5SVE4Z0JTQUZLQUlBSWhCQkJHbzJBZ0FnRUNBUE5nSUFJQWhCQVdvaENDQU1RUUZxSVF3TUFRc0xDd0pBQWtBRFFDQUNJQVpORFFFZ0JpMEFBQ0lIUVM1SEJFQWdDaUFIUVJoMFFSaDFFRDBoQnlBRklBVW9BZ0FpQ0VFRWFqWUNBQ0FJSUFjMkFnQWdCa0VCYWlFR0RBRUxDeUFORUVnaEJ5QUZJQVVvQWdBaUMwRUVhaUlJTmdJQUlBc2dCellDQUNBR1FRRnFJUVlNQVFzZ0JTZ0NBQ0VJQ3lBS0lBWWdBaUFJRUdRZ0JTQUZLQUlBSUFJZ0JtdEJBblJxSWdVMkFnQWdCQ0FGSUFNZ0FTQUFhMEVDZEdvZ0FTQUNSaHMyQWdBZ0NSQUtHaUFKUVJCcUpBQUx1QUVCQlg4akFFRVFheUlISkFBakFFRVFheUlGSkFBQ1FDQUJRZS8vLy84RFRRUkFBa0FnQVVFQlRRUkFJQUFnQVJBNklBQWhCZ3dCQ3lBQUlBQWdBUkNDQVVFQmFpSURFSUVCSWdZUVRTQUFJQU1RVENBQUlBRVFPUXNnQmlFRUlBRWlBd1IvSUFNRVFBTkFJQVFnQWpZQ0FDQUVRUVJxSVFRZ0EwRUJheUlERFFBTEMwRUFCU0FFQ3hvZ0JVRUFOZ0lNSUFZZ0FVRUNkR29nQlVFTWFoQXpJQVZCRUdva0FBd0JDeEFYQUFzZ0IwRVFhaVFBSUFBTDhnRUJCWDhqQUVFUWF5SURKQUFnQWtJQU53QUFJQUpDQURjQUNDQURJQUVwQUFnM0F3Z2dBeUFCS1FBQU53TUFBMEFnQUNBRmFpRUdRUUFoQVFOQUlBWXRBQUJCQnlBQmEzWkJBWEVFUUNBQ0lBTVFuQUVMSUFNdEFBOGhCeUFEUVF4cUlnUWdBeTBBQzBFZmRDQUVFSk1CUVFGMmNoQ1NBU0FEUVFocUlnUWdBeTBBQjBFZmRDQUVFSk1CUVFGMmNoQ1NBU0FEUVFScUlnUWdBeTBBQTBFZmRDQUVFSk1CUVFGMmNoQ1NBU0FESUFNUWt3RkJBWFlRa2dFZ0IwRUJjUVJBSUFNZ0F5MEFBRUhoQVhNNkFBQUxJQUZCQVdvaUFVRUlSdzBBQ3lBRlFRRnFJZ1ZCRUVjTkFBc2dBMEVRYWlRQUM1a0ZBUXAvSXdCQkVHc2lDU1FBSUFZUU1pRUtJQWtnQmhDT0FTSU5FRGNnQlNBRE5nSUFBa0FDUUNBQUlnY3RBQUFpQmtFcmF3NERBQUVBQVFzZ0NpQUdRUmgwUVJoMUVDa2hCaUFGSUFVb0FnQWlCMEVCYWpZQ0FDQUhJQVk2QUFBZ0FFRUJhaUVIQ3dKQUFrQWdBaUFISWdaclFRRk1EUUFnQnkwQUFFRXdSdzBBSUFjdEFBRkJJSEpCK0FCSERRQWdDa0V3RUNraEJpQUZJQVVvQWdBaUNFRUJhallDQUNBSUlBWTZBQUFnQ2lBSExBQUJFQ2toQmlBRklBVW9BZ0FpQ0VFQmFqWUNBQ0FJSUFZNkFBQWdCMEVDYWlJSElRWURRQ0FDSUFaTkRRSWdCaXdBQUJBV0VOWUNSUTBDSUFaQkFXb2hCZ3dBQ3dBTEEwQWdBaUFHVFEwQklBWXNBQUFoQ0JBV0dpQUlFRVZGRFFFZ0JrRUJhaUVHREFBTEFBc0NRQ0FKRUVrRVFDQUtJQWNnQmlBRktBSUFFSEFnQlNBRktBSUFJQVlnQjJ0cU5nSUFEQUVMSUFjZ0JoQjVJQTBRT0NFT0lBY2hDQU5BSUFZZ0NFMEVRQ0FESUFjZ0FHdHFJQVVvQWdBUWVRVUNRQ0FKSUF3UUN5d0FBRUVBVEEwQUlBc2dDU0FNRUFzc0FBQkhEUUFnQlNBRktBSUFJZ3RCQVdvMkFnQWdDeUFPT2dBQUlBd2dEQ0FKRUFsQkFXdEphaUVNUVFBaEN3c2dDaUFJTEFBQUVDa2hEeUFGSUFVb0FnQWlFRUVCYWpZQ0FDQVFJQTg2QUFBZ0NFRUJhaUVJSUF0QkFXb2hDd3dCQ3dzTEEwQUNRQ0FDSUFaTEJFQWdCaTBBQUNJSFFTNUhEUUVnRFJCSUlRY2dCU0FGS0FJQUlnaEJBV28yQWdBZ0NDQUhPZ0FBSUFaQkFXb2hCZ3NnQ2lBR0lBSWdCU2dDQUJCd0lBVWdCU2dDQUNBQ0lBWnJhaUlGTmdJQUlBUWdCU0FESUFFZ0FHdHFJQUVnQWtZYk5nSUFJQWtRQ2hvZ0NVRVFhaVFBRHdzZ0NpQUhRUmgwUVJoMUVDa2hCeUFGSUFVb0FnQWlDRUVCYWpZQ0FDQUlJQWM2QUFBZ0JrRUJhaUVHREFBTEFBczJBUUovUWZRQkVCa2lBZ1IvSUFJZ0FDQUJRUU4wRUlRRElnQkJBRWdFUUNBQ0VCQkJBQThMSUFJZ0FEWUM4QUVnQWdVZ0F3c0xuUU1CQW44akFFSGdBbXNpQUNRQUlBQWdBallDMEFJZ0FDQUJOZ0xZQWlBREVGd2hCaUFESUFCQjRBRnFFSmdCSVFjZ0FFSFFBV29nQXlBQVFjd0NhaENYQVNBQVFjQUJhaEFSSWdFZ0FSQVRFQXdnQUNBQlFRQVFDeUlDTmdLOEFTQUFJQUJCRUdvMkFnd2dBRUVBTmdJSUEwQUNRQ0FBUWRnQ2FpQUFRZEFDYWhBMlJRMEFJQUFvQXJ3QklBRVFDU0FDYWtZRVFDQUJFQWtoQXlBQklBRVFDVUVCZEJBTUlBRWdBUkFURUF3Z0FDQURJQUZCQUJBTElnSnFOZ0s4QVFzZ0FFSFlBbW9RSVNBR0lBSWdBRUc4QVdvZ0FFRUlhaUFBS0FMTUFpQUFRZEFCYWlBQVFSQnFJQUJCREdvZ0J4Q0tBUTBBSUFCQjJBSnFFQ1VhREFFTEN3SkFJQUJCMEFGcUVBbEZEUUFnQUNnQ0RDSURJQUJCRUdwclFaOEJTZzBBSUFBZ0EwRUVhallDRENBRElBQW9BZ2cyQWdBTElBVWdBaUFBS0FLOEFTQUVJQVlReEFJMkFnQWdBRUhRQVdvZ0FFRVFhaUFBS0FJTUlBUVFMU0FBUWRnQ2FpQUFRZEFDYWhBb0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBTFlBaUVDSUFFUUNob2dBRUhRQVdvUUNob2dBRUhnQW1va0FDQUNDMElCQVg4akFFRVFheUlESkFBZ0F5QUJOZ0lNSUFNZ0FqWUNDQ0FESUFOQkRHb1FVaUVCSUFCQjh4c2dBeWdDQ0JEZkFpRUFJQUVRVVNBRFFSQnFKQUFnQUF1eEFnSUVmZ1YvSXdCQklHc2lDQ1FBQWtBQ1FBSkFJQUVnQWtjRVFFSEVnUUVvQWdBaERFSEVnUUZCQURZQ0FDTUFRUkJySWdra0FCQVdHaU1BUVJCcklnb2tBQ01BUVJCcklnc2tBQ0FMSUFFZ0NFRWNha0VDRU5nQklBc3BBd0FoQkNBS0lBc3BBd2czQXdnZ0NpQUVOd01BSUF0QkVHb2tBQ0FLS1FNQUlRUWdDU0FLS1FNSU53TUlJQWtnQkRjREFDQUtRUkJxSkFBZ0NTa0RBQ0VFSUFnZ0NTa0RDRGNERUNBSUlBUTNBd2dnQ1VFUWFpUUFJQWdwQXhBaEJDQUlLUU1JSVFWQnhJRUJLQUlBSWdGRkRRRWdDQ2dDSENBQ1J3MENJQVVoQmlBRUlRY2dBVUhFQUVjTkF3d0NDeUFEUVFRMkFnQU1BZ3RCeElFQklBdzJBZ0FnQ0NnQ0hDQUNSZzBCQ3lBRFFRUTJBZ0FnQmlFRklBY2hCQXNnQUNBRk53TUFJQUFnQkRjRENDQUlRU0JxSkFBTHRnRUNBbndEZnlNQVFSQnJJZ1VrQUFKQUFrQUNRQ0FBSUFGSEJFQkJ4SUVCS0FJQUlRZEJ4SUVCUVFBMkFnQVFGaG9qQUVFUWF5SUdKQUFnQmlBQUlBVkJER3BCQVJEWUFTQUdLUU1BSUFZcEF3Z1EzUUVoQXlBR1FSQnFKQUJCeElFQktBSUFJZ0JGRFFFZ0JTZ0NEQ0FCUncwQ0lBTWhCQ0FBUWNRQVJ3MEREQUlMSUFKQkJEWUNBQXdDQzBIRWdRRWdCellDQUNBRktBSU1JQUZHRFFFTElBSkJCRFlDQUNBRUlRTUxJQVZCRUdva0FDQURDN1lCQWdKOUEzOGpBRUVRYXlJRkpBQUNRQUpBQWtBZ0FDQUJSd1JBUWNTQkFTZ0NBQ0VIUWNTQkFVRUFOZ0lBRUJZYUl3QkJFR3NpQmlRQUlBWWdBQ0FGUVF4cVFRQVEyQUVnQmlrREFDQUdLUU1JRU9FQ0lRTWdCa0VRYWlRQVFjU0JBU2dDQUNJQVJRMEJJQVVvQWd3Z0FVY05BaUFESVFRZ0FFSEVBRWNOQXd3Q0N5QUNRUVEyQWdBTUFndEJ4SUVCSUFjMkFnQWdCU2dDRENBQlJnMEJDeUFDUVFRMkFnQWdCQ0VEQ3lBRlFSQnFKQUFnQXd2R0FRSURmd0YrSXdCQkVHc2lCQ1FBQW40Q1FBSkFJQUFnQVVjRVFBSkFBa0FnQUMwQUFDSUZRUzFIRFFBZ0FFRUJhaUlBSUFGSERRQU1BUXRCeElFQktBSUFJUVpCeElFQlFRQTJBZ0FnQUNBRVFReHFJQU1RRmhEWkFTRUhBa0JCeElFQktBSUFJZ0FFUUNBRUtBSU1JQUZIRFFFZ0FFSEVBRVlOQkF3RkMwSEVnUUVnQmpZQ0FDQUVLQUlNSUFGR0RRUUxDd3NnQWtFRU5nSUFRZ0FNQWdzZ0FrRUVOZ0lBUW44TUFRdENBQ0FIZlNBSElBVkJMVVliQ3lFSElBUkJFR29rQUNBSEM5Y0JBZ04vQVg0akFFRVFheUlFSkFBQ2Z3SkFBa0FDUUNBQUlBRkhCRUFDUUFKQUlBQXRBQUFpQlVFdFJ3MEFJQUJCQVdvaUFDQUJSdzBBREFFTFFjU0JBU2dDQUNFR1FjU0JBVUVBTmdJQUlBQWdCRUVNYWlBREVCWVEyUUVoQndKQVFjU0JBU2dDQUNJQUJFQWdCQ2dDRENBQlJ3MEJJQUJCeEFCR0RRVU1CQXRCeElFQklBWTJBZ0FnQkNnQ0RDQUJSZzBEQ3dzTElBSkJCRFlDQUVFQURBTUxJQWRDLy8vLy93OVlEUUVMSUFKQkJEWUNBRUYvREFFTFFRQWdCNmNpQUdzZ0FDQUZRUzFHR3dzaEFDQUVRUkJxSkFBZ0FBdVNBd0VCZnlNQVFaQUNheUlBSkFBZ0FDQUNOZ0tBQWlBQUlBRTJBb2dDSUFNUVhDRUdJQUJCMEFGcUlBTWdBRUgvQVdvUW1RRWdBRUhBQVdvUUVTSUJJQUVRRXhBTUlBQWdBVUVBRUFzaUFqWUN2QUVnQUNBQVFSQnFOZ0lNSUFCQkFEWUNDQU5BQWtBZ0FFR0lBbW9nQUVHQUFtb1FNVVVOQUNBQUtBSzhBU0FCRUFrZ0FtcEdCRUFnQVJBSklRTWdBU0FCRUFsQkFYUVFEQ0FCSUFFUUV4QU1JQUFnQXlBQlFRQVFDeUlDYWpZQ3ZBRUxJQUJCaUFKcUVCOGdCaUFDSUFCQnZBRnFJQUJCQ0dvZ0FDd0Evd0VnQUVIUUFXb2dBRUVRYWlBQVFReHFRZERRQUJDTkFRMEFJQUJCaUFKcUVDSWFEQUVMQ3dKQUlBQkIwQUZxRUFsRkRRQWdBQ2dDRENJRElBQkJFR3ByUVo4QlNnMEFJQUFnQTBFRWFqWUNEQ0FESUFBb0FnZzJBZ0FMSUFVZ0FpQUFLQUs4QVNBRUlBWVF4QUkyQWdBZ0FFSFFBV29nQUVFUWFpQUFLQUlNSUFRUUxTQUFRWWdDYWlBQVFZQUNhaEFtQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FLSUFpRUNJQUVRQ2hvZ0FFSFFBV29RQ2hvZ0FFR1FBbW9rQUNBQ0M5d0JBZ04vQVg0akFFRVFheUlFSkFBQ2Z3SkFBa0FDUUNBQUlBRkhCRUFDUUFKQUlBQXRBQUFpQlVFdFJ3MEFJQUJCQVdvaUFDQUJSdzBBREFFTFFjU0JBU2dDQUNFR1FjU0JBVUVBTmdJQUlBQWdCRUVNYWlBREVCWVEyUUVoQndKQVFjU0JBU2dDQUNJQUJFQWdCQ2dDRENBQlJ3MEJJQUJCeEFCR0RRVU1CQXRCeElFQklBWTJBZ0FnQkNnQ0RDQUJSZzBEQ3dzTElBSkJCRFlDQUVFQURBTUxJQWRDLy84RFdBMEJDeUFDUVFRMkFnQkIvLzhEREFFTFFRQWdCNmNpQUdzZ0FDQUZRUzFHR3dzaEFDQUVRUkJxSkFBZ0FFSC8vd054QzdZQkFnRitBbjhqQUVFUWF5SUZKQUFDUUFKQUlBQWdBVWNFUUVIRWdRRW9BZ0FoQmtIRWdRRkJBRFlDQUNBQUlBVkJER29nQXhBV0VNNENJUVFDUUVIRWdRRW9BZ0FpQUFSQUlBVW9BZ3dnQVVjTkFTQUFRY1FBUmcwRERBUUxRY1NCQVNBR05nSUFJQVVvQWd3Z0FVWU5Bd3NMSUFKQkJEWUNBRUlBSVFRTUFRc2dBa0VFTmdJQUlBUkNBRlVFUUVMLy8vLy8vLy8vLy84QUlRUU1BUXRDZ0lDQWdJQ0FnSUNBZnlFRUN5QUZRUkJxSkFBZ0JBdjBBUUVKZnlBQkVBMGhCQ0FCRUFraEJ5TUFRU0JySWdFa0FBSkFJQUZCR0dvZ0FCQ0FBeUlJTFFBQVJRMEFJQUZCQ0dvZ0FCREhBU0VKSUFBZ0FDZ0NBRUVNYXlnQ0FHb2lCU2dDQkNFS0FrQkJmeUFGSWdJb0Frd1FYMFVFUUNBQ0tBSk1JUUlNQVFzZ0FnSi9Jd0JCRUdzaUF5UUFJQU5CQ0dvaUJpQUNFQThnQmhBeVFTQVFLU0VDSUFZUURpQURRUkJxSkFBZ0FnczJBa3dMSUFKQkdIUkJHSFVoQWlBQklBa29BZ0FnQkNBRUlBZHFJZ01nQkNBS1FiQUJjVUVnUmhzZ0F5QUZJQUlRVmpZQ0VDQUJLQUlRRFFBZ0FDQUFLQUlBUVF4cktBSUFha0VGRUlBQkN5QUlFUDRDSUFGQklHb2tBQXZEQVFJQ2Z3RitJd0JCRUdzaUJDUUFBbjhDUUFKQUlBQWdBVWNFUUVIRWdRRW9BZ0FoQlVIRWdRRkJBRFlDQUNBQUlBUkJER29nQXhBV0VNNENJUVlDUUVIRWdRRW9BZ0FpQUFSQUlBUW9BZ3dnQVVjTkFTQUFRY1FBUmcwRURBTUxRY1NCQVNBRk5nSUFJQVFvQWd3Z0FVWU5BZ3NMSUFKQkJEWUNBRUVBREFJTElBWkNnSUNBZ0hoVElBWkMvLy8vL3dkVmNnMEFJQWFuREFFTElBSkJCRFlDQUVILy8vLy9CeUFHUWdCVkRRQWFRWUNBZ0lCNEN5RUFJQVJCRUdva0FDQUFDMVFCQW44akFFRVFheUlESkFBZ0EwRUNOZ0lNSUFJZ0FSQUpJZ1JMQkVBUUZ3QUxJQUVRRFNFQklBTWdCQ0FDYXpZQ0JDQUFJQUVnQW1vZ0EwRU1haUFEUVFScUVLSUJLQUlBRVBVQklBTkJFR29rQUFzS0FDQUJJQUJyUVF4dEN4Z0FJQUFnQUNnQ0FFRU1heWdDQUdwQkFoRUFBQm9nQUF1VUFRRUVmeU1BUVJCcklnVWtBQ0FCSUFJUW9RSWlCRUh2Ly8vL0EwMEVRQUpBSUFSQkFVMEVRQ0FBSUFRUU9pQUFJUU1NQVFzZ0FDQUFJQVFRZ2dGQkFXb2lCaENCQVNJREVFMGdBQ0FHRUV3Z0FDQUVFRGtMQTBBZ0FTQUNSd1JBSUFNZ0FSQXpJQU5CQkdvaEF5QUJRUVJxSVFFTUFRc0xJQVZCQURZQ0RDQURJQVZCREdvUU15QUZRUkJxSkFBUEN4QVhBQXNXQUNBQUlBRWdBa0tBZ0lDQWdJQ0FnSUIvRU04Q0M1SUVBZ2QvQkg0akFFRVFheUlJSkFBQ1FBSkFBa0FnQWtFa1RBUkFJQUF0QUFBaUJRMEJJQUFoQkF3Q0MwSEVnUUZCSERZQ0FFSUFJUU1NQWdzZ0FDRUVBa0FEUUNBRlFSaDBRUmgxRUhGRkRRRWdCQzBBQVNFRklBUkJBV29oQkNBRkRRQUxEQUVMQWtBZ0JDMEFBQ0lGUVN0ckRnTUFBUUFCQzBGL1FRQWdCVUV0UmhzaEJ5QUVRUUZxSVFRTEFuOENRQ0FDUVc5eERRQWdCQzBBQUVFd1J3MEFRUUVoQ1NBRUxRQUJRZDhCY1VIWUFFWUVRQ0FFUVFKcUlRUkJFQXdDQ3lBRVFRRnFJUVFnQWtFSUlBSWJEQUVMSUFKQkNpQUNHd3NpQ3F3aERFRUFJUUlEUUFKQVFWQWhCUUpBSUFRc0FBQWlCa0V3YTBIL0FYRkJDa2tOQUVHcGZ5RUZJQVpCNFFCclFmOEJjVUVhU1EwQVFVa2hCU0FHUWNFQWEwSC9BWEZCR1VzTkFRc2dCU0FHYWlJR0lBcE9EUUFnQ0NBTVFnQWdDMElBRUN0QkFTRUZBa0FnQ0NrRENFSUFVZzBBSUFzZ0RINGlEU0FHckNJT1FuK0ZWZzBBSUEwZ0Rud2hDMEVCSVFrZ0FpRUZDeUFFUVFGcUlRUWdCU0VDREFFTEN5QUJCRUFnQVNBRUlBQWdDUnMyQWdBTEFrQUNRQ0FDQkVCQnhJRUJRY1FBTmdJQUlBZEJBQ0FEUWdHRElneFFHeUVISUFNaEN3d0JDeUFESUF0V0RRRWdBMElCZ3lFTUN5QU1weUFIY2tVRVFFSEVnUUZCeEFBMkFnQWdBMElCZlNFRERBSUxJQU1nQzFvTkFFSEVnUUZCeEFBMkFnQU1BUXNnQ3lBSHJDSURoU0FEZlNFREN5QUlRUkJxSkFBZ0F3c3hBUUYvUWNpR0FTZ0NBQ0VCSUFBRVFFSEloZ0ZCMklVQklBQWdBRUYvUmhzMkFnQUxRWDhnQVNBQlFkaUZBVVliQzYwSUFRVi9JQUVvQWdBaEJBSkFBa0FDUUFKQUFrQUNRQUpBQW44Q1FBSkFBa0FDUUNBRFJRMEFJQU1vQWdBaUJrVU5BQ0FBUlFSQUlBSWhBd3dEQ3lBRFFRQTJBZ0FnQWlFRERBRUxBa0JCeUlZQktBSUFLQUlBUlFSQUlBQkZEUUVnQWtVTkRDQUNJUVlEUUNBRUxBQUFJZ01FUUNBQUlBTkIvNzhEY1RZQ0FDQUFRUVJxSVFBZ0JFRUJhaUVFSUFaQkFXc2lCZzBCREE0TEN5QUFRUUEyQWdBZ0FVRUFOZ0lBSUFJZ0Jtc1BDeUFDSVFNZ0FFVU5Bd3dGQ3lBRUVKNEJEd3RCQVNFRkRBTUxRUUFNQVF0QkFRc2hCUU5BSUFWRkJFQWdCQzBBQUVFRGRpSUZRUkJySUFaQkduVWdCV3B5UVFkTERRTUNmeUFFUVFGcUlnVWdCa0dBZ0lBUWNVVU5BQm9nQlMwQUFFSEFBWEZCZ0FGSEJFQWdCRUVCYXlFRURBY0xJQVJCQW1vaUJTQUdRWUNBSUhGRkRRQWFJQVV0QUFCQndBRnhRWUFCUndSQUlBUkJBV3NoQkF3SEN5QUVRUU5xQ3lFRUlBTkJBV3NoQTBFQklRVU1BUXNEUUFKQUlBUkJBM0VnQkMwQUFDSUdRUUZyUWY0QVMzSU5BQ0FFS0FJQUlnWkJnWUtFQ0dzZ0JuSkJnSUdDaEhoeERRQURRQ0FEUVFScklRTWdCQ2dDQkNFR0lBUkJCR29oQkNBR0lBWkJnWUtFQ0d0eVFZQ0Jnb1I0Y1VVTkFBc0xJQVpCL3dGeElnVkJBV3RCL2dCTkJFQWdBMEVCYXlFRElBUkJBV29oQkF3QkN3c2dCVUhDQVdzaUJVRXlTdzBESUFSQkFXb2hCQ0FGUVFKMFFiQXJhaWdDQUNFR1FRQWhCUXdBQ3dBTEEwQWdCVVVFUUNBRFJRMEhBMEFDUUFKQUFrQWdCQzBBQUNJRlFRRnJJZ2RCL2dCTEJFQWdCU0VHREFFTElBUkJBM0VnQTBFRlNYSU5BUUpBQTBBZ0JDZ0NBQ0lHUVlHQ2hBaHJJQVp5UVlDQmdvUjRjUTBCSUFBZ0JrSC9BWEUyQWdBZ0FDQUVMUUFCTmdJRUlBQWdCQzBBQWpZQ0NDQUFJQVF0QUFNMkFnd2dBRUVRYWlFQUlBUkJCR29oQkNBRFFRUnJJZ05CQkVzTkFBc2dCQzBBQUNFR0N5QUdRZjhCY1NJRlFRRnJJUWNMSUFkQi9nQkxEUUVMSUFBZ0JUWUNBQ0FBUVFScUlRQWdCRUVCYWlFRUlBTkJBV3NpQXcwQkRBa0xDeUFGUWNJQmF5SUZRVEpMRFFNZ0JFRUJhaUVFSUFWQkFuUkJzQ3RxS0FJQUlRWkJBU0VGREFFTElBUXRBQUFpQlVFRGRpSUhRUkJySUFjZ0JrRWFkV3B5UVFkTERRRUNRQUpBQW44Z0JFRUJhaUlISUFWQmdBRnJJQVpCQm5SeUlnVkJBRTROQUJvZ0J5MEFBRUdBQVdzaUIwRS9TdzBCSUFSQkFtb2lDQ0FISUFWQkJuUnlJZ1ZCQUU0TkFCb2dDQzBBQUVHQUFXc2lCMEUvU3cwQklBY2dCVUVHZEhJaEJTQUVRUU5xQ3lFRUlBQWdCVFlDQUNBRFFRRnJJUU1nQUVFRWFpRUFEQUVMUWNTQkFVRVpOZ0lBSUFSQkFXc2hCQXdGQzBFQUlRVU1BQXNBQ3lBRVFRRnJJUVFnQmcwQklBUXRBQUFoQmdzZ0JrSC9BWEVOQUNBQUJFQWdBRUVBTmdJQUlBRkJBRFlDQUFzZ0FpQURhdzhMUWNTQkFVRVpOZ0lBSUFCRkRRRUxJQUVnQkRZQ0FBdEJmdzhMSUFFZ0JEWUNBQ0FDQ3lNQkFuOGdBQ0VCQTBBZ0FTSUNRUVJxSVFFZ0FpZ0NBQTBBQ3lBQ0lBQnJRUUoxQ3c0QUlBQVEzUUlFUUNBQUVCQUxDeXdCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFCQjVBQkI3aHdnQVJDMUFTRUFJQUpCRUdva0FDQUFDeWtCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFCQjlCd2dBUkRmQWlFQUlBSkJFR29rQUNBQUN4WUFJQUFRUlVFQVJ5QUFRU0J5UWVFQWEwRUdTWElMNWdJQkJIOGdBRUZBYXlJRFFhd29OZ0lBSUFOQjVDRTJBZ0FnQUVIc0pUWUNBQ0FEUVpRbU5nSUFJQUJCZ0NZMkFnZ2dBRUdrSmlnQ0FDSUJOZ0lBSUFBZ0FVRU1heWdDQUdwQnFDWW9BZ0EyQWdBZ0FFRUFOZ0lFSUFBZ0FDZ0NBRUVNYXlnQ0FHb2lBa0VBTmdJVUlBSWdBRUVNYWlJQk5nSVlJQUpCQURZQ0RDQUNRb0tnZ0lEZ0FEY0NCQ0FDSUFGRk5nSVFJQUpCSUdwQkFFRW9FRVlhSUFKQkhHb1FqZ0lnQWtFQU5nSklJQUpCZnpZQ1RDQUFRUWhxSWdKQnJDWW9BZ0FpQkRZQ0FDQUNJQVJCREdzb0FnQnFRYkFtS0FJQU5nSUFJQUJCb0NZb0FnQWlBallDQUNBQUlBSkJER3NvQWdCcVFiUW1LQUlBTmdJQUlBQkJ1Q1lvQWdBMkFnZ2dBRUhzSlRZQ0FDQURRWlFtTmdJQUlBQkJnQ1kyQWdnZ0FVR3NIellDQUNBQlFRUnFFSTRDSUFGQ0FEY0NHQ0FCUWdBM0FoQWdBVUlBTndJSUlBRkJwQ0UyQWdBZ0FVRWdhaEFSR2lBQlFSZzJBakFnQVVFQU5nSXNJQUFMdkFJQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCUVFsckRoSUFDQWtLQ0FrQkFnTUVDZ2tLQ2dnSkJRWUhDeUFDSUFJb0FnQWlBVUVFYWpZQ0FDQUFJQUVvQWdBMkFnQVBDeUFDSUFJb0FnQWlBVUVFYWpZQ0FDQUFJQUV5QVFBM0F3QVBDeUFDSUFJb0FnQWlBVUVFYWpZQ0FDQUFJQUV6QVFBM0F3QVBDeUFDSUFJb0FnQWlBVUVFYWpZQ0FDQUFJQUV3QUFBM0F3QVBDeUFDSUFJb0FnQWlBVUVFYWpZQ0FDQUFJQUV4QUFBM0F3QVBDeUFDSUFJb0FnQkJCMnBCZUhFaUFVRUlhallDQUNBQUlBRXJBd0E1QXdBUEN5QUFJQUpCTXhFREFBc1BDeUFDSUFJb0FnQWlBVUVFYWpZQ0FDQUFJQUUwQWdBM0F3QVBDeUFDSUFJb0FnQWlBVUVFYWpZQ0FDQUFJQUUxQWdBM0F3QVBDeUFDSUFJb0FnQkJCMnBCZUhFaUFVRUlhallDQUNBQUlBRXBBd0EzQXdBTGF3RUVmeUFBS0FJQUxBQUFFRVZGQkVCQkFBOExBMEFnQUNnQ0FDRURRWDhoQVNBQ1FjeVpzK1lBVFFSQVFYOGdBeXdBQUVFd2F5SUVJQUpCQ213aUFXb2dCRUgvLy8vL0J5QUJhMG9iSVFFTElBQWdBMEVCYWpZQ0FDQUJJUUlnQXl3QUFSQkZEUUFMSUFFTDlCSUNFWDhCZmlNQVFkQUFheUlGSkFBZ0JTQUJOZ0pNSUFWQk4yb2hGQ0FGUVRocUlSQkJBQ0VCQWtBQ1FBSkFBa0FEUUNBQlFmLy8vLzhISUF0clNnMEJJQUVnQzJvaEN5QUZLQUpNSWdvaEFRSkFBa0FDUUNBS0xRQUFJZ2tFUUFOQUFrQUNRQ0FKUWY4QmNTSUdSUVJBSUFFaENRd0JDeUFHUVNWSERRRWdBU0VKQTBBZ0FTMEFBVUVsUncwQklBVWdBVUVDYWlJR05nSk1JQWxCQVdvaENTQUJMUUFDSVFnZ0JpRUJJQWhCSlVZTkFBc0xJQWtnQ21zaUFVSC8vLy8vQnlBTGF5SVZTZzBISUFBRVFDQUFJQW9nQVJBcUN5QUJEUVpCZnlFT1FRRWhCaUFGS0FKTUxBQUJFRVVoQVNBRktBSk1JUWdDUUNBQlJRMEFJQWd0QUFKQkpFY05BQ0FJTEFBQlFUQnJJUTVCQVNFU1FRTWhCZ3NnQlNBR0lBaHFJZ0UyQWt4QkFDRU1Ba0FnQVN3QUFDSVJRU0JySWdoQkgwc0VRQ0FCSVFZTUFRc2dBU0VHUVFFZ0NIUWlCMEdKMFFSeFJRMEFBMEFnQlNBQlFRRnFJZ1kyQWt3Z0J5QU1jaUVNSUFFc0FBRWlFVUVnYXlJSVFTQlBEUUVnQmlFQlFRRWdDSFFpQjBHSjBRUnhEUUFMQ3dKQUlCRkJLa1lFUUNBRkFuOENRQ0FHTEFBQkVFVkZEUUFnQlNnQ1RDSUJMUUFDUVNSSERRQWdBU3dBQVVFQ2RDQUVha0hBQVd0QkNqWUNBQ0FCTEFBQlFRTjBJQU5xUVlBRGF5Z0NBQ0VOUVFFaEVpQUJRUU5xREFFTElCSU5Ca0VBSVJKQkFDRU5JQUFFUUNBQ0lBSW9BZ0FpQVVFRWFqWUNBQ0FCS0FJQUlRMExJQVVvQWt4QkFXb0xJZ0UyQWt3Z0RVRUFUZzBCUVFBZ0RXc2hEU0FNUVlEQUFISWhEQXdCQ3lBRlFjd0FhaERaQWlJTlFRQklEUWdnQlNnQ1RDRUJDMEVBSVFaQmZ5RUhBbjlCQUNBQkxRQUFRUzVIRFFBYUlBRXRBQUZCS2tZRVFDQUZBbjhDUUNBQkxBQUNFRVZGRFFBZ0JTZ0NUQ0lCTFFBRFFTUkhEUUFnQVN3QUFrRUNkQ0FFYWtIQUFXdEJDallDQUNBQkxBQUNRUU4wSUFOcVFZQURheWdDQUNFSElBRkJCR29NQVFzZ0VnMEdJQUFFZnlBQ0lBSW9BZ0FpQVVFRWFqWUNBQ0FCS0FJQUJVRUFDeUVISUFVb0FreEJBbW9MSWdFMkFrd2dCMEYvYzBFZmRnd0JDeUFGSUFGQkFXbzJBa3dnQlVITUFHb1EyUUloQnlBRktBSk1JUUZCQVFzaEV3TkFJQVloRDBFY0lRa2dBU3dBQUVIQkFHdEJPVXNOQ1NBRklBRkJBV29pRVRZQ1RDQUJMQUFBSVFZZ0VTRUJJQVlnRDBFNmJHcEIveTFxTFFBQUlnWkJBV3RCQ0VrTkFBc0NRQUpBSUFaQkcwY0VRQ0FHUlEwTElBNUJBRTRFUUNBRUlBNUJBblJxSUFZMkFnQWdCU0FESUE1QkEzUnFLUU1BTndOQURBSUxJQUJGRFFnZ0JVRkFheUFHSUFJUTJBSWdCU2dDVENFUkRBSUxJQTVCQUU0TkNndEJBQ0VCSUFCRkRRY0xJQXhCLy85N2NTSUlJQXdnREVHQXdBQnhHeUVHUVFBaERFSHZHaUVPSUJBaENRSkFBa0FDUUFKL0FrQUNRQUpBQWtBQ2Z3SkFBa0FDUUFKQUFrQUNRQUpBSUJGQkFXc3NBQUFpQVVGZmNTQUJJQUZCRDNGQkEwWWJJQUVnRHhzaUFVSFlBR3NPSVFRVUZCUVVGQlFVRkE0VUR3WU9EZzRVQmhRVUZCUUNCUU1VRkFrVUFSUVVCQUFMQWtBZ0FVSEJBR3NPQnc0VUN4UU9EZzRBQ3lBQlFkTUFSZzBKREJNTElBVXBBMEFoRmtIdkdnd0ZDMEVBSVFFQ1FBSkFBa0FDUUFKQUFrQUNRQ0FQUWY4QmNRNElBQUVDQXdRYUJRWWFDeUFGS0FKQUlBczJBZ0FNR1FzZ0JTZ0NRQ0FMTmdJQURCZ0xJQVVvQWtBZ0M2dzNBd0FNRndzZ0JTZ0NRQ0FMT3dFQURCWUxJQVVvQWtBZ0N6b0FBQXdWQ3lBRktBSkFJQXMyQWdBTUZBc2dCU2dDUUNBTHJEY0RBQXdUQ3lBSFFRZ2dCMEVJU3hzaEJ5QUdRUWh5SVFaQitBQWhBUXNnRUNFSUlBRkJJSEVoRHlBRktRTkFJaFpRUlFSQUEwQWdDRUVCYXlJSUlCYW5RUTl4UVpBeWFpMEFBQ0FQY2pvQUFDQVdRZzlXSVFvZ0ZrSUVpQ0VXSUFvTkFBc0xJQWdoQ2lBR1FRaHhSU0FGS1FOQVVISU5BeUFCUVFSMlFlOGFhaUVPUVFJaERBd0RDeUFRSVFFZ0JTa0RRQ0lXVUVVRVFBTkFJQUZCQVdzaUFTQVdwMEVIY1VFd2Nqb0FBQ0FXUWdkV0lRZ2dGa0lEaUNFV0lBZ05BQXNMSUFFaENpQUdRUWh4UlEwQ0lBY2dFQ0FLYXlJQlFRRnFJQUVnQjBnYklRY01BZ3NnQlNrRFFDSVdRZ0JUQkVBZ0JVSUFJQlo5SWhZM0EwQkJBU0VNUWU4YURBRUxJQVpCZ0JCeEJFQkJBU0VNUWZBYURBRUxRZkVhUWU4YUlBWkJBWEVpREJzTElRNGdGaUFRRUk4QklRb0xJQk5CQUNBSFFRQklHdzBPSUFaQi8vOTdjU0FHSUJNYklRWWdCU2tEUUNJV1FnQlNJQWR5UlFSQUlCQWhDa0VBSVFjTURBc2dCeUFXVUNBUUlBcHJhaUlCSUFFZ0IwZ2JJUWNNQ3dzZ0JTZ0NRQ0lCUWZJZUlBRWJJZ29pQ1VFQVFmLy8vLzhISUFjZ0IwRUFTQnNpQmhEY0FTSUJJQWxySUFZZ0FSc2lBU0FLYWlFSklBZEJBRTRFUUNBSUlRWWdBU0VIREFzTElBZ2hCaUFCSVFjZ0NTMEFBQTBOREFvTElBY0VRQ0FGS0FKQURBSUxRUUFoQVNBQVFTQWdEVUVBSUFZUUxnd0NDeUFGUVFBMkFnd2dCU0FGS1FOQVBnSUlJQVVnQlVFSWFpSUJOZ0pBUVg4aEJ5QUJDeUVKUVFBaEFRSkFBMEFnQ1NnQ0FDSUlSUTBCSUFWQkJHb2dDQkRjQWlJS1FRQklJZ2dnQ2lBSElBRnJTM0pGQkVBZ0NVRUVhaUVKSUFjZ0FTQUthaUlCU3cwQkRBSUxDeUFJRFEwTFFUMGhDU0FCUVFCSURRc2dBRUVnSUEwZ0FTQUdFQzRnQVVVRVFFRUFJUUVNQVF0QkFDRUhJQVVvQWtBaENRTkFJQWtvQWdBaUNFVU5BU0FGUVFScUlBZ1EzQUlpQ0NBSGFpSUhJQUZMRFFFZ0FDQUZRUVJxSUFnUUtpQUpRUVJxSVFrZ0FTQUhTdzBBQ3dzZ0FFRWdJQTBnQVNBR1FZREFBSE1RTGlBTklBRWdBU0FOU0JzaEFRd0lDeUFUUVFBZ0IwRUFTQnNOQ0VFOUlRa2dBQ0FGS3dOQUlBMGdCeUFHSUFGQk1oRWRBQ0lCUVFCT0RRY01DUXNnQlNBRktRTkFQQUEzUVFFaEJ5QVVJUW9nQ0NFR0RBUUxJQVVnQVVFQmFpSUdOZ0pNSUFFdEFBRWhDU0FHSVFFTUFBc0FDeUFBRFFjZ0VrVU5Ba0VCSVFFRFFDQUVJQUZCQW5ScUtBSUFJZ0FFUUNBRElBRkJBM1JxSUFBZ0FoRFlBa0VCSVFzZ0FVRUJhaUlCUVFwSERRRU1DUXNMUVFFaEN5QUJRUXBQRFFjRFFDQUVJQUZCQW5ScUtBSUFEUUVnQVVFQmFpSUJRUXBIRFFBTERBY0xRUndoQ1F3RUN5QUpJQXBySWc4Z0J5QUhJQTlJR3lJSVFmLy8vLzhISUF4clNnMENRVDBoQ1NBSUlBeHFJZ2NnRFNBSElBMUtHeUlCSUJWS0RRTWdBRUVnSUFFZ0J5QUdFQzRnQUNBT0lBd1FLaUFBUVRBZ0FTQUhJQVpCZ0lBRWN4QXVJQUJCTUNBSUlBOUJBQkF1SUFBZ0NpQVBFQ29nQUVFZ0lBRWdCeUFHUVlEQUFITVFMZ3dCQ3d0QkFDRUxEQU1MUVQwaENRdEJ4SUVCSUFrMkFnQUxRWDhoQ3dzZ0JVSFFBR29rQUNBTEMzOENBWDhCZmlBQXZTSURRalNJcDBIL0QzRWlBa0gvRDBjRWZDQUNSUVJBSUFFZ0FFUUFBQUFBQUFBQUFHRUVmMEVBQlNBQVJBQUFBQUFBQVBCRG9pQUJFTnNDSVFBZ0FTZ0NBRUZBYWdzMkFnQWdBQThMSUFFZ0FrSCtCMnMyQWdBZ0EwTC8vLy8vLy8vL2g0Qi9nMEtBZ0lDQWdJQ0E4RCtFdndVZ0FBc0xFZ0FnQUVVRVFFRUFEd3NnQUNBQkVOb0JDeVVBSUFCQkFFY2dBRUc0TFVkeElBQkIwQzFIY1NBQVFmQ0dBVWR4SUFCQmlJY0JSM0VMNkFJQkEzOENRQ0FCTFFBQURRQkJpaDRRMndFaUFRUkFJQUV0QUFBTkFRc2dBRUVNYkVId0xXb1Eyd0VpQVFSQUlBRXRBQUFOQVF0QmtSNFEyd0VpQVFSQUlBRXRBQUFOQVF0QnB4NGhBUXNDUUFOQUlBRWdBbW90QUFBaUJFVWdCRUV2Um5KRkJFQkJGeUVFSUFKQkFXb2lBa0VYUncwQkRBSUxDeUFDSVFRTFFhY2VJUU1DUUFKQUFrQUNRQUpBSUFFdEFBQWlBa0V1UmcwQUlBRWdCR290QUFBTkFDQUJJUU1nQWtIREFFY05BUXNnQXkwQUFVVU5BUXNnQTBHbkhoQzJBVVVOQUNBRFFmRWRFTFlCRFFFTElBQkZCRUJCbEMwaEFpQURMUUFCUVM1R0RRSUxRUUFQQzBFQUlRRkI3SVlCS0FJQUlnSUVRQU5BSUFNZ0FrRUlhaEMyQVVVTkFpQUNLQUlnSWdJTkFBc0xRU1FRR1NJQ0JFQWdBa0dVTFNrQ0FEY0NBQ0FDUVFocUlnRWdBeUFFRUVJYUlBRWdCR3BCQURvQUFDQUNRZXlHQVNnQ0FEWUNJRUhzaGdFZ0FqWUNBQ0FDSVFFTElBRkJsQzBnQUNBQmNoc2hBZ3NnQWd1TkhnSVBmd1YrSXdCQmtBRnJJZ1FrQUNBRVFRQkJrQUVRUmlJRFFYODJBa3dnQXlBQU5nSXNJQU5CTVRZQ0lDQURJQUEyQWxRZ0FTRUVJQUloRGlNQVFiQUNheUlHSkFBZ0F5Z0NUQm9DUUFKQUFrQUNRQ0FES0FJRURRQWdBeERxQVJvZ0F5Z0NCQTBBREFFTElBUXRBQUFpQUVVTkFnSkFBMEFDUUFKQUlBQkIvd0Z4RUhFRVFBTkFJQVFpQUVFQmFpRUVJQUF0QUFFUWNRMEFDeUFEUWdBUVV3TkFBbjhnQXlnQ0JDSUJJQU1vQW1oSEJFQWdBeUFCUVFGcU5nSUVJQUV0QUFBTUFRc2dBeEFTQ3hCeERRQUxJQU1vQWdRaEJDQURLUU53UWdCWkJFQWdBeUFFUVFGcklnUTJBZ1FMSUFRZ0F5Z0NMR3VzSUFNcEEzZ2dGSHg4SVJRTUFRc0Nmd0pBQWtBZ0JDMEFBRUVsUmdSQUlBUXRBQUVpQUVFcVJnMEJJQUJCSlVjTkFnc2dBMElBRUZNQ1FDQUVMUUFBUVNWR0JFQURRQUovSUFNb0FnUWlBQ0FES0FKb1J3UkFJQU1nQUVFQmFqWUNCQ0FBTFFBQURBRUxJQU1RRWdzaUFCQnhEUUFMSUFSQkFXb2hCQXdCQ3lBREtBSUVJZ0FnQXlnQ2FFY0VRQ0FESUFCQkFXbzJBZ1FnQUMwQUFDRUFEQUVMSUFNUUVpRUFDeUFFTFFBQUlBQkhCRUFnQXlrRGNFSUFXUVJBSUFNZ0F5Z0NCRUVCYXpZQ0JBc2dBRUVBVGcwS1FRQWhEQ0FOUlEwSURBb0xJQU1vQWdRZ0F5Z0NMR3VzSUFNcEEzZ2dGSHg4SVJRZ0JDRUFEQU1MUVFBaEFpQUVRUUpxREFFTEFrQWdBQkJGUlEwQUlBUXRBQUpCSkVjTkFDQUVMUUFCUVRCcklRQWpBRUVRYXlJQklBNDJBZ3dnQVNBT0lBQkJBblJCQkd0QkFDQUFRUUZMRzJvaUFFRUVhallDQ0NBQUtBSUFJUUlnQkVFRGFnd0JDeUFPS0FJQUlRSWdEa0VFYWlFT0lBUkJBV29MSVFCQkFDRU1RUUFoQkNBQUxRQUFFRVVFUUFOQUlBQXRBQUFnQkVFS2JHcEJNR3NoQkNBQUxRQUJJUUVnQUVFQmFpRUFJQUVRUlEwQUN3c2dBQzBBQUNJRlFlMEFSd1IvSUFBRlFRQWhDU0FDUVFCSElRd2dBQzBBQVNFRlFRQWhDaUFBUVFGcUN5SUJRUUZxSVFCQkF5RUhBa0FDUUFKQUFrQUNRQUpBSUFWQndRQnJEam9FQ1FRSkJBUUVDUWtKQ1FNSkNRa0pDUWtFQ1FrSkNRUUpDUVFKQ1FrSkNRUUpCQVFFQkFRQUJBVUpBUWtFQkFRSkNRUUNCQWtKQkFrQ0NRc2dBVUVDYWlBQUlBRXRBQUZCNkFCR0lnRWJJUUJCZmtGL0lBRWJJUWNNQkFzZ0FVRUNhaUFBSUFFdEFBRkI3QUJHSWdFYklRQkJBMEVCSUFFYklRY01Bd3RCQVNFSERBSUxRUUloQnd3QkMwRUFJUWNnQVNFQUMwRUJJQWNnQUMwQUFDSUJRUzl4UVFOR0lnVWJJUThDUUNBQlFTQnlJQUVnQlJzaUMwSGJBRVlOQUFKQUlBdEI3Z0JIQkVBZ0MwSGpBRWNOQVNBRVFRRWdCRUVCU2hzaEJBd0NDeUFDSUE4Z0ZCRGdBZ3dDQ3lBRFFnQVFVd05BQW44Z0F5Z0NCQ0lCSUFNb0FtaEhCRUFnQXlBQlFRRnFOZ0lFSUFFdEFBQU1BUXNnQXhBU0N4QnhEUUFMSUFNb0FnUWhBU0FES1FOd1FnQlpCRUFnQXlBQlFRRnJJZ0UyQWdRTElBRWdBeWdDTEd1c0lBTXBBM2dnRkh4OElSUUxJQU1nQkt3aUVoQlRBa0FnQXlnQ0JDSUJJQU1vQW1oSEJFQWdBeUFCUVFGcU5nSUVEQUVMSUFNUUVrRUFTQTBFQ3lBREtRTndRZ0JaQkVBZ0F5QURLQUlFUVFGck5nSUVDMEVRSVFFQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQzBIWUFHc09JUVlMQ3dJTEN3c0xDd0VMQWdRQkFRRUxCUXNMQ3dzTEF3WUxDd0lMQkFzTEJnQUxJQXRCd1FCcklnRkJCa3RCQVNBQmRFSHhBSEZGY2cwS0N5QUdRUWhxSUFNZ0QwRUFFT01DSUFNcEEzaENBQ0FES0FJRUlBTW9BaXhyckgxUkRROGdBa1VOQ1NBR0tRTVFJUklnQmlrRENDRVRJQThPQXdVR0J3a0xJQXRCN3dGeFFlTUFSZ1JBSUFaQklHcEJmMEdCQWhCR0dpQUdRUUE2QUNBZ0MwSHpBRWNOQ0NBR1FRQTZBRUVnQmtFQU9nQXVJQVpCQURZQktnd0lDeUFHUVNCcUlBQXRBQUVpQVVIZUFFWWlCVUdCQWhCR0dpQUdRUUE2QUNBZ0FFRUNhaUFBUVFGcUlBVWJJUWdDZndKQUFrQWdBRUVDUVFFZ0JSdHFMUUFBSWdCQkxVY0VRQ0FBUWQwQVJnMEJJQUZCM2dCSElRY2dDQXdEQ3lBR0lBRkIzZ0JISWdjNkFFNE1BUXNnQmlBQlFkNEFSeUlIT2dCK0N5QUlRUUZxQ3lFQUEwQUNRQ0FBTFFBQUlnRkJMVWNFUUNBQlJRMFBJQUZCM1FCSERRRU1DZ3RCTFNFQklBQXRBQUVpQlVVZ0JVSGRBRVp5RFFBZ0FFRUJhaUVJQWtBZ0JTQUFRUUZyTFFBQUlnQk5CRUFnQlNFQkRBRUxBMEFnQUVFQmFpSUFJQVpCSUdwcUlBYzZBQUFnQUNBSUxRQUFJZ0ZKRFFBTEN5QUlJUUFMSUFFZ0Jtb2dCem9BSVNBQVFRRnFJUUFNQUFzQUMwRUlJUUVNQWd0QkNpRUJEQUVMUVFBaEFRdENBQ0VTUVFBaEJVRUFJUWhCQUNFSEl3QkJFR3NpRUNRQUFrQWdBVUVCUnlBQlFTUk5jVVVFUUVIRWdRRkJIRFlDQUF3QkN3TkFBbjhnQXlnQ0JDSUVJQU1vQW1oSEJFQWdBeUFFUVFGcU5nSUVJQVF0QUFBTUFRc2dBeEFTQ3lJRUVIRU5BQXNDUUFKQUlBUkJLMnNPQXdBQkFBRUxRWDlCQUNBRVFTMUdHeUVISUFNb0FnUWlCQ0FES0FKb1J3UkFJQU1nQkVFQmFqWUNCQ0FFTFFBQUlRUU1BUXNnQXhBU0lRUUxBa0FDUUFKQUFrQWdBVUZ2Y1NBRVFUQkhja1VFUUFKL0lBTW9BZ1FpQkNBREtBSm9Sd1JBSUFNZ0JFRUJhallDQkNBRUxRQUFEQUVMSUFNUUVnc2lCRUZmY1VIWUFFWUVRRUVRSVFFQ2Z5QURLQUlFSWdRZ0F5Z0NhRWNFUUNBRElBUkJBV28yQWdRZ0JDMEFBQXdCQ3lBREVCSUxJZ1JCb1NscUxRQUFRUkJKRFFNZ0F5a0RjRUlBV1FSQUlBTWdBeWdDQkVFQmF6WUNCQXNnQTBJQUVGTU1CZ3NnQVEwQlFRZ2hBUXdDQ3lBQlFRb2dBUnNpQVNBRVFhRXBhaTBBQUVzTkFDQURLUU53UWdCWkJFQWdBeUFES0FJRVFRRnJOZ0lFQ3lBRFFnQVFVMEhFZ1FGQkhEWUNBQXdFQ3lBQlFRcEhEUUFnQkVFd2F5SUZRUWxOQkVCQkFDRUJBMEFnQVVFS2JDQUZhaUlCUVptejVzd0JTUUovSUFNb0FnUWlCQ0FES0FKb1J3UkFJQU1nQkVFQmFqWUNCQ0FFTFFBQURBRUxJQU1RRWdzaUJFRXdheUlGUVFsTmNRMEFDeUFCclNFU0N3SkFJQVZCQ1VzTkFDQVNRZ3ArSVJNZ0JhMGhGUU5BQW44Z0F5Z0NCQ0lCSUFNb0FtaEhCRUFnQXlBQlFRRnFOZ0lFSUFFdEFBQU1BUXNnQXhBU0N5SUVRVEJySWdWQkNVc2dFeUFWZkNJU1FwcXo1c3lacytiTUdWcHlEUUVnRWtJS2ZpSVRJQVd0SWhWQ2Y0VllEUUFMUVFvaEFRd0NDMEVLSVFFZ0JVRUpUUTBCREFJTElBRWdBVUVCYTNFRVFDQUVRYUVwYWkwQUFDSUlJQUZKQkVBRFFDQUJJQVZzSUFocUlnVkJ4K1B4T0VrQ2Z5QURLQUlFSWdRZ0F5Z0NhRWNFUUNBRElBUkJBV28yQWdRZ0JDMEFBQXdCQ3lBREVCSUxJZ1JCb1NscUxRQUFJZ2dnQVVseERRQUxJQVd0SVJJTElBRWdDRTBOQVNBQnJTRVRBMEFnRWlBVGZpSVZJQWl0UXY4Qmd5SVdRbitGVmcwQ0lCVWdGbndoRWlBQkFuOGdBeWdDQkNJRUlBTW9BbWhIQkVBZ0F5QUVRUUZxTmdJRUlBUXRBQUFNQVFzZ0F4QVNDeUlFUWFFcGFpMEFBQ0lJVFEwQ0lCQWdFMElBSUJKQ0FCQXJJQkFwQXdoUURRQUxEQUVMSUFGQkYyeEJCWFpCQjNGQm9TdHFMQUFBSVJFZ0JFR2hLV290QUFBaUJTQUJTUVJBQTBBZ0NDQVJkQ0FGY2lJSVFZQ0FnTUFBU1FKL0lBTW9BZ1FpQkNBREtBSm9Sd1JBSUFNZ0JFRUJhallDQkNBRUxRQUFEQUVMSUFNUUVnc2lCRUdoS1dvdEFBQWlCU0FCU1hFTkFBc2dDSzBoRWdzZ0FTQUZUUTBBUW44Z0VhMGlFNGdpRlNBU1ZBMEFBMEFnQmExQy93R0RJQklnRTRhRUlSSWdBUUovSUFNb0FnUWlCQ0FES0FKb1J3UkFJQU1nQkVFQmFqWUNCQ0FFTFFBQURBRUxJQU1RRWdzaUJFR2hLV290QUFBaUJVME5BU0FTSUJWWURRQUxDeUFCSUFSQm9TbHFMUUFBVFEwQUEwQWdBUUovSUFNb0FnUWlCQ0FES0FKb1J3UkFJQU1nQkVFQmFqWUNCQ0FFTFFBQURBRUxJQU1RRWd0Qm9TbHFMUUFBU3cwQUMwSEVnUUZCeEFBMkFnQkJBQ0VIUW44aEVnc2dBeWtEY0VJQVdRUkFJQU1nQXlnQ0JFRUJhellDQkF0QkFDQVNRbjlSSUFkQkFYSWJCRUJCeElFQlFjUUFOZ0lBUW40aEVnd0JDeUFTSUFlc0loT0ZJQk45SVJJTElCQkJFR29rQUNBREtRTjRRZ0FnQXlnQ0JDQURLQUlzYTZ4OVVRMEtJQUpGSUF0QjhBQkhja1VFUUNBQ0lCSStBZ0FNQlFzZ0FpQVBJQklRNEFJTUJBc2dBaUFUSUJJUTRRSTRBZ0FNQXdzZ0FpQVRJQklRM1FFNUF3QU1BZ3NnQWlBVE53TUFJQUlnRWpjRENBd0JDeUFFUVFGcVFSOGdDMEhqQUVZaUJSc2hCd0pBQWtBZ0QwRUJSeUlJUlFSQUlBSWhBU0FNQkVBZ0IwRUNkQkFaSWdGRkRRWUxJQVpDQURjRHFBSkJBQ0VFQTBBZ0FTRUtBMEFDZnlBREtBSUVJZ0VnQXlnQ2FFY0VRQ0FESUFGQkFXbzJBZ1FnQVMwQUFBd0JDeUFERUJJTElnRWdCbW90QUNGRkRRTWdCaUFCT2dBYklBWkJIR29nQmtFYmFrRUJJQVpCcUFKcUVMY0JJZ0ZCZmtZTkFFRUFJUWtnQVVGL1JnMEpJQW9FUUNBS0lBUkJBblJxSUFZb0FodzJBZ0FnQkVFQmFpRUVDeUFNSUFRZ0IwWnhSUTBBQ3lBS0lBZEJBWFJCQVhJaUIwRUNkQkNkQVNJQkRRQUxEQWNMSUF3RVFFRUFJUVFnQnhBWklnRkZEUVVEUUNBQklRa0RRQUovSUFNb0FnUWlBU0FES0FKb1J3UkFJQU1nQVVFQmFqWUNCQ0FCTFFBQURBRUxJQU1RRWdzaUFTQUdhaTBBSVVVRVFFRUFJUW9NQlFzZ0JDQUphaUFCT2dBQUlBUkJBV29pQkNBSFJ3MEFDMEVBSVFvZ0NTQUhRUUYwUVFGeUlnY1FuUUVpQVEwQUN3d0hDMEVBSVFRZ0FnUkFBMEFDZnlBREtBSUVJZ0VnQXlnQ2FFY0VRQ0FESUFGQkFXbzJBZ1FnQVMwQUFBd0JDeUFERUJJTElnRWdCbW90QUNFRVFDQUNJQVJxSUFFNkFBQWdCRUVCYWlFRURBRUZRUUFoQ2lBQ0lRa01CQXNBQ3dBTEEwQUNmeUFES0FJRUlnRWdBeWdDYUVjRVFDQURJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QURFQklMSUFacUxRQWhEUUFMUVFBaENVRUFJUW9NQVF0QkFDRUpJQVpCcUFKcUJIOGdCaWdDcUFJRlFRQUxEUVVMSUFNb0FnUWhBU0FES1FOd1FnQlpCRUFnQXlBQlFRRnJJZ0UyQWdRTElBTXBBM2dnQVNBREtBSXNhNng4SWhOUUlBdEI0d0JHSUJJZ0UxSnhjZzBHQWtBZ0RFVU5BQ0FJUlFSQUlBSWdDallDQUF3QkN5QUNJQWsyQWdBTElBVU5BQ0FLQkVBZ0NpQUVRUUowYWtFQU5nSUFDeUFKUlFSQVFRQWhDUXdCQ3lBRUlBbHFRUUE2QUFBTElBTW9BZ1FnQXlnQ0xHdXNJQU1wQTNnZ0ZIeDhJUlFnRFNBQ1FRQkhhaUVOQ3lBQVFRRnFJUVFnQUMwQUFTSUFEUUVNQlFzTFFRQWhDVUVBSVFvTElBME5BUXRCZnlFTkN5QU1SUTBBSUFrUUVDQUtFQkFMSUFaQnNBSnFKQUFnRFNFQUlBTkJrQUZxSkFBZ0FBdERBQUpBSUFCRkRRQUNRQUpBQWtBQ1FDQUJRUUpxRGdZQUFRSUNCQU1FQ3lBQUlBSThBQUFQQ3lBQUlBSTlBUUFQQ3lBQUlBSStBZ0FQQ3lBQUlBSTNBd0FMQzdRREFnTi9BWDRqQUVFZ2F5SURKQUFDUUNBQlF2Ly8vLy8vLy8vLy93Q0RJZ1ZDZ0lDQWdJQ0F3TUEvZlNBRlFvQ0FnSUNBZ01DL3dBQjlWQVJBSUFGQ0dZaW5JUVFnQUZBZ0FVTC8vLzhQZ3lJRlFvQ0FnQWhVSUFWQ2dJQ0FDRkViUlFSQUlBUkJnWUNBZ0FScUlRSU1BZ3NnQkVHQWdJQ0FCR29oQWlBQUlBVkNnSUNBQ0lXRVFnQlNEUUVnQWlBRVFRRnhhaUVDREFFTElBQlFJQVZDZ0lDQWdJQ0F3UC8vQUZRZ0JVS0FnSUNBZ0lEQS8vOEFVUnRGQkVBZ0FVSVppS2RCLy8vL0FYRkJnSUNBL2dkeUlRSU1BUXRCZ0lDQS9BY2hBaUFGUXYvLy8vLy8vNysvd0FCV0RRQkJBQ0VDSUFWQ01JaW5JZ1JCa2Y0QVNRMEFJQU5CRUdvZ0FDQUJRdi8vLy8vLy96K0RRb0NBZ0lDQWdNQUFoQ0lGSUFSQmdmNEFheEF2SUFNZ0FDQUZRWUgvQUNBRWF4QjhJQU1wQXdnaUFFSVppS2NoQWlBREtRTUFJQU1wQXhBZ0F5a0RHSVJDQUZLdGhDSUZVQ0FBUXYvLy93K0RJZ0JDZ0lDQUNGUWdBRUtBZ0lBSVVSdEZCRUFnQWtFQmFpRUNEQUVMSUFVZ0FFS0FnSUFJaFlSQ0FGSU5BQ0FDUVFGeElBSnFJUUlMSUFOQklHb2tBQ0FDSUFGQ0lJaW5RWUNBZ0lCNGNYSytDNEVFQWdOL0FYNENRQUpBQWtBQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWNFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVCSUxJZ05CSzJzT0F3RUFBUUFMSUFOQk1Hc2hBUXdCQ3lBRFFTMUdJUVFDUUNBQlJRSi9JQUFvQWdRaUFpQUFLQUpvUndSQUlBQWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBQVFFZ3NpQWtFd2F5SUJRUXBKY2cwQUlBQXBBM0JDQUZNTkFDQUFJQUFvQWdSQkFXczJBZ1FMSUFJaEF3c0NRQ0FCUVFwSkJFQkJBQ0VDQTBBZ0F5QUNRUXBzYWlFQkFuOGdBQ2dDQkNJQ0lBQW9BbWhIQkVBZ0FDQUNRUUZxTmdJRUlBSXRBQUFNQVFzZ0FCQVNDeUVESUFGQk1Hc2hBaUFDUWN5WnMrWUFTQ0FEUVRCcklnRkJDVTF4RFFBTElBS3NJUVVDUUNBQlFRcFBEUUFEUUNBRHJTQUZRZ3ArZkVJd2ZTRUZBbjhnQUNnQ0JDSUJJQUFvQW1oSEJFQWdBQ0FCUVFGcU5nSUVJQUV0QUFBTUFRc2dBQkFTQ3lJRFFUQnJJZ0ZCQ1VzTkFTQUZRcTZQaGRmSHd1dWpBVk1OQUFzTElBRkJDa2tFUUFOQUFuOGdBQ2dDQkNJQklBQW9BbWhIQkVBZ0FDQUJRUUZxTmdJRUlBRXRBQUFNQVFzZ0FCQVNDMEV3YTBFS1NRMEFDd3NnQUNrRGNFSUFXUVJBSUFBZ0FDZ0NCRUVCYXpZQ0JBdENBQ0FGZlNBRklBUWJJUVVNQVF0Q2dJQ0FnSUNBZ0lDQWZ5RUZJQUFwQTNCQ0FGTU5BQ0FBSUFBb0FnUkJBV3MyQWdSQ2dJQ0FnSUNBZ0lDQWZ3OExJQVVMb0RJREVIOEhmZ0Y4SXdCQk1Hc2lEQ1FBQWtBZ0FrRUNUUVJBSUFKQkFuUWlBa0dNS1dvb0FnQWhEeUFDUVlBcGFpZ0NBQ0VPQTBBQ2Z5QUJLQUlFSWdJZ0FTZ0NhRWNFUUNBQklBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQkVCSUxJZ0lRY1EwQUMwRUJJUVlDUUFKQUlBSkJLMnNPQXdBQkFBRUxRWDlCQVNBQ1FTMUdHeUVHSUFFb0FnUWlBaUFCS0FKb1J3UkFJQUVnQWtFQmFqWUNCQ0FDTFFBQUlRSU1BUXNnQVJBU0lRSUxBa0FDUUFOQUlBVkJpaHBxTEFBQUlBSkJJSEpHQkVBQ1FDQUZRUVpMRFFBZ0FTZ0NCQ0lDSUFFb0FtaEhCRUFnQVNBQ1FRRnFOZ0lFSUFJdEFBQWhBZ3dCQ3lBQkVCSWhBZ3NnQlVFQmFpSUZRUWhIRFFFTUFnc0xJQVZCQTBjRVFDQUZRUWhHRFFFZ0EwVWdCVUVFU1hJTkFpQUZRUWhHRFFFTElBRXBBM0FpRkVJQVdRUkFJQUVnQVNnQ0JFRUJhellDQkFzZ0EwVWdCVUVFU1hJTkFDQVVRZ0JUSVFJRFFDQUNSUVJBSUFFZ0FTZ0NCRUVCYXpZQ0JBc2dCVUVCYXlJRlFRTkxEUUFMQzBJQUlSUWpBRUVRYXlJQ0pBQUNmaUFHc2tNQUFJQi9sTHdpQTBILy8vLy9CM0VpQVVHQWdJQUVhMEgvLy8vM0IwMEVRQ0FCclVJWmhrS0FnSUNBZ0lDQXdEOThEQUVMSUFPdFFobUdRb0NBZ0lDQWdNRC8vd0NFSUFGQmdJQ0EvQWRQRFFBYVFnQWdBVVVOQUJvZ0FpQUJyVUlBSUFGbklnRkIwUUJxRUM4Z0Fpa0RBQ0VVSUFJcEF3aENnSUNBZ0lDQXdBQ0ZRWW4vQUNBQmE2MUNNSWFFQ3lFVklBd2dGRGNEQUNBTUlCVWdBMEdBZ0lDQWVIR3RRaUNHaERjRENDQUNRUkJxSkFBZ0RDa0RDQ0VVSUF3cEF3QWhGUXdDQ3dKQUFrQUNRQ0FGRFFCQkFDRUZBMEFnQlVISEhHb3NBQUFnQWtFZ2NrY05BUUpBSUFWQkFVc05BQ0FCS0FJRUlnSWdBU2dDYUVjRVFDQUJJQUpCQVdvMkFnUWdBaTBBQUNFQ0RBRUxJQUVRRWlFQ0N5QUZRUUZxSWdWQkEwY05BQXNNQVFzQ1FBSkFJQVVPQkFBQkFRSUJDd0pBSUFKQk1FY05BQUovSUFFb0FnUWlCU0FCS0FKb1J3UkFJQUVnQlVFQmFqWUNCQ0FGTFFBQURBRUxJQUVRRWd0QlgzRkIyQUJHQkVBakFFR3dBMnNpQWlRQUFuOGdBU2dDQkNJRklBRW9BbWhIQkVBZ0FTQUZRUUZxTmdJRUlBVXRBQUFNQVFzZ0FSQVNDeUVGQWtBQ2Z3TkFJQVZCTUVjRVFBSkFJQVZCTGtjTkJDQUJLQUlFSWdVZ0FTZ0NhRVlOQUNBQklBVkJBV28yQWdRZ0JTMEFBQXdEQ3dVZ0FTZ0NCQ0lGSUFFb0FtaEhCSDlCQVNFS0lBRWdCVUVCYWpZQ0JDQUZMUUFBQlVFQklRb2dBUkFTQ3lFRkRBRUxDeUFCRUJJTElRVkJBU0VFSUFWQk1FY05BQU5BSUJkQ0FYMGhGd0ovSUFFb0FnUWlCU0FCS0FKb1J3UkFJQUVnQlVFQmFqWUNCQ0FGTFFBQURBRUxJQUVRRWdzaUJVRXdSZzBBQzBFQklRb0xRb0NBZ0lDQWdNRC9QeUVWQWtBRFFBSkFJQVZCSUhJaEN3SkFBa0FnQlVFd2F5SUlRUXBKRFFBZ0JVRXVSeUFMUWVFQWEwRUdUM0VOQkNBRlFTNUhEUUFnQkEwQ1FRRWhCQ0FVSVJjTUFRc2dDMEhYQUdzZ0NDQUZRVGxLR3lFRkFrQWdGRUlIVndSQUlBVWdDVUVFZEdvaENRd0JDeUFVUWh4WEJFQWdBa0V3YWlBRkVFRWdBa0VnYWlBWklCVkNBRUtBZ0lDQWdJREEvVDhRR0NBQ1FSQnFJQUlwQXlBaUdTQUNLUU1vSWhVZ0Fpa0RNQ0FDS1FNNEVCZ2dBaUFXSUJnZ0Fpa0RFQ0FDS1FNWUVEd2dBaWtEQ0NFWUlBSXBBd0FoRmd3QkN5QUZSU0FIY2cwQUlBSkIwQUJxSUJrZ0ZVSUFRb0NBZ0lDQWdJRC9QeEFZSUFKQlFHc2dGaUFZSUFJcEExQWdBaWtEV0JBOElBSXBBMGdoR0VFQklRY2dBaWtEUUNFV0N5QVVRZ0Y4SVJSQkFTRUtDeUFCS0FJRUlnVWdBU2dDYUVjRWZ5QUJJQVZCQVdvMkFnUWdCUzBBQUFVZ0FSQVNDeUVGREFFTEMwRXVJUVVMQW40Z0NrVUVRQUpBQWtBZ0FTa0RjRUlBV1FSQUlBRWdBU2dDQkNJRlFRRnJOZ0lFSUFORkRRRWdBU0FGUVFKck5nSUVJQVJGRFFJZ0FTQUZRUU5yTmdJRURBSUxJQU1OQVFzZ0FVSUFFRk1MSUFKQjRBQnFJQWEzUkFBQUFBQUFBQUFBb2hCZElBSXBBMkFoRmlBQ0tRTm9EQUVMSUJSQ0IxY0VRQ0FVSVJVRFFDQUpRUVIwSVFrZ0ZVSUJmQ0lWUWdoU0RRQUxDd0pBQWtBQ1FDQUZRVjl4UWRBQVJnUkFJQUVnQXhEaUFpSVZRb0NBZ0lDQWdJQ0FnSDlTRFFNZ0F3UkFJQUVwQTNCQ0FGa05BZ3dEQzBJQUlSWWdBVUlBRUZOQ0FBd0VDMElBSVJVZ0FTa0RjRUlBVXcwQ0N5QUJJQUVvQWdSQkFXczJBZ1FMUWdBaEZRc2dDVVVFUUNBQ1FmQUFhaUFHdDBRQUFBQUFBQUFBQUtJUVhTQUNLUU53SVJZZ0Fpa0RlQXdCQ3lBWElCUWdCQnRDQW9ZZ0ZYeENJSDBpRkVFQUlBOXJyVlVFUUVIRWdRRkJ4QUEyQWdBZ0FrR2dBV29nQmhCQklBSkJrQUZxSUFJcEE2QUJJQUlwQTZnQlFuOUMvLy8vLy8vL3YvLy9BQkFZSUFKQmdBRnFJQUlwQTVBQklBSXBBNWdCUW45Qy8vLy8vLy8vdi8vL0FCQVlJQUlwQTRBQklSWWdBaWtEaUFFTUFRc2dEMEhpQVd1c0lCUlhCRUFnQ1VFQVRnUkFBMEFnQWtHZ0Eyb2dGaUFZUWdCQ2dJQ0FnSUNBd1ArL2Z4QThJQllnR0VLQWdJQ0FnSUNBL3o4UTRBRWhBU0FDUVpBRGFpQVdJQmdnRmlBQ0tRT2dBeUFCUVFCSUlnTWJJQmdnQWlrRHFBTWdBeHNRUENBVVFnRjlJUlFnQWlrRG1BTWhHQ0FDS1FPUUF5RVdJQWxCQVhRZ0FVRUFUbklpQ1VFQVRnMEFDd3NDZmlBVUlBK3NmVUlnZkNJVnB5SUJRUUFnQVVFQVNoc2dEaUFWSUE2dFV4c2lBVUh4QUU0RVFDQUNRWUFEYWlBR0VFRWdBaWtEaUFNaEZ5QUNLUU9BQXlFWlFnQU1BUXNnQWtIZ0FtcEJrQUVnQVdzUTN3RVFYU0FDUWRBQ2FpQUdFRUVnQWtId0Ftb2dBaWtENEFJZ0Fpa0Q2QUlnQWlrRDBBSWlHU0FDS1FQWUFpSVhFT2dDSUFJcEEvZ0NJUm9nQWlrRDhBSUxJUlVnQWtIQUFtb2dDU0FKUVFGeFJTQVdJQmhDQUVJQUVIdEJBRWNnQVVFZ1NIRnhJZ0ZxRUpBQklBSkJzQUpxSUJrZ0Z5QUNLUVBBQWlBQ0tRUElBaEFZSUFKQmtBSnFJQUlwQTdBQ0lBSXBBN2dDSUJVZ0doQThJQUpCb0FKcVFnQWdGaUFCRzBJQUlCZ2dBUnNnR1NBWEVCZ2dBa0dBQW1vZ0Fpa0RvQUlnQWlrRHFBSWdBaWtEa0FJZ0Fpa0RtQUlRUENBQ1FmQUJhaUFDS1FPQUFpQUNLUU9JQWlBVklCb1EzZ0VnQWlrRDhBRWlGU0FDS1FQNEFTSVhRZ0JDQUJCN1JRUkFRY1NCQVVIRUFEWUNBQXNnQWtIZ0FXb2dGU0FYSUJTbkVPWUNJQUlwQStBQklSWWdBaWtENkFFTUFRdEJ4SUVCUWNRQU5nSUFJQUpCMEFGcUlBWVFRU0FDUWNBQmFpQUNLUVBRQVNBQ0tRUFlBVUlBUW9DQWdJQ0FnTUFBRUJnZ0FrR3dBV29nQWlrRHdBRWdBaWtEeUFGQ0FFS0FnSUNBZ0lEQUFCQVlJQUlwQTdBQklSWWdBaWtEdUFFTElSUWdEQ0FXTndNUUlBd2dGRGNER0NBQ1FiQURhaVFBSUF3cEF4Z2hGQ0FNS1FNUUlSVU1CZ3NnQVNrRGNFSUFVdzBBSUFFZ0FTZ0NCRUVCYXpZQ0JBc2dBU0VGSUFZaENTQURJUXBCQUNFR1FRQWhBeU1BUVpER0FHc2lCQ1FBUVFBZ0RpQVBhaUlTYXlFVEFrQUNmd05BSUFKQk1FY0VRQUpBSUFKQkxrY05CQ0FGS0FJRUlnRWdCU2dDYUVZTkFDQUZJQUZCQVdvMkFnUWdBUzBBQUF3REN3VWdCU2dDQkNJQklBVW9BbWhIQkg5QkFTRUdJQVVnQVVFQmFqWUNCQ0FCTFFBQUJVRUJJUVlnQlJBU0N5RUNEQUVMQ3lBRkVCSUxJUUpCQVNFSElBSkJNRWNOQUFOQUlCUkNBWDBoRkFKL0lBVW9BZ1FpQVNBRktBSm9Sd1JBSUFVZ0FVRUJhallDQkNBQkxRQUFEQUVMSUFVUUVnc2lBa0V3UmcwQUMwRUJJUVlMSUFSQkFEWUNrQVlDZmdKQUFrQUNRQUpBQWtBZ0FrRXVSaUlCUlNBQ1FUQnJJZ2hCQ1V0eFJRUkFBMEFDUUNBQlFRRnhCRUFnQjBVRVFDQVZJUlJCQVNFSERBSUxJQVpGSVFFTUJBc2dGVUlCZkNFVklBTkIvQTlNQkVBZ0RTQVZweUFDUVRCR0d5RU5JQVJCa0FacUlBTkJBblJxSWdFZ0N3Ui9JQUlnQVNnQ0FFRUtiR3BCTUdzRklBZ0xOZ0lBUVFFaEJrRUFJQXRCQVdvaUFTQUJRUWxHSWdFYklRc2dBU0FEYWlFRERBRUxJQUpCTUVZTkFDQUVJQVFvQW9CR1FRRnlOZ0tBUmtIY2p3RWhEUXNDZnlBRktBSUVJZ0VnQlNnQ2FFY0VRQ0FGSUFGQkFXbzJBZ1FnQVMwQUFBd0JDeUFGRUJJTElnSkJMa1lpQVNBQ1FUQnJJZ2hCQ2tseURRQUxDeUFVSUJVZ0J4c2hGQ0FHUlNBQ1FWOXhRY1VBUjNKRkJFQUNRQ0FGSUFvUTRnSWlGa0tBZ0lDQWdJQ0FnSUIvVWcwQUlBcEZEUVZDQUNFV0lBVXBBM0JDQUZNTkFDQUZJQVVvQWdSQkFXczJBZ1FMSUFaRkRRTWdGQ0FXZkNFVURBVUxJQVpGSVFFZ0FrRUFTQTBCQ3lBRktRTndRZ0JURFFBZ0JTQUZLQUlFUVFGck5nSUVDeUFCUlEwQ0MwSEVnUUZCSERZQ0FBdENBQ0VWSUFWQ0FCQlRRZ0FNQVFzZ0JDZ0NrQVlpQVVVRVFDQUVJQW0zUkFBQUFBQUFBQUFBb2hCZElBUXBBd0FoRlNBRUtRTUlEQUVMSUJRZ0ZWSWdGVUlKVlhJZ0RrRWVURUVBSUFFZ0RuWWJja1VFUUNBRVFUQnFJQWtRUVNBRVFTQnFJQUVRa0FFZ0JFRVFhaUFFS1FNd0lBUXBBemdnQkNrRElDQUVLUU1vRUJnZ0JDa0RFQ0VWSUFRcEF4Z01BUXNnRDBGK2JhMGdGRk1FUUVIRWdRRkJ4QUEyQWdBZ0JFSGdBR29nQ1JCQklBUkIwQUJxSUFRcEEyQWdCQ2tEYUVKL1F2Ly8vLy8vLzcvLy93QVFHQ0FFUVVCcklBUXBBMUFnQkNrRFdFSi9Rdi8vLy8vLy83Ly8vd0FRR0NBRUtRTkFJUlVnQkNrRFNBd0JDeUFQUWVJQmE2d2dGRlVFUUVIRWdRRkJ4QUEyQWdBZ0JFR1FBV29nQ1JCQklBUkJnQUZxSUFRcEE1QUJJQVFwQTVnQlFnQkNnSUNBZ0lDQXdBQVFHQ0FFUWZBQWFpQUVLUU9BQVNBRUtRT0lBVUlBUW9DQWdJQ0FnTUFBRUJnZ0JDa0RjQ0VWSUFRcEEzZ01BUXNnQ3dSQUlBdEJDRXdFUUNBRVFaQUdhaUFEUVFKMGFpSUJLQUlBSVFVRFFDQUZRUXBzSVFVZ0MwRUJhaUlMUVFsSERRQUxJQUVnQlRZQ0FBc2dBMEVCYWlFREN3SkFJQTBnRktjaUIwb2dEVUVKVG5JZ0IwRVJTbklOQUNBSFFRbEdCRUFnQkVIQUFXb2dDUkJCSUFSQnNBRnFJQVFvQXBBR0VKQUJJQVJCb0FGcUlBUXBBOEFCSUFRcEE4Z0JJQVFwQTdBQklBUXBBN2dCRUJnZ0JDa0RvQUVoRlNBRUtRT29BUXdDQ3lBSFFRaE1CRUFnQkVHUUFtb2dDUkJCSUFSQmdBSnFJQVFvQXBBR0VKQUJJQVJCOEFGcUlBUXBBNUFDSUFRcEE1Z0NJQVFwQTRBQ0lBUXBBNGdDRUJnZ0JFSGdBV3BCQUNBSGEwRUNkRUdBS1dvb0FnQVFRU0FFUWRBQmFpQUVLUVB3QVNBRUtRUDRBU0FFS1FQZ0FTQUVLUVBvQVJEbEFpQUVLUVBRQVNFVklBUXBBOWdCREFJTElBNGdCMEY5YkdwQkcyb2lBVUVlVEVFQUlBUW9BcEFHSWdJZ0FYWWJEUUFnQkVIZ0Ftb2dDUkJCSUFSQjBBSnFJQUlRa0FFZ0JFSEFBbW9nQkNrRDRBSWdCQ2tENkFJZ0JDa0QwQUlnQkNrRDJBSVFHQ0FFUWJBQ2FpQUhRUUowUWJnb2FpZ0NBQkJCSUFSQm9BSnFJQVFwQThBQ0lBUXBBOGdDSUFRcEE3QUNJQVFwQTdnQ0VCZ2dCQ2tEb0FJaEZTQUVLUU9vQWd3QkN3TkFJQVJCa0FacUlBTWlBa0VCYXlJRFFRSjBhaWdDQUVVTkFBdEJBQ0VMQWtBZ0IwRUpieUlCUlFSQVFRQWhBUXdCQ3lBQklBRkJDV29nQjBFQVRoc2hBd0pBSUFKRkJFQkJBQ0VCUVFBaEFnd0JDMEdBbE92Y0EwRUFJQU5yUVFKMFFZQXBhaWdDQUNJR2JTRUtRUUFoQ0VFQUlRVkJBQ0VCQTBBZ0JFR1FCbW9nQlVFQ2RHb2lEU0FJSUEwb0FnQWlEU0FHYmlJUWFpSUlOZ0lBSUFGQkFXcEIvdzl4SUFFZ0NFVWdBU0FGUm5FaUNCc2hBU0FIUVFscklBY2dDQnNoQnlBS0lBMGdCaUFRYkd0c0lRZ2dCVUVCYWlJRklBSkhEUUFMSUFoRkRRQWdCRUdRQm1vZ0FrRUNkR29nQ0RZQ0FDQUNRUUZxSVFJTElBY2dBMnRCQ1dvaEJ3c0RRQUpBSUFkQkpFNEVRQ0FIUVNSSERRRWdCRUdRQm1vZ0FVRUNkR29vQWdCQjBlbjVCRThOQVFzZ0FrSC9EMm9oQmtFQUlRZ0RRQ0FJclNBRVFaQUdhaUFHUWY4UGNTSURRUUowYWlJR05RSUFRaDJHZkNJVVFvR1U2OXdEVkFSL1FRQUZJQlFnRkVLQWxPdmNBNEFpRlVLQWxPdmNBMzU5SVJRZ0ZhY0xJUWdnQmlBVXB5SUdOZ0lBSUFJZ0FpQUNJQU1nQmhzZ0FTQURSaHNnQXlBQ1FRRnJRZjhQY1VjYklRSWdBMEVCYXlFR0lBRWdBMGNOQUFzZ0MwRWRheUVMSUFoRkRRRWdBaUFCUVFGclFmOFBjU0lCUmdSQUlBUkJrQVpxSWdNZ0FrSCtEMnBCL3c5eFFRSjBhaUlHSUFZb0FnQWdBa0VCYTBIL0QzRWlBa0VDZENBRGFpZ0NBSEkyQWdBTElBZEJDV29oQnlBRVFaQUdhaUFCUVFKMGFpQUlOZ0lBREFFTEN3SkFBMEFnQWtFQmFrSC9EM0VoQXlBRVFaQUdhaUFDUVFGclFmOFBjVUVDZEdvaENBTkFJQUVoQmtFQUlRVUNRQUpBQTBBQ1FDQUZJQVpxUWY4UGNTSUJJQUpHRFFBZ0JFR1FCbW9nQVVFQ2RHb29BZ0FpQVNBRlFRSjBRZEFvYWlnQ0FDSUtTUTBBSUFFZ0Nrc05BaUFGUVFGcUlnVkJCRWNOQVFzTElBZEJKRWNOQUVJQUlSUkJBQ0VGUWdBaEZRTkFJQUlnQlNBR2FrSC9EM0VpQVVZRVFDQUNRUUZxUWY4UGNTSUNRUUowSUFScVFRQTJBb3dHQ3lBRVFZQUdhaUFVSUJWQ0FFS0FnSUNBNVpxM2pzQUFFQmdnQkVId0JXb2dCRUdRQm1vZ0FVRUNkR29vQWdBUWtBRWdCRUhnQldvZ0JDa0RnQVlnQkNrRGlBWWdCQ2tEOEFVZ0JDa0QrQVVRUENBRUtRUG9CU0VWSUFRcEErQUZJUlFnQlVFQmFpSUZRUVJIRFFBTElBUkIwQVZxSUFrUVFTQUVRY0FGYWlBVUlCVWdCQ2tEMEFVZ0JDa0QyQVVRR0NBRUtRUElCU0VWUWdBaEZDQUVLUVBBQlNFV0lBdEI4UUJxSWdjZ0Qyc2lBMEVBSUFOQkFFb2JJQTRnQXlBT1NDSUZHeUlCUWZBQVRBMEJEQVFMUVFsQkFTQUhRUzFLR3lJS0lBdHFJUXNnQmlBQ0lnRkdEUUZCZ0pUcjNBTWdDblloRFVGL0lBcDBRWDl6SVJCQkFDRUZJQVloQVFOQUlBUkJrQVpxSUFaQkFuUnFJaEVnQlNBUktBSUFJaEVnQ25acUlnVTJBZ0FnQVVFQmFrSC9EM0VnQVNBRlJTQUJJQVpHY1NJRkd5RUJJQWRCQ1dzZ0J5QUZHeUVISUJBZ0VYRWdEV3doQlNBR1FRRnFRZjhQY1NJR0lBSkhEUUFMSUFWRkRRRWdBU0FEUndSQUlBUkJrQVpxSUFKQkFuUnFJQVUyQWdBZ0F5RUNEQU1MSUFnZ0NDZ0NBRUVCY2pZQ0FDQURJUUVNQVFzTEN5QUVRWkFGYWtIaEFTQUJheERmQVJCZElBUkJzQVZxSUFRcEE1QUZJQVFwQTVnRklCWWdGUkRvQWlBRUtRTzRCU0VaSUFRcEE3QUZJUmdnQkVHQUJXcEI4UUFnQVdzUTN3RVFYU0FFUWFBRmFpQVdJQlVnQkNrRGdBVWdCQ2tEaUFVUTVBSWdCRUh3QkdvZ0ZpQVZJQVFwQTZBRkloUWdCQ2tEcUFVaUZ4RGVBU0FFUWVBRWFpQVlJQmtnQkNrRDhBUWdCQ2tEK0FRUVBDQUVLUVBvQkNFVklBUXBBK0FFSVJZTEFrQWdCa0VFYWtIL0QzRWlDaUFDUmcwQUFrQWdCRUdRQm1vZ0NrRUNkR29vQWdBaUNrSC95Ylh1QVUwRVFDQUtSU0FHUVFWcVFmOFBjU0FDUm5FTkFTQUVRZkFEYWlBSnQwUUFBQUFBQUFEUVA2SVFYU0FFUWVBRGFpQVVJQmNnQkNrRDhBTWdCQ2tEK0FNUVBDQUVLUVBvQXlFWElBUXBBK0FESVJRTUFRc2dDa0dBeXJYdUFVY0VRQ0FFUWRBRWFpQUp0MFFBQUFBQUFBRG9QNklRWFNBRVFjQUVhaUFVSUJjZ0JDa0QwQVFnQkNrRDJBUVFQQ0FFS1FQSUJDRVhJQVFwQThBRUlSUU1BUXNnQ2JjaEd5QUNJQVpCQldwQi93OXhSZ1JBSUFSQmtBUnFJQnRFQUFBQUFBQUE0RCtpRUYwZ0JFR0FCR29nRkNBWElBUXBBNUFFSUFRcEE1Z0VFRHdnQkNrRGlBUWhGeUFFS1FPQUJDRVVEQUVMSUFSQnNBUnFJQnRFQUFBQUFBQUE2RCtpRUYwZ0JFR2dCR29nRkNBWElBUXBBN0FFSUFRcEE3Z0VFRHdnQkNrRHFBUWhGeUFFS1FPZ0JDRVVDeUFCUWU4QVNnMEFJQVJCMEFOcUlCUWdGMElBUW9DQWdJQ0FnTUQvUHhEa0FpQUVLUVBRQXlBRUtRUFlBMElBUWdBUWV3MEFJQVJCd0FOcUlCUWdGMElBUW9DQWdJQ0FnTUQvUHhBOElBUXBBOGdESVJjZ0JDa0R3QU1oRkFzZ0JFR3dBMm9nRmlBVklCUWdGeEE4SUFSQm9BTnFJQVFwQTdBRElBUXBBN2dESUJnZ0dSRGVBU0FFS1FPb0F5RVZJQVFwQTZBRElSWUNRRUYrSUJKcklBZEIvLy8vL3dkeFRnMEFJQVFnRlVMLy8vLy8vLy8vLy84QWd6Y0RtQU1nQkNBV053T1FBeUFFUVlBRGFpQVdJQlZDQUVLQWdJQ0FnSUNBL3o4UUdDQUVLUU9RQXlJWUlBUXBBNWdESWhsQ2dJQ0FnSUNBZ0xqQUFCRGdBU0VDSUJVZ0JDa0RpQU1nQWtFQVNDSUdHeUVWSUJZZ0JDa0RnQU1nQmhzaEZpQVRJQXNnQWtFQVRtb2lDMEh1QUdwT0JFQWdCU0FGSUFFZ0EwZHhJQmdnR1VLQWdJQ0FnSUNBdU1BQUVPQUJRUUJJRzBFQlJ3MEJJQlFnRjBJQVFnQVFlMFVOQVF0QnhJRUJRY1FBTmdJQUN5QUVRZkFDYWlBV0lCVWdDeERtQWlBRUtRUHdBaUVWSUFRcEEvZ0NDeUVVSUF3Z0ZUY0RJQ0FNSUJRM0F5Z2dCRUdReGdCcUpBQWdEQ2tES0NFVUlBd3BBeUFoRlF3RUN5QUJLUU53UWdCWkJFQWdBU0FCS0FJRVFRRnJOZ0lFQ3d3QkN3SkFBbjhnQVNnQ0JDSUNJQUVvQW1oSEJFQWdBU0FDUVFGcU5nSUVJQUl0QUFBTUFRc2dBUkFTQzBFb1JnUkFRUUVoQlF3QkMwS0FnSUNBZ0lEZy8vOEFJUlFnQVNrRGNFSUFVdzBESUFFZ0FTZ0NCRUVCYXpZQ0JBd0RDd05BQW44Z0FTZ0NCQ0lDSUFFb0FtaEhCRUFnQVNBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQVJBU0N5SUNRVEJyUVFwSklBSkJ3UUJyUVJwSmNpQUNRZDhBUm5KRklBSkI0UUJyUVJwUGNVVUVRQ0FGUVFGcUlRVU1BUXNMUW9DQWdJQ0FnT0QvL3dBaEZDQUNRU2xHRFFJZ0FTa0RjQ0lYUWdCWkJFQWdBU0FCS0FJRVFRRnJOZ0lFQ3dKQUlBTUVRQ0FGRFFFTUJBc01BUXNEUUNBRlFRRnJJUVVnRjBJQVdRUkFJQUVnQVNnQ0JFRUJhellDQkFzZ0JRMEFDd3dDQzBIRWdRRkJIRFlDQUNBQlFnQVFVd3RDQUNFVUN5QUFJQlUzQXdBZ0FDQVVOd01JSUF4Qk1Hb2tBQXZLQmdJRWZ3TitJd0JCZ0FGcklnVWtBQUpBQWtBQ1FDQURJQVJDQUVJQUVIdEZEUUFDZnlBRVF2Ly8vLy8vL3orRElRa0NmeUFFUWpDSXAwSC8vd0Z4SWdaQi8vOEJSd1JBUVFRZ0JnMEJHa0VDUVFNZ0F5QUpoRkFiREFJTElBTWdDWVJRQ3d0RkRRQWdBa0l3aUtjaUNFSC8vd0Z4SWdaQi8vOEJSdzBCQ3lBRlFSQnFJQUVnQWlBRElBUVFHQ0FGSUFVcEF4QWlBU0FGS1FNWUlnSWdBU0FDRU9VQ0lBVXBBd2doQWlBRktRTUFJUVFNQVFzZ0FTQUNRdi8vLy8vLy96K0RJQWF0UWpDR2hDSUtJQU1nQkVMLy8vLy8vLzgvZ3lBRVFqQ0lwMEgvL3dGeElnZXRRakNHaENJSkVIdEJBRXdFUUNBQklBb2dBeUFKRUhzRVFDQUJJUVFNQWdzZ0JVSHdBR29nQVNBQ1FnQkNBQkFZSUFVcEEzZ2hBaUFGS1FOd0lRUU1BUXNnQmdSK0lBRUZJQVZCNEFCcUlBRWdDa0lBUW9DQWdJQ0FnTUM3d0FBUUdDQUZLUU5vSWdwQ01JaW5RZmdBYXlFR0lBVXBBMkFMSVFRZ0IwVUVRQ0FGUWRBQWFpQURJQWxDQUVLQWdJQ0FnSURBdThBQUVCZ2dCU2tEV0NJSlFqQ0lwMEg0QUdzaEJ5QUZLUU5RSVFNTElBbEMvLy8vLy8vL1A0TkNnSUNBZ0lDQXdBQ0VJUWtnQ2tMLy8vLy8vLzgvZzBLQWdJQ0FnSURBQUlRaENpQUdJQWRLQkVBRFFBSitJQW9nQ1gwZ0F5QUVWcTE5SWd0Q0FGa0VRQ0FMSUFRZ0EzMGlCSVJRQkVBZ0JVRWdhaUFCSUFKQ0FFSUFFQmdnQlNrREtDRUNJQVVwQXlBaEJBd0ZDeUFMUWdHR0lBUkNQNGlFREFFTElBcENBWVlnQkVJL2lJUUxJUW9nQkVJQmhpRUVJQVpCQVdzaUJpQUhTZzBBQ3lBSElRWUxBa0FnQ2lBSmZTQURJQVJXclgwaUNVSUFVd1JBSUFvaENRd0JDeUFKSUFRZ0EzMGlCSVJDQUZJTkFDQUZRVEJxSUFFZ0FrSUFRZ0FRR0NBRktRTTRJUUlnQlNrRE1DRUVEQUVMSUFsQy8vLy8vLy8vUDFnRVFBTkFJQVJDUDRnaEFTQUdRUUZySVFZZ0JFSUJoaUVFSUFFZ0NVSUJob1FpQ1VLQWdJQ0FnSURBQUZRTkFBc0xJQWhCZ0lBQ2NTRUhJQVpCQUV3RVFDQUZRVUJySUFRZ0NVTC8vLy8vLy84L2d5QUdRZmdBYWlBSGNxMUNNSWFFUWdCQ2dJQ0FnSUNBd01NL0VCZ2dCU2tEU0NFQ0lBVXBBMEFoQkF3QkN5QUpRdi8vLy8vLy96K0RJQVlnQjNLdFFqQ0doQ0VDQ3lBQUlBUTNBd0FnQUNBQ053TUlJQVZCZ0FGcUpBQUxxZzhDQlg4T2ZpTUFRZEFDYXlJRkpBQWdCRUwvLy8vLy8vOC9neUVMSUFKQy8vLy8vLy8vUDRNaENpQUNJQVNGUW9DQWdJQ0FnSUNBZ0grRElRMGdCRUl3aUtkQi8vOEJjU0VJQWtBQ1FDQUNRakNJcDBILy93RnhJZ2xCQVd0Qi9mOEJUUVJBSUFoQkFXdEIvdjhCU1EwQkN5QUJVQ0FDUXYvLy8vLy8vLy8vL3dDRElneENnSUNBZ0lDQXdQLy9BRlFnREVLQWdJQ0FnSURBLy84QVVSdEZCRUFnQWtLQWdJQ0FnSUFnaENFTkRBSUxJQU5RSUFSQy8vLy8vLy8vLy8vL0FJTWlBa0tBZ0lDQWdJREEvLzhBVkNBQ1FvQ0FnSUNBZ01ELy93QlJHMFVFUUNBRVFvQ0FnSUNBZ0NDRUlRMGdBeUVCREFJTElBRWdERUtBZ0lDQWdJREEvLzhBaFlSUUJFQWdBeUFDUW9DQWdJQ0FnTUQvL3dDRmhGQUVRRUlBSVFGQ2dJQ0FnSUNBNFAvL0FDRU5EQU1MSUExQ2dJQ0FnSUNBd1AvL0FJUWhEVUlBSVFFTUFnc2dBeUFDUW9DQWdJQ0FnTUQvL3dDRmhGQUVRRUlBSVFFTUFnc2dBU0FNaEZBRVFFS0FnSUNBZ0lEZy8vOEFJQTBnQWlBRGhGQWJJUTFDQUNFQkRBSUxJQUlnQTRSUUJFQWdEVUtBZ0lDQWdJREEvLzhBaENFTlFnQWhBUXdDQ3lBTVF2Ly8vLy8vL3o5WUJFQWdCVUhBQW1vZ0FTQUtJQUVnQ2lBS1VDSUdHM2tnQmtFR2RLMThweUlHUVE5ckVDOUJFQ0FHYXlFR0lBVXBBOGdDSVFvZ0JTa0R3QUloQVFzZ0FrTC8vLy8vLy84L1ZnMEFJQVZCc0FKcUlBTWdDeUFESUFzZ0MxQWlCeHQ1SUFkQkJuU3RmS2NpQjBFUGF4QXZJQVlnQjJwQkVHc2hCaUFGS1FPNEFpRUxJQVVwQTdBQ0lRTUxJQVZCb0FKcUlBdENnSUNBZ0lDQXdBQ0VJaEpDRDRZZ0EwSXhpSVFpQWtJQVFvQ0FnSUN3NXJ5QzlRQWdBbjBpQkVJQUVDc2dCVUdRQW1wQ0FDQUZLUU9vQW4xQ0FDQUVRZ0FRS3lBRlFZQUNhaUFGS1FPWUFrSUJoaUFGS1FPUUFrSS9pSVFpQkVJQUlBSkNBQkFySUFWQjhBRnFJQVJDQUVJQUlBVXBBNGdDZlVJQUVDc2dCVUhnQVdvZ0JTa0QrQUZDQVlZZ0JTa0Q4QUZDUDRpRUlnUkNBQ0FDUWdBUUt5QUZRZEFCYWlBRVFnQkNBQ0FGS1FQb0FYMUNBQkFySUFWQndBRnFJQVVwQTlnQlFnR0dJQVVwQTlBQlFqK0loQ0lFUWdBZ0FrSUFFQ3NnQlVHd0FXb2dCRUlBUWdBZ0JTa0R5QUY5UWdBUUt5QUZRYUFCYWlBQ1FnQWdCU2tEdUFGQ0FZWWdCU2tEc0FGQ1A0aUVRZ0Y5SWdKQ0FCQXJJQVZCa0FGcUlBTkNENFpDQUNBQ1FnQVFLeUFGUWZBQWFpQUNRZ0JDQUNBRktRT29BU0FGS1FPZ0FTSU1JQVVwQTVnQmZDSUVJQXhVclh3Z0JFSUJWcTE4ZlVJQUVDc2dCVUdBQVdwQ0FTQUVmVUlBSUFKQ0FCQXJJQVlnQ1NBSWEyb2hCZ0ovSUFVcEEzQWlFMElCaGlJT0lBVXBBNGdCSWc5Q0FZWWdCU2tEZ0FGQ1A0aUVmQ0lRUXVmc0FIMGlGRUlnaUNJQ0lBcENnSUNBZ0lDQXdBQ0VJaFZDSDRoQy8vLy8vdytESWdSK0loRWdBVUlCaGlJTVFpQ0lJZ3NnRUNBVVZxMGdEaUFRVnEwZ0JTa0RlRUlCaGlBVFFqK0loQ0FQUWorSWZIeDhRZ0Y5SWhOQ0lJZ2lFSDU4SWc0Z0VWU3RJQTRnRGlBVFF2Ly8vLzhQZ3lJVElBRkNQNGdpRmlBS1FnR0doRUwvLy8vL0Q0TWlDbjU4SWc1V3JYd2dCQ0FRZm53Z0JDQVRmaUlSSUFvZ0VINThJZzhnRVZTdFFpQ0dJQTlDSUlpRWZDQU9JQTRnRDBJZ2hud2lEbGF0ZkNBT0lBNGdGRUwvLy8vL0Q0TWlGQ0FLZmlJUklBSWdDMzU4SWc4Z0VWU3RJQThnRHlBVElBeEMvdi8vL3crREloRitmQ0lQVnExOGZDSU9WcTE4SUE0Z0JDQVVmaUlYSUJBZ0VYNThJZ1FnQWlBS2Zud2lDaUFMSUJOK2ZDSVFRaUNJSUFvZ0VGYXRJQVFnRjFTdElBUWdDbGF0Zkh4Q0lJYUVmQ0lFSUE1VXJYd2dCQ0FQSUFJZ0VYNGlBaUFMSUJSK2ZDSUxRaUNJSUFJZ0MxYXRRaUNHaEh3aUFpQVBWSzBnQWlBUVFpQ0dmQ0FDVksxOGZDSUNJQVJVclh3aUJFTC8vLy8vLy8vL0FGZ0VRQ0FWUWdHR0lCYUVJUlVnQlVIUUFHb2dBaUFFSUFNZ0VoQXJJQUZDTVlZZ0JTa0RXSDBnQlNrRFVDSUJRZ0JTclgwaENrSUFJQUY5SVFzZ0JrSCsvd0JxREFFTElBVkI0QUJxSUFSQ1A0WWdBa0lCaUlRaUFpQUVRZ0dJSWdRZ0F5QVNFQ3NnQVVJd2hpQUZLUU5vZlNBRktRTmdJZ3hDQUZLdGZTRUtRZ0FnREgwaEN5QUJJUXdnQmtILy93QnFDeUlHUWYvL0FVNEVRQ0FOUW9DQWdJQ0FnTUQvL3dDRUlRMUNBQ0VCREFFTEFuNGdCa0VBU2dSQUlBcENBWVlnQzBJL2lJUWhDaUFFUXYvLy8vLy8veitESUFhdFFqQ0doQ0VNSUF0Q0FZWU1BUXNnQmtHUGYwd0VRRUlBSVFFTUFnc2dCVUZBYXlBQ0lBUkJBU0FHYXhCOElBVkJNR29nRENBVklBWkI4QUJxRUM4Z0JVRWdhaUFESUJJZ0JTa0RRQ0lDSUFVcEEwZ2lEQkFySUFVcEF6Z2dCU2tES0VJQmhpQUZLUU1nSWdGQ1A0aUVmU0FGS1FNd0lnUWdBVUlCaGlJQlZLMTlJUW9nQkNBQmZRc2hCQ0FGUVJCcUlBTWdFa0lEUWdBUUt5QUZJQU1nRWtJRlFnQVFLeUFNSUFJZ0FpQURJQUpDQVlNaUFTQUVmQ0lEVkNBS0lBRWdBMWF0ZkNJQklCSldJQUVnRWxFYnJYd2lBbGF0ZkNJRUlBSWdBaUFFUW9DQWdJQ0FnTUQvL3dCVUlBTWdCU2tERUZZZ0FTQUZLUU1ZSWdSV0lBRWdCRkViY2ExOElnSldyWHdpQkNBQ0lBUkNnSUNBZ0lDQXdQLy9BRlFnQXlBRktRTUFWaUFCSUFVcEF3Z2lBMVlnQVNBRFVSdHhyWHdpQVNBQ1ZLMThJQTJFSVEwTElBQWdBVGNEQUNBQUlBMDNBd2dnQlVIUUFtb2tBQXUvQWdFQmZ5TUFRZEFBYXlJRUpBQUNRQ0FEUVlDQUFVNEVRQ0FFUVNCcUlBRWdBa0lBUW9DQWdJQ0FnSUQvL3dBUUdDQUVLUU1vSVFJZ0JDa0RJQ0VCSUFOQi8vOEJTQVJBSUFOQi8vOEFheUVEREFJTElBUkJFR29nQVNBQ1FnQkNnSUNBZ0lDQWdQLy9BQkFZSUFOQi9mOENJQU5CL2Y4Q1NCdEIvdjhCYXlFRElBUXBBeGdoQWlBRUtRTVFJUUVNQVFzZ0EwR0JnSDlLRFFBZ0JFRkFheUFCSUFKQ0FFS0FnSUNBZ0lDQU9SQVlJQVFwQTBnaEFpQUVLUU5BSVFFZ0EwSDBnSDVLQkVBZ0EwR04vd0JxSVFNTUFRc2dCRUV3YWlBQklBSkNBRUtBZ0lDQWdJQ0FPUkFZSUFOQjZJRjlJQU5CNklGOVNodEJtdjRCYWlFRElBUXBBemdoQWlBRUtRTXdJUUVMSUFRZ0FTQUNRZ0FnQTBILy93QnFyVUl3aGhBWUlBQWdCQ2tEQ0RjRENDQUFJQVFwQXdBM0F3QWdCRUhRQUdva0FBdXBEd0VNZnlNQVFVQnFJZ0lrQUNBQ1FRQTJBaFFnQWtFQU5nSVFJQUpCQURZQ0RDQUNRUUEyQWdnZ0FpQUNRUlJxTmdJWUlBSWdBa0VRYWpZQ0hDQUNLQUlZR2lBQ0lBSkJER28yQWlBZ0FpZ0NIQm9nQWlBQ1FRaHFOZ0lrSUFJb0FpQWFJQUlvQWlRYUl3QkJFR3NpQlNRQUlBSWdBQzBBQWlBQUxRQUJJQUF0QUFCemMwRVlkRUVZZFNJRFFUQnJJZ2MyQWdnZ0FrRXZJQU5ySUFGeFFRRjBJQUVnQjNOcklnTkJmbk1nQTBFQmRFRjhjV3BCQVdvaUF6WUNEQ0FDSUFNUUdUWUNGQ0FDSUFJb0FnZ2lCQkFaTmdJUUlBRkJmM01oQmdOQVFadVI0UDBISVFNRFFBSkFBa0FDUUNBRFFaeVZ1NWNFVEFSQUlBTkJscEhIaDN0R0RRRWdBMEhObjZuSWUwWU5BeUFEUWREYzZ1QitSdzBFSUFJb0FoUWdCU2dDREdvZ0FDQUZLQUlNSWdOQkFYUkJBbkVnQTBFQmMyb2lCMm90QUFBNkFBQkJuWlc3bHdRaEF3d0VDeUFEUVoyVnU1Y0VSZzBCSUFOQjllL2c0QVpHQkVCQkFDRUhRWjJWdTVjRUlRTU1CQXNnQTBHYmtlRDlCMGNOQXlBRklBUTJBZ2hCbHBISGgzdEI5ZS9nNEFZZ0JTZ0NDRUVBU2hzaEF3d0RDeUFCSUFJb0FnZ2lBMnNpQkVGOWN5QUVRUUYwSWdoQmVuRnFJQUJxTFFBQklRa2dBaWdDRUNBRElBVW9BZ2dpQ2tGL2MzRkJBWFFnQXlBS2MydHFJQUFnQlNnQ0NDSURRWDl6SUFGeElBTWdCbkZyYWkwQUFDQUlRWDF5SUFSQkFYTnFJQUJxTFFBQklBbHpjem9BQUNBRktBSUlRUUZySVFRTUF3c2dCU0FITmdJTVFkRGM2dUIrUWMyZnFjaDdJQUlvQWd3Z0JTZ0NERW9iSVFNTUFRc0xDeUFGUVJCcUpBQWdBaWdDRkNFSUlBSW9BZ3doQ2tFQUlRZEJBQ0VBUVFBaENVRUFJUUVqQUVFUWF5SUVKQUJCMVFBaEEwSDZBU0VGUWNtSnE0a0RJUVlEUUFKQUFrQUNRQUpBSUFaQnc5cTZtSDlNQkVBZ0JrR2trcmZLZWtZTkFTQUdRWnZjN0o5N1JnMENJQVpCNllpaHpudEhEUVVnQkVFUWFpUUFEQVFMSUFaQnhOcTZtSDlHRFFJZ0JrRzByS2F4QlVjRVFDQUdRY21KcTRrRFJ3MEZJQVFnQnpZQ0NDQUVJQVU2QUE0Z0JDQURPZ0FQUWJTc3ByRUZRZW1Jb2M1N0lBUW9BZ2dnQ2tnYklRWU1CUXRCcEpLM3lucEJtOXpzbjNzZ0JDZ0NDRUVDYjBFQlJoc2hCZ3dFQ3lBSUlBUW9BZ2hxTFFBQUlnQWdCQzBBRDNNaENVSEUycnFZZnlFR0lBUXRBQTRoQVF3REN5QUlJQVFvQWdocUxRQUFJZ0VnQkMwQURuTWhDVUhFMnJxWWZ5RUdJQVF0QUE4aEFBd0NDeUFKUVJoMFFSaDFJUXdnQkNnQ0NDRUdRUUFoQnlNQVFSQnJJUU1EUUVISHFQaVdmQ0VGQWtBRFFDQUZRY0d4KzRON1JnMEJJQVZCb3MvNjRRRkhCRUFnQlVISHFQaVdmRWNOQVNBRElBWTJBZ3dnQXlBSE5nSUlRYUxQK3VFQlFjR3grNE43SUFNb0Fnd2JJUVVNQVFzTElBTW9BZ3dnQXlnQ0RFRUJhM0VoQmlBREtBSUlRUUZxSVFjTUFRc0xJQU1vQWdnaUF5QU1RZjhCY1NJRmNrRUJkQ0FESUFWemF5SURRUlZ5UVFGMElBTkJGWE5yUVJoMFFSaDFJUU1nQ0NBRUtBSUlhaUFET2dBQUlBUW9BZ2hCQVdvaEIwSEppYXVKQXlFR0lBRWhCU0FBSVFNTUFRc0xRUUFoQXlNQVFSQnJJZ0VnQWlnQ0ZDd0FBRFlDQ0NBQklBRW9BZ2hCTDBvNkFBNGdBU0FCS0FJSVFUcElPZ0FQUWNESjlaUi9JUUFEUUFKQUFrQUNRQ0FBUWIvSjlaUi9UQVJBSUFCQnM2dnUwSGxHRFFJZ0FFR2d5cTczZmtZTkFTQUFRYjdrOFlKL1J3MEVJQUVvQWdnaUFFRXdjeUFBUVFGMFFaOEJjbXBCQVdvaEEwR0FrY2lQQkNFQURBUUxJQUJCZ0pISWp3UkdEUUlnQUVHRXVaWHBBVVlFUUVIL0FTRURRWUNSeUk4RUlRQU1CQXNnQUVIQXlmV1VmMGNOQTBHKzVQR0NmMEdneXE3M2ZpQUJMUUFQUVFGeEcwR2d5cTczZmlBQkxRQU9RUUZ4R3lFQURBTUxRYk9yN3RCNVFZUzVsZWtCSUFFb0FnaEIrd0JJRzBHRXVaWHBBU0FCS0FJSVFlQUFTaHNoQUF3Q0N5QUJLQUlJSWdCQm5nRnpJQUJCQVhSQlBIRnFRUXRxSVFOQmdKSElqd1FoQUF3QkN3c2dBaUFEUVJoMFFSaDFJZ0EyQWdnZ0FpQUNLQUlNSWdFZ0FFRi9jM0VnQUNBQlFYOXpjV3NpQVVGK2NpQUJRWDV4YWtFQmFqWUNLQ0FDSUFFUUdUWUNMQ0FDSUFCQkFYUkJBbkVnQUVFQmMyb1FHVFlDTUNBQ0tBSW9JQUlvQWl4cVFRQTZBQUFnQWlnQ0NDQUNLQUl3YWtFQU9nQUFBMEJCd3VUNTkzc2hBQU5BSUFJb0FnZ2hBUUpBQWtBRFFDQUFRY0hrK2ZkN1RBUkFJQUJCNVlhcW5YaEdEUU1nQUVHYnJkdkFlVVlOQWlBQVFjR1h1SjU2UncwQklBSWdBVFlDTkNBQ0lBczJBanhCbTYzYndIbEI1WWFxblhnZ0FpZ0NOQ0FDS0FJOFNoc2hBQXdCQ3lBQVFkYlU5TjhEUmdSQVFRQWhDMEhCbDdpZWVpRUFEQVFMSUFCQnhOYmJ1UUpIQkVBZ0FFSEM1UG4zZTBjTkFTQUNJQTAyQWpoQnhOYmJ1UUpCMXRUMDN3TWdBaWdDS0NBQ0tBSTRTaHNoQUF3QkN3c2dBaWdDTENBQ0tBSTRhaUFDS0FJNElnQkJBWFJCQW5FZ0FFRUJjMm9pRFNBQ0tBSVVhaTBBQURvQUFBd0RDeUFDS0FJd0lBSW9BanhxSUFJb0FoUWdBaWdDRENJQUlBSW9BalFpQVVGL2MzRWdBU0FBUVg5emNXc2lBQ0FDS0FJOElnRnlRUUYwSUFBZ0FYTnJhaTBBQURvQUFDQUNLQUk4SWdCQmZuTWdBRUVCZEVFQ2NtcEJBV29oQzBIQmw3aWVlaUVBREFFTEN3c2dBaWdDRkJBUUlBSW9BaEFRRUNBQ0tBSWtHaUFDS0FJZ0dpQUNLQUljR2lBQ0tBSVlHaUFDS0FJc0lRQWdBa0ZBYXlRQUlBQUxOUUFnQUNBQk53TUFJQUFnQWtMLy8vLy8vLzgvZ3lBRVFqQ0lwMEdBZ0FKeElBSkNNSWluUWYvL0FYRnlyVUl3aG9RM0F3Z0xMQUFnQUNnQ0FCb2dBQ2dDQUNBQUVJVUJhaG9nQUNnQ0FDQUFFSWtCYWhvZ0FDZ0NBQ0FBRUlVQmFob0xCd0FnQVNBQWF3c0pBQ0FBSUFFUTZnSUxLd0VCZnlBQUtBSUFJZ0VFUUNBQkVQY0NRWDhRWDBVRVFDQUFLQUlBUlE4TElBQkJBRFlDQUF0QkFRc3JBUUYvSUFBb0FnQWlBUVJBSUFFUS9BSkJmeEJmUlFSQUlBQW9BZ0JGRHdzZ0FFRUFOZ0lBQzBFQkN3MEFRUUFnQUNBQVFYOFFYeHNMNVFRQkIzOGdBQ2dDQkNBQUVFTW9BZ0JIQkVBakFFRVFheUlDSkFBZ0FpQUFOZ0lBSUFJZ0FDZ0NCQ0lETmdJRUlBSWdBMEVCYWpZQ0NDQUFFRU1nQWlnQ0JDQUJFSk1DSUFJZ0FpZ0NCRUVCYWpZQ0JDQUNFSTBDSUFKQkVHb2tBQThMSXdCQklHc2lCeVFBSUFBUVF5SUlBbjhnQjBFSWFpRUNBbjhnQUJDSkFVRUJhaUVHSXdCQkVHc2lCU1FBSUFVZ0JqWUNEQ01BUVJCcklnUWtBQ0FBRUVNYUlBUkJmellDRENBRVFmLy8vLzhITmdJSUlBUkJER29nQkVFSWFoQ2lBU2dDQUNFRElBUkJFR29rQUNBRElBWlBCRUFnQUJDRkFTSUVJQU5CQVhaSkJFQWdCU0FFUVFGME5nSUlJQVZCQ0dvZ0JVRU1haEIyS0FJQUlRTUxJQVZCRUdva0FDQUREQUVMUWFjYkVLZ0NBQXNoQlNBQUVJa0JJUVpCQUNFREl3QkJFR3NpQkNRQUlBUkJBRFlDRENBQ1FReHFJQVJCREdvZ0NCQ0xBaUFGQkVBZ0FpZ0NFQm9nQlJCZ0lRTUxJQUlnQXpZQ0FDQUNJQU1nQm1vaUJqWUNDQ0FDSUFZMkFnUWdBaENFQVNBRElBVnFOZ0lBSUFSQkVHb2tBQ0FDS0FJSUN5QUJFSk1DSUFJZ0FpZ0NDRUVCYWpZQ0NDQUFFT2tDSUFBUVF5QUFLQUlBSUFBb0FnUWdBa0VFYWlJQkVJWUNJQUFnQVJCMUlBQkJCR29nQWtFSWFoQjFJQUFRUXlBQ0VJUUJFSFVnQWlBQ0tBSUVOZ0lBSUFBUWlRRWFJQUFvQWdBYUlBQW9BZ0FnQUJDRkFXb2FJQUFvQWdBZ0FCQ0ZBV29hSUFBb0FnQWFJQUlvQWdRaUFDQUNLQUlJUndSQUEwQWdBaWdDRUJvZ0FpQUNLQUlJUVFGck5nSUlJQUlvQWdnZ0FFY05BQXNMSUFJb0FnQUVRQ0FDS0FJUUdpQUNLQUlBSVFBZ0FoQ0VBU2dDQUNBQ0tBSUFheG9nQUJBUUN5QUhRU0JxSkFBTGpRRUJCSDhqQUVFUWF5SUZKQUFnQVNBQ0VPc0NJZ1JCYjAwRVFBSkFJQVJCQ2swRVFDQUFJQVFRT2lBQUlRTU1BUXNnQUNBRUVKRUJRUUZxSWdZUVlDSURFRTBnQUNBR0VFd2dBQ0FFRURrTEEwQWdBU0FDUndSQUlBTWdBUkEwSUFOQkFXb2hBeUFCUVFGcUlRRU1BUXNMSUFWQkFEb0FEeUFESUFWQkQyb1FOQ0FGUVJCcUpBQVBDeEFYQUFzUEFDQUFJQUFvQWhnZ0FXbzJBaGdMRndBZ0FDQUNOZ0ljSUFBZ0FUWUNGQ0FBSUFFMkFoZ0xWZ0VDZndKQUlBQW9BZ0FpQWtVTkFBSi9JQUlvQWhnaUF5QUNLQUljUmdSQUlBSWdBU0FDS0FJQUtBSTBFUUlBREFFTElBSWdBMEVFYWpZQ0dDQURJQUUyQWdBZ0FRdEJmeEJmUlEwQUlBQkJBRFlDQUFzTEpnRUJmd0pBSUFBb0FnQWlBa1VOQUNBQ0lBRVErZ0pCZnhCZlJRMEFJQUJCQURZQ0FBc0xDUUFnQUJEa0FSQVFDekVCQVg4Z0FDZ0NEQ0lCSUFBb0FoQkdCRUFnQUNBQUtBSUFLQUlvRVFBQUR3c2dBQ0FCUVFScU5nSU1JQUVvQWdBTEp3RUJmeUFBS0FJTUlnRWdBQ2dDRUVZRVFDQUFJQUFvQWdBb0FpUVJBQUFQQ3lBQktBSUFDeEFBSUFBUTdBSWdBUkRzQW5OQkFYTUxpd1FCQm44akFFRWdheUlDSkFBZ0FrRUFOZ0ljSXdCQklHc2lCQ1FBSUFKQkdHb2lCa0VBT2dBQUlBQWdBQ2dDQUVFTWF5Z0NBR29RdVFFaEJTQUFJQUFvQWdCQkRHc29BZ0JxSVFNQ1FDQUZCRUFnQXlnQ1NBUkFJQUFnQUNnQ0FFRU1heWdDQUdvb0FrZ1FnZ01MQWtBZ0FDQUFLQUlBUVF4cktBSUFhaWdDQkVHQUlIRkZEUUFnQkVFWWFpSURJQUFnQUNnQ0FFRU1heWdDQUdvUUR5QURFREloQnlBREVBNGdCRUVRYWlBQUVNY0JJUU1nQkVFSWFoQ0JBeUVGQTBBQ1FDQURJQVVRTVVVTkFDQUhRWURBQUNBREVCOFFSRVVOQUNBREVDSWFEQUVMQ3lBRElBVVFKa1VOQUNBQUlBQW9BZ0JCREdzb0FnQnFRUVlRZ0FFTElBWWdBQ0FBS0FJQVFReHJLQUlBYWhDNUFUb0FBQXdCQ3lBRFFRUVFnQUVMSUFSQklHb2tBQ0FHTFFBQUJFQWdBa0VRYWlJRUlBQWdBQ2dDQUVFTWF5Z0NBR29RRHlBRVFiaUhBUkJsSVFNZ0FrRUlhaUFBRU1jQklRWWdBaENCQXlFRklBTWdCaWdDQUNBRktBSUFJQUFnQUNnQ0FFRU1heWdDQUdvZ0FrRWNhaUFDUVJScUlBTW9BZ0FvQWhBUkJRQWFJQVFRRGlBQkFuOGdBaWdDRkVHQWdJQ0FlRWdFUUNBQ0lBSW9BaHhCQkhJMkFoeEJnSUNBZ0hnTUFRc2dBaWdDRkVILy8vLy9CMG9FUUNBQ0lBSW9BaHhCQkhJMkFoeEIvLy8vL3djTUFRc2dBaWdDRkFzMkFnQWdBQ0FBS0FJQVFReHJLQUlBYWlBQ0tBSWNFSUFCQ3lBQ1FTQnFKQUFMT3dFQmZ5QUFLQUlZSWdJZ0FDZ0NIRVlFUUNBQUlBRVFYaUFBS0FJQUtBSTBFUUlBRHdzZ0FDQUNRUUZxTmdJWUlBSWdBVG9BQUNBQkVGNExNd0VCZnlBQUtBSU1JZ0VnQUNnQ0VFWUVRQ0FBSUFBb0FnQW9BaWdSQUFBUEN5QUFJQUZCQVdvMkFnd2dBU3dBQUJCZUN5a0JBWDhnQUNnQ0RDSUJJQUFvQWhCR0JFQWdBQ0FBS0FJQUtBSWtFUUFBRHdzZ0FTd0FBQkJlQ3hBQUlBQVE3UUlnQVJEdEFuTkJBWE1MalFFQkFYOENRQ0FBS0FJRUlnRWdBU2dDQUVFTWF5Z0NBR29vQWhoRkRRQWdBQ2dDQkNJQklBRW9BZ0JCREdzb0FnQnFFTGtCUlEwQUlBQW9BZ1FpQVNBQktBSUFRUXhyS0FJQWFpZ0NCRUdBd0FCeFJRMEFJQUFvQWdRaUFTQUJLQUlBUVF4cktBSUFhaWdDR0JEL0FrRi9SdzBBSUFBb0FnUWlBQ0FBS0FJQVFReHJLQUlBYWtFQkVJQUJDd3NQQUNBQUlBQW9BZ0FvQWhnUkFBQUxWUUFnQUNBQk5nSUVJQUJCQURvQUFDQUJJQUVvQWdCQkRHc29BZ0JxRUxrQkJFQWdBU0FCS0FJQVFReHJLQUlBYWlnQ1NBUkFJQUVnQVNnQ0FFRU1heWdDQUdvb0FrZ1FnZ01MSUFCQkFUb0FBQXNnQUFzTEFDQUFRUUEyQWdBZ0FBdHVBUUovSXdCQkVHc2lBU1FBSUFBZ0FDZ0NBRUVNYXlnQ0FHb29BaGdFUUFKQUlBRkJDR29nQUJDQUF5SUNMUUFBUlEwQUlBQWdBQ2dDQUVFTWF5Z0NBR29vQWhnUS93SkJmMGNOQUNBQUlBQW9BZ0JCREdzb0FnQnFRUUVRZ0FFTElBSVEvZ0lMSUFGQkVHb2tBQXNKQUNBQUVMb0JFQkFMeGdnQkJuOGdBQ0FCS0FBQUlnTkJHSFFnQTBFSWRFR0FnUHdIY1hJZ0EwRUlka0dBL2dOeElBTkJHSFp5Y2lJRk5nSUFJQUFnQVNnQUJDSURRUmgwSUFOQkNIUkJnSUQ4QjNGeUlBTkJDSFpCZ1A0RGNTQURRUmgyY25JaUJqWUNCQ0FBSUFFb0FBZ2lBMEVZZENBRFFRaDBRWUNBL0FkeGNpQURRUWgyUVlEK0EzRWdBMEVZZG5KeUlnYzJBZ2dnQUNBQktBQU1JZ05CR0hRZ0EwRUlkRUdBZ1B3SGNYSWdBMEVJZGtHQS9nTnhJQU5CR0haeWNpSUVOZ0lNQWtBZ0FrR0FBVVlFUUVFQUlRTURRQ0FBSUFSQkZuWkIvQWR4UVlBSWFpMEFBU0FFUVE1MlFmd0hjVUdBQ0dvb0FnQkJDSFJCZ0lDQWVIRWdCWE1nQkVFR2RrSDhCM0ZCZ0FocUxRQUNRUkIwY3lBRVFmOEJjVUVDZEVHQUNHb3RBQUZCQ0hSemN5QURRWUFhYWkwQUFFRVlkSE1pQlRZQ0VDQUFJQVVnQm5NaUJqWUNGQ0FBSUFZZ0IzTWlCellDR0NBQUlBUWdCM01pQkRZQ0hDQUFRUkJxSVFCQkNpRUJJQU5CQVdvaUEwRUtSdzBBQ3d3QkN5QUFJQUVvQUJBaUEwRVlkQ0FEUVFoMFFZQ0EvQWR4Y2lBRFFRaDJRWUQrQTNFZ0EwRVlkbkp5TmdJUUlBQWdBU2dBRkNJRFFSaDBJQU5CQ0hSQmdJRDhCM0Z5SUFOQkNIWkJnUDREY1NBRFFSaDJjbklpQXpZQ0ZDQUNRY0FCUmdSQVFRQWhBUU5BSUFBZ0EwRVdka0g4QjNGQmdBaHFMUUFCSUFOQkRuWkIvQWR4UVlBSWFpZ0NBRUVJZEVHQWdJQjRjU0FGY3lBRFFRWjJRZndIY1VHQUNHb3RBQUpCRUhSeklBTkIvd0Z4UVFKMFFZQUlhaTBBQVVFSWRITnpJQUZCZ0JwcUxRQUFRUmgwY3lJRk5nSVlJQUFnQlNBR2N5SUdOZ0ljSUFBZ0JpQUhjeUlITmdJZ0lBQWdCQ0FIY3lJRU5nSWtJQUZCQjBZRVFFRU1Ed1VnQUNBQUtBSVFJQVJ6SWdJMkFpZ2dBQ0FDSUFOeklnTTJBaXdnQVVFQmFpRUJJQUJCR0dvaEFBd0JDd0FMQUFzZ0FDQUJLQUFZSWdOQkdIUWdBMEVJZEVHQWdQd0hjWElnQTBFSWRrR0EvZ054SUFOQkdIWnljallDR0NBQUlBRW9BQndpQVVFWWRDQUJRUWgwUVlDQS9BZHhjaUFCUVFoMlFZRCtBM0VnQVVFWWRuSnlJZ00yQWh4QmZ5RUJJQUpCZ0FKSERRQkJBQ0VDUVE0aEFRTkFJQUFnQTBFV2RrSDhCM0ZCZ0FocUxRQUJJQU5CRG5aQi9BZHhRWUFJYWlnQ0FFRUlkRUdBZ0lCNGNTQUZjeUFEUVFaMlFmd0hjVUdBQ0dvdEFBSkJFSFJ6SUFOQi93RnhRUUowUVlBSWFpMEFBVUVJZEhOeklBSkJnQnBxTFFBQVFSaDBjeUlGTmdJZ0lBQWdCU0FHY3lJR05nSWtJQUFnQmlBSGN5SUhOZ0lvSUFBZ0JDQUhjeUlFTmdJc0lBSkJCa1lOQVNBQUlBUkIvd0Z4UVFKMFFZQUlhaTBBQVNBQUtBSVFJQVJCRm5aQi9BZHhRWUFJYWlnQ0FFRUlkRUdBZ0lCNGNYTWdCRUVPZGtIOEIzRkJnQWhxTFFBQ1FSQjBjeUFFUVFaMlFmd0hjVUdBQ0dvdEFBRkJDSFJ6Y3lJSU5nSXdJQUFnQ0NBQUtBSVVjeUlJTmdJMElBQWdBQ2dDR0NBSWN5SUlOZ0k0SUFBZ0F5QUljeUlETmdJOElBSkJBV29oQWlBQVFTQnFJUUFNQUFzQUN5QUJDNjBCQVFSL0l3QkJFR3NpQlNRQUEwQUNRQ0FDSUFSTURRQWdBQ2dDR0NJRElBQW9BaHdpQms4RVFDQUFJQUVzQUFBUVhpQUFLQUlBS0FJMEVRSUFRWDlHRFFFZ0JFRUJhaUVFSUFGQkFXb2hBUVVnQlNBR0lBTnJOZ0lNSUFVZ0FpQUVhellDQ0NBRlFReHFJQVZCQ0dvUXV3RWhBeUFBS0FJWUlBRWdBeWdDQUNJREVGVWdBQ0FESUFBb0FoaHFOZ0lZSUFNZ0JHb2hCQ0FCSUFOcUlRRUxEQUVMQ3lBRlFSQnFKQUFnQkFzdUFDQUFJQUFvQWdBb0FpUVJBQUJCZjBZRVFFRi9Ed3NnQUNBQUtBSU1JZ0JCQVdvMkFnd2dBQ3dBQUJCZUN3UUFRWDhMdndFQkJIOGpBRUVRYXlJRUpBQURRQUpBSUFJZ0JVd05BQUpBSUFBb0Fnd2lBeUFBS0FJUUlnWkpCRUFnQkVILy8vLy9CellDRENBRUlBWWdBMnMyQWdnZ0JDQUNJQVZyTmdJRUlBUkJER29nQkVFSWFpQUVRUVJxRUxzQkVMc0JJUU1nQVNBQUtBSU1JQU1vQWdBaUF4QlZJQUFnQUNnQ0RDQURhallDREF3QkN5QUFJQUFvQWdBb0FpZ1JBQUFpQTBGL1JnMEJJQUVnQXhDYkFUb0FBRUVCSVFNTElBRWdBMm9oQVNBRElBVnFJUVVNQVFzTElBUkJFR29rQUNBRkN3a0FJQUJDZnhDOEFRc0pBQ0FBUW44UXZBRUxCQUFnQUFzSkFDQUFFTDBCRUJBTENBQWdBQkIrRUJBTEJ3QWdBQ2dDREFzTUFDQUFFTUFCR2lBQUVCQUxDUUFnQUJEQUFSQVFDd1VBUWY0YkN4c0FJQUFnQVNnQ0NDQUZFRDRFUUNBQklBSWdBeUFFRU1NQkN3czRBQ0FBSUFFb0FnZ2dCUkErQkVBZ0FTQUNJQU1nQkJEREFROExJQUFvQWdnaUFDQUJJQUlnQXlBRUlBVWdBQ2dDQUNnQ0ZCRUpBQXVXQWdFR2Z5QUFJQUVvQWdnZ0JSQStCRUFnQVNBQ0lBTWdCQkREQVE4TElBRXRBRFVoQnlBQUtBSU1JUVlnQVVFQU9nQTFJQUV0QURRaENDQUJRUUE2QURRZ0FFRVFhaUlKSUFFZ0FpQURJQVFnQlJEQkFTQUhJQUV0QURVaUNuSWhCeUFJSUFFdEFEUWlDM0loQ0FKQUlBWkJBa2dOQUNBSklBWkJBM1JxSVFrZ0FFRVlhaUVHQTBBZ0FTMEFOZzBCQWtBZ0N3UkFJQUVvQWhoQkFVWU5BeUFBTFFBSVFRSnhEUUVNQXdzZ0NrVU5BQ0FBTFFBSVFRRnhSUTBDQ3lBQlFRQTdBVFFnQmlBQklBSWdBeUFFSUFVUXdRRWdBUzBBTlNJS0lBZHlJUWNnQVMwQU5DSUxJQWh5SVFnZ0JrRUlhaUlHSUFsSkRRQUxDeUFCSUFkQi93RnhRUUJIT2dBMUlBRWdDRUgvQVhGQkFFYzZBRFFMa2dFQUlBQWdBU2dDQ0NBRUVENEVRQ0FCSUFJZ0F4RENBUThMQWtBZ0FDQUJLQUlBSUFRUVBrVU5BQUpBSUFJZ0FTZ0NFRWNFUUNBQktBSVVJQUpIRFFFTElBTkJBVWNOQVNBQlFRRTJBaUFQQ3lBQklBSTJBaFFnQVNBRE5nSWdJQUVnQVNnQ0tFRUJhallDS0FKQUlBRW9BaVJCQVVjTkFDQUJLQUlZUVFKSERRQWdBVUVCT2dBMkN5QUJRUVEyQWl3TEMvTUJBQ0FBSUFFb0FnZ2dCQkErQkVBZ0FTQUNJQU1Rd2dFUEN3SkFJQUFnQVNnQ0FDQUVFRDRFUUFKQUlBSWdBU2dDRUVjRVFDQUJLQUlVSUFKSERRRUxJQU5CQVVjTkFpQUJRUUUyQWlBUEN5QUJJQU0yQWlBQ1FDQUJLQUlzUVFSR0RRQWdBVUVBT3dFMElBQW9BZ2dpQUNBQklBSWdBa0VCSUFRZ0FDZ0NBQ2dDRkJFSkFDQUJMUUExQkVBZ0FVRUROZ0lzSUFFdEFEUkZEUUVNQXdzZ0FVRUVOZ0lzQ3lBQklBSTJBaFFnQVNBQktBSW9RUUZxTmdJb0lBRW9BaVJCQVVjTkFTQUJLQUlZUVFKSERRRWdBVUVCT2dBMkR3c2dBQ2dDQ0NJQUlBRWdBaUFESUFRZ0FDZ0NBQ2dDR0JFS0FBc0xuUVFCQTM4Z0FDQUJLQUlJSUFRUVBnUkFJQUVnQWlBREVNSUJEd3NDUUNBQUlBRW9BZ0FnQkJBK0JFQUNRQ0FDSUFFb0FoQkhCRUFnQVNnQ0ZDQUNSdzBCQ3lBRFFRRkhEUUlnQVVFQk5nSWdEd3NnQVNBRE5nSWdJQUVvQWl4QkJFY0VRQ0FBUVJCcUlnVWdBQ2dDREVFRGRHb2hCMEVBSVFNZ0FRSi9Ba0FEUUFKQUlBVWdCMDhOQUNBQlFRQTdBVFFnQlNBQklBSWdBa0VCSUFRUXdRRWdBUzBBTmcwQUFrQWdBUzBBTlVVTkFDQUJMUUEwQkVCQkFTRURJQUVvQWhoQkFVWU5CRUVCSVFZZ0FDMEFDRUVDY1EwQkRBUUxRUUVoQmlBQUxRQUlRUUZ4UlEwREN5QUZRUWhxSVFVTUFRc0xRUVFnQmtVTkFSb0xRUU1MTmdJc0lBTkJBWEVOQWdzZ0FTQUNOZ0lVSUFFZ0FTZ0NLRUVCYWpZQ0tDQUJLQUlrUVFGSERRRWdBU2dDR0VFQ1J3MEJJQUZCQVRvQU5nOExJQUFvQWd3aEJTQUFRUkJxSWdZZ0FTQUNJQU1nQkJDZ0FTQUZRUUpJRFFBZ0JpQUZRUU4wYWlFR0lBQkJHR29oQlFKQUlBQW9BZ2dpQUVFQ2NVVUVRQ0FCS0FJa1FRRkhEUUVMQTBBZ0FTMEFOZzBDSUFVZ0FTQUNJQU1nQkJDZ0FTQUZRUWhxSWdVZ0Jra05BQXNNQVFzZ0FFRUJjVVVFUUFOQUlBRXRBRFlOQWlBQktBSWtRUUZHRFFJZ0JTQUJJQUlnQXlBRUVLQUJJQVZCQ0dvaUJTQUdTUTBBREFJTEFBc0RRQ0FCTFFBMkRRRWdBU2dDSkVFQlJnUkFJQUVvQWhoQkFVWU5BZ3NnQlNBQklBSWdBeUFFRUtBQklBVkJDR29pQlNBR1NRMEFDd3NMYndFQ2Z5QUFJQUVvQWdoQkFCQStCRUFnQVNBQ0lBTVF4UUVQQ3lBQUtBSU1JUVFnQUVFUWFpSUZJQUVnQWlBREVQQUJBa0FnQkVFQ1NBMEFJQVVnQkVFRGRHb2hCQ0FBUVJocUlRQURRQ0FBSUFFZ0FpQURFUEFCSUFFdEFEWU5BU0FBUVFocUlnQWdCRWtOQUFzTEN6SUFJQUFnQVNnQ0NFRUFFRDRFUUNBQklBSWdBeERGQVE4TElBQW9BZ2dpQUNBQklBSWdBeUFBS0FJQUtBSWNFUWdBQ3hrQUlBQWdBU2dDQ0VFQUVENEVRQ0FCSUFJZ0F4REZBUXNMdWdNQkJYOGpBRUZBYWlJRUpBQUNmMEVCSUFBZ0FVRUFFRDROQUJwQkFDQUJSUTBBR2lNQVFVQnFJZ01rQUNBQktBSUFJZ1ZCQkdzb0FnQWhCaUFGUVFocktBSUFJUWNnQTBFQU5nSVVJQU5CblAwQU5nSVFJQU1nQVRZQ0RDQURRY3o5QURZQ0NFRUFJUVVnQTBFWWFrRUFRU2NRUmhvZ0FTQUhhaUVCQWtBZ0JrSE0vUUJCQUJBK0JFQWdBMEVCTmdJNElBWWdBMEVJYWlBQklBRkJBVUVBSUFZb0FnQW9BaFFSQ1FBZ0FVRUFJQU1vQWlCQkFVWWJJUVVNQVFzZ0JpQURRUWhxSUFGQkFVRUFJQVlvQWdBb0FoZ1JDZ0FDUUFKQUlBTW9BaXdPQWdBQkFnc2dBeWdDSEVFQUlBTW9BaWhCQVVZYlFRQWdBeWdDSkVFQlJodEJBQ0FES0FJd1FRRkdHeUVGREFFTElBTW9BaUJCQVVjRVFDQURLQUl3RFFFZ0F5Z0NKRUVCUncwQklBTW9BaWhCQVVjTkFRc2dBeWdDR0NFRkN5QURRVUJySkFCQkFDQUZJZ0ZGRFFBYUlBUkJDR29pQTBFRWNrRUFRVFFRUmhvZ0JFRUJOZ0k0SUFSQmZ6WUNGQ0FFSUFBMkFoQWdCQ0FCTmdJSUlBRWdBeUFDS0FJQVFRRWdBU2dDQUNnQ0hCRUlBQ0FFS0FJZ0lnQkJBVVlFUUNBQ0lBUW9BaGcyQWdBTElBQkJBVVlMSVFBZ0JFRkFheVFBSUFBTEJRQVFGd0FMQXdBQUN3Y0FJQUFvQWdRTENRQkJ6SW9CRUFvYUN5OEFBa0JCMklvQkxRQUFRUUZ4RFFCQjJJb0JFQ1JGRFFCQnpJb0JRZERWQUJDREFVSFlpZ0VRSXd0QnpJb0JDd2tBUWJ5S0FSQUtHZ3N1QUFKQVFjaUtBUzBBQUVFQmNRMEFRY2lLQVJBa1JRMEFRYnlLQVVIcUd4QlVHa0hJaWdFUUl3dEJ2SW9CQ3drQVFheUtBUkFLR2dzdkFBSkFRYmlLQVMwQUFFRUJjUTBBUWJpS0FSQWtSUTBBUWF5S0FVSDgxQUFRZ3dGQnVJb0JFQ01MUWF5S0FRc0pBRUdjaWdFUUNob0xMZ0FDUUVHb2lnRXRBQUJCQVhFTkFFR29pZ0VRSkVVTkFFR2NpZ0ZCM0IwUVZCcEJxSW9CRUNNTFFaeUtBUXNKQUVHTWlnRVFDaG9MTHdBQ1FFR1lpZ0V0QUFCQkFYRU5BRUdZaWdFUUpFVU5BRUdNaWdGQjJOUUFFSU1CUVppS0FSQWpDMEdNaWdFTENRQkIvSWtCRUFvYUN5NEFBa0JCaUlvQkxRQUFRUUZ4RFFCQmlJb0JFQ1JGRFFCQi9Ja0JRZmNkRUZRYVFZaUtBUkFqQzBIOGlRRUxDUUJCN0lrQkVBb2FDeThBQWtCQitJa0JMUUFBUVFGeERRQkIrSWtCRUNSRkRRQkI3SWtCUWJUVUFCQ0RBVUg0aVFFUUl3dEI3SWtCQ3drQVFkeUpBUkFLR2dzdUFBSkFRZWlKQVMwQUFFRUJjUTBBUWVpSkFSQWtSUTBBUWR5SkFVSG1HaEJVR2tIb2lRRVFJd3RCM0lrQkN4c0FRZGlTQVNFQUEwQWdBRUVNYXhBS0lnQkJ3SklCUncwQUN3dDlBQUpBUWRpSkFTMEFBRUVCY1EwQVFkaUpBUkFrUlEwQUFrQkIySklCTFFBQVFRRnhEUUJCMkpJQkVDUkZEUUJCd0pJQklRQURRQ0FBRUVkQkRHb2lBRUhZa2dGSERRQUxRZGlTQVJBakMwSEFrZ0ZCNFBzQUVCUkJ6SklCUWV6N0FCQVVRZFNKQVVIQWtnRTJBZ0JCMklrQkVDTUxRZFNKQVNnQ0FBc2JBRUc0a2dFaEFBTkFJQUJCREdzUUNpSUFRYUNTQVVjTkFBc0xld0FDUUVIUWlRRXRBQUJCQVhFTkFFSFFpUUVRSkVVTkFBSkFRYmlTQVMwQUFFRUJjUTBBUWJpU0FSQWtSUTBBUWFDU0FTRUFBMEFnQUJBUlFReHFJZ0JCdUpJQlJ3MEFDMEc0a2dFUUl3dEJvSklCUVljZUVCVkJySklCUVlRZUVCVkJ6SWtCUWFDU0FUWUNBRUhRaVFFUUl3dEJ6SWtCS0FJQUN4c0FRWkNTQVNFQUEwQWdBRUVNYXhBS0lnQkI4SThCUncwQUN3dlpBZ0FDUUVISWlRRXRBQUJCQVhFTkFFSElpUUVRSkVVTkFBSkFRWkNTQVMwQUFFRUJjUTBBUVpDU0FSQWtSUTBBUWZDUEFTRUFBMEFnQUJCSFFReHFJZ0JCa0pJQlJ3MEFDMEdRa2dFUUl3dEI4SThCUWRqM0FCQVVRZnlQQVVINDl3QVFGRUdJa0FGQm5QZ0FFQlJCbEpBQlFiVDRBQkFVUWFDUUFVSE0rQUFRRkVHc2tBRkIzUGdBRUJSQnVKQUJRZkQ0QUJBVVFjU1FBVUdFK1FBUUZFSFFrQUZCb1BrQUVCUkIzSkFCUWNqNUFCQVVRZWlRQVVIbytRQVFGRUgwa0FGQmpQb0FFQlJCZ0pFQlFiRDZBQkFVUVl5UkFVSEErZ0FRRkVHWWtRRkIwUG9BRUJSQnBKRUJRZUQ2QUJBVVFiQ1JBVUhNK0FBUUZFRzhrUUZCOFBvQUVCUkJ5SkVCUVlEN0FCQVVRZFNSQVVHUSt3QVFGRUhna1FGQm9Qc0FFQlJCN0pFQlFiRDdBQkFVUWZpUkFVSEErd0FRRkVHRWtnRkIwUHNBRUJSQnhJa0JRZkNQQVRZQ0FFSElpUUVRSXd0QnhJa0JLQUlBQ3hzQVFlQ1BBU0VBQTBBZ0FFRU1heEFLSWdCQndJMEJSdzBBQ3d2QkFnQUNRRUhBaVFFdEFBQkJBWEVOQUVIQWlRRVFKRVVOQUFKQVFlQ1BBUzBBQUVFQmNRMEFRZUNQQVJBa1JRMEFRY0NOQVNFQUEwQWdBQkFSUVF4cUlnQkI0SThCUncwQUMwSGdqd0VRSXd0QndJMEJRWndhRUJWQnpJMEJRWk1hRUJWQjJJMEJRZUFjRUJWQjVJMEJRZFljRUJWQjhJMEJRZUlhRUJWQi9JMEJRY3NkRUJWQmlJNEJRYVFhRUJWQmxJNEJRWlFiRUJWQm9JNEJRYjhiRUJWQnJJNEJRYTRiRUJWQnVJNEJRYlliRUJWQnhJNEJRY2tiRUJWQjBJNEJRY3NjRUJWQjNJNEJRZGdkRUJWQjZJNEJRZUliRUJWQjlJNEJRYU1iRUJWQmdJOEJRZUlhRUJWQmpJOEJRZm9iRUJWQm1JOEJRYzhjRUJWQnBJOEJRZVljRUJWQnNJOEJRZVliRUJWQnZJOEJRWnNiRUJWQnlJOEJRWXdiRUJWQjFJOEJRZFFkRUJWQnZJa0JRY0NOQVRZQ0FFSEFpUUVRSXd0QnZJa0JLQUlBQ3hzQVFiaU5BU0VBQTBBZ0FFRU1heEFLSWdCQmtJd0JSdzBBQ3d2MUFRQUNRRUc0aVFFdEFBQkJBWEVOQUVHNGlRRVFKRVVOQUFKQVFiaU5BUzBBQUVFQmNRMEFRYmlOQVJBa1JRMEFRWkNNQVNFQUEwQWdBQkJIUVF4cUlnQkJ1STBCUncwQUMwRzRqUUVRSXd0QmtJd0JRWVQxQUJBVVFaeU1BVUdnOVFBUUZFR29qQUZCdlBVQUVCUkJ0SXdCUWR6MUFCQVVRY0NNQVVHRTlnQVFGRUhNakFGQnFQWUFFQlJCMkl3QlFjVDJBQkFVUWVTTUFVSG85Z0FRRkVId2pBRkIrUFlBRUJSQi9Jd0JRWWozQUJBVVFZaU5BVUdZOXdBUUZFR1VqUUZCcVBjQUVCUkJvSTBCUWJqM0FCQVVRYXlOQVVISTl3QVFGRUcwaVFGQmtJd0JOZ0lBUWJpSkFSQWpDMEcwaVFFb0FnQUxHd0JCaUl3QklRQURRQ0FBUVF4ckVBb2lBRUhnaWdGSERRQUxDK2NCQUFKQVFiQ0pBUzBBQUVFQmNRMEFRYkNKQVJBa1JRMEFBa0JCaUl3QkxRQUFRUUZ4RFFCQmlJd0JFQ1JGRFFCQjRJb0JJUUFEUUNBQUVCRkJER29pQUVHSWpBRkhEUUFMUVlpTUFSQWpDMEhnaWdGQnpSb1FGVUhzaWdGQjFCb1FGVUg0aWdGQnNob1FGVUdFaXdGQnVob1FGVUdRaXdGQnFSb1FGVUdjaXdGQjJ4b1FGVUdvaXdGQnhCb1FGVUcwaXdGQjloc1FGVUhBaXdGQnd4d1FGVUhNaXdGQndSMFFGVUhZaXdGQjBCMFFGVUhraXdGQmtCc1FGVUh3aXdGQjNCd1FGVUg4aXdGQm54c1FGVUdzaVFGQjRJb0JOZ0lBUWJDSkFSQWpDMEdzaVFFb0FnQUxDd0FnQUVHYzFBQVFnd0VMQ2dBZ0FFSEZIUkJVR2dzTEFDQUFRWWpVQUJDREFRc0tBQ0FBUWJ3ZEVGUWFDd3dBSUFBZ0FVRVFhaERRQVFzTUFDQUFJQUZCREdvUTBBRUxCd0FnQUN3QUNRc0hBQ0FBTEFBSUN3a0FJQUFRaEFJUUVBc0pBQ0FBRUlVQ0VCQUw1Z01CQlg4Z0FpRUFBMEFDUUNBRUlBaE5JQUFnQTA5eURRQWdBQ3dBQUNJR1FmOEJjU0VCQWtBZ0JrRUFUZ1JBUVFFaEJpQUJRZi8vd3dCTkRRRU1BZ3NnQVVIQ0FVa05BU0FCUWQ4QlRRUkFJQU1nQUd0QkFrZ05BaUFBTFFBQklnVkJ3QUZ4UVlBQlJ3MENRUUloQmlBRlFUOXhJQUZCQm5SQndBOXhja0gvLzhNQVRRMEJEQUlMQWtBQ1FDQUJRZThCVFFSQUlBTWdBR3RCQTBnTkJDQUFMUUFDSVFjZ0FDMEFBU0VGSUFGQjdRRkdEUUVnQVVIZ0FVWUVRQ0FGUWVBQmNVR2dBVVlOQXd3RkN5QUZRY0FCY1VHQUFVY05CQXdDQ3lBRElBQnJRUVJJSUFGQjlBRkxjZzBESUFBdEFBTWhCeUFBTFFBQ0lRa2dBQzBBQVNFRkFrQUNRQUpBQWtBZ0FVSHdBV3NPQlFBQ0FnSUJBZ3NnQlVId0FHcEIvd0Z4UVRCSkRRSU1CZ3NnQlVId0FYRkJnQUZHRFFFTUJRc2dCVUhBQVhGQmdBRkhEUVFMSUFsQndBRnhRWUFCUnlBSFFjQUJjVUdBQVVkeURRTkJCQ0VHSUFkQlAzRWdDVUVHZEVIQUgzRWdBVUVTZEVHQWdQQUFjU0FGUVQ5eFFReDBjbkp5UWYvL3d3QkxEUU1NQWdzZ0JVSGdBWEZCZ0FGSERRSUxJQWRCd0FGeFFZQUJSdzBCUVFNaEJpQUhRVDl4SUFGQkRIUkJnT0FEY1NBRlFUOXhRUVowY25KQi8vL0RBRXNOQVFzZ0NFRUJhaUVJSUFBZ0Jtb2hBQXdCQ3dzZ0FDQUNhd3ZpQkFFRmZ5TUFRUkJySWdBa0FDQUFJQUkyQWd3Z0FDQUZOZ0lJQW44Z0FDQUNOZ0lNSUFBZ0JUWUNDQUpBQWtBRFFBSkFJQUFvQWd3aUFpQURUdzBBSUFBb0FnZ2lEQ0FHVHcwQUlBSXNBQUFpQlVIL0FYRWhBUUpBSUFWQkFFNEVRQ0FCUWYvL3d3Qk5CRUJCQVNFRkRBSUxRUUlNQmd0QkFpRUtJQUZCd2dGSkRRTWdBVUhmQVUwRVFDQURJQUpyUVFKSURRVWdBaTBBQVNJSVFjQUJjVUdBQVVjTkJFRUNJUVVnQ0VFL2NTQUJRUVowUWNBUGNYSWlBVUgvLzhNQVRRMEJEQVFMSUFGQjd3Rk5CRUFnQXlBQ2EwRURTQTBGSUFJdEFBSWhDU0FDTFFBQklRZ0NRQUpBSUFGQjdRRkhCRUFnQVVIZ0FVY05BU0FJUWVBQmNVR2dBVVlOQWd3SEN5QUlRZUFCY1VHQUFVWU5BUXdHQ3lBSVFjQUJjVUdBQVVjTkJRc2dDVUhBQVhGQmdBRkhEUVJCQXlFRklBbEJQM0VnQVVFTWRFR0E0QU54SUFoQlAzRkJCblJ5Y2lJQlFmLy93d0JORFFFTUJBc2dBVUgwQVVzTkF5QURJQUpyUVFSSURRUWdBaTBBQXlFSklBSXRBQUloQ3lBQ0xRQUJJUWdDUUFKQUFrQUNRQ0FCUWZBQmF3NEZBQUlDQWdFQ0N5QUlRZkFBYWtIL0FYRkJNRWtOQWd3R0N5QUlRZkFCY1VHQUFVWU5BUXdGQ3lBSVFjQUJjVUdBQVVjTkJBc2dDMEhBQVhGQmdBRkhJQWxCd0FGeFFZQUJSM0lOQTBFRUlRVWdDVUUvY1NBTFFRWjBRY0FmY1NBQlFSSjBRWUNBOEFCeElBaEJQM0ZCREhSeWNuSWlBVUgvLzhNQVN3MERDeUFNSUFFMkFnQWdBQ0FDSUFWcU5nSU1JQUFnQUNnQ0NFRUVhallDQ0F3QkN3c2dBaUFEU1NFS0N5QUtEQUVMUVFFTElRRWdCQ0FBS0FJTU5nSUFJQWNnQUNnQ0NEWUNBQ0FBUVJCcUpBQWdBUXVPQkFBakFFRVFheUlBSkFBZ0FDQUNOZ0lNSUFBZ0JUWUNDQUovSUFBZ0FqWUNEQ0FBSUFVMkFnZ2dBQ2dDRENFQkFrQURRQ0FCSUFOUEJFQkJBQ0VDREFJTFFRSWhBaUFCS0FJQUlnRkJnSEJ4UVlDd0EwWWdBVUgvLzhNQVMzSU5BUUpBQWtBZ0FVSC9BRTBFUUVFQklRSWdCaUFBS0FJSUlnVnJRUUJNRFFRZ0FDQUZRUUZxTmdJSUlBVWdBVG9BQUF3QkN5QUJRZjhQVFFSQUlBWWdBQ2dDQ0NJQ2EwRUNTQTBDSUFBZ0FrRUJhallDQ0NBQ0lBRkJCblpCd0FGeU9nQUFJQUFnQUNnQ0NDSUNRUUZxTmdJSUlBSWdBVUUvY1VHQUFYSTZBQUFNQVFzZ0JpQUFLQUlJSWdKcklRVWdBVUgvL3dOTkJFQWdCVUVEU0EwQ0lBQWdBa0VCYWpZQ0NDQUNJQUZCREhaQjRBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFR2RrRS9jVUdBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRVDl4UVlBQmNqb0FBQXdCQ3lBRlFRUklEUUVnQUNBQ1FRRnFOZ0lJSUFJZ0FVRVNka0h3QVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRUXgyUVQ5eFFZQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQkJuWkJQM0ZCZ0FGeU9nQUFJQUFnQUNnQ0NDSUNRUUZxTmdJSUlBSWdBVUUvY1VHQUFYSTZBQUFMSUFBZ0FDZ0NERUVFYWlJQk5nSU1EQUVMQzBFQkRBRUxJQUlMSVFFZ0JDQUFLQUlNTmdJQUlBY2dBQ2dDQ0RZQ0FDQUFRUkJxSkFBZ0FRdnVBd0VFZnlBQ0lRQURRQUpBSUFRZ0JrMGdBQ0FEVDNJTkFDQUFMUUFBSWdGQi8vL0RBRXNOQUFKL0lBQkJBV29nQVVFWWRFRVlkVUVBVGcwQUdpQUJRY0lCU1EwQklBRkIzd0ZOQkVBZ0F5QUFhMEVDU0EwQ0lBQXRBQUVpQlVIQUFYRkJnQUZISUFWQlAzRWdBVUVHZEVIQUQzRnlRZi8vd3dCTGNnMENJQUJCQW1vTUFRc0NRQUpBSUFGQjd3Rk5CRUFnQXlBQWEwRURTQTBFSUFBdEFBSWhCeUFBTFFBQklRVWdBVUh0QVVZTkFTQUJRZUFCUmdSQUlBVkI0QUZ4UWFBQlJnMEREQVVMSUFWQndBRnhRWUFCUncwRURBSUxJQU1nQUd0QkJFZ2dBVUgwQVV0eUlBUWdCbXRCQWtseURRTWdBQzBBQXlFSElBQXRBQUloQ0NBQUxRQUJJUVVDUUFKQUFrQUNRQ0FCUWZBQmF3NEZBQUlDQWdFQ0N5QUZRZkFBYWtIL0FYRkJNRWtOQWd3R0N5QUZRZkFCY1VHQUFVWU5BUXdGQ3lBRlFjQUJjVUdBQVVjTkJBc2dDRUhBQVhGQmdBRkhJQWRCd0FGeFFZQUJSM0lnQjBFL2NTQUlRUVowUWNBZmNTQUJRUkowUVlDQThBQnhJQVZCUDNGQkRIUnljbkpCLy8vREFFdHlEUU1nQmtFQmFpRUdJQUJCQkdvTUFnc2dCVUhnQVhGQmdBRkhEUUlMSUFkQndBRnhRWUFCUnlBSFFUOXhJQUZCREhSQmdPQURjU0FGUVQ5eFFRWjBjbkpCLy8vREFFdHlEUUVnQUVFRGFnc2hBQ0FHUVFGcUlRWU1BUXNMSUFBZ0Ftc0wwd1VCQkg4akFFRVFheUlBSkFBZ0FDQUNOZ0lNSUFBZ0JUWUNDQUovSUFBZ0FqWUNEQ0FBSUFVMkFnZ0NRQUpBQWtBRFFBSkFJQUFvQWd3aUFTQURUdzBBSUFBb0FnZ2lCU0FHVHcwQVFRSWhDaUFCTFFBQUlnSkIvLy9EQUVzTkJDQUFBbjhnQWtFWWRFRVlkVUVBVGdSQUlBVWdBanNCQUNBQlFRRnFEQUVMSUFKQndnRkpEUVVnQWtIZkFVMEVRQ0FESUFGclFRSklEUVVnQVMwQUFTSUlRY0FCY1VHQUFVY05CQ0FJUVQ5eElBSkJCblJCd0E5eGNpSUNRZi8vd3dCTERRUWdCU0FDT3dFQUlBRkJBbW9NQVFzZ0FrSHZBVTBFUUNBRElBRnJRUU5JRFFVZ0FTMEFBaUVKSUFFdEFBRWhDQUpBQWtBZ0FrSHRBVWNFUUNBQ1FlQUJSdzBCSUFoQjRBRnhRYUFCUmcwQ0RBY0xJQWhCNEFGeFFZQUJSZzBCREFZTElBaEJ3QUZ4UVlBQlJ3MEZDeUFKUWNBQmNVR0FBVWNOQkNBSlFUOXhJQWhCUDNGQkJuUWdBa0VNZEhKeUlnSkIvLzhEY1VILy84TUFTdzBFSUFVZ0Fqc0JBQ0FCUVFOcURBRUxJQUpCOUFGTERRVkJBU0VLSUFNZ0FXdEJCRWdOQXlBQkxRQURJUWtnQVMwQUFpRUlJQUV0QUFFaEFRSkFBa0FDUUFKQUlBSkI4QUZyRGdVQUFnSUNBUUlMSUFGQjhBQnFRZjhCY1VFd1R3MElEQUlMSUFGQjhBRnhRWUFCUncwSERBRUxJQUZCd0FGeFFZQUJSdzBHQ3lBSVFjQUJjVUdBQVVjZ0NVSEFBWEZCZ0FGSGNnMEZJQVlnQld0QkJFZ05BMEVDSVFvZ0NVRS9jU0lKSUFoQkJuUWlDMEhBSDNFZ0FVRU1kRUdBNEE5eElBSkJCM0VpQWtFU2RISnlja0gvLzhNQVN3MERJQVVnQ0VFRWRrRURjU0FCUVFKMElnRkJ3QUZ4SUFKQkNIUnlJQUZCUEhGeWNrSEEvd0JxUVlDd0EzSTdBUUFnQUNBRlFRSnFOZ0lJSUFVZ0MwSEFCM0VnQ1hKQmdMZ0RjanNCQWlBQUtBSU1RUVJxQ3pZQ0RDQUFJQUFvQWdoQkFtbzJBZ2dNQVFzTElBRWdBMGtoQ2dzZ0Nnd0NDMEVCREFFTFFRSUxJUUVnQkNBQUtBSU1OZ0lBSUFjZ0FDZ0NDRFlDQUNBQVFSQnFKQUFnQVF2NkJRRUJmeU1BUVJCcklnQWtBQ0FBSUFJMkFnd2dBQ0FGTmdJSUFuOGdBQ0FDTmdJTUlBQWdCVFlDQ0NBQUtBSU1JUUlDUUFKQUEwQWdBaUFEVHdSQVFRQWhCUXdEQzBFQ0lRVWdBaThCQUNJQlFmLy93d0JMRFFJQ1FBSkFJQUZCL3dCTkJFQkJBU0VGSUFZZ0FDZ0NDQ0lDYTBFQVRBMEZJQUFnQWtFQmFqWUNDQ0FDSUFFNkFBQU1BUXNnQVVIL0QwMEVRQ0FHSUFBb0FnZ2lBbXRCQWtnTkJDQUFJQUpCQVdvMkFnZ2dBaUFCUVFaMlFjQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQlAzRkJnQUZ5T2dBQURBRUxJQUZCLzY4RFRRUkFJQVlnQUNnQ0NDSUNhMEVEU0EwRUlBQWdBa0VCYWpZQ0NDQUNJQUZCREhaQjRBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFR2RrRS9jVUdBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRVDl4UVlBQmNqb0FBQXdCQ3lBQlFmKzNBMDBFUUVFQklRVWdBeUFDYTBFRVNBMEZJQUl2QVFJaUNFR0ErQU54UVlDNEEwY05BaUFHSUFBb0FnaHJRUVJJRFFVZ0NFSC9CM0VnQVVFS2RFR0ErQU54SUFGQndBZHhJZ1ZCQ25SeWNrR0FnQVJxUWYvL3d3QkxEUUlnQUNBQ1FRSnFOZ0lNSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQlVFR2RrRUJhaUlDUVFKMlFmQUJjam9BQUNBQUlBQW9BZ2dpQlVFQmFqWUNDQ0FGSUFKQkJIUkJNSEVnQVVFQ2RrRVBjWEpCZ0FGeU9nQUFJQUFnQUNnQ0NDSUNRUUZxTmdJSUlBSWdDRUVHZGtFUGNTQUJRUVIwUVRCeGNrR0FBWEk2QUFBZ0FDQUFLQUlJSWdGQkFXbzJBZ2dnQVNBSVFUOXhRWUFCY2pvQUFBd0JDeUFCUVlEQUEwa05CQ0FHSUFBb0FnZ2lBbXRCQTBnTkF5QUFJQUpCQVdvMkFnZ2dBaUFCUVF4MlFlQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQkJuWkJQM0ZCZ0FGeU9nQUFJQUFnQUNnQ0NDSUNRUUZxTmdJSUlBSWdBVUUvY1VHQUFYSTZBQUFMSUFBZ0FDZ0NERUVDYWlJQ05nSU1EQUVMQzBFQ0RBSUxRUUVNQVFzZ0JRc2hBU0FFSUFBb0FndzJBZ0FnQnlBQUtBSUlOZ0lBSUFCQkVHb2tBQ0FCQ3hVQUlBQW9BZ2dpQUVVRVFFRUJEd3NnQUJDSUFndVFBUUVHZndOQUFrQWdBaUFEUmlBRUlBaE5jZzBBUVFFaEJ5QUFLQUlJSVFVakFFRVFheUlHSkFBZ0JpQUZOZ0lNSUFaQkNHb2dCa0VNYWhCU0lRcEJBQ0FDSUFNZ0Ftc2dBVUdraHdFZ0FSc1F0d0VoQlNBS0VGRWdCa0VRYWlRQUFrQUNRQ0FGUVFKcURnTUNBZ0VBQ3lBRklRY0xJQWhCQVdvaENDQUhJQWxxSVFrZ0FpQUhhaUVDREFFTEN5QUpDMllCQTM4Z0FDZ0NDQ0VDSXdCQkVHc2lBU1FBSUFFZ0FqWUNEQ0FCUVFocUlBRkJER29RVWlFQ0l3QkJFR3NpQXlRQUlBTkJFR29rQUVFQUlRTWdBaEJSSUFGQkVHb2tBQ0FEQkg5QmZ3VWdBQ2dDQ0NJQVJRUkFRUUVQQ3lBQUVJZ0NRUUZHQ3d1U0FRRUJmeU1BUVJCcklnVWtBQ0FFSUFJMkFnQUNmMEVDSUFWQkRHcEJBQ0FBS0FJSUVNc0JJZ0JCQVdwQkFra05BQnBCQVNBQVFRRnJJZ0VnQXlBRUtBSUFhMHNOQUJvZ0JVRU1haUVDQTM4Z0FRUi9JQUl0QUFBaEFDQUVJQVFvQWdBaUEwRUJhallDQUNBRElBQTZBQUFnQVVFQmF5RUJJQUpCQVdvaEFnd0JCVUVBQ3dzTElRSWdCVUVRYWlRQUlBSUx5d1lCREg4akFFRVFheUlSSkFBZ0FpRUlBMEFDUUNBRElBaEdCRUFnQXlFSURBRUxJQWd0QUFCRkRRQWdDRUVCYWlFSURBRUxDeUFISUFVMkFnQWdCQ0FDTmdJQUEwQUNRQUovQWtBZ0FpQURSaUFGSUFaR2NnMEFJQkVnQVNrQ0FEY0RDQ0FBS0FJSUlRa2pBRUVRYXlJUUpBQWdFQ0FKTmdJTUlCQkJDR29nRUVFTWFoQlNJUk1nQ0NBQ2F5RU5RUUFoQ2lNQVFaQUlheUlMSkFBZ0N5QUVLQUlBSWc0MkFnd2dCU0FMUVJCcUlBVWJJUThDUUFKQUFrQWdEa1VnQmlBRmEwRUNkVUdBQWlBRkd5SU1SWElOQUFOQUlBMUJBbllpQ1NBTVNTQU5RWU1CVFhFTkFpQVBJQXRCREdvZ0RDQUpJQWtnREU4YklBRVEwUUlpRWtGL1JnUkFRWDhoQ2tFQUlRd2dDeWdDRENFT0RBSUxJQXhCQUNBU0lBOGdDMEVRYWtZYklnbHJJUXdnRHlBSlFRSjBhaUVQSUEwZ0Rtb2dDeWdDRENJT2EwRUFJQTRiSVEwZ0NpQVNhaUVLSUE1RkRRRWdEQTBBQ3dzZ0RrVU5BUXNnREVVZ0RVVnlEUUFnQ2lFSkEwQUNRQUpBSUE4Z0RpQU5JQUVRdHdFaUNrRUNha0VDVFFSQUFrQUNRQ0FLUVFGcURnSUdBQUVMSUF0QkFEWUNEQXdDQ3lBQlFRQTJBZ0FNQVFzZ0N5QUxLQUlNSUFwcUlnNDJBZ3dnQ1VFQmFpRUpJQXhCQVdzaURBMEJDeUFKSVFvTUFnc2dEMEVFYWlFUElBMGdDbXNoRFNBSklRb2dEUTBBQ3dzZ0JRUkFJQVFnQ3lnQ0REWUNBQXNnQzBHUUNHb2tBQ0FLSVFrZ0V4QlJJQkJCRUdva0FBSkFBa0FDUUFKQUlBbEJmMFlFUUFOQUFrQWdCeUFGTmdJQUlBSWdCQ2dDQUVZTkFFRUJJUVlDUUFKQUFrQWdCU0FDSUFnZ0Ftc2dFVUVJYWlBQUtBSUlFSWtDSWdGQkFtb09Bd2dBQWdFTElBUWdBallDQUF3RkN5QUJJUVlMSUFJZ0Jtb2hBaUFIS0FJQVFRUnFJUVVNQVFzTElBUWdBallDQUF3RkN5QUhJQWNvQWdBZ0NVRUNkR29pQlRZQ0FDQUZJQVpHRFFNZ0JDZ0NBQ0VDSUFNZ0NFWUVRQ0FESVFnTUNBc2dCU0FDUVFFZ0FTQUFLQUlJRUlrQ1JRMEJDMEVDREFRTElBY2dCeWdDQUVFRWFqWUNBQ0FFSUFRb0FnQkJBV29pQWpZQ0FDQUNJUWdEUUNBRElBaEdCRUFnQXlFSURBWUxJQWd0QUFCRkRRVWdDRUVCYWlFSURBQUxBQXNnQkNBQ05nSUFRUUVNQWdzZ0JDZ0NBQ0VDQ3lBQ0lBTkhDeUVBSUJGQkVHb2tBQ0FBRHdzZ0J5Z0NBQ0VGREFBTEFBdXpCUUVNZnlNQVFSQnJJZzBrQUNBQ0lRZ0RRQUpBSUFNZ0NFWUVRQ0FESVFnTUFRc2dDQ2dDQUVVTkFDQUlRUVJxSVFnTUFRc0xJQWNnQlRZQ0FDQUVJQUkyQWdBRFFBSkFBa0FnQWlBRFJpQUZJQVpHY2dSL0lBSUZJQTBnQVNrQ0FEY0RDRUVCSVJBZ0FDZ0NDQ0VKSXdCQkVHc2lEaVFBSUE0Z0NUWUNEQ0FPUVFocUlBNUJER29RVWlFVElBWWdCU0lKYXlFS1FRQWhEeU1BUVJCckloRWtBQUpBSUFRb0FnQWlDMFVnQ0NBQ2EwRUNkU0lTUlhJTkFDQUtRUUFnQ1JzaENnTkFJQkZCREdvZ0NTQUtRUVJKR3lBTEtBSUFFTm9CSWd4QmYwWUVRRUYvSVE4TUFnc2dDUVIvSUFwQkEwMEVRQ0FLSUF4SkRRTWdDU0FSUVF4cUlBd1FRaG9MSUFvZ0RHc2hDaUFKSUF4cUJVRUFDeUVKSUFzb0FnQkZCRUJCQUNFTERBSUxJQXdnRDJvaER5QUxRUVJxSVFzZ0VrRUJheUlTRFFBTEN5QUpCRUFnQkNBTE5nSUFDeUFSUVJCcUpBQWdEeUVKSUJNUVVTQU9RUkJxSkFBQ1FBSkFBa0FDUUFKQUlBbEJBV29PQWdBR0FRc2dCeUFGTmdJQUEwQUNRQ0FDSUFRb0FnQkdEUUFnQlNBQ0tBSUFJQUFvQWdnUXl3RWlBVUYvUmcwQUlBY2dCeWdDQUNBQmFpSUZOZ0lBSUFKQkJHb2hBZ3dCQ3dzZ0JDQUNOZ0lBREFFTElBY2dCeWdDQUNBSmFpSUZOZ0lBSUFVZ0JrWU5BaUFESUFoR0JFQWdCQ2dDQUNFQ0lBTWhDQXdIQ3lBTlFRUnFRUUFnQUNnQ0NCRExBU0lJUVg5SERRRUxRUUloRUF3REN5QU5RUVJxSVFJZ0JpQUhLQUlBYXlBSVNRMENBMEFnQ0FSQUlBSXRBQUFoQlNBSElBY29BZ0FpQ1VFQmFqWUNBQ0FKSUFVNkFBQWdDRUVCYXlFSUlBSkJBV29oQWd3QkN3c2dCQ0FFS0FJQVFRUnFJZ0kyQWdBZ0FpRUlBMEFnQXlBSVJnUkFJQU1oQ0F3RkN5QUlLQUlBUlEwRUlBaEJCR29oQ0F3QUN3QUxJQVFvQWdBTElBTkhJUkFMSUExQkVHb2tBQ0FRRHdzZ0J5Z0NBQ0VGREFBTEFBc0pBQ0FBRUpjQ0VCQUxOd0FqQUVFUWF5SUFKQUFnQUNBRU5nSU1JQUFnQXlBQ2F6WUNDQ0FBUVF4cUlBQkJDR29Rb2dFb0FnQWhBU0FBUVJCcUpBQWdBUXMwQUFOQUlBRWdBa1pGQkVBZ0JDQUJMQUFBSWdBZ0F5QUFRUUJPR3pvQUFDQUVRUUZxSVFRZ0FVRUJhaUVCREFFTEN5QUNDd3dBSUFFZ0FpQUJRUUJPR3dzcUFBTkFJQUVnQWtaRkJFQWdBeUFCTFFBQU9nQUFJQU5CQVdvaEF5QUJRUUZxSVFFTUFRc0xJQUlMUUFBRFFDQUJJQUpIQkVBZ0FTQUJMQUFBSWdCQkFFNEVmMEhBeEFBb0FnQWdBU3dBQUVFQ2RHb29BZ0FGSUFBTE9nQUFJQUZCQVdvaEFRd0JDd3NnQWdzbkFDQUJRUUJPQkg5QndNUUFLQUlBSUFGQi93RnhRUUowYWlnQ0FBVWdBUXRCR0hSQkdIVUxQd0FEUUNBQklBSkhCRUFnQVNBQkxBQUFJZ0JCQUU0RWYwR3dPQ2dDQUNBQkxBQUFRUUowYWlnQ0FBVWdBQXM2QUFBZ0FVRUJhaUVCREFFTEN5QUNDeVlBSUFGQkFFNEVmMEd3T0NnQ0FDQUJRZjhCY1VFQ2RHb29BZ0FGSUFFTFFSaDBRUmgxQ3drQUlBQVFqQUlRRUFzMUFBTkFJQUVnQWtaRkJFQWdCQ0FCS0FJQUlnQWdBeUFBUVlBQlNSczZBQUFnQkVFQmFpRUVJQUZCQkdvaEFRd0JDd3NnQWdzVEFDQUJJQUlnQVVHQUFVa2JRUmgwUVJoMUN5b0FBMEFnQVNBQ1JrVUVRQ0FESUFFc0FBQTJBZ0FnQTBFRWFpRURJQUZCQVdvaEFRd0JDd3NnQWd0QkFBTkFJQUVnQWtjRVFDQUJJQUVvQWdBaUFFSC9BRTBFZjBIQXhBQW9BZ0FnQVNnQ0FFRUNkR29vQWdBRklBQUxOZ0lBSUFGQkJHb2hBUXdCQ3dzZ0Fnc2VBQ0FCUWY4QVRRUi9RY0RFQUNnQ0FDQUJRUUowYWlnQ0FBVWdBUXNMUUFBRFFDQUJJQUpIQkVBZ0FTQUJLQUlBSWdCQi93Qk5CSDlCc0Rnb0FnQWdBU2dDQUVFQ2RHb29BZ0FGSUFBTE5nSUFJQUZCQkdvaEFRd0JDd3NnQWdzZEFDQUJRZjhBVFFSL1FiQTRLQUlBSUFGQkFuUnFLQUlBQlNBQkN3dEVBQUpBQTBBZ0FpQURSZzBCQWtBZ0FpZ0NBRUgvQUVzTkFFR2dNaWdDQUNBQ0tBSUFRUUYwYWk4QkFDQUJjVVVOQUNBQ1FRUnFJUUlNQVFzTElBSWhBd3NnQXd0REFBTkFBa0FnQWlBRFJ3Ui9JQUlvQWdCQi93QkxEUUZCb0RJb0FnQWdBaWdDQUVFQmRHb3ZBUUFnQVhGRkRRRWdBZ1VnQXdzUEN5QUNRUVJxSVFJTUFBc0FDMFVBQTBBZ0FTQUNSd1JBSUFNZ0FTZ0NBRUgvQUUwRWYwR2dNaWdDQUNBQktBSUFRUUYwYWk4QkFBVkJBQXM3QVFBZ0EwRUNhaUVESUFGQkJHb2hBUXdCQ3dzZ0Fnc2pBQ0FDUWY4QVRRUi9RYUF5S0FJQUlBSkJBWFJxTHdFQUlBRnhRUUJIQlVFQUN3dEFBUUovSUFBb0FnQW9BZ0FpQUNnQ0FDQUFLQUlJSWdKQkFYVnFJUUVnQUNnQ0JDRUFJQUVnQWtFQmNRUi9JQUVvQWdBZ0FHb29BZ0FGSUFBTEVRRUFDdzhBSUFBZ0FDZ0NBQ2dDQkJFQkFBc2ZBQ0FBQW45QjZJZ0JRZWlJQVNnQ0FFRUJhaUlBTmdJQUlBQUxOZ0lFQ3drQUlBQVFrZ0lRRUF1WUFRQWpBRUVRYXlJREpBQUNRQ0FGRURWRkJFQWdBQ0FGS0FJSU5nSUlJQUFnQlNrQ0FEY0NBQXdCQ3lBRktBSUFJUVFDUUFKQUFrQWdCU2dDQkNJQ1FRRk5CRUFnQUNFQklBQWdBaEE2REFFTElBSkI3Ly8vL3dOTERRRWdBQ0FBSUFJUWdnRkJBV29pQlJDQkFTSUJFRTBnQUNBRkVFd2dBQ0FDRURrTElBRWdCQ0FDUVFGcUVHWU1BUXNRRndBTEN5QURRUkJxSkFBTENRQWdBQ0FGRU5BQkM0WURBUWgvSXdCQjhBTnJJZ0FrQUNBQVFlZ0RhaUlHSUFNUUR5QUdFRHNoQ2lBRkVBa0VRQ0FGUVFBUXNRRW9BZ0FnQ2tFdEVEMUdJUXNMSUFJZ0N5QUFRZWdEYWlBQVFlQURhaUFBUWR3RGFpQUFRZGdEYWlBQVFjZ0RhaEFSSWd3Z0FFRzRBMm9RUnlJR0lBQkJxQU5xRUVjaUJ5QUFRYVFEYWhDYUFpQUFRVFUyQWhBZ0FFRUlha0VBSUFCQkVHb2lBaEFlSVFnQ1FBSi9JQVVRQ1NBQUtBS2tBMG9FUUNBRkVBa2hDU0FBS0FLa0F5RU5JQWNRQ1NBSklBMXJRUUYwYWlBR0VBbHFJQUFvQXFRRGFrRUJhZ3dCQ3lBSEVBa2dCaEFKYWlBQUtBS2tBMnBCQW1vTElnbEI1UUJKRFFBZ0NDQUpRUUowRUJrUUp5QUlLQUlBSWdJTkFCQVhBQXNnQWlBQVFRUnFJQUFnQXlnQ0JDQUZFQTBnQlJBTklBVVFDVUVDZEdvZ0NpQUxJQUJCNEFOcUlBQW9BdHdESUFBb0F0Z0RJQXdnQmlBSElBQW9BcVFERUprQ0lBRWdBaUFBS0FJRUlBQW9BZ0FnQXlBRUVHTWhBU0FJRUIwZ0J4QUtHaUFHRUFvYUlBd1FDaG9nQUVIb0Eyb1FEaUFBUWZBRGFpUUFJQUVMdXdRQkMzOGpBRUd3Q0dzaUFDUUFJQUFnQlRjREVDQUFJQVkzQXhnZ0FDQUFRY0FIYWlJSE5nSzhCeUFISUFCQkVHb1ExQUloQnlBQVFUVTJBcUFFSUFCQm1BUnFRUUFnQUVHZ0JHb2lDUkFlSVE0Z0FFRTFOZ0tnQkNBQVFaQUVha0VBSUFrUUhpRUtBa0FnQjBIa0FFOEVRQkFXSVFjZ0FDQUZOd01BSUFBZ0JqY0RDQ0FBUWJ3SGFpQUhRZTRjSUFBUVdpSUhRWDlHRFFFZ0RpQUFLQUs4QnhBbklBb2dCMEVDZEJBWkVDY2dDaENkQWcwQklBb29BZ0FoQ1FzZ0FFR0lCR29pQ0NBREVBOGdDQkE3SWhFZ0FDZ0N2QWNpQ0NBSElBaHFJQWtRWkNBSFFRQktCRUFnQUNnQ3ZBY3RBQUJCTFVZaER3c2dBaUFQSUFCQmlBUnFJQUJCZ0FScUlBQkIvQU5xSUFCQitBTnFJQUJCNkFOcUVCRWlFQ0FBUWRnRGFoQkhJZ2dnQUVISUEyb1FSeUlMSUFCQnhBTnFFSm9DSUFCQk5UWUNNQ0FBUVNocVFRQWdBRUV3YWlJQ0VCNGhEQUovSUFBb0FzUURJZzBnQjBnRVFDQUxFQWtnQnlBTmEwRUJkR29nQ0JBSmFpQUFLQUxFQTJwQkFXb01BUXNnQ3hBSklBZ1FDV29nQUNnQ3hBTnFRUUpxQ3lJTlFlVUFUd1JBSUF3Z0RVRUNkQkFaRUNjZ0RDZ0NBQ0lDUlEwQkN5QUNJQUJCSkdvZ0FFRWdhaUFES0FJRUlBa2dDU0FIUVFKMGFpQVJJQThnQUVHQUJHb2dBQ2dDL0FNZ0FDZ0MrQU1nRUNBSUlBc2dBQ2dDeEFNUW1RSWdBU0FDSUFBb0FpUWdBQ2dDSUNBRElBUVFZeUVCSUF3UUhTQUxFQW9hSUFnUUNob2dFQkFLR2lBQVFZZ0VhaEFPSUFvUUhTQU9FQjBnQUVHd0NHb2tBQ0FCRHdzUUZ3QUwvZ0lCQ0g4akFFSEFBV3NpQUNRQUlBQkJ1QUZxSWdZZ0F4QVBJQVlRTWlFS0lBVVFDUVJBSUFWQkFCQUxMUUFBSUFwQkxSQXBRZjhCY1VZaEN3c2dBaUFMSUFCQnVBRnFJQUJCc0FGcUlBQkJyd0ZxSUFCQnJnRnFJQUJCb0FGcUVCRWlEQ0FBUVpBQmFoQVJJZ1lnQUVHQUFXb1FFU0lISUFCQi9BQnFFSndDSUFCQk5UWUNFQ0FBUVFocVFRQWdBRUVRYWlJQ0VCNGhDQUpBQW44Z0JSQUpJQUFvQW54S0JFQWdCUkFKSVFrZ0FDZ0NmQ0VOSUFjUUNTQUpJQTFyUVFGMGFpQUdFQWxxSUFBb0FueHFRUUZxREFFTElBY1FDU0FHRUFscUlBQW9BbnhxUVFKcUN5SUpRZVVBU1EwQUlBZ2dDUkFaRUNjZ0NDZ0NBQ0lDRFFBUUZ3QUxJQUlnQUVFRWFpQUFJQU1vQWdRZ0JSQU5JQVVRRFNBRkVBbHFJQW9nQ3lBQVFiQUJhaUFBTEFDdkFTQUFMQUN1QVNBTUlBWWdCeUFBS0FKOEVKc0NJQUVnQWlBQUtBSUVJQUFvQWdBZ0F5QUVFRlloQVNBSUVCMGdCeEFLR2lBR0VBb2FJQXdRQ2hvZ0FFRzRBV29RRGlBQVFjQUJhaVFBSUFFTHNnUUJDMzhqQUVIUUEyc2lBQ1FBSUFBZ0JUY0RFQ0FBSUFZM0F4Z2dBQ0FBUWVBQ2FpSUhOZ0xjQWlBSElBQkJFR29RMUFJaEJ5QUFRVFUyQXZBQklBQkI2QUZxUVFBZ0FFSHdBV29pQ1JBZUlRNGdBRUUxTmdMd0FTQUFRZUFCYWtFQUlBa1FIaUVLQWtBZ0IwSGtBRThFUUJBV0lRY2dBQ0FGTndNQUlBQWdCamNEQ0NBQVFkd0NhaUFIUWU0Y0lBQVFXaUlIUVg5R0RRRWdEaUFBS0FMY0FoQW5JQW9nQnhBWkVDY2dDaENkQWcwQklBb29BZ0FoQ1FzZ0FFSFlBV29pQ0NBREVBOGdDQkF5SWhFZ0FDZ0MzQUlpQ0NBSElBaHFJQWtRY0NBSFFRQktCRUFnQUNnQzNBSXRBQUJCTFVZaER3c2dBaUFQSUFCQjJBRnFJQUJCMEFGcUlBQkJ6d0ZxSUFCQnpnRnFJQUJCd0FGcUVCRWlFQ0FBUWJBQmFoQVJJZ2dnQUVHZ0FXb1FFU0lMSUFCQm5BRnFFSndDSUFCQk5UWUNNQ0FBUVNocVFRQWdBRUV3YWlJQ0VCNGhEQUovSUFBb0Fwd0JJZzBnQjBnRVFDQUxFQWtnQnlBTmEwRUJkR29nQ0JBSmFpQUFLQUtjQVdwQkFXb01BUXNnQ3hBSklBZ1FDV29nQUNnQ25BRnFRUUpxQ3lJTlFlVUFUd1JBSUF3Z0RSQVpFQ2NnRENnQ0FDSUNSUTBCQ3lBQ0lBQkJKR29nQUVFZ2FpQURLQUlFSUFrZ0J5QUphaUFSSUE4Z0FFSFFBV29nQUN3QXp3RWdBQ3dBemdFZ0VDQUlJQXNnQUNnQ25BRVFtd0lnQVNBQ0lBQW9BaVFnQUNnQ0lDQURJQVFRVmlFQklBd1FIU0FMRUFvYUlBZ1FDaG9nRUJBS0dpQUFRZGdCYWhBT0lBb1FIU0FPRUIwZ0FFSFFBMm9rQUNBQkR3c1FGd0FMcHdVQkEzOGpBRUhBQTJzaUFDUUFJQUFnQWpZQ3NBTWdBQ0FCTmdLNEF5QUFRVFkyQWhRZ0FFRVlhaUFBUVNCcUlBQkJGR29pQnhBZUlRa2dBRUVRYWlJQklBUVFEeUFCRURzaENDQUFRUUE2QUE4Z0FFRzRBMm9nQWlBRElBRWdCQ2dDQkNBRklBQkJEMm9nQ0NBSklBY2dBRUd3QTJvUW93SUVRQ01BUVJCcklnRWtBQUpBSUFZUU5RUkFJQVlvQWdBaEFpQUJRUUEyQWd3Z0FpQUJRUXhxRURNZ0JrRUFFRGtNQVFzZ0FVRUFOZ0lJSUFZZ0FVRUlhaEF6SUFaQkFCQTZDeUFCUVJCcUpBQWdBQzBBRHdSQUlBWWdDRUV0RUQwUXhnRUxJQWhCTUJBOUlRRWdDU2dDQUNFRUlBQW9BaFFpQ0VFRWF5RUNBMEFDUUNBQ0lBUk5EUUFnQkNnQ0FDQUJSdzBBSUFSQkJHb2hCQXdCQ3dzakFFRVFheUlCSkFBZ0JoQUpJUUlnQmhET0FTRURBa0FnQkNBSUVLRUNJZ2RGRFFBZ0JoQU5JQVJOQkg4Z0JDQUdFQTBnQmhBSlFRSjBhazBGUVFBTFJRUkFJQWNnQXlBQ2Ewc0VRQ0FHSUFNZ0FpQUhhaUFEYXlBQ0lBSVE4Z0VMSUFZUURTQUNRUUowYWlFREEwQWdCQ0FJUndSQUlBTWdCQkF6SUFSQkJHb2hCQ0FEUVFScUlRTU1BUXNMSUFGQkFEWUNBQ0FESUFFUU15QUdJQUlnQjJvUWVBd0JDeU1BUVJCcklnSWtBQ0FCSUFRZ0NCRE5BaUFDUVJCcUpBQWdBUkFOSVFnZ0FSQUpJUUlqQUVFUWF5SUVKQUFDUUNBQ0lBWVF6Z0VpQnlBR0VBa2lBMnROQkVBZ0FrVU5BU0FHRUEwaUJ5QURRUUowYWlBSUlBSVFaaUFHSUFJZ0Eyb2lBaEI0SUFSQkFEWUNEQ0FISUFKQkFuUnFJQVJCREdvUU13d0JDeUFHSUFjZ0FpQURhaUFIYXlBRElBTkJBQ0FDSUFnUTh3RUxJQVJCRUdva0FDQUJFQW9hQ3lBQlFSQnFKQUFMSUFCQnVBTnFJQUJCc0FOcUVDZ0VRQ0FGSUFVb0FnQkJBbkkyQWdBTElBQW9BcmdESVFFZ0FFRVFhaEFPSUFrUUhTQUFRY0FEYWlRQUlBRUwxd01CQW44akFFSHdCR3NpQUNRQUlBQWdBallDNEFRZ0FDQUJOZ0xvQkNBQVFUWTJBaEFnQUVISUFXb2dBRUhRQVdvZ0FFRVFhaEFlSVFFZ0FFSEFBV29pQnlBRUVBOGdCeEE3SVFnZ0FFRUFPZ0MvQVFKQUlBQkI2QVJxSUFJZ0F5QUhJQVFvQWdRZ0JTQUFRYjhCYWlBSUlBRWdBRUhFQVdvZ0FFSGdCR29Rb3dKRkRRQWdBRUdqSGlnQUFEWUF0d0VnQUVHY0hpa0FBRGNEc0FFZ0NDQUFRYkFCYWlBQVFib0JhaUFBUVlBQmFoQmtJQUJCTlRZQ0VDQUFRUWhxUVFBZ0FFRVFhaUlDRUI0aEF3SkFJQUFvQXNRQklBRW9BZ0JyUVlrRFRnUkFJQU1nQUNnQ3hBRWdBU2dDQUd0QkFuVkJBbW9RR1JBbklBTW9BZ0JGRFFFZ0F5Z0NBQ0VDQ3lBQUxRQy9BUVJBSUFKQkxUb0FBQ0FDUVFGcUlRSUxJQUVvQWdBaEJBTkFJQUFvQXNRQklBUk5CRUFDUUNBQ1FRQTZBQUFnQUNBR05nSUFJQUJCRUdvZ0FCRFZBa0VCUncwQUlBTVFIUXdFQ3dVZ0FpQUFRYkFCYWlBQVFZQUJhaUlISUFkQktHb2dCQkRTQVNBSGEwRUNkV290QUFBNkFBQWdBa0VCYWlFQ0lBUkJCR29oQkF3QkN3c1FGd0FMRUJjQUN5QUFRZWdFYWlBQVFlQUVhaEFvQkVBZ0JTQUZLQUlBUVFKeU5nSUFDeUFBS0FMb0JDRUNJQUJCd0FGcUVBNGdBUkFkSUFCQjhBUnFKQUFnQWd1a0JRRURmeU1BUWFBQmF5SUFKQUFnQUNBQ05nS1FBU0FBSUFFMkFwZ0JJQUJCTmpZQ0ZDQUFRUmhxSUFCQklHb2dBRUVVYWlJSEVCNGhDU0FBUVJCcUlnRWdCQkFQSUFFUU1pRUlJQUJCQURvQUR5QUFRWmdCYWlBQ0lBTWdBU0FFS0FJRUlBVWdBRUVQYWlBSUlBa2dCeUFBUVlRQmFoQ3JBZ1JBSXdCQkVHc2lBU1FBQWtBZ0JoQTFCRUFnQmlnQ0FDRUNJQUZCQURvQUR5QUNJQUZCRDJvUU5DQUdRUUFRT1F3QkN5QUJRUUE2QUE0Z0JpQUJRUTVxRURRZ0JrRUFFRG9MSUFGQkVHb2tBQ0FBTFFBUEJFQWdCaUFJUVMwUUtSQ2hBUXNnQ0VFd0VDa2hBU0FKS0FJQUlRUWdBQ2dDRkNJSVFRRnJJUUlnQVVIL0FYRWhBUU5BQWtBZ0FpQUVUUTBBSUFRdEFBQWdBVWNOQUNBRVFRRnFJUVFNQVFzTEl3QkJFR3NpQVNRQUlBWVFDU0VDSUFZUUV5RURBa0FnQkNBSUVPc0NJZ2RGRFFBZ0JoQU5JQVJOQkg4Z0JDQUdFQTBnQmhBSmFrMEZRUUFMUlFSQUlBY2dBeUFDYTBzRVFDQUdJQU1nQWlBSGFpQURheUFDSUFJUXlBRUxJQVlRRFNBQ2FpRURBMEFnQkNBSVJ3UkFJQU1nQkJBMElBUkJBV29oQkNBRFFRRnFJUU1NQVFzTElBRkJBRG9BRHlBRElBRkJEMm9RTkNBR0lBSWdCMm9RZUF3QkN5TUFRUkJySWdJa0FDQUJJQVFnQ0JEd0FpQUNRUkJxSkFBZ0FSQU5JUWdnQVJBSklRSWpBRUVRYXlJRUpBQUNRQ0FDSUFZUUV5SUhJQVlRQ1NJRGEwMEVRQ0FDUlEwQklBWVFEU0lISUFOcUlBZ2dBaEJWSUFZZ0FpQURhaUlDRUhnZ0JFRUFPZ0FQSUFJZ0Iyb2dCRUVQYWhBMERBRUxJQVlnQnlBQ0lBTnFJQWRySUFNZ0EwRUFJQUlnQ0JEM0FRc2dCRUVRYWlRQUlBRVFDaG9MSUFGQkVHb2tBQXNnQUVHWUFXb2dBRUdRQVdvUUpnUkFJQVVnQlNnQ0FFRUNjallDQUFzZ0FDZ0NtQUVoQVNBQVFSQnFFQTRnQ1JBZElBQkJvQUZxSkFBZ0FRdk5Bd0VDZnlNQVFhQUNheUlBSkFBZ0FDQUNOZ0tRQWlBQUlBRTJBcGdDSUFCQk5qWUNFQ0FBUVpnQmFpQUFRYUFCYWlBQVFSQnFFQjRoQVNBQVFaQUJhaUlISUFRUUR5QUhFREloQ0NBQVFRQTZBSThCQWtBZ0FFR1lBbW9nQWlBRElBY2dCQ2dDQkNBRklBQkJqd0ZxSUFnZ0FTQUFRWlFCYWlBQVFZUUNhaENyQWtVTkFDQUFRYU1lS0FBQU5nQ0hBU0FBUVp3ZUtRQUFOd09BQVNBSUlBQkJnQUZxSUFCQmlnRnFJQUJCOWdCcUVIQWdBRUUxTmdJUUlBQkJDR3BCQUNBQVFSQnFJZ0lRSGlFREFrQWdBQ2dDbEFFZ0FTZ0NBR3RCNHdCT0JFQWdBeUFBS0FLVUFTQUJLQUlBYTBFQ2FoQVpFQ2NnQXlnQ0FFVU5BU0FES0FJQUlRSUxJQUF0QUk4QkJFQWdBa0V0T2dBQUlBSkJBV29oQWdzZ0FTZ0NBQ0VFQTBBZ0FDZ0NsQUVnQkUwRVFBSkFJQUpCQURvQUFDQUFJQVkyQWdBZ0FFRVFhaUFBRU5VQ1FRRkhEUUFnQXhBZERBUUxCU0FDSUFCQjlnQnFJZ2NnQjBFS2FpQUVFTlVCSUFCcklBQnFMUUFLT2dBQUlBSkJBV29oQWlBRVFRRnFJUVFNQVFzTEVCY0FDeEFYQUFzZ0FFR1lBbW9nQUVHUUFtb1FKZ1JBSUFVZ0JTZ0NBRUVDY2pZQ0FBc2dBQ2dDbUFJaEFpQUFRWkFCYWhBT0lBRVFIU0FBUWFBQ2FpUUFJQUlMbUFJQkFuOGpBRUdnQTJzaUNDUUFJQWdnQ0VHZ0Eyb2lBellDRENNQVFaQUJheUlISkFBZ0J5QUhRWVFCYWpZQ0hDQUFRUWhxSUFkQklHb2lBaUFIUVJ4cUlBUWdCU0FHRUxFQ0lBZENBRGNERUNBSElBSTJBZ3dnQ0VFUWFpSUNJQWdvQWd3UXJnSWhCQ0FBS0FJSUlRVWpBRUVRYXlJQUpBQWdBQ0FGTmdJTUlBQkJDR29nQUVFTWFoQlNJUVVnQWlBSFFReHFJQVFnQjBFUWFoRFJBaUVFSUFVUVVTQUFRUkJxSkFBZ0JFRi9SZ1JBRUJjQUN5QUlJQUlnQkVFQ2RHbzJBZ3dnQjBHUUFXb2tBQ0FJS0FJTUlRUWpBRUVRYXlJQUpBQWdBQ0FCTmdJSUEwQWdBaUFFUndSQUlBQkJDR29nQWlnQ0FCRHpBaUFDUVFScUlRSU1BUXNMSUFBb0FnZ2hBU0FBUVJCcUpBQWdBeVFBSUFFTGhRRUFJd0JCZ0FGcklnSWtBQ0FDSUFKQjlBQnFOZ0lNSUFCQkNHb2dBa0VRYWlJQUlBSkJER29nQkNBRklBWVFzUUlnQUNFRUlBSW9BZ3doQXlNQVFSQnJJZ0FrQUNBQUlBRTJBZ2dEUUNBRElBUkhCRUFnQUVFSWFpQUVMQUFBRVBRQ0lBUkJBV29oQkF3QkN3c2dBQ2dDQ0NFQklBQkJFR29rQUNBQ1FZQUJhaVFBSUFFTDRBd0JBWDhqQUVGQWFpSUhKQUFnQnlBQk5nSTRJQVJCQURZQ0FDQUhJQU1RRHlBSEVEc2hDQ0FIRUE0Q2Z3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JrSEJBR3NPT1FBQkZ3UVhCUmNHQnhjWEZ3b1hGeGNYRGc4UUZ4Y1hFeFVYRnhjWEZ4Y1hBQUVDQXdNWEZ3RVhDQmNYQ1FzWERCY05Gd3NYRnhFU0ZCWUxJQUFnQlVFWWFpQUhRVGhxSUFJZ0JDQUlFTFFDREJnTElBQWdCVUVRYWlBSFFUaHFJQUlnQkNBSUVMTUNEQmNMSUFjZ0FDQUJJQUlnQXlBRUlBVWdBRUVJYWlBQUtBSUlLQUlNRVFBQUlnQVFEU0FBRUEwZ0FCQUpRUUowYWhCaE5nSTREQllMSUFkQk9Hb2dBaUFFSUFoQkFoQllJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRUFUSElnQUVFZlNuSkZCRUFnQlNBQU5nSU1EQUVMSUFRZ0FVRUVjallDQUFzTUZRc2dCMEdvMFFBcEF3QTNBeGdnQjBHZzBRQXBBd0EzQXhBZ0IwR1kwUUFwQXdBM0F3Z2dCMEdRMFFBcEF3QTNBd0FnQnlBQUlBRWdBaUFESUFRZ0JTQUhJQWRCSUdvUVlUWUNPQXdVQ3lBSFFjalJBQ2tEQURjREdDQUhRY0RSQUNrREFEY0RFQ0FIUWJqUkFDa0RBRGNEQ0NBSFFiRFJBQ2tEQURjREFDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFjZ0IwRWdhaEJoTmdJNERCTUxJQWRCT0dvZ0FpQUVJQWhCQWhCWUlRQUNRQ0FFS0FJQUlnRkJCSEVnQUVFWFNuSkZCRUFnQlNBQU5nSUlEQUVMSUFRZ0FVRUVjallDQUFzTUVnc2dCMEU0YWlBQ0lBUWdDRUVDRUZnaEFBSkFJQVFvQWdBaUFVRUVjU0FBUVFCTWNpQUFRUXhLY2tVRVFDQUZJQUEyQWdnTUFRc2dCQ0FCUVFSeU5nSUFDd3dSQ3lBSFFUaHFJQUlnQkNBSVFRTVFXQ0VBQWtBZ0JDZ0NBQ0lCUVFSeElBQkI3UUpLY2tVRVFDQUZJQUEyQWh3TUFRc2dCQ0FCUVFSeU5nSUFDd3dRQ3lBSFFUaHFJQUlnQkNBSVFRSVFXQ0VBQWtBZ0JDZ0NBQ0lCUVFSeElBQkJERXB5UlFSQUlBVWdBRUVCYXpZQ0VBd0JDeUFFSUFGQkJISTJBZ0FMREE4TElBZEJPR29nQWlBRUlBaEJBaEJZSVFBQ1FDQUVLQUlBSWdGQkJIRWdBRUU3U25KRkJFQWdCU0FBTmdJRURBRUxJQVFnQVVFRWNqWUNBQXNNRGdzZ0IwRTRhaUVBSXdCQkVHc2lBU1FBSUFFZ0FqWUNDQU5BQWtBZ0FDQUJRUWhxRURaRkRRQWdDRUdBd0FBZ0FCQWhFRTVGRFFBZ0FCQWxHZ3dCQ3dzZ0FDQUJRUWhxRUNnRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFGQkVHb2tBQXdOQ3lBSFFUaHFJUUVDUUNBQVFRaHFJQUFvQWdnb0FnZ1JBQUFpQUJBSlFRQWdBRUVNYWhBSmEwWUVRQ0FFSUFRb0FnQkJCSEkyQWdBTUFRc2dBU0FDSUFBZ0FFRVlhaUFJSUFSQkFCQ3lBU0FBYXlJQklBVW9BZ2dpQUVFTVIzSkZCRUFnQlVFQU5nSUlEQUVMSUFGQkRFY2dBRUVMU25KRkJFQWdCU0FBUVF4cU5nSUlDd3NNREFzZ0IwSFEwUUJCTEJCQ0lnWWdBQ0FCSUFJZ0F5QUVJQVVnQmlBR1FTeHFFR0UyQWpnTUN3c2dCMEdRMGdBb0FnQTJBaEFnQjBHSTBnQXBBd0EzQXdnZ0IwR0EwZ0FwQXdBM0F3QWdCeUFBSUFFZ0FpQURJQVFnQlNBSElBZEJGR29RWVRZQ09Bd0tDeUFIUVRocUlBSWdCQ0FJUVFJUVdDRUFBa0FnQkNnQ0FDSUJRUVJ4SUFCQlBFcHlSUVJBSUFVZ0FEWUNBQXdCQ3lBRUlBRkJCSEkyQWdBTERBa0xJQWRCdU5JQUtRTUFOd01ZSUFkQnNOSUFLUU1BTndNUUlBZEJxTklBS1FNQU53TUlJQWRCb05JQUtRTUFOd01BSUFjZ0FDQUJJQUlnQXlBRUlBVWdCeUFIUVNCcUVHRTJBamdNQ0FzZ0IwRTRhaUFDSUFRZ0NFRUJFRmdoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRUVpLY2tVRVFDQUZJQUEyQWhnTUFRc2dCQ0FCUVFSeU5nSUFDd3dIQ3lBQUlBRWdBaUFESUFRZ0JTQUFLQUlBS0FJVUVRVUFEQWNMSUFjZ0FDQUJJQUlnQXlBRUlBVWdBRUVJYWlBQUtBSUlLQUlZRVFBQUlnQVFEU0FBRUEwZ0FCQUpRUUowYWhCaE5nSTREQVVMSUFWQkZHb2dCMEU0YWlBQ0lBUWdDQkN5QWd3RUN5QUhRVGhxSUFJZ0JDQUlRUVFRV0NFQUlBUXRBQUJCQkhGRkJFQWdCU0FBUWV3T2F6WUNGQXNNQXdzZ0JrRWxSZzBCQ3lBRUlBUW9BZ0JCQkhJMkFnQU1BUXNqQUVFUWF5SUFKQUFnQUNBQ05nSUlRUVloQVFKQUFrQWdCMEU0YWlJQ0lBQkJDR29RS0EwQVFRUWhBU0FJSUFJUUlSQ0hBVUVsUncwQVFRSWhBU0FDRUNVZ0FFRUlhaEFvUlEwQkN5QUVJQVFvQWdBZ0FYSTJBZ0FMSUFCQkVHb2tBQXNnQnlnQ09Bc2hBQ0FIUVVCckpBQWdBQXRIQVFGL0l3QkJFR3NpQmlRQUlBWWdBVFlDQ0NBR0lBTVFEeUFHRURzaEFTQUdFQTRnQlVFVWFpQUdRUWhxSUFJZ0JDQUJFTElDSUFZb0FnZ2hBQ0FHUVJCcUpBQWdBQXRKQVFGL0l3QkJFR3NpQmlRQUlBWWdBVFlDQ0NBR0lBTVFEeUFHRURzaEFTQUdFQTRnQUNBRlFSQnFJQVpCQ0dvZ0FpQUVJQUVRc3dJZ0JpZ0NDQ0VBSUFaQkVHb2tBQ0FBQzBrQkFYOGpBRUVRYXlJR0pBQWdCaUFCTmdJSUlBWWdBeEFQSUFZUU95RUJJQVlRRGlBQUlBVkJHR29nQmtFSWFpQUNJQVFnQVJDMEFpQUdLQUlJSVFBZ0JrRVFhaVFBSUFBTE1BQWdBQ0FCSUFJZ0F5QUVJQVVnQUVFSWFpQUFLQUlJS0FJVUVRQUFJZ0FRRFNBQUVBMGdBQkFKUVFKMGFoQmhDMXdCQVg4akFFRWdheUlHSkFBZ0JrRzQwZ0FwQXdBM0F4Z2dCa0d3MGdBcEF3QTNBeEFnQmtHbzBnQXBBd0EzQXdnZ0JrR2cwZ0FwQXdBM0F3QWdBQ0FCSUFJZ0F5QUVJQVVnQmlBR1FTQnFJZ0VRWVNFQUlBRWtBQ0FBQzVBTUFRSi9Jd0JCSUdzaUJ5UUFJQWNnQVRZQ0dDQUVRUUEyQWdBZ0IwRUlhaUlKSUFNUUR5QUpFREloQ0NBSkVBNENmd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdCa0hCQUdzT09RQUJGd1FYQlJjR0J4Y1hGd29YRnhjWERnOFFGeGNYRXhVWEZ4Y1hGeGNYQUFFQ0F3TVhGd0VYQ0JjWENRc1hEQmNORndzWEZ4RVNGQllMSUFBZ0JVRVlhaUFIUVJocUlBSWdCQ0FJRUxjQ0RCZ0xJQUFnQlVFUWFpQUhRUmhxSUFJZ0JDQUlFTFlDREJjTElBY2dBQ0FCSUFJZ0F5QUVJQVVnQUVFSWFpQUFLQUlJS0FJTUVRQUFJZ0FRRFNBQUVBMGdBQkFKYWhCaU5nSVlEQllMSUFkQkdHb2dBaUFFSUFoQkFoQlpJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRUFUSElnQUVFZlNuSkZCRUFnQlNBQU5nSU1EQUVMSUFRZ0FVRUVjallDQUFzTUZRc2dCMEtsMnIycHd1ekxrdmtBTndNSUlBY2dBQ0FCSUFJZ0F5QUVJQVVnQjBFSWFpQUhRUkJxRUdJMkFoZ01GQXNnQjBLbHNyV3AwcTNMa3VRQU53TUlJQWNnQUNBQklBSWdBeUFFSUFVZ0IwRUlhaUFIUVJCcUVHSTJBaGdNRXdzZ0IwRVlhaUFDSUFRZ0NFRUNFRmtoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRUmRLY2tVRVFDQUZJQUEyQWdnTUFRc2dCQ0FCUVFSeU5nSUFDd3dTQ3lBSFFSaHFJQUlnQkNBSVFRSVFXU0VBQWtBZ0JDZ0NBQ0lCUVFSeElBQkJBRXh5SUFCQkRFcHlSUVJBSUFVZ0FEWUNDQXdCQ3lBRUlBRkJCSEkyQWdBTERCRUxJQWRCR0dvZ0FpQUVJQWhCQXhCWklRQUNRQ0FFS0FJQUlnRkJCSEVnQUVIdEFrcHlSUVJBSUFVZ0FEWUNIQXdCQ3lBRUlBRkJCSEkyQWdBTERCQUxJQWRCR0dvZ0FpQUVJQWhCQWhCWklRQUNRQ0FFS0FJQUlnRkJCSEVnQUVFTVNuSkZCRUFnQlNBQVFRRnJOZ0lRREFFTElBUWdBVUVFY2pZQ0FBc01Ed3NnQjBFWWFpQUNJQVFnQ0VFQ0VGa2hBQUpBSUFRb0FnQWlBVUVFY1NBQVFUdEtja1VFUUNBRklBQTJBZ1FNQVFzZ0JDQUJRUVJ5TmdJQUN3d09DeUFIUVJocUlRQWpBRUVRYXlJQkpBQWdBU0FDTmdJSUEwQUNRQ0FBSUFGQkNHb1FNVVVOQUNBSVFZREFBQ0FBRUI4UVJFVU5BQ0FBRUNJYURBRUxDeUFBSUFGQkNHb1FKZ1JBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBVUVRYWlRQURBMExJQWRCR0dvaEFRSkFJQUJCQ0dvZ0FDZ0NDQ2dDQ0JFQUFDSUFFQWxCQUNBQVFReHFFQWxyUmdSQUlBUWdCQ2dDQUVFRWNqWUNBQXdCQ3lBQklBSWdBQ0FBUVJocUlBZ2dCRUVBRUxRQklBQnJJZ0VnQlNnQ0NDSUFRUXhIY2tVRVFDQUZRUUEyQWdnTUFRc2dBVUVNUnlBQVFRdEtja1VFUUNBRklBQkJER28yQWdnTEN3d01DeUFIUVlUUkFDZ0FBRFlBRHlBSFFmM1FBQ2tBQURjRENDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFkQkNHb2dCMEVUYWhCaU5nSVlEQXNMSUFkQmpORUFMUUFBT2dBTUlBZEJpTkVBS0FBQU5nSUlJQWNnQUNBQklBSWdBeUFFSUFVZ0IwRUlhaUFIUVExcUVHSTJBaGdNQ2dzZ0IwRVlhaUFDSUFRZ0NFRUNFRmtoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRVHhLY2tVRVFDQUZJQUEyQWdBTUFRc2dCQ0FCUVFSeU5nSUFDd3dKQ3lBSFFxV1E2YW5TeWM2UzB3QTNBd2dnQnlBQUlBRWdBaUFESUFRZ0JTQUhRUWhxSUFkQkVHb1FZallDR0F3SUN5QUhRUmhxSUFJZ0JDQUlRUUVRV1NFQUFrQWdCQ2dDQUNJQlFRUnhJQUJCQmtweVJRUkFJQVVnQURZQ0dBd0JDeUFFSUFGQkJISTJBZ0FMREFjTElBQWdBU0FDSUFNZ0JDQUZJQUFvQWdBb0FoUVJCUUFNQndzZ0J5QUFJQUVnQWlBRElBUWdCU0FBUVFocUlBQW9BZ2dvQWhnUkFBQWlBQkFOSUFBUURTQUFFQWxxRUdJMkFoZ01CUXNnQlVFVWFpQUhRUmhxSUFJZ0JDQUlFTFVDREFRTElBZEJHR29nQWlBRUlBaEJCQkJaSVFBZ0JDMEFBRUVFY1VVRVFDQUZJQUJCN0E1ck5nSVVDd3dEQ3lBR1FTVkdEUUVMSUFRZ0JDZ0NBRUVFY2pZQ0FBd0JDeU1BUVJCcklnQWtBQ0FBSUFJMkFnaEJCaUVCQWtBQ1FDQUhRUmhxSWdJZ0FFRUlhaEFtRFFCQkJDRUJJQWdnQWhBZkVJZ0JRU1ZIRFFCQkFpRUJJQUlRSWlBQVFRaHFFQ1pGRFFFTElBUWdCQ2dDQUNBQmNqWUNBQXNnQUVFUWFpUUFDeUFIS0FJWUN5RUFJQWRCSUdva0FDQUFDMGNCQVg4akFFRVFheUlHSkFBZ0JpQUJOZ0lJSUFZZ0F4QVBJQVlRTWlFQklBWVFEaUFGUVJScUlBWkJDR29nQWlBRUlBRVF0UUlnQmlnQ0NDRUFJQVpCRUdva0FDQUFDMGtCQVg4akFFRVFheUlHSkFBZ0JpQUJOZ0lJSUFZZ0F4QVBJQVlRTWlFQklBWVFEaUFBSUFWQkVHb2dCa0VJYWlBQ0lBUWdBUkMyQWlBR0tBSUlJUUFnQmtFUWFpUUFJQUFMU1FFQmZ5TUFRUkJySWdZa0FDQUdJQUUyQWdnZ0JpQURFQThnQmhBeUlRRWdCaEFPSUFBZ0JVRVlhaUFHUVFocUlBSWdCQ0FCRUxjQ0lBWW9BZ2doQUNBR1FSQnFKQUFnQUFzdEFDQUFJQUVnQWlBRElBUWdCU0FBUVFocUlBQW9BZ2dvQWhRUkFBQWlBQkFOSUFBUURTQUFFQWxxRUdJTFB3RUJmeU1BUVJCcklnWWtBQ0FHUXFXUTZhblN5YzZTMHdBM0F3Z2dBQ0FCSUFJZ0F5QUVJQVVnQmtFSWFpQUdRUkJxSWdFUVlpRUFJQUVrQUNBQUM2NEJBUVYvSXdCQjBBRnJJZ0FrQUNBQVFmdlFBQzhBQURzQnpBRWdBRUgzMEFBb0FBQTJBc2dCRUJZaEJpQUFJQVEyQWdBZ0FFR3dBV29pQnlBSElBZEJGQ0FHSUFCQnlBRnFJQUFRTENJSWFpSUVJQUlRUHlFR0lBQkJFR29pQlNBQ0VBOGdCUkE3SVFrZ0JSQU9JQWtnQnlBRUlBVVFaQ0FCSUFVZ0NFRUNkQ0FGYWlJQklBWWdBR3RCQW5RZ0FHcEJzQVZySUFRZ0JrWWJJQUVnQWlBREVHTWhBU0FBUWRBQmFpUUFJQUVMZ0FRQkIzOGpBRUd3QTJzaUFDUUFJQUJDSlRjRHFBTWdBRUdvQTJwQkFYSkJqeDRnQWlnQ0JCQ3VBU0VJSUFBZ0FFR0FBMm8yQXZ3Q0VCWWhCZ0ovSUFnRVFDQUNLQUlJSVFjZ0FFRkFheUFGTndNQUlBQWdCRGNET0NBQUlBYzJBakFnQUVHQUEycEJIaUFHSUFCQnFBTnFJQUJCTUdvUUxBd0JDeUFBSUFRM0ExQWdBQ0FGTndOWUlBQkJnQU5xUVI0Z0JpQUFRYWdEYWlBQVFkQUFhaEFzQ3lFR0lBQkJOVFlDZ0FFZ0FFSHdBbXBCQUNBQVFZQUJhaEFlSVFrZ0FFR0FBMm9pQ2lFSEFrQWdCa0VlVGdSQUVCWWhCZ0ovSUFnRVFDQUNLQUlJSVFjZ0FDQUZOd01RSUFBZ0JEY0RDQ0FBSUFjMkFnQWdBRUg4QW1vZ0JpQUFRYWdEYWlBQUVGb01BUXNnQUNBRU53TWdJQUFnQlRjREtDQUFRZndDYWlBR0lBQkJxQU5xSUFCQklHb1FXZ3NpQmtGL1JnMEJJQWtnQUNnQy9BSVFKeUFBS0FMOEFpRUhDeUFISUFZZ0Iyb2lDeUFDRUQ4aERDQUFRVFUyQW9BQklBQkIrQUJxUVFBZ0FFR0FBV29RSGlFSEFrQWdBQ2dDL0FJZ0FFR0FBMnBHQkVBZ0FFR0FBV29oQmd3QkN5QUdRUU4wRUJraUJrVU5BU0FISUFZUUp5QUFLQUw4QWlFS0N5QUFRZWdBYWlJSUlBSVFEeUFLSUF3Z0N5QUdJQUJCOUFCcUlBQkI4QUJxSUFnUXVRSWdDQkFPSUFFZ0JpQUFLQUowSUFBb0FuQWdBaUFERUdNaEFTQUhFQjBnQ1JBZElBQkJzQU5xSkFBZ0FROExFQmNBQzl3REFRZC9Jd0JCZ0FOcklnQWtBQ0FBUWlVM0EvZ0NJQUJCK0FKcVFRRnlRWllmSUFJb0FnUVFyZ0VoQnlBQUlBQkIwQUpxTmdMTUFoQVdJUVVDZnlBSEJFQWdBaWdDQ0NFR0lBQWdCRGtES0NBQUlBWTJBaUFnQUVIUUFtcEJIaUFGSUFCQitBSnFJQUJCSUdvUUxBd0JDeUFBSUFRNUF6QWdBRUhRQW1wQkhpQUZJQUJCK0FKcUlBQkJNR29RTEFzaEJTQUFRVFUyQWxBZ0FFSEFBbXBCQUNBQVFkQUFhaEFlSVFnZ0FFSFFBbW9pQ1NFR0FrQWdCVUVlVGdSQUVCWWhCUUovSUFjRVFDQUNLQUlJSVFZZ0FDQUVPUU1JSUFBZ0JqWUNBQ0FBUWN3Q2FpQUZJQUJCK0FKcUlBQVFXZ3dCQ3lBQUlBUTVBeEFnQUVITUFtb2dCU0FBUWZnQ2FpQUFRUkJxRUZvTElnVkJmMFlOQVNBSUlBQW9Bc3dDRUNjZ0FDZ0N6QUloQmdzZ0JpQUZJQVpxSWdvZ0FoQS9JUXNnQUVFMU5nSlFJQUJCeUFCcVFRQWdBRUhRQUdvUUhpRUdBa0FnQUNnQ3pBSWdBRUhRQW1wR0JFQWdBRUhRQUdvaEJRd0JDeUFGUVFOMEVCa2lCVVVOQVNBR0lBVVFKeUFBS0FMTUFpRUpDeUFBUVRocUlnY2dBaEFQSUFrZ0N5QUtJQVVnQUVIRUFHb2dBRUZBYXlBSEVMa0NJQWNRRGlBQklBVWdBQ2dDUkNBQUtBSkFJQUlnQXhCaklRRWdCaEFkSUFnUUhTQUFRWUFEYWlRQUlBRVBDeEFYQUF1aUFRRUVmeU1BUVlBQ2F5SUFKQUFnQUVJbE53UDRBU0FBUWZnQmFpSUdRUUZ5UWRNY1FRQWdBaWdDQkJCdUVCWWhCeUFBSUFRM0F3QWdBRUhnQVdvaUJTQUZRUmdnQnlBR0lBQVFMQ0FGYWlJSElBSVFQeUVJSUFCQkVHb2lCaUFDRUE4Z0JTQUlJQWNnQUVFZ2FpSUZJQUJCSEdvZ0FFRVlhaUFHRUswQklBWVFEaUFCSUFVZ0FDZ0NIQ0FBS0FJWUlBSWdBeEJqSVFFZ0FFR0FBbW9rQUNBQkM3UUJBUU4vSXdCQm9BRnJJZ0FrQUNBQVFmWFFBQzhBQURzQm5BRWdBRUh4MEFBb0FBQTJBcGdCSUFCQm1BRnFJZ1ZCQVhKQjJoeEJBQ0FDS0FJRUVHNFFGaUVHSUFBZ0JEWUNBQ0FBUVlzQmFpSUVJQVJCRFNBR0lBVWdBQkFzSUFScUlnWWdBaEEvSVFjZ0FFRVFhaUlGSUFJUUR5QUVJQWNnQmlBQVFTQnFJZ1FnQUVFY2FpQUFRUmhxSUFVUXJRRWdCUkFPSUFFZ0JDQUFLQUljSUFBb0FoZ2dBaUFERUdNaEFTQUFRYUFCYWlRQUlBRUxvZ0VCQkg4akFFR0FBbXNpQUNRQUlBQkNKVGNEK0FFZ0FFSDRBV29pQmtFQmNrSFRIRUVCSUFJb0FnUVFiaEFXSVFjZ0FDQUVOd01BSUFCQjRBRnFJZ1VnQlVFWUlBY2dCaUFBRUN3Z0JXb2lCeUFDRUQ4aENDQUFRUkJxSWdZZ0FoQVBJQVVnQ0NBSElBQkJJR29pQlNBQVFSeHFJQUJCR0dvZ0JoQ3RBU0FHRUE0Z0FTQUZJQUFvQWh3Z0FDZ0NHQ0FDSUFNUVl5RUJJQUJCZ0FKcUpBQWdBUXUwQVFFRGZ5TUFRYUFCYXlJQUpBQWdBRUgxMEFBdkFBQTdBWndCSUFCQjhkQUFLQUFBTmdLWUFTQUFRWmdCYWlJRlFRRnlRZG9jUVFFZ0FpZ0NCQkJ1RUJZaEJpQUFJQVEyQWdBZ0FFR0xBV29pQkNBRVFRMGdCaUFGSUFBUUxDQUVhaUlHSUFJUVB5RUhJQUJCRUdvaUJTQUNFQThnQkNBSElBWWdBRUVnYWlJRUlBQkJIR29nQUVFWWFpQUZFSzBCSUFVUURpQUJJQVFnQUNnQ0hDQUFLQUlZSUFJZ0F4QmpJUUVnQUVHZ0FXb2tBQ0FCQzgwQkFRRi9Jd0JCTUdzaUJTUUFJQVVnQVRZQ0tBSkFJQUlvQWdSQkFYRkZCRUFnQUNBQklBSWdBeUFFSUFBb0FnQW9BaGdSQmdBaEFnd0JDeUFGUVJocUlnQWdBaEFQSUFBUWl3RWhBU0FBRUE0Q1FDQUVCRUFnQlVFWWFpQUJFRXNNQVFzZ0JVRVlhaUFCRUVvTElBVWdCVUVZYWhCQU5nSVFBMEFnQlNBRlFSaHFFRzAyQWdnZ0JVRVFhaUFGUVFocUVGc0VRQ0FGUVNocUlBVkJFR29pQUNnQ0FDZ0NBQkR6QWlBQUVKUUJEQUVGSUFVb0FpZ2hBaUFGUVJocUVBb2FDd3NMSUFWQk1Hb2tBQ0FDQzZRQkFRVi9Jd0JCNEFCcklnQWtBQ0FBUWZ2UUFDOEFBRHNCWENBQVFmZlFBQ2dBQURZQ1dCQVdJUVlnQUNBRU5nSUFJQUJCUUdzaUJ5QUhJQWRCRkNBR0lBQkIyQUJxSUFBUUxDSUlhaUlFSUFJUVB5RUdJQUJCRUdvaUJTQUNFQThnQlJBeUlRa2dCUkFPSUFrZ0J5QUVJQVVRY0NBQklBVWdCU0FJYWlJQklBWWdBR3NnQUdwQk1Hc2dCQ0FHUmhzZ0FTQUNJQU1RVmlFQklBQkI0QUJxSkFBZ0FRdUFCQUVIZnlNQVFZQUNheUlBSkFBZ0FFSWxOd1A0QVNBQVFmZ0Jha0VCY2tHUEhpQUNLQUlFRUs0QklRZ2dBQ0FBUWRBQmFqWUN6QUVRRmlFR0FuOGdDQVJBSUFJb0FnZ2hCeUFBUVVCcklBVTNBd0FnQUNBRU53TTRJQUFnQnpZQ01DQUFRZEFCYWtFZUlBWWdBRUg0QVdvZ0FFRXdhaEFzREFFTElBQWdCRGNEVUNBQUlBVTNBMWdnQUVIUUFXcEJIaUFHSUFCQitBRnFJQUJCMEFCcUVDd0xJUVlnQUVFMU5nS0FBU0FBUWNBQmFrRUFJQUJCZ0FGcUVCNGhDU0FBUWRBQmFpSUtJUWNDUUNBR1FSNU9CRUFRRmlFR0FuOGdDQVJBSUFJb0FnZ2hCeUFBSUFVM0F4QWdBQ0FFTndNSUlBQWdCellDQUNBQVFjd0JhaUFHSUFCQitBRnFJQUFRV2d3QkN5QUFJQVEzQXlBZ0FDQUZOd01vSUFCQnpBRnFJQVlnQUVINEFXb2dBRUVnYWhCYUN5SUdRWDlHRFFFZ0NTQUFLQUxNQVJBbklBQW9Bc3dCSVFjTElBY2dCaUFIYWlJTElBSVFQeUVNSUFCQk5UWUNnQUVnQUVINEFHcEJBQ0FBUVlBQmFoQWVJUWNDUUNBQUtBTE1BU0FBUWRBQmFrWUVRQ0FBUVlBQmFpRUdEQUVMSUFaQkFYUVFHU0lHUlEwQklBY2dCaEFuSUFBb0Fzd0JJUW9MSUFCQjZBQnFJZ2dnQWhBUElBb2dEQ0FMSUFZZ0FFSDBBR29nQUVId0FHb2dDQkM4QWlBSUVBNGdBU0FHSUFBb0FuUWdBQ2dDY0NBQ0lBTVFWaUVCSUFjUUhTQUpFQjBnQUVHQUFtb2tBQ0FCRHdzUUZ3QUwzQU1CQjM4akFFSFFBV3NpQUNRQUlBQkNKVGNEeUFFZ0FFSElBV3BCQVhKQmxoOGdBaWdDQkJDdUFTRUhJQUFnQUVHZ0FXbzJBcHdCRUJZaEJRSi9JQWNFUUNBQ0tBSUlJUVlnQUNBRU9RTW9JQUFnQmpZQ0lDQUFRYUFCYWtFZUlBVWdBRUhJQVdvZ0FFRWdhaEFzREFFTElBQWdCRGtETUNBQVFhQUJha0VlSUFVZ0FFSElBV29nQUVFd2FoQXNDeUVGSUFCQk5UWUNVQ0FBUVpBQmFrRUFJQUJCMEFCcUVCNGhDQ0FBUWFBQmFpSUpJUVlDUUNBRlFSNU9CRUFRRmlFRkFuOGdCd1JBSUFJb0FnZ2hCaUFBSUFRNUF3Z2dBQ0FHTmdJQUlBQkJuQUZxSUFVZ0FFSElBV29nQUJCYURBRUxJQUFnQkRrREVDQUFRWndCYWlBRklBQkJ5QUZxSUFCQkVHb1FXZ3NpQlVGL1JnMEJJQWdnQUNnQ25BRVFKeUFBS0FLY0FTRUdDeUFHSUFVZ0Jtb2lDaUFDRUQ4aEN5QUFRVFUyQWxBZ0FFSElBR3BCQUNBQVFkQUFhaEFlSVFZQ1FDQUFLQUtjQVNBQVFhQUJha1lFUUNBQVFkQUFhaUVGREFFTElBVkJBWFFRR1NJRlJRMEJJQVlnQlJBbklBQW9BcHdCSVFrTElBQkJPR29pQnlBQ0VBOGdDU0FMSUFvZ0JTQUFRY1FBYWlBQVFVQnJJQWNRdkFJZ0J4QU9JQUVnQlNBQUtBSkVJQUFvQWtBZ0FpQURFRlloQVNBR0VCMGdDQkFkSUFCQjBBRnFKQUFnQVE4TEVCY0FDMHdCQVg5QnRJRUJRYkNCQVNBQ0d5QUJOZ0lBSUFGQkFFb0VRRUdRZ1FGQjhJQUJJQUliSVFOQkFDRUNBMEFnQWlBRGFpQUFJQUpxTFFBQU9nQUFJQUpCQVdvaUFpQUJSdzBBQ3dzTG9RRUJCSDhqQUVId0FHc2lBQ1FBSUFCQ0pUY0RhQ0FBUWVnQWFpSUdRUUZ5UWRNY1FRQWdBaWdDQkJCdUVCWWhCeUFBSUFRM0F3QWdBRUhRQUdvaUJTQUZRUmdnQnlBR0lBQVFMQ0FGYWlJSElBSVFQeUVJSUFCQkVHb2lCaUFDRUE4Z0JTQUlJQWNnQUVFZ2FpSUZJQUJCSEdvZ0FFRVlhaUFHRUs4QklBWVFEaUFCSUFVZ0FDZ0NIQ0FBS0FJWUlBSWdBeEJXSVFFZ0FFSHdBR29rQUNBQkM3RUJBUU4vSXdCQjBBQnJJZ0FrQUNBQVFmWFFBQzhBQURzQlRDQUFRZkhRQUNnQUFEWUNTQ0FBUWNnQWFpSUZRUUZ5UWRvY1FRQWdBaWdDQkJCdUVCWWhCaUFBSUFRMkFnQWdBRUU3YWlJRUlBUkJEU0FHSUFVZ0FCQXNJQVJxSWdZZ0FoQS9JUWNnQUVFUWFpSUZJQUlRRHlBRUlBY2dCaUFBUVNCcUlnUWdBRUVjYWlBQVFSaHFJQVVRcndFZ0JSQU9JQUVnQkNBQUtBSWNJQUFvQWhnZ0FpQURFRlloQVNBQVFkQUFhaVFBSUFFTG9RRUJCSDhqQUVId0FHc2lBQ1FBSUFCQ0pUY0RhQ0FBUWVnQWFpSUdRUUZ5UWRNY1FRRWdBaWdDQkJCdUVCWWhCeUFBSUFRM0F3QWdBRUhRQUdvaUJTQUZRUmdnQnlBR0lBQVFMQ0FGYWlJSElBSVFQeUVJSUFCQkVHb2lCaUFDRUE4Z0JTQUlJQWNnQUVFZ2FpSUZJQUJCSEdvZ0FFRVlhaUFHRUs4QklBWVFEaUFCSUFVZ0FDZ0NIQ0FBS0FJWUlBSWdBeEJXSVFFZ0FFSHdBR29rQUNBQkM3RUJBUU4vSXdCQjBBQnJJZ0FrQUNBQVFmWFFBQzhBQURzQlRDQUFRZkhRQUNnQUFEWUNTQ0FBUWNnQWFpSUZRUUZ5UWRvY1FRRWdBaWdDQkJCdUVCWWhCaUFBSUFRMkFnQWdBRUU3YWlJRUlBUkJEU0FHSUFVZ0FCQXNJQVJxSWdZZ0FoQS9JUWNnQUVFUWFpSUZJQUlRRHlBRUlBY2dCaUFBUVNCcUlnUWdBRUVjYWlBQVFSaHFJQVVRcndFZ0JSQU9JQUVnQkNBQUtBSWNJQUFvQWhnZ0FpQURFRlloQVNBQVFkQUFhaVFBSUFFTHpRRUJBWDhqQUVFd2F5SUZKQUFnQlNBQk5nSW9Ba0FnQWlnQ0JFRUJjVVVFUUNBQUlBRWdBaUFESUFRZ0FDZ0NBQ2dDR0JFR0FDRUNEQUVMSUFWQkdHb2lBQ0FDRUE4Z0FCQ09BU0VCSUFBUURnSkFJQVFFUUNBRlFSaHFJQUVRU3d3QkN5QUZRUmhxSUFFUVNnc2dCU0FGUVJocUVFQTJBaEFEUUNBRklBVkJHR29RYnpZQ0NDQUZRUkJxSUFWQkNHb1FXd1JBSUFWQktHb2dCVUVRYWlJQUtBSUFMQUFBRVBRQ0lBQVFsZ0VNQVFVZ0JTZ0NLQ0VDSUFWQkdHb1FDaG9MQ3dzZ0JVRXdhaVFBSUFJTEZnQkJrSUVCUWJTQkFTZ0NBQ0FDSUFBZ0FSRGxBUXZ5QWdFQmZ5TUFRZUFDYXlJQUpBQWdBQ0FDTmdMUUFpQUFJQUUyQXRnQ0lBQkIwQUZxRUJFaEJpQUFRUkJxSWdJZ0F4QVBJQUlRTzBIUTBBQkI2dEFBSUFCQjRBRnFFR1FnQWhBT0lBQkJ3QUZxRUJFaUF5QURFQk1RRENBQUlBTkJBQkFMSWdFMkFyd0JJQUFnQWpZQ0RDQUFRUUEyQWdnRFFBSkFJQUJCMkFKcUlBQkIwQUpxRURaRkRRQWdBQ2dDdkFFZ0F4QUpJQUZxUmdSQUlBTVFDU0VDSUFNZ0F4QUpRUUYwRUF3Z0F5QURFQk1RRENBQUlBSWdBMEVBRUFzaUFXbzJBcndCQ3lBQVFkZ0NhaEFoUVJBZ0FTQUFRYndCYWlBQVFRaHFRUUFnQmlBQVFSQnFJQUJCREdvZ0FFSGdBV29RaWdFTkFDQUFRZGdDYWhBbEdnd0JDd3NnQXlBQUtBSzhBU0FCYXhBTUlBTVFEU0VDRUJZaEFTQUFJQVUyQWdBZ0FpQUJJQUFRdndKQkFVY0VRQ0FFUVFRMkFnQUxJQUJCMkFKcUlBQkIwQUpxRUNnRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFBb0F0Z0NJUUVnQXhBS0dpQUdFQW9hSUFCQjRBSnFKQUFnQVF2U0F3RUJmaU1BUVlBRGF5SUFKQUFnQUNBQ05nTHdBaUFBSUFFMkF2Z0NJQUJCMkFGcUlBTWdBRUh3QVdvZ0FFSHNBV29nQUVIb0FXb1ExQUVnQUVISUFXb1FFU0lCSUFFUUV4QU1JQUFnQVVFQUVBc2lBallDeEFFZ0FDQUFRU0JxTmdJY0lBQkJBRFlDR0NBQVFRRTZBQmNnQUVIRkFEb0FGZ05BQWtBZ0FFSDRBbW9nQUVId0Ftb1FOa1VOQUNBQUtBTEVBU0FCRUFrZ0FtcEdCRUFnQVJBSklRTWdBU0FCRUFsQkFYUVFEQ0FCSUFFUUV4QU1JQUFnQXlBQlFRQVFDeUlDYWpZQ3hBRUxJQUJCK0FKcUVDRWdBRUVYYWlBQVFSWnFJQUlnQUVIRUFXb2dBQ2dDN0FFZ0FDZ0M2QUVnQUVIWUFXb2dBRUVnYWlBQVFSeHFJQUJCR0dvZ0FFSHdBV29RMHdFTkFDQUFRZmdDYWhBbEdnd0JDd3NDUUNBQVFkZ0JhaEFKUlEwQUlBQXRBQmRGRFFBZ0FDZ0NIQ0lESUFCQklHcHJRWjhCU2cwQUlBQWdBMEVFYWpZQ0hDQURJQUFvQWhnMkFnQUxJQUFnQWlBQUtBTEVBU0FFRU1BQ0lBQXBBd0FoQmlBRklBQXBBd2czQXdnZ0JTQUdOd01BSUFCQjJBRnFJQUJCSUdvZ0FDZ0NIQ0FFRUMwZ0FFSDRBbW9nQUVId0Ftb1FLQVJBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDK0FJaEFpQUJFQW9hSUFCQjJBRnFFQW9hSUFCQmdBTnFKQUFnQWd1N0F3QWpBRUh3QW1zaUFDUUFJQUFnQWpZQzRBSWdBQ0FCTmdMb0FpQUFRY2dCYWlBRElBQkI0QUZxSUFCQjNBRnFJQUJCMkFGcUVOUUJJQUJCdUFGcUVCRWlBU0FCRUJNUURDQUFJQUZCQUJBTElnSTJBclFCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dnQUVFQk9nQUhJQUJCeFFBNkFBWURRQUpBSUFCQjZBSnFJQUJCNEFKcUVEWkZEUUFnQUNnQ3RBRWdBUkFKSUFKcVJnUkFJQUVRQ1NFRElBRWdBUkFKUVFGMEVBd2dBU0FCRUJNUURDQUFJQU1nQVVFQUVBc2lBbW8yQXJRQkN5QUFRZWdDYWhBaElBQkJCMm9nQUVFR2FpQUNJQUJCdEFGcUlBQW9BdHdCSUFBb0F0Z0JJQUJCeUFGcUlBQkJFR29nQUVFTWFpQUFRUWhxSUFCQjRBRnFFTk1CRFFBZ0FFSG9BbW9RSlJvTUFRc0xBa0FnQUVISUFXb1FDVVVOQUNBQUxRQUhSUTBBSUFBb0Fnd2lBeUFBUVJCcWEwR2ZBVW9OQUNBQUlBTkJCR28yQWd3Z0F5QUFLQUlJTmdJQUN5QUZJQUlnQUNnQ3RBRWdCQkRCQWprREFDQUFRY2dCYWlBQVFSQnFJQUFvQWd3Z0JCQXRJQUJCNkFKcUlBQkI0QUpxRUNnRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFBb0F1Z0NJUUlnQVJBS0dpQUFRY2dCYWhBS0dpQUFRZkFDYWlRQUlBSUx1d01BSXdCQjhBSnJJZ0FrQUNBQUlBSTJBdUFDSUFBZ0FUWUM2QUlnQUVISUFXb2dBeUFBUWVBQmFpQUFRZHdCYWlBQVFkZ0JhaERVQVNBQVFiZ0JhaEFSSWdFZ0FSQVRFQXdnQUNBQlFRQVFDeUlDTmdLMEFTQUFJQUJCRUdvMkFnd2dBRUVBTmdJSUlBQkJBVG9BQnlBQVFjVUFPZ0FHQTBBQ1FDQUFRZWdDYWlBQVFlQUNhaEEyUlEwQUlBQW9BclFCSUFFUUNTQUNha1lFUUNBQkVBa2hBeUFCSUFFUUNVRUJkQkFNSUFFZ0FSQVRFQXdnQUNBRElBRkJBQkFMSWdKcU5nSzBBUXNnQUVIb0Ftb1FJU0FBUVFkcUlBQkJCbW9nQWlBQVFiUUJhaUFBS0FMY0FTQUFLQUxZQVNBQVFjZ0JhaUFBUVJCcUlBQkJER29nQUVFSWFpQUFRZUFCYWhEVEFRMEFJQUJCNkFKcUVDVWFEQUVMQ3dKQUlBQkJ5QUZxRUFsRkRRQWdBQzBBQjBVTkFDQUFLQUlNSWdNZ0FFRVFhbXRCbndGS0RRQWdBQ0FEUVFScU5nSU1JQU1nQUNnQ0NEWUNBQXNnQlNBQ0lBQW9BclFCSUFRUXdnSTRBZ0FnQUVISUFXb2dBRUVRYWlBQUtBSU1JQVFRTFNBQVFlZ0NhaUFBUWVBQ2FoQW9CRUFnQkNBRUtBSUFRUUp5TmdJQUN5QUFLQUxvQWlFQ0lBRVFDaG9nQUVISUFXb1FDaG9nQUVId0Ftb2tBQ0FDQzUwREFRSi9Jd0JCNEFKcklnQWtBQ0FBSUFJMkF0QUNJQUFnQVRZQzJBSWdBeEJjSVFZZ0F5QUFRZUFCYWhDWUFTRUhJQUJCMEFGcUlBTWdBRUhNQW1vUWx3RWdBRUhBQVdvUUVTSUJJQUVRRXhBTUlBQWdBVUVBRUFzaUFqWUN2QUVnQUNBQVFSQnFOZ0lNSUFCQkFEWUNDQU5BQWtBZ0FFSFlBbW9nQUVIUUFtb1FOa1VOQUNBQUtBSzhBU0FCRUFrZ0FtcEdCRUFnQVJBSklRTWdBU0FCRUFsQkFYUVFEQ0FCSUFFUUV4QU1JQUFnQXlBQlFRQVFDeUlDYWpZQ3ZBRUxJQUJCMkFKcUVDRWdCaUFDSUFCQnZBRnFJQUJCQ0dvZ0FDZ0N6QUlnQUVIUUFXb2dBRUVRYWlBQVFReHFJQWNRaWdFTkFDQUFRZGdDYWhBbEdnd0JDd3NDUUNBQVFkQUJhaEFKUlEwQUlBQW9BZ3dpQXlBQVFSQnFhMEdmQVVvTkFDQUFJQU5CQkdvMkFnd2dBeUFBS0FJSU5nSUFDeUFGSUFJZ0FDZ0N2QUVnQkNBR0VNTUNOd01BSUFCQjBBRnFJQUJCRUdvZ0FDZ0NEQ0FFRUMwZ0FFSFlBbW9nQUVIUUFtb1FLQVJBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDMkFJaEFpQUJFQW9hSUFCQjBBRnFFQW9hSUFCQjRBSnFKQUFnQWd1ZEF3RUNmeU1BUWVBQ2F5SUFKQUFnQUNBQ05nTFFBaUFBSUFFMkF0Z0NJQU1RWENFR0lBTWdBRUhnQVdvUW1BRWhCeUFBUWRBQmFpQURJQUJCekFKcUVKY0JJQUJCd0FGcUVCRWlBU0FCRUJNUURDQUFJQUZCQUJBTElnSTJBcndCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dEUUFKQUlBQkIyQUpxSUFCQjBBSnFFRFpGRFFBZ0FDZ0N2QUVnQVJBSklBSnFSZ1JBSUFFUUNTRURJQUVnQVJBSlFRRjBFQXdnQVNBQkVCTVFEQ0FBSUFNZ0FVRUFFQXNpQW1vMkFyd0JDeUFBUWRnQ2FoQWhJQVlnQWlBQVFid0JhaUFBUVFocUlBQW9Bc3dDSUFCQjBBRnFJQUJCRUdvZ0FFRU1haUFIRUlvQkRRQWdBRUhZQW1vUUpSb01BUXNMQWtBZ0FFSFFBV29RQ1VVTkFDQUFLQUlNSWdNZ0FFRVFhbXRCbndGS0RRQWdBQ0FEUVFScU5nSU1JQU1nQUNnQ0NEWUNBQXNnQlNBQ0lBQW9BcndCSUFRZ0JoREdBanNCQUNBQVFkQUJhaUFBUVJCcUlBQW9BZ3dnQkJBdElBQkIyQUpxSUFCQjBBSnFFQ2dFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQXRnQ0lRSWdBUkFLR2lBQVFkQUJhaEFLR2lBQVFlQUNhaVFBSUFJTG5RTUJBbjhqQUVIZ0Ftc2lBQ1FBSUFBZ0FqWUMwQUlnQUNBQk5nTFlBaUFERUZ3aEJpQURJQUJCNEFGcUVKZ0JJUWNnQUVIUUFXb2dBeUFBUWN3Q2FoQ1hBU0FBUWNBQmFoQVJJZ0VnQVJBVEVBd2dBQ0FCUVFBUUN5SUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJQTBBQ1FDQUFRZGdDYWlBQVFkQUNhaEEyUlEwQUlBQW9BcndCSUFFUUNTQUNha1lFUUNBQkVBa2hBeUFCSUFFUUNVRUJkQkFNSUFFZ0FSQVRFQXdnQUNBRElBRkJBQkFMSWdKcU5nSzhBUXNnQUVIWUFtb1FJU0FHSUFJZ0FFRzhBV29nQUVFSWFpQUFLQUxNQWlBQVFkQUJhaUFBUVJCcUlBQkJER29nQnhDS0FRMEFJQUJCMkFKcUVDVWFEQUVMQ3dKQUlBQkIwQUZxRUFsRkRRQWdBQ2dDRENJRElBQkJFR3ByUVo4QlNnMEFJQUFnQTBFRWFqWUNEQ0FESUFBb0FnZzJBZ0FMSUFVZ0FpQUFLQUs4QVNBRUlBWVF4d0kzQXdBZ0FFSFFBV29nQUVFUWFpQUFLQUlNSUFRUUxTQUFRZGdDYWlBQVFkQUNhaEFvQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FMWUFpRUNJQUVRQ2hvZ0FFSFFBV29RQ2hvZ0FFSGdBbW9rQUNBQ0M1MERBUUovSXdCQjRBSnJJZ0FrQUNBQUlBSTJBdEFDSUFBZ0FUWUMyQUlnQXhCY0lRWWdBeUFBUWVBQmFoQ1lBU0VISUFCQjBBRnFJQU1nQUVITUFtb1Fsd0VnQUVIQUFXb1FFU0lCSUFFUUV4QU1JQUFnQVVFQUVBc2lBallDdkFFZ0FDQUFRUkJxTmdJTUlBQkJBRFlDQ0FOQUFrQWdBRUhZQW1vZ0FFSFFBbW9RTmtVTkFDQUFLQUs4QVNBQkVBa2dBbXBHQkVBZ0FSQUpJUU1nQVNBQkVBbEJBWFFRRENBQklBRVFFeEFNSUFBZ0F5QUJRUUFRQ3lJQ2FqWUN2QUVMSUFCQjJBSnFFQ0VnQmlBQ0lBQkJ2QUZxSUFCQkNHb2dBQ2dDekFJZ0FFSFFBV29nQUVFUWFpQUFRUXhxSUFjUWlnRU5BQ0FBUWRnQ2FoQWxHZ3dCQ3dzQ1FDQUFRZEFCYWhBSlJRMEFJQUFvQWd3aUF5QUFRUkJxYTBHZkFVb05BQ0FBSUFOQkJHbzJBZ3dnQXlBQUtBSUlOZ0lBQ3lBRklBSWdBQ2dDdkFFZ0JDQUdFTWtDTmdJQUlBQkIwQUZxSUFCQkVHb2dBQ2dDRENBRUVDMGdBRUhZQW1vZ0FFSFFBbW9RS0FSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQUNnQzJBSWhBaUFCRUFvYUlBQkIwQUZxRUFvYUlBQkI0QUpxSkFBZ0FndnNBUUVCZnlNQVFTQnJJZ1lrQUNBR0lBRTJBaGdDUUNBREtBSUVRUUZ4UlFSQUlBWkJmellDQUNBR0lBQWdBU0FDSUFNZ0JDQUdJQUFvQWdBb0FoQVJCUUFpQVRZQ0dBSkFBa0FDUUNBR0tBSUFEZ0lBQVFJTElBVkJBRG9BQUF3REN5QUZRUUU2QUFBTUFnc2dCVUVCT2dBQUlBUkJCRFlDQUF3QkN5QUdJQU1RRHlBR0VEc2hBU0FHRUE0Z0JpQURFQThnQmhDTEFTRUFJQVlRRGlBR0lBQVFTeUFHUVF4eUlBQVFTaUFGSUFaQkdHb2lBeUFDSUFZZ0F5QUJJQVJCQVJDeUFTQUdSam9BQUNBR0tBSVlJUUVEUUNBRFFReHJFQW9pQXlBR1J3MEFDd3NnQmtFZ2FpUUFJQUVMMWhFQkQzOGpBRUhBQW1zaUJpUUFJQVlnQVNBQ0VPY0NOZ0tZQWtIUTlhblNmRUc5OVlyS2ZTQUVHeUVQUWVTUWwvTjRRZEQxcWRKOElBSkJBWFJCZFhJZ0FrRUZjMnBCRDBZYklRSWdBRVVoRUVHdHRxRFNmU0VBQTBBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUFpQVVHc3RxRFNmVXdFUUNBQlFkNnp0dFI3VEFSQUlBRkI2b25QbjNsTUJFQWdBVUdNa2FYdGVFWU5CeUFCUWVTUWwvTjRSdzBPUWNURStMSURJUUJCQUNFTkRBNExJQUZCNjRuUG4zbEdEUXNnQVVHQ3hPV2hlVVlOQWlBQlFlRGV2NjE2UncwTklBWW9BclFDUVpDQkFXb2dCaTBBbndJNkFBQkJqSkdsN1hnaEFBd05DeUFCUWNHSnZOMThUQVJBSUFGQjM3TzIxSHRHRFFrZ0FVR2NzZUdtZkVZTkNDQUJRZEQxcWRKOFJ3ME5RZVNRbC9ONFFjN1R4S29GSUFZb0FyQUNRUkJHRzBITzA4U3FCU0FHTFFDZEFrRUJjUnNoQUF3TkN5QUJRY0tKdk4xOFJnMEdJQUZCaU1EeTZueEdEUWtnQVVHOTlZcktmVWNORENBQ0lRQU1EQXNDUUFKQUFrQWdBVUhoeXR2NkEwd0VRQ0FCUWRMTXpjd0FUQVJBSUFGQnJiYWcwbjFHRFFJZ0FVSEJnT2FnZjBZTkNDQUJRZE9PMGgxSERSQWdCaUFRT2dDZUFpQUdJQWMyQXJBQ0lBWWdDallDckFKQjA4ek56QUJCZ3NUbG9Ya2dCaTBBbmdKQkFYRWJJUUFNRUFzZ0FVSFR6TTNNQUVZTkF5QUJRY1RFK0xJRFJnMEZJQUZCc3M2c3h3SkhEUThnQmtIQUFtb2tBQThMSUFGQnQvbml0UVpNQkVBZ0R5RUFJQUZCNHNyYitnTkdEUThnQVVHRmhKYldCRVlOQmlBQklRQWdBVUhPMDhTcUJVY05EeUFHSUFaQm9BRnFJZ0EyQXFBQ0lBWW9BcUFDR2lBQUlBWW9BcXdDRUZRYVFjS0p2TjE4SVFCQkFDRU9EQThMSUFGQnVQbml0UVpHRFEwZ0FVRzh4cFhYQmtZTkFTQUJRZVNwbytvSFJ3ME9JQVlvQXJnQ1FmQ0FBV29nQmlnQ0REb0FBRUc0K2VLMUJpRUFEQTRMUVFBaEJ5QUdJQVJCQUVvNkFKMENRYnpHbGRjR1FkT08waDBnQmkwQW5RSkJBWEViSVFBZ0JpZ0NtQUloQ2d3TkN5QUdRWWdDYWlBR0tBS1lBaEJVSWhFaENrRUFJUWhCQUNFSkl3QkJFR3NpQVNRQUlBb1FDU0VMSXdCQkVHc2lCeVFBSUFaQitBRnFJZ0JDQURjQ0FDQUhRUUEyQWd3Z0FFRUlhaUFIUVF4cUVNOEJJQWRCRUdva0FBSkFJQXRGRFFBRFFBSkFJQW9nQ1JBTExRQUFRVDFHRFFBZ0NpQUpFQXN0QUFBaUIwRXJSaUFIUVNCeVFlRUFhMEVhU1FSL1FRRUZJQWNRUlVFQVJ3dEJBRWR5SUFkQkwwWnlSUTBBSUF0QkFXc2hDeUFCUVF4cUlBaHFJQW9nQ1JBTExRQUFPZ0FBUVFBaEJ5QUlRUUZxSWdoQkJFWUVRQU5BSUFGQkRHb2dCMm9pQ0NBSUxBQUFFUFFCT2dBQUlBZEJBV29pQjBFRVJ3MEFDeUFCSUFFdEFBOGdBUzBBRGlJSFFRWjBham9BQ3lBQklBRXRBQTBpQ0VFRWRrRURjU0FCTFFBTVFRSjBjam9BQ1NBQklBZEJBblpCRDNFZ0NFRUVkSEk2QUFwQkFDRUlRUUFoQndOQUlBQWdBVUVKYWlBSGFoRHZBaUFIUVFGcUlnZEJBMGNOQUFzTElBbEJBV29oQ1NBTERRRUxDeUFJUlEwQUlBaEJBMHdFUUNBQlFReHFJQWhxUVFCQkJDQUlheEJHR2d0QkFDRUhBMEFnQVVFTWFpQUhhaUlKSUFrc0FBQVE5QUU2QUFBZ0IwRUJhaUlIUVFSSERRQUxJQUVnQVMwQUR5QUJMUUFPSWdkQkJuUnFPZ0FMSUFFZ0FTMEFEU0lKUVFSMlFRTnhJQUV0QUF4QkFuUnlPZ0FKSUFFZ0IwRUNka0VQY1NBSlFRUjBjam9BQ2lBSVFRSklEUUFnQ0VFQmF5RUlRUUFoQndOQUlBQWdBVUVKYWlBSGFoRHZBaUFIUVFGcUlnY2dDRWNOQUFzTElBRkJFR29rQUNBQUVJa0JJUklnQUNnQ0FDRU1JQVpCbng4b0FBQTJBdkFCSUFaQmx4OHBBQUEzQStnQklBWkNBRGNEMkFFZ0JrSUFOd1BRQVNBR1FnQTNBOGdCSUFaQ0FEY0R3QUVnQmtJQU53TzRBU0FHUWdBM0E3QUJJQUFRaVFFaEN5QUdRYkFCYWlFS0l3QkJNR3NpQVNRQUlBRkJJR29oQ0NBRklBUVF2UUlpQndSQUlBaENBRGNBQUNBSVFnQTNBQWdnQnlBSUlBZ1FwZ0VMSUFaQnZ3SnFJUk1nQmtIUUFXb2hGQ0FIQkg4akFFRVFheUlKSkFBZ0FVRVFhaUlJSUFZcEFPZ0JOd0FBSUFnZ0JpZ0E4QUUyQUFnZ0NFR0FnSUFJTmdBTUlBbEJFR29rQUNNQVFSQnJJZ2trQUNBTEJFQWdDU0FJS1FBQU53TUFJQWtnQ0NrQUNEY0RDQ0FKRU9rQklBY2dDU0FNSUFzZ0NoQ0RBZ3NnQ1VFUWFpUUFJd0JCRUdzaUNTUUFJQUZDQURjQUFDQUJRZ0EzQUFnZ0FVRWdhaUlNSUJOQkFDQUJFTDhCSUF3Z0NpQUxJQUVRdndFZ0NVSUFFTzBCSUFsQkNISWdDMEVEZEswUTdRRWdEQ0FKUVJBZ0FSQy9BU0FKUVJCcUpBQWdCeUFJSUFGQkVDQVVFSU1DSUFjUUVFRUFCVUYvQ3hvZ0FVRXdhaVFBSUFBUTZRSWdBQ2dDQUFSQUlBQW9BZ1FpQVNBQUtBSUFJZ2RIQkVBRFFDQUFFRU1hSUFjZ0FVRUJheUlCUncwQUN3c2dBQ0FITmdJRUlBQVFReG9nQUNnQ0FDRUJJQUFRaFFFYUlBRVFFQXNnRVJBS0drRWdRUkFnRWtFd1Joc2hCMEhUanRJZElRQU1EQXRCc0lFQklBTTJBZ0JCNHNyYitnTWhBQXdMQzBHMGdRRWdBellDQUVIaXl0djZBeUVBREFvTElBWWdEVFlDdEFKQmhZU1cxZ1JCMzdPMjFIc2dCaWdDdEFJZ0EwZ2JJUUFNQ1FzZ0JpQUdLQUtzQWlBR0tBSzBBbW90QUFBNkFKOENJQVl0QUo4Q0drSEJnT2FnZjBIZzNyK3RlaUFHTFFDZUFrRUJjUnNoQUF3SUN5QUdLQUswQWtId2dBRnFJQVl0QUo4Q09nQUFRWXlScGUxNElRQU1Cd3NnQmlnQ3RBSkJBV29oRFVIRXhQaXlBeUVBREFZTElBWWdEallDdUFKQmlNRHk2bnhCbkxIaHBud2dCaWdDdUFJZ0EwZ2JJUUFNQlFzZ0JrR2dBV29RQ2hvZ0JpZ0NvQUlhQzBHeXpxekhBaUVBREFNTElBWWdCa0VRYWlJQU5nS2tBaUFHS0FLa0Fob2dBQkRYQWhvZ0JpQUdRUXhxSWdnMkFxZ0NJQVlvQXFnQ0dpQUdLQUtrQWtFSWFoRE1BaUVKSUFaQnNBRnFJZ0VnQmtHZ0FXb2dCaWdDdUFKQkFYUVF5Z0lnQ1NBQkVNZ0NJQUVRQ2hvZ0FDQUlFUGtDUWVTcG8rb0hRZXVKejU5NUlBWXRBSjRDUVFGeEd5RUFEQUlMSUFZb0FyZ0NRWkNCQVdvZ0JpZ0NERG9BQUVHNCtlSzFCaUVBREFFTElBWW9BcWdDR2lBR1FSQnFFSXdCR2lBR0tBS2tBaG9nQmlnQ3VBSkJBV29oRGtIQ2liemRmQ0VBREFBTEFBdnlBZ0VCZnlNQVFaQUNheUlBSkFBZ0FDQUNOZ0tBQWlBQUlBRTJBb2dDSUFCQjBBRnFFQkVoQmlBQVFSQnFJZ0lnQXhBUElBSVFNa0hRMEFCQjZ0QUFJQUJCNEFGcUVIQWdBaEFPSUFCQndBRnFFQkVpQXlBREVCTVFEQ0FBSUFOQkFCQUxJZ0UyQXJ3QklBQWdBallDRENBQVFRQTJBZ2dEUUFKQUlBQkJpQUpxSUFCQmdBSnFFREZGRFFBZ0FDZ0N2QUVnQXhBSklBRnFSZ1JBSUFNUUNTRUNJQU1nQXhBSlFRRjBFQXdnQXlBREVCTVFEQ0FBSUFJZ0EwRUFFQXNpQVdvMkFyd0JDeUFBUVlnQ2FoQWZRUkFnQVNBQVFid0JhaUFBUVFocVFRQWdCaUFBUVJCcUlBQkJER29nQUVIZ0FXb1FqUUVOQUNBQVFZZ0NhaEFpR2d3QkN3c2dBeUFBS0FLOEFTQUJheEFNSUFNUURTRUNFQlloQVNBQUlBVTJBZ0FnQWlBQklBQVF2d0pCQVVjRVFDQUVRUVEyQWdBTElBQkJpQUpxSUFCQmdBSnFFQ1lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQW9nQ0lRRWdBeEFLR2lBR0VBb2FJQUJCa0FKcUpBQWdBUXZTQXdFQmZpTUFRYUFDYXlJQUpBQWdBQ0FDTmdLUUFpQUFJQUUyQXBnQ0lBQkI0QUZxSUFNZ0FFSHdBV29nQUVIdkFXb2dBRUh1QVdvUTF3RWdBRUhRQVdvUUVTSUJJQUVRRXhBTUlBQWdBVUVBRUFzaUFqWUN6QUVnQUNBQVFTQnFOZ0ljSUFCQkFEWUNHQ0FBUVFFNkFCY2dBRUhGQURvQUZnTkFBa0FnQUVHWUFtb2dBRUdRQW1vUU1VVU5BQ0FBS0FMTUFTQUJFQWtnQW1wR0JFQWdBUkFKSVFNZ0FTQUJFQWxCQVhRUURDQUJJQUVRRXhBTUlBQWdBeUFCUVFBUUN5SUNhallDekFFTElBQkJtQUpxRUI4Z0FFRVhhaUFBUVJacUlBSWdBRUhNQVdvZ0FDd0E3d0VnQUN3QTdnRWdBRUhnQVdvZ0FFRWdhaUFBUVJ4cUlBQkJHR29nQUVId0FXb1ExZ0VOQUNBQVFaZ0NhaEFpR2d3QkN3c0NRQ0FBUWVBQmFoQUpSUTBBSUFBdEFCZEZEUUFnQUNnQ0hDSURJQUJCSUdwclFaOEJTZzBBSUFBZ0EwRUVhallDSENBRElBQW9BaGcyQWdBTElBQWdBaUFBS0FMTUFTQUVFTUFDSUFBcEF3QWhCaUFGSUFBcEF3ZzNBd2dnQlNBR053TUFJQUJCNEFGcUlBQkJJR29nQUNnQ0hDQUVFQzBnQUVHWUFtb2dBRUdRQW1vUUpnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0NtQUloQWlBQkVBb2FJQUJCNEFGcUVBb2FJQUJCb0FKcUpBQWdBZ3U3QXdBakFFR1FBbXNpQUNRQUlBQWdBallDZ0FJZ0FDQUJOZ0tJQWlBQVFkQUJhaUFESUFCQjRBRnFJQUJCM3dGcUlBQkIzZ0ZxRU5jQklBQkJ3QUZxRUJFaUFTQUJFQk1RRENBQUlBRkJBQkFMSWdJMkFyd0JJQUFnQUVFUWFqWUNEQ0FBUVFBMkFnZ2dBRUVCT2dBSElBQkJ4UUE2QUFZRFFBSkFJQUJCaUFKcUlBQkJnQUpxRURGRkRRQWdBQ2dDdkFFZ0FSQUpJQUpxUmdSQUlBRVFDU0VESUFFZ0FSQUpRUUYwRUF3Z0FTQUJFQk1RRENBQUlBTWdBVUVBRUFzaUFtbzJBcndCQ3lBQVFZZ0NhaEFmSUFCQkIyb2dBRUVHYWlBQ0lBQkJ2QUZxSUFBc0FOOEJJQUFzQU40QklBQkIwQUZxSUFCQkVHb2dBRUVNYWlBQVFRaHFJQUJCNEFGcUVOWUJEUUFnQUVHSUFtb1FJaG9NQVFzTEFrQWdBRUhRQVdvUUNVVU5BQ0FBTFFBSFJRMEFJQUFvQWd3aUF5QUFRUkJxYTBHZkFVb05BQ0FBSUFOQkJHbzJBZ3dnQXlBQUtBSUlOZ0lBQ3lBRklBSWdBQ2dDdkFFZ0JCREJBamtEQUNBQVFkQUJhaUFBUVJCcUlBQW9BZ3dnQkJBdElBQkJpQUpxSUFCQmdBSnFFQ1lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQW9nQ0lRSWdBUkFLR2lBQVFkQUJhaEFLR2lBQVFaQUNhaVFBSUFJTHV3TUFJd0JCa0FKcklnQWtBQ0FBSUFJMkFvQUNJQUFnQVRZQ2lBSWdBRUhRQVdvZ0F5QUFRZUFCYWlBQVFkOEJhaUFBUWQ0QmFoRFhBU0FBUWNBQmFoQVJJZ0VnQVJBVEVBd2dBQ0FCUVFBUUN5SUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJSUFCQkFUb0FCeUFBUWNVQU9nQUdBMEFDUUNBQVFZZ0NhaUFBUVlBQ2FoQXhSUTBBSUFBb0Fyd0JJQUVRQ1NBQ2FrWUVRQ0FCRUFraEF5QUJJQUVRQ1VFQmRCQU1JQUVnQVJBVEVBd2dBQ0FESUFGQkFCQUxJZ0pxTmdLOEFRc2dBRUdJQW1vUUh5QUFRUWRxSUFCQkJtb2dBaUFBUWJ3QmFpQUFMQURmQVNBQUxBRGVBU0FBUWRBQmFpQUFRUkJxSUFCQkRHb2dBRUVJYWlBQVFlQUJhaERXQVEwQUlBQkJpQUpxRUNJYURBRUxDd0pBSUFCQjBBRnFFQWxGRFFBZ0FDMEFCMFVOQUNBQUtBSU1JZ01nQUVFUWFtdEJud0ZLRFFBZ0FDQURRUVJxTmdJTUlBTWdBQ2dDQ0RZQ0FBc2dCU0FDSUFBb0Fyd0JJQVFRd2dJNEFnQWdBRUhRQVdvZ0FFRVFhaUFBS0FJTUlBUVFMU0FBUVlnQ2FpQUFRWUFDYWhBbUJFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBS0lBaUVDSUFFUUNob2dBRUhRQVdvUUNob2dBRUdRQW1va0FDQUNDNUlEQVFGL0l3QkJrQUpySWdBa0FDQUFJQUkyQW9BQ0lBQWdBVFlDaUFJZ0F4QmNJUVlnQUVIUUFXb2dBeUFBUWY4QmFoQ1pBU0FBUWNBQmFoQVJJZ0VnQVJBVEVBd2dBQ0FCUVFBUUN5SUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJQTBBQ1FDQUFRWWdDYWlBQVFZQUNhaEF4UlEwQUlBQW9BcndCSUFFUUNTQUNha1lFUUNBQkVBa2hBeUFCSUFFUUNVRUJkQkFNSUFFZ0FSQVRFQXdnQUNBRElBRkJBQkFMSWdKcU5nSzhBUXNnQUVHSUFtb1FIeUFHSUFJZ0FFRzhBV29nQUVFSWFpQUFMQUQvQVNBQVFkQUJhaUFBUVJCcUlBQkJER3BCME5BQUVJMEJEUUFnQUVHSUFtb1FJaG9NQVFzTEFrQWdBRUhRQVdvUUNVVU5BQ0FBS0FJTUlnTWdBRUVRYW10Qm53RktEUUFnQUNBRFFRUnFOZ0lNSUFNZ0FDZ0NDRFlDQUFzZ0JTQUNJQUFvQXJ3QklBUWdCaEREQWpjREFDQUFRZEFCYWlBQVFSQnFJQUFvQWd3Z0JCQXRJQUJCaUFKcUlBQkJnQUpxRUNZRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFBb0FvZ0NJUUlnQVJBS0dpQUFRZEFCYWhBS0dpQUFRWkFDYWlRQUlBSUxrZ01CQVg4akFFR1FBbXNpQUNRQUlBQWdBallDZ0FJZ0FDQUJOZ0tJQWlBREVGd2hCaUFBUWRBQmFpQURJQUJCL3dGcUVKa0JJQUJCd0FGcUVCRWlBU0FCRUJNUURDQUFJQUZCQUJBTElnSTJBcndCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dEUUFKQUlBQkJpQUpxSUFCQmdBSnFFREZGRFFBZ0FDZ0N2QUVnQVJBSklBSnFSZ1JBSUFFUUNTRURJQUVnQVJBSlFRRjBFQXdnQVNBQkVCTVFEQ0FBSUFNZ0FVRUFFQXNpQW1vMkFyd0JDeUFBUVlnQ2FoQWZJQVlnQWlBQVFid0JhaUFBUVFocUlBQXNBUDhCSUFCQjBBRnFJQUJCRUdvZ0FFRU1ha0hRMEFBUWpRRU5BQ0FBUVlnQ2FoQWlHZ3dCQ3dzQ1FDQUFRZEFCYWhBSlJRMEFJQUFvQWd3aUF5QUFRUkJxYTBHZkFVb05BQ0FBSUFOQkJHbzJBZ3dnQXlBQUtBSUlOZ0lBQ3lBRklBSWdBQ2dDdkFFZ0JDQUdFTVlDT3dFQUlBQkIwQUZxSUFCQkVHb2dBQ2dDRENBRUVDMGdBRUdJQW1vZ0FFR0FBbW9RSmdSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQUNnQ2lBSWhBaUFCRUFvYUlBQkIwQUZxRUFvYUlBQkJrQUpxSkFBZ0FndVNBd0VCZnlNQVFaQUNheUlBSkFBZ0FDQUNOZ0tBQWlBQUlBRTJBb2dDSUFNUVhDRUdJQUJCMEFGcUlBTWdBRUgvQVdvUW1RRWdBRUhBQVdvUUVTSUJJQUVRRXhBTUlBQWdBVUVBRUFzaUFqWUN2QUVnQUNBQVFSQnFOZ0lNSUFCQkFEWUNDQU5BQWtBZ0FFR0lBbW9nQUVHQUFtb1FNVVVOQUNBQUtBSzhBU0FCRUFrZ0FtcEdCRUFnQVJBSklRTWdBU0FCRUFsQkFYUVFEQ0FCSUFFUUV4QU1JQUFnQXlBQlFRQVFDeUlDYWpZQ3ZBRUxJQUJCaUFKcUVCOGdCaUFDSUFCQnZBRnFJQUJCQ0dvZ0FDd0Evd0VnQUVIUUFXb2dBRUVRYWlBQVFReHFRZERRQUJDTkFRMEFJQUJCaUFKcUVDSWFEQUVMQ3dKQUlBQkIwQUZxRUFsRkRRQWdBQ2dDRENJRElBQkJFR3ByUVo4QlNnMEFJQUFnQTBFRWFqWUNEQ0FESUFBb0FnZzJBZ0FMSUFVZ0FpQUFLQUs4QVNBRUlBWVF4d0kzQXdBZ0FFSFFBV29nQUVFUWFpQUFLQUlNSUFRUUxTQUFRWWdDYWlBQVFZQUNhaEFtQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FLSUFpRUNJQUVRQ2hvZ0FFSFFBV29RQ2hvZ0FFR1FBbW9rQUNBQ0M1SURBUUYvSXdCQmtBSnJJZ0FrQUNBQUlBSTJBb0FDSUFBZ0FUWUNpQUlnQXhCY0lRWWdBRUhRQVdvZ0F5QUFRZjhCYWhDWkFTQUFRY0FCYWhBUklnRWdBUkFURUF3Z0FDQUJRUUFRQ3lJQ05nSzhBU0FBSUFCQkVHbzJBZ3dnQUVFQU5nSUlBMEFDUUNBQVFZZ0NhaUFBUVlBQ2FoQXhSUTBBSUFBb0Fyd0JJQUVRQ1NBQ2FrWUVRQ0FCRUFraEF5QUJJQUVRQ1VFQmRCQU1JQUVnQVJBVEVBd2dBQ0FESUFGQkFCQUxJZ0pxTmdLOEFRc2dBRUdJQW1vUUh5QUdJQUlnQUVHOEFXb2dBRUVJYWlBQUxBRC9BU0FBUWRBQmFpQUFRUkJxSUFCQkRHcEIwTkFBRUkwQkRRQWdBRUdJQW1vUUlob01BUXNMQWtBZ0FFSFFBV29RQ1VVTkFDQUFLQUlNSWdNZ0FFRVFhbXRCbndGS0RRQWdBQ0FEUVFScU5nSU1JQU1nQUNnQ0NEWUNBQXNnQlNBQ0lBQW9BcndCSUFRZ0JoREpBallDQUNBQVFkQUJhaUFBUVJCcUlBQW9BZ3dnQkJBdElBQkJpQUpxSUFCQmdBSnFFQ1lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQW9nQ0lRSWdBUkFLR2lBQVFkQUJhaEFLR2lBQVFaQUNhaVFBSUFJTDdBRUJBWDhqQUVFZ2F5SUdKQUFnQmlBQk5nSVlBa0FnQXlnQ0JFRUJjVVVFUUNBR1FYODJBZ0FnQmlBQUlBRWdBaUFESUFRZ0JpQUFLQUlBS0FJUUVRVUFJZ0UyQWhnQ1FBSkFBa0FnQmlnQ0FBNENBQUVDQ3lBRlFRQTZBQUFNQXdzZ0JVRUJPZ0FBREFJTElBVkJBVG9BQUNBRVFRUTJBZ0FNQVFzZ0JpQURFQThnQmhBeUlRRWdCaEFPSUFZZ0F4QVBJQVlRamdFaEFDQUdFQTRnQmlBQUVFc2dCa0VNY2lBQUVFb2dCU0FHUVJocUlnTWdBaUFHSUFNZ0FTQUVRUUVRdEFFZ0JrWTZBQUFnQmlnQ0dDRUJBMEFnQTBFTWF4QUtJZ01nQmtjTkFBc0xJQVpCSUdva0FDQUJDMEFCQVg5QkFDRUFBMzhnQVNBQ1JnUi9JQUFGSUFFb0FnQWdBRUVFZEdvaUFFR0FnSUNBZjNFaUEwRVlkaUFEY2lBQWN5RUFJQUZCQkdvaEFRd0JDd3NMR3dBakFFRVFheUlCSkFBZ0FDQUNJQU1RelFJZ0FVRVFhaVFBQzFRQkFuOENRQU5BSUFNZ0JFY0VRRUYvSVFBZ0FTQUNSZzBDSUFFb0FnQWlCU0FES0FJQUlnWklEUUlnQlNBR1NnUkFRUUVQQlNBRFFRUnFJUU1nQVVFRWFpRUJEQUlMQUFzTElBRWdBa2NoQUFzZ0FBdEFBUUYvUVFBaEFBTi9JQUVnQWtZRWZ5QUFCU0FCTEFBQUlBQkJCSFJxSWdCQmdJQ0FnSDl4SWdOQkdIWWdBM0lnQUhNaEFDQUJRUUZxSVFFTUFRc0xDeHNBSXdCQkVHc2lBU1FBSUFBZ0FpQURFUEFDSUFGQkVHb2tBQXRlQVFOL0lBRWdCQ0FEYTJvaEJRSkFBMEFnQXlBRVJ3UkFRWDhoQUNBQklBSkdEUUlnQVN3QUFDSUdJQU1zQUFBaUIwZ05BaUFHSUFkS0JFQkJBUThGSUFOQkFXb2hBeUFCUVFGcUlRRU1BZ3NBQ3dzZ0FpQUZSeUVBQ3lBQUN5VUFJQUFvQWdRYUlBQWdBQ2dDQkVHMWYzRTJBZ1FnQUNBQUtBSUVRUWh5TmdJRUlBQUxxUUVCQkg4Z0FDZ0NWQ0lES0FJRUlnVWdBQ2dDRkNBQUtBSWNJZ1pySWdRZ0JDQUZTeHNpQkFSQUlBTW9BZ0FnQmlBRUVFSWFJQU1nQXlnQ0FDQUVhallDQUNBRElBTW9BZ1FnQkdzaUJUWUNCQXNnQXlnQ0FDRUVJQVVnQWlBQ0lBVkxHeUlGQkVBZ0JDQUJJQVVRUWhvZ0F5QURLQUlBSUFWcUlnUTJBZ0FnQXlBREtBSUVJQVZyTmdJRUN5QUVRUUE2QUFBZ0FDQUFLQUlzSWdFMkFod2dBQ0FCTmdJVUlBSUxLUUFnQVNBQktBSUFRUWRxUVhoeElnRkJFR28yQWdBZ0FDQUJLUU1BSUFFcEF3Z1EzUUU1QXdBTHRCZ0RFbjhCZkFKK0l3QkJzQVJySWdza0FDQUxRUUEyQWl3Q1FDQUJ2U0laUWdCVEJFQkJBU0VRUWZrYUlSTWdBWm9pQWIwaEdRd0JDeUFFUVlBUWNRUkFRUUVoRUVIOEdpRVREQUVMUWY4YVFmb2FJQVJCQVhFaUVCc2hFeUFRUlNFVUN3SkFJQmxDZ0lDQWdJQ0FnUGovQUlOQ2dJQ0FnSUNBZ1BqL0FGRUVRQ0FBUVNBZ0FpQVFRUU5xSWdNZ0JFSC8vM3R4RUM0Z0FDQVRJQkFRS2lBQVFjY2NRWUFlSUFWQklIRWlCUnRCNmh4QmxoNGdCUnNnQVNBQllodEJBeEFxSUFCQklDQUNJQU1nQkVHQXdBQnpFQzRnQWlBRElBSWdBMG9iSVFrTUFRc2dDMEVRYWlFUkFrQUNmd0pBSUFFZ0MwRXNhaERiQWlJQklBR2dJZ0ZFQUFBQUFBQUFBQUJpQkVBZ0N5QUxLQUlzSWdaQkFXczJBaXdnQlVFZ2NpSU9RZUVBUncwQkRBTUxJQVZCSUhJaURrSGhBRVlOQWlBTEtBSXNJUXBCQmlBRElBTkJBRWdiREFFTElBc2dCa0VkYXlJS05nSXNJQUZFQUFBQUFBQUFzRUdpSVFGQkJpQURJQU5CQUVnYkN5RU1JQXRCTUdvZ0MwSFFBbW9nQ2tFQVNCc2lEU0VIQTBBZ0J3Si9JQUZFQUFBQUFBQUE4RUZqSUFGRUFBQUFBQUFBQUFCbWNRUkFJQUdyREFFTFFRQUxJZ00yQWdBZ0IwRUVhaUVISUFFZ0E3aWhSQUFBQUFCbHpjMUJvaUlCUkFBQUFBQUFBQUFBWWcwQUN3SkFJQXBCQUV3RVFDQUtJUU1nQnlFR0lBMGhDQXdCQ3lBTklRZ2dDaUVEQTBBZ0EwRWRJQU5CSFVnYklRTUNRQ0FIUVFScklnWWdDRWtOQUNBRHJTRWFRZ0FoR1FOQUlBWWdHVUwvLy8vL0Q0TWdCalVDQUNBYWhud2lHU0FaUW9DVTY5d0RnQ0laUW9DVTY5d0RmbjArQWdBZ0JrRUVheUlHSUFoUERRQUxJQm1uSWdaRkRRQWdDRUVFYXlJSUlBWTJBZ0FMQTBBZ0NDQUhJZ1pKQkVBZ0JrRUVheUlIS0FJQVJRMEJDd3NnQ3lBTEtBSXNJQU5ySWdNMkFpd2dCaUVISUFOQkFFb05BQXNMSUF4QkdXcEJDVzRoQnlBRFFRQklCRUFnQjBFQmFpRVNJQTVCNWdCR0lSVURRRUVBSUFOcklnTkJDU0FEUVFsSUd5RUpBa0FnQmlBSVN3UkFRWUNVNjl3RElBbDJJUlpCZnlBSmRFRi9jeUVQUVFBaEF5QUlJUWNEUUNBSElBTWdCeWdDQUNJWElBbDJhallDQUNBUElCZHhJQlpzSVFNZ0IwRUVhaUlISUFaSkRRQUxJQWdvQWdBaEJ5QURSUTBCSUFZZ0F6WUNBQ0FHUVFScUlRWU1BUXNnQ0NnQ0FDRUhDeUFMSUFzb0Fpd2dDV29pQXpZQ0xDQU5JQWdnQjBWQkFuUnFJZ2dnRlJzaUJ5QVNRUUowYWlBR0lBWWdCMnRCQW5VZ0Vrb2JJUVlnQTBFQVNBMEFDd3RCQUNFREFrQWdCaUFJVFEwQUlBMGdDR3RCQW5WQkNXd2hBMEVLSVFjZ0NDZ0NBQ0lKUVFwSkRRQURRQ0FEUVFGcUlRTWdDU0FIUVFwc0lnZFBEUUFMQ3lBTVFRQWdBeUFPUWVZQVJodHJJQTVCNXdCR0lBeEJBRWR4YXlJSElBWWdEV3RCQW5WQkNXeEJDV3RJQkVCQkJFR2tBaUFLUVFCSUd5QUxhaUFIUVlESUFHb2lDVUVKYlNJUFFRSjBha0hRSDJzaENrRUtJUWNnQ1NBUFFRbHNheUlKUVFkTUJFQURRQ0FIUVFwc0lRY2dDVUVCYWlJSlFRaEhEUUFMQ3dKQUlBb29BZ0FpRWlBU0lBZHVJaFVnQjJ4cklnbEZJQXBCQkdvaUR5QUdSbkVOQUFKQUlCVkJBWEZGQkVCRUFBQUFBQUFBUUVNaEFTQUhRWUNVNjl3RFJ5QUlJQXBQY2cwQklBcEJCR3N0QUFCQkFYRkZEUUVMUkFFQUFBQUFBRUJESVFFTFJBQUFBQUFBQU9BL1JBQUFBQUFBQVBBL1JBQUFBQUFBQVBnL0lBWWdEMFliUkFBQUFBQUFBUGcvSUFrZ0IwRUJkaUlQUmhzZ0NTQVBTUnNoR0FKQUlCUU5BQ0FUTFFBQVFTMUhEUUFnR0pvaEdDQUJtaUVCQ3lBS0lCSWdDV3NpQ1RZQ0FDQUJJQmlnSUFGaERRQWdDaUFISUFscUlnTTJBZ0FnQTBHQWxPdmNBMDhFUUFOQUlBcEJBRFlDQUNBSUlBcEJCR3NpQ2tzRVFDQUlRUVJySWdoQkFEWUNBQXNnQ2lBS0tBSUFRUUZxSWdNMkFnQWdBMEgvayt2Y0Ewc05BQXNMSUEwZ0NHdEJBblZCQ1d3aEEwRUtJUWNnQ0NnQ0FDSUpRUXBKRFFBRFFDQURRUUZxSVFNZ0NTQUhRUXBzSWdkUERRQUxDeUFLUVFScUlnY2dCaUFHSUFkTEd5RUdDd05BSUFZaUJ5QUlUU0lKUlFSQUlBZEJCR3NpQmlnQ0FFVU5BUXNMQWtBZ0RrSG5BRWNFUUNBRVFRaHhJUW9NQVFzZ0EwRi9jMEYvSUF4QkFTQU1HeUlHSUFOS0lBTkJlMHB4SWdvYklBWnFJUXhCZjBGK0lBb2JJQVZxSVFVZ0JFRUljU0lLRFFCQmR5RUdBa0FnQ1EwQUlBZEJCR3NvQWdBaURrVU5BRUVLSVFsQkFDRUdJQTVCQ25BTkFBTkFJQVlpQ2tFQmFpRUdJQTRnQ1VFS2JDSUpjRVVOQUFzZ0NrRi9jeUVHQ3lBSElBMXJRUUoxUVFsc0lRa2dCVUZmY1VIR0FFWUVRRUVBSVFvZ0RDQUdJQWxxUVFscklnWkJBQ0FHUVFCS0d5SUdJQVlnREVvYklRd01BUXRCQUNFS0lBd2dBeUFKYWlBR2FrRUpheUlHUVFBZ0JrRUFTaHNpQmlBR0lBeEtHeUVNQzBGL0lRa2dERUg5Ly8vL0IwSCsvLy8vQnlBS0lBeHlJZ1liU2cwQklBd2dCa0VBUnlJU2FrRUJhaUVPQWtBZ0JVRmZjU0lVUWNZQVJnUkFJQU5CLy8vLy93Y2dEbXRLRFFNZ0EwRUFJQU5CQUVvYklRWU1BUXNnRVNBRElBTkJIM1VpQm1vZ0JuT3RJQkVRandFaUJtdEJBVXdFUUFOQUlBWkJBV3NpQmtFd09nQUFJQkVnQm10QkFrZ05BQXNMSUFaQkFtc2lEeUFGT2dBQUlBWkJBV3RCTFVFcklBTkJBRWdiT2dBQUlCRWdEMnNpQmtILy8vLy9CeUFPYTBvTkFnc2dCaUFPYWlJRElCQkIvLy8vL3dkelNnMEJJQUJCSUNBQ0lBTWdFR29pQlNBRUVDNGdBQ0FUSUJBUUtpQUFRVEFnQWlBRklBUkJnSUFFY3hBdUFrQUNRQUpBSUJSQnhnQkdCRUFnQzBFUWFpSUdRUWh5SVFNZ0JrRUpjaUVLSUEwZ0NDQUlJQTFMR3lJSklRZ0RRQ0FJTlFJQUlBb1Fqd0VoQmdKQUlBZ2dDVWNFUUNBR0lBdEJFR3BORFFFRFFDQUdRUUZySWdaQk1Eb0FBQ0FHSUF0QkVHcExEUUFMREFFTElBWWdDa2NOQUNBTFFUQTZBQmdnQXlFR0N5QUFJQVlnQ2lBR2F4QXFJQWhCQkdvaUNDQU5UUTBBQzBFQUlRWWdFa1VOQWlBQVFmQWVRUUVRS2lBTVFRQk1JQWNnQ0UxeURRRURRQ0FJTlFJQUlBb1Fqd0VpQmlBTFFSQnFTd1JBQTBBZ0JrRUJheUlHUVRBNkFBQWdCaUFMUVJCcVN3MEFDd3NnQUNBR0lBeEJDU0FNUVFsSUd4QXFJQXhCQ1dzaEJpQUlRUVJxSWdnZ0IwOE5BeUFNUVFsS0lRTWdCaUVNSUFNTkFBc01BZ3NDUUNBTVFRQklEUUFnQnlBSVFRUnFJQWNnQ0VzYklRa2dDMEVRYWlJRFFRbHlJUTBnQTBFSWNpRURJQWdoQndOQUlBMGdCelVDQUNBTkVJOEJJZ1pHQkVBZ0MwRXdPZ0FZSUFNaEJnc0NRQ0FISUFoSEJFQWdCaUFMUVJCcVRRMEJBMEFnQmtFQmF5SUdRVEE2QUFBZ0JpQUxRUkJxU3cwQUN3d0JDeUFBSUFaQkFSQXFJQVpCQVdvaEJrRUFJQXhCQUV3Z0Noc05BQ0FBUWZBZVFRRVFLZ3NnQUNBR0lBMGdCbXNpQmlBTUlBWWdERWdiRUNvZ0RDQUdheUVNSUFkQkJHb2lCeUFKVHcwQklBeEJBRTROQUFzTElBQkJNQ0FNUVJKcVFSSkJBQkF1SUFBZ0R5QVJJQTlyRUNvTUFnc2dEQ0VHQ3lBQVFUQWdCa0VKYWtFSlFRQVFMZ3NnQUVFZ0lBSWdCU0FFUVlEQUFITVFMaUFDSUFVZ0FpQUZTaHNoQ1F3QkN5QVRJQVZCR25SQkgzVkJDWEZxSVF3Q1FDQURRUXRMRFFCQkRDQURheUVHUkFBQUFBQUFBREJBSVJnRFFDQVlSQUFBQUFBQUFEQkFvaUVZSUFaQkFXc2lCZzBBQ3lBTUxRQUFRUzFHQkVBZ0dDQUJtaUFZb2FDYUlRRU1BUXNnQVNBWW9DQVlvU0VCQ3lBUklBc29BaXdpQmlBR1FSOTFJZ1pxSUFaenJTQVJFSThCSWdaR0JFQWdDMEV3T2dBUElBdEJEMm9oQmdzZ0VFRUNjaUVLSUFWQklIRWhDQ0FMS0FJc0lRY2dCa0VDYXlJTklBVkJEMm82QUFBZ0JrRUJhMEV0UVNzZ0IwRUFTQnM2QUFBZ0JFRUljU0VHSUF0QkVHb2hCd05BSUFjaUJRSi9JQUdaUkFBQUFBQUFBT0JCWXdSQUlBR3FEQUVMUVlDQWdJQjRDeUlIUVpBeWFpMEFBQ0FJY2pvQUFFRUJJQU5CQUVvZ0FTQUh0NkZFQUFBQUFBQUFNRUNpSWdGRUFBQUFBQUFBQUFCaWNpQUdHMFVnQlVFQmFpSUhJQXRCRUdwclFRRkhja1VFUUNBRlFTNDZBQUVnQlVFQ2FpRUhDeUFCUkFBQUFBQUFBQUFBWWcwQUMwRi9JUWxCL2YvLy93Y2dDaUFSSUExcklnVnFJZ1pySUFOSURRQWdBRUVnSUFJZ0JnSi9Ba0FnQTBVTkFDQUhJQXRCRUdwcklnaEJBbXNnQTA0TkFDQURRUUpxREFFTElBY2dDMEVRYW1zaUNBc2lCMm9pQXlBRUVDNGdBQ0FNSUFvUUtpQUFRVEFnQWlBRElBUkJnSUFFY3hBdUlBQWdDMEVRYWlBSUVDb2dBRUV3SUFjZ0NHdEJBRUVBRUM0Z0FDQU5JQVVRS2lBQVFTQWdBaUFESUFSQmdNQUFjeEF1SUFJZ0F5QUNJQU5LR3lFSkN5QUxRYkFFYWlRQUlBa0w1UVVCQ0g4akFFSFFBV3NpQmlRQUlBTVFHU0VISUFZZ0FqWUN2QUVnQmlBSE5nSzRBVUhUOHJDc0EwSFBrKzJMQVNBRlFSQkdHMEhQaysyTEFTQURRU0JHR3lFTElBWkJJR29oREFOQVFhaUVuTlI2SVFJRFFBSkFBa0FDUUFKQUFrQUNRQUpBSUFKQnpwUHRpd0ZNQkVBZ0FrR1Bwc3pxZlV3RVFDQUNRZGZRaGFSNlJnMERJQUpCeHFXUnQzcEdEUVFnQWtHb2hKelVla2NOQ1NBR0lBbzJBc1FCUVpDbXpPcDlRWU9POFljRklBWW9Bc1FCSUFOSUd5RUNEQWtMSUFKQmtLYk02bjFHRFFFZ0FrSEw5OWhSUmcwSElBSkJyc3ZhZTBjTkNDQUdLQUxNQVVHUWdRRnFJQVlvQXJnQklBWW9Bc3dCYWkwQUFEb0FBQ0FHS0FMTUFVRUJhaUVIUWNINStOTUJJUUlNQ0FzZ0FrR0NqdkdIQlV3RVFDQUNRYytUN1lzQlJnMEVJQUpCd2ZuNDB3RkdEUVVnQWtIVDhyQ3NBMGNOQ0NBR0lBWkJxQUZxSWdJMkFzQUJJQVlvQXNBQkdpQUNJQVlvQXJnQkVGUWFRZGZRaGFSNklRSkJBQ0VJREFnTElBSkJnNDd4aHdWSEJFQWdBa0dEeHZlWkJVWU5CaUFDUWRPeHl2NEhSdzBJSUFZb0FyZ0JFQkFnQmtIUUFXb2tBQThMUWJTQkFTQUZOZ0lBSUFBZ0FTQUVJQVlvQXJnQklBTVE1UUVnQ3lFQ0RBY0xJQVlvQXJnQklBWW9Bc1FCYWlBR0tBSzhBU0FHS0FMRUFXb3RBQUE2QUFBZ0JpZ0N4QUVpQWtFQmRFRUNjU0FDUVFGemFpRUtEQWNMSUFZZ0NEWUN5QUZCeHFXUnQzcEJnOGIzbVFVZ0JpZ0N5QUVnQlVnYklRSU1CUXNnQmtFWWFpSU5FTmNDSVFJZ0RCRE1BaUVJSUFaQkNHb2lDU0FHUWFnQmFpQUdLQUxJQVVFQmRCREtBaUFJSUFrUXlBSWdDUkFLR2lBTklBa1ErUUlnQmlnQ3lBRkJrSUVCYWlBR0tBSUlPZ0FBSUFJUWpBRWFJQVlvQXNnQklnSkJBWFJCQW5FZ0FrRUJjMm9oQ0VIWDBJV2tlaUVDREFRTFFjSDUrTk1CSVFKQkFDRUhEQU1MSUFZZ0J6WUN6QUZCcnN2YWUwSEw5OWhSSUFZb0Fzd0JJQVZJR3lFQ0RBSUxJQVpCcUFGcUVBb2FJQVlvQXNBQkdndEIwN0hLL2djaEFnd0FDd0FMQUF0VUFRSi9JQUVnQUNnQ1ZDSUJJQUZCQUNBQ1FZQUNhaUlERU53QklnUWdBV3NnQXlBRUd5SURJQUlnQWlBRFN4c2lBaEJDR2lBQUlBRWdBMm9pQXpZQ1ZDQUFJQU0yQWdnZ0FDQUJJQUpxTmdJRUlBSUw5d0VCQTM4Z0FFVUVRRUd3Z1FFb0FnQWhBQ01BUVNCcklnUWtBRUh3Z0FFZ0FCQzlBaUlGQkg4Z0JDQURLUUFBTndNUUlBUWdBeWtBQ0RjREdDQUNCRUFEUUNBRklBUkJFR29nQkJDbUFTQUNRUkFnQWtFUVNSc2hBMEVBSVFBRFFDQUFJQUZxSWdZZ0JpMEFBQ0FBSUFScUxRQUFjem9BQUNBQVFRRnFJZ0FnQTBjTkFBc2dBaUFEYXlFQ0lBRWdBMm9oQVVFUElRQURRQUpBSUFBaUF5QUVRUkJxYWlJQUlBQXRBQUJCQVdvaUFEb0FBQ0FBUWY4QmNRMEFJQU5CQVdzaEFDQUREUUVMQ3lBQ0RRQUxDeUFGRUJCQkFBVkJmd3NhSUFSQklHb2tBQThMUVpDQkFVRzBnUUVvQWdBZ0F5QUJJQUlRNVFFTENRQWdBQkRoQVJBUUN4TUFJQUFnQUNnQ0FFRU1heWdDQUdvUTRnRUxFd0FnQUNBQUtBSUFRUXhyS0FJQWFoQ01BUXNLQUNBQVFRaHJFT0lCQ3dvQUlBQkJDR3NRakFFTEdnQWdBQ0FCSUFJcEF3aEJBQ0FESUFFb0FnQW9BaEFSRlFBTENRQWdBQkRSQVJBUUM1UUNBZ0YvQTM0Z0FTZ0NHQ0FCS0FJc1N3UkFJQUVnQVNnQ0dEWUNMQXRDZnlFSUFrQWdCRUVZY1NJRlJTQUZRUmhHSUFOQkFVWnhjZzBBSUFFb0Fpd2lCUVJBSUFVZ0FVRWdhaEFOYTZ3aEJnc0NRQUpBQWtBZ0F3NERBZ0FCQXdzZ0JFRUljUVJBSUFFb0Fnd2dBU2dDQ0d1c0lRY01BZ3NnQVNnQ0dDQUJLQUlVYTZ3aEJ3d0JDeUFHSVFjTElBSWdCM3dpQWtJQVV5QUNJQVpWY2cwQUlBUkJDSEVoQXdKQUlBSlFEUUFnQXdSQUlBRW9BZ3hGRFFJTElBUkJFSEZGRFFBZ0FTZ0NHRVVOQVFzZ0F3UkFJQUVnQVNnQ0NDQUJLQUlJSUFLbmFpQUJLQUlzRUpvQkN5QUVRUkJ4QkVBZ0FTQUJLQUlVSUFFb0Fod1E4Z0lnQVNBQ3B4RHhBZ3NnQWlFSUN5QUFJQWdRdkFFTGd3SUJDWDhqQUVFUWF5SURKQUFDZnlBQlFYOFFYMFVFUUNBQUtBSU1JUVFnQUNnQ0NDRUZJQUFvQWhnZ0FDZ0NIRVlFUUVGL0lBQXRBREJCRUhGRkRRSWFJQUFvQWhnaEJpQUFLQUlVSVFjZ0FDZ0NMQ0VJSUFBb0FoUWhDU0FBUVNCcUlnSkJBQkNoQVNBQ0lBSVFFeEFNSUFBZ0FoQU5JZ29nQWhBSklBcHFFUElDSUFBZ0JpQUhheER4QWlBQUlBQW9BaFFnQ0NBSmEybzJBaXdMSUFNZ0FDZ0NHRUVCYWpZQ0RDQUFJQU5CREdvZ0FFRXNhaEIyS0FJQU5nSXNJQUF0QURCQkNIRUVRQ0FBSUFCQklHb1FEU0lDSUFJZ0JDQUZhMm9nQUNnQ0xCQ2FBUXNnQUNBQkVKc0JFUG9DREFFTElBRVE3Z0lMSVFBZ0EwRVFhaVFBSUFBTG9BRUJBWDhnQUNnQ0dDQUFLQUlzU3dSQUlBQWdBQ2dDR0RZQ0xBc0NRQ0FBS0FJSUlBQW9BZ3hQRFFBZ0FVRi9FRjhFUUNBQUlBQW9BZ2dnQUNnQ0RFRUJheUFBS0FJc0VKb0JJQUVRN2dJUEN5QUFMUUF3UVJCeFJRUkFJQUVRbXdFZ0FDZ0NERUVCYXl3QUFCQmZSUTBCQ3lBQUlBQW9BZ2dnQUNnQ0RFRUJheUFBS0FJc0VKb0JJQUVRbXdFaEFpQUFLQUlNSUFJNkFBQWdBUThMUVg4TFpBQWdBQ2dDR0NBQUtBSXNTd1JBSUFBZ0FDZ0NHRFlDTEFzQ1FDQUFMUUF3UVFoeFJRMEFJQUFvQWhBZ0FDZ0NMRWtFUUNBQUlBQW9BZ2dnQUNnQ0RDQUFLQUlzRUpvQkN5QUFLQUlNSUFBb0FoQlBEUUFnQUNnQ0RDd0FBQkJlRHd0QmZ3c0hBQ0FBS0FJSUN4TUFJQUFnQUNnQ0FFRU1heWdDQUdvUTR3RUxDZ0FnQUVFSWF4RGpBUXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFTGdCQ3dvQUlBQkJDR3NRdUFFTEV3QWdBQ0FBS0FJQVFReHJLQUlBYWhEMUFnc1RBQ0FBSUFBb0FnQkJER3NvQWdCcUVPUUJDd2tBUWJpQkFSQUtHZ3NUQUNBQUlBQW9BZ0JCREdzb0FnQnFFSU1EQ3hNQUlBQWdBQ2dDQUVFTWF5Z0NBR29RdWdFTEMrTmlJZ0JCZ0FnTG95V2xZMlBHaEh4OCtKbDNkKzZOZTN2MkRmTHkvNzFyYTlheGIyL2VWTVhGa1ZBd01HQURBUUVDcVdkbnpuMHJLMVlaL3Y3bll0Zlh0ZWFycTAyYWRuYnNSY3JLajUyQ2doOUF5Y21KaDMxOStoWDYrdS9yV1ZteXlVZEhqZ3Z3OFB2c3JhMUJaOVRVcy8yaW9sL3FyNjlGdjV5Y0kvZWtwRk9XY25Ma1c4REFtOEszdDNVYy9mM2hycE9UUFdvbUpreGFOalpzUVQ4L2ZnTDM5L1ZQek15RFhEUTBhUFNscFZFMDVlWFJDUEh4K1pOeGNlSnoyTmlyVXpFeFlqOFZGU29NQkFRSVVzZkhsV1VqSTBaZXc4T2RLQmdZTUtHV2xqY1BCUVVLdFpxYUx3a0hCdzQyRWhJa200Q0FHejNpNHQ4bTYrdk5hU2NuVHMyeXNuK2ZkWFhxR3drSkVwNkRneDEwTEN4WUxob2FOQzBiR3pheWJtN2M3bHBhdFB1Z29GdjJVbEtrVFRzN2RtSFcxcmZPczdOOWV5a3BVajdqNDkxeEx5OWVsNFNFRS9WVFU2Wm8wZEc1QUFBQUFDenQ3Y0ZnSUNCQUgvejg0OGl4c1hudFcxdTJ2bXBxMUViTHk0M1p2cjVuU3prNWN0NUtTcFRVVEV5WTZGaFlzRXJQejRWcjBOQzdLdS92eGVXcXFrOFcrL3Z0eFVORGh0ZE5UWnBWTXpObWxJV0ZFYzlGUllvUStmbnBCZ0lDQklGL2YvN3dVRkNnUkR3OGVMcWZueVhqcUtoTDgxRlJvdjZqbzEzQVFFQ0FpbytQQmEyU2tqKzhuWjBoU0RnNGNBVDE5Zkhmdkx4andiYTJkM1hhMnE5aklTRkNNQkFRSUJyLy8rVU84L1A5YmRMU3Ywek56WUVVREF3WU5STVRKaS9zN01QaFgxKytvcGVYTmN4RVJJZzVGeGN1VjhURWsvS25wMVdDZm43OFJ6MDllcXhrWk1qblhWMjZLeGtaTXBWemMrYWdZR0RBbUlHQkdkRlBUNTUvM055alppSWlSSDRxS2xTcmtKQTdnNGlJQzhwR1Jvd3A3dTdIMDdpNGF6d1VGQ2g1M3Q2bjRsNWV2QjBMQ3haMjI5dXRPK0RnMjFZeU1tUk9PanAwSGdvS0ZOdEpTWklLQmdZTWJDUWtTT1JjWExoZHdzS2ZidFBUdmUrc3JFT21ZbUxFcUpHUk9hU1ZsVEUzNU9UVGkzbDU4akxuNTlWRHlNaUxXVGMzYnJkdGJkcU1qWTBCWk5YVnNkSk9UcHpncWFsSnRHeHMyUHBXVnF3SDlQVHpKZXJxejY5bFpjcU9lbnIwNmE2dVJ4Z0lDQkRWdXJwdmlIaDQ4RzhsSlVweUxpNWNKQndjT1BHbXBsZkh0TFJ6VWNiR2x5UG82TXQ4M2QyaG5IUjA2Q0VmSHo3ZFMwdVczTDI5WVlhTGl3MkZpb29Qa0hCdzRFSStQbnpFdGJWeHFtWm16TmhJU0pBRkF3TUdBZmIyOXhJT0RoeWpZV0hDWHpVMWF2bFhWNjdRdWJscGtZYUdGMWpCd1prbkhSMDZ1WjZlSnpqaDRka1QrUGpyczVpWUt6TVJFU0s3YVduU2NOblpxWW1PamdlbmxKUXp0cHViTFNJZUhqeVNoNGNWSU9ucHlVbk96b2YvVlZXcWVDZ29VSHJmMzZXUGpJd0QrS0doV1lDSmlRa1hEUTBhMnIrL1pUSG01dGZHUWtLRXVHaG8wTU5CUVlLd21aa3BkeTB0V2hFUER4N0xzTEI3L0ZSVXFOYTd1MjA2RmhZc1VLZjBVVk5sUVg3RHBCY2FsbDRuT3N0cnF6dnhSWjBmcTFqNnJKTUQ0MHRWK2pBZzltMTJyWkYyeklnbFRBTDEvTmZsVDlmTEtzV0FSRFVtajZOaXRVbGFzZDVuRzdvbG1BN3FSZUhBL2wwQ2RTL0RFdkJNZ2FPWFJvM0crZE5yNTErUEE1V2NraFhyZW0yLzJsbFNsUzJEdnRUVElYUllLV25nU1VUSXlZNXFpY0oxZUhtTzlHcytXSm5kY2JrbnRrL2h2aGV0aVBCbXJDREp0RHJPZlJoSzMyT0NNUnJsWUROUmwwVi9VMkxnZDJTeGhLNXJ1eHlnZ2Y2VUt3ajVXR2hJY0JuOVJZK0hiTjZVdC9oN1VpUFRjNnZpQWt0eVY0OGY0eXFyVldZSEtPdXlBOEsxTDVwN3hZYWxDRGZUOG9jb01MS2x2eU82YWdNQ1hJSVc3U3NjejRxU3RIbW44UElIODZIaWFVN045TnBsMWI0RkJoOWlOTkdLL3FiRW5WTXVOS0JWODZJeTRZb0ZkZXYycERuc2d3dXE3MkJBQnA5eFhsRVFicjM1aWlFK1BRYmRscTRGUHQxR3ZlWk50WTFVa1FWZHhIRnYxQVlFL3hWUVlDVDdtQm1YNmIzV3pFTkFpWGVlMldlOVF1aXdpSXVKQnpoYkdlZmI3c2g1UndwOG9la1BRbnpKSG9UNEFBQUFBSU9HZ0FsSTdTc3lySEFSSGs1eVdtejcvdzc5VmppRkR4N1ZyajBuT1MwMlpOa1BDaUdtWEdqUlZGdWJPaTQySkxGbkNnd1A1MWVUMHBidXRKNlJteHRQeGNDQW9pRGNZV2xMZDFvV0doSWNDcnFUNHVVcW9NQkQ0Q0k4SFJjYkVnc05DUTZ0eDR2eXVhaTJMY2lwSGhTRkdmRlhUQWQxcjd2ZG1lNzlZSCtqbnlZQjk3ejFjbHpGTzJaRU5INzdXM1lwUTR2Y3hpUExhUHp0dG1QeDVMakszREhYRUlWalFrQWlseE1nRWNhRWZTUktoZmc5dTlJUk12bXViYUVweDBzdm5oM3pNTExjN0ZLR0RkRGp3WGRzRnJNcm1ibHdxZnBJbEJFaVpPbEh4SXo4cUJvLzhLRFlMSDFXNzVBeklzZE9TWWZCMFRqWi9xTEtqRFlMMUpqUGdmV21LTjU2cFNhT3Q5cWt2NjAvNUowNkxBMlNlRkNiekY5cVlrWitWTUlUamZib3VOaVFYdmM1THZXdnc0SytnRjJmZkpQUWFha3QxVyt6RWlYUE81bXN5S2Q5R0JCdVk1em9lN3M3MndsNEpzMzBHRmx1QWJlYTdLaWFUNE5sYnBYbWZ1Yi9xZ2pQdkNIbTZCWHYyWnZudXM0MmIwclVDWi9xMW55d0thK3lwREV4SXo4cU1KU2x4c0Jtb2pVM3ZFNTBwc3FDL0xEUWtPQVYyS2N6U3BnRThmZmE3RUVPVU0xL0wvYVJGNDNXVFhaTnNPOURWRTJxek44RWx1VGp0ZEdlRzRocVRMZ2ZMTUYvVVdWR0JPcGVuVjAxakFGemRJZjZMa0VMKzFvZFo3TlMwdHVTTTFZUTZSTkgxbTJNWWRlYWVneWhONDRVK0ZtSlBCUHI3aWVwempYSlliZnQ1UnpoUExGSGVsbmYwcHcvYy9KVmVjNFVHTDgzeDNQcXpmZFRXNnI5WHhSdlBkK0cyMFI0Z2ZPdnlqN0VhTGtzTkNRNFgwQ2p3bkxESFJZTUplSzhpMGs4S0VHVkRmOXhBYWc1M3JNTUNKemt0TmlRd1Zaa1lZVExlM0MyTXRWMFhHeElRbGU0MEZJSmF0VXdOcVU0djBDam5vSHoxL3Q4NHptQ215Ly9oelNPUTBURTN1bkxWSHVVTXFiQ0l6M3VUSlVMUXZyRFRnZ3VvV1lvMlNTeWRsdWlTVzJMMFNWeStQWmtobWlZRnRTa1hNeGRaYmFTYkhCSVVQM3R1ZHBlRlVaWHA0MmRoSkRZcXdDTXZOTUs5K1JZQmJpelJRYlFMQjZQeWo4UEFzR3Z2UU1CRTRwck9wRVJRVTluM09xWDhzL084TFRtYzVhc2RDTG5yVFdGNHZrMzZCeDEzMjVIOFJweEhTbkZpVyszWWc2cUdMNGIvRlkrUzhiU2VTQ2EyOEQrZU0xYTlCL2RxRE9JQjhjeHNSSVFXU2VBN0Y5Z1VYK3BHYlZLRFMzbGVwK1R5Wnp2b09BN1RhNHE5YkRJNjdzOGcxT1pZUmNyQkg2NmQ5WW00V2tVWTFVaERIMEJBZ1FJRUNCQWdCczJhVzVtYVc1cGRIa0FSbVZpY25WaGNua0FTbUZ1ZFdGeWVRQktkV3g1QUZSb2RYSnpaR0Y1QUZSMVpYTmtZWGtBVjJWa2JtVnpaR0Y1QUZOaGRIVnlaR0Y1QUZOMWJtUmhlUUJOYjI1a1lYa0FSbkpwWkdGNUFFMWhlUUFsYlM4bFpDOGxlUUF0S3lBZ0lEQllNSGdBTFRCWUt6QllJREJZTFRCNEt6QjRJREI0QUU1dmRnQlVhSFVBUVhWbmRYTjBBRTlqZEFCVFlYUUFRWEJ5QUhabFkzUnZjZ0JQWTNSdlltVnlBRTV2ZG1WdFltVnlBRk5sY0hSbGJXSmxjZ0JFWldObGJXSmxjZ0JwYjNOZlltRnpaVG82WTJ4bFlYSUFUV0Z5QUZObGNBQWxTVG9sVFRvbFV5QWxjQUJUZFc0QVNuVnVBSE4wWkRvNlpYaGpaWEIwYVc5dUFGOWZZM2hoWDJkMVlYSmtYMkZqY1hWcGNtVWdaR1YwWldOMFpXUWdjbVZqZFhKemFYWmxJR2x1YVhScFlXeHBlbUYwYVc5dUFFMXZiZ0J1WVc0QVNtRnVBRXAxYkFCc2JBQkJjSEpwYkFCR2Nta0FUV0Z5WTJnQVFYVm5BR2x1WmdBbExqQk1aZ0FsVEdZQVlXeHNiMk5oZEc5eVBGUStPanBoYkd4dlkyRjBaU2h6YVhwbFgzUWdiaWtnSjI0bklHVjRZMlZsWkhNZ2JXRjRhVzExYlNCemRYQndiM0owWldRZ2MybDZaUUIwY25WbEFGUjFaUUJtWVd4elpRQktkVzVsQUZkbFpBQkVaV01BUm1WaUFDVmhJQ1ZpSUNWa0lDVklPaVZOT2lWVElDVlpBRkJQVTBsWUFDVklPaVZOT2lWVEFFNUJUZ0JRVFFCQlRRQk1RMTlCVEV3QVRFRk9Sd0JKVGtZQVF3QXdNVEl6TkRVMk56ZzVBRU11VlZSR0xUZ0FRVUpEUkVWR1IwaEpTa3RNVFU1UFVGRlNVMVJWVmxkWVdWcGhZbU5rWldabmFHbHFhMnh0Ym05d2NYSnpkSFYyZDNoNWVqQXhNak0wTlRZM09Ea3JMd0F1QUNodWRXeHNLUUJRZFhKbElIWnBjblIxWVd3Z1puVnVZM1JwYjI0Z1kyRnNiR1ZrSVFCYmFFVkxuS3Z1UjhvRTlBVUFBQUFBQUZnUkFBQUVBQUFBQlFBQUFBWUFBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0FBQUF3QUFBQU5BQUFBRGdBQUFBOEFBQUFRQUFBQUVRQUFBQWdBQUFBQUFBQUFrQkVBQUJJQUFBQVRBQUFBK1AvLy8vai8vLytRRVFBQUZBQUFBQlVBQUFEd0R3QUFCQkFBQUFRQUFBQUFBQUFBMkJFQUFCWUFBQUFYQUFBQS9QLy8vL3ovLy8vWUVRQUFHQUFBQUJrQUFBQWdFQUFBTkJBQUFBd0FBQUFBQUFBQWNCSUFBQm9BQUFBYkFBQUFCQUFBQVBqLy8vOXdFZ0FBSEFBQUFCMEFBQUQwLy8vLzlQLy8vM0FTQUFBZUFBQUFId0FBQUZBUUFBRDhFUUFBRUJJQUFDUVNBQUE0RWdBQWVCQUFBR1FRQUFBQUFBQUExQklBQUNBQUFBQWhBQUFBQmdBQUFBY0FBQUFpQUFBQUl3QUFBQW9BQUFBTEFBQUFEQUFBQUNRQUFBQU9BQUFBSlFBQUFCQUFBQUFtQUFBQUFBQUFBQmdSQUFBbkFBQUFLQUFBQUU1VGRETmZYekk1WW1GemFXTmZhVzl6U1dOT1UxOHhNV05vWVhKZmRISmhhWFJ6U1dORlJVVkZBQUFBQ0Q4QUFPd1FBQUJJRkFBQVRsTjBNMTlmTWpFMVltRnphV05mYzNSeVpXRnRZblZtU1dOT1UxOHhNV05vWVhKZmRISmhhWFJ6U1dORlJVVkZBQUFBQU9BK0FBQWtFUUFBVGxOME0xOWZNakV6WW1GemFXTmZhWE4wY21WaGJVbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFBQVpEOEFBR0FSQUFBQUFBQUFBUUFBQUJnUkFBQUQ5UC8vVGxOME0xOWZNakV6WW1GemFXTmZiM04wY21WaGJVbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFBQVpEOEFBS2dSQUFBQUFBQUFBUUFBQUJnUkFBQUQ5UC8vREFBQUFBQUFBQUNRRVFBQUVnQUFBQk1BQUFEMC8vLy85UC8vLzVBUkFBQVVBQUFBRlFBQUFBUUFBQUFBQUFBQTJCRUFBQllBQUFBWEFBQUEvUC8vLy96Ly8vL1lFUUFBR0FBQUFCa0FBQUJPVTNRelgxOHlNVFJpWVhOcFkxOXBiM04wY21WaGJVbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFCa1B3QUFRQklBQUFNQUFBQUNBQUFBa0JFQUFBSUFBQURZRVFBQUFnZ0FBRTVUZEROZlh6SXhOV0poYzJsalgzTjBjbWx1WjJKMVprbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZPVTE4NVlXeHNiMk5oZEc5eVNXTkZSVVZGQUFBQUNEOEFBSkFTQUFCWUVRQUFRQUFBQUFBQUFBQVlGQUFBS1FBQUFDb0FBQUE0QUFBQStQLy8veGdVQUFBckFBQUFMQUFBQU1ELy8vL0EvLy8vR0JRQUFDMEFBQUF1QUFBQTdCSUFBRkFUQUFDTUV3QUFvQk1BQUxRVEFBRElFd0FBZUJNQUFHUVRBQUFVRXdBQUFCTUFBRUFBQUFBQUFBQUFjQklBQUJvQUFBQWJBQUFBT0FBQUFQai8vLzl3RWdBQUhBQUFBQjBBQUFEQS8vLy93UC8vLzNBU0FBQWVBQUFBSHdBQUFFQUFBQUFBQUFBQWtCRUFBQklBQUFBVEFBQUF3UC8vLzhELy8vK1FFUUFBRkFBQUFCVUFBQUE0QUFBQUFBQUFBTmdSQUFBV0FBQUFGd0FBQU1qLy8vL0kvLy8vMkJFQUFCZ0FBQUFaQUFBQVRsTjBNMTlmTWpFNFltRnphV05mYzNSeWFXNW5jM1J5WldGdFNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVTVUWHpsaGJHeHZZMkYwYjNKSlkwVkZSVVVBQUFBQUNEOEFBTkFUQUFCd0VnQUFBQUFBQUVnVUFBQXZBQUFBTUFBQUFFNVRkRE5mWHpJNGFXOXpYMkpoYzJWRkFBQUE0RDRBQURRVUFBRFJkSjRBVjUyOUtvQndVZy8vL3o0bkNnQUFBR1FBQUFEb0F3QUFFQ2NBQUtDR0FRQkFRZzhBZ0phWUFBRGg5UVVZQUFBQU5RQUFBSEVBQUFCci8vLy96dnYvLzVLLy8vOEFBQUFBQUFBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhBQVFJREJBVUdCd2dKLy8vLy8vLy8vd29MREEwT0R4QVJFaE1VRlJZWEdCa2FHeHdkSGg4Z0lTSWovLy8vLy8vL0Nnc01EUTRQRUJFU0V4UVZGaGNZR1JvYkhCMGVIeUFoSWlQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQUFFQ0JBY0RCZ1VBQUFBQUFBQUFBZ0FBd0FNQUFNQUVBQURBQlFBQXdBWUFBTUFIQUFEQUNBQUF3QWtBQU1BS0FBREFDd0FBd0F3QUFNQU5BQURBRGdBQXdBOEFBTUFRQUFEQUVRQUF3QklBQU1BVEFBREFGQUFBd0JVQUFNQVdBQURBRndBQXdCZ0FBTUFaQUFEQUdnQUF3QnNBQU1BY0FBREFIUUFBd0I0QUFNQWZBQURBQUFBQXN3RUFBTU1DQUFEREF3QUF3d1FBQU1NRkFBRERCZ0FBd3djQUFNTUlBQUREQ1FBQXd3b0FBTU1MQUFERERBQUF3dzBBQU5NT0FBREREd0FBd3dBQURMc0JBQXpEQWdBTXd3TUFETU1FQUF6YkFBQUFBTjRTQkpVQUFBQUEvLy8vLy8vLy8vLy8vLy8vZ0JZQUFCUUFBQUJETGxWVVJpMDRBRUhRTFFzQ2xCWUFRZkF0QzBkTVExOURWRmxRUlFBQUFBQk1RMTlPVlUxRlVrbERBQUJNUTE5VVNVMUZBQUFBQUFCTVExOURUMHhNUVZSRkFBQk1RMTlOVDA1RlZFRlNXUUJNUTE5TlJWTlRRVWRGVXdCQndDNExRUmtBQ2dBWkdSa0FBQUFBQlFBQUFBQUFBQWtBQUFBQUN3QUFBQUFBQUFBQUdRQVJDaGtaR1FNS0J3QUJBQWtMR0FBQUNRWUxBQUFMQUFZWkFBQUFHUmtaQUVHUkx3c2hEZ0FBQUFBQUFBQUFHUUFLRFJrWkdRQU5BQUFDQUFrT0FBQUFDUUFPQUFBT0FFSExMd3NCREFCQjF5OExGUk1BQUFBQUV3QUFBQUFKREFBQUFBQUFEQUFBREFCQmhUQUxBUkFBUVpFd0N4VVBBQUFBQkE4QUFBQUFDUkFBQUFBQUFCQUFBQkFBUWI4d0N3RVNBRUhMTUFzZUVRQUFBQUFSQUFBQUFBa1NBQUFBQUFBU0FBQVNBQUFhQUFBQUdob2FBRUdDTVFzT0dnQUFBQm9hR2dBQUFBQUFBQWtBUWJNeEN3RVVBRUcvTVFzVkZ3QUFBQUFYQUFBQUFBa1VBQUFBQUFBVUFBQVVBRUh0TVFzQkZnQkIrVEVMS1JVQUFBQUFGUUFBQUFBSkZnQUFBQUFBRmdBQUZnQUFNREV5TXpRMU5qYzRPVUZDUTBSRlJqQWFBRUd3TkF2L0FRSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBTWdBaUFDSUFJZ0FpQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUJZQVRBQk1BRXdBVEFCTUFFd0FUQUJNQUV3QVRBQk1BRXdBVEFCTUFFd0FqWUNOZ0kyQWpZQ05nSTJBallDTmdJMkFqWUJNQUV3QVRBQk1BRXdBVEFCTUFJMVFqVkNOVUkxUWpWQ05VSXhRakZDTVVJeFFqRkNNVUl4UWpGQ01VSXhRakZDTVVJeFFqRkNNVUl4UWpGQ01VSXhRakZCTUFFd0FUQUJNQUV3QVRBQ05ZSTFnaldDTllJMWdqV0NNWUl4Z2pHQ01ZSXhnakdDTVlJeGdqR0NNWUl4Z2pHQ01ZSXhnakdDTVlJeGdqR0NNWUl4Z1RBQk1BRXdBVEFBZ0JCc0RnTEFrQWVBRUhFUEF2NUF3RUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdBQUFCTUFBQUFVQUFBQUZRQUFBQllBQUFBWEFBQUFHQUFBQUJrQUFBQWFBQUFBR3dBQUFCd0FBQUFkQUFBQUhnQUFBQjhBQUFBZ0FBQUFJUUFBQUNJQUFBQWpBQUFBSkFBQUFDVUFBQUFtQUFBQUp3QUFBQ2dBQUFBcEFBQUFLZ0FBQUNzQUFBQXNBQUFBTFFBQUFDNEFBQUF2QUFBQU1BQUFBREVBQUFBeUFBQUFNd0FBQURRQUFBQTFBQUFBTmdBQUFEY0FBQUE0QUFBQU9RQUFBRG9BQUFBN0FBQUFQQUFBQUQwQUFBQStBQUFBUHdBQUFFQUFBQUJCQUFBQVFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFFa0FBQUJLQUFBQVN3QUFBRXdBQUFCTkFBQUFUZ0FBQUU4QUFBQlFBQUFBVVFBQUFGSUFBQUJUQUFBQVZBQUFBRlVBQUFCV0FBQUFWd0FBQUZnQUFBQlpBQUFBV2dBQUFGc0FBQUJjQUFBQVhRQUFBRjRBQUFCZkFBQUFZQUFBQUVFQUFBQkNBQUFBUXdBQUFFUUFBQUJGQUFBQVJnQUFBRWNBQUFCSUFBQUFTUUFBQUVvQUFBQkxBQUFBVEFBQUFFMEFBQUJPQUFBQVR3QUFBRkFBQUFCUkFBQUFVZ0FBQUZNQUFBQlVBQUFBVlFBQUFGWUFBQUJYQUFBQVdBQUFBRmtBQUFCYUFBQUFld0FBQUh3QUFBQjlBQUFBZmdBQUFIOEFRY0RFQUFzQ1VDUUFRZFRJQUF2NUF3RUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdBQUFCTUFBQUFVQUFBQUZRQUFBQllBQUFBWEFBQUFHQUFBQUJrQUFBQWFBQUFBR3dBQUFCd0FBQUFkQUFBQUhnQUFBQjhBQUFBZ0FBQUFJUUFBQUNJQUFBQWpBQUFBSkFBQUFDVUFBQUFtQUFBQUp3QUFBQ2dBQUFBcEFBQUFLZ0FBQUNzQUFBQXNBQUFBTFFBQUFDNEFBQUF2QUFBQU1BQUFBREVBQUFBeUFBQUFNd0FBQURRQUFBQTFBQUFBTmdBQUFEY0FBQUE0QUFBQU9RQUFBRG9BQUFBN0FBQUFQQUFBQUQwQUFBQStBQUFBUHdBQUFFQUFBQUJoQUFBQVlnQUFBR01BQUFCa0FBQUFaUUFBQUdZQUFBQm5BQUFBYUFBQUFHa0FBQUJxQUFBQWF3QUFBR3dBQUFCdEFBQUFiZ0FBQUc4QUFBQndBQUFBY1FBQUFISUFBQUJ6QUFBQWRBQUFBSFVBQUFCMkFBQUFkd0FBQUhnQUFBQjVBQUFBZWdBQUFGc0FBQUJjQUFBQVhRQUFBRjRBQUFCZkFBQUFZQUFBQUdFQUFBQmlBQUFBWXdBQUFHUUFBQUJsQUFBQVpnQUFBR2NBQUFCb0FBQUFhUUFBQUdvQUFBQnJBQUFBYkFBQUFHMEFBQUJ1QUFBQWJ3QUFBSEFBQUFCeEFBQUFjZ0FBQUhNQUFBQjBBQUFBZFFBQUFIWUFBQUIzQUFBQWVBQUFBSGtBQUFCNkFBQUFld0FBQUh3QUFBQjlBQUFBZmdBQUFIOEFRZERRQUF2QkFUQXhNak0wTlRZM09EbGhZbU5rWldaQlFrTkVSVVo0V0NzdGNGQnBTVzVPQUNVQUFBQUFBQ1Z3QUFBQUFDVkpPaVZOT2lWVElDVndKVWc2SlUwQUFBQWxBQUFBYlFBQUFDOEFBQUFsQUFBQVpBQUFBQzhBQUFBbEFBQUFlUUFBQUNVQUFBQlpBQUFBTFFBQUFDVUFBQUJ0QUFBQUxRQUFBQ1VBQUFCa0FBQUFKUUFBQUVrQUFBQTZBQUFBSlFBQUFFMEFBQUE2QUFBQUpRQUFBRk1BQUFBZ0FBQUFKUUFBQUhBQUFBQUFBQUFBSlFBQUFFZ0FBQUE2QUFBQUpRQUFBRTBBUWFEU0FBdlpBeVVBQUFCSUFBQUFPZ0FBQUNVQUFBQk5BQUFBT2dBQUFDVUFBQUJUQUFBQUFBQUFBS1F0QUFCSEFBQUFTQUFBQUVrQUFBQUFBQUFBQkM0QUFFb0FBQUJMQUFBQVNRQUFBRXdBQUFCTkFBQUFUZ0FBQUU4QUFBQlFBQUFBVVFBQUFGSUFBQUJUQUFBQUFBQUFBR3d0QUFCVUFBQUFWUUFBQUVrQUFBQldBQUFBVndBQUFGZ0FBQUJaQUFBQVdnQUFBRnNBQUFCY0FBQUFBQUFBQUR3dUFBQmRBQUFBWGdBQUFFa0FBQUJmQUFBQVlBQUFBR0VBQUFCaUFBQUFZd0FBQUFBQUFBQmdMZ0FBWkFBQUFHVUFBQUJKQUFBQVpnQUFBR2NBQUFCb0FBQUFhUUFBQUdvQUFBQjBBQUFBY2dBQUFIVUFBQUJsQUFBQUFBQUFBR1lBQUFCaEFBQUFiQUFBQUhNQUFBQmxBQUFBQUFBQUFDVUFBQUJ0QUFBQUx3QUFBQ1VBQUFCa0FBQUFMd0FBQUNVQUFBQjVBQUFBQUFBQUFDVUFBQUJJQUFBQU9nQUFBQ1VBQUFCTkFBQUFPZ0FBQUNVQUFBQlRBQUFBQUFBQUFDVUFBQUJoQUFBQUlBQUFBQ1VBQUFCaUFBQUFJQUFBQUNVQUFBQmtBQUFBSUFBQUFDVUFBQUJJQUFBQU9nQUFBQ1VBQUFCTkFBQUFPZ0FBQUNVQUFBQlRBQUFBSUFBQUFDVUFBQUJaQUFBQUFBQUFBQ1VBQUFCSkFBQUFPZ0FBQUNVQUFBQk5BQUFBT2dBQUFDVUFBQUJUQUFBQUlBQUFBQ1VBQUFCd0FFR0UxZ0FMbGdrc0t3QUFhd0FBQUd3QUFBQkpBQUFBVGxOME0xOWZNalpzYjJOaGJHVTFabUZqWlhSRkFBQUFDRDhBQUJRckFBQndQZ0FBQUFBQUFLd3JBQUJyQUFBQWJRQUFBRWtBQUFCdUFBQUFid0FBQUhBQUFBQnhBQUFBY2dBQUFITUFBQUIwQUFBQWRRQUFBSFlBQUFCM0FBQUFlQUFBQUhrQUFBQk9VM1F6WDE4eU5XTjBlWEJsU1hkRlJRQk9VM1F6WDE4eU1UQmpkSGx3WlY5aVlYTmxSUUFBNEQ0QUFJNHJBQUJrUHdBQWZDc0FBQUFBQUFBQ0FBQUFMQ3NBQUFJQUFBQ2tLd0FBQWdBQUFBQUFBQUJBTEFBQWF3QUFBSG9BQUFCSkFBQUFld0FBQUh3QUFBQjlBQUFBZmdBQUFIOEFBQUNBQUFBQWdRQUFBRTVUZEROZlh6STNZMjlrWldOMmRFbGpZekV4WDE5dFluTjBZWFJsWDNSRlJRQk9VM1F6WDE4eU1USmpiMlJsWTNaMFgySmhjMlZGQUFBQUFPQStBQUFlTEFBQVpEOEFBUHdyQUFBQUFBQUFBZ0FBQUN3ckFBQUNBQUFBT0N3QUFBSUFBQUFBQUFBQXRDd0FBR3NBQUFDQ0FBQUFTUUFBQUlNQUFBQ0VBQUFBaFFBQUFJWUFBQUNIQUFBQWlBQUFBSWtBQUFCT1UzUXpYMTh5TjJOdlpHVmpkblJKUkhOak1URmZYMjFpYzNSaGRHVmZkRVZGQUFCa1B3QUFrQ3dBQUFBQUFBQUNBQUFBTENzQUFBSUFBQUE0TEFBQUFnQUFBQUFBQUFBb0xRQUFhd0FBQUlvQUFBQkpBQUFBaXdBQUFJd0FBQUNOQUFBQWpnQUFBSThBQUFDUUFBQUFrUUFBQUU1VGRETmZYekkzWTI5a1pXTjJkRWxFYVdNeE1WOWZiV0p6ZEdGMFpWOTBSVVVBQUdRL0FBQUVMUUFBQUFBQUFBSUFBQUFzS3dBQUFnQUFBRGdzQUFBQ0FBQUFUbE4wTTE5Zk1qZGpiMlJsWTNaMFNYZGpNVEZmWDIxaWMzUmhkR1ZmZEVWRkFBQUFaRDhBQUVndEFBQUFBQUFBQWdBQUFDd3JBQUFDQUFBQU9Dd0FBQUlBQUFCT1UzUXpYMTh5Tm14dlkyRnNaVFZmWDJsdGNFVUFBQUFJUHdBQWpDMEFBQ3dyQUFCT1UzUXpYMTh5TjJOdmJHeGhkR1ZKWTBWRkFBZy9BQUN3TFFBQUxDc0FBRTVUZEROZlh6STNZMjlzYkdGMFpVbDNSVVVBQ0Q4QUFOQXRBQUFzS3dBQVRsTjBNMTlmTWpWamRIbHdaVWxqUlVVQUFBQmtQd0FBOEMwQUFBQUFBQUFDQUFBQUxDc0FBQUlBQUFDa0t3QUFBZ0FBQUU1VGRETmZYekk0Ym5WdGNIVnVZM1JKWTBWRkFBQUFBQWcvQUFBa0xnQUFMQ3NBQUU1VGRETmZYekk0Ym5WdGNIVnVZM1JKZDBWRkFBQUFBQWcvQUFCSUxnQUFMQ3NBQUFBQUFBREVMUUFBa2dBQUFKTUFBQUJKQUFBQWxBQUFBSlVBQUFDV0FBQUFBQUFBQU9RdEFBQ1hBQUFBbUFBQUFFa0FBQUNaQUFBQW1nQUFBSnNBQUFBQUFBQUFnQzhBQUdzQUFBQ2NBQUFBU1FBQUFKMEFBQUNlQUFBQW53QUFBS0FBQUFDaEFBQUFvZ0FBQUtNQUFBQ2tBQUFBcFFBQUFLWUFBQUNuQUFBQVRsTjBNMTlmTWpkdWRXMWZaMlYwU1dOT1UxOHhPV2x6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlPVjlmYm5WdFgyZGxkRWxqUlVVQVRsTjBNMTlmTWpFMFgxOXVkVzFmWjJWMFgySmhjMlZGQUFEZ1BnQUFSaThBQUdRL0FBQXdMd0FBQUFBQUFBRUFBQUJnTHdBQUFBQUFBR1EvQUFEc0xnQUFBQUFBQUFJQUFBQXNLd0FBQWdBQUFHZ3ZBRUdrM3dBTHlnRlVNQUFBYXdBQUFLZ0FBQUJKQUFBQXFRQUFBS29BQUFDckFBQUFyQUFBQUswQUFBQ3VBQUFBcndBQUFMQUFBQUN4QUFBQXNnQUFBTE1BQUFCT1UzUXpYMTh5TjI1MWJWOW5aWFJKZDA1VFh6RTVhWE4wY21WaGJXSjFabDlwZEdWeVlYUnZja2wzVGxOZk1URmphR0Z5WDNSeVlXbDBjMGwzUlVWRlJVVkZBRTVUZEROZlh6STVYMTl1ZFcxZloyVjBTWGRGUlFBQUFHUS9BQUFrTUFBQUFBQUFBQUVBQUFCZ0x3QUFBQUFBQUdRL0FBRGdMd0FBQUFBQUFBSUFBQUFzS3dBQUFnQUFBRHd3QUVINDRBQUwzZ0U4TVFBQWF3QUFBTFFBQUFCSkFBQUF0UUFBQUxZQUFBQzNBQUFBdUFBQUFMa0FBQUM2QUFBQXV3QUFBTHdBQUFCT1UzUXpYMTh5TjI1MWJWOXdkWFJKWTA1VFh6RTViM04wY21WaGJXSjFabDlwZEdWeVlYUnZja2xqVGxOZk1URmphR0Z5WDNSeVlXbDBjMGxqUlVWRlJVVkZBRTVUZEROZlh6STVYMTl1ZFcxZmNIVjBTV05GUlFCT1UzUXpYMTh5TVRSZlgyNTFiVjl3ZFhSZlltRnpaVVVBQU9BK0FBQUNNUUFBWkQ4QUFPd3dBQUFBQUFBQUFRQUFBQnd4QUFBQUFBQUFaRDhBQUtnd0FBQUFBQUFBQWdBQUFDd3JBQUFDQUFBQUpERUFRZURpQUF1K0FRUXlBQUJyQUFBQXZRQUFBRWtBQUFDK0FBQUF2d0FBQU1BQUFBREJBQUFBd2dBQUFNTUFBQURFQUFBQXhRQUFBRTVUZEROZlh6STNiblZ0WDNCMWRFbDNUbE5mTVRsdmMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNYZE9VMTh4TVdOb1lYSmZkSEpoYVhSelNYZEZSVVZGUlVVQVRsTjBNMTlmTWpsZlgyNTFiVjl3ZFhSSmQwVkZBQUFBWkQ4QUFOUXhBQUFBQUFBQUFRQUFBQnd4QUFBQUFBQUFaRDhBQUpBeEFBQUFBQUFBQWdBQUFDd3JBQUFDQUFBQTdERUFRYWprQUF1YUN3UXpBQURHQUFBQXh3QUFBRWtBQUFESUFBQUF5UUFBQU1vQUFBRExBQUFBekFBQUFNMEFBQURPQUFBQStQLy8vd1F6QUFEUEFBQUEwQUFBQU5FQUFBRFNBQUFBMHdBQUFOUUFBQURWQUFBQVRsTjBNMTlmTWpoMGFXMWxYMmRsZEVsalRsTmZNVGxwYzNSeVpXRnRZblZtWDJsMFpYSmhkRzl5U1dOT1UxOHhNV05vWVhKZmRISmhhWFJ6U1dORlJVVkZSVVVBVGxOME0xOWZNamwwYVcxbFgySmhjMlZGQU9BK0FBQzlNZ0FBVGxOME0xOWZNakl3WDE5MGFXMWxYMmRsZEY5algzTjBiM0poWjJWSlkwVkZBQUFBNEQ0QUFOZ3lBQUJrUHdBQWVESUFBQUFBQUFBREFBQUFMQ3NBQUFJQUFBRFFNZ0FBQWdBQUFQd3lBQUFBQ0FBQUFBQUFBUEF6QUFEV0FBQUExd0FBQUVrQUFBRFlBQUFBMlFBQUFOb0FBQURiQUFBQTNBQUFBTjBBQUFEZUFBQUErUC8vLy9BekFBRGZBQUFBNEFBQUFPRUFBQURpQUFBQTR3QUFBT1FBQUFEbEFBQUFUbE4wTTE5Zk1qaDBhVzFsWDJkbGRFbDNUbE5mTVRscGMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNYZE9VMTh4TVdOb1lYSmZkSEpoYVhSelNYZEZSVVZGUlVVQVRsTjBNMTlmTWpJd1gxOTBhVzFsWDJkbGRGOWpYM04wYjNKaFoyVkpkMFZGQUFEZ1BnQUF4VE1BQUdRL0FBQ0FNd0FBQUFBQUFBTUFBQUFzS3dBQUFnQUFBTkF5QUFBQ0FBQUE2RE1BQUFBSUFBQUFBQUFBbERRQUFPWUFBQURuQUFBQVNRQUFBT2dBQUFCT1UzUXpYMTh5T0hScGJXVmZjSFYwU1dOT1UxOHhPVzl6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlNVEJmWDNScGJXVmZjSFYwUlFBQUFPQStBQUIxTkFBQVpEOEFBREEwQUFBQUFBQUFBZ0FBQUN3ckFBQUNBQUFBakRRQUFBQUlBQUFBQUFBQUZEVUFBT2tBQUFEcUFBQUFTUUFBQU9zQUFBQk9VM1F6WDE4eU9IUnBiV1ZmY0hWMFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFBQUFBQmtQd0FBekRRQUFBQUFBQUFDQUFBQUxDc0FBQUlBQUFDTU5BQUFBQWdBQUFBQUFBQ29OUUFBYXdBQUFPd0FBQUJKQUFBQTdRQUFBTzRBQUFEdkFBQUE4QUFBQVBFQUFBRHlBQUFBOHdBQUFQUUFBQUQxQUFBQVRsTjBNMTlmTWpFd2JXOXVaWGx3ZFc1amRFbGpUR0l3UlVWRkFFNVRkRE5mWHpJeE1HMXZibVY1WDJKaGMyVkZBQUFBQU9BK0FBQ0lOUUFBWkQ4QUFHdzFBQUFBQUFBQUFnQUFBQ3dyQUFBQ0FBQUFvRFVBQUFJQUFBQUFBQUFBSERZQUFHc0FBQUQyQUFBQVNRQUFBUGNBQUFENEFBQUErUUFBQVBvQUFBRDdBQUFBL0FBQUFQMEFBQUQrQUFBQS93QUFBRTVUZEROZlh6SXhNRzF2Ym1WNWNIVnVZM1JKWTB4aU1VVkZSUUJrUHdBQUFEWUFBQUFBQUFBQ0FBQUFMQ3NBQUFJQUFBQ2dOUUFBQWdBQUFBQUFBQUNRTmdBQWF3QUFBQUFCQUFCSkFBQUFBUUVBQUFJQkFBQURBUUFBQkFFQUFBVUJBQUFHQVFBQUJ3RUFBQWdCQUFBSkFRQUFUbE4wTTE5Zk1qRXdiVzl1Wlhsd2RXNWpkRWwzVEdJd1JVVkZBR1EvQUFCME5nQUFBQUFBQUFJQUFBQXNLd0FBQWdBQUFLQTFBQUFDQUFBQUFBQUFBQVEzQUFCckFBQUFDZ0VBQUVrQUFBQUxBUUFBREFFQUFBMEJBQUFPQVFBQUR3RUFBQkFCQUFBUkFRQUFFZ0VBQUJNQkFBQk9VM1F6WDE4eU1UQnRiMjVsZVhCMWJtTjBTWGRNWWpGRlJVVUFaRDhBQU9nMkFBQUFBQUFBQWdBQUFDd3JBQUFDQUFBQW9EVUFBQUlBQUFBQUFBQUFxRGNBQUdzQUFBQVVBUUFBU1FBQUFCVUJBQUFXQVFBQVRsTjBNMTlmTWpsdGIyNWxlVjluWlhSSlkwNVRYekU1YVhOMGNtVmhiV0oxWmw5cGRHVnlZWFJ2Y2tsalRsTmZNVEZqYUdGeVgzUnlZV2wwYzBsalJVVkZSVVZGQUU1VGRETmZYekl4TVY5ZmJXOXVaWGxmWjJWMFNXTkZSUUFBNEQ0QUFJWTNBQUJrUHdBQVFEY0FBQUFBQUFBQ0FBQUFMQ3NBQUFJQUFBQ2dOd0JCek84QUM1b0JURGdBQUdzQUFBQVhBUUFBU1FBQUFCZ0JBQUFaQVFBQVRsTjBNMTlmTWpsdGIyNWxlVjluWlhSSmQwNVRYekU1YVhOMGNtVmhiV0oxWmw5cGRHVnlZWFJ2Y2tsM1RsTmZNVEZqYUdGeVgzUnlZV2wwYzBsM1JVVkZSVVZGQUU1VGRETmZYekl4TVY5ZmJXOXVaWGxmWjJWMFNYZEZSUUFBNEQ0QUFDbzRBQUJrUHdBQTVEY0FBQUFBQUFBQ0FBQUFMQ3NBQUFJQUFBQkVPQUJCOFBBQUM1b0I4RGdBQUdzQUFBQWFBUUFBU1FBQUFCc0JBQUFjQVFBQVRsTjBNMTlmTWpsdGIyNWxlVjl3ZFhSSlkwNVRYekU1YjNOMGNtVmhiV0oxWmw5cGRHVnlZWFJ2Y2tsalRsTmZNVEZqYUdGeVgzUnlZV2wwYzBsalJVVkZSVVZGQUU1VGRETmZYekl4TVY5ZmJXOXVaWGxmY0hWMFNXTkZSUUFBNEQ0QUFNNDRBQUJrUHdBQWlEZ0FBQUFBQUFBQ0FBQUFMQ3NBQUFJQUFBRG9PQUJCbFBJQUM1b0JsRGtBQUdzQUFBQWRBUUFBU1FBQUFCNEJBQUFmQVFBQVRsTjBNMTlmTWpsdGIyNWxlVjl3ZFhSSmQwNVRYekU1YjNOMGNtVmhiV0oxWmw5cGRHVnlZWFJ2Y2tsM1RsTmZNVEZqYUdGeVgzUnlZV2wwYzBsM1JVVkZSVVZGQUU1VGRETmZYekl4TVY5ZmJXOXVaWGxmY0hWMFNYZEZSUUFBNEQ0QUFISTVBQUJrUHdBQUxEa0FBQUFBQUFBQ0FBQUFMQ3NBQUFJQUFBQ01PUUJCdVBNQUM3a0lERG9BQUdzQUFBQWdBUUFBU1FBQUFDRUJBQUFpQVFBQUl3RUFBRTVUZEROZlh6STRiV1Z6YzJGblpYTkpZMFZGQUU1VGRETmZYekl4TTIxbGMzTmhaMlZ6WDJKaGMyVkZBQUFBQU9BK0FBRHBPUUFBWkQ4QUFOUTVBQUFBQUFBQUFnQUFBQ3dyQUFBQ0FBQUFCRG9BQUFJQUFBQUFBQUFBWkRvQUFHc0FBQUFrQVFBQVNRQUFBQ1VCQUFBbUFRQUFKd0VBQUU1VGRETmZYekk0YldWemMyRm5aWE5KZDBWRkFBQUFBR1EvQUFCTU9nQUFBQUFBQUFJQUFBQXNLd0FBQWdBQUFBUTZBQUFDQUFBQVV3QUFBSFVBQUFCdUFBQUFaQUFBQUdFQUFBQjVBQUFBQUFBQUFFMEFBQUJ2QUFBQWJnQUFBR1FBQUFCaEFBQUFlUUFBQUFBQUFBQlVBQUFBZFFBQUFHVUFBQUJ6QUFBQVpBQUFBR0VBQUFCNUFBQUFBQUFBQUZjQUFBQmxBQUFBWkFBQUFHNEFBQUJsQUFBQWN3QUFBR1FBQUFCaEFBQUFlUUFBQUFBQUFBQlVBQUFBYUFBQUFIVUFBQUJ5QUFBQWN3QUFBR1FBQUFCaEFBQUFlUUFBQUFBQUFBQkdBQUFBY2dBQUFHa0FBQUJrQUFBQVlRQUFBSGtBQUFBQUFBQUFVd0FBQUdFQUFBQjBBQUFBZFFBQUFISUFBQUJrQUFBQVlRQUFBSGtBQUFBQUFBQUFVd0FBQUhVQUFBQnVBQUFBQUFBQUFFMEFBQUJ2QUFBQWJnQUFBQUFBQUFCVUFBQUFkUUFBQUdVQUFBQUFBQUFBVndBQUFHVUFBQUJrQUFBQUFBQUFBRlFBQUFCb0FBQUFkUUFBQUFBQUFBQkdBQUFBY2dBQUFHa0FBQUFBQUFBQVV3QUFBR0VBQUFCMEFBQUFBQUFBQUVvQUFBQmhBQUFBYmdBQUFIVUFBQUJoQUFBQWNnQUFBSGtBQUFBQUFBQUFSZ0FBQUdVQUFBQmlBQUFBY2dBQUFIVUFBQUJoQUFBQWNnQUFBSGtBQUFBQUFBQUFUUUFBQUdFQUFBQnlBQUFBWXdBQUFHZ0FBQUFBQUFBQVFRQUFBSEFBQUFCeUFBQUFhUUFBQUd3QUFBQUFBQUFBVFFBQUFHRUFBQUI1QUFBQUFBQUFBRW9BQUFCMUFBQUFiZ0FBQUdVQUFBQUFBQUFBU2dBQUFIVUFBQUJzQUFBQWVRQUFBQUFBQUFCQkFBQUFkUUFBQUdjQUFBQjFBQUFBY3dBQUFIUUFBQUFBQUFBQVV3QUFBR1VBQUFCd0FBQUFkQUFBQUdVQUFBQnRBQUFBWWdBQUFHVUFBQUJ5QUFBQUFBQUFBRThBQUFCakFBQUFkQUFBQUc4QUFBQmlBQUFBWlFBQUFISUFBQUFBQUFBQVRnQUFBRzhBQUFCMkFBQUFaUUFBQUcwQUFBQmlBQUFBWlFBQUFISUFBQUFBQUFBQVJBQUFBR1VBQUFCakFBQUFaUUFBQUcwQUFBQmlBQUFBWlFBQUFISUFBQUFBQUFBQVNnQUFBR0VBQUFCdUFBQUFBQUFBQUVZQUFBQmxBQUFBWWdBQUFBQUFBQUJOQUFBQVlRQUFBSElBQUFBQUFBQUFRUUFBQUhBQUFBQnlBQUFBQUFBQUFFb0FBQUIxQUFBQWJnQUFBQUFBQUFCS0FBQUFkUUFBQUd3QUFBQUFBQUFBUVFBQUFIVUFBQUJuQUFBQUFBQUFBRk1BQUFCbEFBQUFjQUFBQUFBQUFBQlBBQUFBWXdBQUFIUUFBQUFBQUFBQVRnQUFBRzhBQUFCMkFBQUFBQUFBQUVRQUFBQmxBQUFBWXdBQUFBQUFBQUJCQUFBQVRRQUFBQUFBQUFCUUFBQUFUUUJCL1BzQUMrSUUvRElBQU04QUFBRFFBQUFBMFFBQUFOSUFBQURUQUFBQTFBQUFBTlVBQUFBQUFBQUE2RE1BQU44QUFBRGdBQUFBNFFBQUFPSUFBQURqQUFBQTVBQUFBT1VBQUFBQUFBQUFjRDRBQUNnQkFBQXBBUUFBS2dFQUFFNVRkRE5mWHpJeE5GOWZjMmhoY21Wa1gyTnZkVzUwUlFBQUFBRGdQZ0FBVkQ0QUFFNHhNRjlmWTNoNFlXSnBkakV4Tmw5ZmMyaHBiVjkwZVhCbFgybHVabTlGQUFBQUFBZy9BQUI0UGdBQVdFQUFBRTR4TUY5ZlkzaDRZV0pwZGpFeE4xOWZZMnhoYzNOZmRIbHdaVjlwYm1adlJRQUFBQWcvQUFDb1BnQUFuRDRBQUFBQUFBRE1QZ0FBS3dFQUFDd0JBQUF0QVFBQUxnRUFBQzhCQUFBd0FRQUFNUUVBQURJQkFBQUFBQUFBVUQ4QUFDc0JBQUF6QVFBQUxRRUFBQzRCQUFBdkFRQUFOQUVBQURVQkFBQTJBUUFBVGpFd1gxOWplSGhoWW1sMk1USXdYMTl6YVY5amJHRnpjMTkwZVhCbFgybHVabTlGQUFBQUFBZy9BQUFvUHdBQXpENEFBQUFBQUFDc1B3QUFLd0VBQURjQkFBQXRBUUFBTGdFQUFDOEJBQUE0QVFBQU9RRUFBRG9CQUFCT01UQmZYMk40ZUdGaWFYWXhNakZmWDNadGFWOWpiR0Z6YzE5MGVYQmxYMmx1Wm05RkFBQUFDRDhBQUlRL0FBRE1QZ0FBQUFBQUFOdy9BQUE3QVFBQVBBRUFBRDBCQUFCVGREbGxlR05sY0hScGIyNEFBQUFBNEQ0QUFNdy9BQUFBQUFBQUNFQUFBQU1BQUFBK0FRQUFQd0VBQUZOME1URnNiMmRwWTE5bGNuSnZjZ0FJUHdBQStEOEFBTncvQUFBQUFBQUFQRUFBQUFNQUFBQkFBUUFBUHdFQUFGTjBNVEpzWlc1bmRHaGZaWEp5YjNJQUFBQUFDRDhBQUNoQUFBQUlRQUFBVTNRNWRIbHdaVjlwYm1adkFBQUFBT0ErQUFCSVFBQkI0SUFCQ3dLUWF3PT0iKSxMYz0oWWM9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuY3VycmVudFNjcmlwdD9kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYzp2b2lkIDAsZnVuY3Rpb24oQSl7KEE9QXx8e30pLmluc3RhbnRpYXRlV2FzbT1mdW5jdGlvbihBLGcpe0hjKEEpLnRoZW4oKGZ1bmN0aW9uKEEpe2coe2V4cG9ydHM6QS5leHBvcnRzfSl9KSl9O3ZhciBnLEksUT12b2lkIDAhPT1BP0E6e307US5yZWFkeT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oQSxCKXtnPUEsST1CfSkpO3ZhciBFLEM9T2JqZWN0LmFzc2lnbih7fSxRKSx0PSIuL3RoaXMucHJvZ3JhbSIsaT0hMCxlPSIiO2U9c2VsZi5sb2NhdGlvbi5ocmVmLFljJiYoZT1ZYyksZT0wIT09ZS5pbmRleE9mKCJibG9iOiIpP2Uuc3Vic3RyKDAsZS5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpOiIiLEU9ZnVuY3Rpb24oQSl7dmFyIGc9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBnLm9wZW4oIkdFVCIsQSwhMSksZy5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIixnLnNlbmQobnVsbCksbmV3IFVpbnQ4QXJyYXkoZy5yZXNwb25zZSl9LFEucHJpbnR8fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7dmFyIG8scixuPVEucHJpbnRFcnJ8fGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24oUSxDKSxDPW51bGwsUS5hcmd1bWVudHMmJlEuYXJndW1lbnRzLFEudGhpc1Byb2dyYW0mJih0PVEudGhpc1Byb2dyYW0pLFEucXVpdCYmUS5xdWl0LFEud2FzbUJpbmFyeSYmKG89US53YXNtQmluYXJ5KSxRLm5vRXhpdFJ1bnRpbWUsIm9iamVjdCIhPSgidW5kZWZpbmVkIj09dHlwZW9mIFdlYkFzc2VtYmx5PyJ1bmRlZmluZWQiOkIoV2ViQXNzZW1ibHkpKSYmUygibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpO3ZhciBhLHMsYyxoLGYsdT0hMSx5PSJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwO2Z1bmN0aW9uIEQoQSxnKXtyZXR1cm4gQT9mdW5jdGlvbihBLGcsSSl7Zm9yKHZhciBCPWcrSSxRPWc7QVtRXSYmIShRPj1CKTspKytRO2lmKFEtZz4xNiYmQS5zdWJhcnJheSYmeSlyZXR1cm4geS5kZWNvZGUoQS5zdWJhcnJheShnLFEpKTtmb3IodmFyIEU9IiI7ZzxROyl7dmFyIEM9QVtnKytdO2lmKDEyOCZDKXt2YXIgdD02MyZBW2crK107aWYoMTkyIT0oMjI0JkMpKXt2YXIgaT02MyZBW2crK107aWYoKEM9MjI0PT0oMjQwJkMpPygxNSZDKTw8MTJ8dDw8NnxpOig3JkMpPDwxOHx0PDwxMnxpPDw2fDYzJkFbZysrXSk8NjU1MzYpRSs9U3RyaW5nLmZyb21DaGFyQ29kZShDKTtlbHNle3ZhciBlPUMtNjU1MzY7RSs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxlPj4xMCw1NjMyMHwxMDIzJmUpfX1lbHNlIEUrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJkMpPDw2fHQpfWVsc2UgRSs9U3RyaW5nLmZyb21DaGFyQ29kZShDKX1yZXR1cm4gRX0oYyxBLGcpOiIifWZ1bmN0aW9uIGwoQSxnLEksQil7aWYoIShCPjApKXJldHVybiAwO2Zvcih2YXIgUT1JLEU9SStCLTEsQz0wO0M8QS5sZW5ndGg7KytDKXt2YXIgdD1BLmNoYXJDb2RlQXQoQyk7aWYodD49NTUyOTYmJnQ8PTU3MzQzJiYodD02NTUzNisoKDEwMjMmdCk8PDEwKXwxMDIzJkEuY2hhckNvZGVBdCgrK0MpKSx0PD0xMjcpe2lmKEk+PUUpYnJlYWs7Z1tJKytdPXR9ZWxzZSBpZih0PD0yMDQ3KXtpZihJKzE+PUUpYnJlYWs7Z1tJKytdPTE5Mnx0Pj42LGdbSSsrXT0xMjh8NjMmdH1lbHNlIGlmKHQ8PTY1NTM1KXtpZihJKzI+PUUpYnJlYWs7Z1tJKytdPTIyNHx0Pj4xMixnW0krK109MTI4fHQ+PjYmNjMsZ1tJKytdPTEyOHw2MyZ0fWVsc2V7aWYoSSszPj1FKWJyZWFrO2dbSSsrXT0yNDB8dD4+MTgsZ1tJKytdPTEyOHx0Pj4xMiY2MyxnW0krK109MTI4fHQ+PjYmNjMsZ1tJKytdPTEyOHw2MyZ0fX1yZXR1cm4gZ1tJXT0wLEktUX1mdW5jdGlvbiB3KEEpe2Zvcih2YXIgZz0wLEk9MDtJPEEubGVuZ3RoOysrSSl7dmFyIEI9QS5jaGFyQ29kZUF0KEkpO0I+PTU1Mjk2JiZCPD01NzM0MyYmKEI9NjU1MzYrKCgxMDIzJkIpPDwxMCl8MTAyMyZBLmNoYXJDb2RlQXQoKytJKSksQjw9MTI3PysrZzpnKz1CPD0yMDQ3PzI6Qjw9NjU1MzU/Mzo0fXJldHVybiBnfWZ1bmN0aW9uIGQoQSl7YT1BLFEuSEVBUDg9cz1uZXcgSW50OEFycmF5KEEpLFEuSEVBUDE2PW5ldyBJbnQxNkFycmF5KEEpLFEuSEVBUDMyPWg9bmV3IEludDMyQXJyYXkoQSksUS5IRUFQVTg9Yz1uZXcgVWludDhBcnJheShBKSxRLkhFQVBVMTY9bmV3IFVpbnQxNkFycmF5KEEpLFEuSEVBUFUzMj1uZXcgVWludDMyQXJyYXkoQSksUS5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoQSksUS5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoQSl9US5JTklUSUFMX01FTU9SWTt2YXIgRj1bXSxSPVtdLEc9W10saz0wLHA9bnVsbDtmdW5jdGlvbiBTKEEpe1Eub25BYm9ydCYmUS5vbkFib3J0KEEpLG4oQT0iQWJvcnRlZCgiK0ErIikiKSx1PSEwLEErPSIuIEJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIGZvciBtb3JlIGluZm8uIjt2YXIgZz1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKEEpO3Rocm93IEkoZyksZ31RLnByZWxvYWRlZEltYWdlcz17fSxRLnByZWxvYWRlZEF1ZGlvcz17fTt2YXIgVSxNLE49ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiO2Z1bmN0aW9uIHYoQSl7cmV0dXJuIEEuc3RhcnRzV2l0aChOKX1mdW5jdGlvbiBZKEEpe3RyeXtpZihBPT1VJiZvKXJldHVybiBuZXcgVWludDhBcnJheShvKTtpZihFKXJldHVybiBFKEEpO3Rocm93ImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIn1jYXRjaChnKXtTKGcpfX1mdW5jdGlvbiBIKEEpe2Zvcig7QS5sZW5ndGg+MDspe3ZhciBnPUEuc2hpZnQoKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyl7dmFyIEk9Zy5mdW5jOyJudW1iZXIiPT10eXBlb2YgST92b2lkIDA9PT1nLmFyZz9MKEkpKCk6TChJKShnLmFyZyk6SSh2b2lkIDA9PT1nLmFyZz9udWxsOmcuYXJnKX1lbHNlIGcoUSl9fWZ1bmN0aW9uIEwoQSl7cmV0dXJuIGYuZ2V0KEEpfWZ1bmN0aW9uIEooQSl7dGhpcy5leGNQdHI9QSx0aGlzLnB0cj1BLTE2LHRoaXMuc2V0X3R5cGU9ZnVuY3Rpb24oQSl7aFt0aGlzLnB0cis0Pj4yXT1BfSx0aGlzLmdldF90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIGhbdGhpcy5wdHIrND4+Ml19LHRoaXMuc2V0X2Rlc3RydWN0b3I9ZnVuY3Rpb24oQSl7aFt0aGlzLnB0cis4Pj4yXT1BfSx0aGlzLmdldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIGhbdGhpcy5wdHIrOD4+Ml19LHRoaXMuc2V0X3JlZmNvdW50PWZ1bmN0aW9uKEEpe2hbdGhpcy5wdHI+PjJdPUF9LHRoaXMuc2V0X2NhdWdodD1mdW5jdGlvbihBKXtBPUE/MTowLHNbdGhpcy5wdHIrMTI+PjBdPUF9LHRoaXMuZ2V0X2NhdWdodD1mdW5jdGlvbigpe3JldHVybiAwIT1zW3RoaXMucHRyKzEyPj4wXX0sdGhpcy5zZXRfcmV0aHJvd249ZnVuY3Rpb24oQSl7QT1BPzE6MCxzW3RoaXMucHRyKzEzPj4wXT1BfSx0aGlzLmdldF9yZXRocm93bj1mdW5jdGlvbigpe3JldHVybiAwIT1zW3RoaXMucHRyKzEzPj4wXX0sdGhpcy5pbml0PWZ1bmN0aW9uKEEsZyl7dGhpcy5zZXRfdHlwZShBKSx0aGlzLnNldF9kZXN0cnVjdG9yKGcpLHRoaXMuc2V0X3JlZmNvdW50KDApLHRoaXMuc2V0X2NhdWdodCghMSksdGhpcy5zZXRfcmV0aHJvd24oITEpfSx0aGlzLmFkZF9yZWY9ZnVuY3Rpb24oKXt2YXIgQT1oW3RoaXMucHRyPj4yXTtoW3RoaXMucHRyPj4yXT1BKzF9LHRoaXMucmVsZWFzZV9yZWY9ZnVuY3Rpb24oKXt2YXIgQT1oW3RoaXMucHRyPj4yXTtyZXR1cm4gaFt0aGlzLnB0cj4+Ml09QS0xLDE9PT1BfX1mdW5jdGlvbiBLKEEpe3RyeXtyZXR1cm4gci5ncm93KEEtYS5ieXRlTGVuZ3RoKzY1NTM1Pj4+MTYpLGQoci5idWZmZXIpLDF9Y2F0Y2goZyl7fX12KFU9ImF3Lndhc20iKXx8KE09VSxVPVEubG9jYXRlRmlsZT9RLmxvY2F0ZUZpbGUoTSxlKTplK00pO3ZhciBtPXt9O2Z1bmN0aW9uIHgoKXtpZigheC5zdHJpbmdzKXt2YXIgQT17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOigib2JqZWN0Ij09KCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yPyJ1bmRlZmluZWQiOkIobmF2aWdhdG9yKSkmJm5hdmlnYXRvci5sYW5ndWFnZXMmJm5hdmlnYXRvci5sYW5ndWFnZXNbMF18fCJDIikucmVwbGFjZSgiLSIsIl8iKSsiLlVURi04IixfOnR8fCIuL3RoaXMucHJvZ3JhbSJ9O2Zvcih2YXIgZyBpbiBtKXZvaWQgMD09PW1bZ10/ZGVsZXRlIEFbZ106QVtnXT1tW2ddO3ZhciBJPVtdO2Zvcih2YXIgZyBpbiBBKUkucHVzaChnKyI9IitBW2ddKTt4LnN0cmluZ3M9SX1yZXR1cm4geC5zdHJpbmdzfWZ1bmN0aW9uIHEoQSl7cmV0dXJuIEElND09MCYmKEElMTAwIT0wfHxBJTQwMD09MCl9ZnVuY3Rpb24gYihBLGcpe2Zvcih2YXIgST0wLEI9MDtCPD1nO0krPUFbQisrXSk7cmV0dXJuIEl9dmFyIFQ9WzMxLDI5LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxqPVszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV07ZnVuY3Rpb24gTyhBLGcpe2Zvcih2YXIgST1uZXcgRGF0ZShBLmdldFRpbWUoKSk7Zz4wOyl7dmFyIEI9cShJLmdldEZ1bGxZZWFyKCkpLFE9SS5nZXRNb250aCgpLEU9KEI/VDpqKVtRXTtpZighKGc+RS1JLmdldERhdGUoKSkpcmV0dXJuIEkuc2V0RGF0ZShJLmdldERhdGUoKStnKSxJO2ctPUUtSS5nZXREYXRlKCkrMSxJLnNldERhdGUoMSksUTwxMT9JLnNldE1vbnRoKFErMSk6KEkuc2V0TW9udGgoMCksSS5zZXRGdWxsWWVhcihJLmdldEZ1bGxZZWFyKCkrMSkpfXJldHVybiBJfWZ1bmN0aW9uIFooQSxnLEksQil7dmFyIFE9aFtCKzQwPj4yXSxFPXt0bV9zZWM6aFtCPj4yXSx0bV9taW46aFtCKzQ+PjJdLHRtX2hvdXI6aFtCKzg+PjJdLHRtX21kYXk6aFtCKzEyPj4yXSx0bV9tb246aFtCKzE2Pj4yXSx0bV95ZWFyOmhbQisyMD4+Ml0sdG1fd2RheTpoW0IrMjQ+PjJdLHRtX3lkYXk6aFtCKzI4Pj4yXSx0bV9pc2RzdDpoW0IrMzI+PjJdLHRtX2dtdG9mZjpoW0IrMzY+PjJdLHRtX3pvbmU6UT9EKFEpOiIifSxDPUQoSSksdD17IiVjIjoiJWEgJWIgJWQgJUg6JU06JVMgJVkiLCIlRCI6IiVtLyVkLyV5IiwiJUYiOiIlWS0lbS0lZCIsIiVoIjoiJWIiLCIlciI6IiVJOiVNOiVTICVwIiwiJVIiOiIlSDolTSIsIiVUIjoiJUg6JU06JVMiLCIleCI6IiVtLyVkLyV5IiwiJVgiOiIlSDolTTolUyIsIiVFYyI6IiVjIiwiJUVDIjoiJUMiLCIlRXgiOiIlbS8lZC8leSIsIiVFWCI6IiVIOiVNOiVTIiwiJUV5IjoiJXkiLCIlRVkiOiIlWSIsIiVPZCI6IiVkIiwiJU9lIjoiJWUiLCIlT0giOiIlSCIsIiVPSSI6IiVJIiwiJU9tIjoiJW0iLCIlT00iOiIlTSIsIiVPUyI6IiVTIiwiJU91IjoiJXUiLCIlT1UiOiIlVSIsIiVPViI6IiVWIiwiJU93IjoiJXciLCIlT1ciOiIlVyIsIiVPeSI6IiV5In07Zm9yKHZhciBpIGluIHQpQz1DLnJlcGxhY2UobmV3IFJlZ0V4cChpLCJnIiksdFtpXSk7dmFyIGU9WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLG89WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdO2Z1bmN0aW9uIHIoQSxnLEkpe2Zvcih2YXIgQj0ibnVtYmVyIj09dHlwZW9mIEE/QS50b1N0cmluZygpOkF8fCIiO0IubGVuZ3RoPGc7KUI9SVswXStCO3JldHVybiBCfWZ1bmN0aW9uIG4oQSxnKXtyZXR1cm4gcihBLGcsIjAiKX1mdW5jdGlvbiBhKEEsZyl7ZnVuY3Rpb24gSShBKXtyZXR1cm4gQTwwPy0xOkE+MD8xOjB9dmFyIEI7cmV0dXJuIDA9PT0oQj1JKEEuZ2V0RnVsbFllYXIoKS1nLmdldEZ1bGxZZWFyKCkpKSYmMD09PShCPUkoQS5nZXRNb250aCgpLWcuZ2V0TW9udGgoKSkpJiYoQj1JKEEuZ2V0RGF0ZSgpLWcuZ2V0RGF0ZSgpKSksQn1mdW5jdGlvbiBjKEEpe3N3aXRjaChBLmdldERheSgpKXtjYXNlIDA6cmV0dXJuIG5ldyBEYXRlKEEuZ2V0RnVsbFllYXIoKS0xLDExLDI5KTtjYXNlIDE6cmV0dXJuIEE7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShBLmdldEZ1bGxZZWFyKCksMCwzKTtjYXNlIDM6cmV0dXJuIG5ldyBEYXRlKEEuZ2V0RnVsbFllYXIoKSwwLDIpO2Nhc2UgNDpyZXR1cm4gbmV3IERhdGUoQS5nZXRGdWxsWWVhcigpLDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShBLmdldEZ1bGxZZWFyKCktMSwxMSwzMSk7Y2FzZSA2OnJldHVybiBuZXcgRGF0ZShBLmdldEZ1bGxZZWFyKCktMSwxMSwzMCl9fWZ1bmN0aW9uIGYoQSl7dmFyIGc9TyhuZXcgRGF0ZShBLnRtX3llYXIrMTkwMCwwLDEpLEEudG1feWRheSksST1uZXcgRGF0ZShnLmdldEZ1bGxZZWFyKCksMCw0KSxCPW5ldyBEYXRlKGcuZ2V0RnVsbFllYXIoKSsxLDAsNCksUT1jKEkpLEU9YyhCKTtyZXR1cm4gYShRLGcpPD0wP2EoRSxnKTw9MD9nLmdldEZ1bGxZZWFyKCkrMTpnLmdldEZ1bGxZZWFyKCk6Zy5nZXRGdWxsWWVhcigpLTF9dmFyIHU9eyIlYSI6ZnVuY3Rpb24oQSl7cmV0dXJuIGVbQS50bV93ZGF5XS5zdWJzdHJpbmcoMCwzKX0sIiVBIjpmdW5jdGlvbihBKXtyZXR1cm4gZVtBLnRtX3dkYXldfSwiJWIiOmZ1bmN0aW9uKEEpe3JldHVybiBvW0EudG1fbW9uXS5zdWJzdHJpbmcoMCwzKX0sIiVCIjpmdW5jdGlvbihBKXtyZXR1cm4gb1tBLnRtX21vbl19LCIlQyI6ZnVuY3Rpb24oQSl7cmV0dXJuIG4oKEEudG1feWVhcisxOTAwKS8xMDB8MCwyKX0sIiVkIjpmdW5jdGlvbihBKXtyZXR1cm4gbihBLnRtX21kYXksMil9LCIlZSI6ZnVuY3Rpb24oQSl7cmV0dXJuIHIoQS50bV9tZGF5LDIsIiAiKX0sIiVnIjpmdW5jdGlvbihBKXtyZXR1cm4gZihBKS50b1N0cmluZygpLnN1YnN0cmluZygyKX0sIiVHIjpmdW5jdGlvbihBKXtyZXR1cm4gZihBKX0sIiVIIjpmdW5jdGlvbihBKXtyZXR1cm4gbihBLnRtX2hvdXIsMil9LCIlSSI6ZnVuY3Rpb24oQSl7dmFyIGc9QS50bV9ob3VyO3JldHVybiAwPT1nP2c9MTI6Zz4xMiYmKGctPTEyKSxuKGcsMil9LCIlaiI6ZnVuY3Rpb24oQSl7cmV0dXJuIG4oQS50bV9tZGF5K2IocShBLnRtX3llYXIrMTkwMCk/VDpqLEEudG1fbW9uLTEpLDMpfSwiJW0iOmZ1bmN0aW9uKEEpe3JldHVybiBuKEEudG1fbW9uKzEsMil9LCIlTSI6ZnVuY3Rpb24oQSl7cmV0dXJuIG4oQS50bV9taW4sMil9LCIlbiI6ZnVuY3Rpb24oKXtyZXR1cm4iXG4ifSwiJXAiOmZ1bmN0aW9uKEEpe3JldHVybiBBLnRtX2hvdXI+PTAmJkEudG1faG91cjwxMj8iQU0iOiJQTSJ9LCIlUyI6ZnVuY3Rpb24oQSl7cmV0dXJuIG4oQS50bV9zZWMsMil9LCIldCI6ZnVuY3Rpb24oKXtyZXR1cm4iXHQifSwiJXUiOmZ1bmN0aW9uKEEpe3JldHVybiBBLnRtX3dkYXl8fDd9LCIlVSI6ZnVuY3Rpb24oQSl7dmFyIGc9bmV3IERhdGUoQS50bV95ZWFyKzE5MDAsMCwxKSxJPTA9PT1nLmdldERheSgpP2c6TyhnLDctZy5nZXREYXkoKSksQj1uZXcgRGF0ZShBLnRtX3llYXIrMTkwMCxBLnRtX21vbixBLnRtX21kYXkpO2lmKGEoSSxCKTwwKXt2YXIgUT1iKHEoQi5nZXRGdWxsWWVhcigpKT9UOmosQi5nZXRNb250aCgpLTEpLTMxLEU9MzEtSS5nZXREYXRlKCkrUStCLmdldERhdGUoKTtyZXR1cm4gbihNYXRoLmNlaWwoRS83KSwyKX1yZXR1cm4gMD09PWEoSSxnKT8iMDEiOiIwMCJ9LCIlViI6ZnVuY3Rpb24oQSl7dmFyIGcsST1uZXcgRGF0ZShBLnRtX3llYXIrMTkwMCwwLDQpLEI9bmV3IERhdGUoQS50bV95ZWFyKzE5MDEsMCw0KSxRPWMoSSksRT1jKEIpLEM9TyhuZXcgRGF0ZShBLnRtX3llYXIrMTkwMCwwLDEpLEEudG1feWRheSk7cmV0dXJuIGEoQyxRKTwwPyI1MyI6YShFLEMpPD0wPyIwMSI6KGc9US5nZXRGdWxsWWVhcigpPEEudG1feWVhcisxOTAwP0EudG1feWRheSszMi1RLmdldERhdGUoKTpBLnRtX3lkYXkrMS1RLmdldERhdGUoKSxuKE1hdGguY2VpbChnLzcpLDIpKX0sIiV3IjpmdW5jdGlvbihBKXtyZXR1cm4gQS50bV93ZGF5fSwiJVciOmZ1bmN0aW9uKEEpe3ZhciBnPW5ldyBEYXRlKEEudG1feWVhciwwLDEpLEk9MT09PWcuZ2V0RGF5KCk/ZzpPKGcsMD09PWcuZ2V0RGF5KCk/MTo3LWcuZ2V0RGF5KCkrMSksQj1uZXcgRGF0ZShBLnRtX3llYXIrMTkwMCxBLnRtX21vbixBLnRtX21kYXkpO2lmKGEoSSxCKTwwKXt2YXIgUT1iKHEoQi5nZXRGdWxsWWVhcigpKT9UOmosQi5nZXRNb250aCgpLTEpLTMxLEU9MzEtSS5nZXREYXRlKCkrUStCLmdldERhdGUoKTtyZXR1cm4gbihNYXRoLmNlaWwoRS83KSwyKX1yZXR1cm4gMD09PWEoSSxnKT8iMDEiOiIwMCJ9LCIleSI6ZnVuY3Rpb24oQSl7cmV0dXJuKEEudG1feWVhcisxOTAwKS50b1N0cmluZygpLnN1YnN0cmluZygyKX0sIiVZIjpmdW5jdGlvbihBKXtyZXR1cm4gQS50bV95ZWFyKzE5MDB9LCIleiI6ZnVuY3Rpb24oQSl7dmFyIGc9QS50bV9nbXRvZmYsST1nPj0wO3JldHVybiBnPShnPU1hdGguYWJzKGcpLzYwKS82MCoxMDArZyU2MCwoST8iKyI6Ii0iKStTdHJpbmcoIjAwMDAiK2cpLnNsaWNlKC00KX0sIiVaIjpmdW5jdGlvbihBKXtyZXR1cm4gQS50bV96b25lfSwiJSUiOmZ1bmN0aW9uKCl7cmV0dXJuIiUifX07Zm9yKHZhciBpIGluIEM9Qy5yZXBsYWNlKC8lJS9nLCJcMFwwIiksdSlDLmluY2x1ZGVzKGkpJiYoQz1DLnJlcGxhY2UobmV3IFJlZ0V4cChpLCJnIiksdVtpXShFKSkpO3ZhciB5LGwsdz1QKEM9Qy5yZXBsYWNlKC9cMFwwL2csIiUiKSwhMSk7cmV0dXJuIHcubGVuZ3RoPmc/MDooeT13LGw9QSxzLnNldCh5LGwpLHcubGVuZ3RoLTEpfWZ1bmN0aW9uIFAoQSxnLEkpe3ZhciBCPUk+MD9JOncoQSkrMSxRPW5ldyBBcnJheShCKSxFPWwoQSxRLDAsUS5sZW5ndGgpO3JldHVybiBnJiYoUS5sZW5ndGg9RSksUX12YXIgVz17aDpmdW5jdGlvbihBKXtyZXR1cm4gWChBKzE2KSsxNn0sZzpmdW5jdGlvbihBLGcsSSl7dGhyb3cgbmV3IEooQSkuaW5pdChnLEkpLEF9LGE6ZnVuY3Rpb24oKXtTKCIiKX0sZjpmdW5jdGlvbihBLGcsSSl7Yy5jb3B5V2l0aGluKEEsZyxnK0kpfSxlOmZ1bmN0aW9uKEEpe3ZhciBnPWMubGVuZ3RoLEk9MjE0NzQ4MzY0ODtpZigoQT4+Pj0wKT5JKXJldHVybiExO2Zvcih2YXIgQixRLEU9MTtFPD00O0UqPTIpe3ZhciBDPWcqKDErLjIvRSk7aWYoQz1NYXRoLm1pbihDLEErMTAwNjYzMjk2KSxLKE1hdGgubWluKEksKEI9TWF0aC5tYXgoQSxDKSkrKChRPTY1NTM2KS1CJVEpJVEpKSlyZXR1cm4hMH1yZXR1cm4hMX0sYzpmdW5jdGlvbihBLGcpe3ZhciBJPTA7cmV0dXJuIHgoKS5mb3JFYWNoKChmdW5jdGlvbihCLFEpe3ZhciBFPWcrSTtoW0ErNCpRPj4yXT1FLGZ1bmN0aW9uKEEsZyxJKXtmb3IodmFyIEI9MDtCPEEubGVuZ3RoOysrQilzW2crKz4+MF09QS5jaGFyQ29kZUF0KEIpO0l8fChzW2c+PjBdPTApfShCLEUpLEkrPUIubGVuZ3RoKzF9KSksMH0sZDpmdW5jdGlvbihBLGcpe3ZhciBJPXgoKTtoW0E+PjJdPUkubGVuZ3RoO3ZhciBCPTA7cmV0dXJuIEkuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Qis9QS5sZW5ndGgrMX0pKSxoW2c+PjJdPUIsMH0sYjpmdW5jdGlvbihBLGcsSSxCKXtyZXR1cm4gWihBLGcsSSxCKX19OyFmdW5jdGlvbigpe3ZhciBBPXthOld9O2Z1bmN0aW9uIGcoQSxnKXt2YXIgSSxCPUEuZXhwb3J0cztRLmFzbT1CLGQoKHI9US5hc20uaSkuYnVmZmVyKSxmPVEuYXNtLnQsST1RLmFzbS5qLFIudW5zaGlmdChJKSxmdW5jdGlvbihBKXtpZihrLS0sUS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzJiZRLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMoayksMD09ayYmcCl7dmFyIGc9cDtwPW51bGwsZygpfX0oKX1mdW5jdGlvbiBCKEEpe2coQS5pbnN0YW5jZSl9ZnVuY3Rpb24gRShnKXtyZXR1cm4oIW8mJmkmJiJmdW5jdGlvbiI9PXR5cGVvZiBmZXRjaD9mZXRjaChVLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbigoZnVuY3Rpb24oQSl7aWYoIUEub2spdGhyb3ciZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIitVKyInIjtyZXR1cm4gQS5hcnJheUJ1ZmZlcigpfSkpLmNhdGNoKChmdW5jdGlvbigpe3JldHVybiBZKFUpfSkpOlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFkoVSl9KSkpLnRoZW4oKGZ1bmN0aW9uKGcpe3JldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShnLEEpfSkpLnRoZW4oKGZ1bmN0aW9uKEEpe3JldHVybiBBfSkpLnRoZW4oZywoZnVuY3Rpb24oQSl7bigiZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogIitBKSxTKEEpfSkpfWlmKGsrKyxRLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJlEubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhrKSxRLmluc3RhbnRpYXRlV2FzbSl0cnl7cmV0dXJuIFEuaW5zdGFudGlhdGVXYXNtKEEsZyl9Y2F0Y2goQyl7cmV0dXJuIG4oIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIrQyksITF9KG98fCJmdW5jdGlvbiIhPXR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZ3x8dihVKXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGZldGNoP0UoQik6ZmV0Y2goVSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oKGZ1bmN0aW9uKGcpe3JldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhnLEEpLnRoZW4oQiwoZnVuY3Rpb24oQSl7cmV0dXJuIG4oIndhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAiK0EpLG4oImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIiksRShCKX0pKX0pKSkuY2F0Y2goSSl9KCksUS5fX193YXNtX2NhbGxfY3RvcnM9ZnVuY3Rpb24oKXtyZXR1cm4oUS5fX193YXNtX2NhbGxfY3RvcnM9US5hc20uaikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgVixYPVEuX21hbGxvYz1mdW5jdGlvbigpe3JldHVybihYPVEuX21hbGxvYz1RLmFzbS5rKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIHooQSl7ZnVuY3Rpb24gSSgpe1Z8fChWPSEwLFEuY2FsbGVkUnVuPSEwLHV8fChIKFIpLGcoUSksUS5vblJ1bnRpbWVJbml0aWFsaXplZCYmUS5vblJ1bnRpbWVJbml0aWFsaXplZCgpLGZ1bmN0aW9uKCl7aWYoUS5wb3N0UnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2YgUS5wb3N0UnVuJiYoUS5wb3N0UnVuPVtRLnBvc3RSdW5dKTtRLnBvc3RSdW4ubGVuZ3RoOylBPVEucG9zdFJ1bi5zaGlmdCgpLEcudW5zaGlmdChBKTt2YXIgQTtIKEcpfSgpKSl9az4wfHwoZnVuY3Rpb24oKXtpZihRLnByZVJ1bilmb3IoImZ1bmN0aW9uIj09dHlwZW9mIFEucHJlUnVuJiYoUS5wcmVSdW49W1EucHJlUnVuXSk7US5wcmVSdW4ubGVuZ3RoOylBPVEucHJlUnVuLnNoaWZ0KCksRi51bnNoaWZ0KEEpO3ZhciBBO0goRil9KCksaz4wfHwoUS5zZXRTdGF0dXM/KFEuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe1Euc2V0U3RhdHVzKCIiKX0pLDEpLEkoKX0pLDEpKTpJKCkpKX1pZihRLl9mcmVlPWZ1bmN0aW9uKCl7cmV0dXJuKFEuX2ZyZWU9US5hc20ubCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRLl9vcGVuQm94PWZ1bmN0aW9uKCl7cmV0dXJuKFEuX29wZW5Cb3g9US5hc20ubSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRLl9kZXNjcnlwdD1mdW5jdGlvbigpe3JldHVybihRLl9kZXNjcnlwdD1RLmFzbS5uKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFEuX2Rlc2NyeXB0S2RzS2V5PWZ1bmN0aW9uKCl7cmV0dXJuKFEuX2Rlc2NyeXB0S2RzS2V5PVEuYXNtLm8pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUS5fZGVzY3J5cHRLZXk9ZnVuY3Rpb24oKXtyZXR1cm4oUS5fZGVzY3J5cHRLZXk9US5hc20ucCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRLl9kZXNjcnlwdENCQz1mdW5jdGlvbigpe3JldHVybihRLl9kZXNjcnlwdENCQz1RLmFzbS5xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFEuX3JlbGVhc2U9ZnVuY3Rpb24oKXtyZXR1cm4oUS5fcmVsZWFzZT1RLmFzbS5yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFEuX3NldFJhdz1mdW5jdGlvbigpe3JldHVybihRLl9zZXRSYXc9US5hc20ucykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRLmludEFycmF5RnJvbVN0cmluZz1QLFEuVVRGOFRvU3RyaW5nPUQsUS5hbGxvY2F0ZVVURjg9ZnVuY3Rpb24oQSl7dmFyIGc9dyhBKSsxLEk9WChnKTtyZXR1cm4gSSYmbChBLHMsSSxnKSxJfSxwPWZ1bmN0aW9uIEEoKXtWfHx6KCksVnx8KHA9QSl9LFEucnVuPXosUS5wcmVJbml0KWZvcigiZnVuY3Rpb24iPT10eXBlb2YgUS5wcmVJbml0JiYoUS5wcmVJbml0PVtRLnByZUluaXRdKTtRLnByZUluaXQubGVuZ3RoPjA7KVEucHJlSW5pdC5wb3AoKSgpO3JldHVybiB6KCksQS5yZWFkeX0pLEpjPUxjLEtjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSgpe3ZhciBnLEk7RSh0aGlzLEEpO3ZhciBCPW5ldyBQcm9taXNlKChmdW5jdGlvbihBLEIpe2c9QSxJPUJ9KSk7cmV0dXJuIEIucmVzb2x2ZT1nLEIucmVqZWN0PUksQn1yZXR1cm4gdChBLFt7a2V5OiJyZXNvbHZlIix2YWx1ZTpmdW5jdGlvbihBKXt9fSx7a2V5OiJyZWplY3QiLHZhbHVlOmZ1bmN0aW9uKEEpe319XSksQX0oKSxtYz1vQix4Yz1sLHFjPUtDLGJjPUwsVGM9YUEsamM9VkEsT2M9VW8sWmM9YkMsUGM9WW8sV2M9VUEsVmM9VEEoImlzQ29uY2F0U3ByZWFkYWJsZSIpLFhjPTkwMDcxOTkyNTQ3NDA5OTEsemM9Ik1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIsX2M9V2M+PTUxfHwheGMoKGZ1bmN0aW9uKCl7dmFyIEE9W107cmV0dXJuIEFbVmNdPSExLEEuY29uY2F0KClbMF0hPT1BfSkpLCRjPVBjKCJjb25jYXQiKSxBaD1mdW5jdGlvbihBKXtpZighYmMoQSkpcmV0dXJuITE7dmFyIGc9QVtWY107cmV0dXJuIHZvaWQgMCE9PWc/ISFnOnFjKEEpfTttYyh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFfY3x8ISRjfSx7Y29uY2F0OmZ1bmN0aW9uKEEpe3ZhciBnLEksQixRLEUsQz1UYyh0aGlzKSx0PVpjKEMsMCksaT0wO2ZvcihnPS0xLEI9YXJndW1lbnRzLmxlbmd0aDtnPEI7ZysrKWlmKEFoKEU9LTE9PT1nP0M6YXJndW1lbnRzW2ddKSl7aWYoaSsoUT1qYyhFLmxlbmd0aCkpPlhjKXRocm93IFR5cGVFcnJvcih6Yyk7Zm9yKEk9MDtJPFE7SSsrLGkrKylJIGluIEUmJk9jKHQsaSxFW0ldKX1lbHNle2lmKGk+PVhjKXRocm93IFR5cGVFcnJvcih6Yyk7T2ModCxpKyssRSl9cmV0dXJuIHQubGVuZ3RoPWksdH19KTt2YXIgZ2g9b0IsSWg9VSxCaD1bXS5qb2luLFFoPUchPU9iamVjdCxFaD1PaSgiam9pbiIsIiwiKTtnaCh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOlFofHwhRWh9LHtqb2luOmZ1bmN0aW9uKEEpe3JldHVybiBCaC5jYWxsKEloKHRoaXMpLHZvaWQgMD09PUE/IiwiOkEpfX0pO3ZhciBDaD0wLHRoPTEsaWg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7RSh0aGlzLEEpfXJldHVybiB0KEEsW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9bmV3IEtjO3JldHVybiB0aGlzLm1vZHVsZT17b25SdW50aW1lSW5pdGlhbGl6ZWQ6ZnVuY3Rpb24oKXtBLnJlc29sdmUoKX0sb25BYm9ydDpmdW5jdGlvbihnKXtBLnJlamVjdChnKX19LEpjKHRoaXMubW9kdWxlKSxBfX0se2tleToiZGVzY3J5cHRLZXkiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7dmFyIEksQixRPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxNixFPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpDaDt0cnl7dmFyIEM9ZnVuY3Rpb24oQSl7aWYoIiI9PT1BKXJldHVybiIiO2Zvcih2YXIgZz1bXSxJPTA7STxBLmxlbmd0aDtJKyspZy5wdXNoKEEuY2hhckNvZGVBdChJKSk7cmV0dXJuIGd9KHNlbGYuYXRvYihBKSk7ST10aGlzLm1vZHVsZS5fbWFsbG9jKE51bWJlcihDLmxlbmd0aCkpLHRoaXMubW9kdWxlLkhFQVA4LnNldChDLEkpLGc9Z3x8bmV3IFVpbnQ4QXJyYXksZz1uZXcgVWludDhBcnJheShnKSxCPXRoaXMubW9kdWxlLl9tYWxsb2MoZy5ieXRlTGVuZ3RoKSx0aGlzLm1vZHVsZS5IRUFQOC5zZXQoZyxCKSx0aGlzLm1vZHVsZS5fZGVzY3J5cHRLZXkoRSxJLEMubGVuZ3RoLFEsZy5ieXRlTGVuZ3RoLEIpfWNhdGNoKHQpe2NvbnNvbGUubG9nKHQpfWZpbmFsbHl7dGhpcy5tb2R1bGUuX2ZyZWUoSSksdGhpcy5tb2R1bGUuX2ZyZWUoQil9fX0se2tleToiZGVzY3J5cHQiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7dmFyIEksQixRPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpDaDt0cnl7dmFyIEU9bmV3IFVpbnQ4QXJyYXkoZyk7ST10aGlzLm1vZHVsZS5fbWFsbG9jKEEuYnl0ZUxlbmd0aCksdGhpcy5tb2R1bGUuSEVBUDguc2V0KEEsSSksQj10aGlzLm1vZHVsZS5fbWFsbG9jKEUuYnl0ZUxlbmd0aCksdGhpcy5tb2R1bGUuSEVBUDguc2V0KEUsQiksdGhpcy5tb2R1bGUuX2Rlc2NyeXB0KFEsSSxBLmJ5dGVMZW5ndGgsQik7dmFyIEM9dGhpcy5tb2R1bGUuSEVBUFU4LnNsaWNlKEksSStBLmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgVWludDhBcnJheShDKX1jYXRjaChZRCl7Y29uc29sZS5sb2coWUQpfWZpbmFsbHl7dGhpcy5tb2R1bGUuX2ZyZWUoSSksdGhpcy5tb2R1bGUuX2ZyZWUoQil9fX0se2tleToiZGVzY3J5cHRLZHNLZXkiLHZhbHVlOmZ1bmN0aW9uKEEsZyxJKXt2YXIgQixRLEUsQz1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MTY7dHJ5e3ZhciB0PW5ldyBVaW50OEFycmF5KGcpLGk9bmV3IFVpbnQ4QXJyYXkoSSk7Qj10aGlzLm1vZHVsZS5fbWFsbG9jKHQuYnl0ZUxlbmd0aCksdGhpcy5tb2R1bGUuSEVBUDguc2V0KHQsQiksUT10aGlzLm1vZHVsZS5fbWFsbG9jKEEuYnl0ZUxlbmd0aCksdGhpcy5tb2R1bGUuSEVBUDguc2V0KEEsUSksRT10aGlzLm1vZHVsZS5fbWFsbG9jKGkuYnl0ZUxlbmd0aCksdGhpcy5tb2R1bGUuSEVBUDguc2V0KGksRSksdGhpcy5tb2R1bGUuX2Rlc2NyeXB0S2RzS2V5KEIsdC5ieXRlTGVuZ3RoLFEsQS5ieXRlTGVuZ3RoLEUsQyl9Y2F0Y2goWUQpe2NvbnNvbGUubG9nKFlEKX1maW5hbGx5e3RoaXMubW9kdWxlLl9mcmVlKFEpLHRoaXMubW9kdWxlLl9mcmVlKEUpLHRoaXMubW9kdWxlLl9mcmVlKEIpfX19LHtrZXk6ImRlc2NyeXB0Q0JDIix2YWx1ZTpmdW5jdGlvbihBLGcpe3ZhciBJLEI7dHJ5e3ZhciBRPW5ldyBVaW50OEFycmF5KGcpO3JldHVybiBJPXRoaXMubW9kdWxlLl9tYWxsb2MoQS5ieXRlTGVuZ3RoKSx0aGlzLm1vZHVsZS5IRUFQOC5zZXQoQSxJKSxCPXRoaXMubW9kdWxlLl9tYWxsb2MoUS5ieXRlTGVuZ3RoKSx0aGlzLm1vZHVsZS5IRUFQOC5zZXQoUSxCKSx0aGlzLm1vZHVsZS5fZGVzY3J5cHRDQkMoSSxBLmJ5dGVMZW5ndGgsQiksdGhpcy5tb2R1bGUuSEVBUFU4LnNsaWNlKEksSStBLmJ5dGVMZW5ndGgpfWNhdGNoKFlEKXtjb25zb2xlLmxvZyhZRCl9ZmluYWxseXt0aGlzLm1vZHVsZS5fZnJlZShJKSx0aGlzLm1vZHVsZS5fZnJlZShCKX19fSx7a2V5OiJzZXRSYXciLHZhbHVlOmZ1bmN0aW9uKEEpe3ZhciBnLEk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoO3RyeXt2YXIgQj1uZXcgVWludDhBcnJheShBKTtnPXRoaXMubW9kdWxlLl9tYWxsb2MoQi5ieXRlTGVuZ3RoKSx0aGlzLm1vZHVsZS5IRUFQOC5zZXQoQixnKSx0aGlzLm1vZHVsZS5fc2V0UmF3KGcsQi5ieXRlTGVuZ3RoLEkpfWNhdGNoKFlEKXtjb25zb2xlLmxvZyhZRCl9ZmluYWxseXt0aGlzLm1vZHVsZS5fZnJlZShnKX19fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubW9kdWxlJiYodGhpcy5tb2R1bGU9bnVsbCl9fV0pLEF9KCk7ZnVuY3Rpb24gZWgoQSxnKXtpZighKEEgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvaChBLGcpe2Zvcih2YXIgST0wO0k8Zy5sZW5ndGg7SSsrKXt2YXIgQj1nW0ldO0IuZW51bWVyYWJsZT1CLmVudW1lcmFibGV8fCExLEIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBCJiYoQi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsZmgoQi5rZXkpLEIpfX1mdW5jdGlvbiByaChBLGcsSSl7cmV0dXJuIGcmJm9oKEEucHJvdG90eXBlLGcpLEkmJm9oKEEsSSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksQX1mdW5jdGlvbiBuaChBLGcsSSl7cmV0dXJuKGc9ZmgoZykpaW4gQT9PYmplY3QuZGVmaW5lUHJvcGVydHkoQSxnLHt2YWx1ZTpJLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6QVtnXT1JLEF9ZnVuY3Rpb24gYWgoQSxnKXtyZXR1cm4gZnVuY3Rpb24oQSl7aWYoQXJyYXkuaXNBcnJheShBKSlyZXR1cm4gQX0oQSl8fGZ1bmN0aW9uKEEsZyl7dmFyIEk9bnVsbD09QT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZBW1N5bWJvbC5pdGVyYXRvcl18fEFbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1JKXt2YXIgQixRLEUsQyx0PVtdLGk9ITAsZT0hMTt0cnl7aWYoRT0oST1JLmNhbGwoQSkpLm5leHQsMD09PWcpe2lmKE9iamVjdChJKSE9PUkpcmV0dXJuO2k9ITF9ZWxzZSBmb3IoOyEoaT0oQj1FLmNhbGwoSSkpLmRvbmUpJiYodC5wdXNoKEIudmFsdWUpLHQubGVuZ3RoIT09Zyk7aT0hMCk7fWNhdGNoKG8pe2U9ITAsUT1vfWZpbmFsbHl7dHJ5e2lmKCFpJiZudWxsIT1JLnJldHVybiYmKEM9SS5yZXR1cm4oKSxPYmplY3QoQykhPT1DKSlyZXR1cm59ZmluYWxseXtpZihlKXRocm93IFF9fXJldHVybiB0fX0oQSxnKXx8Y2goQSxnKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHNoKEEpe3JldHVybiBmdW5jdGlvbihBKXtpZihBcnJheS5pc0FycmF5KEEpKXJldHVybiBoaChBKX0oQSl8fGZ1bmN0aW9uKEEpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1BW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPUFbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShBKX0oQSl8fGNoKEEpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGNoKEEsZyl7aWYoQSl7aWYoInN0cmluZyI9PXR5cGVvZiBBKXJldHVybiBoaChBLGcpO3ZhciBJPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChBKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PUkmJkEuY29uc3RydWN0b3ImJihJPUEuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1JfHwiU2V0Ij09PUk/QXJyYXkuZnJvbShBKToiQXJndW1lbnRzIj09PUl8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KEkpP2hoKEEsZyk6dm9pZCAwfX1mdW5jdGlvbiBoaChBLGcpeyhudWxsPT1nfHxnPkEubGVuZ3RoKSYmKGc9QS5sZW5ndGgpO2Zvcih2YXIgST0wLEI9bmV3IEFycmF5KGcpO0k8ZztJKyspQltJXT1BW0ldO3JldHVybiBCfWZ1bmN0aW9uIGZoKEEpe3ZhciBnPWZ1bmN0aW9uKEEsZyl7aWYoIm9iamVjdCIhPXR5cGVvZiBBfHxudWxsPT09QSlyZXR1cm4gQTt2YXIgST1BW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09SSl7dmFyIEI9SS5jYWxsKEEsZ3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIEIpcmV0dXJuIEI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1nP1N0cmluZzpOdW1iZXIpKEEpfShBLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGc/ZzpTdHJpbmcoZyl9dmFyIHVoPSJ2aWRlbyIseWg9ImF1ZGlvIixEaD0ibWV0YWRhdGEiLGxoPSJhdmMiLHdoPSJoZXZjIixkaD0idnZjQyIsRmg9ImFhYyIsUmg9Imc3MTEwYSIsR2g9Imc3MTEwbSIsa2g9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7ZWgodGhpcyxBKSxuaCh0aGlzLCJpZCIsMSksbmgodGhpcywidHlwZSIsdWgpLG5oKHRoaXMsImNvZGVjVHlwZSIsbGgpLG5oKHRoaXMsInBpZCIsLTEpLG5oKHRoaXMsImh2Y0MiLHZvaWQgMCksbmgodGhpcywiY29kZWMiLCIiKSxuaCh0aGlzLCJ0aW1lc2NhbGUiLDApLG5oKHRoaXMsImZvcm1hdFRpbWVzY2FsZSIsMCksbmgodGhpcywic2VxdWVuY2VOdW1iZXIiLDApLG5oKHRoaXMsImJhc2VNZWRpYURlY29kZVRpbWUiLDApLG5oKHRoaXMsImJhc2VEdHMiLDApLG5oKHRoaXMsImR1cmF0aW9uIiwwKSxuaCh0aGlzLCJ3YXJuaW5ncyIsW10pLG5oKHRoaXMsInNhbXBsZXMiLFtdKSxuaCh0aGlzLCJwcHMiLFtdKSxuaCh0aGlzLCJzcHMiLFtdKSxuaCh0aGlzLCJ2cHMiLFtdKSxuaCh0aGlzLCJmcHNOdW0iLDApLG5oKHRoaXMsImZwc0RlbiIsMCksbmgodGhpcywic2FyUmF0aW8iLFtdKSxuaCh0aGlzLCJ3aWR0aCIsMCksbmgodGhpcywiaGVpZ2h0IiwwKSxuaCh0aGlzLCJuYWxVbml0U2l6ZSIsNCksbmgodGhpcywicHJlc2VudCIsITEpLG5oKHRoaXMsImlzVmlkZW9FbmNyeXB0aW9uIiwhMSksbmgodGhpcywiaXNBdWRpb0VuY3J5cHRpb24iLCExKSxuaCh0aGlzLCJpc1ZpZGVvIiwhMCksbmgodGhpcywia2lkIixudWxsKSxuaCh0aGlzLCJwc3NoIixudWxsKSxuaCh0aGlzLCJleHQiLHZvaWQgMCl9cmV0dXJuIHJoKEEsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2VxdWVuY2VOdW1iZXI9dGhpcy53aWR0aD10aGlzLmhlaWdodD10aGlzLmZwc0Rlbj10aGlzLmZwc051bT10aGlzLmR1cmF0aW9uPXRoaXMuYmFzZU1lZGlhRGVjb2RlVGltZT10aGlzLnRpbWVzY2FsZT0wLHRoaXMuY29kZWM9IiIsdGhpcy5wcmVzZW50PSExLHRoaXMucGlkPS0xLHRoaXMucHBzPVtdLHRoaXMuc3BzPVtdLHRoaXMudnBzPVtdLHRoaXMuc2FyUmF0aW89W10sdGhpcy5zYW1wbGVzPVtdLHRoaXMud2FybmluZ3M9W10sdGhpcy5odmNDPW51bGx9fSx7a2V5OiJleGlzdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hISh0aGlzLnBwcy5sZW5ndGgmJnRoaXMuc3BzLmxlbmd0aCYmdGhpcy5jb2RlYyl9fSx7a2V5OiJoYXNTYW1wbGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnNhbXBsZXMubGVuZ3RofX0se2tleToiaXNFbmNyeXB0aW9uIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1ZpZGVvRW5jcnlwdGlvbn19XSksQX0oKSxwaD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoKXtlaCh0aGlzLEEpLG5oKHRoaXMsImlkIiwyKSxuaCh0aGlzLCJ0eXBlIix5aCksbmgodGhpcywiY29kZWNUeXBlIixGaCksbmgodGhpcywicGlkIiwtMSksbmgodGhpcywiY29kZWMiLCIiKSxuaCh0aGlzLCJzZXF1ZW5jZU51bWJlciIsMCksbmgodGhpcywic2FtcGxlRHVyYXRpb24iLDApLG5oKHRoaXMsInRpbWVzY2FsZSIsMCksbmgodGhpcywiZm9ybWF0VGltZXNjYWxlIiwwKSxuaCh0aGlzLCJiYXNlTWVkaWFEZWNvZGVUaW1lIiwwKSxuaCh0aGlzLCJkdXJhdGlvbiIsMCksbmgodGhpcywid2FybmluZ3MiLFtdKSxuaCh0aGlzLCJzYW1wbGVzIixbXSksbmgodGhpcywiYmFzZUR0cyIsMCksbmgodGhpcywic2FtcGxlU2l6ZSIsMTYpLG5oKHRoaXMsInNhbXBsZVJhdGUiLDApLG5oKHRoaXMsImNoYW5uZWxDb3VudCIsMCksbmgodGhpcywib2JqZWN0VHlwZSIsMCksbmgodGhpcywic2FtcGxlUmF0ZUluZGV4IiwwKSxuaCh0aGlzLCJjb25maWciLFtdKSxuaCh0aGlzLCJwcmVzZW50IiwhMSksbmgodGhpcywiaXNWaWRlb0VuY3J5cHRpb24iLCExKSxuaCh0aGlzLCJpc0F1ZGlvRW5jcnlwdGlvbiIsITEpLG5oKHRoaXMsImtpZCIsbnVsbCksbmgodGhpcywiZXh0Iix2b2lkIDApfXJldHVybiByaChBLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlcXVlbmNlTnVtYmVyPTAsdGhpcy50aW1lc2NhbGU9MCx0aGlzLnNhbXBsZUR1cmF0aW9uPTAsdGhpcy5zYW1wbGVSYXRlPTAsdGhpcy5jaGFubmVsQ291bnQ9MCx0aGlzLmJhc2VNZWRpYURlY29kZVRpbWU9MCx0aGlzLnByZXNlbnQ9ITEsdGhpcy5waWQ9LTEsdGhpcy5jb2RlYz0iIix0aGlzLnNhbXBsZXM9W10sdGhpcy5jb25maWc9W10sdGhpcy53YXJuaW5ncz1bXX19LHtrZXk6ImV4aXN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhKHRoaXMuc2FtcGxlUmF0ZSYmdGhpcy5jaGFubmVsQ291bnQmJnRoaXMuY29kZWMmJnRoaXMuY29kZWNUeXBlPT09RmgpfX0se2tleToiaGFzU2FtcGxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5zYW1wbGVzLmxlbmd0aH19LHtrZXk6ImlzRW5jcnlwdGlvbiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNBdWRpb0VuY3J5cHRpb259fV0pLEF9KCksU2g9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKGcsSSxCKXtlaCh0aGlzLEEpLG5oKHRoaXMsImZsYWciLHt9KSxuaCh0aGlzLCJrZXlmcmFtZSIsITEpLG5oKHRoaXMsImdvcElkIiwwKSxuaCh0aGlzLCJkdXJhdGlvbiIsMCksbmgodGhpcywic2l6ZSIsMCksbmgodGhpcywidW5pdHMiLFtdKSxuaCh0aGlzLCJjaHJvbWFGb3JtYXQiLDQyMCksdGhpcy5vcmlnaW5QdHM9dGhpcy5wdHM9Zyx0aGlzLm9yaWdpbkR0cz10aGlzLmR0cz1JLEImJih0aGlzLnVuaXRzPUIpfXJldHVybiByaChBLFt7a2V5OiJjdHMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB0cy10aGlzLmR0c319LHtrZXk6InNldFRvS2V5ZnJhbWUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5rZXlmcmFtZT0hMCx0aGlzLmZsYWcuZGVwZW5kc09uPTIsdGhpcy5mbGFnLmlzTm9uU3luY1NhbXBsZT0wfX1dKSxBfSgpLFVoPXJoKChmdW5jdGlvbiBBKGcsSSxCLFEpe2VoKHRoaXMsQSksbmgodGhpcywiZHVyYXRpb24iLDEwMjQpLG5oKHRoaXMsImZsYWciLHtkZXBlbmRzT246Mixpc05vblN5bmNTYW1wbGU6MH0pLG5oKHRoaXMsImtleWZyYW1lIiwhMCksdGhpcy5vcmlnaW5QdHM9dGhpcy5wdHM9dGhpcy5kdHM9Zyx0aGlzLmRhdGE9SSx0aGlzLnNpemU9SS5ieXRlTGVuZ3RoLHRoaXMuc2FtcGxlT2Zmc2V0PVEsQiYmKHRoaXMuZHVyYXRpb249Qil9KSksTWg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7ZWgodGhpcyxBKSxuaCh0aGlzLCJpZCIsMyksbmgodGhpcywidHlwZSIsRGgpLG5oKHRoaXMsInRpbWVzY2FsZSIsMCksbmgodGhpcywiZmx2U2NyaXB0U2FtcGxlcyIsW10pLG5oKHRoaXMsInNlaVNhbXBsZXMiLFtdKX1yZXR1cm4gcmgoQSxbe2tleToiZXhpc3QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5mbHZTY3JpcHRTYW1wbGVzLmxlbmd0aCYmIXRoaXMuc2VpU2FtcGxlcy5sZW5ndGh8fCF0aGlzLnRpbWVzY2FsZSl9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRpbWVzY2FsZT0wLHRoaXMuZmx2U2NyaXB0U2FtcGxlcz1bXSx0aGlzLnNlaVNhbXBsZXM9W119fSx7a2V5OiJoYXNTYW1wbGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5mbHZTY3JpcHRTYW1wbGVzLmxlbmd0aCYmIXRoaXMuc2VpU2FtcGxlcy5sZW5ndGgpfX1dKSxBfSgpLE5oPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LHZoPU5oJiZuYXZpZ2F0b3IudXNlckFnZW50LnRvTG9jYWxlTG93ZXJDYXNlKCksWWg9TmgmJnZoLmluY2x1ZGVzKCJmaXJlZm94IiksSGg9TmgmJnZoLmluY2x1ZGVzKCJhbmRyb2lkIiksTGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7ZWgodGhpcyxBKX1yZXR1cm4gcmgoQSxudWxsLFt7a2V5OiJnZXRSYXRlSW5kZXhCeVJhdGUiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLkZSRVEuaW5kZXhPZihnKX19LHtrZXk6InBhcnNlQURUUyIsdmFsdWU6ZnVuY3Rpb24oZyxJKXtmb3IodmFyIEI9Zy5sZW5ndGgsUT0wO1ErMjxCJiYoMjU1IT09Z1tRXXx8MjQwIT0oMjQ2JmdbUSsxXSkpOylRKys7aWYoIShRPj1CKSl7dmFyIEU9USxDPVtdLHQ9KDYwJmdbUSsyXSk+Pj4yLGk9QS5GUkVRW3RdO2lmKCFpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzYW1wbGluZyBpbmRleDogIi5jb25jYXQodCkpO2Zvcih2YXIgZSxvLHI9MSsoKDE5MiZnW1ErMl0pPj4+Niksbj0oMSZnW1ErMl0pPDwyfCgxOTImZ1tRKzNdKT4+PjYsYT1BLl9nZXRDb25maWcodCxuLHIpLHM9YS5jb25maWcsYz1hLmNvZGVjLGg9MCxmPUEuZ2V0RnJhbWVEdXJhdGlvbihpKTtRKzc8QjspaWYoMjU1PT09Z1tRXSYmMjQwPT0oMjQ2JmdbUSsxXSkpe2lmKEItUTwobz0oMyZnW1ErM10pPDwxMXxnW1ErNF08PDN8KDIyNCZnW1ErNV0pPj41KSlicmVhaztlPTIqKDEmfmdbUSsxXSksQy5wdXNoKHtwdHM6SStoKmYsZGF0YTpnLnN1YmFycmF5KFErNytlLFErbyl9KSxoKyssUSs9b31lbHNlIFErKztyZXR1cm57c2tpcDpFLHJlbWFpbmluZzpRPj1CP3ZvaWQgMDpnLnN1YmFycmF5KFEpLGZyYW1lczpDLHNhbXBsaW5nRnJlcXVlbmN5SW5kZXg6dCxzYW1wbGVSYXRlOmksb2JqZWN0VHlwZTpyLGNoYW5uZWxDb3VudDpuLGNvZGVjOmMsY29uZmlnOnMsb3JpZ2luQ29kZWM6Im1wNGEuNDAuIi5jb25jYXQocil9fX19LHtrZXk6InBhcnNlQXVkaW9TcGVjaWZpY0NvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZyl7aWYoZy5sZW5ndGgpe3ZhciBJPWdbMF0+Pj4zLEI9KDcmZ1swXSk8PDF8Z1sxXT4+PjcsUT0oMTIwJmdbMV0pPj4+MyxFPUEuRlJFUVtCXTtpZihFKXt2YXIgQz1BLl9nZXRDb25maWcoQixRLEkpO3JldHVybntzYW1wbGluZ0ZyZXF1ZW5jeUluZGV4OkIsc2FtcGxlUmF0ZTpFLG9iamVjdFR5cGU6SSxjaGFubmVsQ291bnQ6USxjb25maWc6Qy5jb25maWcsY29kZWM6Qy5jb2RlYyxvcmlnaW5Db2RlYzoibXA0YS40MC4iLmNvbmNhdChJKX19fX19LHtrZXk6ImdldEZyYW1lRHVyYXRpb24iLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiAxMDI0Kihhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06OWU0KS9BfX0se2tleToiX2dldENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFEsRT1bXTtyZXR1cm4gWWg/QT49Nj8oQj01LFE9QS0zKTooQj0yLFE9QSk6SGg/KEI9MixRPUEpOihCPTI9PT1JfHw1PT09ST9JOjUsUT1BLEE+PTY/UT1BLTM6MT09PWcmJihCPTIsUT1BKSksRVswXT1CPDwzLEVbMF18PSgxNCZBKT4+MSxFWzFdPSgxJkEpPDw3LEVbMV18PWc8PDMsNT09PUImJihFWzFdfD0oMTQmUSk+PjEsRVsyXT0oMSZRKTw8NyxFWzJdfD04LEVbM109MCkse2NvbmZpZzpFLGNvZGVjOiJtcDRhLjQwLiIuY29uY2F0KEIpfX19LHtrZXk6ImdldFNpbGVudEZyYW1lIix2YWx1ZTpmdW5jdGlvbihBLGcpe2lmKCJtcDRhLjQwLjIiPT09QSl7aWYoMT09PWcpcmV0dXJuIG5ldyBVaW50OEFycmF5KFswLDIwMCwwLDEyOCwzNSwxMjhdKTtpZigyPT09ZylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzMzLDAsNzMsMTQ0LDIsMjUsMCwzNSwxMjhdKTtpZigzPT09ZylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTQyXSk7aWYoND09PWcpcmV0dXJuIG5ldyBVaW50OEFycmF5KFswLDIwMCwwLDEyOCwzMiwxMzIsMSwzOCw2NCw4LDEwMCwwLDEyOCw0NCwxMjgsOCwyLDU2XSk7aWYoNT09PWcpcmV0dXJuIG5ldyBVaW50OEFycmF5KFswLDIwMCwwLDEyOCwzMiwxMzIsMSwzOCw2NCw4LDEwMCwwLDEzMCw0OCw0LDE1MywwLDMzLDE0NCwyLDU2XSk7aWYoNj09PWcpcmV0dXJuIG5ldyBVaW50OEFycmF5KFswLDIwMCwwLDEyOCwzMiwxMzIsMSwzOCw2NCw4LDEwMCwwLDEzMCw0OCw0LDE1MywwLDMzLDE0NCwyLDAsMTc4LDAsMzIsOCwyMjRdKX1lbHNle2lmKDE9PT1nKXJldHVybiBuZXcgVWludDhBcnJheShbMSw2NCwzNCwxMjgsMTYzLDc4LDIzMCwxMjgsMTg2LDgsMCwwLDAsMjgsNiwyNDEsMTkzLDEwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDk0XSk7aWYoMj09PWcpcmV0dXJuIG5ldyBVaW50OEFycmF5KFsxLDY0LDM0LDEyOCwxNjMsOTQsMjMwLDEyOCwxODYsOCwwLDAsMCwwLDE0OSwwLDYsMjQxLDE2MSwxMCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5NF0pO2lmKDM9PT1nKXJldHVybiBuZXcgVWludDhBcnJheShbMSw2NCwzNCwxMjgsMTYzLDk0LDIzMCwxMjgsMTg2LDgsMCwwLDAsMCwxNDksMCw2LDI0MSwxNjEsMTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTRdKX19fV0pLEF9KCk7ZnVuY3Rpb24gSmgoKXtmb3IodmFyIEE9YXJndW1lbnRzLmxlbmd0aCxnPW5ldyBBcnJheShBKSxJPTA7STxBO0krKylnW0ldPWFyZ3VtZW50c1tJXTtnPWcuZmlsdGVyKEJvb2xlYW4pO3ZhciBCPW5ldyBVaW50OEFycmF5KGcucmVkdWNlKChmdW5jdGlvbihBLGcpe3JldHVybiBBK2cuYnl0ZUxlbmd0aH0pLDApKSxRPTA7cmV0dXJuIGcuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Qi5zZXQoQSxRKSxRKz1BLmJ5dGVMZW5ndGh9KSksQn1uaChMaCwiRlJFUSIsWzk2ZTMsODgyMDAsNjRlMyw0OGUzLDQ0MTAwLDMyZTMsMjRlMywyMjA1MCwxNmUzLDEyZTMsMTEwMjUsOGUzLDczNTBdKTt2YXIgS2g9TWF0aC5wb3coMiwzMik7ZnVuY3Rpb24gbWgoQSl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjA7cmV0dXJuKEFbZ108PDgpKyhBW2crMV18fDApfWZ1bmN0aW9uIHhoKEEpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybihBW2ddPDwyND4+PjApKyhBW2crMV08PDE2KSsoQVtnKzJdPDw4KSsoQVtnKzNdfHwwKX1mdW5jdGlvbiBxaChBKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4geGgoQSxnKSpLaCt4aChBLGcrNCl9ZnVuY3Rpb24gYmgoQSl7dmFyIGc9IiI7aWYoQS5mb3JFYWNoKChmdW5jdGlvbihBKXtnKz1mdW5jdGlvbihBKXtyZXR1cm4oIjAiK051bWJlcihBKS50b1N0cmluZygxNikpLnNsaWNlKC0yKS50b1VwcGVyQ2FzZSgpfShBKX0pKSxnLmxlbmd0aDw9MzIpZm9yKHZhciBJPTMyLWcubGVuZ3RoLEI9MDtCPEk7QisrKWcrPSIwIjtyZXR1cm4gZ31mdW5jdGlvbiBUaChBKXtpZighQXJyYXkuaXNBcnJheShBKSl7Zm9yKHZhciBnPVtdLEk9IiIsQj0wO0I8QS5sZW5ndGg7QisrKUIlMiYmKEk9QVtCLTFdK0FbQl0sZy5wdXNoKHBhcnNlSW50KEksMTYpKSxJPSIiKTtyZXR1cm4gZ31yZXR1cm4gQS5tYXAoKGZ1bmN0aW9uKEEpe3JldHVybiBwYXJzZUludChBLDE2KX0pKX12YXIgamg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKGcpe2lmKGVoKHRoaXMsQSksbmgodGhpcywiX2J5dGVzQXZhaWxhYmxlIix2b2lkIDApLG5oKHRoaXMsIl9iaXRzQXZhaWxhYmxlIiwwKSxuaCh0aGlzLCJfd29yZCIsMCksIWcpdGhyb3cgbmV3IEVycm9yKCJFeHBHb2xvbWIgZGF0YSBwYXJhbXMgaXMgcmVxdWlyZWQiKTt0aGlzLl9kYXRhPWcsdGhpcy5fYnl0ZXNBdmFpbGFibGU9Zy5ieXRlTGVuZ3RoLHRoaXMuX2J5dGVzQXZhaWxhYmxlJiZ0aGlzLl9sb2FkV29yZCgpfXJldHVybiByaChBLFt7a2V5OiJfbG9hZFdvcmQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy5fZGF0YS5ieXRlTGVuZ3RoLXRoaXMuX2J5dGVzQXZhaWxhYmxlLGc9TWF0aC5taW4oNCx0aGlzLl9ieXRlc0F2YWlsYWJsZSk7aWYoMD09PWcpdGhyb3cgbmV3IEVycm9yKCJObyBieXRlcyBhdmFpbGFibGUiKTt2YXIgST1uZXcgVWludDhBcnJheSg0KTtJLnNldCh0aGlzLl9kYXRhLnN1YmFycmF5KEEsQStnKSksdGhpcy5fd29yZD1uZXcgRGF0YVZpZXcoSS5idWZmZXIpLmdldFVpbnQzMigwKSx0aGlzLl9iaXRzQXZhaWxhYmxlPTgqZyx0aGlzLl9ieXRlc0F2YWlsYWJsZS09Z319LHtrZXk6ImJpdHNQb3MiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIDgqdGhpcy5fYnl0ZXNBdmFpbGFibGUtdGhpcy5fYml0c0F2YWlsYWJsZX19LHtrZXk6ImJpdHNMZWZ0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiA4KnRoaXMuX2RhdGEubGVuZ3RoLXRoaXMuYml0c1BvcygpfX0se2tleToiYnl0ZUFsaWduZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmJpdHNQb3MoKXx8dGhpcy5iaXRzUG9zKCklOD09MH19LHtrZXk6InNraXBCaXRzIix2YWx1ZTpmdW5jdGlvbihBKXtpZih0aGlzLl9iaXRzQXZhaWxhYmxlPkEpdGhpcy5fd29yZDw8PUEsdGhpcy5fYml0c0F2YWlsYWJsZS09QTtlbHNle0EtPXRoaXMuX2JpdHNBdmFpbGFibGU7dmFyIGc9TWF0aC5mbG9vcihBLzgpO0EtPTgqZyx0aGlzLl9ieXRlc0F2YWlsYWJsZS09Zyx0aGlzLl9sb2FkV29yZCgpLHRoaXMuX3dvcmQ8PD1BLHRoaXMuX2JpdHNBdmFpbGFibGUtPUF9fX0se2tleToicmVhZEJpdHMiLHZhbHVlOmZ1bmN0aW9uKEEpe2lmKEE+MzIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVhZCBtb3JlIHRoYW4gMzIgYml0cyIpO3ZhciBnPU1hdGgubWluKHRoaXMuX2JpdHNBdmFpbGFibGUsQSksST10aGlzLl93b3JkPj4+MzItZztyZXR1cm4gdGhpcy5fYml0c0F2YWlsYWJsZS09Zyx0aGlzLl9iaXRzQXZhaWxhYmxlPjA/dGhpcy5fd29yZDw8PWc6dGhpcy5fYnl0ZXNBdmFpbGFibGU+MCYmdGhpcy5fbG9hZFdvcmQoKSwoZz1BLWcpPjAmJnRoaXMuX2JpdHNBdmFpbGFibGU/STw8Z3x0aGlzLnJlYWRCaXRzKGcpOkl9fSx7a2V5OiJza2lwTFoiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE7Zm9yKEE9MDtBPHRoaXMuX2JpdHNBdmFpbGFibGU7KytBKWlmKDAhPSh0aGlzLl93b3JkJjIxNDc0ODM2NDg+Pj5BKSlyZXR1cm4gdGhpcy5fd29yZDw8PUEsdGhpcy5fYml0c0F2YWlsYWJsZS09QSxBO3JldHVybiB0aGlzLl9sb2FkV29yZCgpLEErdGhpcy5za2lwTFooKX19LHtrZXk6InNraXBVRUciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5za2lwQml0cygxK3RoaXMuc2tpcExaKCkpfX0se2tleToicmVhZFVFRyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQT10aGlzLnNraXBMWigpO3JldHVybiB0aGlzLnJlYWRCaXRzKEErMSktMX19LHtrZXk6InJlYWRFRyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQT10aGlzLnJlYWRVRUcoKTtyZXR1cm4gMSZBPzErQT4+PjE6LTEqKEE+Pj4xKX19LHtrZXk6InJlYWRCb29sIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5yZWFkQml0cygxKX19LHtrZXk6InJlYWRVQnl0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkQml0cyg4KX19LHtrZXk6InNraXBTY2FsaW5nTGlzdCIsdmFsdWU6ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPTgsST04LEI9MDtCPEE7QisrKTAhPT1JJiYoST0oZyt0aGlzLnJlYWRFRygpKzI1NiklMjU2KSxnPTA9PT1JP2c6SX19XSksQX0oKSxPaD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoZyl7ZWgodGhpcyxBKSx0aGlzLl9idWZmZXI9Zyx0aGlzLl9vZmZzZXQ9MCx0aGlzLl9oZWxkQml0cz0wLHRoaXMuX251bUhlbGRCaXRzPTB9cmV0dXJuIHJoKEEsW3trZXk6InJlYWRVaW50OCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnVmZmVyW3RoaXMuX29mZnNldCsrXX19LHtrZXk6InJlYWRVaW50MTYiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1ZmZlclt0aGlzLl9vZmZzZXQrK108PDh8dGhpcy5fYnVmZmVyW3RoaXMuX29mZnNldCsrXX19LHtrZXk6InJlYWRVaW50MzIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1ZmZlclt0aGlzLl9vZmZzZXQrK108PDI0fHRoaXMuX2J1ZmZlclt0aGlzLl9vZmZzZXQrK108PDE2fHRoaXMuX2J1ZmZlclt0aGlzLl9vZmZzZXQrK108PDh8dGhpcy5fYnVmZmVyW3RoaXMuX29mZnNldCsrXX19LHtrZXk6InJlYWRVaW50OEFycmF5Iix2YWx1ZTpmdW5jdGlvbihBKXt2YXIgZz10aGlzLl9idWZmZXIuc2xpY2UodGhpcy5fb2Zmc2V0LHRoaXMuX29mZnNldCtBKTtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz1BLGd9fSx7a2V5OiJzdHJlYW1SZWFkMUJ5dGVzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2hlbGRCaXRzPXRoaXMucmVhZFVpbnQ4KCksdGhpcy5fbnVtSGVsZEJpdHM9OH19LHtrZXk6InN0cmVhbVJlYWQyQnl0ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5faGVsZEJpdHM9dGhpcy5yZWFkVWludDE2KCksdGhpcy5fbnVtSGVsZEJpdHM9MTZ9fSx7a2V5OiJleHRyYWN0Qml0cyIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9dGhpcy5faGVsZEJpdHM+PnRoaXMuX251bUhlbGRCaXRzLUEmKDE8PEEpLTE7cmV0dXJuIHRoaXMuX251bUhlbGRCaXRzLT1BLGd9fV0pLEF9KCksWmg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7ZWgodGhpcyxBKX1yZXR1cm4gcmgoQSxudWxsLFt7a2V5OiJwYXJzZVZWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgT2goZyksQj1JLnJlYWRVaW50OCgpO0kuc3RyZWFtUmVhZDFCeXRlcygpLEkuZXh0cmFjdEJpdHMoNSk7dmFyIFEsRSxDLHQsaSxlLG8scixuPUkuZXh0cmFjdEJpdHMoMikrMSxhPUkuZXh0cmFjdEJpdHMoMSkscz17fTthJiYoSS5zdHJlYW1SZWFkMkJ5dGVzKCksdD1JLmV4dHJhY3RCaXRzKDIpLGk9SS5leHRyYWN0Qml0cygzKSxFPUkuZXh0cmFjdEJpdHMoMyksQz1JLmV4dHJhY3RCaXRzKDIpLEkuZXh0cmFjdEJpdHMoNikscz1BLnBhcnNlVlZDUFRMUmVjb3JkKEksRSksUT1JLnJlYWRVaW50MTYoKSxlPUkucmVhZFVpbnQxNigpLG89SS5yZWFkVWludDE2KCkscj1JLnJlYWRVaW50MTYoKSk7Zm9yKHZhciBjPUkucmVhZFVpbnQ4KCksaD1bXSxmPVtdLHU9W10seT1udWxsLEQ9MDtEPGM7RCsrKXtJLnN0cmVhbVJlYWQxQnl0ZXMoKSxJLmV4dHJhY3RCaXRzKDEpLEkuZXh0cmFjdEJpdHMoMik7dmFyIGw9SS5leHRyYWN0Qml0cyg1KSx3PTE7MTMhPT1sJiYxMiE9PWwmJih3PUkucmVhZFVpbnQxNigpKTtmb3IodmFyIGQ9MDtkPHc7ZCsrKXt2YXIgRj1JLnJlYWRVaW50MTYoKTtzd2l0Y2gobCl7Y2FzZSAxNDpoLnB1c2goSS5yZWFkVWludDhBcnJheShGKSk7YnJlYWs7Y2FzZSAxNTp2YXIgUj1JLnJlYWRVaW50OEFycmF5KEYpO3l8fCh5PUEucGFyc2VTUFMoQS5yZW1vdmVFUEIoUikpKSxmLnB1c2goUik7YnJlYWs7Y2FzZSAxNjp1LnB1c2goSS5yZWFkVWludDhBcnJheShGKSl9fX1yZXR1cm57ZGF0YTpnLGNvbmZpZ3VyYXRpb25WZXJzaW9uOkIsY29kZWM6ImJ2YzIuMS42Lkw5My5CMCIsbmFsVW5pdFNpemU6bixwdGxQcmVzZW50RmxhZzphLG9sc0lkeDpRLG51bVN1YmxheWVyczpFLGNvbnN0YW50RnJhbWVSYXRlOkMsY2hyb21hRm9ybWF0SWRjOnQsYml0RGVwdGhMdW1hTWludXM4OmkscHRsUmVjb3JkOnMsd2lkdGg6ZSxoZWlnaHQ6byxzYW1wbGVSYXRlOnIsbnVtT2ZBcnJheXM6Yyx2cHM6aCxzcHM6ZixwcHM6dSxzcHNQYXJzZWQ6eX19fSx7a2V5OiJwYXJzZVZWQ1BUTFJlY29yZCIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtBLnN0cmVhbVJlYWQyQnl0ZXMoKSxBLmV4dHJhY3RCaXRzKDIpO3ZhciBJPUEuZXh0cmFjdEJpdHMoNiksQj1BLmV4dHJhY3RCaXRzKDcpLFE9QS5leHRyYWN0Qml0cygxKSxFPUEucmVhZFVpbnQ4KCk7QS5zdHJlYW1SZWFkMUJ5dGVzKCk7dmFyIEM9QS5leHRyYWN0Qml0cygxKSx0PUEuZXh0cmFjdEJpdHMoMSksaT1uZXcgVWludDhBcnJheShJKTtpZihJKXtmb3IodmFyIGU9MDtlPEktMTtlKyspe3ZhciBvPUEuZXh0cmFjdEJpdHMoNik7QS5zdHJlYW1SZWFkMUJ5dGVzKCk7dmFyIHI9QS5leHRyYWN0Qml0cygyKTtpW2VdPW88PDJ8cn1pW0ktMV09QS5leHRyYWN0Qml0cyg2KX1lbHNlIEEuZXh0cmFjdEJpdHMoNik7dmFyIG49W107aWYoZz4xKXtBLnN0cmVhbVJlYWQxQnl0ZXMoKTtmb3IodmFyIGE9MCxzPWctMjtzPj0wOy0tcyl7YXw9QS5leHRyYWN0Qml0cygxKTw8c31mb3IodmFyIGM9ZztjPD04JiZnPjE7KytjKUEuZXh0cmFjdEJpdHMoMSk7Zm9yKHZhciBoPWctMjtoPj0wOy0taClhJjE8PGgmJihuW2hdPUEucmVhZFVpbnQ4KCkpfXZhciBmPUEucmVhZFVpbnQ4KCksdT1bXTtpZihmKWZvcih2YXIgeT0wO3k8Zjt5KyspdS5wdXNoKEEucmVhZFVpbnQzMigpKTtyZXR1cm57Z2VuZXJhbFByb2ZpbGVJZGM6QixnZW5lcmFsVGllckZsYWc6USxnZW5lcmFsTGV2ZWxJZGM6RSxwdGxGcmFtZU9ubHlDb25zdHJhaW50RmxhZzpDLHB0bE11bHRpbGF5ZXJFbmFibGVkRmxhZzp0LGdlbmVyYWxDb25zdHJhaW50SW5mbzppLHN1YkxheWVyTGV2ZWxJZGM6bixnZW5lcmFsU3ViUHJvZmlsZUlkYzp1LHB0bE51bVN1YlByb2ZpbGVzOmYsbnVtQnl0ZXNDb25zdHJhaW50SW5mbzpJfX19LHtrZXk6ImdldEF2Y2NOYWxzIix2YWx1ZTpmdW5jdGlvbihBKXtmb3IodmFyIGc9W107QS5wb3NpdGlvbjxBLmxlbmd0aC00Oyl7dmFyIEk9QS5kYXRhdmlldy5nZXRJbnQzMihBLmRhdGF2aWV3LnBvc2l0aW9uKTtpZighKEEubGVuZ3RoLUEucG9zaXRpb24+PUkpKWJyZWFrO3ZhciBCPUEuYnVmZmVyLnNsaWNlKEEucG9zaXRpb24sQS5wb3NpdGlvbis0KTtBLnNraXAoNCk7dmFyIFE9bmV3IFVpbnQ4QXJyYXkoQS5idWZmZXIuc2xpY2UoQS5wb3NpdGlvbixBLnBvc2l0aW9uK0kpKTtBLnNraXAoSSksZy5wdXNoKHtoZWFkZXI6Qixib2R5OlF9KX1yZXR1cm4gZ319LHtrZXk6ImFuYWx5c2VOYWwiLHZhbHVlOmZ1bmN0aW9uKEEpe3ZhciBnPSgyNDgmQS5ib2R5WzFdKT4+Mztzd2l0Y2goQS50eXBlPWcsZyl7Y2FzZSAyMzpjYXNlIDI0OmJyZWFrO2Nhc2UgNzpjYXNlIDg6QS5rZXk9ITA7YnJlYWs7Y2FzZSAxNDpBLnZwcz0hMDticmVhaztjYXNlIDE1OkEuc3BzPSEwO2JyZWFrO2Nhc2UgMTY6QS5wcHM9ITA7YnJlYWs7Y2FzZSAxNzpBLmFwcz0hMH19fSx7a2V5OiJyZW1vdmVFUEIiLHZhbHVlOmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1BLmJ5dGVMZW5ndGgsST1bXSxCPTE7QjxnLTI7KTA9PT1BW0JdJiYwPT09QVtCKzFdJiYzPT09QVtCKzJdPyhJLnB1c2goQisyKSxCKz0yKTpCKys7aWYoIUkubGVuZ3RoKXJldHVybiBBO3ZhciBRPWctSS5sZW5ndGgsRT1uZXcgVWludDhBcnJheShRKSxDPTA7Zm9yKEI9MDtCPFE7QysrLEIrKylDPT09SVswXSYmKEMrKyxJLnNoaWZ0KCkpLEVbQl09QVtDXTtyZXR1cm4gRX19LHtrZXk6InBhcnNlVnBzIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6InBhcnNlU1BTIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgamgoZyk7SS5yZWFkVUJ5dGUoKSxJLnJlYWRVQnl0ZSgpLEkuc2tpcEJpdHMoNCk7dmFyIEI9SS5yZWFkQml0cyg0KSxRPUkucmVhZEJpdHMoMyksRT1JLnJlYWRCaXRzKDIpLEM9NDIwO0U8PTMmJihDPVswLDQyMCw0MjIsNDQ0XVtFXSksSS5yZWFkQml0cygyKSxJLnJlYWRCaXRzKDEpO3ZhciB0PUEuX3BhcnNlUHJvZmlsZVRpZXJMZXZlbChJLDEsUSk7cmV0dXJuIEkucmVhZEJpdHMoMSksSS5yZWFkQml0cygxKSYmSS5yZWFkQml0cygxKSx7d2lkdGg6SS5yZWFkVUVHKCksaGVpZ2h0OkkucmVhZFVFRygpLHNwc01heFN1YkxheWVyTWludXMxOlEsc3BzVmlkZW9QYXJhbWV0ZXJTZXRJZDpCLGNocm9tYUZvcm1hdElkYzpFLGNocm9tYUZvcm1hdDpDLHB0bEluZm86dH19fSx7a2V5OiJfcGFyc2VQcm9maWxlVGllckxldmVsIix2YWx1ZTpmdW5jdGlvbihnLEksQil7dmFyIFEsRT1nLnJlYWRCaXRzKDcpLEM9Zy5yZWFkQml0cygxKSx0PWcucmVhZEJpdHMoOCksaT1nLnJlYWRCaXRzKDEpLGU9Zy5yZWFkQml0cygxKTtJJiYoUT1BLl9wYXJzZUdlbmVyYWxDb25zdHJhaW50c0luZm8oZykpO2Zvcih2YXIgbz1CLTEscj1bXSxuPVtdLGE9W10scz1vO3M+PTA7LS1zKXJbc109Zy5yZWFkQml0cygxKTtmb3IoOyFnLmJ5dGVBbGlnbmVkKCk7KWcucmVhZEJpdHMoMSk7Zm9yKHZhciBjPW87Yz49MDstLWMpcltjXSYmKG5bY109Zy5yZWFkVUJ5dGUoKSk7aWYoSSlmb3IodmFyIGg9Zy5yZWFkVUJ5dGUoKSxmPTA7ZjxoO2YrKylhW2ZdPWcucmVhZEJpdHMoMzIpO3JldHVybntnZW5lcmFsUHJvZmlsZUlkYzpFLGdlbmVyYWxUaWVyRmxhZzpDLGdlbmVyYWxMZXZlbElkYzp0LHB0bEZyYW1lT25seUNvbnN0cmFpbnRGbGFnOmkscHRsTXVsdGlsYXllckVuYWJsZWRGbGFnOmUscHRsU3VibGF5ZXJMZXZlbFByZXNlbnRGbGFnczpyLHB0bFN1YmxheWVyTGV2ZWxJZGNzOm4scHRsU3ViUHJvZmlsZUlkY3M6YSxnY2lJbmZvOlF9fX0se2tleToiX3BhcnNlR2VuZXJhbENvbnN0cmFpbnRzSW5mbyIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9QS5yZWFkQml0cygxKTtpZihnKXtBLnNraXBCaXRzKDcxKTt2YXIgST1BLnJlYWRCaXRzKDgpO0kmJkEuc2tpcEJpdHMoSSl9dmFyIEI9OC1BLmJpdHNQb3MoKSU4O3JldHVybiBBLnNraXBCaXRzKEIpLHtnY2lQcmVzZW50RmxhZzpnfX19XSksQX0oKSxQaD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoKXtlaCh0aGlzLEEpfXJldHVybiByaChBLG51bGwsW3trZXk6ImZpbmRCb3giLHZhbHVlOmZ1bmN0aW9uKGcsSSl7dmFyIEI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjAsUT1bXTtpZighZylyZXR1cm4gUTtmb3IodmFyIEU9MCxDPSIiLHQ9MDtnLmxlbmd0aD43Oyl7aWYoRT14aChnKSxDPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxnLnN1YmFycmF5KDQsOCkpLHQ9OCwxPT09RT8oRT1xaChnLDgpLHQrPTgpOkV8fChFPWcubGVuZ3RoKSwhSVswXXx8Qz09PUlbMF0pe3ZhciBpPWcuc3ViYXJyYXkoMCxFKTtpZighKEkubGVuZ3RoPDIpKXJldHVybiBBLmZpbmRCb3goaS5zdWJhcnJheSh0KSxJLnNsaWNlKDEpLEIrdCk7US5wdXNoKHtzdGFydDpCLHNpemU6RSxoZWFkZXJTaXplOnQsdHlwZTpDLGRhdGE6aX0pfUIrPUUsZz1nLnN1YmFycmF5KEUpfXJldHVybiBRfX0se2tleToidGZoZCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7QS50cmFja0lkPXhoKGcpO3ZhciBJPTQsQj0xJkEuZmxhZ3MsUT0yJkEuZmxhZ3MsRT04JkEuZmxhZ3MsQz0xNiZBLmZsYWdzLHQ9MzImQS5mbGFncztCJiYoSSs9NCxBLmJhc2VEYXRhT2Zmc2V0PXhoKGcsSSksSSs9NCksUSYmKEEuc2FtcGxlRGVzY3JpcHRpb25JbmRleD14aChnLEkpLEkrPTQpLEUmJihBLmRlZmF1bHRTYW1wbGVEdXJhdGlvbj14aChnLEkpLEkrPTQpLEMmJihBLmRlZmF1bHRTYW1wbGVTaXplPXhoKGcsSSksSSs9NCksdCYmKEEuZGVmYXVsdFNhbXBsZUZsYWdzPXhoKGcsSSkpfSkpfX0se2tleToic2lkeCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9MDtBLnJlZmVyZW5jZV9JRD14aChnLEkpLEkrPTQsQS50aW1lc2NhbGU9eGgoZyxJKSxJKz00LDA9PT1BLnZlcnNpb24/KEEuZWFybGllc3RfcHJlc2VudGF0aW9uX3RpbWU9eGgoZyxJKSxJKz00LEEuZmlyc3Rfb2Zmc2V0PXhoKGcsSSksSSs9NCk6KEEuZWFybGllc3RfcHJlc2VudGF0aW9uX3RpbWU9cWgoZyxJKSxJKz04LEEuZmlyc3Rfb2Zmc2V0PXFoKGcsSSksSSs9OCksSSs9MixBLnJlZmVyZW5jZXM9W107dmFyIEI9bWgoZyxJKTtJKz0yO2Zvcih2YXIgUT0wO1E8QjtRKyspe3ZhciBFPXt9O0EucmVmZXJlbmNlcy5wdXNoKEUpO3ZhciBDPXhoKGcsSSk7SSs9NCxFLnJlZmVyZW5jZV90eXBlPUM+PjMxJjEsRS5yZWZlcmVuY2VkX3NpemU9MjE0NzQ4MzY0NyZDLEUuc3Vic2VnbWVudF9kdXJhdGlvbj14aChnLEkpLEM9eGgoZyxJKz00KSxJKz00LEUuc3RhcnRzX3dpdGhfU0FQPUM+PjMxJjEsRS5TQVBfdHlwZT1DPj4yOCY3LEUuU0FQX2RlbHRhX3RpbWU9MjY4NDM1NDU1JkN9fSkpfX0se2tleToibW9vdiIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIHpoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXtnLm12aGQ9QS5tdmhkKEEuZmluZEJveChJLFsibXZoZCJdLEIpWzBdKSxnLnRyYWs9QS5maW5kQm94KEksWyJ0cmFrIl0sQikubWFwKChmdW5jdGlvbihnKXtyZXR1cm4gQS50cmFrKGcpfSkpLGcucHNzaD1BLnBzc2goQS5maW5kQm94KEksWyJwc3NoIl0sQilbMF0pfSkpfX0se2tleToibXZoZCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9MDsxPT09QS52ZXJzaW9uPyhBLnRpbWVzY2FsZT14aChnLDE2KSxBLmR1cmF0aW9uPXFoKGcsMjApLEkrPTI4KTooQS50aW1lc2NhbGU9eGgoZyw4KSxBLmR1cmF0aW9uPXhoKGcsMTIpLEkrPTE2KSxBLm5leHRUcmFja0lkPXhoKGcsSSs3Nil9KSl9fSx7a2V5OiJ0cmFrIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gemgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe2cudGtoZD1BLnRraGQoQS5maW5kQm94KEksWyJ0a2hkIl0sQilbMF0pLGcubWRpYT1BLm1kaWEoQS5maW5kQm94KEksWyJtZGlhIl0sQilbMF0pfSkpfX0se2tleToidGtoZCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9MDsxPT09QS52ZXJzaW9uPyhBLnRyYWNrSWQ9eGgoZywxNiksQS5kdXJhdGlvbj1xaChnLDI0KSxJKz0zMik6KEEudHJhY2tJZD14aChnLDgpLEEuZHVyYXRpb249eGgoZywxNiksSSs9MjApLEEud2lkdGg9eGgoZyxJKzUyKSxBLmhlaWdodD14aChnLEkrNTYpfSkpfX0se2tleToibWRpYSIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIHpoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXtnLm1kaGQ9QS5tZGhkKEEuZmluZEJveChJLFsibWRoZCJdLEIpWzBdKSxnLmhkbHI9QS5oZGxyKEEuZmluZEJveChJLFsiaGRsciJdLEIpWzBdKSxnLm1pbmY9QS5taW5mKEEuZmluZEJveChJLFsibWluZiJdLEIpWzBdKX0pKX19LHtrZXk6Im1kaGQiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiB6aChBLCEwLChmdW5jdGlvbihBLGcpe3ZhciBJPTA7MT09PUEudmVyc2lvbj8oQS50aW1lc2NhbGU9eGgoZywxNiksQS5kdXJhdGlvbj1xaChnLDIwKSxJKz0yOCk6KEEudGltZXNjYWxlPXhoKGcsOCksQS5kdXJhdGlvbj14aChnLDEyKSxJKz0xNik7dmFyIEI9bWgoZyxJKTtBLmxhbmd1YWdlPVN0cmluZy5mcm9tQ2hhckNvZGUoOTYrKEI+PjEwJjMxKSw5NisoQj4+NSYzMSksOTYrKDMxJkIpKX0pKX19LHtrZXk6ImhkbHIiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiB6aChBLCEwLChmdW5jdGlvbihBLGcpezA9PT1BLnZlcnNpb24mJihBLmhhbmRsZXJUeXBlPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxnLnN1YmFycmF5KDQsOCkpKX0pKX19LHtrZXk6Im1pbmYiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiB6aChnLCExLChmdW5jdGlvbihnLEksQil7Zy52bWhkPUEudm1oZChBLmZpbmRCb3goSSxbInZtaGQiXSxCKVswXSksZy5zbWhkPUEuc21oZChBLmZpbmRCb3goSSxbInNtaGQiXSxCKVswXSksZy5zdGJsPUEuc3RibChBLmZpbmRCb3goSSxbInN0YmwiXSxCKVswXSl9KSl9fSx7a2V5OiJ2bWhkIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gemgoQSwhMCwoZnVuY3Rpb24oQSxnKXtBLmdyYXBoaWNzbW9kZT1taChnKSxBLm9wY29sb3I9W21oKGcsMiksbWgoZyw0KSxtaChnLDYpXX0pKX19LHtrZXk6InNtaGQiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiB6aChBLCEwLChmdW5jdGlvbihBLGcpe0EuYmFsYW5jZT1taChnKX0pKX19LHtrZXk6InN0YmwiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiB6aChnLCExLChmdW5jdGlvbihnLEksQil7dmFyIFEsRSxDO2cuc3RzZD1BLnN0c2QoQS5maW5kQm94KEksWyJzdHNkIl0sQilbMF0pLGcuc3R0cz1BLnN0dHMoQS5maW5kQm94KEksWyJzdHRzIl0sQilbMF0pLGcuY3R0cz1BLmN0dHMoQS5maW5kQm94KEksWyJjdHRzIl0sQilbMF0pLGcuc3RzYz1BLnN0c2MoQS5maW5kQm94KEksWyJzdHNjIl0sQilbMF0pLGcuc3Rzej1BLnN0c3ooQS5maW5kQm94KEksWyJzdHN6Il0sQilbMF0pLGcuc3Rjbz1BLnN0Y28oQS5maW5kQm94KEksWyJzdGNvIl0sQilbMF0pLGcuc3Rjb3x8KGcuY282ND1BLmNvNjQoQS5maW5kQm94KEksWyJjbzY0Il0sQilbMF0pLGcuc3Rjbz1nLmNvNjQpO3ZhciB0PW51bGw9PT0oUT1nLnN0c2QuZW50cmllc1swXSl8fHZvaWQgMD09PVF8fG51bGw9PT0oRT1RLnNpbmYpfHx2b2lkIDA9PT1FfHxudWxsPT09KEM9RS5zY2hpKXx8dm9pZCAwPT09Qz92b2lkIDA6Qy50ZW5jLmRlZmF1bHRfSVZfc2l6ZTtnLnN0c3M9QS5zdHNzKEEuZmluZEJveChJLFsic3RzcyJdLEIpWzBdKSxnLnNlbmM9QS5zZW5jKEEuZmluZEJveChJLFsic2VuYyJdLEIpWzBdLHQpfSkpfX0se2tleToic2VuYyIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjg7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsSSl7dmFyIEI9MCxRPXhoKEksQik7Qis9NCxBLnNhbXBsZXM9W107Zm9yKHZhciBFPTA7RTxRO0UrKyl7Zm9yKHZhciBDPXtJbml0aWFsaXphdGlvblZlY3RvcjpbXX0sdD0wO3Q8Zzt0KyspQy5Jbml0aWFsaXphdGlvblZlY3Rvclt0XT1JW0IrdF07aWYoQis9ZywyJkEuZmxhZ3Mpe0Muc3Vic2FtcGxlcz1bXTt2YXIgaT1taChJLEIpO0IrPTI7Zm9yKHZhciBlPTA7ZTxpO2UrKyl7dmFyIG89e307by5CeXRlc09mQ2xlYXJEYXRhPW1oKEksQiksQis9MixvLkJ5dGVzT2ZQcm90ZWN0ZWREYXRhPXhoKEksQiksQis9NCxDLnN1YnNhbXBsZXMucHVzaChvKX19QS5zYW1wbGVzLnB1c2goQyl9fSkpfX0se2tleToicHNzaCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPVtdLEI9W10sUT0wLEU9MDtFPDE2O0UrKylCLnB1c2goX2goZ1tRK0VdKSk7aWYoUSs9MTYsQS52ZXJzaW9uPjApe3ZhciBDPXhoKGcsUSk7USs9NDtmb3IodmFyIHQ9MDt0PCgiIitDKS5sZW5ndGg7dCsrKWZvcih2YXIgaT0wO2k8MTY7aSsrKXt2YXIgZT1nW1FdO1ErPTEsSS5wdXNoKF9oKGUpKX19dmFyIG89eGgoZyxRKTtBLmRhdGFfc2l6ZT1vLFErPTQsQS5raWQ9SSxBLnN5c3RlbV9pZD1CLEEuYnVmZmVyPWd9KSl9fSx7a2V5OiJidmMyIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gemgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe3ZhciBRPVZoKGcsSSksRT1JLnN1YmFycmF5KFEpO0IrPVEsZy52dmNDPUEuYnYyQyhBLmZpbmRCb3goRSxbImJ2MkMiXSxCKVswXSksZy5wYXNwPUEucGFzcChBLmZpbmRCb3goRSxbInBhc3AiXSxCKVswXSl9KSl9fSx7a2V5OiJidjJDIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gemgoQSwhMSwoZnVuY3Rpb24oQSxnLEkpe3ZhciBCPVpoLnBhcnNlVlZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoZyk7Zm9yKHZhciBRIGluIEIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEIsUSkmJihBW1FdPUJbUV0pfSkpfX0se2tleToic3RzZCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIHpoKGcsITAsKGZ1bmN0aW9uKGcsSSxCKXtnLmVudHJ5Q291bnQ9eGgoSSksZy5lbnRyaWVzPUEuZmluZEJveChJLnN1YmFycmF5KDQpLFtdLEIrNCkubWFwKChmdW5jdGlvbihnKXtzd2l0Y2goZy50eXBlKXtjYXNlImF2YzEiOmNhc2UiYXZjMiI6Y2FzZSJhdmMzIjpjYXNlImF2YzQiOnJldHVybiBBLmF2YzEoZyk7Y2FzZSJodmMxIjpjYXNlImhldjEiOnJldHVybiBBLmh2YzEoZyk7Y2FzZSJidmMyIjpyZXR1cm4gQS5idmMyKGcpO2Nhc2UibXA0YSI6cmV0dXJuIEEubXA0YShnKTtjYXNlImFsYXciOmNhc2UidWxhdyI6cmV0dXJuIEEuYWxhdyhnKTtjYXNlImVuY2EiOnJldHVybiB6aChnLCExLChmdW5jdGlvbihnLEksQil7Zy5jaGFubmVsQ291bnQ9bWgoSSwxNiksZy5zYW1wbGVzaXplPW1oKEksMTgpLGcuc2FtcGxlUmF0ZT14aChJLDI0KS82NTUzNixJPUkuc3ViYXJyYXkoMjgpLGcuc2luZj1BLnNpbmYoQS5maW5kQm94KEksWyJzaW5mIl0sQilbMF0pLGcuZXNkcz1BLmVzZHMoQS5maW5kQm94KEksWyJlc2RzIl0sQilbMF0pfSkpO2Nhc2UiZW5jdiI6cmV0dXJuIHpoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXtnLndpZHRoPW1oKEksMjQpLGcuaGVpZ2h0PW1oKEksMjYpLGcuaG9yaXpyZXNvbHV0aW9uPXhoKEksMjgpLGcudmVydHJlc29sdXRpb249eGgoSSwzMiksST1JLnN1YmFycmF5KDc4KSxnLnNpbmY9QS5zaW5mKEEuZmluZEJveChJLFsic2luZiJdLEIpWzBdKSxnLmF2Y0M9QS5hdmNDKEEuZmluZEJveChJLFsiYXZjQyJdLEIpWzBdKSxnLmh2Y0M9QS5odmNDKEEuZmluZEJveChJLFsiaHZjQyJdLEIpWzBdKSxnLnBhc3A9QS5wYXNwKEEuZmluZEJveChJLFsicGFzcCJdLEIpWzBdKX0pKX19KSkuZmlsdGVyKEJvb2xlYW4pfSkpfX0se2tleToidGVuYyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITEsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9NjtBLmRlZmF1bHRfSXNFbmNyeXB0ZWQ9Z1tJXSxJKz0xLEEuZGVmYXVsdF9JVl9zaXplPWdbSV0sSSs9MSxBLmRlZmF1bHRfS0lEPVtdO2Zvcih2YXIgQj0wO0I8MTY7QisrKUEuZGVmYXVsdF9LSUQucHVzaChfaChnW0ldKSksSSs9MX0pKX19LHtrZXk6InNjaGkiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiB6aChnLCExLChmdW5jdGlvbihnLEksQil7Zy50ZW5jPUEudGVuYyhBLmZpbmRCb3goSSxbInRlbmMiXSxCKVswXSl9KSl9fSx7a2V5OiJzaW5mIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gemgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe2cuc2NoaT1BLnNjaGkoQS5maW5kQm94KEksWyJzY2hpIl0sQilbMF0pLGcuZnJtYT1BLmZybWEoQS5maW5kQm94KEksWyJmcm1hIl0sQilbMF0pfSkpfX0se2tleToiZnJtYSIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITEsKGZ1bmN0aW9uKEEsZyl7QS5kYXRhX2Zvcm1hdD0iIjtmb3IodmFyIEk9MDtJPDQ7SSsrKUEuZGF0YV9mb3JtYXQrPVN0cmluZy5mcm9tQ2hhckNvZGUoZ1tJXSl9KSl9fSx7a2V5OiJhdmMxIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gemgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe3ZhciBRPVZoKGcsSSksRT1JLnN1YmFycmF5KFEpO0IrPVEsZy5hdmNDPUEuYXZjQyhBLmZpbmRCb3goRSxbImF2Y0MiXSxCKVswXSksZy5wYXNwPUEucGFzcChBLmZpbmRCb3goRSxbInBhc3AiXSxCKVswXSl9KSl9fSx7a2V5OiJhdmNDIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gemgoQSwhMSwoZnVuY3Rpb24oQSxnKXtBLmNvbmZpZ3VyYXRpb25WZXJzaW9uPWdbMF0sQS5BVkNQcm9maWxlSW5kaWNhdGlvbj1nWzFdLEEucHJvZmlsZUNvbXBhdGliaWxpdHk9Z1syXSxBLkFWQ0xldmVsSW5kaWNhdGlvbj1nWzNdLEEuY29kZWM9ZnVuY3Rpb24oQSl7Zm9yKHZhciBnLEk9ImF2YzEuIixCPTA7QjwzO0IrKykoZz1BW0JdLnRvU3RyaW5nKDE2KSkubGVuZ3RoPDImJihnPSIwIi5jb25jYXQoZykpLEkrPWc7cmV0dXJuIEl9KFtnWzFdLGdbMl0sZ1szXV0pLEEubGVuZ3RoU2l6ZU1pbnVzT25lPTMmZ1s0XSxBLnNwc0xlbmd0aD0zMSZnWzVdLEEuc3BzPVtdO2Zvcih2YXIgST02LEI9MDtCPEEuc3BzTGVuZ3RoO0IrKyl7dmFyIFE9bWgoZyxJKTtJKz0yLEEuc3BzLnB1c2goZy5zdWJhcnJheShJLEkrUSkpLEkrPVF9QS5wcHNMZW5ndGg9Z1tJXSxJKz0xLEEucHBzPVtdO2Zvcih2YXIgRT0wO0U8QS5wcHNMZW5ndGg7RSsrKXt2YXIgQz1taChnLEkpO0krPTIsQS5wcHMucHVzaChnLnN1YmFycmF5KEksSSs9QykpLEkrPUN9fSkpfX0se2tleToiaHZjMSIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIHpoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXt2YXIgUT1WaChnLEkpLEU9SS5zdWJhcnJheShRKTtCKz1RLGcuaHZjQz1BLmh2Y0MoQS5maW5kQm94KEUsWyJodmNDIl0sQilbMF0pLGcucGFzcD1BLnBhc3AoQS5maW5kQm94KEUsWyJwYXNwIl0sQilbMF0pfSkpfX0se2tleToiaHZjQyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITEsKGZ1bmN0aW9uKGcsSSl7Zy5kYXRhPUEuZGF0YSxnLmNvZGVjPSJoZXYxLjEuNi5MOTMuQjAiLGcuY29uZmlndXJhdGlvblZlcnNpb249SVswXTt2YXIgQj1JWzFdO2cuZ2VuZXJhbFByb2ZpbGVTcGFjZT1CPj42LGcuZ2VuZXJhbFRpZXJGbGFnPSgzMiZCKT4+NSxnLmdlbmVyYWxQcm9maWxlSWRjPTMxJkIsZy5nZW5lcmFsUHJvZmlsZUNvbXBhdGliaWxpdHk9eGgoSSwyKSxnLmdlbmVyYWxDb25zdHJhaW50SW5kaWNhdG9yRmxhZ3M9SS5zdWJhcnJheSg2LDEyKSxnLmdlbmVyYWxMZXZlbElkYz1JWzEyXSxnLmF2Z0ZyYW1lUmF0ZT1taChJLDE5KSxnLm51bU9mQXJyYXlzPUlbMjJdLGcudnBzPVtdLGcuc3BzPVtdLGcucHBzPVtdO2Zvcih2YXIgUT0yMyxFPTAsQz0wLHQ9MCxpPTA7aTxnLm51bU9mQXJyYXlzO2krKyl7RT02MyZJW1FdLEM9bWgoSSxRKzEpLFErPTM7Zm9yKHZhciBlLG89W10scj0wO3I8QztyKyspdD1taChJLFEpLFErPTIsby5wdXNoKEkuc3ViYXJyYXkoUSxRK3QpKSxRKz10O2lmKDMyPT09RSkoZT1nLnZwcykucHVzaC5hcHBseShlLG8pO2Vsc2UgaWYoMzM9PT1FKXt2YXIgbjsobj1nLnNwcykucHVzaC5hcHBseShuLG8pfWVsc2UgaWYoMzQ9PT1FKXt2YXIgYTsoYT1nLnBwcykucHVzaC5hcHBseShhLG8pfX19KSl9fSx7a2V5OiJwYXNwIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gemgoQSwhMSwoZnVuY3Rpb24oQSxnKXtBLmhTcGFjaW5nPXhoKGcpLEEudlNwYWNpbmc9eGgoZyw0KX0pKX19LHtrZXk6Im1wNGEiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiB6aChnLCExLChmdW5jdGlvbihnLEksQil7dmFyIFE9WGgoZyxJKTtnLmVzZHM9QS5lc2RzKEEuZmluZEJveChJLnN1YmFycmF5KFEpLFsiZXNkcyJdLEIrUSlbMF0pfSkpfX0se2tleToiZXNkcyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7QS5jb2RlYz0ibXA0YS4iO2Zvcih2YXIgST0wLEI9MCxRPTAsRT0wO2cubGVuZ3RoOyl7Zm9yKEU9Z1tJPTBdLEI9Z1tJKzFdLEkrPTI7MTI4JkI7KVE9KDEyNyZCKTw8NyxCPWdbSV0sSSs9MTtpZihRKz0xMjcmQiwzPT09RSlnPWcuc3ViYXJyYXkoSSszKTtlbHNle2lmKDQhPT1FKXtpZig1PT09RSl7dmFyIEM9QS5jb25maWc9Zy5zdWJhcnJheShJLEkrUSksdD0oMjQ4JkNbMF0pPj4zO3JldHVybiAzMT09PXQmJkMubGVuZ3RoPj0yJiYodD0zMisoKDcmQ1swXSk8PDMpKygoMjI0JkNbMV0pPj41KSksQS5vYmplY3RUeXBlPXQsQS5jb2RlYys9dC50b1N0cmluZygxNiksdm9pZCgiLiI9PT1BLmNvZGVjW0EuY29kZWMubGVuZ3RoLTFdJiYoQS5jb2RlYz1BLmNvZGVjLnN1YnN0cmluZygwLEEuY29kZWMubGVuZ3RoLTEpKSl9cmV0dXJuIHZvaWQoIi4iPT09QS5jb2RlY1tBLmNvZGVjLmxlbmd0aC0xXSYmKEEuY29kZWM9QS5jb2RlYy5zdWJzdHJpbmcoMCxBLmNvZGVjLmxlbmd0aC0xKSkpfUEuY29kZWMrPShnW0ldLnRvU3RyaW5nKDE2KSsiLiIpLnBhZFN0YXJ0KDMsIjAiKSxnPWcuc3ViYXJyYXkoSSsxMyl9fX0pKX19LHtrZXk6ImFsYXciLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiB6aChBLCExLChmdW5jdGlvbihBLGcpe1hoKEEsZyl9KSl9fSx7a2V5OiJzdHRzIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gemgoQSwhMCwoZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9eGgoZyksQj1bXSxRPTQsRT0wO0U8STtFKyspQi5wdXNoKHtjb3VudDp4aChnLFEpLGRlbHRhOnhoKGcsUSs0KX0pLFErPTg7QS5lbnRyeUNvdW50PUksQS5lbnRyaWVzPUJ9KSl9fSx7a2V5OiJjdHRzIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gemgoQSwhMCwoZnVuY3Rpb24oQSxnKXt2YXIgST14aChnKSxCPVtdLFE9NDtpZigxPT09QS52ZXJzaW9uKWZvcih2YXIgRT0wO0U8STtFKyspQi5wdXNoKHtjb3VudDp4aChnLFEpLG9mZnNldDp4aChnLFErNCl9KSxRKz04O2Vsc2UgZm9yKHZhciBDPTA7QzxJO0MrKylCLnB1c2goe2NvdW50OnhoKGcsUSksb2Zmc2V0Oi0oMSt+eGgoZyxRKzQpKX0pLFErPTg7QS5lbnRyeUNvdW50PUksQS5lbnRyaWVzPUJ9KSl9fSx7a2V5OiJzdHNjIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gemgoQSwhMCwoZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9eGgoZyksQj1bXSxRPTQsRT0wO0U8STtFKyspQi5wdXNoKHtmaXJzdENodW5rOnhoKGcsUSksc2FtcGxlc1BlckNodW5rOnhoKGcsUSs0KSxzYW1wbGVEZXNjcmlwdGlvbkluZGV4OnhoKGcsUSs4KX0pLFErPTEyO0EuZW50cnlDb3VudD1JLEEuZW50cmllcz1CfSkpfX0se2tleToic3RzeiIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9eGgoZyksQj14aChnLDQpLFE9W107aWYoIUkpZm9yKHZhciBFPTgsQz0wO0M8QjtDKyspUS5wdXNoKHhoKGcsRSkpLEUrPTQ7QS5zYW1wbGVTaXplPUksQS5zYW1wbGVDb3VudD1CLEEuZW50cnlTaXplcz1RfSkpfX0se2tleToic3RjbyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPXhoKGcpLEI9W10sUT00LEU9MDtFPEk7RSsrKUIucHVzaCh4aChnLFEpKSxRKz00O0EuZW50cnlDb3VudD1JLEEuZW50cmllcz1CfSkpfX0se2tleToiY282NCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPXhoKGcpLEI9W10sUT00LEU9MDtFPEk7RSsrKUIucHVzaChxaChnLFEpKSxRKz04O0EuZW50cnlDb3VudD1JLEEuZW50cmllcz1CfSkpfX0se2tleToic3RzcyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPXhoKGcpLEI9W10sUT00LEU9MDtFPEk7RSsrKUIucHVzaCh4aChnLFEpKSxRKz00O0EuZW50cnlDb3VudD1JLEEuZW50cmllcz1CfSkpfX0se2tleToibW9vZiIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIHpoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXtnLm1maGQ9QS5tZmhkKEEuZmluZEJveChJLFsibWZoZCJdLEIpWzBdKSxnLnRyYWY9QS5maW5kQm94KEksWyJ0cmFmIl0sQikubWFwKChmdW5jdGlvbihnKXtyZXR1cm4gQS50cmFmKGcpfSkpfSkpfX0se2tleToibWZoZCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7QS5zZXF1ZW5jZU51bWJlcj14aChnKX0pKX19LHtrZXk6InRyYWYiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiB6aChnLCExLChmdW5jdGlvbihnLEksQil7Zy50ZmhkPUEudGZoZChBLmZpbmRCb3goSSxbInRmaGQiXSxCKVswXSksZy50ZmR0PUEudGZkdChBLmZpbmRCb3goSSxbInRmZHQiXSxCKVswXSksZy50cnVuPUEudHJ1bihBLmZpbmRCb3goSSxbInRydW4iXSxCKVswXSl9KSl9fSx7a2V5OiJ0cnVuIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gemgoQSwhMCwoZnVuY3Rpb24oQSxnKXt2YXIgST1BLnZlcnNpb24sQj1BLmZsYWdzLFE9Zy5sZW5ndGgsRT1BLnNhbXBsZUNvdW50PXhoKGcpLEM9NDtpZihRPkMmJjEmQiYmKEEuZGF0YU9mZnNldD0tKDErfnhoKGcsQykpLEMrPTQpLFE+QyYmNCZCJiYoQS5maXJzdFNhbXBsZUZsYWdzPXhoKGcsQyksQys9NCksQS5zYW1wbGVzPVtdLFE+Qylmb3IodmFyIHQsaT0wO2k8RTtpKyspdD17fSwyNTYmQiYmKHQuZHVyYXRpb249eGgoZyxDKSxDKz00KSw1MTImQiYmKHQuc2l6ZT14aChnLEMpLEMrPTQpLDEwMjQmQiYmKHQuZmxhZ3M9eGgoZyxDKSxDKz00KSwyMDQ4JkImJih0LmN0cz1JPy0oMSt+eGgoZyxDKzQpKTp4aChnLEMpLEMrPTQpLEEuc2FtcGxlcy5wdXNoKHQpfSkpfX0se2tleToidGZkdCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7MT09PUEudmVyc2lvbj9BLmJhc2VNZWRpYURlY29kZVRpbWU9cWgoZyk6QS5iYXNlTWVkaWFEZWNvZGVUaW1lPXhoKGcpfSkpfX0se2tleToicHJvYmUiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiEhQS5maW5kQm94KGcsWyJmdHlwIl0pfX0se2tleToicGFyc2VTYW1wbGVGbGFncyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJue2lzTGVhZGluZzooMTImQVswXSk+Pj4yLGRlcGVuZHNPbjozJkFbMF0saXNEZXBlbmRlZE9uOigxOTImQVsxXSk+Pj42LGhhc1JlZHVuZGFuY3k6KDQ4JkFbMV0pPj4+NCxwYWRkaW5nVmFsdWU6KDE0JkFbMV0pPj4+MSxpc05vblN5bmNTYW1wbGU6MSZBWzFdLGRlZ3JhZGF0aW9uUHJpb3JpdHk6QVsyXTw8OHxBWzNdfX19LHtrZXk6Im1vb3ZUb1RyYWNrIix2YWx1ZTpmdW5jdGlvbihBLGcsSSl7dmFyIEIsUSxFPUEudHJhaztpZihFJiZFLmxlbmd0aCl7dmFyIEM9RS5maW5kKChmdW5jdGlvbihBKXt2YXIgZyxJO3JldHVybiJ2aWRlIj09PShudWxsPT09KGc9QS5tZGlhKXx8dm9pZCAwPT09Z3x8bnVsbD09PShJPWcuaGRscil8fHZvaWQgMD09PUk/dm9pZCAwOkkuaGFuZGxlclR5cGUpfSkpLHQ9RS5maW5kKChmdW5jdGlvbihBKXt2YXIgZyxJO3JldHVybiJzb3VuIj09PShudWxsPT09KGc9QS5tZGlhKXx8dm9pZCAwPT09Z3x8bnVsbD09PShJPWcuaGRscil8fHZvaWQgMD09PUk/dm9pZCAwOkkuaGFuZGxlclR5cGUpfSkpO2lmKEMmJmcpe3ZhciBpLGUsbyxyLG4sYSxzLGM9ZyxoPW51bGw9PT0oaT1DLnRraGQpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnRyYWNrSWQ7bnVsbCE9aCYmKGMuaWQ9Qy50a2hkLnRyYWNrSWQpLGMudGtoZER1cmF0aW9uPUMudGtoZC5kdXJhdGlvbixjLm12aGREdXJ0aW9uPUEubXZoZC5kdXJhdGlvbixjLm12aGRUaW1lY2FsZT1BLm12aGQudGltZXNjYWxlLGMudGltZXNjYWxlPWMuZm9ybWF0VGltZXNjYWxlPUMubWRpYS5tZGhkLnRpbWVzY2FsZSxjLmR1cmF0aW9uPUMubWRpYS5tZGhkLmR1cmF0aW9ufHxjLm12aGREdXJ0aW9uL2MubXZoZFRpbWVjYWxlKmMudGltZXNjYWxlO3ZhciBmLHUseSxELGwsdyxkLEYsUj1DLm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1swXTtpZihjLndpZHRoPVIud2lkdGgsYy5oZWlnaHQ9Ui5oZWlnaHQsUi5wYXNwJiYoYy5zYXJSYXRpbz1bUi5wYXNwLmhTcGFjaW5nLFIucGFzcC52U3BhY2luZ10pLFIuaHZjQyljLmNvZGVjVHlwZT13aCxjLmNvZGVjPVIuaHZjQy5jb2RlYyxjLnZwcz1SLmh2Y0MudnBzLGMuc3BzPVIuaHZjQy5zcHMsYy5wcHM9Ui5odmNDLnBwcyxjLmh2Y0M9Ui5odmNDLmRhdGE7ZWxzZSBpZihSLmF2Y0MpYy5jb2RlYz1SLmF2Y0MuY29kZWMsYy5zcHM9Ui5hdmNDLnNwcyxjLnBwcz1SLmF2Y0MucHBzO2Vsc2V7aWYoIVIudnZjQyl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdmlkZW8gc3RzZCBlbnRyeSIpO2MuY29kZWNUeXBlPWRoLGMuY29kZWM9Ui52dmNDLmNvZGVjLGMuc3BzPVIudnZjQy5zcHMsYy5wcHM9Ui52dmNDLnBwcyxjLnZwcz1SLnZ2Y0MudnBzLGMudnZjQz1SLnZ2Y0MuZGF0YX1pZihjLnByZXNlbnQ9ITAsYy5leHQ9e30sYy5leHQuc3Rzcz1udWxsPT09KGU9Qy5tZGlhKXx8dm9pZCAwPT09ZXx8bnVsbD09PShvPWUubWluZil8fHZvaWQgMD09PW98fG51bGw9PT0ocj1vLnN0YmwpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN0c3MsYy5leHQuY3R0cz1udWxsPT09KG49Qy5tZGlhKXx8dm9pZCAwPT09bnx8bnVsbD09PShhPW4ubWluZil8fHZvaWQgMD09PWF8fG51bGw9PT0ocz1hLnN0YmwpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLmN0dHMsUiYmImVuY3YiPT09Ui50eXBlKWMuaXNWaWRlb0VuY3J5cHRpb249ITAsUi5kZWZhdWx0X0tJRD1udWxsPT09KGY9Ui5zaW5mKXx8dm9pZCAwPT09Znx8bnVsbD09PSh1PWYuc2NoaSl8fHZvaWQgMD09PXU/dm9pZCAwOnUudGVuYy5kZWZhdWx0X0tJRCxSLmRlZmF1bHRfSXNFbmNyeXB0ZWQ9bnVsbD09PSh5PVIuc2luZil8fHZvaWQgMD09PXl8fG51bGw9PT0oRD15LnNjaGkpfHx2b2lkIDA9PT1EP3ZvaWQgMDpELnRlbmMuZGVmYXVsdF9Jc0VuY3J5cHRlZCxSLmRlZmF1bHRfSVZfc2l6ZT1udWxsPT09KGw9Ui5zaW5mKXx8dm9pZCAwPT09bHx8bnVsbD09PSh3PWwuc2NoaSl8fHZvaWQgMD09PXc/dm9pZCAwOncudGVuYy5kZWZhdWx0X0lWX3NpemUsYy52aWRlb1NlbmM9Qy5tZGlhLm1pbmYuc3RibC5zZW5jJiZDLm1kaWEubWluZi5zdGJsLnNlbmMuc2FtcGxlcyxSLmRhdGFfZm9ybWF0PW51bGw9PT0oZD1SLnNpbmYpfHx2b2lkIDA9PT1kfHxudWxsPT09KEY9ZC5mcm1hKXx8dm9pZCAwPT09Rj92b2lkIDA6Ri5kYXRhX2Zvcm1hdCxjLnVzZUVNRT1BLnVzZUVNRSxjLmtpZFZhbHVlPUEua2lkVmFsdWUsYy5wc3NoPUEucHNzaCxjLmVuY3Y9Un1pZih0JiZJKXt2YXIgRyxrLHAsUyxVLE0sTix2LFksSD1JLEw9bnVsbD09PShHPXQudGtoZCl8fHZvaWQgMD09PUc/dm9pZCAwOkcudHJhY2tJZDtudWxsIT1MJiYoSC5pZD10LnRraGQudHJhY2tJZCksSC50a2hkRHVyYXRpb249dC50a2hkLmR1cmF0aW9uLEgubXZoZER1cnRpb249QS5tdmhkLmR1cmF0aW9uLEgubXZoZFRpbWVjYWxlPUEubXZoZC50aW1lc2NhbGUsSC50aW1lc2NhbGU9SC5mb3JtYXRUaW1lc2NhbGU9dC5tZGlhLm1kaGQudGltZXNjYWxlLEguZHVyYXRpb249dC5tZGlhLm1kaGQuZHVyYXRpb258fEgubXZoZER1cnRpb24vSC5tdmhkVGltZWNhbGUqSC50aW1lc2NhbGU7dmFyIEosSyxtLHgscSxiLFQsaixPPXQubWRpYS5taW5mLnN0Ymwuc3RzZC5lbnRyaWVzWzBdO3N3aXRjaChILnNhbXBsZVNpemU9Ty5zYW1wbGVTaXplLEguc2FtcGxlUmF0ZT1PLnNhbXBsZVJhdGUsSC5jaGFubmVsQ291bnQ9Ty5jaGFubmVsQ291bnQsSC5wcmVzZW50PSEwLE8udHlwZSl7Y2FzZSJhbGF3IjpILmNvZGVjVHlwZT1ILmNvZGVjPVJoLEguc2FtcGxlUmF0ZT04ZTM7YnJlYWs7Y2FzZSJ1bGF3IjpILmNvZGVjVHlwZT1ILmNvZGVjPUdoLEguc2FtcGxlUmF0ZT04ZTM7YnJlYWs7ZGVmYXVsdDpILnNhbXBsZUR1cmF0aW9uPUxoLmdldEZyYW1lRHVyYXRpb24oSC5zYW1wbGVSYXRlLEgudGltZXNjYWxlKSxILnNhbXBsZVJhdGVJbmRleD1MaC5nZXRSYXRlSW5kZXhCeVJhdGUoSC5zYW1wbGVSYXRlKSxILm9iamVjdFR5cGU9KG51bGw9PT0oQj1PLmVzZHMpfHx2b2lkIDA9PT1CP3ZvaWQgMDpCLm9iamVjdFR5cGUpfHwyLE8uZXNkcyYmKEguY29uZmlnPUFycmF5LmZyb20oTy5lc2RzLmNvbmZpZykpLEguY29kZWM9KG51bGw9PT0oUT1PLmVzZHMpfHx2b2lkIDA9PT1RP3ZvaWQgMDpRLmNvZGVjKXx8Im1wNGEuNDAuMiJ9aWYoSC5zYW1wbGVEdXJhdGlvbj1MaC5nZXRGcmFtZUR1cmF0aW9uKEguc2FtcGxlUmF0ZSxILnRpbWVzY2FsZSksSC5vYmplY3RUeXBlPShudWxsPT09KGs9Ty5lc2RzKXx8dm9pZCAwPT09az92b2lkIDA6ay5vYmplY3RUeXBlKXx8MixPLmVzZHMmJihPLmVzZHMuY29uZmlnP0guY29uZmlnPUFycmF5LmZyb20oTy5lc2RzLmNvbmZpZyk6Y29uc29sZS53YXJuKCJlc2RzIGNvbmZpZyBpcyBudWxsIikpLEguY29kZWM9KG51bGw9PT0ocD1PLmVzZHMpfHx2b2lkIDA9PT1wP3ZvaWQgMDpwLmNvZGVjKXx8Im1wNGEuNDAuMiIsSC5zYW1wbGVSYXRlSW5kZXg9TGguZ2V0UmF0ZUluZGV4QnlSYXRlKEguc2FtcGxlUmF0ZSksSC5leHQ9e30sSC5leHQuc3Rzcz1udWxsPT09KFM9dC5tZGlhKXx8dm9pZCAwPT09U3x8bnVsbD09PShVPVMubWluZil8fHZvaWQgMD09PVV8fG51bGw9PT0oTT1VLnN0YmwpfHx2b2lkIDA9PT1NP3ZvaWQgMDpNLnN0c3MsSC5leHQuY3R0cz1udWxsPT09KE49dC5tZGlhKXx8dm9pZCAwPT09Tnx8bnVsbD09PSh2PU4ubWluZil8fHZvaWQgMD09PXZ8fG51bGw9PT0oWT12LnN0YmwpfHx2b2lkIDA9PT1ZP3ZvaWQgMDpZLmN0dHMsSC5wcmVzZW50PSEwLE8mJiJlbmNhIj09PU8udHlwZSlILmlzQXVkaW9FbmNyeXB0aW9uPSEwLE8uZGF0YV9mb3JtYXQ9bnVsbD09PShKPU8uc2luZil8fHZvaWQgMD09PUp8fG51bGw9PT0oSz1KLmZybWEpfHx2b2lkIDA9PT1LP3ZvaWQgMDpLLmRhdGFfZm9ybWF0LE8uZGVmYXVsdF9LSUQ9bnVsbD09PShtPU8uc2luZil8fHZvaWQgMD09PW18fG51bGw9PT0oeD1tLnNjaGkpfHx2b2lkIDA9PT14P3ZvaWQgMDp4LnRlbmMuZGVmYXVsdF9LSUQsTy5kZWZhdWx0X0lzRW5jcnlwdGVkPW51bGw9PT0ocT1PLnNpbmYpfHx2b2lkIDA9PT1xfHxudWxsPT09KGI9cS5zY2hpKXx8dm9pZCAwPT09Yj92b2lkIDA6Yi50ZW5jLmRlZmF1bHRfSXNFbmNyeXB0ZWQsTy5kZWZhdWx0X0lWX3NpemU9bnVsbD09PShUPU8uc2luZil8fHZvaWQgMD09PVR8fG51bGw9PT0oaj1ULnNjaGkpfHx2b2lkIDA9PT1qP3ZvaWQgMDpqLnRlbmMuZGVmYXVsdF9JVl9zaXplLEguYXVkaW9TZW5jPXQubWRpYS5taW5mLnN0Ymwuc2VuYyYmdC5tZGlhLm1pbmYuc3RibC5zZW5jLnNhbXBsZXMsSC51c2VFTUU9QS51c2VFTUUsSC5raWRWYWx1ZT1BLmtpZFZhbHVlLEguZW5jYT1PfWlmKEkmJihJLmlzVmlkZW9FbmNyeXB0aW9uPSEhZyYmZy5pc1ZpZGVvRW5jcnlwdGlvbiksZyYmKGcuaXNBdWRpb0VuY3J5cHRpb249ISFJJiZJLmlzQXVkaW9FbmNyeXB0aW9uKSxudWxsIT1nJiZnLmVuY3Z8fG51bGwhPUkmJkkuZW5jYSl7dmFyIFosUCxXPW51bGw9PWd8fG51bGw9PT0oWj1nLmVuY3YpfHx2b2lkIDA9PT1aP3ZvaWQgMDpaLmRlZmF1bHRfS0lELFY9bnVsbD09SXx8bnVsbD09PShQPUkuZW5jYSl8fHZvaWQgMD09PVA/dm9pZCAwOlAuZGVmYXVsdF9LSUQsWD1XfHxWPyhXfHxWKS5qb2luKCIiKTpudWxsO2cmJihnLmtpZD1YKSxJJiYoSS5raWQ9WCl9cmV0dXJuIGcmJihnLmZsYWdzPTM4NDEpLEkmJihJLmZsYWdzPTE3OTMpLHt2aWRlb1RyYWNrOmcsYXVkaW9UcmFjazpJfX19fSx7a2V5OiJldmFsdWF0ZURlZmF1bHREdXJhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFE9bnVsbD09Z3x8bnVsbD09PShCPWcuc2FtcGxlcyl8fHZvaWQgMD09PUI/dm9pZCAwOkIubGVuZ3RoO3JldHVybiBRPzEwMjQqUS9nLnRpbWVzY2FsZSpBLnRpbWVzY2FsZS9JOjEwMjR9fSx7a2V5OiJtb29mVG9TYW1wbGVzIix2YWx1ZTpmdW5jdGlvbihnLEksQil7dmFyIFE9e307cmV0dXJuIGcubWZoZCYmKEkmJihJLnNlcXVlbmNlTnVtYmVyPWcubWZoZC5zZXF1ZW5jZU51bWJlciksQiYmKEIuc2VxdWVuY2VOdW1iZXI9Zy5tZmhkLnNlcXVlbmNlTnVtYmVyKSksZy50cmFmLmZvckVhY2goKGZ1bmN0aW9uKGcpe3ZhciBFPWcudGZoZCxDPWcudGZkdCx0PWcudHJ1bjtpZihFJiZ0KXtDJiYoSSYmSS5pZD09PUUudHJhY2tJZCYmKEkuYmFzZU1lZGlhRGVjb2RlVGltZT1DLmJhc2VNZWRpYURlY29kZVRpbWUpLEImJkIuaWQ9PT1FLnRyYWNrSWQmJihCLmJhc2VNZWRpYURlY29kZVRpbWU9Qy5iYXNlTWVkaWFEZWNvZGVUaW1lKSk7dmFyIGk9RS5kZWZhdWx0U2FtcGxlU2l6ZXx8MCxlPUUuZGVmYXVsdFNhbXBsZUR1cmF0aW9ufHxBLmV2YWx1YXRlRGVmYXVsdER1cmF0aW9uKEksQix0LnNhbXBsZXMubGVuZ3RofHx0LnNhbXBsZUNvdW50KSxvPXQuZGF0YU9mZnNldHx8MCxyPTAsbj0tMTtpZighdC5zYW1wbGVzLmxlbmd0aCYmdC5zYW1wbGVDb3VudCl7UVtFLnRyYWNrSWRdPVtdO2Zvcih2YXIgYT0wO2E8dC5zYW1wbGVDb3VudDthKyspUVtFLnRyYWNrSWRdLnB1c2goe29mZnNldDpvLGR0czpyLGR1cmF0aW9uOmUsc2l6ZTppfSkscis9ZSxvKz1pfWVsc2UgUVtFLnRyYWNrSWRdPXQuc2FtcGxlcy5tYXAoKGZ1bmN0aW9uKEEsZyl7cmV0dXJuKEE9e29mZnNldDpvLGR0czpyLHB0czpyKyhBLmN0c3x8MCksZHVyYXRpb246QS5kdXJhdGlvbnx8ZSxzaXplOkEuc2l6ZXx8aSxnb3BJZDpuLGtleWZyYW1lOjA9PT1nfHxudWxsIT09QS5mbGFncyYmdm9pZCAwIT09QS5mbGFncyYmKDY1NTM2JkEuZmxhZ3MpPj4+MCE9NjU1MzZ9KS5rZXlmcmFtZSYmKG4rKyxBLmdvcElkPW4pLHIrPUEuZHVyYXRpb24sbys9QS5zaXplLEF9KSl9fSkpLFF9fSx7a2V5OiJtb292VG9TYW1wbGVzIix2YWx1ZTpmdW5jdGlvbihBKXt2YXIgZz1BLnRyYWs7aWYoZyYmZy5sZW5ndGgpe3ZhciBJPWcuZmluZCgoZnVuY3Rpb24oQSl7dmFyIGcsSTtyZXR1cm4idmlkZSI9PT0obnVsbD09PShnPUEubWRpYSl8fHZvaWQgMD09PWd8fG51bGw9PT0oST1nLmhkbHIpfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLmhhbmRsZXJUeXBlKX0pKSxCPWcuZmluZCgoZnVuY3Rpb24oQSl7dmFyIGcsSTtyZXR1cm4ic291biI9PT0obnVsbD09PShnPUEubWRpYSl8fHZvaWQgMD09PWd8fG51bGw9PT0oST1nLmhkbHIpfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLmhhbmRsZXJUeXBlKX0pKTtpZihJfHxCKXt2YXIgUSxFO2lmKEkpe3ZhciBDLHQsaT1udWxsPT09KEM9SS5tZGlhKXx8dm9pZCAwPT09Q3x8bnVsbD09PSh0PUMubWluZil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuc3RibDtpZighaSlyZXR1cm47dmFyIGU9aS5zdHRzLG89aS5zdHNjLHI9aS5zdHN6LG49aS5zdGNvLGE9aS5zdHNzLHM9aS5jdHRzO2lmKCEoZSYmbyYmciYmbiYmYSkpcmV0dXJuO1E9V2goZSxvLHIsbixzLGEpfWlmKEIpe3ZhciBjLGgsZix1PW51bGw9PT0oYz1CLm1kaWEpfHx2b2lkIDA9PT1jfHxudWxsPT09KGg9Yy5taW5mKXx8dm9pZCAwPT09aD92b2lkIDA6aC5zdGJsO2lmKCF1KXJldHVybjt2YXIgeT1udWxsPT09KGY9Qi5tZGlhLm1kaGQpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLnRpbWVzY2FsZSxEPXUuc3R0cyxsPXUuc3RzYyx3PXUuc3RzeixkPXUuc3RjbztpZighKHkmJkQmJmwmJncmJmQpKXJldHVybjtFPVdoKEQsbCx3LGQpfXJldHVybnt2aWRlb1NhbXBsZXM6USxhdWRpb1NhbXBsZXM6RX19fX19XSksQX0oKTtmdW5jdGlvbiBXaChBLGcsSSxCLFEsRSl7dmFyIEMsdCxpLGU9W10sbz1udWxsPT1RP3ZvaWQgMDpRLmVudHJpZXMscj1nLmVudHJpZXMsbj1CLmVudHJpZXMsYT1JLmVudHJ5U2l6ZXMscz1udWxsPT1FP3ZvaWQgMDpFLmVudHJpZXM7cyYmKEM9e30scy5mb3JFYWNoKChmdW5jdGlvbihBKXtDW0EtMV09ITB9KSkpLG8mJih0PVtdLG8uZm9yRWFjaCgoZnVuY3Rpb24oQSl7Zm9yKHZhciBnPUEuY291bnQsST1BLm9mZnNldCxCPTA7QjxnO0IrKyl0LnB1c2goSSl9KSkpO3ZhciBjPS0xLGg9MCxmPTAsdT0wLHk9MCxEPTAsbD1yWzBdLnNhbXBsZXNQZXJDaHVuayx3PXJbMV0/clsxXS5maXJzdENodW5rLTE6MS8wO3JldHVybiBBLmVudHJpZXMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Zm9yKHZhciBnPUEuY291bnQsQj1BLmRlbHRhLFE9MDtRPGc7USsrKWk9e2R0czpoLGR1cmF0aW9uOkIsc2l6ZTphW2ZdfHxJLnNhbXBsZVNpemUsb2Zmc2V0Om5bdV0rRCxpbmRleDpmfSxzJiYoaS5rZXlmcmFtZT1DW2ZdLGkua2V5ZnJhbWUmJmMrKyxpLmdvcElkPWMpLHQmJmY8dC5sZW5ndGgmJihpLnB0cz1pLmR0cyt0W2ZdKSxlLnB1c2goaSksaCs9QiwrK2Y8bD9EKz1pLnNpemU6KHUrKyxEPTAsdT49dyYmKHkrKyx3PXJbeSsxXT9yW3krMV0uZmlyc3RDaHVuay0xOjEvMCksbCs9clt5XS5zYW1wbGVzUGVyQ2h1bmspfSkpLGV9ZnVuY3Rpb24gVmgoQSxnKXtyZXR1cm4gQS5kYXRhUmVmZXJlbmNlSW5kZXg9bWgoZyw2KSxBLndpZHRoPW1oKGcsMjQpLEEuaGVpZ2h0PW1oKGcsMjYpLEEuaG9yaXpyZXNvbHV0aW9uPXhoKGcsMjgpLEEudmVydHJlc29sdXRpb249eGgoZywzMiksQS5mcmFtZUNvdW50PW1oKGcsNDApLEEuZGVwdGg9bWgoZyw3NCksNzh9ZnVuY3Rpb24gWGgoQSxnKXtyZXR1cm4gQS5kYXRhUmVmZXJlbmNlSW5kZXg9bWgoZyw2KSxBLmNoYW5uZWxDb3VudD1taChnLDE2KSxBLnNhbXBsZVNpemU9bWgoZywxOCksQS5zYW1wbGVSYXRlPXhoKGcsMjQpLzY1NTM2LDI4fWZ1bmN0aW9uIHpoKEEsZyxJKXtpZihBKXtpZihBLnNpemUhPT1BLmRhdGEubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiYm94ICIuY29uY2F0KEEudHlwZSwiIHNpemUgIT09IGRhdGEubGVuZ3RoIikpO3ZhciBCPXtzdGFydDpBLnN0YXJ0LHNpemU6QS5zaXplLGhlYWRlclNpemU6QS5oZWFkZXJTaXplLHR5cGU6QS50eXBlfTtyZXR1cm4gZyYmKEIudmVyc2lvbj1BLmRhdGFbQS5oZWFkZXJTaXplXSxCLmZsYWdzPWZ1bmN0aW9uKEEpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybihBW2ddPDwxNikrKEFbZysxXTw8OCkrKEFbZysyXXx8MCl9KEEuZGF0YSxBLmhlYWRlclNpemUrMSksQi5oZWFkZXJTaXplKz00KSxJKEIsQS5kYXRhLnN1YmFycmF5KEIuaGVhZGVyU2l6ZSksQi5zdGFydCtCLmhlYWRlclNpemUpLEJ9fXZhciBfaD1mdW5jdGlvbigpe2Zvcih2YXIgQT1bXSxnPWFyZ3VtZW50cy5sZW5ndGgsST1uZXcgQXJyYXkoZyksQj0wO0I8ZztCKyspSVtCXT1hcmd1bWVudHNbQl07cmV0dXJuIEkuZm9yRWFjaCgoZnVuY3Rpb24oZyl7QS5wdXNoKGZ1bmN0aW9uKEEsZyxJKXtmb3IodmFyIEI9U3RyaW5nKEkpLFE9Zz4+MCxFPU1hdGguY2VpbChRL0IubGVuZ3RoKSxDPVtdLHQ9U3RyaW5nKEEpO0UtLTspQy5wdXNoKEIpO3JldHVybiBDLmpvaW4oIiIpLnN1YnN0cmluZygwLFEtdC5sZW5ndGgpK3R9KE51bWJlcihnKS50b1N0cmluZygxNiksMiwwKSl9KSksQVswXX07dmFyICRoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSgpe2VoKHRoaXMsQSksdGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMCl9cmV0dXJuIHJoKEEsW3trZXk6IndyaXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgQT10aGlzLGc9YXJndW1lbnRzLmxlbmd0aCxJPW5ldyBBcnJheShnKSxCPTA7QjxnO0IrKylJW0JdPWFyZ3VtZW50c1tCXTtJLmZvckVhY2goKGZ1bmN0aW9uKGcpe2c/QS5idWZmZXI9ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPTAsST1hcmd1bWVudHMubGVuZ3RoLEI9bmV3IEFycmF5KEk+MT9JLTE6MCksUT0xO1E8STtRKyspQltRLTFdPWFyZ3VtZW50c1tRXTtCLmZvckVhY2goKGZ1bmN0aW9uKEEpe2crPUEubGVuZ3RofSkpO3ZhciBFPW5ldyBBKGcpLEM9MDtyZXR1cm4gQi5mb3JFYWNoKChmdW5jdGlvbihBKXtFLnNldChBLEMpLEMrPUEubGVuZ3RofSkpLEV9KFVpbnQ4QXJyYXksQS5idWZmZXIsZyk6d2luZG93LmNvbnNvbGUud2FybihnKX0pKX19XSxbe2tleToid3JpdGVVaW50MTYiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBuZXcgVWludDhBcnJheShbQT4+OCYyNTUsMjU1JkFdKX19LHtrZXk6IndyaXRlVWludDMyIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW0E+PjI0LEE+PjE2JjI1NSxBPj44JjI1NSwyNTUmQV0pfX1dKSxBfSgpLEFmPU1hdGgucG93KDIsMzIpLTEsZ2Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7ZWgodGhpcyxBKX1yZXR1cm4gcmgoQSxudWxsLFt7a2V5OiJib3giLHZhbHVlOmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1hcmd1bWVudHMubGVuZ3RoLEk9bmV3IEFycmF5KGc+MT9nLTE6MCksQj0xO0I8ZztCKyspSVtCLTFdPWFyZ3VtZW50c1tCXTt2YXIgUT04KyhJPUkuZmlsdGVyKEJvb2xlYW4pKS5yZWR1Y2UoKGZ1bmN0aW9uKEEsZyl7cmV0dXJuIEErZy5ieXRlTGVuZ3RofSksMCksRT1uZXcgVWludDhBcnJheShRKTtFWzBdPVE+PjI0JjI1NSxFWzFdPVE+PjE2JjI1NSxFWzJdPVE+PjgmMjU1LEVbM109MjU1JlEsRS5zZXQoQSw0KTt2YXIgQz04O3JldHVybiBJLmZvckVhY2goKGZ1bmN0aW9uKEEpe0Uuc2V0KEEsQyksQys9QS5ieXRlTGVuZ3RofSkpLEV9fSx7a2V5OiJmdHlwIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gZy5maW5kKChmdW5jdGlvbihBKXtyZXR1cm4gQS50eXBlPT09dWgmJkEuY29kZWNUeXBlPT09d2h9KSk/QS5GVFlQSEVWMTpBLkZUWVBBVkMxfX0se2tleToiaW5pdFNlZ21lbnQiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBKaChBLmZ0eXAoZyksQS5tb292KGcpKX19LHtrZXk6InBzc2giLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPW5ldyBVaW50OEFycmF5KFsxLDAsMCwwXS5jb25jYXQoWzE2LDExOSwyMzksMjM2LDE5MiwxNzgsNzcsMiwxNzIsMjI3LDYwLDMwLDgyLDIyNiwyNTEsNzVdLFswLDAsMCwxXSxUaChnLmtpZCksWzAsMCwwLDBdKSk7cmV0dXJuIEEuYm94KEEudHlwZXMucHNzaCxJKX19LHtrZXk6Im1vb3YiLHZhbHVlOmZ1bmN0aW9uKGcpe2lmKGdbMF0udXNlRU1FJiYoZ1swXS5lbmN2fHxnWzBdLmVuY2EpKXtnWzBdLnBzc2h8fChnWzBdLnBzc2g9e2tpZDpnWzBdLmtpZH0pO3ZhciBJPXRoaXMucHNzaChnWzBdLnBzc2gpO3JldHVybiBBLmJveC5hcHBseShBLFtBLnR5cGVzLm1vb3YsQS5tdmhkKGdbMF0ubXZoZER1cnRpb258fGdbMF0uZHVyYXRpb24sZ1swXS5tdmhkVGltZWNhbGV8fGdbMF0udGltZXNjYWxlKSxBLm12ZXgoZyldLmNvbmNhdChzaChnLm1hcCgoZnVuY3Rpb24oZyl7cmV0dXJuIEEudHJhayhnKX0pKSksW0ldKSl9cmV0dXJuIEEuYm94LmFwcGx5KEEsW0EudHlwZXMubW9vdixBLm12aGQoZ1swXS5tdmhkRHVydGlvbnx8Z1swXS5kdXJhdGlvbixnWzBdLm12aGRUaW1lY2FsZXx8Z1swXS50aW1lc2NhbGUpXS5jb25jYXQoc2goZy5tYXAoKGZ1bmN0aW9uKGcpe3JldHVybiBBLnRyYWsoZyl9KSkpLFtBLm12ZXgoZyldKSl9fSx7a2V5OiJtdmhkIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06OWU0O3JldHVybiBBLmJveChBLnR5cGVzLm12aGQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLEk+PjI0JjI1NSxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkksZz4+MjQmMjU1LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZywwLDEsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2NCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyNTUsMjU1LDI1NSwyNTVdKSl9fSx7a2V5OiJ0cmFrIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy50cmFrLEEudGtoZChnLmlkLGcudGtoZER1cmF0aW9ufHwwLGcud2lkdGgsZy5oZWlnaHQpLEEubWRpYShnKSl9fSx7a2V5OiJ0a2hkIix2YWx1ZTpmdW5jdGlvbihnLEkpe3ZhciBCPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLFE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjA7cmV0dXJuIEEuYm94KEEudHlwZXMudGtoZCxuZXcgVWludDhBcnJheShbMCwwLDAsNywwLDAsMCwwLDAsMCwwLDAsZz4+MjQmMjU1LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZywwLDAsMCwwLEk+PjI0JjI1NSxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjQsMCwwLDAsQj4+OCYyNTUsMjU1JkIsMCwwLFE+PjgmMjU1LDI1NSZRLDAsMF0pKX19LHtrZXk6Im1kaWEiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveChBLnR5cGVzLm1kaWEsQS5tZGhkKGcuZHVyYXRpb24sZy50aW1lc2NhbGUpLEEuaGRscihnLnR5cGUpLEEubWluZihnKSl9fSx7a2V5OiJtZGhkIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06OWU0O3JldHVybiBBLmJveChBLnR5cGVzLm1kaGQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLEk+PjI0JjI1NSxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkksZz4+MjQmMjU1LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyw4NSwxOTYsMCwwXSkpfX0se2tleToiaGRsciIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMuaGRscixBLkhETFJfVFlQRVNbZ10pfX0se2tleToibWluZiIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMubWluZixnLnR5cGU9PT11aD9BLlZNSEQ6QS5TTUhELEEuRElORixBLnN0YmwoZykpfX0se2tleToic3RibCIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9W107cmV0dXJuIGcmJmcuZXh0JiZnLmV4dC5zdHNzJiZJLnB1c2goQS5zdHNzKGcuZXh0LnN0c3MuZW50cmllcykpLEEuYm94KEEudHlwZXMuc3RibCxBLnN0c2QoZyksQS5TVFRTLElbMF0sQS5TVFNDLEEuU1RTWixBLlNUQ08pfX0se2tleToic3RzZCIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk7cmV0dXJuIEk9ImF1ZGlvIj09PWcudHlwZT9nLnVzZUVNRSYmZy5lbmNhP0EuZW5jYShnKTpBLm1wNGEoZyk6Zy51c2VFTUUmJmcuZW5jdj9BLmVuY3YoZyk6QS5hdmMxaGV2MXZ2YzEoZyksQS5ib3goQS50eXBlcy5zdHNkLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDFdKSxJKX19LHtrZXk6ImVuY2EiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcuZW5jYS5jaGFubmVsQ291bnQsQj1nLmVuY2Euc2FtcGxlUmF0ZSxRPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsSSwwLDE2LDAsMCwwLDAsQj4+OCYyNTUsMjU1JkIsMCwwXSksRT1BLmVzZHMoZy5jb25maWcpLEM9QS5zaW5mKGcuZW5jYSk7cmV0dXJuIEEuYm94KEEudHlwZXMuZW5jYSxRLEUsQyl9fSx7a2V5OiJlbmN2Iix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgSSxCLFE9Zy5zcHMubGVuZ3RoPjA/Zy5zcHNbMF06W10sRT1nLnBwcy5sZW5ndGg+MD9nLnBwc1swXTpbXSxDPWcud2lkdGgsdD1nLmhlaWdodCxpPWcuc2FyUmF0aW9bMF0sZT1nLnNhclJhdGlvWzFdLG89bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLEM+PjgmMjU1LDI1NSZDLHQ+PjgmMjU1LDI1NSZ0LDAsNzIsMCwwLDAsNzIsMCwwLDAsMCwwLDAsMCwxLDE4LDEwMCw5NywxMDUsMTA4LDEyMSwxMDksMTExLDExNiwxMDUsMTExLDExMCw0NywxMDQsMTA4LDExNSw0NiwxMDYsMTE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyNCwxNywxN10pLHI9bmV3IFVpbnQ4QXJyYXkoKEk9KEI9WzEsUVsxXSxRWzJdLFFbM10sMjU1LDIyNSxRLmxlbmd0aD4+PjgmMjU1LDI1NSZRLmxlbmd0aF0pLmNvbmNhdC5hcHBseShCLHNoKFEpKS5jb25jYXQoWzEsRS5sZW5ndGg+Pj44JjI1NSwyNTUmRS5sZW5ndGhdKSkuY29uY2F0LmFwcGx5KEksc2goRSkpKSxuPW5ldyBVaW50OEFycmF5KFswLDAsODgsNTcsMCwxNSwyMDAsMTkyLDAsNCw4Niw3Ml0pLGE9QS5zaW5mKGcuZW5jdikscz1uZXcgVWludDhBcnJheShbaT4+MjQsaT4+MTYmMjU1LGk+PjgmMjU1LDI1NSZpLGU+PjI0LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV0pO3JldHVybiBBLmJveChBLnR5cGVzLmVuY3YsbyxBLmJveChBLnR5cGVzLmF2Y0MsciksQS5ib3goQS50eXBlcy5idHJ0LG4pLGEsQS5ib3goQS50eXBlcy5wYXNwLHMpKX19LHtrZXk6InNjaGkiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPW5ldyBVaW50OEFycmF5KFtdKSxCPUEudGVuYyhnKTtyZXR1cm4gQS5ib3goQS50eXBlcy5zY2hpLEksQil9fSx7a2V5OiJ0ZW5jIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMjU1JmcuZGVmYXVsdF9Jc0VuY3J5cHRlZCwyNTUmZy5kZWZhdWx0X0lWX3NpemVdLmNvbmNhdChUaChnLmRlZmF1bHRfS0lEKSkpO3JldHVybiBBLmJveChBLnR5cGVzLnRlbmMsSSl9fSx7a2V5OiJzaW5mIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgVWludDhBcnJheShbXSksQj1uZXcgVWludDhBcnJheShbZy5kYXRhX2Zvcm1hdC5jaGFyQ29kZUF0KDApLGcuZGF0YV9mb3JtYXQuY2hhckNvZGVBdCgxKSxnLmRhdGFfZm9ybWF0LmNoYXJDb2RlQXQoMiksZy5kYXRhX2Zvcm1hdC5jaGFyQ29kZUF0KDMpXSksUT1uZXcgVWludDhBcnJheShbMCwwLDAsMCw5OSwxMDEsMTEwLDk5LDAsMSwwLDBdKSxFPUEuc2NoaShnKTtyZXR1cm4gQS5ib3goQS50eXBlcy5zaW5mLEksQS5ib3goQS50eXBlcy5mcm1hLEIpLEEuYm94KEEudHlwZXMuc2NobSxRKSxFKX19LHtrZXk6ImF2YzFoZXYxdnZjMSIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEksQjtnLmNvZGVjVHlwZT09PXdoPyhJPUEuaHZjQyhnKSxCPUEudHlwZXMuaHZjMSk6Zy5jb2RlY1R5cGU9PT1kaD8oST1BLnZ2Y0MoZyksQj1BLnR5cGVzLmJ2YzIpOihJPUEuYXZjQyhnKSxCPUEudHlwZXMuYXZjMSk7dmFyIFE9W25ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCxnLndpZHRoPj44JjI1NSwyNTUmZy53aWR0aCxnLmhlaWdodD4+OCYyNTUsMjU1JmcuaGVpZ2h0LDAsNzIsMCwwLDAsNzIsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI0LDE3LDE3XSksSV07cmV0dXJuIGcuY29kZWNUeXBlPT09d2g/US5wdXNoKEEuYm94KEEudHlwZXMuZmllbCxuZXcgVWludDhBcnJheShbMSwwXSkpKTpnLnNhclJhdGlvJiZnLnNhclJhdGlvLmxlbmd0aD4xJiZRLnB1c2goQS5wYXNwKGcuc2FyUmF0aW8pKSxBLmJveC5hcHBseShBLFtCXS5jb25jYXQoUSkpfX0se2tleToiYXZjQyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEksQixRLEU9W10sQz1bXTtyZXR1cm4gZy5zcHMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7UT1BLmJ5dGVMZW5ndGgsRS5wdXNoKFE+Pj44JjI1NSksRS5wdXNoKDI1NSZRKSxFLnB1c2guYXBwbHkoRSxzaChBKSl9KSksZy5wcHMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7UT1BLmJ5dGVMZW5ndGgsQy5wdXNoKFE+Pj44JjI1NSksQy5wdXNoKDI1NSZRKSxDLnB1c2guYXBwbHkoQyxzaChBKSl9KSksQS5ib3goQS50eXBlcy5hdmNDLG5ldyBVaW50OEFycmF5KChJPShCPVsxLEVbM10sRVs0XSxFWzVdLDI1NSwyMjR8Zy5zcHMubGVuZ3RoXSkuY29uY2F0LmFwcGx5KEIsRSkuY29uY2F0KFtnLnBwcy5sZW5ndGhdKSkuY29uY2F0LmFwcGx5KEksQykpKX19LHtrZXk6InZ2Y0MiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcudnZjQztyZXR1cm4gQS5ib3goQS50eXBlcy5idjJDLG5ldyBVaW50OEFycmF5KEkpKX19LHtrZXk6Imh2Y0MiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcuaHZjQztpZihJIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fEkgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiBJO3ZhciBCLFE9Zy52cHMsRT1nLnNwcyxDPWcucHBzO2lmKEkpe3ZhciB0PUkuZ2VuZXJhbFByb2ZpbGVDb21wYXRpYmlsaXR5RmxhZ3MsaT1JLmdlbmVyYWxDb25zdHJhaW50SW5kaWNhdG9yRmxhZ3MsZT0oUS5sZW5ndGgmJjEpKyhFLmxlbmd0aCYmMSkrKEMubGVuZ3RoJiYxKTtCPVsxLEkuZ2VuZXJhbFByb2ZpbGVTcGFjZTw8NnxJLmdlbmVyYWxUaWVyRmxhZzw8NXxJLmdlbmVyYWxQcm9maWxlSWRjLHQ+Pj4yNCx0Pj4+MTYsdD4+PjgsdCxpWzBdLGlbMV0saVsyXSxpWzNdLGlbNF0saVs1XSxJLmdlbmVyYWxMZXZlbElkYywyNDAsMCwyNTIsMjUyfEkuY2hyb21hRm9ybWF0SWRjLDI0OHxJLmJpdERlcHRoTHVtYU1pbnVzOCwyNDh8SS5iaXREZXB0aENocm9tYU1pbnVzOCwwLDAsSS5udW1UZW1wb3JhbExheWVyczw8M3xJLnRlbXBvcmFsSWROZXN0ZWQ8PDJ8MyxlXTt2YXIgbz1mdW5jdGlvbihBKXt2YXIgZztCLnB1c2goQS5sZW5ndGg+PjgsQS5sZW5ndGgpLChnPUIpLnB1c2guYXBwbHkoZyxzaChBKSl9O1EubGVuZ3RoJiYoQi5wdXNoKDE2MCwwLFEubGVuZ3RoKSxRLmZvckVhY2gobykpLEUubGVuZ3RoJiYoQi5wdXNoKDE2MSwwLEUubGVuZ3RoKSxFLmZvckVhY2gobykpLEMubGVuZ3RoJiYoQi5wdXNoKDE2MiwwLEMubGVuZ3RoKSxDLmZvckVhY2gobykpfWVsc2UgQj1bMSwxLDk2LDAsMCwwLDE0NCwwLDAsMCwwLDAsOTMsMjQwLDAsMjUyLDI1MywyNDgsMjQ4LDAsMCwxNSwzLDE2MCwwLDEsMCwyNCw2NCwxLDEyLDEsMjU1LDI1NSwxLDk2LDAsMCwzLDAsMTQ0LDAsMCwzLDAsMCwzLDAsOTMsMTUzLDE1Miw5LDE2MSwwLDEsMCw0NSw2NiwxLDEsMSw5NiwwLDAsMywwLDE0NCwwLDAsMywwLDAsMywwLDkzLDE2MCwyLDEyOCwxMjgsNDUsMjIsODksMTUzLDE2NCwxNDcsNDMsMTU0LDEyOCwxMjgsMTI4LDEzMCwwLDAsMywwLDIsMCwwLDMsMCw1MCwxNiwxNjIsMCwxLDAsNyw2OCwxLDE5MywxMTQsMTgwLDk4LDY0XTtyZXR1cm4gQS5ib3goQS50eXBlcy5odmNDLG5ldyBVaW50OEFycmF5KEIpKX19LHtrZXk6InBhc3AiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWFoKGcsMiksQj1JWzBdLFE9SVsxXTtyZXR1cm4gQS5ib3goQS50eXBlcy5wYXNwLG5ldyBVaW50OEFycmF5KFtCPj4yNCxCPj4xNiYyNTUsQj4+OCYyNTUsMjU1JkIsUT4+MjQsUT4+MTYmMjU1LFE+PjgmMjU1LDI1NSZRXSkpfX0se2tleToibXA0YSIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMubXA0YSxuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLGcuY2hhbm5lbENvdW50LDAsMTYsMCwwLDAsMCxnLnNhbXBsZVJhdGU+PjgmMjU1LDI1NSZnLnNhbXBsZVJhdGUsMCwwXSksZy5jb25maWcubGVuZ3RoP0EuZXNkcyhnLmNvbmZpZyk6dm9pZCAwKX19LHtrZXk6ImVzZHMiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcubGVuZ3RoO3JldHVybiBBLmJveChBLnR5cGVzLmVzZHMsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMywyMytJLDAsMCwwLDQsMTUrSSw2NCwyMSwwLDYsMCwwLDAsMjE4LDE5MiwwLDAsMjE4LDE5Miw1XS5jb25jYXQoW0ldKS5jb25jYXQoZykuY29uY2F0KFs2LDEsMl0pKSl9fSx7a2V5OiJtdmV4Iix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3guYXBwbHkoQSxbQS50eXBlcy5tdmV4XS5jb25jYXQoc2goZy5tYXAoKGZ1bmN0aW9uKGcpe3JldHVybiBBLnRyZXgoZy5pZCl9KSkpKSl9fSx7a2V5OiJ0cmV4Iix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy50cmV4LG5ldyBVaW50OEFycmF5KFswLDAsMCwwLGc+PjI0LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZywwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwxXSkpfX0se2tleToidHJleDEiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveChBLnR5cGVzLnRyZXgsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsZz4+MjQsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnLDAsMCwwLDEsMCwwLDIsMCwwLDAsMCwwLDAsMSwwLDBdKSl9fSx7a2V5OiJ0cmV4MiIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMudHJleCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxnPj4yNCxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmcsMCwwLDAsMSwwLDAsNCwwLDAsMCwwLDAsMiwwLDAsMF0pKX19LHtrZXk6Im1vb2YiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveC5hcHBseShBLFtBLnR5cGVzLm1vb2YsQS5tZmhkKGdbMF0uc2FtcGxlcz9nWzBdLnNhbXBsZXNbMF0uZ29wSWQ6MCldLmNvbmNhdChzaChnLm1hcCgoZnVuY3Rpb24oZyl7cmV0dXJuIEEudHJhZihnKX0pKSkpKX19LHtrZXk6Im1maGQiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveChBLnR5cGVzLm1maGQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsZz4+MjQsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnXSkpfX0se2tleToidHJhZiIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9QS50ZmhkKGcuaWQpLEI9QS50ZmR0KGcsZy5iYXNlTWVkaWFEZWNvZGVUaW1lKSxRPTA7aWYoZy5pc1ZpZGVvJiZnLnZpZGVvU2VuYyYmZy52aWRlb1NlbmMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7USs9OCxBLnN1YnNhbXBsZXMmJkEuc3Vic2FtcGxlcy5sZW5ndGgmJihRKz0yLFErPTYqQS5zdWJzYW1wbGVzLmxlbmd0aCl9KSksZy52aWRlb1NlbmNMZW5ndGg9USxnLnVzZUVNRSYmKGcuaXNWaWRlb0VuY3J5cHRpb258fGcuaXNBdWRpb0VuY3J5cHRpb24pKXtpZihnLmlzVmlkZW9FbmNyeXB0aW9uKXtpZihnLmlzVmlkZW8pe3ZhciBFPUEuc2FpeihnKSxDPUEuc2FpbyhnKSx0PUEudHJ1bjEoZyksaT1BLnNlbmMoZyk7cmV0dXJuIEEuYm94KEEudHlwZXMudHJhZixJLEIsRSxDLHQsaSl9aWYoZy5pc0F1ZGlvRW5jcnlwdGlvbil7dmFyIGU9QS5zYmdwKCksbz1BLnNhaXooZykscj1BLnNhaW8oZyksbj1BLnNlbmMoZyksYT1BLnRydW4xKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnRyYWYsSSxCLGUsbyxyLG4sYSl9dmFyIHM9QS5zYmdwKCksYz1BLnRydW4xKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnRyYWYsSSxCLHMsYyl9aWYoZy5pc1ZpZGVvKXt2YXIgaD1BLnRydW4xKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnRyYWYsSSxCLGgpfXZhciBmPUEuc2JncCgpLHU9QS5zYWl6KGcpLHk9QS5zYWlvKGcpLEQ9QS5zZW5jKGcpLGw9QS50cnVuMShnKTtyZXR1cm4gQS5ib3goQS50eXBlcy50cmFmLEksQixmLHUseSxELGwpfXZhciB3PUEuc2R0cChnKTtyZXR1cm4gQS5ib3goQS50eXBlcy50cmFmLEksQix3LEEudHJ1bihnLnNhbXBsZXMsdy5ieXRlTGVuZ3RoKzc2KSl9fSx7a2V5OiJzZHRwIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgJGg7cmV0dXJuIGcuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbihBKXtJLndyaXRlKG5ldyBVaW50OEFycmF5KGcuaXNWaWRlbz9bQS5rZXlmcmFtZT8zMjoxNl06WzE2XSkpfSkpLEEuYm94KEEudHlwZXMuc2R0cCx0aGlzLmV4dGVuc2lvbigwLDApLEkuYnVmZmVyKX19LHtrZXk6InRydW4xIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgJGgsQj0kaC53cml0ZVVpbnQzMihnLnNhbXBsZXMubGVuZ3RoKSxRPW51bGw7aWYoZy5pc1ZpZGVvKXt2YXIgRT1nLnZpZGVvU2VuY0xlbmd0aDtRPSRoLndyaXRlVWludDMyKDE2Kmcuc2FtcGxlcy5sZW5ndGgrRSsxNDkpLCFnLmlzVmlkZW9FbmNyeXB0aW9uJiZnLmlzQXVkaW9FbmNyeXB0aW9uJiYoUT0kaC53cml0ZVVpbnQzMigxNipnLnNhbXBsZXMubGVuZ3RoKzkyKSl9ZWxzZXt2YXIgQz0xMipnLnNhbXBsZXMubGVuZ3RoKzEyNDtnLmlzQXVkaW9FbmNyeXB0aW9uJiYoQz0xMipnLnNhbXBsZXMubGVuZ3RoKzgqZy5hdWRpb1NlbmMubGVuZ3RoKzE3NyksUT0kaC53cml0ZVVpbnQzMihDKX1yZXR1cm4gZy5zYW1wbGVzLmZvckVhY2goKGZ1bmN0aW9uKEEpe0kud3JpdGUoJGgud3JpdGVVaW50MzIoQS5kdXJhdGlvbikpLEkud3JpdGUoJGgud3JpdGVVaW50MzIoQS5zaXplKSksSS53cml0ZSgkaC53cml0ZVVpbnQzMihBLmtleWZyYW1lPzMzNTU0NDMyOjY1NTM2KSksZy5pc1ZpZGVvJiZJLndyaXRlKCRoLndyaXRlVWludDMyKEEuY3RzP0EuY3RzOjApKX0pKSxBLmJveChBLnR5cGVzLnRydW4sdGhpcy5leHRlbnNpb24oMCxnLmZsYWdzKSxCLFEsSS5idWZmZXIpfX0se2tleToic2VuYyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9bmV3ICRoLEI9Zy5zYW1wbGVzLmxlbmd0aCxRPWcuaXNWaWRlbz8xNjo4LEU9Zy5pc1ZpZGVvPzI6MCxDPVtdLHQ9MDtyZXR1cm4gZy5pc1ZpZGVvPyhDPWcudmlkZW9TZW5jLHQ9Zy52aWRlb1NlbmNMZW5ndGgpOkM9Zy5hdWRpb1NlbmMsdD10fHxRKkIsSS53cml0ZSgkaC53cml0ZVVpbnQzMigxNit0KSxBLnR5cGVzLnNlbmMsdGhpcy5leHRlbnNpb24oMCxFKSksSS53cml0ZSgkaC53cml0ZVVpbnQzMihCKSksQy5mb3JFYWNoKChmdW5jdGlvbihBKXtmb3IodmFyIGc9MDtnPEEuSW5pdGlhbGl6YXRpb25WZWN0b3IubGVuZ3RoO2crKylJLndyaXRlKG5ldyBVaW50OEFycmF5KFtBLkluaXRpYWxpemF0aW9uVmVjdG9yW2ddXSkpO0Euc3Vic2FtcGxlcyYmQS5zdWJzYW1wbGVzLmxlbmd0aCYmKEkud3JpdGUoJGgud3JpdGVVaW50MTYoQS5zdWJzYW1wbGVzLmxlbmd0aCkpLEEuc3Vic2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbihBKXtJLndyaXRlKCRoLndyaXRlVWludDE2KEEuQnl0ZXNPZkNsZWFyRGF0YSkpLEkud3JpdGUoJGgud3JpdGVVaW50MzIoQS5CeXRlc09mUHJvdGVjdGVkRGF0YSkpfSkpKX0pKSxJLmJ1ZmZlcn19LHtrZXk6InNhaW8iLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPTEyKmcuc2FtcGxlcy5sZW5ndGgrMTQxOyFnLmlzVmlkZW8mJmcuaXNBdWRpb0VuY3J5cHRpb24mJihJPTE0OSk7dmFyIEI9bmV3IFVpbnQ4QXJyYXkoWzEsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLEk+PjI0JjI1NSxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkldKTtyZXR1cm4gQS5ib3goQS50eXBlcy5zYWlvLEIpfX0se2tleToic2FpeiIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5zYW1wbGVzLmxlbmd0aCxCPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDE2LEk+PjI0JjI1NSxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkldKTtyZXR1cm4gQS5ib3goQS50eXBlcy5zYWl6LEIpfX0se2tleToic2JncCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZz1uZXcgVWludDhBcnJheShbMTE0LDExMSwxMDgsMTA4LDAsMCwwLDEsMCwwLDEsMjUsMCwwLDAsMV0pO3JldHVybiBBLmJveChBLnR5cGVzLnNiZ3AsdGhpcy5leHRlbnNpb24oMCwwKSxnKX19LHtrZXk6ImV4dGVuc2lvbiIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW0EsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnXSl9fSx7a2V5OiJ0ZmhkIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy50ZmhkLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLGc+PjI0LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZ10pKX19LHtrZXk6InRmZHQiLHZhbHVlOmZ1bmN0aW9uKGcsSSl7dmFyIEI9TWF0aC5mbG9vcihJLyhBZisxKSksUT1NYXRoLmZsb29yKEklKEFmKzEpKTtyZXR1cm4gZy51c2VFTUUmJihnLmlzVmlkZW9FbmNyeXB0aW9ufHxnLmlzQXVkaW9FbmNyeXB0aW9uKT9BLmJveChBLnR5cGVzLnRmZHQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsUT4+MjQsUT4+MTYmMjU1LFE+PjgmMjU1LDI1NSZRXSkpOkEuYm94KEEudHlwZXMudGZkdCxuZXcgVWludDhBcnJheShbMSwwLDAsMCxCPj4yNCxCPj4xNiYyNTUsQj4+OCYyNTUsMjU1JkIsUT4+MjQsUT4+MTYmMjU1LFE+PjgmMjU1LDI1NSZRXSkpfX0se2tleToidHJ1biIsdmFsdWU6ZnVuY3Rpb24oZyxJKXt2YXIgQj1nLmxlbmd0aCxRPTEyKzE2KkI7SSs9OCtRO3ZhciBFPW5ldyBVaW50OEFycmF5KFEpO0Uuc2V0KFswLDAsMTUsMSxCPj4+MjQmMjU1LEI+Pj4xNiYyNTUsQj4+PjgmMjU1LDI1NSZCLEk+Pj4yNCYyNTUsST4+PjE2JjI1NSxJPj4+OCYyNTUsMjU1JkldLDApO2Zvcih2YXIgQz0wO0M8QjtDKyspe3ZhciB0PWdbQ10saT10LmR1cmF0aW9uLGU9dC5zaXplLG89dC5mbGFnLHI9dm9pZCAwPT09bz97fTpvLG49dC5jdHMsYT12b2lkIDA9PT1uPzA6bjtFLnNldChbaT4+PjI0JjI1NSxpPj4+MTYmMjU1LGk+Pj44JjI1NSwyNTUmaSxlPj4+MjQmMjU1LGU+Pj4xNiYyNTUsZT4+PjgmMjU1LDI1NSZlLHIuaXNMZWFkaW5nPDwyfChudWxsPT09ci5kZXBlbmRzT258fHZvaWQgMD09PXIuZGVwZW5kc09uPzE6ci5kZXBlbmRzT24pLHIuaXNEZXBlbmRlZE9uPDw2fHIuaGFzUmVkdW5kYW5jeTw8NHxyLnBhZGRpbmdWYWx1ZTw8MXwobnVsbD09PXIuaXNOb25TeW5jU2FtcGxlfHx2b2lkIDA9PT1yLmlzTm9uU3luY1NhbXBsZT8xOnIuaXNOb25TeW5jU2FtcGxlKSw2MTQ0MCZyLmRlZ3JhZGF0aW9uUHJpb3JpdHksMTUmci5kZWdyYWRhdGlvblByaW9yaXR5LGE+Pj4yNCYyNTUsYT4+PjE2JjI1NSxhPj4+OCYyNTUsMjU1JmFdLDEyKzE2KkMpfXJldHVybiBBLmJveChBLnR5cGVzLnRydW4sRSl9fSx7a2V5OiJtb292TVA0Iix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3guYXBwbHkoQSxbQS50eXBlcy5tb292LEEubXZoZChnWzBdLmR1cmF0aW9uLGdbMF0udGltZXNjYWxlKV0uY29uY2F0KHNoKGcubWFwKChmdW5jdGlvbihnKXtyZXR1cm4gQS50cmFja01QNChnKX0pKSkpKX19LHtrZXk6InRyYWNrTVA0Iix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy50cmFrLEEudGtoZChnLmlkLGcuZHVyYXRpb24sZy53aWR0aCxnLmhlaWdodCksQS5tZGlhTVA0KGcpKX19LHtrZXk6Im1kaWFNUDQiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveChBLnR5cGVzLm1kaWEsQS5tZGhkKGcuZHVyYXRpb24sZy50aW1lc2NhbGUpLEEuaGRscihnLnR5cGUpLEEubWluZk1QNChnKSl9fSx7a2V5OiJtaW5mTVA0Iix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy5taW5mLGcudHlwZT09PXVoP0EuVk1IRDpBLlNNSEQsQS5ESU5GLEEuc3RibE1QNChnKSl9fSx7a2V5OiJzdGJsTVA0Iix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1nLmV4dCxCPVtBLnN0c2QoZyksQS5zdHRzKEkuc3R0cyksQS5zdHNjKEkuc3RzYyksQS5zdHN6KEkuc3RzeiksQS5zdGNvKEkuc3RjbyldO3JldHVybiBJLnN0c3MubGVuZ3RoJiZCLnB1c2goQS5zdHNzKEkuc3RzcykpLEkuY3R0cy5sZW5ndGgmJkIucHVzaChBLmN0dHMoSS5jdHRzKSksQS5ib3guYXBwbHkoQSxbQS50eXBlcy5zdGJsXS5jb25jYXQoQikpfX0se2tleToic3R0cyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5sZW5ndGgsQj1uZXcgVWludDhBcnJheSg4KkkpLFE9MDtyZXR1cm4gZy5mb3JFYWNoKChmdW5jdGlvbihBKXt2YXIgZz1BLnZhbHVlLEk9QS5jb3VudDtCLnNldChbST4+MjQsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJLGc+PjI0LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZ10sUSksUSs9OH0pKSxBLmJveChBLnR5cGVzLnN0dHMsSmgobmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsST4+MjQsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJXSksQikpfX0se2tleToic3RzYyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5sZW5ndGgsQj1uZXcgVWludDhBcnJheSgxMipJKSxRPTA7cmV0dXJuIGcuZm9yRWFjaCgoZnVuY3Rpb24oQSl7dmFyIGc9QS5maXJzdENodW5rLEk9QS5zYW1wbGVzUGVyQ2h1bmssRT1BLnNhbXBsZURlc2NJbmRleDtCLnNldChbZz4+MjQsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnLEk+PjI0LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSSxFPj4yNCxFPj4xNiYyNTUsRT4+OCYyNTUsMjU1JkVdLFEpLFErPTEyfSkpLEEuYm94KEEudHlwZXMuc3RzYyxKaChuZXcgVWludDhBcnJheShbMCwwLDAsMCxJPj4yNCxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkldKSxCKSl9fSx7a2V5OiJzdHN6Iix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1nLmxlbmd0aCxCPW5ldyBVaW50OEFycmF5KDQqSSksUT0wO3JldHVybiBnLmZvckVhY2goKGZ1bmN0aW9uKEEpe0Iuc2V0KFtBPj4yNCxBPj4xNiYyNTUsQT4+OCYyNTUsMjU1JkFdLFEpLFErPTR9KSksQS5ib3goQS50eXBlcy5zdHN6LEpoKG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDAsST4+MjQsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJXSksQikpfX0se2tleToic3RjbyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5sZW5ndGgsQj1uZXcgVWludDhBcnJheSg0KkkpLFE9MDtyZXR1cm4gZy5mb3JFYWNoKChmdW5jdGlvbihBKXtCLnNldChbQT4+MjQsQT4+MTYmMjU1LEE+PjgmMjU1LDI1NSZBXSxRKSxRKz00fSkpLEEuYm94KEEudHlwZXMuc3RjbyxKaChuZXcgVWludDhBcnJheShbMCwwLDAsMCxJPj4yNCxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkldKSxCKSl9fSx7a2V5OiJzdHNzIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1nLmxlbmd0aCxCPW5ldyBVaW50OEFycmF5KDQqSSksUT0wO3JldHVybiBnLmZvckVhY2goKGZ1bmN0aW9uKEEpe0Iuc2V0KFtBPj4yNCxBPj4xNiYyNTUsQT4+OCYyNTUsMjU1JkFdLFEpLFErPTR9KSksQS5ib3goQS50eXBlcy5zdHNzLEpoKG5ldyBVaW50OEFycmF5KFswLDAsMCwwLEk+PjI0LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSV0pLEIpKX19LHtrZXk6ImN0dHMiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcubGVuZ3RoLEI9bmV3IFVpbnQ4QXJyYXkoOCpJKSxRPTA7cmV0dXJuIGcuZm9yRWFjaCgoZnVuY3Rpb24oQSl7dmFyIGc9QS52YWx1ZSxJPUEuY291bnQ7Qi5zZXQoW0k+PjI0LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSSxnPj4yNCxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmddLFEpLFErPTh9KSksQS5ib3goQS50eXBlcy5jdHRzLEpoKG5ldyBVaW50OEFycmF5KFswLDAsMCwwLEk+PjI0LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSV0pLEIpKX19LHtrZXk6InN0eXAiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEEuYm94KEEudHlwZXMuc3R5cCxuZXcgVWludDhBcnJheShbMTA5LDExNSwxMDAsMTA0LDAsMCwwLDAsMTA5LDExNSwxMDAsMTA0LDEwOSwxMTUsMTA1LDEyMF0pKX19LHtrZXk6InNpZHgiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcudGltZXNjYWxlLEI9Zy5zYW1wbGVzWzBdLmR1cmF0aW9uLFE9QipnLnNhbXBsZXMubGVuZ3RoLEU9Zy5zYW1wbGVzWzBdLnNhbXBsZU9mZnNldCpCLEM9ODtnLnNhbXBsZXMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Qys9QS5zaXplfSkpO3ZhciB0PTA7aWYoZy5pc1ZpZGVvKXt2YXIgaSxlPTA7Zy52aWRlb1NlbmMmJihpPWcudmlkZW9TZW5jKSxnLmlzVmlkZW8mJmkuZm9yRWFjaCgoZnVuY3Rpb24oQSl7ZSs9OCxBLnN1YnNhbXBsZXMmJkEuc3Vic2FtcGxlcy5sZW5ndGgmJihlKz0yLGUrPTYqQS5zdWJzYW1wbGVzLmxlbmd0aCl9KSksZy52aWRlb1NlbmNMZW5ndGg9ZSx0PUMrMTQxKzE2Kmcuc2FtcGxlcy5sZW5ndGgrZSxnLnVzZUVNRSYmZy5pc0F1ZGlvRW5jcnlwdGlvbiYmIWcuaXNWaWRlb0VuY3J5cHRpb24mJih0PUMrMTYqZy5zYW1wbGVzLmxlbmd0aCs4NCl9ZWxzZSB0PUMrMTE2KzEyKmcuc2FtcGxlcy5sZW5ndGgsZy51c2VFTUUmJmcuaXNBdWRpb0VuY3J5cHRpb24mJih0PUMrMTY5KzEyKmcuc2FtcGxlcy5sZW5ndGgrOCpnLmF1ZGlvU2VuYy5sZW5ndGgpO3ZhciBvPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDI1NSZnLmlkLEk+PjI0JjI1NSxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkksRT4+MjQmMjU1LEU+PjE2JjI1NSxFPj44JjI1NSwyNTUmRSwwLDAsMCwwLDAsMCwwLDEsMCx0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsUT4+MjQmMjU1LFE+PjE2JjI1NSxRPj44JjI1NSwyNTUmUSwxNDQsMCwwLDBdKTtyZXR1cm4gQS5ib3goQS50eXBlcy5zaWR4LG8pfX0se2tleToibWRhdCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMubWRhdCxnKX19XSksQX0oKTtuaChnZiwidHlwZXMiLFsiYXZjMSIsImF2Y0MiLCJodmMxIiwiaHZjQyIsImRpbmYiLCJkcmVmIiwiZXNkcyIsImZ0eXAiLCJoZGxyIiwibWRhdCIsIm1kaGQiLCJtZGlhIiwibWZoZCIsIm1pbmYiLCJtb29mIiwibW9vdiIsIm1wNGEiLCJtdmV4IiwibXZoZCIsInBhc3AiLCJzdGJsIiwic3RjbyIsInN0c2MiLCJzdHNkIiwic3RzeiIsInN0dHMiLCJ0ZmR0IiwidGZoZCIsInRyYWYiLCJ0cmFrIiwidHJleCIsInRraGQiLCJ2bWhkIiwic21oZCIsImN0dHMiLCJzdHNzIiwic3R5cCIsInBzc2giLCJzaWR4Iiwic2JncCIsInNhaXoiLCJzYWlvIiwic2VuYyIsInRydW4iLCJlbmN2IiwiZW5jYSIsInNpbmYiLCJidHJ0IiwiZnJtYSIsInRlbmMiLCJzY2htIiwic2NoaSIsIm1laGQiLCJmaWVsIiwic2R0cCIsImJ2YzIiLCJidjJDIl0ucmVkdWNlKChmdW5jdGlvbihBLGcpe3JldHVybiBBW2ddPVtnLmNoYXJDb2RlQXQoMCksZy5jaGFyQ29kZUF0KDEpLGcuY2hhckNvZGVBdCgyKSxnLmNoYXJDb2RlQXQoMyldLEF9KSxPYmplY3QuY3JlYXRlKG51bGwpKSksbmgoZ2YsIkhETFJfVFlQRVMiLHt2aWRlbzpuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDExOCwxMDUsMTAwLDEwMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4NiwxMDUsMTAwLDEwMSwxMTEsNzIsOTcsMTEwLDEwMCwxMDgsMTAxLDExNCwwXSksYXVkaW86bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwxMTUsMTExLDExNywxMTAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMTExLDExNywxMTAsMTAwLDcyLDk3LDExMCwxMDAsMTA4LDEwMSwxMTQsMF0pfSksbmgoZ2YsIkZUWVBBVkMxIixnZi5ib3goZ2YudHlwZXMuZnR5cCxuZXcgVWludDhBcnJheShbMTA1LDExNSwxMTEsMTA5LDAsMCwwLDEsMTA1LDExNSwxMTEsMTA5LDk3LDExOCw5OSw0OV0pKSksbmgoZ2YsIkZUWVBIRVYxIixnZi5ib3goZ2YudHlwZXMuZnR5cCxuZXcgVWludDhBcnJheShbMTA1LDExNSwxMTEsMTA5LDAsMCwwLDEsMTA1LDExNSwxMTEsMTA5LDEwNCwxMDEsMTE4LDQ5XSkpKSxuaChnZiwiRElORiIsZ2YuYm94KGdmLnR5cGVzLmRpbmYsZ2YuYm94KGdmLnR5cGVzLmRyZWYsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMiwxMTcsMTE0LDEwOCwzMiwwLDAsMCwxXSkpKSksbmgoZ2YsIlZNSEQiLGdmLmJveChnZi50eXBlcy52bWhkLG5ldyBVaW50OEFycmF5KFswLDAsMCwxLDAsMCwwLDAsMCwwLDAsMF0pKSksbmgoZ2YsIlNNSEQiLGdmLmJveChnZi50eXBlcy5zbWhkLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDBdKSkpLG5oKGdmLCJTdGJsVGFibGUiLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDBdKSksbmgoZ2YsIlNUVFMiLGdmLmJveChnZi50eXBlcy5zdHRzLGdmLlN0YmxUYWJsZSkpLG5oKGdmLCJTVFNDIixnZi5ib3goZ2YudHlwZXMuc3RzYyxnZi5TdGJsVGFibGUpKSxuaChnZiwiU1RTWiIsZ2YuYm94KGdmLnR5cGVzLnN0c3osbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSkpKSxuaChnZiwiU1RDTyIsZ2YuYm94KGdmLnR5cGVzLnN0Y28sZ2YuU3RibFRhYmxlKSk7dmFyIElmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQShnLEkpe2VoKHRoaXMsQSksdGhpcy5uYW1lPWd8fCIiLHRoaXMuX3ByZWZpeD0iWyIuY29uY2F0KHRoaXMubmFtZSwiXSIpLEEuZGlzYWJsZWQ9SX1yZXR1cm4gcmgoQSxbe2tleToiZGVidWciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc7aWYoIUEuZGlzYWJsZWQpe2Zvcih2YXIgST1hcmd1bWVudHMubGVuZ3RoLEI9bmV3IEFycmF5KEkpLFE9MDtRPEk7USsrKUJbUV09YXJndW1lbnRzW1FdOyhnPWNvbnNvbGUpLmRlYnVnLmFwcGx5KGcsW3RoaXMuX3ByZWZpeF0uY29uY2F0KEIpKX19fSx7a2V5OiJsb2ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc7aWYoIUEuZGlzYWJsZWQpe2Zvcih2YXIgST1hcmd1bWVudHMubGVuZ3RoLEI9bmV3IEFycmF5KEkpLFE9MDtRPEk7USsrKUJbUV09YXJndW1lbnRzW1FdOyhnPWNvbnNvbGUpLmxvZy5hcHBseShnLFt0aGlzLl9wcmVmaXhdLmNvbmNhdChCKSl9fX0se2tleToid2FybiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZztpZighQS5kaXNhYmxlZCl7Zm9yKHZhciBJPWFyZ3VtZW50cy5sZW5ndGgsQj1uZXcgQXJyYXkoSSksUT0wO1E8STtRKyspQltRXT1hcmd1bWVudHNbUV07KGc9Y29uc29sZSkud2Fybi5hcHBseShnLFt0aGlzLl9wcmVmaXhdLmNvbmNhdChCKSl9fX0se2tleToiZXJyb3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc7aWYoIUEuZGlzYWJsZWQpe2Zvcih2YXIgST1hcmd1bWVudHMubGVuZ3RoLEI9bmV3IEFycmF5KEkpLFE9MDtRPEk7USsrKUJbUV09YXJndW1lbnRzW1FdOyhnPWNvbnNvbGUpLmVycm9yLmFwcGx5KGcsW3RoaXMuX3ByZWZpeF0uY29uY2F0KEIpKX19fSx7a2V5OiJ0YWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZztBLmRpc2FibGVkfHwoY29uc29sZS5ncm91cCh0aGlzLl9wcmVmaXgpLChnPWNvbnNvbGUpLnRhYmxlLmFwcGx5KGcsYXJndW1lbnRzKSxjb25zb2xlLmdyb3VwRW5kKCkpfX1dLFt7a2V5OiJlbmFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7QS5kaXNhYmxlZD0hMX19LHtrZXk6ImRpc2FibGUiLHZhbHVlOmZ1bmN0aW9uKCl7QS5kaXNhYmxlZD0hMH19XSksQX0oKTtuaChJZiwiZGlzYWJsZWQiLCEwKTt2YXIgQmY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKGcsSSxCKXtlaCh0aGlzLEEpLHRoaXMudmlkZW9UcmFjaz1nLHRoaXMuYXVkaW9UcmFjaz1JO3ZhciBRPS9DaHJvbWVcLyhbXi5dKykvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCk7dGhpcy5mb3JjZUZpcnN0SURSPVEmJk51bWJlcihRWzFdKTw1MCx0aGlzLmxvZz1uZXcgSWYoIkZNUDRSZW11eGVyIiwhQnx8IUIub3BlbkxvZ3x8IUIub3BlbkxvZyl9cmV0dXJuIHJoKEEsW3trZXk6InJlbXV4Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBLGcsSSxCLFEsRT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLEM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LHQ9dGhpcy52aWRlb1RyYWNrLGk9dGhpcy5hdWRpb1RyYWNrLGU9dC5leGlzdCgpLG89aS5leGlzdCgpLHI9W107cmV0dXJuIEUmJihDJiZDLmluaXRNZXJnZT8oZSYmci5wdXNoKHRoaXMudmlkZW9UcmFjayksbyYmci5wdXNoKHRoaXMuYXVkaW9UcmFjayksST1nZi5pbml0U2VnbWVudChyKSk6KGUmJihBPWdmLmluaXRTZWdtZW50KFt0aGlzLnZpZGVvVHJhY2tdKSksbyYmKGc9Z2YuaW5pdFNlZ21lbnQoW3RoaXMuYXVkaW9UcmFja10pKSkpLGUmJnQuaGFzU2FtcGxlKCkmJihCPXRoaXMuX3JlbXV4VmlkZW8oKSksbyYmaS5oYXNTYW1wbGUoKSYmKFE9dGhpcy5fcmVtdXhBdWRpbygpKSx0LnNhbXBsZXM9W10saS5zYW1wbGVzPVtdLHtpbml0U2VnbWVudDpJLHZpZGVvSW5pdFNlZ21lbnQ6QSxhdWRpb0luaXRTZWdtZW50OmcsdmlkZW9TZWdtZW50OkIsYXVkaW9TZWdtZW50OlF9fX0se2tleToiX3JlbXV4VmlkZW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy52aWRlb1RyYWNrO3RoaXMuZm9yY2VGaXJzdElEUiYmKEEuc2FtcGxlc1swXS5mbGFnPXtkZXBlbmRzT246Mixpc05vblN5bmNTYW1wbGU6MH0pO3ZhciBnPUEuc2FtcGxlcyxJPTA7Zy5mb3JFYWNoKChmdW5jdGlvbihBKXtJKz1BLnVuaXRzLnJlZHVjZSgoZnVuY3Rpb24oQSxnKXtyZXR1cm4gQStnLmJ5dGVMZW5ndGh9KSwwKSxJKz00KkEudW5pdHMubGVuZ3RofSkpO2Zvcih2YXIgQixRPW5ldyBVaW50OEFycmF5KEkpLEU9bmV3IERhdGFWaWV3KFEuYnVmZmVyKSxDPWZ1bmN0aW9uKEEsSSl7ST1nW3RdO3ZhciBDPTA7SS51bml0cy5mb3JFYWNoKChmdW5jdGlvbihnKXtFLnNldFVpbnQzMihBLGcuYnl0ZUxlbmd0aCksQSs9NCxRLnNldChnLEEpLEErPWcuYnl0ZUxlbmd0aCxDKz00K2cuYnl0ZUxlbmd0aH0pKSxJLnNpemU9QyxlPUEsQj1JfSx0PTAsaT1nLmxlbmd0aCxlPTA7dDxpO3QrKylDKGUsQik7dmFyIG89Z2YubWRhdChRKTtyZXR1cm4gSmgoZ2YubW9vZihbQV0pLG8pfX0se2tleToiX3JlbXV4QXVkaW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy5hdWRpb1RyYWNrLGc9bmV3IFVpbnQ4QXJyYXkoQS5zYW1wbGVzLnJlZHVjZSgoZnVuY3Rpb24oQSxnKXtyZXR1cm4gQStnLnNpemV9KSwwKSk7QS5zYW1wbGVzLnJlZHVjZSgoZnVuY3Rpb24oQSxJKXtyZXR1cm4gZy5zZXQoSS5kYXRhLEEpLEErSS5zaXplfSksMCk7dmFyIEk9Z2YubWRhdChnKTtyZXR1cm4gSmgoZ2YubW9vZihbQV0pLEkpfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy52aWRlb1RyYWNrLnJlc2V0KCksdGhpcy5hdWRpb1RyYWNrLnJlc2V0KCl9fV0pLEF9KCksUWY9Z3QsRWY9IkFycmF5QnVmZmVyIixDZj1oQ1tFZl07b0Ioe2dsb2JhbDohMCxmb3JjZWQ6TltFZl0hPT1DZn0se0FycmF5QnVmZmVyOkNmfSksUWYoRWYpLF90KCJVaW50OCIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSksITApO3ZhciB0Zj1vQixlZj0kQSxvZj1aQSxyZj1WQSxuZj1hQSxhZj1iQyxzZj1VbyxjZj1Zbygic3BsaWNlIiksaGY9TWF0aC5tYXgsZmY9TWF0aC5taW47dGYoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohY2Z9LHtzcGxpY2U6ZnVuY3Rpb24oQSxnKXt2YXIgSSxCLFEsRSxDLHQsaT1uZih0aGlzKSxlPXJmKGkubGVuZ3RoKSxvPWVmKEEsZSkscj1hcmd1bWVudHMubGVuZ3RoO2lmKDA9PT1yP0k9Qj0wOjE9PT1yPyhJPTAsQj1lLW8pOihJPXItMixCPWZmKGhmKG9mKGcpLDApLGUtbykpLGUrSS1CPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIGV4Y2VlZGVkIik7Zm9yKFE9YWYoaSxCKSxFPTA7RTxCO0UrKykoQz1vK0UpaW4gaSYmc2YoUSxFLGlbQ10pO2lmKFEubGVuZ3RoPUIsSTxCKXtmb3IoRT1vO0U8ZS1CO0UrKyl0PUUrSSwoQz1FK0IpaW4gaT9pW3RdPWlbQ106ZGVsZXRlIGlbdF07Zm9yKEU9ZTtFPmUtQitJO0UtLSlkZWxldGUgaVtFLTFdfWVsc2UgaWYoST5CKWZvcihFPWUtQjtFPm87RS0tKXQ9RStJLTEsKEM9RStCLTEpaW4gaT9pW3RdPWlbQ106ZGVsZXRlIGlbdF07Zm9yKEU9MDtFPEk7RSsrKWlbRStvXT1hcmd1bWVudHNbRSsyXTtyZXR1cm4gaS5sZW5ndGg9ZS1CK0ksUX19KTtmb3IodmFyIHVmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSgpe0UodGhpcyxBKX1yZXR1cm4gdChBLFt7a2V5OiJtaXhJbiIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIE9iamVjdC5hc3NpZ24odGhpcyxBKX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPW5ldyB0aGlzLmNvbnN0cnVjdG9yO3JldHVybiBPYmplY3QuYXNzaWduKEEsdGhpcyksQX19XSxbe2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgQT1hcmd1bWVudHMubGVuZ3RoLGc9bmV3IEFycmF5KEEpLEk9MDtJPEE7SSsrKWdbSV09YXJndW1lbnRzW0ldO3JldHVybiBhKHRoaXMsZyl9fV0pLEF9KCkseWY9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3ZhciBBLEI9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdLFE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjQqQi5sZW5ndGg7RSh0aGlzLEkpLEE9Zy5jYWxsKHRoaXMpO3ZhciBDPUI7aWYoQyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYoQz1uZXcgVWludDhBcnJheShDKSksKEMgaW5zdGFuY2VvZiBJbnQ4QXJyYXl8fEMgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8QyBpbnN0YW5jZW9mIEludDE2QXJyYXl8fEMgaW5zdGFuY2VvZiBVaW50MTZBcnJheXx8QyBpbnN0YW5jZW9mIEludDMyQXJyYXl8fEMgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8QyBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8QyBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkmJihDPW5ldyBVaW50OEFycmF5KEMuYnVmZmVyLEMuYnl0ZU9mZnNldCxDLmJ5dGVMZW5ndGgpKSxDIGluc3RhbmNlb2YgVWludDhBcnJheSl7Zm9yKHZhciB0PUMuYnl0ZUxlbmd0aCxpPVtdLGU9MDtlPHQ7ZSs9MSlpW2U+Pj4yXXw9Q1tlXTw8MjQtZSU0Kjg7QS53b3Jkcz1pLEEuc2lnQnl0ZXM9dH1lbHNlIEEud29yZHM9QixBLnNpZ0J5dGVzPVE7cmV0dXJuIEF9cmV0dXJuIHQoSSxbe2tleToidG9TdHJpbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpEZikuc3RyaW5naWZ5KHRoaXMpfX0se2tleToiY29uY2F0Iix2YWx1ZTpmdW5jdGlvbihBKXt2YXIgZz10aGlzLndvcmRzLEk9QS53b3JkcyxCPXRoaXMuc2lnQnl0ZXMsUT1BLnNpZ0J5dGVzO2lmKHRoaXMuY2xhbXAoKSxCJTQpZm9yKHZhciBFPTA7RTxRO0UrPTEpe3ZhciBDPUlbRT4+PjJdPj4+MjQtRSU0KjgmMjU1O2dbQitFPj4+Ml18PUM8PDI0LShCK0UpJTQqOH1lbHNlIGZvcih2YXIgdD0wO3Q8UTt0Kz00KWdbQit0Pj4+Ml09SVt0Pj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPVEsdGhpc319LHtrZXk6ImNsYW1wIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPXRoaXMud29yZHMsZz10aGlzLnNpZ0J5dGVzO0FbZz4+PjJdJj00Mjk0OTY3Mjk1PDwzMi1nJTQqOCxBLmxlbmd0aD1NYXRoLmNlaWwoZy80KX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPWgobyhJLnByb3RvdHlwZSksImNsb25lIix0aGlzKS5jYWxsKHRoaXMpO3JldHVybiBBLndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksQX19XSxbe2tleToicmFuZG9tIix2YWx1ZTpmdW5jdGlvbihBKXtmb3IodmFyIGcsQj1bXSxRPWZ1bmN0aW9uKEEpe3ZhciBnPUEsST05ODc2NTQzMjEsQj00Mjk0OTY3Mjk1O3JldHVybiBmdW5jdGlvbigpe3ZhciBBPSgoST0zNjk2OSooNjU1MzUmSSkrKEk+PjE2KSZCKTw8MTYpKyhnPTE4ZTMqKDY1NTM1JmcpKyhnPj4xNikmQikmQjtyZXR1cm4gQS89NDI5NDk2NzI5NiwoQSs9LjUpKihNYXRoLnJhbmRvbSgpPi41PzE6LTEpfX0sRT0wO0U8QTtFKz00KXt2YXIgQz1RKDQyOTQ5NjcyOTYqKGd8fE1hdGgucmFuZG9tKCkpKTtnPTk4NzY1NDA3MSpDKCksQi5wdXNoKDQyOTQ5NjcyOTYqQygpfDApfXJldHVybiBuZXcgSShCLEEpfX1dKSxJfSh1ZiksRGY9e3N0cmluZ2lmeTpmdW5jdGlvbihBKXtmb3IodmFyIGc9QS53b3JkcyxJPUEuc2lnQnl0ZXMsQj1bXSxRPTA7UTxJO1ErPTEpe3ZhciBFPWdbUT4+PjJdPj4+MjQtUSU0KjgmMjU1O0IucHVzaCgoRT4+PjQpLnRvU3RyaW5nKDE2KSksQi5wdXNoKCgxNSZFKS50b1N0cmluZygxNikpfXJldHVybiBCLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbihBKXtmb3IodmFyIGc9QS5sZW5ndGgsST1bXSxCPTA7QjxnO0IrPTIpSVtCPj4+M118PXBhcnNlSW50KEEuc3Vic3RyKEIsMiksMTYpPDwyNC1CJTgqNDtyZXR1cm4gbmV3IHlmKEksZy8yKX19LGxmPWZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1BLmxlbmd0aCxJPVtdLEI9MDtCPGc7Qis9MSlJW0I+Pj4yXXw9KDI1NSZBLmNoYXJDb2RlQXQoQikpPDwyNC1CJTQqODtyZXR1cm4gbmV3IHlmKEksZyl9LHdmPWZ1bmN0aW9uKEEpe3JldHVybiBsZih1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoQSkpKX0sZGY9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3ZhciBBO3JldHVybiBFKHRoaXMsSSksKEE9Zy5jYWxsKHRoaXMpKS5fbWluQnVmZmVyU2l6ZT0wLEF9cmV0dXJuIHQoSSxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZGF0YT1uZXcgeWYsdGhpcy5fbkRhdGFCeXRlcz0wfX0se2tleToiX2FwcGVuZCIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9QTsic3RyaW5nIj09dHlwZW9mIGcmJihnPXdmKGcpKSx0aGlzLl9kYXRhLmNvbmNhdChnKSx0aGlzLl9uRGF0YUJ5dGVzKz1nLnNpZ0J5dGVzfX0se2tleToiX3Byb2Nlc3MiLHZhbHVlOmZ1bmN0aW9uKEEpe3ZhciBnLEk9dGhpcy5fZGF0YSxCPXRoaXMuYmxvY2tTaXplLFE9SS53b3JkcyxFPUkuc2lnQnl0ZXMsQz1FLyg0KkIpLHQ9KEM9QT9NYXRoLmNlaWwoQyk6TWF0aC5tYXgoKDB8QyktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKSkqQixpPU1hdGgubWluKDQqdCxFKTtpZih0KXtmb3IodmFyIGU9MDtlPHQ7ZSs9Qil0aGlzLl9kb1Byb2Nlc3NCbG9jayhRLGUpO2c9US5zcGxpY2UoMCx0KSxJLnNpZ0J5dGVzLT1pfXJldHVybiBuZXcgeWYoZyxpKX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPWgobyhJLnByb3RvdHlwZSksImNsb25lIix0aGlzKS5jYWxsKHRoaXMpO3JldHVybiBBLl9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSxBfX1dKSxJfSh1ZiksRmY9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSShBKXt2YXIgQjtyZXR1cm4gRSh0aGlzLEkpLChCPWcuY2FsbCh0aGlzKSkuYmxvY2tTaXplPTE2LEIuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHVmLEEpLEIucmVzZXQoKSxCfXJldHVybiB0KEksW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe2gobyhJLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuX2RvUmVzZXQoKX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHRoaXMuX2FwcGVuZChBKSx0aGlzLl9wcm9jZXNzKCksdGhpc319LHtrZXk6ImZpbmFsaXplIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gQSYmdGhpcy5fYXBwZW5kKEEpLHRoaXMuX2RvRmluYWxpemUoKX19XSxbe2tleToiX2NyZWF0ZUhlbHBlciIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcsSSl7cmV0dXJuIG5ldyBBKEkpLmZpbmFsaXplKGcpfX19LHtrZXk6Il9jcmVhdGVIbWFjSGVscGVyIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJKXtyZXR1cm4gbmV3IFJmKEEsSSkuZmluYWxpemUoZyl9fX1dKSxJfShkZiksUmY9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSShBLEIpe3ZhciBRO0UodGhpcyxJKSxRPWcuY2FsbCh0aGlzKTt2YXIgQz1uZXcgQTtRLl9oYXNoZXI9Qzt2YXIgdD1COyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9d2YodCkpO3ZhciBpPUMuYmxvY2tTaXplLGU9NCppO3Quc2lnQnl0ZXM+ZSYmKHQ9Qy5maW5hbGl6ZShCKSksdC5jbGFtcCgpO3ZhciBvPXQuY2xvbmUoKTtRLl9vS2V5PW87dmFyIHI9dC5jbG9uZSgpO1EuX2lLZXk9cjtmb3IodmFyIG49by53b3JkcyxhPXIud29yZHMscz0wO3M8aTtzKz0xKW5bc11ePTE1NDk1NTY4MjgsYVtzXV49OTA5NTIyNDg2O3JldHVybiBvLnNpZ0J5dGVzPWUsci5zaWdCeXRlcz1lLFEucmVzZXQoKSxRfXJldHVybiB0KEksW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPXRoaXMuX2hhc2hlcjtBLnJlc2V0KCksQS51cGRhdGUodGhpcy5faUtleSl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9oYXNoZXIudXBkYXRlKEEpLHRoaXN9fSx7a2V5OiJmaW5hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9dGhpcy5faGFzaGVyLEk9Zy5maW5hbGl6ZShBKTtyZXR1cm4gZy5yZXNldCgpLGcuZmluYWxpemUodGhpcy5fb0tleS5jbG9uZSgpLmNvbmNhdChJKSl9fV0pLEl9KHVmKSxHZj17c3RyaW5naWZ5OmZ1bmN0aW9uKEEpe3ZhciBnPUEud29yZHMsST1BLnNpZ0J5dGVzLEI9dGhpcy5fbWFwO0EuY2xhbXAoKTtmb3IodmFyIFE9W10sRT0wO0U8STtFKz0zKWZvcih2YXIgQz0oZ1tFPj4+Ml0+Pj4yNC1FJTQqOCYyNTUpPDwxNnwoZ1tFKzE+Pj4yXT4+PjI0LShFKzEpJTQqOCYyNTUpPDw4fGdbRSsyPj4+Ml0+Pj4yNC0oRSsyKSU0KjgmMjU1LHQ9MDt0PDQmJkUrLjc1KnQ8STt0Kz0xKVEucHVzaChCLmNoYXJBdChDPj4+NiooMy10KSY2MykpO3ZhciBpPUIuY2hhckF0KDY0KTtpZihpKWZvcig7US5sZW5ndGglNDspUS5wdXNoKGkpO3JldHVybiBRLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbihBKXt2YXIgZz1BLmxlbmd0aCxJPXRoaXMuX21hcCxCPXRoaXMuX3JldmVyc2VNYXA7aWYoIUIpe3RoaXMuX3JldmVyc2VNYXA9W10sQj10aGlzLl9yZXZlcnNlTWFwO2Zvcih2YXIgUT0wO1E8SS5sZW5ndGg7USs9MSlCW0kuY2hhckNvZGVBdChRKV09UX12YXIgRT1JLmNoYXJBdCg2NCk7aWYoRSl7dmFyIEM9QS5pbmRleE9mKEUpOy0xIT09QyYmKGc9Qyl9cmV0dXJuIGZ1bmN0aW9uKEEsZyxJKXtmb3IodmFyIEI9W10sUT0wLEU9MDtFPGc7RSs9MSlpZihFJTQpe3ZhciBDPUlbQS5jaGFyQ29kZUF0KEUtMSldPDxFJTQqMnxJW0EuY2hhckNvZGVBdChFKV0+Pj42LUUlNCoyO0JbUT4+PjJdfD1DPDwyNC1RJTQqOCxRKz0xfXJldHVybiB5Zi5jcmVhdGUoQixRKX0oQSxnLEIpfSxfbWFwOiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSJ9LGtmPVtdLHBmPTA7cGY8NjQ7cGYrPTEpa2ZbcGZdPTQyOTQ5NjcyOTYqTWF0aC5hYnMoTWF0aC5zaW4ocGYrMSkpfDA7dmFyIFNmPWZ1bmN0aW9uKEEsZyxJLEIsUSxFLEMpe3ZhciB0PUErKGcmSXx+ZyZCKStRK0M7cmV0dXJuKHQ8PEV8dD4+PjMyLUUpK2d9LFVmPWZ1bmN0aW9uKEEsZyxJLEIsUSxFLEMpe3ZhciB0PUErKGcmQnxJJn5CKStRK0M7cmV0dXJuKHQ8PEV8dD4+PjMyLUUpK2d9LE1mPWZ1bmN0aW9uKEEsZyxJLEIsUSxFLEMpe3ZhciB0PUErKGdeSV5CKStRK0M7cmV0dXJuKHQ8PEV8dD4+PjMyLUUpK2d9LE5mPWZ1bmN0aW9uKEEsZyxJLEIsUSxFLEMpe3ZhciB0PUErKEleKGd8fkIpKStRK0M7cmV0dXJuKHQ8PEV8dD4+PjMyLUUpK2d9LHZmPWZ1bmN0aW9uKEEpe2UoSSxBKTt2YXIgZz1jKEkpO2Z1bmN0aW9uIEkoKXtyZXR1cm4gRSh0aGlzLEkpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0KEksW3trZXk6Il9kb1Jlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IHlmKFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzhdKX19LHtrZXk6Il9kb1Byb2Nlc3NCbG9jayIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9QSxCPTA7QjwxNjtCKz0xKXt2YXIgUT1nK0IsRT1BW1FdO0lbUV09MTY3MTE5MzUmKEU8PDh8RT4+PjI0KXw0Mjc4MjU1MzYwJihFPDwyNHxFPj4+OCl9dmFyIEM9dGhpcy5faGFzaC53b3Jkcyx0PUlbZyswXSxpPUlbZysxXSxlPUlbZysyXSxvPUlbZyszXSxyPUlbZys0XSxuPUlbZys1XSxhPUlbZys2XSxzPUlbZys3XSxjPUlbZys4XSxoPUlbZys5XSxmPUlbZysxMF0sdT1JW2crMTFdLHk9SVtnKzEyXSxEPUlbZysxM10sbD1JW2crMTRdLHc9SVtnKzE1XSxkPUNbMF0sRj1DWzFdLFI9Q1syXSxHPUNbM107ZD1TZihkLEYsUixHLHQsNyxrZlswXSksRz1TZihHLGQsRixSLGksMTIsa2ZbMV0pLFI9U2YoUixHLGQsRixlLDE3LGtmWzJdKSxGPVNmKEYsUixHLGQsbywyMixrZlszXSksZD1TZihkLEYsUixHLHIsNyxrZls0XSksRz1TZihHLGQsRixSLG4sMTIsa2ZbNV0pLFI9U2YoUixHLGQsRixhLDE3LGtmWzZdKSxGPVNmKEYsUixHLGQscywyMixrZls3XSksZD1TZihkLEYsUixHLGMsNyxrZls4XSksRz1TZihHLGQsRixSLGgsMTIsa2ZbOV0pLFI9U2YoUixHLGQsRixmLDE3LGtmWzEwXSksRj1TZihGLFIsRyxkLHUsMjIsa2ZbMTFdKSxkPVNmKGQsRixSLEcseSw3LGtmWzEyXSksRz1TZihHLGQsRixSLEQsMTIsa2ZbMTNdKSxSPVNmKFIsRyxkLEYsbCwxNyxrZlsxNF0pLEY9U2YoRixSLEcsZCx3LDIyLGtmWzE1XSksZD1VZihkLEYsUixHLGksNSxrZlsxNl0pLEc9VWYoRyxkLEYsUixhLDksa2ZbMTddKSxSPVVmKFIsRyxkLEYsdSwxNCxrZlsxOF0pLEY9VWYoRixSLEcsZCx0LDIwLGtmWzE5XSksZD1VZihkLEYsUixHLG4sNSxrZlsyMF0pLEc9VWYoRyxkLEYsUixmLDksa2ZbMjFdKSxSPVVmKFIsRyxkLEYsdywxNCxrZlsyMl0pLEY9VWYoRixSLEcsZCxyLDIwLGtmWzIzXSksZD1VZihkLEYsUixHLGgsNSxrZlsyNF0pLEc9VWYoRyxkLEYsUixsLDksa2ZbMjVdKSxSPVVmKFIsRyxkLEYsbywxNCxrZlsyNl0pLEY9VWYoRixSLEcsZCxjLDIwLGtmWzI3XSksZD1VZihkLEYsUixHLEQsNSxrZlsyOF0pLEc9VWYoRyxkLEYsUixlLDksa2ZbMjldKSxSPVVmKFIsRyxkLEYscywxNCxrZlszMF0pLEY9VWYoRixSLEcsZCx5LDIwLGtmWzMxXSksZD1NZihkLEYsUixHLG4sNCxrZlszMl0pLEc9TWYoRyxkLEYsUixjLDExLGtmWzMzXSksUj1NZihSLEcsZCxGLHUsMTYsa2ZbMzRdKSxGPU1mKEYsUixHLGQsbCwyMyxrZlszNV0pLGQ9TWYoZCxGLFIsRyxpLDQsa2ZbMzZdKSxHPU1mKEcsZCxGLFIsciwxMSxrZlszN10pLFI9TWYoUixHLGQsRixzLDE2LGtmWzM4XSksRj1NZihGLFIsRyxkLGYsMjMsa2ZbMzldKSxkPU1mKGQsRixSLEcsRCw0LGtmWzQwXSksRz1NZihHLGQsRixSLHQsMTEsa2ZbNDFdKSxSPU1mKFIsRyxkLEYsbywxNixrZls0Ml0pLEY9TWYoRixSLEcsZCxhLDIzLGtmWzQzXSksZD1NZihkLEYsUixHLGgsNCxrZls0NF0pLEc9TWYoRyxkLEYsUix5LDExLGtmWzQ1XSksUj1NZihSLEcsZCxGLHcsMTYsa2ZbNDZdKSxGPU1mKEYsUixHLGQsZSwyMyxrZls0N10pLGQ9TmYoZCxGLFIsRyx0LDYsa2ZbNDhdKSxHPU5mKEcsZCxGLFIscywxMCxrZls0OV0pLFI9TmYoUixHLGQsRixsLDE1LGtmWzUwXSksRj1OZihGLFIsRyxkLG4sMjEsa2ZbNTFdKSxkPU5mKGQsRixSLEcseSw2LGtmWzUyXSksRz1OZihHLGQsRixSLG8sMTAsa2ZbNTNdKSxSPU5mKFIsRyxkLEYsZiwxNSxrZls1NF0pLEY9TmYoRixSLEcsZCxpLDIxLGtmWzU1XSksZD1OZihkLEYsUixHLGMsNixrZls1Nl0pLEc9TmYoRyxkLEYsUix3LDEwLGtmWzU3XSksUj1OZihSLEcsZCxGLGEsMTUsa2ZbNThdKSxGPU5mKEYsUixHLGQsRCwyMSxrZls1OV0pLGQ9TmYoZCxGLFIsRyxyLDYsa2ZbNjBdKSxHPU5mKEcsZCxGLFIsdSwxMCxrZls2MV0pLFI9TmYoUixHLGQsRixlLDE1LGtmWzYyXSksRj1OZihGLFIsRyxkLGgsMjEsa2ZbNjNdKSxDWzBdPUNbMF0rZHwwLENbMV09Q1sxXStGfDAsQ1syXT1DWzJdK1J8MCxDWzNdPUNbM10rR3wwfX0se2tleToiX2RvRmluYWxpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy5fZGF0YSxnPUEud29yZHMsST04KnRoaXMuX25EYXRhQnl0ZXMsQj04KkEuc2lnQnl0ZXM7Z1tCPj4+NV18PTEyODw8MjQtQiUzMjt2YXIgUT1NYXRoLmZsb29yKEkvNDI5NDk2NzI5NiksRT1JO2dbMTUrKEIrNjQ+Pj45PDw0KV09MTY3MTE5MzUmKFE8PDh8UT4+PjI0KXw0Mjc4MjU1MzYwJihRPDwyNHxRPj4+OCksZ1sxNCsoQis2ND4+Pjk8PDQpXT0xNjcxMTkzNSYoRTw8OHxFPj4+MjQpfDQyNzgyNTUzNjAmKEU8PDI0fEU+Pj44KSxBLnNpZ0J5dGVzPTQqKGcubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIEM9dGhpcy5faGFzaCx0PUMud29yZHMsaT0wO2k8NDtpKz0xKXt2YXIgZT10W2ldO3RbaV09MTY3MTE5MzUmKGU8PDh8ZT4+PjI0KXw0Mjc4MjU1MzYwJihlPDwyNHxlPj4+OCl9cmV0dXJuIEN9fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQT1oKG8oSS5wcm90b3R5cGUpLCJjbG9uZSIsdGhpcykuY2FsbCh0aGlzKTtyZXR1cm4gQS5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksQX19XSksSX0oRmYpO0ZmLl9jcmVhdGVIZWxwZXIodmYpLEZmLl9jcmVhdGVIbWFjSGVscGVyKHZmKTt2YXIgWWY9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSShBKXt2YXIgQjtyZXR1cm4gRSh0aGlzLEkpLChCPWcuY2FsbCh0aGlzKSkuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHVmLHtrZXlTaXplOjQsaGFzaGVyOnZmLGl0ZXJhdGlvbnM6MX0sQSksQn1yZXR1cm4gdChJLFt7a2V5OiJjb21wdXRlIix2YWx1ZTpmdW5jdGlvbihBLGcpe2Zvcih2YXIgSSxCPXRoaXMuY2ZnLFE9Qi5oYXNoZXIuY3JlYXRlKCksRT15Zi5jcmVhdGUoKSxDPUUud29yZHMsdD1CLmtleVNpemUsaT1CLml0ZXJhdGlvbnM7Qy5sZW5ndGg8dDspe0kmJlEudXBkYXRlKEkpLEk9US51cGRhdGUoQSkuZmluYWxpemUoZyksUS5yZXNldCgpO2Zvcih2YXIgZT0xO2U8aTtlKz0xKUk9US5maW5hbGl6ZShJKSxRLnJlc2V0KCk7RS5jb25jYXQoSSl9cmV0dXJuIEUuc2lnQnl0ZXM9NCp0LEV9fV0pLEl9KHVmKSxIZj1mdW5jdGlvbihBKXtlKEksQSk7dmFyIGc9YyhJKTtmdW5jdGlvbiBJKEEsQixRKXt2YXIgQztyZXR1cm4gRSh0aGlzLEkpLChDPWcuY2FsbCh0aGlzKSkuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHVmLFEpLEMuX3hmb3JtTW9kZT1BLEMuX2tleT1CLEMucmVzZXQoKSxDfXJldHVybiB0KEksW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe2gobyhJLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuX2RvUmVzZXQoKX19LHtrZXk6InByb2Nlc3MiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9hcHBlbmQoQSksdGhpcy5fcHJvY2VzcygpfX0se2tleToiZmluYWxpemUiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBBJiZ0aGlzLl9hcHBlbmQoQSksdGhpcy5fZG9GaW5hbGl6ZSgpfX1dLFt7a2V5OiJjcmVhdGVFbmNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0VOQ19YRk9STV9NT0RFLEEsZyl9fSx7a2V5OiJjcmVhdGVEZWNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0RFQ19YRk9STV9NT0RFLEEsZyl9fSx7a2V5OiJfY3JlYXRlSGVscGVyIix2YWx1ZTpmdW5jdGlvbihBKXt2YXIgZz1mdW5jdGlvbihBKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIEE/T2Y6VGZ9O3JldHVybntlbmNyeXB0OmZ1bmN0aW9uKEksQixRKXtyZXR1cm4gZyhCKS5lbmNyeXB0KEEsSSxCLFEpfSxkZWNyeXB0OmZ1bmN0aW9uKEksQixRKXtyZXR1cm4gZyhCKS5kZWNyeXB0KEEsSSxCLFEpfX19fV0pLEl9KGRmKTtIZi5fRU5DX1hGT1JNX01PREU9MSxIZi5fREVDX1hGT1JNX01PREU9MixIZi5rZXlTaXplPTQsSGYuaXZTaXplPTQ7dmFyIExmPWZ1bmN0aW9uKEEpe2UoSSxBKTt2YXIgZz1jKEkpO2Z1bmN0aW9uIEkoQSxCKXt2YXIgUTtyZXR1cm4gRSh0aGlzLEkpLChRPWcuY2FsbCh0aGlzKSkuX2NpcGhlcj1BLFEuX2l2PUIsUX1yZXR1cm4gdChJLG51bGwsW3trZXk6ImNyZWF0ZUVuY3J5cHRvciIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtyZXR1cm4gdGhpcy5FbmNyeXB0b3IuY3JlYXRlKEEsZyl9fSx7a2V5OiJjcmVhdGVEZWNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7cmV0dXJuIHRoaXMuRGVjcnlwdG9yLmNyZWF0ZShBLGcpfX1dKSxJfSh1Zik7ZnVuY3Rpb24gSmYoQSxnLEkpe3ZhciBCLFE9QSxFPXRoaXMuX2l2O0U/KEI9RSx0aGlzLl9pdj12b2lkIDApOkI9dGhpcy5fcHJldkJsb2NrO2Zvcih2YXIgQz0wO0M8STtDKz0xKVFbZytDXV49QltDXX12YXIgS2Y9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3JldHVybiBFKHRoaXMsSSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQoSSl9KExmKTtLZi5FbmNyeXB0b3I9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3JldHVybiBFKHRoaXMsSSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQoSSxbe2tleToicHJvY2Vzc0Jsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3ZhciBJPXRoaXMuX2NpcGhlcixCPUkuYmxvY2tTaXplO0pmLmNhbGwodGhpcyxBLGcsQiksSS5lbmNyeXB0QmxvY2soQSxnKSx0aGlzLl9wcmV2QmxvY2s9QS5zbGljZShnLGcrQil9fV0pLEl9KEtmKSxLZi5EZWNyeXB0b3I9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3JldHVybiBFKHRoaXMsSSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQoSSxbe2tleToicHJvY2Vzc0Jsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3ZhciBJPXRoaXMuX2NpcGhlcixCPUkuYmxvY2tTaXplLFE9QS5zbGljZShnLGcrQik7SS5kZWNyeXB0QmxvY2soQSxnKSxKZi5jYWxsKHRoaXMsQSxnLEIpLHRoaXMuX3ByZXZCbG9jaz1RfX1dKSxJfShLZik7dmFyIG1mPXtwYWQ6ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9NCpnLEI9SS1BLnNpZ0J5dGVzJUksUT1CPDwyNHxCPDwxNnxCPDw4fEIsRT1bXSxDPTA7QzxCO0MrPTQpRS5wdXNoKFEpO3ZhciB0PXlmLmNyZWF0ZShFLEIpO0EuY29uY2F0KHQpfSx1bnBhZDpmdW5jdGlvbihBKXt2YXIgZz1BLEk9MjU1Jmcud29yZHNbZy5zaWdCeXRlcy0xPj4+Ml07Zy5zaWdCeXRlcy09SX19LHhmPWZ1bmN0aW9uKEEpe2UoSSxBKTt2YXIgZz1jKEkpO2Z1bmN0aW9uIEkoQSxCLFEpe3ZhciBDO3JldHVybiBFKHRoaXMsSSksKEM9Zy5jYWxsKHRoaXMsQSxCLE9iamVjdC5hc3NpZ24oe21vZGU6S2YscGFkZGluZzptZn0sUSkpKS5ibG9ja1NpemU9NCxDfXJldHVybiB0KEksW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBO2gobyhJLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpO3ZhciBnPXRoaXMuY2ZnLEI9Zy5pdixRPWcubW9kZTt0aGlzLl94Zm9ybU1vZGU9PT10aGlzLmNvbnN0cnVjdG9yLl9FTkNfWEZPUk1fTU9ERT9BPVEuY3JlYXRlRW5jcnlwdG9yOihBPVEuY3JlYXRlRGVjcnlwdG9yLHRoaXMuX21pbkJ1ZmZlclNpemU9MSksdGhpcy5fbW9kZT1BLmNhbGwoUSx0aGlzLEImJkIud29yZHMpLHRoaXMuX21vZGUuX19jcmVhdG9yPUF9fSx7a2V5OiJfZG9Qcm9jZXNzQmxvY2siLHZhbHVlOmZ1bmN0aW9uKEEsZyl7dGhpcy5fbW9kZS5wcm9jZXNzQmxvY2soQSxnKX19LHtrZXk6Il9kb0ZpbmFsaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBLGc9dGhpcy5jZmcucGFkZGluZztyZXR1cm4gdGhpcy5feGZvcm1Nb2RlPT09dGhpcy5jb25zdHJ1Y3Rvci5fRU5DX1hGT1JNX01PREU/KGcucGFkKHRoaXMuX2RhdGEsdGhpcy5ibG9ja1NpemUpLEE9dGhpcy5fcHJvY2VzcyghMCkpOihBPXRoaXMuX3Byb2Nlc3MoITApLGcudW5wYWQoQSkpLEF9fV0pLEl9KEhmKSxxZj1mdW5jdGlvbihBKXtlKEksQSk7dmFyIGc9YyhJKTtmdW5jdGlvbiBJKEEpe3ZhciBCO3JldHVybiBFKHRoaXMsSSksKEI9Zy5jYWxsKHRoaXMpKS5taXhJbihBKSxCfXJldHVybiB0KEksW3trZXk6InRvU3RyaW5nIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4oQXx8dGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKX19XSksSX0odWYpLGJmPXtzdHJpbmdpZnk6ZnVuY3Rpb24oQSl7dmFyIGc9QS5jaXBoZXJ0ZXh0LEk9QS5zYWx0O3JldHVybihJP3lmLmNyZWF0ZShbMTM5ODg5MzY4NCwxNzAxMDc2ODMxXSkuY29uY2F0KEkpLmNvbmNhdChnKTpnKS50b1N0cmluZyhHZil9LHBhcnNlOmZ1bmN0aW9uKEEpe3ZhciBnLEk9R2YucGFyc2UoQSksQj1JLndvcmRzO3JldHVybiAxMzk4ODkzNjg0PT09QlswXSYmMTcwMTA3NjgzMT09PUJbMV0mJihnPXlmLmNyZWF0ZShCLnNsaWNlKDIsNCkpLEIuc3BsaWNlKDAsNCksSS5zaWdCeXRlcy09MTYpLHFmLmNyZWF0ZSh7Y2lwaGVydGV4dDpJLHNhbHQ6Z30pfX0sVGY9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3JldHVybiBFKHRoaXMsSSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQoSSxudWxsLFt7a2V5OiJlbmNyeXB0Iix2YWx1ZTpmdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1PYmplY3QuYXNzaWduKG5ldyB1Zix0aGlzLmNmZyxCKSxFPUEuY3JlYXRlRW5jcnlwdG9yKEksUSksQz1FLmZpbmFsaXplKGcpLHQ9RS5jZmc7cmV0dXJuIHFmLmNyZWF0ZSh7Y2lwaGVydGV4dDpDLGtleTpJLGl2OnQuaXYsYWxnb3JpdGhtOkEsbW9kZTp0Lm1vZGUscGFkZGluZzp0LnBhZGRpbmcsYmxvY2tTaXplOkUuYmxvY2tTaXplLGZvcm1hdHRlcjpRLmZvcm1hdH0pfX0se2tleToiZGVjcnlwdCIsdmFsdWU6ZnVuY3Rpb24oQSxnLEksQil7dmFyIFE9ZyxFPU9iamVjdC5hc3NpZ24obmV3IHVmLHRoaXMuY2ZnLEIpO3JldHVybiBRPXRoaXMuX3BhcnNlKFEsRS5mb3JtYXQpLEEuY3JlYXRlRGVjcnlwdG9yKEksRSkuZmluYWxpemUoUS5jaXBoZXJ0ZXh0KX19LHtrZXk6Il9wYXJzZSIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIEE/Zy5wYXJzZShBLHRoaXMpOkF9fV0pLEl9KHVmKTtUZi5jZmc9T2JqZWN0LmFzc2lnbihuZXcgdWYse2Zvcm1hdDpiZn0pO3ZhciBqZj17ZXhlY3V0ZTpmdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1CO1F8fChRPXlmLnJhbmRvbSg4KSk7dmFyIEU9WWYuY3JlYXRlKHtrZXlTaXplOmcrSX0pLmNvbXB1dGUoQSxRKSxDPXlmLmNyZWF0ZShFLndvcmRzLnNsaWNlKGcpLDQqSSk7cmV0dXJuIEUuc2lnQnl0ZXM9NCpnLHFmLmNyZWF0ZSh7a2V5OkUsaXY6QyxzYWx0OlF9KX19LE9mPWZ1bmN0aW9uKEEpe2UoSSxBKTt2YXIgZz1jKEkpO2Z1bmN0aW9uIEkoKXtyZXR1cm4gRSh0aGlzLEkpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0KEksbnVsbCxbe2tleToiZW5jcnlwdCIsdmFsdWU6ZnVuY3Rpb24oQSxnLEksQil7dmFyIFE9T2JqZWN0LmFzc2lnbihuZXcgdWYsdGhpcy5jZmcsQiksRT1RLmtkZi5leGVjdXRlKEksQS5rZXlTaXplLEEuaXZTaXplKTtRLml2PUUuaXY7dmFyIEM9VGYuZW5jcnlwdC5jYWxsKHRoaXMsQSxnLEUua2V5LFEpO3JldHVybiBDLm1peEluKEUpLEN9fSx7a2V5OiJkZWNyeXB0Iix2YWx1ZTpmdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1nLEU9T2JqZWN0LmFzc2lnbihuZXcgdWYsdGhpcy5jZmcsQik7UT10aGlzLl9wYXJzZShRLEUuZm9ybWF0KTt2YXIgQz1FLmtkZi5leGVjdXRlKEksQS5rZXlTaXplLEEuaXZTaXplLFEuc2FsdCk7cmV0dXJuIEUuaXY9Qy5pdixUZi5kZWNyeXB0LmNhbGwodGhpcyxBLFEsQy5rZXksRSl9fV0pLEl9KFRmKTtPZi5jZmc9T2JqZWN0LmFzc2lnbihUZi5jZmcse2tkZjpqZn0pO2Zvcih2YXIgWmY9W10sUGY9W10sV2Y9W10sVmY9W10sWGY9W10semY9W10sX2Y9W10sJGY9W10sQXU9W10sZ3U9W10sSXU9W10sQnU9MDtCdTwyNTY7QnUrPTEpSXVbQnVdPUJ1PDEyOD9CdTw8MTpCdTw8MV4yODM7Zm9yKHZhciBRdT0wLEV1PTAsQ3U9MDtDdTwyNTY7Q3UrPTEpe3ZhciB0dT1FdV5FdTw8MV5FdTw8Ml5FdTw8M15FdTw8NDt0dT10dT4+PjheMjU1JnR1Xjk5LFpmW1F1XT10dSxQZlt0dV09UXU7dmFyIGl1PUl1W1F1XSxldT1JdVtpdV0sb3U9SXVbZXVdLHJ1PTI1NypJdVt0dV1eMTY4NDMwMDgqdHU7V2ZbUXVdPXJ1PDwyNHxydT4+PjgsVmZbUXVdPXJ1PDwxNnxydT4+PjE2LFhmW1F1XT1ydTw8OHxydT4+PjI0LHpmW1F1XT1ydSxydT0xNjg0MzAwOSpvdV42NTUzNypldV4yNTcqaXVeMTY4NDMwMDgqUXUsX2ZbdHVdPXJ1PDwyNHxydT4+PjgsJGZbdHVdPXJ1PDwxNnxydT4+PjE2LEF1W3R1XT1ydTw8OHxydT4+PjI0LGd1W3R1XT1ydSxRdT8oUXU9aXVeSXVbSXVbSXVbb3VeaXVdXV0sRXVePUl1W0l1W0V1XV0pOlF1PUV1PTF9dmFyIG51PVswLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0XSxhdT1mdW5jdGlvbihBKXtlKEksQSk7dmFyIGc9YyhJKTtmdW5jdGlvbiBJKCl7cmV0dXJuIEUodGhpcyxJKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdChJLFt7a2V5OiJfZG9SZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQTtpZighdGhpcy5fblJvdW5kc3x8dGhpcy5fa2V5UHJpb3JSZXNldCE9PXRoaXMuX2tleSl7dGhpcy5fa2V5UHJpb3JSZXNldD10aGlzLl9rZXk7dmFyIGc9dGhpcy5fa2V5UHJpb3JSZXNldCxJPWcud29yZHMsQj1nLnNpZ0J5dGVzLzQ7dGhpcy5fblJvdW5kcz1CKzY7dmFyIFE9NCoodGhpcy5fblJvdW5kcysxKTt0aGlzLl9rZXlTY2hlZHVsZT1bXTtmb3IodmFyIEU9dGhpcy5fa2V5U2NoZWR1bGUsQz0wO0M8UTtDKz0xKUM8Qj9FW0NdPUlbQ106KEE9RVtDLTFdLEMlQj9CPjYmJkMlQj09NCYmKEE9WmZbQT4+PjI0XTw8MjR8WmZbQT4+PjE2JjI1NV08PDE2fFpmW0E+Pj44JjI1NV08PDh8WmZbMjU1JkFdKTooQT1aZlsoQT1BPDw4fEE+Pj4yNCk+Pj4yNF08PDI0fFpmW0E+Pj4xNiYyNTVdPDwxNnxaZltBPj4+OCYyNTVdPDw4fFpmWzI1NSZBXSxBXj1udVtDL0J8MF08PDI0KSxFW0NdPUVbQy1CXV5BKTt0aGlzLl9pbnZLZXlTY2hlZHVsZT1bXTtmb3IodmFyIHQ9dGhpcy5faW52S2V5U2NoZWR1bGUsaT0wO2k8UTtpKz0xKXt2YXIgZT1RLWk7QT1pJTQ/RVtlXTpFW2UtNF0sdFtpXT1pPDR8fGU8PTQ/QTpfZltaZltBPj4+MjRdXV4kZltaZltBPj4+MTYmMjU1XV1eQXVbWmZbQT4+PjgmMjU1XV1eZ3VbWmZbMjU1JkFdXX19fX0se2tleToiZW5jcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3RoaXMuX2RvQ3J5cHRCbG9jayhBLGcsdGhpcy5fa2V5U2NoZWR1bGUsV2YsVmYsWGYsemYsWmYpfX0se2tleToiZGVjcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3ZhciBJPUEsQj1JW2crMV07SVtnKzFdPUlbZyszXSxJW2crM109Qix0aGlzLl9kb0NyeXB0QmxvY2soSSxnLHRoaXMuX2ludktleVNjaGVkdWxlLF9mLCRmLEF1LGd1LFBmKSxCPUlbZysxXSxJW2crMV09SVtnKzNdLElbZyszXT1CfX0se2tleToiX2RvQ3J5cHRCbG9jayIsdmFsdWU6ZnVuY3Rpb24oQSxnLEksQixRLEUsQyx0KXtmb3IodmFyIGk9QSxlPXRoaXMuX25Sb3VuZHMsbz1pW2ddXklbMF0scj1pW2crMV1eSVsxXSxuPWlbZysyXV5JWzJdLGE9aVtnKzNdXklbM10scz00LGM9MTtjPGU7Yys9MSl7dmFyIGg9QltvPj4+MjRdXlFbcj4+PjE2JjI1NV1eRVtuPj4+OCYyNTVdXkNbMjU1JmFdXklbc107cys9MTt2YXIgZj1CW3I+Pj4yNF1eUVtuPj4+MTYmMjU1XV5FW2E+Pj44JjI1NV1eQ1syNTUmb11eSVtzXTtzKz0xO3ZhciB1PUJbbj4+PjI0XV5RW2E+Pj4xNiYyNTVdXkVbbz4+PjgmMjU1XV5DWzI1NSZyXV5JW3NdO3MrPTE7dmFyIHk9QlthPj4+MjRdXlFbbz4+PjE2JjI1NV1eRVtyPj4+OCYyNTVdXkNbMjU1Jm5dXklbc107cys9MSxvPWgscj1mLG49dSxhPXl9dmFyIEQ9KHRbbz4+PjI0XTw8MjR8dFtyPj4+MTYmMjU1XTw8MTZ8dFtuPj4+OCYyNTVdPDw4fHRbMjU1JmFdKV5JW3NdO3MrPTE7dmFyIGw9KHRbcj4+PjI0XTw8MjR8dFtuPj4+MTYmMjU1XTw8MTZ8dFthPj4+OCYyNTVdPDw4fHRbMjU1Jm9dKV5JW3NdO3MrPTE7dmFyIHc9KHRbbj4+PjI0XTw8MjR8dFthPj4+MTYmMjU1XTw8MTZ8dFtvPj4+OCYyNTVdPDw4fHRbMjU1JnJdKV5JW3NdO3MrPTE7dmFyIGQ9KHRbYT4+PjI0XTw8MjR8dFtvPj4+MTYmMjU1XTw8MTZ8dFtyPj4+OCYyNTVdPDw4fHRbMjU1Jm5dKV5JW3NdO3MrPTEsaVtnXT1ELGlbZysxXT1sLGlbZysyXT13LGlbZyszXT1kfX1dKSxJfSh4Zik7YXUua2V5U2l6ZT04O3ZhciBzdT14Zi5fY3JlYXRlSGVscGVyKGF1KSxjdT1mdW5jdGlvbihBKXtlKEksQSk7dmFyIGc9YyhJKTtmdW5jdGlvbiBJKCl7cmV0dXJuIEUodGhpcyxJKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdChJKX0oTGYpO2N1LkVuY3J5cHRvcj1mdW5jdGlvbihBKXtlKEksQSk7dmFyIGc9YyhJKTtmdW5jdGlvbiBJKCl7cmV0dXJuIEUodGhpcyxJKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdChJLFt7a2V5OiJwcm9jZXNzQmxvY2siLHZhbHVlOmZ1bmN0aW9uKEEsZyl7dmFyIEk9QSxCPXRoaXMuX2NpcGhlcixRPUIuYmxvY2tTaXplLEU9dGhpcy5faXYsQz10aGlzLl9jb3VudGVyO0UmJih0aGlzLl9jb3VudGVyPUUuc2xpY2UoMCksQz10aGlzLl9jb3VudGVyLHRoaXMuX2l2PXZvaWQgMCk7dmFyIHQ9Qy5zbGljZSgwKTtCLmVuY3J5cHRCbG9jayh0LDApLENbUS0xXT1DW1EtMV0rMXwwO2Zvcih2YXIgaT0wO2k8UTtpKz0xKUlbZytpXV49dFtpXX19XSksSX0oY3UpLGN1LkRlY3J5cHRvcj1jdS5FbmNyeXB0b3I7dmFyIGh1PXtwYWQ6ZnVuY3Rpb24oKXt9LHVucGFkOmZ1bmN0aW9uKCl7fX0sZnU9e2RlY3J5cHRXb3JkQXJyYXk6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCPURmLnBhcnNlKGcpLFE9RGYucGFyc2UoYmgoSSkpLEU9eWYuY3JlYXRlKG5ldyBVaW50OEFycmF5KEEpKSxDPXN1LmRlY3J5cHQocWYuY3JlYXRlKHtjaXBoZXJ0ZXh0OkV9KSxCLHtpdjpRLG1vZGU6Y3UscGFkZGluZzpodX0pO3JldHVybiBmdS53b3JkQXJyYXlUb1VpbnQ4QXJyYXkoQyl9LHdvcmRBcnJheVRvVWludDhBcnJheTpmdW5jdGlvbihBKXtmb3IodmFyIGc9QS5zaWdCeXRlcyxJPUEud29yZHMsQj1uZXcgVWludDhBcnJheShnKSxRPTAsRT0wO1EhPT1nOyl7dmFyIEM9SVtFKytdO2lmKEJbUSsrXT0oNDI3ODE5MDA4MCZDKT4+PjI0LFE9PT1nKWJyZWFrO2lmKEJbUSsrXT0oMTY3MTE2ODAmQyk+Pj4xNixRPT09ZylicmVhaztpZihCW1ErK109KDY1MjgwJkMpPj4+OCxRPT09ZylicmVhaztCW1ErK109MjU1JkN9cmV0dXJuIEJ9LGRlY29kZXJBRVNDVFJEYXRhOmZ1bmN0aW9uKEEsZyxJKXtpZihBLnZpZGVvU2VuYyl7dmFyIEI9QS5raWRWYWx1ZSxRPUEudmlkZW9TZW5jO0Euc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbihnLEUpe3ZhciBDPVFbRV0sdD1nLmRhdGEsaT1bXSxlPVtdLG89Qy5Jbml0aWFsaXphdGlvblZlY3RvcjtpZihDLnN1YnNhbXBsZXMmJkMuc3Vic2FtcGxlcy5sZW5ndGgpQy5zdWJzYW1wbGVzLmZvckVhY2goKGZ1bmN0aW9uKEEpe3ZhciBnPUEuQnl0ZXNPZkNsZWFyRGF0YStBLkJ5dGVzT2ZQcm90ZWN0ZWREYXRhLEk9dC5zbGljZSgwLGcpO2kucHVzaChJLnNsaWNlKDAsQS5CeXRlc09mQ2xlYXJEYXRhKSksZS5wdXNoKEkuc2xpY2UoQS5CeXRlc09mQ2xlYXJEYXRhKSksdD10LnNsaWNlKGcpfSkpO2Vsc2V7dmFyIHI9Zy5zaXplO2kucHVzaCh0LnNsaWNlKDAsMCkpLGUucHVzaCh0LnNsaWNlKDAscikpLHQ9dC5zbGljZShyKX12YXIgbj1uZXcgJGg7bi53cml0ZS5hcHBseShuLGUpO3ZhciBhPUk/SShuLmJ1ZmZlcixCLG8pOmZ1LmRlY3J5cHRXb3JkQXJyYXkobi5idWZmZXIsQixvKSxzPW5ldyAkaDtpLmZvckVhY2goKGZ1bmN0aW9uKEEsZyl7dmFyIEk9ZVtnXS5sZW5ndGgsQj1hLnNsaWNlKDAsSSk7cy53cml0ZShBKSxzLndyaXRlKEIpLGE9YS5zbGljZShJKX0pKSxBLnNhbXBsZXNbRV0uZGF0YT1zLmJ1ZmZlcn0pKX1pZihnLmF1ZGlvU2VuYyl7dmFyIEU9Zy5raWRWYWx1ZSxDPWcuYXVkaW9TZW5jO2cuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbihBLEIpe3ZhciBRPUNbQl0sdD1JP0koQS5kYXRhLEUsUS5Jbml0aWFsaXphdGlvblZlY3Rvcik6ZnUuZGVjcnlwdFdvcmRBcnJheShBLmRhdGEsRSxRLkluaXRpYWxpemF0aW9uVmVjdG9yKTtnLnNhbXBsZXNbQl0uZGF0YT10fSkpfX19LHV1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQShnLEksQixRKXt2YXIgRT10aGlzO2VoKHRoaXMsQSksbmgodGhpcywiX3ZpZGVvU2FtcGxlcyIsW10pLG5oKHRoaXMsIl9hdWRpb1NhbXBsZXMiLFtdKSxuaCh0aGlzLCJfbGFzdFJlbWFpbkJ1ZmZlciIsW10pLG5oKHRoaXMsIl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3MiLDApLHRoaXMudmlkZW9UcmFjaz1uZXcga2gsdGhpcy5hdWRpb1RyYWNrPW5ldyBwaCx0aGlzLm1ldGFkYXRhVHJhY2s9Qnx8bmV3IE1oLHRoaXMubG9nPW5ldyBJZigiTVA0RGVtdXhlciIsIVF8fCFRLm9wZW5Mb2d8fCFRLm9wZW5Mb2cpLGcmJmcuZm9yRWFjaCgoZnVuY3Rpb24oQSl7dmFyIGc7KGc9RS5fdmlkZW9TYW1wbGVzKS5wdXNoLmFwcGx5KGcsc2goQS5mcmFtZXMpKX0pKSxJJiZJLmZvckVhY2goKGZ1bmN0aW9uKEEpe3ZhciBnOyhnPUUuX2F1ZGlvU2FtcGxlcykucHVzaC5hcHBseShnLHNoKEEuZnJhbWVzKSl9KSl9cmV0dXJuIHJoKEEsW3trZXk6InBhcnNlU2FtcGxlcyIsdmFsdWU6ZnVuY3Rpb24oQSl7aWYoIUEpdGhyb3cgbmV3IEVycm9yKCJtb292IGlzIHJlcXVpcmVkIik7aWYodGhpcy52aWRlb1RyYWNrLmNvZGVjfHx0aGlzLmF1ZGlvVHJhY2suY29kZWN8fChQaC5tb292VG9UcmFjayhBLHRoaXMudmlkZW9UcmFjayx0aGlzLmF1ZGlvVHJhY2spLHRoaXMudmlkZW9TZW5jPXRoaXMudmlkZW9UcmFjay52aWRlb1NlbmMsdGhpcy5hdWRpb1NlbmM9dGhpcy5hdWRpb1RyYWNrLmF1ZGlvU2VuYyksIXRoaXMuX2F1ZGlvU2FtcGxlcy5sZW5ndGgmJiF0aGlzLl92aWRlb1NhbXBsZXMubGVuZ3RoKXt2YXIgZz1QaC5tb292VG9TYW1wbGVzKEEpO2lmKCFnKXRocm93IG5ldyBFcnJvcigiY2Fubm90IHBhcnNlIHNhbXBsZXMgZnJvbSBtb292IGJveCIpO3RoaXMuX3ZpZGVvU2FtcGxlcz1nLnZpZGVvU2FtcGxlc3x8W10sdGhpcy5fYXVkaW9TYW1wbGVzPWcuYXVkaW9TYW1wbGVzfHxbXX19fSx7a2V5OiJkZW11eCIsdmFsdWU6ZnVuY3Rpb24oQSxnLEksQixRKXt0aGlzLnBhcnNlU2FtcGxlcyhRKTt2YXIgRSxDLHQsaT10aGlzLnZpZGVvVHJhY2ssZT10aGlzLmF1ZGlvVHJhY2s7aWYoaS5zYW1wbGVzPVtdLGUuc2FtcGxlcz1bXSxJKXtmb3IodmFyIG8scj0wLG49SVswXSxhPUlbMV07bjw9YTtuKyspe2lmKCEoRT10aGlzLl92aWRlb1NhbXBsZXNbbl0pKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGZvdW5kIHZpZGVvIGZyYW1lICMiLmNvbmNhdChuKSk7dD1FLm9mZnNldC1nLEM9QS5zdWJhcnJheSh0LHQrRS5zaXplKSwobz1uZXcgU2goRS5wdHN8fEUuZHRzLEUuZHRzKSkuZHVyYXRpb249RS5kdXJhdGlvbixvLmdvcElkPUUuZ29wSWQsRS5rZXlmcmFtZSYmby5zZXRUb0tleWZyYW1lKCk7Zm9yKHZhciBzPTAsYz1DLmxlbmd0aC0xO3M8Yzspcj14aChDLHMpLHMrPTQsby51bml0cy5wdXNoKEMuc3ViYXJyYXkocyxzK3IpKSxzKz1yO2kuc2FtcGxlcy5wdXNoKG8pfWkuYmFzZU1lZGlhRGVjb2RlVGltZT1pLnNhbXBsZXNbMF0uZHRzfWlmKEIpe2Zvcih2YXIgaD1CWzBdLGY9QlsxXTtoPD1mO2grKyl7aWYoIShFPXRoaXMuX2F1ZGlvU2FtcGxlc1toXSkpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm91bmQgdmlkZW8gZnJhbWUgIyIuY29uY2F0KGgpKTt0PUUub2Zmc2V0LWcsQz1BLnN1YmFycmF5KHQsdCtFLnNpemUpLGUuc2FtcGxlcy5wdXNoKG5ldyBVaChFLmR0cyxDLEUuZHVyYXRpb24pKX1lLmJhc2VNZWRpYURlY29kZVRpbWU9ZS5zYW1wbGVzWzBdLmR0c31yZXR1cm57dmlkZW9UcmFjazppLGF1ZGlvVHJhY2s6ZSxtZXRhZGF0YVRyYWNrOnRoaXMubWV0YWRhdGFUcmFja319fSx7a2V5OiJkZW11eFBhcnQiLHZhbHVlOmZ1bmN0aW9uKEEsZyxJLEIsUSxFLEMsdCl7aWYodGhpcy5wYXJzZVNhbXBsZXMoUSksdGhpcy52aWRlb1RyYWNrLnVzZUVNRT1FLHRoaXMuYXVkaW9UcmFjay51c2VFTUU9RSx0aGlzLl9sYXN0UmVtYWluQnVmZmVyJiZ0aGlzLl9sYXN0UmVtYWluQnVmZmVyLmJ5dGVMZW5ndGg+MCYmZz50aGlzLl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3MmJmc8PXRoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcyt0aGlzLl9sYXN0UmVtYWluQnVmZmVyLmJ5dGVMZW5ndGgpZm9yKHZhciBpPTA7aTwyMDspdHJ5e3ZhciBlPXRoaXMuX2xhc3RSZW1haW5CdWZmZXIuc3ViYXJyYXkoMCxnLXRoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcyksbz1uZXcgVWludDhBcnJheShBLmJ5dGVMZW5ndGgrZS5ieXRlTGVuZ3RoKTtvLnNldChlLDApLG8uc2V0KG5ldyBVaW50OEFycmF5KEEpLGUuYnl0ZUxlbmd0aCksQT1vLGctPWUuYnl0ZUxlbmd0aCx0aGlzLl9sYXN0UmVtYWluQnVmZmVyPW51bGwsdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zPTA7YnJlYWt9Y2F0Y2goayl7aWYoIShpPDIwKSl0aHJvdyBuZXcgRXJyb3IoIm5ldyBVaW50OEFycmF5IGVycm9yOiwiK2suZXJyb3JNZXNzYWdlKTtpKyt9dmFyIHIsbixhLHM9dGhpcy52aWRlb1RyYWNrLGM9dGhpcy5hdWRpb1RyYWNrO3Muc2FtcGxlcz1bXSxjLnNhbXBsZXM9W10scy52aWRlb1NlbmM9bnVsbCxjLmF1ZGlvU2VuYz1udWxsO3ZhciBoPTAsZj0wO2lmKHRoaXMuX3ZpZGVvU2FtcGxlcy5sZW5ndGg+MCYmSS5sZW5ndGg+MCl7Zm9yKHZhciB1LHk9QS5ieXRlTGVuZ3RoK2csRD1JWzBdO0Q8PUlbMV07RCsrKXtpZighKHI9dGhpcy5fdmlkZW9TYW1wbGVzW0RdKSl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBmb3VuZCB2aWRlbyBmcmFtZSAjIi5jb25jYXQoRCkpO3Iub2Zmc2V0Pj1nJiZyLm9mZnNldCtyLnNpemU8PXkmJihoPShhPXIub2Zmc2V0LWcpK3Iuc2l6ZSxuPUEuc3ViYXJyYXkoYSxoKSwodT1uZXcgU2goci5wdHN8fHIuZHRzLHIuZHRzKSkuZHVyYXRpb249ci5kdXJhdGlvbix1LmdvcElkPXIuZ29wSWQsdS5zYW1wbGVPZmZzZXQ9ci5pbmRleCxyLmtleWZyYW1lJiZ1LnNldFRvS2V5ZnJhbWUoKSx1LmRhdGE9bix1LnNpemU9ci5zaXplLHMuc2FtcGxlcy5wdXNoKHUpKX1zLnNhbXBsZXMubGVuZ3RoPjAmJihzLmdvcElkPXMuc2FtcGxlc1swXS5nb3BJZCxzLmJhc2VNZWRpYURlY29kZVRpbWU9cy5zYW1wbGVzWzBdLmR0cyxzLnN0YXJ0UHRzPXMuc2FtcGxlc1swXS5wdHMvcy50aW1lc2NhbGUscy5lbmRQdHM9cy5zYW1wbGVzW3Muc2FtcGxlcy5sZW5ndGgtMV0ucHRzL3MudGltZXNjYWxlLHRoaXMudmlkZW9TZW5jJiYocy52aWRlb1NlbmM9dGhpcy52aWRlb1NlbmMuc2xpY2Uocy5zYW1wbGVzWzBdLnNhbXBsZU9mZnNldCxzLnNhbXBsZXNbMF0uc2FtcGxlT2Zmc2V0K3Muc2FtcGxlcy5sZW5ndGgpLHMua2lkVmFsdWU9QykpfWlmKHRoaXMuX2F1ZGlvU2FtcGxlcy5sZW5ndGg+MCYmQi5sZW5ndGg+MCl7Zm9yKHZhciBsPUJbMF07bDw9QlsxXTtsKyspe2lmKCEocj10aGlzLl9hdWRpb1NhbXBsZXNbbF0pKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGZvdW5kIHZpZGVvIGZyYW1lICMiLmNvbmNhdChsKSk7ci5vZmZzZXQ+PWcmJnIub2Zmc2V0K3Iuc2l6ZTw9QS5ieXRlTGVuZ3RoK2cmJihmPShhPXIub2Zmc2V0LWcpK3Iuc2l6ZSxuPUEuc3ViYXJyYXkoYSxmKSxjLnNhbXBsZXMucHVzaChuZXcgVWgoci5kdHMsbixyLmR1cmF0aW9uLHIuaW5kZXgpKSl9Yy5zYW1wbGVzLmxlbmd0aD4wJiYoYy5nb3BJZD1jLnNhbXBsZXNbMF0uZ29wSWR8fHMuZ29wSWQsYy5iYXNlTWVkaWFEZWNvZGVUaW1lPWMuc2FtcGxlc1swXS5kdHMsYy5zdGFydFB0cz1jLnNhbXBsZXNbMF0ucHRzL2MudGltZXNjYWxlLGMuZW5kUHRzPWMuc2FtcGxlc1tjLnNhbXBsZXMubGVuZ3RoLTFdLnB0cy9jLnRpbWVzY2FsZSx0aGlzLmF1ZGlvU2VuYyYmKGMuYXVkaW9TZW5jPXRoaXMuYXVkaW9TZW5jLnNsaWNlKGMuc2FtcGxlc1swXS5zYW1wbGVPZmZzZXQsYy5zYW1wbGVzWzBdLnNhbXBsZU9mZnNldCtjLnNhbXBsZXMubGVuZ3RoKSxjLmtpZFZhbHVlPUMpKX10aGlzLmRlY29kZXJEYXRhKHMsYyx0KTtmb3IodmFyIHc9MCxkPTA7ZDxzLnNhbXBsZXMubGVuZ3RoO2QrKylmb3IodmFyIEY9MCxSPXMuc2FtcGxlc1tkXS5kYXRhLEc9Ui5sZW5ndGgtMTtGPEc7KXc9eGgoUixGKSxGKz00LHMuc2FtcGxlc1tkXS51bml0cy5wdXNoKFIuc3ViYXJyYXkoRixGK3cpKSxGKz13O3JldHVybiB0aGlzLl9sYXN0UmVtYWluQnVmZmVyPUEuc3ViYXJyYXkoTWF0aC5tYXgoaCxmKSksdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlci5ieXRlTGVuZ3RoPjA/dGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zPWcrQS5ieXRlTGVuZ3RoLXRoaXMuX2xhc3RSZW1haW5CdWZmZXIuYnl0ZUxlbmd0aDp0aGlzLl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3M9MCx7dmlkZW9UcmFjazpzLGF1ZGlvVHJhY2s6YyxtZXRhZGF0YVRyYWNrOnRoaXMubWV0YWRhdGFUcmFja319fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl92aWRlb1NhbXBsZXM9W10sdGhpcy5fYXVkaW9TYW1wbGVzPVtdLHRoaXMuX2xhc3RSZW1haW5CdWZmZXI9bnVsbCx0aGlzLl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3M9MCx0aGlzLnZpZGVvVHJhY2sucmVzZXQoKSx0aGlzLmF1ZGlvVHJhY2sucmVzZXQoKSx0aGlzLm1ldGFkYXRhVHJhY2sucmVzZXQoKX19LHtrZXk6ImRlY29kZXJEYXRhIix2YWx1ZTpmdW5jdGlvbihBLGcsSSl7QS51c2VFTUV8fGcudXNlRU1FfHxmdS5kZWNvZGVyQUVTQ1RSRGF0YShBLGcsSSl9fV0sW3trZXk6InByb2JlIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gUGgucHJvYmUoQSl9fV0pLEF9KCkseXU9WEMuZmlsdGVyO29CKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IVlvKCJmaWx0ZXIiKX0se2ZpbHRlcjpmdW5jdGlvbihBKXtyZXR1cm4geXUodGhpcyxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgRHU9WEMubWFwO29CKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IVlvKCJtYXAiKX0se21hcDpmdW5jdGlvbihBKXtyZXR1cm4gRHUodGhpcyxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgbHU9aix3dT1WQSxkdT1rLEZ1PUJzLFJ1PXJzO3phKCJtYXRjaCIsMSwoZnVuY3Rpb24oQSxnLEkpe3JldHVybltmdW5jdGlvbihnKXt2YXIgST1kdSh0aGlzKSxCPW51bGw9PWc/dm9pZCAwOmdbQV07cmV0dXJuIHZvaWQgMCE9PUI/Qi5jYWxsKGcsSSk6bmV3IFJlZ0V4cChnKVtBXShTdHJpbmcoSSkpfSxmdW5jdGlvbihBKXt2YXIgQj1JKGcsQSx0aGlzKTtpZihCLmRvbmUpcmV0dXJuIEIudmFsdWU7dmFyIFE9bHUoQSksRT1TdHJpbmcodGhpcyk7aWYoIVEuZ2xvYmFsKXJldHVybiBSdShRLEUpO3ZhciBDPVEudW5pY29kZTtRLmxhc3RJbmRleD0wO2Zvcih2YXIgdCxpPVtdLGU9MDtudWxsIT09KHQ9UnUoUSxFKSk7KXt2YXIgbz1TdHJpbmcodFswXSk7aVtlXT1vLCIiPT09byYmKFEubGFzdEluZGV4PUZ1KEUsd3UoUS5sYXN0SW5kZXgpLEMpKSxlKyt9cmV0dXJuIDA9PT1lP251bGw6aX1dfSkpO3ZhciBHdT1hQSxrdT1zZztvQih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOmwoKGZ1bmN0aW9uKCl7a3UoMSl9KSl9LHtrZXlzOmZ1bmN0aW9uKEEpe3JldHVybiBrdShHdShBKSl9fSk7dmFyIHB1PXtleHBvcnRzOnt9fSxTdT0hbCgoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKX0pKSxVdT1FZyxNdT1MLE51PWhBLHZ1PUguZixZdT1TdSxIdT15QSgibWV0YSIpLEx1PTAsSnU9T2JqZWN0LmlzRXh0ZW5zaWJsZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0sS3U9ZnVuY3Rpb24oQSl7dnUoQSxIdSx7dmFsdWU6e29iamVjdElEOiJPIisgKytMdSx3ZWFrRGF0YTp7fX19KX0sbXU9cHUuZXhwb3J0cz17UkVRVUlSRUQ6ITEsZmFzdEtleTpmdW5jdGlvbihBLGcpe2lmKCFNdShBKSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIEE/QTooInN0cmluZyI9PXR5cGVvZiBBPyJTIjoiUCIpK0E7aWYoIU51KEEsSHUpKXtpZighSnUoQSkpcmV0dXJuIkYiO2lmKCFnKXJldHVybiJFIjtLdShBKX1yZXR1cm4gQVtIdV0ub2JqZWN0SUR9LGdldFdlYWtEYXRhOmZ1bmN0aW9uKEEsZyl7aWYoIU51KEEsSHUpKXtpZighSnUoQSkpcmV0dXJuITA7aWYoIWcpcmV0dXJuITE7S3UoQSl9cmV0dXJuIEFbSHVdLndlYWtEYXRhfSxvbkZyZWV6ZTpmdW5jdGlvbihBKXtyZXR1cm4gWXUmJm11LlJFUVVJUkVEJiZKdShBKSYmIU51KEEsSHUpJiZLdShBKSxBfX07VXVbSHVdPSEwO3ZhciB4dT1wdS5leHBvcnRzLHF1PW9CLGJ1PU4sVHU9SUIsanU9dkksT3U9eHUsWnU9RXIsUHU9ckUsV3U9TCxWdT1sLFh1PVJRLHp1PXBCLF91PVF0LCR1PUguZixBeT1IZyxneT1vRSxJeT1VQyxCeT1yRSxReT1FcixFeT1BUSxDeT1ndCx0eT1ZLGl5PXh1LmZhc3RLZXksZXk9b0kuc2V0LG95PW9JLmdldHRlckZvcixyeT17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24oQSxnLEksQil7dmFyIFE9QSgoZnVuY3Rpb24oQSxFKXtCeShBLFEsZyksZXkoQSx7dHlwZTpnLGluZGV4OkF5KG51bGwpLGZpcnN0OnZvaWQgMCxsYXN0OnZvaWQgMCxzaXplOjB9KSx0eXx8KEEuc2l6ZT0wKSxudWxsIT1FJiZReShFLEFbQl0se3RoYXQ6QSxBU19FTlRSSUVTOkl9KX0pKSxFPW95KGcpLEM9ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFEsQz1FKEEpLGk9dChBLGcpO3JldHVybiBpP2kudmFsdWU9STooQy5sYXN0PWk9e2luZGV4OlE9aXkoZywhMCksa2V5OmcsdmFsdWU6SSxwcmV2aW91czpCPUMubGFzdCxuZXh0OnZvaWQgMCxyZW1vdmVkOiExfSxDLmZpcnN0fHwoQy5maXJzdD1pKSxCJiYoQi5uZXh0PWkpLHR5P0Muc2l6ZSsrOkEuc2l6ZSsrLCJGIiE9PVEmJihDLmluZGV4W1FdPWkpKSxBfSx0PWZ1bmN0aW9uKEEsZyl7dmFyIEksQj1FKEEpLFE9aXkoZyk7aWYoIkYiIT09USlyZXR1cm4gQi5pbmRleFtRXTtmb3IoST1CLmZpcnN0O0k7ST1JLm5leHQpaWYoSS5rZXk9PWcpcmV0dXJuIEl9O3JldHVybiBneShRLnByb3RvdHlwZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIEE9RSh0aGlzKSxnPUEuaW5kZXgsST1BLmZpcnN0O0k7KUkucmVtb3ZlZD0hMCxJLnByZXZpb3VzJiYoSS5wcmV2aW91cz1JLnByZXZpb3VzLm5leHQ9dm9pZCAwKSxkZWxldGUgZ1tJLmluZGV4XSxJPUkubmV4dDtBLmZpcnN0PUEubGFzdD12b2lkIDAsdHk/QS5zaXplPTA6dGhpcy5zaXplPTB9LGRlbGV0ZTpmdW5jdGlvbihBKXt2YXIgZz10aGlzLEk9RShnKSxCPXQoZyxBKTtpZihCKXt2YXIgUT1CLm5leHQsQz1CLnByZXZpb3VzO2RlbGV0ZSBJLmluZGV4W0IuaW5kZXhdLEIucmVtb3ZlZD0hMCxDJiYoQy5uZXh0PVEpLFEmJihRLnByZXZpb3VzPUMpLEkuZmlyc3Q9PUImJihJLmZpcnN0PVEpLEkubGFzdD09QiYmKEkubGFzdD1DKSx0eT9JLnNpemUtLTpnLnNpemUtLX1yZXR1cm4hIUJ9LGZvckVhY2g6ZnVuY3Rpb24oQSl7Zm9yKHZhciBnLEk9RSh0aGlzKSxCPUl5KEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsMyk7Zz1nP2cubmV4dDpJLmZpcnN0Oylmb3IoQihnLnZhbHVlLGcua2V5LHRoaXMpO2cmJmcucmVtb3ZlZDspZz1nLnByZXZpb3VzfSxoYXM6ZnVuY3Rpb24oQSl7cmV0dXJuISF0KHRoaXMsQSl9fSksZ3koUS5wcm90b3R5cGUsST97Z2V0OmZ1bmN0aW9uKEEpe3ZhciBnPXQodGhpcyxBKTtyZXR1cm4gZyYmZy52YWx1ZX0sc2V0OmZ1bmN0aW9uKEEsZyl7cmV0dXJuIEModGhpcywwPT09QT8wOkEsZyl9fTp7YWRkOmZ1bmN0aW9uKEEpe3JldHVybiBDKHRoaXMsQT0wPT09QT8wOkEsQSl9fSksdHkmJiR1KFEucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcykuc2l6ZX19KSxRfSxzZXRTdHJvbmc6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCPWcrIiBJdGVyYXRvciIsUT1veShnKSxFPW95KEIpO0V5KEEsZywoZnVuY3Rpb24oQSxnKXtleSh0aGlzLHt0eXBlOkIsdGFyZ2V0OkEsc3RhdGU6UShBKSxraW5kOmcsbGFzdDp2b2lkIDB9KX0pLChmdW5jdGlvbigpe2Zvcih2YXIgQT1FKHRoaXMpLGc9QS5raW5kLEk9QS5sYXN0O0kmJkkucmVtb3ZlZDspST1JLnByZXZpb3VzO3JldHVybiBBLnRhcmdldCYmKEEubGFzdD1JPUk/SS5uZXh0OkEuc3RhdGUuZmlyc3QpPyJrZXlzIj09Zz97dmFsdWU6SS5rZXksZG9uZTohMX06InZhbHVlcyI9PWc/e3ZhbHVlOkkudmFsdWUsZG9uZTohMX06e3ZhbHVlOltJLmtleSxJLnZhbHVlXSxkb25lOiExfTooQS50YXJnZXQ9dm9pZCAwLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pfSksST8iZW50cmllcyI6InZhbHVlcyIsIUksITApLEN5KGcpfX07KGZ1bmN0aW9uKEEsZyxJKXt2YXIgQj0tMSE9PUEuaW5kZXhPZigiTWFwIiksUT0tMSE9PUEuaW5kZXhPZigiV2VhayIpLEU9Qj8ic2V0IjoiYWRkIixDPWJ1W0FdLHQ9QyYmQy5wcm90b3R5cGUsaT1DLGU9e30sbz1mdW5jdGlvbihBKXt2YXIgZz10W0FdO2p1KHQsQSwiYWRkIj09QT9mdW5jdGlvbihBKXtyZXR1cm4gZy5jYWxsKHRoaXMsMD09PUE/MDpBKSx0aGlzfToiZGVsZXRlIj09QT9mdW5jdGlvbihBKXtyZXR1cm4hKFEmJiFXdShBKSkmJmcuY2FsbCh0aGlzLDA9PT1BPzA6QSl9OiJnZXQiPT1BP2Z1bmN0aW9uKEEpe3JldHVybiBRJiYhV3UoQSk/dm9pZCAwOmcuY2FsbCh0aGlzLDA9PT1BPzA6QSl9OiJoYXMiPT1BP2Z1bmN0aW9uKEEpe3JldHVybiEoUSYmIVd1KEEpKSYmZy5jYWxsKHRoaXMsMD09PUE/MDpBKX06ZnVuY3Rpb24oQSxJKXtyZXR1cm4gZy5jYWxsKHRoaXMsMD09PUE/MDpBLEkpLHRoaXN9KX07aWYoVHUoQSwiZnVuY3Rpb24iIT10eXBlb2YgQ3x8IShRfHx0LmZvckVhY2gmJiFWdSgoZnVuY3Rpb24oKXsobmV3IEMpLmVudHJpZXMoKS5uZXh0KCl9KSkpKSlpPUkuZ2V0Q29uc3RydWN0b3IoZyxBLEIsRSksT3UuUkVRVUlSRUQ9ITA7ZWxzZSBpZihUdShBLCEwKSl7dmFyIHI9bmV3IGksbj1yW0VdKFE/e306LTAsMSkhPXIsYT1WdSgoZnVuY3Rpb24oKXtyLmhhcygxKX0pKSxzPVh1KChmdW5jdGlvbihBKXtuZXcgQyhBKX0pKSxjPSFRJiZWdSgoZnVuY3Rpb24oKXtmb3IodmFyIEE9bmV3IEMsZz01O2ctLTspQVtFXShnLGcpO3JldHVybiFBLmhhcygtMCl9KSk7c3x8KChpPWcoKGZ1bmN0aW9uKGcsSSl7UHUoZyxpLEEpO3ZhciBRPV91KG5ldyBDLGcsaSk7cmV0dXJuIG51bGwhPUkmJlp1KEksUVtFXSx7dGhhdDpRLEFTX0VOVFJJRVM6Qn0pLFF9KSkpLnByb3RvdHlwZT10LHQuY29uc3RydWN0b3I9aSksKGF8fGMpJiYobygiZGVsZXRlIiksbygiaGFzIiksQiYmbygiZ2V0IikpLChjfHxuKSYmbyhFKSxRJiZ0LmNsZWFyJiZkZWxldGUgdC5jbGVhcn1lW0FdPWkscXUoe2dsb2JhbDohMCxmb3JjZWQ6aSE9Q30sZSksenUoaSxBKSxRfHxJLnNldFN0cm9uZyhpLEEsQil9KSgiTWFwIiwoZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0pLHJ5KTt2YXIgbnk9Z3MuY2hhckF0LGF5PW9JLHN5PUFRLGN5PSJTdHJpbmcgSXRlcmF0b3IiLGh5PWF5LnNldCxmeT1heS5nZXR0ZXJGb3IoY3kpO3N5KFN0cmluZywiU3RyaW5nIiwoZnVuY3Rpb24oQSl7aHkodGhpcyx7dHlwZTpjeSxzdHJpbmc6U3RyaW5nKEEpLGluZGV4OjB9KX0pLChmdW5jdGlvbigpe3ZhciBBLGc9ZnkodGhpcyksST1nLnN0cmluZyxCPWcuaW5kZXg7cmV0dXJuIEI+PUkubGVuZ3RoP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06KEE9bnkoSSxCKSxnLmluZGV4Kz1BLmxlbmd0aCx7dmFsdWU6QSxkb25lOiExfSl9KSk7dmFyIHV5PWoseXk9cEMsRHk9ZnVuY3Rpb24oKXtmb3IodmFyIEEsZz11eSh0aGlzKSxJPXl5KGcuZGVsZXRlKSxCPSEwLFE9MCxFPWFyZ3VtZW50cy5sZW5ndGg7UTxFO1ErKylBPUkuY2FsbChnLGFyZ3VtZW50c1tRXSksQj1CJiZBO3JldHVybiEhQn07b0Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se2RlbGV0ZUFsbDpmdW5jdGlvbigpe3JldHVybiBEeS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSk7dmFyIGx5PWZ1bmN0aW9uKEEpe3JldHVybiBNYXAucHJvdG90eXBlLmVudHJpZXMuY2FsbChBKX0sd3k9aixkeT1VQyxGeT1seSxSeT1FcjtvQih7dGFyZ2V0OiJNYXAiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmZhbHNlfSx7ZXZlcnk6ZnVuY3Rpb24oQSl7dmFyIGc9d3kodGhpcyksST1GeShnKSxCPWR5KEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsMyk7cmV0dXJuIVJ5KEksKGZ1bmN0aW9uKEEsSSxRKXtpZighQihJLEEsZykpcmV0dXJuIFEoKX0pLHtBU19FTlRSSUVTOiEwLElTX0lURVJBVE9SOiEwLElOVEVSUlVQVEVEOiEwfSkuc3RvcHBlZH19KTt2YXIgR3k9ZEEsa3k9aixweT1wQyxTeT1VQyxVeT1haSxNeT1seSxOeT1FcjtvQih7dGFyZ2V0OiJNYXAiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmZhbHNlfSx7ZmlsdGVyOmZ1bmN0aW9uKEEpe3ZhciBnPWt5KHRoaXMpLEk9TXkoZyksQj1TeShBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpLFE9bmV3KFV5KGcsR3koIk1hcCIpKSksRT1weShRLnNldCk7cmV0dXJuIE55KEksKGZ1bmN0aW9uKEEsSSl7QihJLEEsZykmJkUuY2FsbChRLEEsSSl9KSx7QVNfRU5UUklFUzohMCxJU19JVEVSQVRPUjohMH0pLFF9fSk7dmFyIHZ5PWosWXk9VUMsSHk9bHksTHk9RXI7b0Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se2ZpbmQ6ZnVuY3Rpb24oQSl7dmFyIGc9dnkodGhpcyksST1IeShnKSxCPVl5KEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsMyk7cmV0dXJuIEx5KEksKGZ1bmN0aW9uKEEsSSxRKXtpZihCKEksQSxnKSlyZXR1cm4gUShJKX0pLHtBU19FTlRSSUVTOiEwLElTX0lURVJBVE9SOiEwLElOVEVSUlVQVEVEOiEwfSkucmVzdWx0fX0pO3ZhciBKeT1qLEt5PVVDLG15PWx5LHh5PUVyO29CKHt0YXJnZXQ6Ik1hcCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6ZmFsc2V9LHtmaW5kS2V5OmZ1bmN0aW9uKEEpe3ZhciBnPUp5KHRoaXMpLEk9bXkoZyksQj1LeShBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpO3JldHVybiB4eShJLChmdW5jdGlvbihBLEksUSl7aWYoQihJLEEsZykpcmV0dXJuIFEoQSl9KSx7QVNfRU5UUklFUzohMCxJU19JVEVSQVRPUjohMCxJTlRFUlJVUFRFRDohMH0pLnJlc3VsdH19KTt2YXIgcXk9aixieT1seSxUeT1mdW5jdGlvbihBLGcpe3JldHVybiBBPT09Z3x8QSE9QSYmZyE9Z30sank9RXI7b0Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se2luY2x1ZGVzOmZ1bmN0aW9uKEEpe3JldHVybiBqeShieShxeSh0aGlzKSksKGZ1bmN0aW9uKGcsSSxCKXtpZihUeShJLEEpKXJldHVybiBCKCl9KSx7QVNfRU5UUklFUzohMCxJU19JVEVSQVRPUjohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSk7dmFyIE95PWosWnk9bHksUHk9RXI7b0Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se2tleU9mOmZ1bmN0aW9uKEEpe3JldHVybiBQeShaeShPeSh0aGlzKSksKGZ1bmN0aW9uKGcsSSxCKXtpZihJPT09QSlyZXR1cm4gQihnKX0pLHtBU19FTlRSSUVTOiEwLElTX0lURVJBVE9SOiEwLElOVEVSUlVQVEVEOiEwfSkucmVzdWx0fX0pO3ZhciBXeT1kQSxWeT1qLFh5PXBDLHp5PVVDLF95PWFpLCR5PWx5LEFEPUVyO29CKHt0YXJnZXQ6Ik1hcCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6ZmFsc2V9LHttYXBLZXlzOmZ1bmN0aW9uKEEpe3ZhciBnPVZ5KHRoaXMpLEk9JHkoZyksQj16eShBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpLFE9bmV3KF95KGcsV3koIk1hcCIpKSksRT1YeShRLnNldCk7cmV0dXJuIEFEKEksKGZ1bmN0aW9uKEEsSSl7RS5jYWxsKFEsQihJLEEsZyksSSl9KSx7QVNfRU5UUklFUzohMCxJU19JVEVSQVRPUjohMH0pLFF9fSk7dmFyIGdEPWRBLElEPWosQkQ9cEMsUUQ9VUMsRUQ9YWksQ0Q9bHksdEQ9RXI7b0Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se21hcFZhbHVlczpmdW5jdGlvbihBKXt2YXIgZz1JRCh0aGlzKSxJPUNEKGcpLEI9UUQoQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKSxRPW5ldyhFRChnLGdEKCJNYXAiKSkpLEU9QkQoUS5zZXQpO3JldHVybiB0RChJLChmdW5jdGlvbihBLEkpe0UuY2FsbChRLEEsQihJLEEsZykpfSkse0FTX0VOVFJJRVM6ITAsSVNfSVRFUkFUT1I6ITB9KSxRfX0pO3ZhciBpRD1qLGVEPXBDLG9EPUVyO29CKHt0YXJnZXQ6Ik1hcCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6ZmFsc2V9LHttZXJnZTpmdW5jdGlvbihBKXtmb3IodmFyIGc9aUQodGhpcyksST1lRChnLnNldCksQj0wO0I8YXJndW1lbnRzLmxlbmd0aDspb0QoYXJndW1lbnRzW0IrK10sSSx7dGhhdDpnLEFTX0VOVFJJRVM6ITB9KTtyZXR1cm4gZ319KTt2YXIgckQ9aixuRD1wQyxhRD1seSxzRD1FcjtvQih7dGFyZ2V0OiJNYXAiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmZhbHNlfSx7cmVkdWNlOmZ1bmN0aW9uKEEpe3ZhciBnPXJEKHRoaXMpLEk9YUQoZyksQj1hcmd1bWVudHMubGVuZ3RoPDIsUT1CP3ZvaWQgMDphcmd1bWVudHNbMV07aWYobkQoQSksc0QoSSwoZnVuY3Rpb24oSSxFKXtCPyhCPSExLFE9RSk6UT1BKFEsRSxJLGcpfSkse0FTX0VOVFJJRVM6ITAsSVNfSVRFUkFUT1I6ITB9KSxCKXRocm93IFR5cGVFcnJvcigiUmVkdWNlIG9mIGVtcHR5IG1hcCB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTtyZXR1cm4gUX19KTt2YXIgY0Q9aixoRD1VQyxmRD1seSx1RD1FcjtvQih7dGFyZ2V0OiJNYXAiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmZhbHNlfSx7c29tZTpmdW5jdGlvbihBKXt2YXIgZz1jRCh0aGlzKSxJPWZEKGcpLEI9aEQoQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKTtyZXR1cm4gdUQoSSwoZnVuY3Rpb24oQSxJLFEpe2lmKEIoSSxBLGcpKXJldHVybiBRKCl9KSx7QVNfRU5UUklFUzohMCxJU19JVEVSQVRPUjohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSk7dmFyIHlEPWosREQ9cEM7b0Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se3VwZGF0ZTpmdW5jdGlvbihBLGcpe3ZhciBJPXlEKHRoaXMpLEI9YXJndW1lbnRzLmxlbmd0aDtERChnKTt2YXIgUT1JLmhhcyhBKTtpZighUSYmQjwzKXRocm93IFR5cGVFcnJvcigiVXBkYXRpbmcgYWJzZW50IHZhbHVlIik7dmFyIEU9UT9JLmdldChBKTpERChCPjI/YXJndW1lbnRzWzJdOnZvaWQgMCkoQSxJKTtyZXR1cm4gSS5zZXQoQSxnKEUsQSxJKSksSX19KTt2YXIgbEQ9Tix3RD1xcyxkRD1lUSxGRD1nQSxSRD1UQSxHRD1SRCgiaXRlcmF0b3IiKSxrRD1SRCgidG9TdHJpbmdUYWciKSxwRD1kRC52YWx1ZXM7Zm9yKHZhciBTRCBpbiB3RCl7dmFyIFVEPWxEW1NEXSxNRD1VRCYmVUQucHJvdG90eXBlO2lmKE1EKXtpZihNRFtHRF0hPT1wRCl0cnl7RkQoTUQsR0QscEQpfWNhdGNoKFlEKXtNRFtHRF09cER9aWYoTURba0RdfHxGRChNRCxrRCxTRCksd0RbU0RdKWZvcih2YXIgTkQgaW4gZEQpaWYoTURbTkRdIT09ZERbTkRdKXRyeXtGRChNRCxORCxkRFtORF0pfWNhdGNoKFlEKXtNRFtORF09ZERbTkRdfX19dmFyIHZEPXt9O3ZELmZpbmRCb3g9ZnVuY3Rpb24oQSxnKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06W107aWYoQS50eXBlIT09Zyl7aWYoQSYmQS5zdWJCb3gpe3ZhciBCPUEuc3ViQm94LmZpbHRlcigoZnVuY3Rpb24oQSl7cmV0dXJuIEEudHlwZT09PWd9KSk7Qi5sZW5ndGg/Qi5mb3JFYWNoKChmdW5jdGlvbihBKXtyZXR1cm4gSS5wdXNoKEEpfSkpOkEuc3ViQm94LmZvckVhY2goKGZ1bmN0aW9uKEEpe3JldHVybiB2RC5maW5kQm94KEEsZyxJKX0pKX19ZWxzZSBJLnB1c2goQSk7cmV0dXJuKEk9W10uY29uY2F0KEkpKS5sZW5ndGg+MT9JOklbMF19LHZELnBhZFN0YXJ0PWZ1bmN0aW9uKEEsZyxJKXtmb3IodmFyIEI9U3RyaW5nKEkpLFE9Zz4+MCxFPU1hdGguY2VpbChRL0IubGVuZ3RoKSxDPVtdLHQ9U3RyaW5nKEEpO0UtLTspQy5wdXNoKEIpO3JldHVybiBDLmpvaW4oIiIpLnN1YnN0cmluZygwLFEtdC5sZW5ndGgpK3R9LHZELnRvSGV4PWZ1bmN0aW9uKCl7Zm9yKHZhciBBPVtdLGc9YXJndW1lbnRzLmxlbmd0aCxJPW5ldyBBcnJheShnKSxCPTA7QjxnO0IrKylJW0JdPWFyZ3VtZW50c1tCXTtyZXR1cm4gSS5mb3JFYWNoKChmdW5jdGlvbihnKXtBLnB1c2godkQucGFkU3RhcnQoTnVtYmVyKGcpLnRvU3RyaW5nKDE2KSwyLDApKX0pKSxBfSx2RC5zdW09ZnVuY3Rpb24oKXtmb3IodmFyIEE9MCxnPWFyZ3VtZW50cy5sZW5ndGgsST1uZXcgQXJyYXkoZyksQj0wO0I8ZztCKyspSVtCXT1hcmd1bWVudHNbQl07cmV0dXJuIEkuZm9yRWFjaCgoZnVuY3Rpb24oZyl7QSs9Z30pKSxBfSx2RC5TdHJpbmdUb0FycmF5QnVmZmVyPWZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1uZXcgQXJyYXlCdWZmZXIoQS5sZW5ndGgpLEk9bmV3IFVpbnQ4QXJyYXkoZyksQj0wO0I8QS5sZW5ndGg7QisrKUlbQl09QS5jaGFyQ29kZUF0KEIpO3JldHVybiBnfSx2RC5mcm9tSGV4PWZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1uZXcgVWludDhBcnJheShBLmxlbmd0aC8yKSxJPTA7STxBLmxlbmd0aDtJKz0yKWdbSS8yXT13aW5kb3cucGFyc2VJbnQoQS5zdWJzdHIoSSwyKSwxNik7cmV0dXJuIGd9LHZELmZyb21DaGFyQ29kZT1mdW5jdGlvbihBKXtmb3IodmFyIGc9IiIsST0wO0k8QS5sZW5ndGg7SSs9MTZlMyl7dmFyIEI9QS5zdWJhcnJheShJLEkrMTZlMyk7Zys9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLEIpfXJldHVybiBnfSx2RC5BcnJheUJ1ZmZlclRvU3RyaW5nPWZ1bmN0aW9uKEEpe2Zvcih2YXIgZz0iIixJPW5ldyBVaW50OEFycmF5KEEpLEI9MDtCPEkubGVuZ3RoO0IrKylnKz1TdHJpbmcuZnJvbUNoYXJDb2RlKElbQl0pO3JldHVybiBnfSx2RC5mb3JtYXRJVj1mdW5jdGlvbihBKXt2YXIgZz0iIjtpZihBLmZvckVhY2goKGZ1bmN0aW9uKEEpe2crPWZ1bmN0aW9uKEEpe3JldHVybiIwIi5jb25jYXQoTnVtYmVyKEEpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpLnRvVXBwZXJDYXNlKCl9KEEpfSkpLGcubGVuZ3RoPD0zMilmb3IodmFyIEk9MzItZy5sZW5ndGgsQj0wO0I8STtCKyspZys9IjAiO3JldHVybiBnfSx2RC5CYXNlNjRUb0hleD1mdW5jdGlvbihBKXtmb3IodmFyIGc9d2luZG93LmF0b2IoQS5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKSksST0iIixCPTA7QjxnLmxlbmd0aDtCKyspSSs9IjAiLmNvbmNhdChnLmNoYXJDb2RlQXQoQikudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTIpO3JldHVybiBJfSx2RC50b0Jhc2U2ND1mdW5jdGlvbihBLGcpe3ZhciBJPXZELmZyb21DaGFyQ29kZShBKTtnPXZvaWQgMD09PWd8fGc7dmFyIEI9d2luZG93LmJ0b2EoSSkucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKTtyZXR1cm4gZz9COkIucmVwbGFjZSgvPSokLywiIil9LHZELnRvVVRGOD1mdW5jdGlvbihBKXtmb3IodmFyIGc9ZW5jb2RlVVJJQ29tcG9uZW50KEEpLEk9dW5lc2NhcGUoZyksQj1uZXcgVWludDhBcnJheShJLmxlbmd0aCksUT0wO1E8SS5sZW5ndGg7KytRKUJbUV09SS5jaGFyQ29kZUF0KFEpO3JldHVybiBCLmJ1ZmZlcn0sdkQuc3RyVG9CdWY9ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPVtdLEk9MDtJPEEubGVuZ3RoO0krPTIpZy5wdXNoKHBhcnNlSW50KEFbSV0rQVtJKzFdLDE2KSk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGcpfSx2RC5mb3JtYXRJVj1mdW5jdGlvbihBKXtpZihBLmxlbmd0aD49MTYpcmV0dXJuIEE7Zm9yKHZhciBnPW5ldyBVaW50OEFycmF5KDE2KSxJPTA7STxnLmxlbmd0aDtJKyspZ1tJXT1JPEEubGVuZ3RoP0FbSV06MDtyZXR1cm4gZ30sdkQuc3RyMmhleD1mdW5jdGlvbihBKXtpZigiIj09PUEpcmV0dXJuIiI7Zm9yKHZhciBnPVtdLEk9MDtJPEEubGVuZ3RoO0krKylnLnB1c2goQS5jaGFyQ29kZUF0KEkpKTtyZXR1cm4gZ30sdkQucGFyc2U9ZnVuY3Rpb24oQSl7aWYoIUFycmF5LmlzQXJyYXkoQSkpe2Zvcih2YXIgZz1bXSxJPSIiLEI9MDtCPEEubGVuZ3RoO0IrKylCJTImJihJPUFbQi0xXStBW0JdLGcucHVzaChwYXJzZUludChJLDE2KSksST0iIik7cmV0dXJuIGd9cmV0dXJuIEEubWFwKChmdW5jdGlvbihBKXtyZXR1cm4gcGFyc2VJbnQoQSwxNil9KSl9LHZELmdlbmVyYXRlVW5pcXVlS2V5PWZ1bmN0aW9uKEEpe3ZhciBnPUEudmlkO0Euc3RhcnQsQS5lbmQ7dmFyIEk9QS5tZWRpYVR5cGUsQj1BLmRlZmluaXRpb247cmV0dXJuIEEucHJlbG9hZFRpbWUsST1JfHwidmlkZW8iLEI9Qnx8LTEsZz8iIi5jb25jYXQoZywiIyIpLmNvbmNhdChJLCIjIikuY29uY2F0KEIsIiNtcDQiKTpudWxsfSx2RC52YWxpZGF0ZUZyYWdtZW50PWZ1bmN0aW9uKEEpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXTtpZihBIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3RyeXtpZigyPT09Zy5sZW5ndGgpe3ZhciBJPWdbMV0tZ1swXSsxO2lmKCEoQS5ieXRlTGVuZ3RoPT09SSkpcmV0dXJufX1jYXRjaChCKXtyZXR1cm4gY29uc29sZS5lcnJvcihCKSwhMX1yZXR1cm4hMH1yZXR1cm4hMX0sdkQudHlwZU9mPWZ1bmN0aW9uKEEpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoQSkubWF0Y2goLyhbXlxzLipdKykoPz1dJCkvZylbMF19LHZELmdldEJ1ZmZlclNwbGl0cz1mdW5jdGlvbihBLGcpe3ZhciBJPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTo1ZTU7aWYoZy1BLUk8SS8yfHwhZylyZXR1cm5bW0EsZ11dO2Zvcih2YXIgQj1bXTtBPGc7KXt2YXIgUT1BK0k7KFE+Z3x8Zy1RPEkvMikmJihRPWcpLEIucHVzaChbQSxRXSksQT1RKzF9cmV0dXJuIEJ9LHZELm5vd1RpbWU9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHBhcnNlSW50KHBlcmZvcm1hbmNlLm5vdygpLDEwKX1jYXRjaChBKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX19LHZELmV4dFVybD1mdW5jdGlvbihBLGcpe3RyeXt2YXIgST1BLmluZGV4T2YoIj8iKTtyZXR1cm4gSTwwP09iamVjdC5rZXlzKGcpLmZvckVhY2goKGZ1bmN0aW9uKEksQil7QSs9MD09PUI/Ij8iLmNvbmNhdChJLCI9IikuY29uY2F0KGdbSV0pOiImIi5jb25jYXQoSSwiPSIpLmNvbmNhdChnW0ldKX0pKTpPYmplY3Qua2V5cyhnKS5mb3JFYWNoKChmdW5jdGlvbihCKXtJPT09QS5sZW5ndGgtMT9BKz0iIi5jb25jYXQoQiwiPSIpLmNvbmNhdChnW0JdKTpBKz0iJiIuY29uY2F0KEIsIj0iKS5jb25jYXQoZ1tCXSl9KSksQX1jYXRjaChCKXtyZXR1cm4gQX19LHZELmRlZXBNZXJnZT1mdW5jdGlvbihBLGcpe3JldHVybiBPYmplY3Qua2V5cyhnKS5mb3JFYWNoKChmdW5jdGlvbihJKXt2YXIgQixRPXZELnR5cGVPZihnW0ldKSxFPXZELnR5cGVPZihBW0ldKTsiQXJyYXkiPT09UT8oIkFycmF5IiE9PUUmJihBW0ldPVtdKSwoQj1BW0ldKS5wdXNoLmFwcGx5KEIsZihnW0ldKSkpOiJPYmplY3QiPT09UT8oIk9iamVjdCIhPT1FJiYoQVtJXT17fSksdkQuZGVlcE1lcmdlKEFbSV0sZ1tJXSkpOkFbSV09Z1tJXX0pKSxBfSx2RC5nZXRGaWxlU2l6ZT1mdW5jdGlvbihBLGcpe3RyeXtyZXR1cm4gQSYmZz9wYXJzZUludChnKkEvOCwxMCk6MH1jYXRjaChJKXtyZXR1cm4gMH19LHZELmhhc2hWYWw9ZnVuY3Rpb24oQSl7dmFyIGcsST0wO2lmKDA9PT1BLmxlbmd0aClyZXR1cm4gSTtmb3IoZz0wO2c8QS5sZW5ndGg7ZysrKUk9KEk8PDUpLUkrQS5jaGFyQ29kZUF0KGcpLEl8PTA7cmV0dXJuIEl9LHZELkFycmF5Q29weT1mdW5jdGlvbihBKXt2YXIgZz1bXTtpZighQXx8IUEubGVuZ3RofHwwPT09QS5sZW5ndGgpcmV0dXJuIGc7Zm9yKHZhciBJPTA7STxBLmxlbmd0aDtJKyspe3ZhciBCPUFbSV0sUT17fTtmb3IodmFyIEUgaW4gQilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQixFKSYmKFFbRV09QltFXSk7Zy5wdXNoKFEpfXJldHVybiBnfSx2RC5nZXRGaWxlU2l6ZT1mdW5jdGlvbihBLGcpe3RyeXtyZXR1cm4gQSYmZz9wYXJzZUludChnKkEvOCwxMCk6MH1jYXRjaChJKXtyZXR1cm4gMH19LHZELmNvbmNhdERhdGE9ZnVuY3Rpb24oQSxnKXt2YXIgST1bXSxCPTA7QSYmSS5wdXNoKEEpLGcmJkkucHVzaChnKSxJLmV2ZXJ5KChmdW5jdGlvbihBKXtyZXR1cm4gQSYmKEIrPUEuYnl0ZUxlbmd0aCksITB9KSk7dmFyIFE9bmV3IFVpbnQ4QXJyYXkoQiksRT0wO3JldHVybiBJLmV2ZXJ5KChmdW5jdGlvbihBKXtyZXR1cm4gQSYmKFEuc2V0KEEsRSksRSs9QS5ieXRlTGVuZ3RoKSwhMH0pKSxRfSx2RC5nZXRGcmFnUmFuZ2U9ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFEsRSxDLHQ9bnVsbCxpPW51bGw7cmV0dXJuIHQ9QTxnLmxlbmd0aC0xP2dbQV06Z1tnLmxlbmd0aC0xXSxpPUE8SS5sZW5ndGgtMT9JW0FdOklbSS5sZW5ndGgtMV0sW01hdGgubWluKChudWxsPT09KEI9dCl8fHZvaWQgMD09PUI/dm9pZCAwOkIucmFuZ2VbMF0pfHwxLzAsKG51bGw9PT0oUT1pKXx8dm9pZCAwPT09UT92b2lkIDA6US5yYW5nZVswXSl8fDEvMCksTWF0aC5tYXgobnVsbD09PShFPXQpfHx2b2lkIDA9PT1FP3ZvaWQgMDpFLnJhbmdlWzFdLG51bGw9PT0oQz1pKXx8dm9pZCAwPT09Qz92b2lkIDA6Qy5yYW5nZVsxXSldfSx2RC5nZXRIb3N0RnJvbVVybD1mdW5jdGlvbihBKXtpZigiU3RyaW5nIiE9PXZELnR5cGVPZihBKXx8IUEpcmV0dXJuIiI7dmFyIGc9QS5zcGxpdCgiLyIpLEk9IiI7cmV0dXJuIGcubGVuZ3RoPjMmJmdbMl0mJihJPWdbMl0pLEl9LHZELmNoZWNrVXJsSXNFeHBpcmVkPWZ1bmN0aW9uKEEpe2lmKCFBfHwiU3RyaW5nIiE9PXZELnR5cGVPZihBKSlyZXR1cm4gMDt2YXIgZz0wO3RyeXt2YXIgST1uZXcgUmVnRXhwKCIoXFw/fCYpeC10b3MtZXhwaXJlcz0oW14mXSopKCZ8JCkiKSxCPUEubWF0Y2goSSk7aWYobnVsbCE9PUIpZz1wYXJzZUludChCWzJdLDEwKTtlbHNle3ZhciBRPUEuc3BsaXQoIi8iKTtRLmxlbmd0aD41JiY4PT09UVs0XS5sZW5ndGgmJihnPXBhcnNlSW50KFFbNF0sMTYpKX1yZXR1cm4gZz4wP2c8cGFyc2VJbnQoKG5ldyBEYXRlKS5nZXRUaW1lKCkvMWUzLDEwKT8xOjI6MH1jYXRjaChFKXtyZXR1cm4gMH19LHZELm5ld1VpbnQ4QXJycmF5PWZ1bmN0aW9uKEEpe2Zvcih2YXIgZyxJPTA7STwxMDspdHJ5e2lmKChnPW5ldyBVaW50OEFycmF5KEEpKSYmZy5ieXRlTGVuZ3RoPjApYnJlYWs7SSsrfWNhdGNoKEIpe0k8MTA/SSsrOmNvbnNvbGUuZXJyb3IoInJlcGVhdCBkYXRhIGNhY2hlICBuZXcgYXJyYXkgZmFpbGVkIGZpbmFsIiwxMCl9cmV0dXJuIGd9LG9ubWVzc2FnZT1mdW5jdGlvbigpe3ZhciBBLEI9KEE9SSgpLm1hcmsoKGZ1bmN0aW9uIEEoQil7dmFyIFEsRSxDLHQsaSxlLG8scixuLGEscyxjLGgsZix1LHksRCxsLHcsZCxGLFIsRyxrLHAsUyxVLE09dGhpcztyZXR1cm4gSSgpLndyYXAoKGZ1bmN0aW9uKEEpe2Zvcig7Oylzd2l0Y2goQS5wcmV2PUEubmV4dCl7Y2FzZSAwOlE9Qi5kYXRhLEEudDA9US5tZXRob2QsQS5uZXh0PSJpbml0Ij09PUEudDA/NDoidXBkYXRlVmFsdWUiPT09QS50MD8xMjoidHJhbnNtdXgiPT09QS50MD8xNzoicmVzZXQiPT09QS50MD80MToiZGVzdHJveSI9PT1BLnQwPzQ3OjQ5O2JyZWFrO2Nhc2UgNDpyZXR1cm4gdGhpcy5jb2RlY1R5cGU9US5hcmdzLmNvZGVjVHlwZSx0aGlzLm9wZW5sb2c9US5hcmdzLm9wZW5Mb2csdGhpcy5NUDREZW11eGVyPW51bGwsdGhpcy5GTVA0UmVtdXhlcj1udWxsLHRoaXMuX25lZWRJbml0U2VnbWVudD0hMCx0aGlzLnN1cHBvcnRIZXZjPVEuYXJncy5zdXBwb3J0SGV2Yyx0aGlzLmF3TWFuYWdlcj1udWxsLEEuYWJydXB0KCJicmVhayIsNDkpO2Nhc2UgMTI6cmV0dXJuIHQ9bnVsbD09PShFPUIuZGF0YSl8fHZvaWQgMD09PUV8fG51bGw9PT0oQz1FLmFyZ3MpfHx2b2lkIDA9PT1DP3ZvaWQgMDpDLnZhbHVlLHRoaXMuYXdNYW5hZ2VyPW5ldyBpaCxzZWxmLnA9dGhpcy5hd01hbmFnZXIuaW5pdCgpLHNlbGYucC50aGVuKChmdW5jdGlvbigpe00uYXdNYW5hZ2VyLmRlc2NyeXB0S2V5KHQuc2VjcmV0S2V5LHQuZGVjcnlwdEtleSl9KSksQS5hYnJ1cHQoImJyZWFrIiw0OSk7Y2FzZSAxNzpyZXR1cm4gaT1CLmRhdGEuYXJncyxlPW5ldyBVaW50OEFycmF5KEIuZGF0YS5idWZmZXIpLHRoaXMuTVA0RGVtdXhlcnx8KHRoaXMuTVA0RGVtdXhlcj1uZXcgdXUobnVsbCxudWxsLG51bGwse29wZW5sb2c6dGhpcy5vcGVubG9nfSkpLEEubmV4dD0yMixzZWxmLnA7Y2FzZSAyMjpyZXR1cm4gbz10aGlzLk1QNERlbXV4ZXIuZGVtdXhQYXJ0KGUsaS5zdGFydCxpLnZpZGVvSWR4LGkuYXVkaW9JZHgsaS5tb292LGkudXNlRU1FLGkua2lkVmFsdWUsKGZ1bmN0aW9uKEEsZyxJKXt2YXIgQj12RC5mb3JtYXRJVihJKTtyZXR1cm4gTS5hd01hbmFnZXIuZGVzY3J5cHQoQSxCKX0pKSx0aGlzLkZNUDRSZW11eGVyfHwiaDI2NSI9PT10aGlzLmNvZGVjVHlwZSYmIXRoaXMuc3VwcG9ydEhldmN8fCh0aGlzLkZNUDRSZW11eGVyPW5ldyBCZih0aGlzLk1QNERlbXV4ZXIudmlkZW9UcmFjayx0aGlzLk1QNERlbXV4ZXIuYXVkaW9UcmFjayx7b3BlbkxvZzp0aGlzLm9wZW5sb2d9KSkscj1vLnZpZGVvVHJhY2ssbj1vLmF1ZGlvVHJhY2ssYT1udWxsPT1yP3ZvaWQgMDpyLnNhbXBsZXMscz0obnVsbD09YT92b2lkIDA6YS5sZW5ndGgpPjA/YVswXS5zYW1wbGVPZmZzZXQ6LTEsYz0obnVsbD09YT92b2lkIDA6YS5sZW5ndGgpPjA/YVthLmxlbmd0aC0xXS5zYW1wbGVPZmZzZXQ6LTEsaD1udWxsPT1uP3ZvaWQgMDpuLnNhbXBsZXMsZj0obnVsbD09aD92b2lkIDA6aC5sZW5ndGgpPjA/aFswXS5zYW1wbGVPZmZzZXQ6LTEsdT0obnVsbD09aD92b2lkIDA6aC5sZW5ndGgpPjA/aFtoLmxlbmd0aC0xXS5zYW1wbGVPZmZzZXQ6LTEseT1pLmNvbnRleHQuc3RhdGUuc3RhdGUsRD0tMSxsPS0xLHc9LTEsZD0tMSwoeXx8KG51bGw9PWE/dm9pZCAwOmEubGVuZ3RoKT4wKSYmKEQ9bnVsbD09b3x8bnVsbD09PShGPW8udmlkZW9UcmFjayl8fHZvaWQgMD09PUY/dm9pZCAwOkYuc3RhcnRQdHMsbD1udWxsPT1vfHxudWxsPT09KFI9by52aWRlb1RyYWNrKXx8dm9pZCAwPT09Uj92b2lkIDA6Ui5lbmRQdHMpLCh5fHwobnVsbD09aD92b2lkIDA6aC5sZW5ndGgpPjApJiYodz1udWxsPT1vfHxudWxsPT09KEc9by5hdWRpb1RyYWNrKXx8dm9pZCAwPT09Rz92b2lkIDA6Ry5zdGFydFB0cyxkPW51bGw9PW98fG51bGw9PT0oaz1vLmF1ZGlvVHJhY2spfHx2b2lkIDA9PT1rP3ZvaWQgMDprLmVuZFB0cyksdGhpcy5GTVA0UmVtdXhlciYmKChTPXRoaXMuRk1QNFJlbXV4ZXIucmVtdXgodGhpcy5fbmVlZEluaXRTZWdtZW50LHtpbml0TWVyZ2U6ITB9KSkuaW5pdFNlZ21lbnQmJih0aGlzLl9uZWVkSW5pdFNlZ21lbnQ9ITEpLFU9dkQuY29uY2F0RGF0YShTLmF1ZGlvU2VnbWVudCxTLnZpZGVvU2VnbWVudCkscD17YnVmZmVyOlUscmFuZ2U6aS5jb250ZXh0LnJhbmdlLHN0YXRlOmkuY29udGV4dC5zdGF0ZSxjb250ZXh0OntyYW5nZTppLmNvbnRleHQucmFuZ2UsZnJhZ0luZGV4OmkuY29udGV4dC5mcmFnSW5kZXgsdlB0c1JhbmdlOltELGxdLGFQdHNSYW5nZTpbdyxkXSx2aWRlb1NhbXBsZUlkeFJhbmdlOltzLGNdLGF1ZGlvU2FtcGxlSWR4UmFuZ2U6W2YsdV19LGluaXRTZWc6Uy5pbml0U2VnbWVudH0pLHRoaXMucG9zdE1lc3NhZ2Uoe21ldGhvZDoidHJhbnNtdXgiLGlkOkIuZGF0YS5pZCxhcmdzOmcoe30scCl9KSxBLmFicnVwdCgiYnJlYWsiLDQ5KTtjYXNlIDQxOnJldHVybiB0aGlzLkZNUDRSZW11eGVyJiZ0aGlzLkZNUDRSZW11eGVyLnJlc2V0KCksdGhpcy5NUDREZW11eGVyJiZ0aGlzLk1QNERlbXV4ZXIucmVzZXQoKSx0aGlzLkZNUDRSZW11eGVyPW51bGwsdGhpcy5NUDREZW11eGVyPW51bGwsdGhpcy5fbmVlZEluaXRTZWdtZW50PSEwLEEuYWJydXB0KCJicmVhayIsNDkpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuYXdNYW5hZ2VyJiYodGhpcy5hd01hbmFnZXIuZGVzdHJveSgpLHRoaXMuYXdNYW5hZ2VyPW51bGwpLEEuYWJydXB0KCJicmVhayIsNDkpO2Nhc2UgNDk6Y2FzZSJlbmQiOnJldHVybiBBLnN0b3AoKX19KSxBLHRoaXMpfSkpLGZ1bmN0aW9uKCl7dmFyIGc9dGhpcyxJPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKEIsRSl7dmFyIEM9QS5hcHBseShnLEkpO2Z1bmN0aW9uIHQoQSl7UShDLEIsRSx0LGksIm5leHQiLEEpfWZ1bmN0aW9uIGkoQSl7UShDLEIsRSx0LGksInRocm93IixBKX10KHZvaWQgMCl9KSl9KTtyZXR1cm4gZnVuY3Rpb24oQSl7cmV0dXJuIEIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0oKTsK",Nl="undefined"!=typeof window&&window.Blob&&new Blob([atob(vl)],{type:"text/javascript;charset=utf-8"});function Tl(){var e;try{if(!(e=Nl&&(window.URL||window.webkitURL).createObjectURL(Nl)))throw"";return new Worker(e)}catch(t){return new Worker("data:application/javascript;base64,"+vl)}finally{!("undefined"!=typeof window&&navigator.userAgent.indexOf("Trident/")>0)&&e&&(window.URL||window.webkitlRL).revokeObjectURL(e)}}var Cl=function(e){P(n,e);var t=q(n);function n(e){var U;return M(this,n),(U=t.call(this)).openlog=e.openLog,U.codecType=e.codecType,U.supportHevc=e.supportHevc,U.worker=new Tl,U.worker.onmessage=function(e){U.emit(e.data.method,e.data)},U.worker.postMessage({method:"init",id:e.id||0,args:{openlog:U.openlog,supportHevc:U.supportHevc,codecType:U.codecType}}),U}return w(n,[{key:"updateValue",value:function(e){var t,n;null===(t=this.worker)||void 0===t||t.postMessage({method:"updateValue",id:(null===(n=this.options)||void 0===n?void 0:n.id)||0,args:{value:e}})}},{key:"transmux",value:function(e,t,n,U,i,l,F,a,r){var d=t.buffer;this.worker&&this.worker.postMessage({method:"transmux",id:e,buffer:d,args:{start:n,videoIdx:U,audioIdx:i,moov:l,useEME:F,kidValue:a,context:r}},[d])}},{key:"reset",value:function(){this.worker&&this.worker.postMessage({method:"reset"})}},{key:"destroy",value:function(){this.worker&&this.worker.postMessage({method:"destroy"}),this.worker&&this.worker.terminate()}}]),n}(tt),gl="error",Xl="metaReady",Ll="moov_request_Progress",Gl="progress_event",xl="updateEME",Il="init_MSE",Dl="chaneg_url",Yl="update_load_fragmentIdx",Ml="remove_pcdn_node",Kl="load_error",wl="cancel_loaded_len",Hl="load_len_not_match_error",Pl="cdn",jl="pcdn",zl="close",Ol="open",_l="forbidden",Al={},ql=function(e){P(c,e);var t,n,U,i,l,F,a,r,d,Q,o,s=q(c);function c(e,t,n){var U,i,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],F=arguments.length>4?arguments[4]:void 0;return M(this,c),H(A(i=s.call(this)),"markErrHost",(function(e){e&&(Al[e]=!0,i.log(Ht.WARN,"[mp4loader markErrHost]",e))})),H(A(i),"onprogressDataArrive",function(){var e=Y(x().mark((function e(t,n,U,l){var F,a,r,d,Q,o,s,c,R;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=(null==U||null===(F=U.priOptions)||void 0===F?void 0:F.type)||Pl,r=i.adaptTimeRange[U.index].range,t&&t.byteLength>0?(!i._optionDataLenInfo[a]&&(i._optionDataLenInfo[a]=0),i._optionDataLenInfo[a]+=t.byteLength,i._receiveDataPos=null==U?void 0:U.range[1],r&&U.range[1]>r[1]&&!n&&(n=!0,i.log(Ht.LOG,"[onprogressDataArrive] receive data, check state set true >>> index,",U.index,",range,",JSON.stringify(U.range))),i.cacheRepeatData(i.adaptTimeRange[U.index].repeatRange,U.range,t),i.log(Ht.LOG,"[onprogressDataArrive] receive data, >>> index,",U.index,",range,",JSON.stringify(U.range),", dataLen,",t.byteLength,",loadType,",a,n),i._mux(t,U.range[0],U.index,n)):i.log(Ht.LOG,"[onprogressDataArrive] receive data null, >>> index,",U.index,",range,",JSON.stringify(U.range),", dataLen,",null==t?void 0:t.byteLength,",loadType,",a,n),!n){e.next=21;break}if(i._optionDataLenInfo[a]=0,!((null==r?void 0:r.length)>=0&&(!Number(r[1])||Number(r[1])&&(null==U?void 0:U.range[1])===r[1]+1))){e.next=10;break}i.adaptTimeRange[U.index].downloaded=!0,i.log(Ht.LOG,"[FragLoadDowned],fragmentIdx,",U.index,",rangeEnd,",U.range[1]),e.next=21;break;case 10:return d=kl(l.headers),e.next=13,i.cancelLoading();case 13:return Q=i.adaptTimeRange[U.index],o=Q.startTime,s=Q.endTime,i.emit(Hl,[o,s]),c=a===Pl?i.url:i._pcdnNodeList[0].url,R=bl.getHostFromUrl(c),i.emit(Kl,{src:c,host:R,errorCode:dl.contentError,message:"progress dataLen not match",range:JSON.stringify(r),headers:d}),i.log(Ht.LOG,"[FragLoadDowned check false, len is not match],fragmentIdx,",U.index,",rangeEnd,",U.range[1],JSON.stringify(r),JSON.stringify(d),c,null==l?void 0:l.url),e.next=21,i.loadAllFragmentData(i._curLoadSegIdx,i._loadSuccessCallBack);case 21:case"end":return e.stop()}}),e)})));return function(t,n,U,i){return e.apply(this,arguments)}}()),i.timeRecord={startMuxTime:-1,startLoadTime:-1,newMP4Time:bl.nowTime(),startLoadMetaTime:-1},i.updateUrl(e,l||[]),i._bitRate=t||0,i.options=c.getDefaultConfig(),Object.keys(n).map((function(e){void 0!==n[e]&&null!==n[e]&&(i.options[e]=n[e])})),i.logger=n.logger,i.timeRange=[],i.adaptTimeRange=[],i.firstFrameTime=F||{},i.fileSize=null==n?void 0:n.fileSize,i.CHUNK_SIZE=(null===(U=i.options)||void 0===U?void 0:U.firstLoadSize)||Rl(n.duration,i.options.chunkSize,i.fileSize),i._firstLoadSize=i.CHUNK_SIZE,i.log(Ht.LOG,"[getFirstLoadSize], firstLoadSize ",i._firstLoadSize,",dur,",n.duration,",chunkSize,",i.CHUNK_SIZE,",fileSize,",i.fileSize),i._repeatInfo={startPos:-1,curDataPos:0,usedPos:0,data:bl.newUint8Arrray(1048576)},i.meta=null,i.preloadCache=null,i.videoTrak=null,i.audioTrak=null,i._loadSuccessCallBack=null,i._isPending=!1,i.metaLoading=!1,i.MP4Loader=new al(G(G({segmentDuration:n.segmentDuration,url:e,vid:"".concat(n.vid,"-").concat(t),retry:n.retryCount||2,retryDelay:n.retryDelay||1e3,timeout:n.timeout||3e3},n.reqOptions),{},{loaderType:n.loaderType,retryCheckFunc:yl,openLog:ul})),i.MP4Demuxer=null,i.FMP4Remuxer=null,i._needInitSegment=!0,i._bitRateInfoMap=new Map,i._switchBitRate=!1,i._segmentToBitRateMap=new Map,i.useEME=!1,i.secretKey=null,i.decryptKey=null,i.keyValue=null,i.initTransMuxWorker(),i.seekTime=-1,i.changeBitRateTime=-1,i._PCDNState=zl,i._pcdnNodeList=[],i.loadInfo={},i.pcdnTraceInfo=null,i._loadedDataState=!1,i._PCDNSwitchCnt=0,i._isUseCDN=!0,i._curLoadSegIdx=0,i._receiveDataPos=-1,i._optionDataLenInfo={},i._lastPCDNUrl="",i._lastTargetDur=0,i.pcdnVVStat=i.resetPCDNVVStat(),i.pSCCancelCnt=0,i._lastDemuxSampleIdxRange={video:0,audio:0},i._mediaEndTime=-1,i}return w(c,[{key:"size",get:function(){return this.fileSize}},{key:"initTransMuxWorker",value:function(){var e=this,t=this.options;if(this.enableWorker=t.enableWorker&&("h265"!==t.codecType||t.supportHevc),this.enableWorker&&"undefined"!=typeof Worker){try{this.workerSequence=0,this.transmuxerWorkerControl=new Cl({id:this.workerSequence,codecType:t.codecType,supportHevc:this.options.supportHevc,openLog:ul}),this.transmuxerWorkerControl.on("transmux",(function(t){var n=t.args,U=n.context;e.updateDemuxSampleIdxRange(null==U?void 0:U.videoSampleIdxRange,null==U?void 0:U.audioSampleIdxRange),e.log(Ht.LOG,"[transmuxerworker end] ,range, ",JSON.stringify(n.range),",dataLen,",n.buffer.byteLength,JSON.stringify(n.context)),e.firstFrameTime.firstmux<0&&e.timeRecord.startMuxTime>0&&(e.firstFrameTime.firstmux=bl.nowTime()-e.timeRecord.startMuxTime),e._loadSuccessCallBack&&e._loadSuccessCallBack(n)}))}catch(n){this.log(Ht.ERROR,"Error in worker:",n),this.enableWorker=!1,this.transmuxerWorkerControl=null}this.enableWorker||(this.MP4Demuxer=null,this.FMP4Remuxer=null)}}},{key:"updateSecretKey",value:function(e,t,n,U){var i;this.useEME=e,!e&&t?(this.log(Ht.LOG,"[updateSecretKey] ,force enableWorker"),this.options.enableWorker=!0,this.transmuxerWorkerControl||this.initTransMuxWorker()):!e&&U&&(this.keyValue=U),this.log(Ht.LOG,"[updateSecretKey] ,useEME, ",e,",secretKey,",t,",decryptKey",n),null===(i=this.transmuxerWorkerControl)||void 0===i||i.updateValue({secretKey:t,decryptKey:n})}},{key:"updateLoadedDataDone",value:function(){this._loadedDataState=!0}},{key:"PCDNSwitchCnt",get:function(){return this._PCDNSwitchCnt}},{key:"updateLoadInfo",value:function(e,t){this.loadInfo||(this.loadInfo={}),this.loadInfo[e]||(this.loadInfo[e]={},this.loadInfo[e].loadLen=0),this.loadInfo[e].loadLen+=t}},{key:"updatePCDNState",value:(o=Y(x().mark((function e(t){var n,U,i;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._PCDNState!==_l&&this._PCDNState!==t&&this.log(Ht.LOG,"[pcdn state update]",this._PCDNState," - ",t),t!==_l){e.next=5;break}this._PCDNState=t,e.next=25;break;case 5:if(this._PCDNState===_l||this._PCDNState===t){e.next=25;break}if(this._isUseCDN||t!==zl){e.next=23;break}if(this._PCDNState=t,!this.adaptTimeRange[this._curLoadSegIdx].downloaded&&!this._switchBitRate){e.next=11;break}return this.log(Ht.LOG,"[pcdn] switch cdn ",this._curLoadSegIdx,"downloaded",",switchBitRate, ",this._switchBitRate),e.abrupt("return");case 11:return e.next=13,this.cancelLoading();case 13:return this.pSCCancelCnt++,n=this._curLoadSegIdx,this.log(Ht.LOG,"[pcdn] cancelLoading ",n,"switch cdn load"),U=this.getFragRange(n),this._receiveDataPos&&this._receiveDataPos>=U[0]&&this._receiveDataPos<=U[1]&&(i=U[0],U[0]=this._receiveDataPos,this.log(Ht.LOG,"[pcdn] switch cdn, adject range",n,JSON.stringify(U),",oldRange,","".concat(i," - ").concat(U[1]))),this._receiveDataPos=-1,e.next=21,this.startLoad(U,n);case 21:e.next=24;break;case 23:this._PCDNState=t;case 24:this.log(Ht.LOG,"[pcdn] openPCDN ",t);case 25:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"updateNode",value:function(e){if(e&&e.length>0){var t=e.filter((function(e){if(!Object.prototype.hasOwnProperty.call(Al,bl.getHostFromUrl(null==e?void 0:e.url)))return e}));this._pcdnNodeList=t}}},{key:"clearPCDNNodeList",value:function(){this.log(Ht.LOG,"[pcdn] clearPCDNNodeList"),this._pcdnNodeList=[]}},{key:"isUpdateNode",get:function(){return!this._pcdnNodeList||!this._pcdnNodeList.length}},{key:"isUsePCDN",value:function(){var e;return this._PCDNState===Ol&&(null===(e=this._pcdnNodeList)||void 0===e?void 0:e.length)>0}},{key:"changeBitRate",value:(Q=Y(x().mark((function e(t){return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.bitrate===this._bitRate){e.next=11;break}return this.updateUrl(t._mainURL,t._backupURL),this._bitRate=t.bitrate,this._receiveDataPos=-1,e.next=6,this.MP4Loader.changeUrl(this.url,"".concat(this.options.vid,"-").concat(this._bitRate),this.CHUNK_SIZE);case 6:this._pcdnNodeList=null,this.emit(Dl,this.url),this._switchBitRate=!0,this._mediaEndTime=-1,this.log(Ht.LOG,"[switchBitrate] changeUrl, bitRate,",this._bitRate,"url",this.url);case 11:case"end":return e.stop()}}),e,this)}))),function(e){return Q.apply(this,arguments)})},{key:"_getByPreload",value:function(e,t,n,U){try{if(e&&e.byteLength>=t){var i={endTime:(new Date).getTime(),startTime:(new Date).getTime(),index:U,range:[],vid:this.options.vid,from:"local"};if(n<=e.byteLength){var l=e.slice(t,n);return i.range=[t,n],i.state=!0,{buffer:l,context:i,state:!0}}var F=e.byteLength-1,a=e.slice(t,F);return i.range=[t,F],{context:i,buffer:a,state:!1}}return null}catch(r){return console.error("[MP4] _getByPreload",t,n,r),null}}},{key:"log",value:function(e,t){for(var n=this.options,U=n&&n.vid?"[MP4]".concat(this._logTag," ").concat(n.vid," ").concat(t):"[MP4]".concat(this._logTag," ").concat(t),i=arguments.length,l=new Array(i>2?i-2:0),F=2;F<i;F++)l[F-2]=arguments[F];ml.apply(void 0,[this.logger,e,U].concat(l))}},{key:"errorHandler",value:(d=Y(x().mark((function e(t,n){var U,i,l,F,a,r,d,Q,o,s=arguments;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U=s.length>2&&void 0!==s[2]?s[2]:{},i=t.response,l=t.message,F=this.options?this.options.vid:"",a=null,this._isPending=!0,!i){e.next=36;break}if(r=kl(i.headers),a=new ol("network",i.status,{httpText:i.httpText,message:l,url:i.url,range:U.range,headers:r}),this.log(Ht.LOG,"[MP4] [".concat(F,"] errorHandler error state:[").concat(n,"],\n _isPending:[").concat(this._isPending,"] "),null==i?void 0:i.status,l),!(this.backUrl&&this.backUrl.length>0)){e.next=30;break}if(d=this.backUrl.shift(),this.updateUrl(d,this.backUrl),this.log(Ht.LOG,"[".concat(F,"] errorHandler start backUpUrl retry"),this.backUrl.length,d),this._isPending=!1,!this.MP4Loader){e.next=18;break}return e.next=17,this.MP4Loader.changeUrl(this.url,"".concat(this.url,"-").concat(this._bitRate),this.CHUNK_SIZE);case 17:this.emit(Dl,this.url);case 18:if(this.emit(Gl,{type:"error",error:t}),"getMetaInfo"!==n){e.next=24;break}return this.getMetaInfo(),e.abrupt("return");case 24:if("loadFragment"!==n){e.next=30;break}if(Q=U.fragIndex,o=U.range,!(null!==Q&&Q>=0&&o)){e.next=30;break}return this.resetFragmentLoadState(Q),this.loadFragment(Q,o),e.abrupt("return");case 30:a.context=U,a.response=i,this.log(Ht.LOG,"errorHandler end, ".concat(JSON.stringify(U))),this.emit(gl,a,n),e.next=40;break;case 36:this.log(Ht.LOG,"errorHandler other end, ".concat(n,",").concat(null==i?void 0:i.status,", ").concat(l)),(a=t).context=U,this.emit(gl,a,n);case 40:case"end":return e.stop()}}),e,this)}))),function(e,t){return d.apply(this,arguments)})},{key:"init",value:(r=Y(x().mark((function e(t){var n,U,i,l,F,a,r,d,Q,o,s,c,R;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.url){e.next=3;break}return e.next=3,this.MP4Loader.changeUrl(this.url,"".concat(this.options.vid,"-").concat(this._bitRate),this.CHUNK_SIZE);case 3:if(this.emit(Dl,this.url),this.meta=null,n=t.meta,U=t.mediaSegList,i=t.buffer,l=t.fileSize,F=t.initSeg,a=t.bitrate,r=t.adaptTimeRange,d=t.repeatData,!n||!n.ext){e.next=24;break}for(l&&(this.fileSize=l),this.meta=n,this.videoTrak=n.ext.videoTrak,this.audioTrak=n.ext.audioTrak,this.meta.videoSamplesLen=this.videoTrak.reduce((function(e,t){return e+t.frames.length}),0),this.meta.audioSamplesLen=this.audioTrak.reduce((function(e,t){return e+t.frames.length}),0),this._bitRate=a,this.timeRange=this.getTimeRange(),this.adaptTimeRange=bl.ArrayCopy(r),U?(this.preloadCache={segList:U||[],initSeg:F},(null===(Q=this.adaptTimeRange)||void 0===Q?void 0:Q.length)>0&&(null==d?void 0:d.byteLength)>0&&this.cacheRepeatData(this.adaptTimeRange[0].repeatRange,this.adaptTimeRange[0].repeatRange,d)):i&&(null===(o=this.adaptTimeRange)||void 0===o?void 0:o.length)>0&&(null==i?void 0:i.byteLength)>0&&this.cacheRepeatData(this.adaptTimeRange[0].range,this.adaptTimeRange[0].range,i),this.adaptTimeRange.map((function(e){e.downloaded=!1,e.isLoading=!1})),s=0;s<this.adaptTimeRange.length;s++)null===(c=this.updateTimeRangeInAdaptTimeRangeIdx)||void 0===c||c.call(this,this.adaptTimeRange[s].timeRangeIdx,s);R={meta:n,videoSegments:n.ext.videoTrak,audioSegments:n.ext.audioTrak,bufferLoaded:i||null},this._bitRateInfoMap.set(this._bitRate,R),this.emit(Xl,this.meta),e.next=26;break;case 24:return e.next=26,this.getMetaInfo();case 26:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"getTimeRange",value:function(){for(var e=[],t=null,n=0;this.videoTrak&&n<this.videoTrak.length;n++){var U=this.videoTrak[n].startTime,i=this.videoTrak[n].endTime;t={startTime:U,endTime:i,duration:i-U,downloaded:!1,isLoading:!1},e.push(t)}if(this.audioTrak&&this.audioTrak.length>e.length)for(var l=e.length;l<this.audioTrak.length;l++){var F=Math.max(this.audioTrak[l].startTime,t?t.endTime:0),a=Math.max(this.audioTrak[l].endTime,t?t.endTime:0);t={startTime:F,endTime:a,duration:a-F,downloaded:!1,isLoading:!1},e.push(t)}return e}},{key:"getMetaInfo",value:(a=Y(x().mark((function e(){var t,n,U,i,l=this,F=arguments;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!(F.length>0&&void 0!==F[0])||F[0],e.prev=1,n=bl.nowTime(),this.metaLoading=!0,this.log(Ht.LOG,"getMetaInfo start, bitRate,",this._bitRate,",url,",this.MP4Loader.url),this.resetRepeatInfo(),U=function(){var e=Y(x().mark((function e(U,i,F,a,r){var d,Q,o,s,c,R,B;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!a){e.next=6;break}return e.next=3,l.cancelLoading();case 3:return Q=new sl(Ql.DEMUX,dl.metaError,{msg:JSON.stringify(a)}),l.errorHandler(Q,"getMetaInfo",{range:[0,l._firstLoadSize]}),e.abrupt("return");case 6:l.fileSize||(l.fileSize=Number(fl(r.headers))),o=(null==F||null===(d=F.priOptions)||void 0===d?void 0:d.type)||Pl,U&&(l.cacheRepeatData([0,l._firstLoadSize],F.range,U),!l._optionDataLenInfo[o]&&(l._optionDataLenInfo[o]=0),l._optionDataLenInfo[o]+=U.byteLength),i&&l._optionDataLenInfo[o]&&(l._optionDataLenInfo[o]=0),F.meta&&!l.meta&&(l.firstFrameTime.metaload=bl.nowTime()-n,s=F.meta,l.videoTrak=s.videoSegments,l.audioTrak=s.audioSegments,l.timeRange=l.getTimeRange(),c=l.videoTrak.reduce((function(e,t){return e+t.frames.length}),0),R=l.audioTrak.reduce((function(e,t){return e+t.frames.length}),0),l.meta=G(G({},s.meta),{},{ext:{videoTrak:l.videoTrak,audioTrak:l.audioTrak},videoSamplesLen:c,audioSamplesLen:R,fileSize:l.fileSize}),l._bitRateInfoMap.set(l._bitRate,s),l.log(Ht.LOG,"meta reach, bitRate,",l._bitRate,l._repeatInfo.curDataPos),t&&l.emit(Xl,l.meta)),l.meta&&i&&(l.log(Ht.LOG,"[getMetaInfo req end]",l._repeatInfo.curDataPos),l.metaLoading=!1),l._loadedDataState?(B=!1,l._repeatInfo.curDataPos-l._repeatInfo.usedPos>=l.options.afterLoadeddataCallBackLen&&(B=!0),l.meta&&(B||i)&&(l.log(Ht.LOG,"emit moov_req_progress loadeddata after",JSON.stringify(F.range)),l.emit(Ll))):l.meta&&(U||i)&&(l.log(Ht.LOG,"emit moov_req_progress loadeddata before",JSON.stringify(F.range)),l.emit(Ll));case 13:case"end":return e.stop()}}),e)})));return function(t,n,U,i,l){return e.apply(this,arguments)}}(),e.next=9,this.MP4Loader.loadMetaProcess(this.MP4Loader.cache,[0,this._firstLoadSize],U);case 9:e.next=15;break;case 11:e.prev=11,e.t0=e.catch(1),this.log(Ht.ERROR,"[MP4] trigger errorHandler getMetaInfo",null===e.t0||void 0===e.t0||null===(i=e.t0.response)||void 0===i?void 0:i.status,null===e.t0||void 0===e.t0?void 0:e.t0.message),this.loadError(e.t0,"getMetaInfo",!1,{url:e.t0.url||this.url,range:[0,this._firstLoadSize]});case 15:case"end":return e.stop()}}),e,this,[[1,11]])}))),function(){return a.apply(this,arguments)})},{key:"getFragmentIdx",value:function(e){var t,n;if(this.videoTrak.length){if(t=this.videoTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),n=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),t&&n)return Math.min(t.index,n.index);if(t||n)return t?t.index:n.index;var U=Number.MAX_VALUE;return this.videoTrak&&this.videoTrak.length>0&&(U=this.videoTrak.length-1),this.audioTrak&&this.audioTrak.length>0&&(U=Math.min(this.audioTrak.length-1,U)),U}return(n=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})))?n.index:0}},{key:"_checkHasMeta",value:(F=Y(x().mark((function e(){var t,n,U,i,l,F,a,r,d,Q,o,s;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this._bitRateInfoMap.get(this._bitRate)){e.next=21;break}return this.log(Ht.LOG,"[switchBitrate], need load InitSegment, bitRate, ",this._bitRate),this.metaLoading=!0,e.next=6,this.MP4Loader.loadMeta(this.MP4Loader.cache,Math.round(this.CHUNK_SIZE/2));case 6:l=e.sent,this.log(Ht.LOG,"[switchBitrate], loadMeta end, ",this._bitRate),this.metaLoading=!1,F=this.videoTrak,a=this.audioTrak,r=F.reduce((function(e,t){return e+t.frames.length}),0),d=a.reduce((function(e,t){return e+t.frames.length}),0),Q=Number(fl(null==l||null===(n=l.responses)||void 0===n||null===(U=n[0])||void 0===U||null===(i=U.response)||void 0===i?void 0:i.headers)),this.fileSize=Q,this.log(Ht.LOG,"[switchBitrate], fileSize set , ",Q),this.meta=G(G({},l.meta),{},{ext:{videoTrak:l.videoSegments,audioTrak:l.videoSegments},videoSamplesLen:r,audioSamplesLen:d,fileSize:Q}),(t=l).fileSize=Q,this._bitRateInfoMap.set(this._bitRate,l),e.next=23;break;case 21:this.log(Ht.LOG,"[switchBitrate], not need load InitSegment, bitRate, ",this._bitRate),this.meta=t.meta;case 23:for(this.videoTrak=t.videoSegments,this.audioTrak=t.audioSegments,this.fileSize=t.fileSize,this.emit(xl,this.meta),this.emit(Il,this.meta),this.timeRange=this.getTimeRange(),o=0;o<this.adaptTimeRange.length;o++)null===(s=this.updateTimeRangeInAdaptTimeRangeIdx)||void 0===s||s.call(this,this.adaptTimeRange[o].timeRangeIdx,o);return this._firstLoadSize=0,e.abrupt("return",!0);case 32:case"end":return e.stop()}}),e,this)}))),function(){return F.apply(this,arguments)})},{key:"load",value:(l=Y(x().mark((function e(t,n){var U,i,l,F,a,r,d,Q,o,s;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._loadSuccessCallBack=n,!this._switchBitRate||this.metaLoading){e.next=25;break}return this.log(Ht.LOG,"[switchBitrate], switch bitRate start load, bitRate,",this._bitRate,", fragIndex,",t),e.next=5,this._checkHasMeta();case 5:if(U=e.sent,!(this.changeBitRateTime>0)){e.next=21;break}if(this.resetFragmentLoadState(t,!0),this.resetRepeatInfo(),i=this.getFragmentIdx(this.changeBitRateTime),l=t,!((t=this.getAdaptIdxBySrcIdx(i))<0)){e.next=15;break}return this.log(Ht.ERROR,"[switchBitrate] start new bitrate fragIndex error"),e.abrupt("return");case 15:l!==t&&this.resetFragmentLoadState(t),this._curLoadSegIdx=t,this.log(Ht.LOG,"[switchBitrate], need update load fragIndex",t,",oldFragIndex",l,",stTime,",this.changeBitRateTime,",newBitrateadaptTimeRange,",this.adaptTimeRange[t].startTime,"-",this.adaptTimeRange[t].endTime),this.emit(Yl,t),this.seekTime=this.changeBitRateTime,this.changeBitRateTime=-1;case 21:this.log(Ht.LOG,"[switchBitrate], reset adaptTimeRange state,",t),this._needInitSegment=!0,this.resetTansmuxer(),U&&(this._switchBitRate=!1);case 25:if(!this._switchBitRate||!this.metaLoading){e.next=27;break}return e.abrupt("return");case 27:F=this.getFragRange(t),(a=this.getFragmentFromCache(t,F))&&this._needInitSegment&&!a.initSeg&&(a=null,this.log(Ht.LOG,"[mp4.load], segment ,",t,"Data In Cache but not has init, so not use cacheData")),a?(r=a.muxSampleIdxRange,d=r.video,Q=r.audio,this._lastDemuxSampleIdxRange.video=d,this._lastDemuxSampleIdxRange.audio=Q,this.log(Ht.LOG,"[mp4.load], segment ,",t,"Data In Cache",JSON.stringify(F),", needInit,",this._needInitSegment,",muxSampleIdxRange,",JSON.stringify(a.muxSampleIdxRange)),this.adaptTimeRange[t].downloaded=!0,this.adaptTimeRange[t].isLoading=!0,this._needInitSegment=!1,this._loadSuccessCallBack&&this._loadSuccessCallBack(a)):(this.log(Ht.LOG,"loadFragment,",t,",bitRate,",this._bitRate,",range,",JSON.stringify(F)),this.seekTime>0?(s=this.getSubRange(t,this.seekTime,F),null===(o=this.resetDemuxSampleIdx)||void 0===o||o.call(this,this.seekTime,s),this.loadFragment(t,s),this.seekTime=-1):this.loadFragment(t,F));case 31:case"end":return e.stop()}}),e,this)}))),function(e,t){return l.apply(this,arguments)})},{key:"getFragmentFromCache",value:function(e,t){var n=this.preloadCache;if(!n||!n.segList)return null;for(var U=-1,i=n.segList,l=n.initSeg,F=0;F<i.length;F++)if(i[F].index===e){U=F;break}if(U<0)return null;var a=i[U];if(a.range[1]>=t[1]){var r=[this.adaptTimeRange[e].startTime,this.adaptTimeRange[e].endTime];return{buffer:a.buffer,range:t,muxSampleIdxRange:a.muxSampleIdxRange,context:{range:t,fragIndex:e,state:!0,adaptTimeRange:[r[0],r[1]]},state:!0,initSeg:this._needInitSegment?l:void 0}}return null}},{key:"cacheRepeatData",value:function(e,t,n){var U;if(e&&null!=e&&e.length&&null!==(U=this._repeatInfo.data)&&void 0!==U&&U.byteLength&&(this._repeatInfo.startPos<0&&t[0]+n.byteLength>=e[0]&&t[0]+n.byteLength<=e[1]+1&&(this._repeatInfo.startPos=e[0]),this._repeatInfo.startPos>=0&&t[0]+n.byteLength>=e[0]&&t[0]+n.byteLength<=e[1]+1)){var i=this._repeatInfo.startPos+this._repeatInfo.curDataPos-t[0];if(i<0)return;var l=n.slice(i);if(this._repeatInfo.curDataPos+l.byteLength<this._repeatInfo.data.byteLength)this._repeatInfo.data.set(l,this._repeatInfo.curDataPos),this._repeatInfo.curDataPos+=l.byteLength,this.log(Ht.LOG,", repeatInfo,startPos,",this._repeatInfo.startPos,", curDataPos,",this._repeatInfo.startPos+this._repeatInfo.curDataPos,",curAppendLen,",l.byteLength);else try{var F=Math.max(2*this._repeatInfo.data.byteLength,2*(e[1]-e[0])),a=bl.newUint8Arrray(F);if(!a)return;a.set(this._repeatInfo.data.slice(0,this._repeatInfo.curDataPos),0),a.set(l,this._repeatInfo.curDataPos),this._repeatInfo.curDataPos+=l.byteLength,delete this._repeatInfo.data,this._repeatInfo.data=a,this.log(Ht.LOG,"_repeatInfo,startPos,",this._repeatInfo.startPos,", curDataPos,",this._repeatInfo.curDataPos)}catch(r){console.error("repeat data cache new array failed")}}}},{key:"_mux",value:function(e,t,n,U){this.firstFrameTime.firstmux<0&&this.timeRecord.startMuxTime<0&&(this.timeRecord.startMuxTime=bl.nowTime(),this.firstFrameTime.startMuxTime=bl.nowTime()-this.timeRecord.startLoadTime);var i=this.getSamplesRange(n,"video"),l=this.getSamplesRange(n,"audio");this.log(Ht.LOG,"mux videoSampleRange,",i,l);var F=[t,t+e.byteLength];if(this.transmuxerWorkerControl){var a={range:F,state:U,fragIndex:n};this.log(Ht.LOG,"[transmuxerworker start] ,range, ",JSON.stringify(F),",dataLen,",e.byteLength,a),this.transmuxerWorkerControl.transmux(this.workerSequence,e,t,i,l,this.meta.moov,this.useEME,this.secretKey,a)}else try{var r,d,Q,o,s,c,R,B;this.MP4Demuxer||(this.MP4Demuxer=new $i(this.videoTrak,this.audioTrak,null,{openLog:ul}));var u=this.MP4Demuxer.demuxPart(e,t,i,l,this.meta.moov,this.useEME,this.keyValue);this.FMP4Remuxer||this.checkCodecH265()&&!this.options.supportHevc||(this.FMP4Remuxer=new qU(this.MP4Demuxer.videoTrack,this.MP4Demuxer.audioTrack,{openLog:ul}));var h,V=u.videoTrack,Z=u.audioTrack,m=null==V?void 0:V.samples,p=(null==m?void 0:m.length)>0?m[0].sampleOffset:-1,S=(null==m?void 0:m.length)>0?m[m.length-1].sampleOffset:-1,J=null==Z?void 0:Z.samples,W=(null==J?void 0:J.length)>0?J[0].sampleOffset:-1,y=(null==J?void 0:J.length)>0?J[J.length-1].sampleOffset:-1;this.updateDemuxSampleIdxRange([p,S],[W,y]),this.log(Ht.LOG,"[mux],videoTimeRange,",null==u||null===(r=u.videoTrack)||void 0===r?void 0:r.startPts,"-",null==u||null===(d=u.videoTrack)||void 0===d?void 0:d.endPts,",videoSampleIdx",p,"-",S,",audioTimeRange,",null==u||null===(Q=u.audioTrack)||void 0===Q?void 0:Q.startPts,"-",null==u||null===(o=u.audioTrack)||void 0===o?void 0:o.endPts,",audioSampleIdx",W,"-",y,n,JSON.stringify(F),U);var b=U||(null==m?void 0:m.length)>0?null==u||null===(s=u.videoTrack)||void 0===s?void 0:s.startPts:-1,E=U||(null==m?void 0:m.length)>0?null==u||null===(c=u.videoTrack)||void 0===c?void 0:c.endPts:-1,k=U||(null==J?void 0:J.length)>0?null==u||null===(R=u.audioTrack)||void 0===R?void 0:R.startPts:-1,f=U||(null==J?void 0:J.length)>0?null==u||null===(B=u.audioTrack)||void 0===B?void 0:B.endPts:-1,v=[Math.min(b,k),Math.max(E,f)];if(this.FMP4Remuxer){var N=this.FMP4Remuxer.remux(this._needInitSegment,{initMerge:!0,range:F});N.initSegment&&(this._needInitSegment=!1),h={buffer:bl.concatData(N.audioSegment,N.videoSegment),range:F,state:U,context:{range:F,fragIndex:n,timeRange:v},initSeg:N.initSegment}}else h={videoTrack:u.videoTrack,audioTrack:u.audioTrack,buffer:null,range:F,state:U,context:{range:F,fragIndex:n,timeRange:v}};this.firstFrameTime.firstmux<0&&this.timeRecord.startMuxTime>0&&(this.firstFrameTime.firstmux=bl.nowTime()-this.timeRecord.startMuxTime),this._loadSuccessCallBack&&this._loadSuccessCallBack(h)}catch(g){var T=null==g?void 0:g.message;this.log(Ht.ERROR,"mux err:",T);var C=new sl(Ql.REMUX,dl.muxError,{msg:T});this.errorHandler(C,"mux",{fragIndex:n,range:[t,t+e.byteLength]})}}},{key:"updateDemuxSampleIdxRange",value:function(e,t){(null==e?void 0:e[1])>=0&&(this._lastDemuxSampleIdxRange.video=e[1]),(null==t?void 0:t[1])>=0&&(this._lastDemuxSampleIdxRange.audio=t[1]),this.log(Ht.LOG,"updateDemuxSampleIdxRange",JSON.stringify(this._lastDemuxSampleIdxRange))}},{key:"loadFragment",value:(i=Y(x().mark((function e(t,n){var U,i,l,F,a,r,d,Q,o,s,c,R,B,u,h,V,Z;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._curLoadSegIdx=t,!this._isPending&&0!==(null==n?void 0:n[1])&&this.adaptTimeRange[t]&&!this.adaptTimeRange[t].isLoading&&0!==(null==n?void 0:n.length)){e.next=3;break}return e.abrupt("return");case 3:if(this.log(Ht.LOG,"[MP4.loadFragment] ,fragIndex,",t,",range ",JSON.stringify(n),",len ,",n[1]-n[0],", repeatInfo.startPos, ",this._repeatInfo.startPos,",repeatInfo.curDataPos,",this._repeatInfo.startPos+this._repeatInfo.curDataPos),this._segmentToBitRateMap.set(t,this._bitRate),this.timeRecord.startLoadTime<0&&(this.timeRecord.startLoadTime=bl.nowTime()),!(n.length>=2&&n[1]&&n[1]>0&&n[0]>=this._repeatInfo.startPos&&n[1]<this._repeatInfo.startPos+this._repeatInfo.curDataPos)){e.next=17;break}this.adaptTimeRange[t].isLoading=!0,U=Math.max(n[0],this._repeatInfo.startPos+this._repeatInfo.usedPos),i=new Uint8Array(this._repeatInfo.data.slice(U-this._repeatInfo.startPos,n[1]-this._repeatInfo.startPos+1)),this.log(Ht.LOG,"[mp4.loadFragment] has all data: ",U,n[1]),this.log(Ht.LOG,"[mp4.loadFragment] ",",repeatInfo, startPos,",this._repeatInfo.startPos,", usedPos,",this._repeatInfo.startPos+this._repeatInfo.usedPos,",curDataPos, ",this._repeatInfo.startPos+this._repeatInfo.curDataPos),this.adaptTimeRange[t].downloaded=!0,this.metaLoading||0===this._repeatInfo.startPos?(this._repeatInfo.usedPos=0,this.log(Ht.LOG,"[mp4.loadFragment] has all data set repeatInfo.usedPos = 0")):(l=this.adaptTimeRange[t].range[0]-this._repeatInfo.startPos,F=this.adaptTimeRange[t].range[1]+1-this._repeatInfo.startPos,a=new Uint8Array(this._repeatInfo.data.slice(l,F)),this.resetRepeatInfo(),this.cacheRepeatData(this.adaptTimeRange[t].repeatRange,this.adaptTimeRange[t].range,a)),this._mux(i,U,t,!0),e.next=44;break;case 17:if(!(n.length>=2&&n[0]&&n[0]>=this._repeatInfo.startPos&&n[0]<=this._repeatInfo.startPos+this._repeatInfo.curDataPos)){e.next=38;break}if(this.adaptTimeRange[t].isLoading){e.next=36;break}if(r=Math.max(n[0],this._repeatInfo.startPos+this._repeatInfo.usedPos),d=Math.min(n[1]+1,this._repeatInfo.startPos+this._repeatInfo.curDataPos),!((Q=new Uint8Array(this._repeatInfo.data.slice(r-this._repeatInfo.startPos,d-this._repeatInfo.startPos))).byteLength>0)){e.next=28;break}return this._repeatInfo.usedPos=d-this._repeatInfo.startPos,this.log(Ht.LOG,"[mp4.loadFragment] has part data: ",r,r+Q.byteLength),this.log(Ht.LOG,"[mp4.loadFragment] ",",repeatInfo, startPos,",this._repeatInfo.startPos,", usedPos,",this._repeatInfo.startPos+this._repeatInfo.usedPos,",curDataPos, ",this._repeatInfo.startPos+this._repeatInfo.curDataPos),this._mux(Q,r,t,n[1]<=this._repeatInfo.startPos+this._repeatInfo.usedPos),e.abrupt("return");case 28:if(this.metaLoading||this.adaptTimeRange[t].isLoading){e.next=36;break}return this.log(Ht.LOG,"[mp4.loadFragment] load part data >>> ",this._repeatInfo.startPos+this._repeatInfo.curDataPos,n[1]),this.adaptTimeRange[t].isLoading=!0,s=[this._repeatInfo.startPos+this._repeatInfo.usedPos,n[1]],(c=null===(o=this.adaptTimeRange[t])||void 0===o?void 0:o.repeatRange)&&c[0]<s[0]?(R=[this.adaptTimeRange[t].repeatRange[0],s[0]],B=this._repeatInfo,u=B.startPos,h=B.curDataPos,V=B.data,Z=V.slice(R[0]-u,h),this.resetRepeatInfo(),this.cacheRepeatData(this.adaptTimeRange[t].repeatRange,R,Z)):this.resetRepeatInfo(),e.next=36,this.startLoad(s,t);case 36:e.next=44;break;case 38:if(this.metaLoading&&!(n[0]>this._repeatInfo.startPos)||this.adaptTimeRange[t].isLoading){e.next=44;break}return this.adaptTimeRange[t].isLoading=!0,this.log(Ht.LOG,"[mp4.loadFragment],ready to load all data ,segmentIdx, ",t,",range >>> ",n),this.resetRepeatInfo(),e.next=44,this.startLoad(n,t);case 44:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})},{key:"resetRepeatInfo",value:function(){this.log(Ht.LOG,", resetRepeatInfo"),this._repeatInfo.startPos=-1,this._repeatInfo.curDataPos=0,this._repeatInfo.usedPos=0}},{key:"setSwitchPCDNCallBack",value:function(e){this._switchPCDNCallBack=e}},{key:"updateChangeBitRateTime",value:function(e){this.changeBitRateTime=e}},{key:"startLoad",value:(U=Y(x().mark((function e(t,n){var U,i,l,F,a,r,d,Q,o,s,R,B,u=arguments;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l=u.length>2&&void 0!==u[2]&&u[2],0===n&&(null===(U=this.firstFrameTime)||void 0===U?void 0:U.first_gop_req_cnt)<0?this.firstFrameTime.first_gop_req_cnt=1:n>0&&(null===(i=this.firstFrameTime)||void 0===i?void 0:i.first_gop_req_cnt)<0&&(this.firstFrameTime.first_gop_req_cnt=0),F=this.selectedPCDN(l),a=F||this.url,this.log(Ht.LOG,"[startLoad], ",n,JSON.stringify(t),a),e.prev=5,e.next=8,this.MP4Loader.loadData(t,this.MP4Loader.cache,{index:n,onProgress:this.onprogressDataArrive,onProcessMinLen:this.options.onProcessMinLen,url:a,headers:F?{"X-Origin-Server-Host":this._domain}:null,priOptions:{type:F?jl:Pl}});case 8:e.next=27;break;case 10:if(e.prev=10,e.t0=e.catch(5),Q=(null===e.t0||void 0===e.t0||null===(r=e.t0.options)||void 0===r||null===(d=r.priOptions)||void 0===d?void 0:d.type)===jl||!!F,s=e.t0.url||(Q?F:this.url),!Q){e.next=25;break}return this.pcdnVVStat.conn_fail_num++,c.pcdn_download_failed_cnt++,o=this._pcdnNodeList.shift(),this.emit(Ml,o),this.log(Ht.ERROR,"pcdn load err, retry use cdn,range",t,",fragIndex",n,(null===e.t0||void 0===e.t0?void 0:e.t0.isTimeout)||(null===e.t0||void 0===e.t0||null===(R=e.t0.response)||void 0===R?void 0:R.status),null===e.t0||void 0===e.t0?void 0:e.t0.message,s),e.next=23,this.startLoad(t,n,!0);case 23:e.next=26;break;case 25:this.log(Ht.ERROR,"cdn load err,range",JSON.stringify(t),",fragIndex",n,(null===e.t0||void 0===e.t0?void 0:e.t0.isTimeout)||(null===e.t0||void 0===e.t0||null===(B=e.t0.response)||void 0===B?void 0:B.status),null===e.t0||void 0===e.t0?void 0:e.t0.message,s);case 26:this.loadError(e.t0,"loadFragment",Q,{range:t,fragIndex:n,url:s});case 27:case"end":return e.stop()}}),e,this,[[5,10]])}))),function(e,t){return U.apply(this,arguments)})},{key:"loadError",value:function(e,t,n,U){var i,l;!e.response&&(e.response={}),e.isTimeout?e.response.status=dl.timeout:null!=e&&null!==(i=e.response)&&void 0!==i&&i.status||(e.response.status=dl.networkError);var F=bl.getHostFromUrl(null==U?void 0:U.url);this.markErrHost(F),this.emit(Kl,{src:null==U?void 0:U.url,host:F,errorCode:null==e||null===(l=e.response)||void 0===l?void 0:l.status,message:null==e?void 0:e.message,range:(null==U?void 0:U.range)&&JSON.stringify(U.range),headers:null==U?void 0:U.headers}),n||this.errorHandler(e,t,U)}},{key:"loadAllFragmentData",value:(n=Y(x().mark((function e(t,n,U){var i,l,F,a,r,d,Q,o,s,R,B,u,h,V,Z,m,p,S=arguments;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l=S.length>3&&void 0!==S[3]&&S[3],!this.hasDestroyed){e.next=3;break}return e.abrupt("return");case 3:return this.resetRepeatInfo(),F=(null===(i=this.adaptTimeRange[t])||void 0===i?void 0:i.range)||this.getFragRange(t),this._curLoadSegIdx=t,a=this.selectedPCDN(l),r=bl.extUrl(a||this.url,{__rand:(new Date).getTime()}),e.prev=8,this.log(Ht.LOG,",[loadAllFragmentData], index,",t,",rang,",JSON.stringify(F),", use-pcdn,",!!a),e.next=12,this.MP4Loader.loadData(F,this.MP4Loader.cache,{index:t,url:r,headers:a?{"X-Origin-Server-Host":this._domain}:null,priOptions:{type:a?jl:Pl}});case 12:if(d=e.sent,this.log(Ht.LOG,"loadAllFragmentData after",t,JSON.stringify(F)),d&&d.data){e.next=18;break}return Q=new Error("response null"),U?U(Q):this.loadError(Q,"loadFragment",!!a,{range:F,fragIndex:t,url:a||this.url}),e.abrupt("return");case 18:(o=d.data)&&F&&F.length>=2&&(null==o?void 0:o.byteLength)===F[1]-F[0]+1?(this._receiveDataPos=F[0]+(null==o?void 0:o.byteLength),this._loadSuccessCallBack=n,this.adaptTimeRange[t].downloaded=!0,this.cacheRepeatData(this.adaptTimeRange[t].repeatRange,F,o),this._mux(o,F[0],t,!0)):(R=kl(null==d||null===(s=d.response)||void 0===s?void 0:s.headers),this.log(Ht.LOG,"[FragLoadDowned check false, retry load],fragmentIdx,",t,",dataLen,",null==o?void 0:o.byteLength,JSON.stringify(F),JSON.stringify(R),r),B=new Error("dataLen not match"),this.resetRepeatInfo(),u=this.adaptTimeRange[t],this.emit(Hl,[u.startTime,u.endTime]),this.loadError(B,"loadFragment",!!a,{range:F,fragIndex:t,url:r,headers:R})),e.next=35;break;case 22:if(e.prev=22,e.t0=e.catch(8),!(Z=(null===e.t0||void 0===e.t0||null===(h=e.t0.options)||void 0===h||null===(V=h.priOptions)||void 0===V?void 0:V.type)===jl||!!a)){e.next=33;break}return c.pcdn_download_failed_cnt++,this._pcdnNodeList.shift(),this.log(Ht.ERROR,"[loadAllFragmentData] ,pcdn load err, retry use cdn,fragIndex",t,e.t0.isTimeout||(null===e.t0||void 0===e.t0||null===(m=e.t0.response)||void 0===m?void 0:m.status),null===e.t0||void 0===e.t0?void 0:e.t0.message),e.next=31,this.loadAllFragmentData(t,n,U,!0);case 31:e.next=34;break;case 33:this.log(Ht.ERROR,"[MP4] loadAllFragmentData error",{fragIndex:t,range:JSON.stringify(F)},e.t0.isTimeout||(null===e.t0||void 0===e.t0||null===(p=e.t0.response)||void 0===p?void 0:p.status),null===e.t0||void 0===e.t0?void 0:e.t0.message);case 34:this.loadError(e.t0,"loadFragment",Z,{range:F,fragIndex:t,url:e.t0.url||(Z?a:this.url)});case 35:case"end":return e.stop()}}),e,this,[[8,22]])}))),function(e,t,U){return n.apply(this,arguments)})},{key:"currentLoadUseUrl",value:function(){return this._isUseCDN?this.url:(null===(e=this._pcdnNodeList)||void 0===e?void 0:e.length)>0?this._pcdnNodeList[0].url:"";var e}},{key:"getCurSwitchPCDNCnt",value:function(){return this._PCDNSwitchCnt}},{key:"selectedPCDN",value:function(e){if(this._PCDNState!==_l&&!e){var t;if(this.isUsePCDN()){if(this._isUseCDN){if(this._switchPCDNCallBack){var n=this._switchPCDNCallBack();n>0&&(this.options.switchPCDNMaxCnt=n)}if(this._PCDNSwitchCnt>=this.options.switchPCDNMaxCnt)return this._isUseCDN=!0,this.log(Ht.LOG,"cdn switch pcdn outlimit, curSwitchCnt ,",this._PCDNSwitchCnt,",maxCnt,",this.options.switchPCDNMaxCnt),null;this._PCDNSwitchCnt++,this.log(Ht.LOG,"cdn switch pcdn, curSwitchCnt,",this._PCDNSwitchCnt,",maxCnt,",this.options.switchPCDNMaxCnt)}this._isUseCDN=!1,t=bl.extUrl(this._pcdnNodeList[0].url,{__vid:this.options.vid}),this._lastPCDNUrl!==t&&(this.emit(Dl,t),this._lastPCDNUrl=t,this.pcdnVVStat.conn_req_num+=1),c.pcdn_download_request_cnt++}else this._isUseCDN||(this.log(Ht.LOG,"pcdn switch cdn PCDNSwitchCnt,",this._PCDNSwitchCnt,",maxCnt,",this.options.switchPCDNMaxCnt),this.pcdnVVStat.conn_jump_num+=1),this._isUseCDN=!0;return t}this._isUseCDN=!0}},{key:"cancelLoading",value:(t=Y(x().mark((function e(){return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.MP4Loader){e.next=3;break}return e.next=3,this.MP4Loader.cancel();case 3:this._optionDataLenInfo[jl]&&this._optionDataLenInfo[jl]>0&&(this.emit(wl,{load_type:jl,len:this._optionDataLenInfo[jl]}),this._optionDataLenInfo[jl]=0),this._optionDataLenInfo[Pl]&&this._optionDataLenInfo[Pl]>0&&(this.emit(wl,{load_type:Pl,len:this._optionDataLenInfo[Pl]}),this._optionDataLenInfo[Pl]=0);case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"updateUrl",value:function(e,t){var n=bl.getHostFromUrl(e);this._defaultDomain||(this._defaultDomain=n),n.indexOf("www.")<0?this._domain=n:this._domain=this._defaultDomain,this.url=e,this.backUrl=t||[]}},{key:"getDataBitRate",value:function(e){return this._segmentToBitRateMap.get(e)}},{key:"checkCodecH265",value:function(){return this.meta&&(this.meta.videoCodec.indexOf("hvc1")>-1||this.meta.videoCodec.indexOf("hev1")>-1)}},{key:"checkCodecH266",value:function(){return this.meta&&this.meta.videoCodec.indexOf("bvc2")>-1}},{key:"destroy",value:function(){this.hasDestroyed||(this.resetTansmuxer(),this.transmuxerWorkerControl&&this.transmuxerWorkerControl.destroy(),this.fileSize=0,this._isPending=!1,this.metaLoading=!1,this.resetRepeatInfo(),delete this._repeatInfo.data,this._bitRateInfoMap.clear(),this._segmentToBitRateMap.clear(),this.MP4Loader&&(this.MP4Loader.cancel(),this.MP4Loader.destroy()),this.removeAllListeners(),this.hasDestroyed=!0,this.pcdnVVStat=this.resetPCDNVVStat())}},{key:"resetPCDNVVStat",value:function(){return{try_req_node:0,req_node_succ:0,has_ret_node:0,conn_req_num:0,conn_fail_num:0,conn_jump_num:0}}},{key:"resetTansmuxer",value:function(){var e;null===(e=this.resetDemuxSampleIdx)||void 0===e||e.call(this),this.MP4Demuxer&&this.MP4Demuxer.reset(),this.MP4Demuxer=null,this.FMP4Remuxer&&this.FMP4Remuxer.reset(),this.FMP4Remuxer=null,this.transmuxerWorkerControl&&this.transmuxerWorkerControl.reset()}},{key:"getMediaEndTime",value:function(){if(this._mediaEndTime>0)return this._mediaEndTime;var e=this.videoTrak,t=this.audioTrak;if((null==e?void 0:e.length)>0){var n=e[e.length-1].endTime;this._mediaEndTime=this._mediaEndTime<0?n:Math.min(n,this._mediaEndTime)}if((null==t?void 0:t.length)>0){var U=t[t.length-1].endTime;this._mediaEndTime=this._mediaEndTime<0?U:Math.min(U,this._mediaEndTime)}return this._mediaEndTime}}],[{key:"pcdnDownLoadReqCnt",get:function(){var e=c.pcdn_download_request_cnt,t=c.pcdn_download_failed_cnt;return c.pcdn_download_request_cnt=0,c.pcdn_download_failed_cnt=0,{pcdn_download_request_cnt:e,pcdn_download_failed_cnt:t}}},{key:"getDefaultConfig",value:function(){return{onProcessMinLen:1024,xhrSetup:null,chunkSize:8e5,isCache:!1,playerId:"",vid:"",afterLoadeddataCallBackLen:0,ext:{}}}}]),c}(tt);H(ql,"pcdn_download_request_cnt",0),H(ql,"pcdn_download_failed_cnt",0);var $l=function(e){P(n,e);var t=q(n);function n(e,U,i){var l,F=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=arguments.length>4?arguments[4]:void 0,r=arguments.length>5?arguments[5]:void 0;return M(this,n),(l=t.call(this,e,U,i,F,a,r))._logTag="".concat(r,"_").concat(Xn)||"",l}return w(n,[{key:"updateAdaptTimeRange",value:function(e,t){this._lastTargetDur=t;for(var n=this.adaptTimeRange,U=0;U<n.length;U++){var i=n[U].timeRangeIdx;if(e>=i[0]&&e<i[1])return this.log(Ht.LOG,"has adaptTimeRange,startSrcIdx, ",e,",adaptTimeRangeIdx",U,", dur,",t,JSON.stringify(n[U])),U}var l=n.length>0?n[n.length-1].timeRangeIdx[1]:0;if(l>=this.timeRange.length)return n.length-1;for(;l<e;){var F=this.timeRange[l].startTime,a=this.timeRange[l].endTime,r={startTime:F,endTime:a,timeRangeIdx:[l,l+1],duration:a-F,downloaded:!1,isLoading:!1};this.adaptTimeRange.push(r),this.updateTimeRangeInAdaptTimeRangeIdx(r.timeRangeIdx,this.adaptTimeRange.length-1),this.log(Ht.LOG,"gap adaptTimeRange,adaptTimeRangeIdx, ",this.adaptTimeRange.length-1,JSON.stringify(r)),l++}for(var d=0,Q=l,o=l;o<this.timeRange.length;o++){if(!(d<t)){Q=o;break}d+=this.timeRange[o].endTime-this.timeRange[o].startTime}o===this.timeRange.length&&(Q=this.timeRange.length);var s=[l,Q],c=this.timeRange[s[0]].startTime,R=s[1]===this.timeRange.length?this.timeRange[s[1]-1].endTime:this.timeRange[s[1]].startTime,B={startTime:c,endTime:R,timeRangeIdx:s,duration:R-c,downloaded:!1,isLoading:!1};return this.log(Ht.LOG,"update adaptTimeRange,startIdx,",s[0],", dur,",t,JSON.stringify(B)),this.adaptTimeRange.push(B),this.updateTimeRangeInAdaptTimeRangeIdx(s,this.adaptTimeRange.length-1),this.adaptTimeRange.length-1}},{key:"updateTimeRangeInAdaptTimeRangeIdx",value:function(e,t){for(var n=e[0];n<e[1];n++)n<this.timeRange.length&&(this.timeRange[n].adaptTimeRangeIdx=t)}},{key:"getAdaptIdxBySrcIdx",value:function(e,t){var n,U=this.adaptTimeRange.length;if(!t&&e>=(null===(n=this.adaptTimeRange[U-1])||void 0===n?void 0:n.timeRangeIdx[1])){var i=this._lastTargetDur||5;this.updateAdaptTimeRange(e,i)}for(var l=0;l<this.adaptTimeRange.length;l++){var F=this.adaptTimeRange[l].timeRangeIdx;if(F&&e>=F[0]&&e<F[1])return l}return-1}},{key:"getFragmentIdx",value:function(e){var t,n;if(this.videoTrak.length){if(t=this.videoTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),n=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),t&&n)return Math.min(t.index,n.index);if(t||n)return t?t.index:n.index;var U=Number.MAX_VALUE;return this.videoTrak&&this.videoTrak.length>0&&(U=this.videoTrak.length-1),this.audioTrak&&this.audioTrak.length>0&&(U=Math.min(this.audioTrak.length-1,U)),U}return(n=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})))?n.index:0}},{key:"resetFragmentLoadState",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.log(Ht.LOG,", resetFragmentLoadState, fragIndex, ",e,",changeBitrate,",t);for(var n=0;n<this.adaptTimeRange.length;n++)if(n<e?(this.adaptTimeRange[n].downloaded=!0,this.adaptTimeRange[n].isLoading=!0):(this.adaptTimeRange[n].downloaded=!1,this.adaptTimeRange[n].isLoading=!1),t){this.adaptTimeRange[n].range=null;var U=this.adaptTimeRange[n].timeRangeIdx;if(U[0]>=this.timeRange.length){this.log(Ht.WARN,"fix adaptTimeRange fragIndex",e," ,timeRangeIdx[0] >= this.timeRange.length, so end",U[0],this.timeRange.length,",endFragment,",n),this.adaptTimeRange=this.adaptTimeRange.slice(0,n);break}U[1]>=this.timeRange.length&&(this.log(Ht.WARN,"fix adaptTimeRange fragIndex",e," ,timeRangeIdx[1],",U[1],">>>>",this.timeRange.length,",endFragment,",n),U[1]=this.timeRange.length,this.adaptTimeRange=this.adaptTimeRange.slice(0,n+1)),this.adaptTimeRange[n].startTime=this.timeRange[U[0]].startTime,this.adaptTimeRange[n].endTime=U[1]>=this.timeRange.length?this.timeRange[this.timeRange.length-1].endTime:this.timeRange[U[1]].endTime,this.adaptTimeRange[n].range=this.getFragRange(n)}}},{key:"calculateRange",value:function(e){var t,n,U,i,l=null,F=null,a=null,r=null,d=e<this.adaptTimeRange.length?this.adaptTimeRange[e].timeRangeIdx:null;if(!d)return this.log(Ht.warn,"calculateRange err",e,JSON.stringify(this.adaptTimeRange)),[];var Q=d[0],o=d[1];this.log(Ht.LOG,"getFragRange, timeRangeIdx,",JSON.stringify(d));var s=this.videoTrak;s&&(l=Q<s.length?s[Q]:s[s.length-1],F=o<s.length?s[o-1]:s[s.length-1]);var c=this.audioTrak;c&&(a=Q<c.length?c[Q]:c[c.length-1],r=o<c.length?c[o-1]:c[c.length-1]);var R=[Math.min((null===(t=l)||void 0===t?void 0:t.range[0])||1/0,(null===(n=a)||void 0===n?void 0:n.range[0])||1/0),Math.max(null===(U=F)||void 0===U?void 0:U.range[1],null===(i=r)||void 0===i?void 0:i.range[1])];return this.log(Ht.LOG,"calculateRange",e,R[0],"-",R[1]),R}},{key:"getTimeRangeByIdx",value:function(e){var t,n,U,i,l=null,F=this.videoTrak;F&&(l=e<F.length?F[e]:F[F.length-1]);var a=null,r=this.audioTrak;return r&&(a=e<r.length?r[e]:r[r.length-1]),[Math.min((null===(t=l)||void 0===t?void 0:t.range[0])||1/0,(null===(n=a)||void 0===n?void 0:n.range[0])||1/0),Math.max((null===(U=l)||void 0===U?void 0:U.range[1])-1||0,(null===(i=a)||void 0===i?void 0:i.range[1])-1||0)]}},{key:"getFragRange",value:function(e){var t;if(e<this.adaptTimeRange.length&&null!==(t=this.adaptTimeRange[e])&&void 0!==t&&t.range)return this.log(Ht.LOG,"getFragRange exist",e,JSON.stringify(this.adaptTimeRange[e].range)),this.adaptTimeRange[e].range;var n=this.calculateRange(e);if(e<this.adaptTimeRange.length){this.adaptTimeRange[e].range=n;var U=this.adaptTimeRange[e].timeRangeIdx[1];if(U<this.timeRange.length){var i=this.getTimeRangeByIdx(U);(null==i?void 0:i.length)>1&&i[0]<i[1]&&n[1]>i[0]&&(this.adaptTimeRange[e].repeatRange=[i[0],n[1]])}}return n}},{key:"getSubRange",value:function(e,t,n){for(var U=this.adaptTimeRange[e].timeRangeIdx,i=U[0],l=U[0];l<U[1];l++)if(t>=this.timeRange[l].startTime&&t<this.timeRange[l].endTime){i=l;break}var F=[this.getSrcFragRange(i)[0],n[1]];return this.log(Ht.LOG,">>>>>getSubRange finalRange ",JSON.stringify(F),",oldRange,",JSON.stringify(n)),F}},{key:"getSrcFragRange",value:function(e){var t,n,U,i,l=null,F=null;this.log(Ht.LOG,"getFragRange, timeRangeIdx, srcFragment,",JSON.stringify(e));var a=this.videoTrak;a&&(l=e<a.length?a[e]:a[a.length-1]);var r=this.audioTrak;r&&(F=e<r.length?r[e]:r[r.length-1]);var d=[Math.min((null===(t=l)||void 0===t?void 0:t.range[0])||1/0,(null===(n=F)||void 0===n?void 0:n.range[0])||1/0),Math.max((null===(U=l)||void 0===U?void 0:U.range[1])-1||0,(null===(i=F)||void 0===i?void 0:i.range[1])-1||0)];return this.log(Ht.LOG,",getSrcFragRange",e,d),d}},{key:"getSamplesRange",value:function(e,t){var n=[],U=this.adaptTimeRange[e].timeRangeIdx;switch(t){case"video":if(this.videoTrak&&U[0]<this.videoTrak.length){var i=this.videoTrak[U[0]].frames;n.push(i[0].index);var l=this.videoTrak.length,F=U[1]-1,a=F<l?this.videoTrak[F].frames:this.videoTrak[l-1].frames;n.push(a[a.length-1].index)}break;case"audio":if(this.audioTrak&&U[0]<this.audioTrak.length){var r=this.audioTrak[U[0]].frames;n.push(r[0].index);var d=this.audioTrak.length,Q=U[1]-1,o=Q<d?this.audioTrak[Q].frames:this.audioTrak[d-1].frames;n.push(o[o.length-1].index)}break;default:console.warn("[getSamplesRange] type ",t," is invalid")}return n}}]),n}(ql),eF=function(e){P(n,e);var t=q(n);function n(e,U,i){var l,F=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=arguments.length>4?arguments[4]:void 0,r=arguments.length>5?arguments[5]:void 0;return M(this,n),(l=t.call(this,e,U,i,F,a,r))._logTag="".concat(r,"_").concat(Ln)||"",l}return w(n,[{key:"updateAdaptTimeRange",value:function(e,t,n){this._lastTargetDur=t;var U=this.adaptTimeRange,i=this.timeRange;if(0===(null==U?void 0:U.length)){var l;null!==(l=i[0])&&void 0!==l&&l.range||(i[0].range=this.calculateRange(0));var F=i[0],a={startTime:F.startTime,endTime:F.endTime,range:F.range,duration:F.duration,downloaded:!1,isLoading:!1};return U.push(a),this.log(Ht.LOG,"first adaptTimeRange,adaptTimeRangeIdx",this.adaptTimeRange.length-1,JSON.stringify(a)),this.adaptTimeRange.length-1}if(null!==e&&e>=0){var r,d;null!==(r=i[e])&&void 0!==r&&r.range||(i[e].range=this.calculateRange(e),this.log(Ht.LOG,"adaptTimeRange update timeRange.range ,fragmentIdx",e,JSON.stringify(i[e])));var Q=this.getAdaptIdxBySrcIdx(e,!0);if(Q>=0)return this.log(Ht.LOG," adaptTimeRange find range of timeRange,timeRangeIdx,",e,JSON.stringify(i[e])," ,addaptIdx,",Q,JSON.stringify(U[Q])),Q;for(var o=null===(d=U[U.length-1])||void 0===d?void 0:d.range;(null===(s=i[e])||void 0===s?void 0:s.range[0])>(null==o?void 0:o[1]);){var s,c=this.createAdaptTimeRange(t,n);if(c){var R;if((null==c?void 0:c.range[1])>=(null===(R=i[e])||void 0===R?void 0:R.range[0])){this.log(Ht.LOG,"gap adaptTimeRange ignore,adaptTimeRangeIdx",JSON.stringify(c));break}U.push(c);var B=U.length;U[B-1].isLoading=!0,U[B-1].downloaded=!0,this.log(Ht.LOG,"gap adaptTimeRange,adaptTimeRangeIdx",this.adaptTimeRange.length-1,JSON.stringify(c))}}}var u=this.createAdaptTimeRange(t,n);return u&&(U.push(u),this.log(Ht.LOG,"update adaptTimeRange,startIdx",this.adaptTimeRange.length-1,JSON.stringify(u))),this.adaptTimeRange.length-1}},{key:"createAdaptTimeRange",value:function(e,t,n){this.log(Ht.LOG,"createAdaptTimeRange, mergeDuration, ",e,",loadSize,",t,", adaptIdx,",n);var U=this.adaptTimeRange,i=U[!n||n<=0?U.length-1:n-1],l=i.range[1]+1;if(l>=this.fileSize)return null;(!t||t<0)&&(t=this.getCurLoadSize(e));var F=Math.min(l+t,this.fileSize-1);return{startTime:i.endTime,endTime:this.updateAdaptRangeEndTime(F),range:[l,F],duration:e,downloaded:!1,isLoading:!1}}},{key:"getCurLoadSize",value:function(e){(!e||e<=0)&&(e=5);var t=Math.floor(this._bitRate/8||this.fileSize/this.meta.duration);return Math.ceil(e*t)}},{key:"getFragRange",value:function(e){var t,n=this.adaptTimeRange;if(e<n.length&&null!==(t=n[e])&&void 0!==t&&t.range)return this.log(Ht.LOG,"getFragRange exist",e,JSON.stringify(n[e].range)),n[e].range;var U=this.updateAdaptTimeRange(null,n[e].duration);return this.adaptTimeRange[U].range}},{key:"getSamplesRange",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1,U=[],i=this._lastDemuxSampleIdxRange,l=i.video,F=i.audio;switch(t){case"video":n<0?U.push(0===l?0:l+1,this.meta.videoSamplesLen-1):this.resetDemuxSampleIdx();break;case"audio":n<0?U.push(0===F?0:F+1,this.meta.audioSamplesLen-1):this.resetDemuxSampleIdx();break;default:console.warn("[getSamplesRange] type ",t," is invalid")}return U}},{key:"getAdaptIdxBySrcIdx",value:function(e,t){var n=this.adaptTimeRange,U=this.timeRange;if(null==n||!n.length||null==U||!U.length)return-1;var i=n.length;if(t)return this.getAdaptIdx(e);var l=this.getAdaptIdx(e);if(l>=0)return this.log(Ht.LOG,",getAdaptIdxBySrcIdx, fragIndex, ",e,",adaptIdx,",l),l;if(n[i-1].range[1]<this.fileSize-1)for(;(null===(F=U[e].range)||void 0===F?void 0:F[1])<(null===(a=n[l].range)||void 0===a?void 0:a[1]);){var F,a;this.updateAdaptTimeRange(e,this._lastTargetDur||5);var r=this.getAdaptIdx(e);if(r>0)return this.log(Ht.LOG,"new make, getAdaptIdxBySrcIdx, fragIndex, ",e,",adaptIdx,",l),r}return-1}},{key:"getAdaptIdx",value:function(e){var t,n=this.adaptTimeRange,U=this.timeRange,i=null===(t=U[e])||void 0===t?void 0:t.range;i||(i=bl.getFragRange(e,this.videoTrak,this.audioTrak),U[e].range=i,this.log(Ht.LOG,",updateTimeRange.range, fragIndex, ",e,JSON.stringify(U[e])));var l=n.findIndex((function(e){var t,n;return(null==e?void 0:e.range[0])<=(null===(t=i)||void 0===t?void 0:t[0])&&(null==e?void 0:e.range[1])>=(null===(n=i)||void 0===n?void 0:n[0])}));return this.log(Ht.LOG,",getAdaptIdx, srcIdx, ",e,JSON.stringify(U[e],", adaptIdx,",JSON.stringify(n[l]))),l}},{key:"resetFragmentLoadState",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.log(Ht.LOG,", resetFragmentLoadState, fragIndex, ",e,",changeBitrate,",t);for(var n=this.adaptTimeRange,U=0;U<n.length;U++)if(U<e?(n[U].downloaded=!0,n[U].isLoading=!0):(n[U].downloaded=!1,n[U].isLoading=!1),t)if(n[U].range=null,0===U){var i=this.timeRange[U],l=i.range,F=i.startTime,a=i.endTime,r=i.duration;l||(this.timeRange[U].range=this.calculateRange(U)),n[U].range=this.timeRange[U].range,n[U].startTime=F,n[U].endTime=a,n[U].duration=r}else{var d=this.createAdaptTimeRange(n[U].duration,null,U);d?(n[U].range=d.range,n[U].startTime=n[U-1].endTime,n[U].endTime=d.endTime,n[U].duration=n[U].endTime-n[U].startTime):(this.adaptTimeRange=n.slice(0,U),this.log(Ht.WARN,"fix adaptTimeRange fragIndex",U,JSON.stringify(this.adaptTimeRange[U-1])))}}},{key:"getSubRange",value:function(e,t,n){var U,i,l=this.adaptTimeRange,F=this.timeRange,a=null===(U=l[e])||void 0===U?void 0:U.range,r=this.getFragmentIdx(t);null!==(i=F[r])&&void 0!==i&&i.range||(F[r].range=this.calculateRange(r));var d=[F[r].range[0],a[1]];return this.log(Ht.LOG,">>>>>getSubRange finalRange ",JSON.stringify(d),",oldRange,",JSON.stringify(n),",adaptIdx,",e,",srcFragIndex,",r,JSON.stringify(F[r])),d}},{key:"resetDemuxSampleIdx",value:function(e,t){if(e){var n=this.videoTrak,U=this.audioTrak;if(n){var i=n.find((function(t){return t.startTime<=e&&t.endTime>e}));if(i){var l=i.frames;this._lastDemuxSampleIdxRange.video=Math.max(l[0].index-1,0)}}if(U){var F=U.find((function(t){return t.startTime<=e&&t.endTime>e}));if(F){var a=F.frames;this._lastDemuxSampleIdxRange.audio=Math.max(a[0].index-1,0)}}this.log(Ht.LOG,"resetDemuxSampleIdx",JSON.stringify(this._lastDemuxSampleIdxRange))}else this._lastDemuxSampleIdxRange={video:0,audio:0}}},{key:"updateAdaptRangeEndTime",value:function(e){var t=this.findFrameInfoByRange("video",e),n=this.findFrameInfoByRange("audio",e),U=-1,i=-1;t&&(U=t.pts/this.meta.videoTimescale),n&&(i=(n.pts||n.dts)/this.meta.audioTimescale);return U>=0&&i>=0?Math.min(U,i):U>=0?U:i}},{key:"findFrameInfoByRange",value:function(e,t){var n,U="video"===e?this.videoTrak:this.audioTrak;if(U){var i=U.findIndex((function(e){return e.range[0]>t})),l=Math.max(0,i-1);if(l>=0){for(var F=U[l].frames,a=F.length-1;a>=0&&!(F[a].offset+F[a].size<=t);a--);a<0&&(a=0),n=F[a]}this.log(Ht.LOG,"findFrameInfoByRange, findTrakIdx",l,", frameInfo,",JSON.stringify(n),",type,",e,",rangeEnd,",t)}return n}},{key:"calculateRange",value:function(e){return bl.getFragRange(e,this.videoTrak,this.audioTrak)}}]),n}(ql);function tF(){var e=window.navigator.userAgent,t=e.indexOf("MSIE "),n=e.indexOf("Trident/");return t>0||n>0}function nF(){return/Safari/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)}function UF(){var e,t,n,U,i,l,F,a;return!(!navigator.requestMediaKeySystemAccess||(U=nF(),i=tF(),e=navigator.mimeTypes,t=navigator.userAgent,n=!1,e&&t.indexOf("Chrome")>1&&(n=Object.keys(e).some((function(t){return!!(e[t].type&&e[t].type.indexOf("360")>-1)||!!(e[t].type&&e[t].type.indexOf("application/vnd.chromium.remoting-viewer")>-1)||!!(e[t].description&&e[t].description.indexOf("360")>-1)}))),l=n,F=navigator.userAgent.indexOf("Firefox")>0,a=navigator.userAgent.indexOf("Edge")>0,U||i||l||F||a))}function iF(){try{if("object"===("undefined"==typeof WebAssembly?"undefined":I(WebAssembly))&&"function"==typeof WebAssembly.instantiate){var e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(t){console.log(t)}return!1}function lF(){var e=window.MediaSource=window.MediaSource||window.WebKitMediaSource;return e&&"function"==typeof e.isTypeSupported}var FF=function(){function e(){var t,n;M(this,e);var U=new Promise((function(e,U){t=e,n=U}));return U.resolve=function(e){t(e),U.state="fulfilled"},U.reject=function(e){n(e),U.state="rejected",U.isBreak="DESTROYED"===e},U.state="pending",U}return w(e,[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}]),e}(),aF=function(){function e(t){var n=this;M(this,e),H(this,"onTick",(function(e){n.cancelPending&&n.cancelPending(),n.alive&&(n.onTick_&&n.onTick_(),e&&e())})),this.onTick_=t,this.timeoutId=null,this.alive=!0}return w(e,[{key:"tickAfter",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return this.cancelPending?this.cancelPending():this.cancelPending=function(){clearTimeout(t.timeoutId),t.timeoutId=null},this.alive=!0,this.timeoutId=setTimeout(this.onTick,1e3*e,n),this}},{key:"tickEvery",value:function(e){var t=this;this.tickAfter(e,(function(){t.tickEvery(e)}))}},{key:"stop",value:function(){this.alive=!1,this.cancelPending&&(this.cancelPending(),this.cancelPending=null)}}]),e}(),rF="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoKXt0PWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciBlPXt9LHI9T2JqZWN0LnByb3RvdHlwZSxuPXIuaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxyKXt0W2VdPXIudmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGYodCxlLHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Zih7fSwiIil9Y2F0Y2goail7Zj1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cn19ZnVuY3Rpb24gcyh0LGUscixuKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGg/ZTpoLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgSShufHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOkUodCxyLHUpfSksYX1mdW5jdGlvbiBsKHQsZSxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLHIpfX1jYXRjaChqKXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzpqfX19ZS53cmFwPXM7dmFyIHA9e307ZnVuY3Rpb24gaCgpe31mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIGQoKXt9dmFyIHk9e307Zih5LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIGc9T2JqZWN0LmdldFByb3RvdHlwZU9mLG09ZyYmZyhnKHgoW10pKSk7bSYmbSE9PXImJm4uY2FsbChtLGEpJiYoeT1tKTt2YXIgYj1kLnByb3RvdHlwZT1oLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHkpO2Z1bmN0aW9uIFModCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtmKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIHcodCxlKXtmdW5jdGlvbiByKG8saSxhLHUpe3ZhciBjPWwodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciBmPWMuYXJnLHM9Zi52YWx1ZTtyZXR1cm4gcyYmIm9iamVjdCI9PXR5cGVvZiBzJiZuLmNhbGwocywiX19hd2FpdCIpP2UucmVzb2x2ZShzLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe3IoIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtyKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShzKS50aGVuKChmdW5jdGlvbih0KXtmLnZhbHVlPXQsYShmKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gcigidGhyb3ciLHQsYSx1KX0pKX11KGMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7cih0LG4sZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBFKHQsZSxyKXt2YXIgbj0ic3VzcGVuZGVkU3RhcnQiO3JldHVybiBmdW5jdGlvbihvLGkpe2lmKCJleGVjdXRpbmciPT09bil0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZigiY29tcGxldGVkIj09PW4pe2lmKCJ0aHJvdyI9PT1vKXRocm93IGk7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9byxyLmFyZz1pOzspe3ZhciBhPXIuZGVsZWdhdGU7aWYoYSl7dmFyIHU9VChhLHIpO2lmKHUpe2lmKHU9PT1wKWNvbnRpbnVlO3JldHVybiB1fX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYoInN1c3BlbmRlZFN0YXJ0Ij09PW4pdGhyb3cgbj0iY29tcGxldGVkIixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO249ImV4ZWN1dGluZyI7dmFyIGM9bCh0LGUscik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG49ci5kb25lPyJjb21wbGV0ZWQiOiJzdXNwZW5kZWRZaWVsZCIsYy5hcmc9PT1wKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG49ImNvbXBsZXRlZCIsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBUKHQsZSl7dmFyIHI9ZS5tZXRob2Qsbj10Lml0ZXJhdG9yW3JdO2lmKHZvaWQgMD09PW4pcmV0dXJuIGUuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmdC5pdGVyYXRvci5yZXR1cm4mJihlLm1ldGhvZD0icmV0dXJuIixlLmFyZz12b2lkIDAsVCh0LGUpLCJ0aHJvdyI9PT1lLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKGUubWV0aG9kPSJ0aHJvdyIsZS5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxwO3ZhciBvPWwobix0Lml0ZXJhdG9yLGUuYXJnKTtpZigidGhyb3ciPT09by50eXBlKXJldHVybiBlLm1ldGhvZD0idGhyb3ciLGUuYXJnPW8uYXJnLGUuZGVsZWdhdGU9bnVsbCxwO3ZhciBpPW8uYXJnO3JldHVybiBpP2kuZG9uZT8oZVt0LnJlc3VsdE5hbWVdPWkudmFsdWUsZS5uZXh0PXQubmV4dExvYywicmV0dXJuIiE9PWUubWV0aG9kJiYoZS5tZXRob2Q9Im5leHQiLGUuYXJnPXZvaWQgMCksZS5kZWxlZ2F0ZT1udWxsLHApOmk6KGUubWV0aG9kPSJ0aHJvdyIsZS5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxlLmRlbGVnYXRlPW51bGwscCl9ZnVuY3Rpb24gTyh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBfKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBJKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goTyx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiB4KHQpe2lmKHQpe3ZhciBlPXRbYV07aWYoZSlyZXR1cm4gZS5jYWxsKHQpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0Lm5leHQpcmV0dXJuIHQ7aWYoIWlzTmFOKHQubGVuZ3RoKSl7dmFyIHI9LTEsbz1mdW5jdGlvbiBlKCl7Zm9yKDsrK3I8dC5sZW5ndGg7KWlmKG4uY2FsbCh0LHIpKXJldHVybiBlLnZhbHVlPXRbcl0sZS5kb25lPSExLGU7cmV0dXJuIGUudmFsdWU9dm9pZCAwLGUuZG9uZT0hMCxlfTtyZXR1cm4gby5uZXh0PW99fXJldHVybntuZXh0OlJ9fWZ1bmN0aW9uIFIoKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiB2LnByb3RvdHlwZT1kLG8oYiwiY29uc3RydWN0b3IiLHt2YWx1ZTpkLGNvbmZpZ3VyYWJsZTohMH0pLG8oZCwiY29uc3RydWN0b3IiLHt2YWx1ZTp2LGNvbmZpZ3VyYWJsZTohMH0pLHYuZGlzcGxheU5hbWU9ZihkLGMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT12fHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxkKToodC5fX3Byb3RvX189ZCxmKHQsYywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShiKSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxTKHcucHJvdG90eXBlKSxmKHcucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPXcsZS5hc3luYz1mdW5jdGlvbih0LHIsbixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyB3KHModCxyLG4sbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sUyhiKSxmKGIsYywiR2VuZXJhdG9yIiksZihiLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZihiLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxyPVtdO2Zvcih2YXIgbiBpbiBlKXIucHVzaChuKTtyZXR1cm4gci5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7ci5sZW5ndGg7KXt2YXIgbj1yLnBvcCgpO2lmKG4gaW4gZSlyZXR1cm4gdC52YWx1ZT1uLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPXgsSS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkkscmVzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dm9pZCAwLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChfKSwhdClmb3IodmFyIGUgaW4gdGhpcykidCI9PT1lLmNoYXJBdCgwKSYmbi5jYWxsKHRoaXMsZSkmJiFpc05hTigrZS5zbGljZSgxKSkmJih0aGlzW2VdPXZvaWQgMCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbih0KXtpZih0aGlzLmRvbmUpdGhyb3cgdDt2YXIgZT10aGlzO2Z1bmN0aW9uIHIocixuKXtyZXR1cm4gYS50eXBlPSJ0aHJvdyIsYS5hcmc9dCxlLm5leHQ9cixuJiYoZS5tZXRob2Q9Im5leHQiLGUuYXJnPXZvaWQgMCksISFufWZvcih2YXIgbz10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bz49MDstLW8pe3ZhciBpPXRoaXMudHJ5RW50cmllc1tvXSxhPWkuY29tcGxldGlvbjtpZigicm9vdCI9PT1pLnRyeUxvYylyZXR1cm4gcigiZW5kIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIHU9bi5jYWxsKGksImNhdGNoTG9jIiksYz1uLmNhbGwoaSwiZmluYWxseUxvYyIpO2lmKHUmJmMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX1lbHNlIGlmKHUpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIG89dGhpcy50cnlFbnRyaWVzW3JdO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJm4uY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxwKTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLHB9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgcj10aGlzLnRyeUVudHJpZXNbZV07aWYoci5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksXyhyKSxwfX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW2VdO2lmKHIudHJ5TG9jPT09dCl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBvPW4uYXJnO18ocil9cmV0dXJuIG99fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjp4KHQpLHJlc3VsdE5hbWU6ZSxuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dm9pZCAwKSxwfX0sZX1mdW5jdGlvbiBlKHQsZSxyLG4sbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLGM9dS52YWx1ZX1jYXRjaChmKXtyZXR1cm4gdm9pZCByKGYpfXUuZG9uZT9lKGMpOlByb21pc2UucmVzb2x2ZShjKS50aGVuKG4sbyl9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1lW3JdO28uZW51bWVyYWJsZT1vLmVudW1lcmFibGV8fCExLG8uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBvJiYoby53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbihvLmtleSksbyl9fWZ1bmN0aW9uIG4odCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgbilyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgZT9lOlN0cmluZyhlKX12YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIHIsbyxpLGE9dGhpczshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KSxyPXRoaXMsaT1mdW5jdGlvbih0KXthLmNhbmNlbFBlbmRpbmcmJmEuY2FuY2VsUGVuZGluZygpLGEuYWxpdmUmJihhLm9uVGlja18mJmEub25UaWNrXygpLHQmJnQoKSl9LChvPW4obz0ib25UaWNrIikpaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1pLHRoaXMub25UaWNrXz1lLHRoaXMudGltZW91dElkPW51bGwsdGhpcy5hbGl2ZT0hMH12YXIgZSxvLGk7cmV0dXJuIGU9dCxvPVt7a2V5OiJ0aWNrQWZ0ZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMscj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDtyZXR1cm4gdGhpcy5jYW5jZWxQZW5kaW5nP3RoaXMuY2FuY2VsUGVuZGluZygpOnRoaXMuY2FuY2VsUGVuZGluZz1mdW5jdGlvbigpe2NsZWFyVGltZW91dChlLnRpbWVvdXRJZCksZS50aW1lb3V0SWQ9bnVsbH0sdGhpcy5hbGl2ZT0hMCx0aGlzLnRpbWVvdXRJZD1zZXRUaW1lb3V0KHRoaXMub25UaWNrLDFlMyp0LHIpLHRoaXN9fSx7a2V5OiJ0aWNrRXZlcnkiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy50aWNrQWZ0ZXIodCwoZnVuY3Rpb24oKXtlLnRpY2tFdmVyeSh0KX0pKX19LHtrZXk6InN0b3AiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5hbGl2ZT0hMSx0aGlzLmNhbmNlbFBlbmRpbmcmJih0aGlzLmNhbmNlbFBlbmRpbmcoKSx0aGlzLmNhbmNlbFBlbmRpbmc9bnVsbCl9fV0sbyYmcihlLnByb3RvdHlwZSxvKSxpJiZyKGUsaSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH0oKSxpPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30sYT1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2goZSl7cmV0dXJuITB9fSx1PXt9LnRvU3RyaW5nLGM9ZnVuY3Rpb24odCl7cmV0dXJuIHUuY2FsbCh0KS5zbGljZSg4LC0xKX0sZj1jLHM9IiIuc3BsaXQsbD1mdW5jdGlvbih0KXtpZihudWxsPT10KXRocm93IFR5cGVFcnJvcigiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIit0KTtyZXR1cm4gdH0scD1hKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIj09Zih0KT9zLmNhbGwodCwiIik6T2JqZWN0KHQpfTpPYmplY3QsaD1sLHY9ZnVuY3Rpb24odCl7cmV0dXJuIHAoaCh0KSl9LGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuTWF0aD09TWF0aCYmdH0seT1kKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fGQoIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyl8fGQoIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmKXx8ZCgib2JqZWN0Ij09dHlwZW9mIGkmJmkpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGc9e2V4cG9ydHM6e319LG09IWEoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwxLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KVsxXX0pKSxiPXt9LFM9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0P251bGwhPT10OiJmdW5jdGlvbiI9PXR5cGVvZiB0fSx3PVMsRT15LmRvY3VtZW50LFQ9dyhFKSYmdyhFLmNyZWF0ZUVsZW1lbnQpLE89ZnVuY3Rpb24odCl7cmV0dXJuIFQ/RS5jcmVhdGVFbGVtZW50KHQpOnt9fSxfPU8sST0hbSYmIWEoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShfKCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KSkseD1TLFI9ZnVuY3Rpb24odCl7aWYoIXgodCkpdGhyb3cgVHlwZUVycm9yKFN0cmluZyh0KSsiIGlzIG5vdCBhbiBvYmplY3QiKTtyZXR1cm4gdH0saj1TLFA9ZnVuY3Rpb24odCxlKXtpZighaih0KSlyZXR1cm4gdDt2YXIgcixuO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZihyPXQudG9TdHJpbmcpJiYhaihuPXIuY2FsbCh0KSkpcmV0dXJuIG47aWYoImZ1bmN0aW9uIj09dHlwZW9mKHI9dC52YWx1ZU9mKSYmIWoobj1yLmNhbGwodCkpKXJldHVybiBuO2lmKCFlJiYiZnVuY3Rpb24iPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIWoobj1yLmNhbGwodCkpKXJldHVybiBuO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9LGs9bSxBPUksTD1SLE09UCxOPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtiLmY9az9OOmZ1bmN0aW9uKHQsZSxyKXtpZihMKHQpLGU9TShlLCEwKSxMKHIpLEEpdHJ5e3JldHVybiBOKHQsZSxyKX1jYXRjaChuKXt9aWYoImdldCJpbiByfHwic2V0ImluIHIpdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpO3JldHVybiJ2YWx1ZSJpbiByJiYodFtlXT1yLnZhbHVlKSx0fTt2YXIgRD1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX0sRj1iLEc9RCxDPW0/ZnVuY3Rpb24odCxlLHIpe3JldHVybiBGLmYodCxlLEcoMSxyKSl9OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFtlXT1yLHR9LHo9eSxVPUMscT1mdW5jdGlvbih0LGUpe3RyeXtVKHosdCxlKX1jYXRjaChyKXt6W3RdPWV9cmV0dXJuIGV9LFY9cSxXPSJfX2NvcmUtanNfc2hhcmVkX18iLEs9eVtXXXx8VihXLHt9KSxZPUs7KGcuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBZW3RdfHwoWVt0XT12b2lkIDAhPT1lP2U6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjoiMy4xMi4xIixtb2RlOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAyMSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSJ9KTt2YXIgSCxCLFE9Zy5leHBvcnRzLFg9bCxKPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QoWCh0KSl9LFo9SiwkPXt9Lmhhc093blByb3BlcnR5LHR0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuICQuY2FsbChaKHQpLGUpfSxldD0wLHJ0PU1hdGgucmFuZG9tKCksbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIlN5bWJvbCgiK1N0cmluZyh2b2lkIDA9PT10PyIiOnQpKyIpXyIrKCsrZXQrcnQpLnRvU3RyaW5nKDM2KX0sb3Q9eSxpdD15LGF0PWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dm9pZCAwfSx1dD1mdW5jdGlvbih0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/YXQob3RbdF0pfHxhdChpdFt0XSk6b3RbdF0mJm90W3RdW2VdfHxpdFt0XSYmaXRbdF1bZV19LGN0PXV0KCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiKXx8IiIsZnQ9eS5wcm9jZXNzLHN0PWZ0JiZmdC52ZXJzaW9ucyxsdD1zdCYmc3Qudjg7bHQ/Qj0oSD1sdC5zcGxpdCgiLiIpKVswXTw0PzE6SFswXStIWzFdOmN0JiYoIShIPWN0Lm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8SFsxXT49NzQpJiYoSD1jdC5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pKSYmKEI9SFsxXSk7dmFyIHB0LGh0PUImJitCLHZ0PWEsZHQ9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhdnQoKGZ1bmN0aW9uKCl7cmV0dXJuIVN0cmluZyhTeW1ib2woKSl8fCFTeW1ib2wuc2hhbSYmaHQmJmh0PDQxfSkpLHl0PWR0JiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yLGd0PXksbXQ9dHQsYnQ9bnQsU3Q9ZHQsd3Q9eXQsRXQ9USgid2tzIiksVHQ9Z3QuU3ltYm9sLE90PXd0P1R0OlR0JiZUdC53aXRob3V0U2V0dGVyfHxidCxfdD1mdW5jdGlvbih0KXtyZXR1cm4gbXQoRXQsdCkmJihTdHx8InN0cmluZyI9PXR5cGVvZiBFdFt0XSl8fChTdCYmbXQoVHQsdCk/RXRbdF09VHRbdF06RXRbdF09T3QoIlN5bWJvbC4iK3QpKSxFdFt0XX0sSXQ9TWF0aC5jZWlsLHh0PU1hdGguZmxvb3IsUnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQ9K3QpPzA6KHQ+MD94dDpJdCkodCl9LGp0PVJ0LFB0PU1hdGgubWluLGt0PWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/UHQoanQodCksOTAwNzE5OTI1NDc0MDk5MSk6MH0sQXQ9UnQsTHQ9TWF0aC5tYXgsTXQ9TWF0aC5taW4sTnQ9dixEdD1rdCxGdD1mdW5jdGlvbih0LGUpe3ZhciByPUF0KHQpO3JldHVybiByPDA/THQocitlLDApOk10KHIsZSl9LEd0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLHIsbil7dmFyIG8saT1OdChlKSxhPUR0KGkubGVuZ3RoKSx1PUZ0KG4sYSk7aWYodCYmciE9cil7Zm9yKDthPnU7KWlmKChvPWlbdSsrXSkhPW8pcmV0dXJuITB9ZWxzZSBmb3IoO2E+dTt1KyspaWYoKHR8fHUgaW4gaSkmJmlbdV09PT1yKXJldHVybiB0fHx1fHwwO3JldHVybiF0JiYtMX19LEN0PXtpbmNsdWRlczpHdCghMCksaW5kZXhPZjpHdCghMSl9LHp0PXt9LFV0PXR0LHF0PXYsVnQ9Q3QuaW5kZXhPZixXdD16dCxLdD1mdW5jdGlvbih0LGUpe3ZhciByLG49cXQodCksbz0wLGk9W107Zm9yKHIgaW4gbikhVXQoV3QscikmJlV0KG4scikmJmkucHVzaChyKTtmb3IoO2UubGVuZ3RoPm87KVV0KG4scj1lW28rK10pJiYoflZ0KGkscil8fGkucHVzaChyKSk7cmV0dXJuIGl9LFl0PVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl0sSHQ9S3QsQnQ9WXQsUXQ9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiBIdCh0LEJ0KX0sWHQ9YixKdD1SLFp0PVF0LCR0PW0/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24odCxlKXtKdCh0KTtmb3IodmFyIHIsbj1adChlKSxvPW4ubGVuZ3RoLGk9MDtvPmk7KVh0LmYodCxyPW5baSsrXSxlW3JdKTtyZXR1cm4gdH0sdGU9dXQoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiksZWU9bnQscmU9USgia2V5cyIpLG5lPWZ1bmN0aW9uKHQpe3JldHVybiByZVt0XXx8KHJlW3RdPWVlKHQpKX0sb2U9UixpZT0kdCxhZT1ZdCx1ZT16dCxjZT10ZSxmZT1PLHNlPSJwcm90b3R5cGUiLGxlPSJzY3JpcHQiLHBlPW5lKCJJRV9QUk9UTyIpLGhlPWZ1bmN0aW9uKCl7fSx2ZT1mdW5jdGlvbih0KXtyZXR1cm4iPCIrbGUrIj4iK3QrIjwvIitsZSsiPiJ9LGRlPWZ1bmN0aW9uKCl7dHJ5e3B0PWRvY3VtZW50LmRvbWFpbiYmbmV3IEFjdGl2ZVhPYmplY3QoImh0bWxmaWxlIil9Y2F0Y2gobyl7fXZhciB0LGUscjtkZT1wdD9mdW5jdGlvbih0KXt0LndyaXRlKHZlKCIiKSksdC5jbG9zZSgpO3ZhciBlPXQucGFyZW50V2luZG93Lk9iamVjdDtyZXR1cm4gdD1udWxsLGV9KHB0KTooZT1mZSgiaWZyYW1lIikscj0iamF2YSIrbGUrIjoiLGUuc3R5bGUuZGlzcGxheT0ibm9uZSIsY2UuYXBwZW5kQ2hpbGQoZSksZS5zcmM9U3RyaW5nKHIpLCh0PWUuY29udGVudFdpbmRvdy5kb2N1bWVudCkub3BlbigpLHQud3JpdGUodmUoImRvY3VtZW50LkY9T2JqZWN0IikpLHQuY2xvc2UoKSx0LkYpO2Zvcih2YXIgbj1hZS5sZW5ndGg7bi0tOylkZWxldGUgZGVbc2VdW2FlW25dXTtyZXR1cm4gZGUoKX07dWVbcGVdPSEwO3ZhciB5ZT1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbih0LGUpe3ZhciByO3JldHVybiBudWxsIT09dD8oaGVbc2VdPW9lKHQpLHI9bmV3IGhlLGhlW3NlXT1udWxsLHJbcGVdPXQpOnI9ZGUoKSx2b2lkIDA9PT1lP3I6aWUocixlKX0sZ2U9eWUsbWU9YixiZT1fdCgidW5zY29wYWJsZXMiKSxTZT1BcnJheS5wcm90b3R5cGU7bnVsbD09U2VbYmVdJiZtZS5mKFNlLGJlLHtjb25maWd1cmFibGU6ITAsdmFsdWU6Z2UobnVsbCl9KTt2YXIgd2U9e30sRWU9SyxUZT1GdW5jdGlvbi50b1N0cmluZzsiZnVuY3Rpb24iIT10eXBlb2YgRWUuaW5zcGVjdFNvdXJjZSYmKEVlLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIFRlLmNhbGwodCl9KTt2YXIgT2UsX2UsSWUseGU9RWUuaW5zcGVjdFNvdXJjZSxSZT14ZSxqZT15LldlYWtNYXAsUGU9ImZ1bmN0aW9uIj09dHlwZW9mIGplJiYvbmF0aXZlIGNvZGUvLnRlc3QoUmUoamUpKSxrZT1TLEFlPUMsTGU9dHQsTWU9SyxOZT1uZSxEZT16dCxGZT0iT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQiLEdlPXkuV2Vha01hcDtpZihQZXx8TWUuc3RhdGUpe3ZhciBDZT1NZS5zdGF0ZXx8KE1lLnN0YXRlPW5ldyBHZSksemU9Q2UuZ2V0LFVlPUNlLmhhcyxxZT1DZS5zZXQ7T2U9ZnVuY3Rpb24odCxlKXtpZihVZS5jYWxsKENlLHQpKXRocm93IG5ldyBUeXBlRXJyb3IoRmUpO3JldHVybiBlLmZhY2FkZT10LHFlLmNhbGwoQ2UsdCxlKSxlfSxfZT1mdW5jdGlvbih0KXtyZXR1cm4gemUuY2FsbChDZSx0KXx8e319LEllPWZ1bmN0aW9uKHQpe3JldHVybiBVZS5jYWxsKENlLHQpfX1lbHNle3ZhciBWZT1OZSgic3RhdGUiKTtEZVtWZV09ITAsT2U9ZnVuY3Rpb24odCxlKXtpZihMZSh0LFZlKSl0aHJvdyBuZXcgVHlwZUVycm9yKEZlKTtyZXR1cm4gZS5mYWNhZGU9dCxBZSh0LFZlLGUpLGV9LF9lPWZ1bmN0aW9uKHQpe3JldHVybiBMZSh0LFZlKT90W1ZlXTp7fX0sSWU9ZnVuY3Rpb24odCl7cmV0dXJuIExlKHQsVmUpfX12YXIgV2U9e3NldDpPZSxnZXQ6X2UsaGFzOkllLGVuZm9yY2U6ZnVuY3Rpb24odCl7cmV0dXJuIEllKHQpP19lKHQpOk9lKHQse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByO2lmKCFrZShlKXx8KHI9X2UoZSkpLnR5cGUhPT10KXRocm93IFR5cGVFcnJvcigiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK3QrIiByZXF1aXJlZCIpO3JldHVybiByfX19LEtlPXt9LFllPXt9LEhlPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLEJlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsUWU9QmUmJiFIZS5jYWxsKHsxOjJ9LDEpO1llLmY9UWU/ZnVuY3Rpb24odCl7dmFyIGU9QmUodGhpcyx0KTtyZXR1cm4hIWUmJmUuZW51bWVyYWJsZX06SGU7dmFyIFhlPW0sSmU9WWUsWmU9RCwkZT12LHRyPVAsZXI9dHQscnI9SSxucj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO0tlLmY9WGU/bnI6ZnVuY3Rpb24odCxlKXtpZih0PSRlKHQpLGU9dHIoZSwhMCkscnIpdHJ5e3JldHVybiBucih0LGUpfWNhdGNoKHIpe31pZihlcih0LGUpKXJldHVybiBaZSghSmUuZi5jYWxsKHQsZSksdFtlXSl9O3ZhciBvcj17ZXhwb3J0czp7fX0saXI9eSxhcj1DLHVyPXR0LGNyPXEsZnI9eGUsc3I9V2UuZ2V0LGxyPVdlLmVuZm9yY2UscHI9U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpOyhvci5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBvLGk9ISFuJiYhIW4udW5zYWZlLGE9ISFuJiYhIW4uZW51bWVyYWJsZSx1PSEhbiYmISFuLm5vVGFyZ2V0R2V0OyJmdW5jdGlvbiI9PXR5cGVvZiByJiYoInN0cmluZyIhPXR5cGVvZiBlfHx1cihyLCJuYW1lIil8fGFyKHIsIm5hbWUiLGUpLChvPWxyKHIpKS5zb3VyY2V8fChvLnNvdXJjZT1wci5qb2luKCJzdHJpbmciPT10eXBlb2YgZT9lOiIiKSkpLHQhPT1pcj8oaT8hdSYmdFtlXSYmKGE9ITApOmRlbGV0ZSB0W2VdLGE/dFtlXT1yOmFyKHQsZSxyKSk6YT90W2VdPXI6Y3IoZSxyKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZzcih0aGlzKS5zb3VyY2V8fGZyKHRoaXMpfSkpO3ZhciBocj1vci5leHBvcnRzLHZyPXt9LGRyPUt0LHlyPVl0LmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7dnIuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24odCl7cmV0dXJuIGRyKHQseXIpfTt2YXIgZ3I9e307Z3IuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO3ZhciBtcixicixTcix3cj12cixFcj1ncixUcj1SLE9yPXV0KCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5jdGlvbih0KXt2YXIgZT13ci5mKFRyKHQpKSxyPUVyLmY7cmV0dXJuIHI/ZS5jb25jYXQocih0KSk6ZX0sX3I9dHQsSXI9T3IseHI9S2UsUnI9Yixqcj1hLFByPS8jfFwucHJvdG90eXBlXC4vLGtyPWZ1bmN0aW9uKHQsZSl7dmFyIHI9THJbQXIodCldO3JldHVybiByPT1Ocnx8ciE9TXImJigiZnVuY3Rpb24iPT10eXBlb2YgZT9qcihlKTohIWUpfSxBcj1rci5ub3JtYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKFByLCIuIikudG9Mb3dlckNhc2UoKX0sTHI9a3IuZGF0YT17fSxNcj1rci5OQVRJVkU9Ik4iLE5yPWtyLlBPTFlGSUxMPSJQIixEcj1rcixGcj15LEdyPUtlLmYsQ3I9Qyx6cj1ocixVcj1xLHFyPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPUlyKGUpLG49UnIuZixvPXhyLmYsaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgYT1yW2ldO19yKHQsYSl8fG4odCxhLG8oZSxhKSl9fSxWcj1EcixXcj1mdW5jdGlvbih0LGUpe3ZhciByLG4sbyxpLGEsdT10LnRhcmdldCxjPXQuZ2xvYmFsLGY9dC5zdGF0O2lmKHI9Yz9GcjpmP0ZyW3VdfHxVcih1LHt9KTooRnJbdV18fHt9KS5wcm90b3R5cGUpZm9yKG4gaW4gZSl7aWYoaT1lW25dLG89dC5ub1RhcmdldEdldD8oYT1HcihyLG4pKSYmYS52YWx1ZTpyW25dLCFWcihjP246dSsoZj8iLiI6IiMiKStuLHQuZm9yY2VkKSYmdm9pZCAwIT09byl7aWYodHlwZW9mIGk9PXR5cGVvZiBvKWNvbnRpbnVlO3FyKGksbyl9KHQuc2hhbXx8byYmby5zaGFtKSYmQ3IoaSwic2hhbSIsITApLHpyKHIsbixpLHQpfX0sS3I9IWEoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbCxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IHQpIT09dC5wcm90b3R5cGV9KSksWXI9dHQsSHI9SixCcj1LcixRcj1uZSgiSUVfUFJPVE8iKSxYcj1PYmplY3QucHJvdG90eXBlLEpyPUJyP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gdD1Icih0KSxZcih0LFFyKT90W1FyXToiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD9YcjpudWxsfSxacj1hLCRyPUpyLHRuPUMsZW49dHQscm49X3QoIml0ZXJhdG9yIiksbm49ITE7W10ua2V5cyYmKCJuZXh0ImluKFNyPVtdLmtleXMoKSk/KGJyPSRyKCRyKFNyKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKG1yPWJyKTpubj0hMCksKG51bGw9PW1yfHxacigoZnVuY3Rpb24oKXt2YXIgdD17fTtyZXR1cm4gbXJbcm5dLmNhbGwodCkhPT10fSkpKSYmKG1yPXt9KSxlbihtcixybil8fHRuKG1yLHJuLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBvbj17SXRlcmF0b3JQcm90b3R5cGU6bXIsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzpubn0sYW49Yi5mLHVuPXR0LGNuPV90KCJ0b1N0cmluZ1RhZyIpLGZuPWZ1bmN0aW9uKHQsZSxyKXt0JiYhdW4odD1yP3Q6dC5wcm90b3R5cGUsY24pJiZhbih0LGNuLHtjb25maWd1cmFibGU6ITAsdmFsdWU6ZX0pfSxzbj1vbi5JdGVyYXRvclByb3RvdHlwZSxsbj15ZSxwbj1ELGhuPWZuLHZuPXdlLGRuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHluPVMsZ249Uixtbj1mdW5jdGlvbih0KXtpZigheW4odCkmJm51bGwhPT10KXRocm93IFR5cGVFcnJvcigiQ2FuJ3Qgc2V0ICIrU3RyaW5nKHQpKyIgYXMgYSBwcm90b3R5cGUiKTtyZXR1cm4gdH0sYm49T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIHQsZT0hMSxyPXt9O3RyeXsodD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCkuY2FsbChyLFtdKSxlPXIgaW5zdGFuY2VvZiBBcnJheX1jYXRjaChuKXt9cmV0dXJuIGZ1bmN0aW9uKHIsbil7cmV0dXJuIGduKHIpLG1uKG4pLGU/dC5jYWxsKHIsbik6ci5fX3Byb3RvX189bixyfX0oKTp2b2lkIDApLFNuPVdyLHduPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lKyIgSXRlcmF0b3IiO3JldHVybiB0LnByb3RvdHlwZT1sbihzbix7bmV4dDpwbigxLHIpfSksaG4odCxuLCExKSx2bltuXT1kbix0fSxFbj1KcixUbj1ibixPbj1mbixfbj1DLEluPWhyLHhuPXdlLFJuPW9uLkl0ZXJhdG9yUHJvdG90eXBlLGpuPW9uLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMsUG49X3QoIml0ZXJhdG9yIiksa249ImtleXMiLEFuPSJ2YWx1ZXMiLExuPSJlbnRyaWVzIixNbj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxObj1mdW5jdGlvbih0LGUscixuLG8saSxhKXt3bihyLGUsbik7dmFyIHUsYyxmLHM9ZnVuY3Rpb24odCl7aWYodD09PW8mJmQpcmV0dXJuIGQ7aWYoIWpuJiZ0IGluIGgpcmV0dXJuIGhbdF07c3dpdGNoKHQpe2Nhc2Uga246Y2FzZSBBbjpjYXNlIExuOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzLHQpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHIodGhpcyl9fSxsPWUrIiBJdGVyYXRvciIscD0hMSxoPXQucHJvdG90eXBlLHY9aFtQbl18fGhbIkBAaXRlcmF0b3IiXXx8byYmaFtvXSxkPSFqbiYmdnx8cyhvKSx5PSJBcnJheSI9PWUmJmguZW50cmllc3x8djtpZih5JiYodT1Fbih5LmNhbGwobmV3IHQpKSxSbiE9PU9iamVjdC5wcm90b3R5cGUmJnUubmV4dCYmKEVuKHUpIT09Um4mJihUbj9Ubih1LFJuKToiZnVuY3Rpb24iIT10eXBlb2YgdVtQbl0mJl9uKHUsUG4sTW4pKSxPbih1LGwsITApKSksbz09QW4mJnYmJnYubmFtZSE9PUFuJiYocD0hMCxkPWZ1bmN0aW9uKCl7cmV0dXJuIHYuY2FsbCh0aGlzKX0pLGhbUG5dIT09ZCYmX24oaCxQbixkKSx4bltlXT1kLG8paWYoYz17dmFsdWVzOnMoQW4pLGtleXM6aT9kOnMoa24pLGVudHJpZXM6cyhMbil9LGEpZm9yKGYgaW4gYykoam58fHB8fCEoZiBpbiBoKSkmJkluKGgsZixjW2ZdKTtlbHNlIFNuKHt0YXJnZXQ6ZSxwcm90bzohMCxmb3JjZWQ6am58fHB9LGMpO3JldHVybiBjfSxEbj12LEZuPWZ1bmN0aW9uKHQpe1NlW2JlXVt0XT0hMH0sR249d2UsQ249V2Usem49Tm4sVW49IkFycmF5IEl0ZXJhdG9yIixxbj1Dbi5zZXQsVm49Q24uZ2V0dGVyRm9yKFVuKSxXbj16bihBcnJheSwiQXJyYXkiLChmdW5jdGlvbih0LGUpe3FuKHRoaXMse3R5cGU6VW4sdGFyZ2V0OkRuKHQpLGluZGV4OjAsa2luZDplfSl9KSwoZnVuY3Rpb24oKXt2YXIgdD1Wbih0aGlzKSxlPXQudGFyZ2V0LHI9dC5raW5kLG49dC5pbmRleCsrO3JldHVybiFlfHxuPj1lLmxlbmd0aD8odC50YXJnZXQ9dm9pZCAwLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pOiJrZXlzIj09cj97dmFsdWU6bixkb25lOiExfToidmFsdWVzIj09cj97dmFsdWU6ZVtuXSxkb25lOiExfTp7dmFsdWU6W24sZVtuXV0sZG9uZTohMX19KSwidmFsdWVzIik7R24uQXJndW1lbnRzPUduLkFycmF5LEZuKCJrZXlzIiksRm4oInZhbHVlcyIpLEZuKCJlbnRyaWVzIik7dmFyIEtuPXtleHBvcnRzOnt9fSxZbj0hYSgoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKX0pKSxIbj16dCxCbj1TLFFuPXR0LFhuPWIuZixKbj1Zbixabj1udCgibWV0YSIpLCRuPTAsdG89T2JqZWN0LmlzRXh0ZW5zaWJsZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZW89ZnVuY3Rpb24odCl7WG4odCxabix7dmFsdWU6e29iamVjdElEOiJPIisgKyskbix3ZWFrRGF0YTp7fX19KX0scm89S24uZXhwb3J0cz17UkVRVUlSRUQ6ITEsZmFzdEtleTpmdW5jdGlvbih0LGUpe2lmKCFCbih0KSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDooInN0cmluZyI9PXR5cGVvZiB0PyJTIjoiUCIpK3Q7aWYoIVFuKHQsWm4pKXtpZighdG8odCkpcmV0dXJuIkYiO2lmKCFlKXJldHVybiJFIjtlbyh0KX1yZXR1cm4gdFtabl0ub2JqZWN0SUR9LGdldFdlYWtEYXRhOmZ1bmN0aW9uKHQsZSl7aWYoIVFuKHQsWm4pKXtpZighdG8odCkpcmV0dXJuITA7aWYoIWUpcmV0dXJuITE7ZW8odCl9cmV0dXJuIHRbWm5dLndlYWtEYXRhfSxvbkZyZWV6ZTpmdW5jdGlvbih0KXtyZXR1cm4gSm4mJnJvLlJFUVVJUkVEJiZ0byh0KSYmIVFuKHQsWm4pJiZlbyh0KSx0fX07SG5bWm5dPSEwO3ZhciBubz1Lbi5leHBvcnRzLG9vPXdlLGlvPV90KCJpdGVyYXRvciIpLGFvPUFycmF5LnByb3RvdHlwZSx1bz1mdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKHQpKyIgaXMgbm90IGEgZnVuY3Rpb24iKTtyZXR1cm4gdH0sY289dW8sZm89ZnVuY3Rpb24odCxlLHIpe2lmKGNvKHQpLHZvaWQgMD09PWUpcmV0dXJuIHQ7c3dpdGNoKHIpe2Nhc2UgMDpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKGUpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0LmNhbGwoZSxyKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihyLG4pe3JldHVybiB0LmNhbGwoZSxyLG4pfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKHIsbixvKXtyZXR1cm4gdC5jYWxsKGUscixuLG8pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fSxzbz17fTtzb1tfdCgidG9TdHJpbmdUYWciKV09InoiO3ZhciBsbz0iW29iamVjdCB6XSI9PT1TdHJpbmcoc28pLHBvPWxvLGhvPWMsdm89X3QoInRvU3RyaW5nVGFnIikseW89IkFyZ3VtZW50cyI9PWhvKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSksZ289cG8/aG86ZnVuY3Rpb24odCl7dmFyIGUscixuO3JldHVybiB2b2lkIDA9PT10PyJVbmRlZmluZWQiOm51bGw9PT10PyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKHI9ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbZV19Y2F0Y2gocil7fX0oZT1PYmplY3QodCksdm8pKT9yOnlvP2hvKGUpOiJPYmplY3QiPT0obj1obyhlKSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhbGxlZT8iQXJndW1lbnRzIjpufSxtbz1nbyxibz13ZSxTbz1fdCgiaXRlcmF0b3IiKSx3bz1SLEVvPVIsVG89ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihvby5BcnJheT09PXR8fGFvW2lvXT09PXQpfSxPbz1rdCxfbz1mbyxJbz1mdW5jdGlvbih0KXtpZihudWxsIT10KXJldHVybiB0W1NvXXx8dFsiQEBpdGVyYXRvciJdfHxib1ttbyh0KV19LHhvPWZ1bmN0aW9uKHQpe3ZhciBlPXQucmV0dXJuO2lmKHZvaWQgMCE9PWUpcmV0dXJuIHdvKGUuY2FsbCh0KSkudmFsdWV9LFJvPWZ1bmN0aW9uKHQsZSl7dGhpcy5zdG9wcGVkPXQsdGhpcy5yZXN1bHQ9ZX0sam89ZnVuY3Rpb24odCxlLHIpe3ZhciBuLG8saSxhLHUsYyxmLHM9ciYmci50aGF0LGw9ISghcnx8IXIuQVNfRU5UUklFUykscD0hKCFyfHwhci5JU19JVEVSQVRPUiksaD0hKCFyfHwhci5JTlRFUlJVUFRFRCksdj1fbyhlLHMsMStsK2gpLGQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4mJnhvKG4pLG5ldyBSbyghMCx0KX0seT1mdW5jdGlvbih0KXtyZXR1cm4gbD8oRW8odCksaD92KHRbMF0sdFsxXSxkKTp2KHRbMF0sdFsxXSkpOmg/dih0LGQpOnYodCl9O2lmKHApbj10O2Vsc2V7aWYoImZ1bmN0aW9uIiE9dHlwZW9mKG89SW8odCkpKXRocm93IFR5cGVFcnJvcigiVGFyZ2V0IGlzIG5vdCBpdGVyYWJsZSIpO2lmKFRvKG8pKXtmb3IoaT0wLGE9T28odC5sZW5ndGgpO2E+aTtpKyspaWYoKHU9eSh0W2ldKSkmJnUgaW5zdGFuY2VvZiBSbylyZXR1cm4gdTtyZXR1cm4gbmV3IFJvKCExKX1uPW8uY2FsbCh0KX1mb3IoYz1uLm5leHQ7IShmPWMuY2FsbChuKSkuZG9uZTspe3RyeXt1PXkoZi52YWx1ZSl9Y2F0Y2goZyl7dGhyb3cgeG8obiksZ31pZigib2JqZWN0Ij09dHlwZW9mIHUmJnUmJnUgaW5zdGFuY2VvZiBSbylyZXR1cm4gdX1yZXR1cm4gbmV3IFJvKCExKX0sUG89ZnVuY3Rpb24odCxlLHIpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0ICIrKHI/cisiICI6IiIpKyJpbnZvY2F0aW9uIik7cmV0dXJuIHR9LGtvPV90KCJpdGVyYXRvciIpLEFvPSExO3RyeXt2YXIgTG89MCxNbz17bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOiEhTG8rK319LHJldHVybjpmdW5jdGlvbigpe0FvPSEwfX07TW9ba29dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LEFycmF5LmZyb20oTW8sKGZ1bmN0aW9uKCl7dGhyb3cgMn0pKX1jYXRjaChWYSl7fXZhciBObz1TLERvPWJuLEZvPVdyLEdvPXksQ289RHIsem89aHIsVW89bm8scW89am8sVm89UG8sV289UyxLbz1hLFlvPWZ1bmN0aW9uKHQsZSl7aWYoIWUmJiFBbylyZXR1cm4hMTt2YXIgcj0hMTt0cnl7dmFyIG49e307bltrb109ZnVuY3Rpb24oKXtyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOnI9ITB9fX19LHQobil9Y2F0Y2goVmEpe31yZXR1cm4gcn0sSG89Zm4sQm89ZnVuY3Rpb24odCxlLHIpe3ZhciBuLG87cmV0dXJuIERvJiYiZnVuY3Rpb24iPT10eXBlb2Yobj1lLmNvbnN0cnVjdG9yKSYmbiE9PXImJk5vKG89bi5wcm90b3R5cGUpJiZvIT09ci5wcm90b3R5cGUmJkRvKHQsbyksdH0sUW89aHIsWG89dXQsSm89Yixabz1tLCRvPV90KCJzcGVjaWVzIiksdGk9Yi5mLGVpPXllLHJpPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4gaW4gZSlRbyh0LG4sZVtuXSxyKTtyZXR1cm4gdH0sbmk9Zm8sb2k9UG8saWk9am8sYWk9Tm4sdWk9ZnVuY3Rpb24odCl7dmFyIGU9WG8odCkscj1Kby5mO1pvJiZlJiYhZVskb10mJnIoZSwkbyx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfSxjaT1tLGZpPW5vLmZhc3RLZXksc2k9V2Uuc2V0LGxpPVdlLmdldHRlckZvcixwaT17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89dCgoZnVuY3Rpb24odCxpKXtvaSh0LG8sZSksc2kodCx7dHlwZTplLGluZGV4OmVpKG51bGwpLGZpcnN0OnZvaWQgMCxsYXN0OnZvaWQgMCxzaXplOjB9KSxjaXx8KHQuc2l6ZT0wKSxudWxsIT1pJiZpaShpLHRbbl0se3RoYXQ6dCxBU19FTlRSSUVTOnJ9KX0pKSxpPWxpKGUpLGE9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLG8sYT1pKHQpLGM9dSh0LGUpO3JldHVybiBjP2MudmFsdWU9cjooYS5sYXN0PWM9e2luZGV4Om89ZmkoZSwhMCksa2V5OmUsdmFsdWU6cixwcmV2aW91czpuPWEubGFzdCxuZXh0OnZvaWQgMCxyZW1vdmVkOiExfSxhLmZpcnN0fHwoYS5maXJzdD1jKSxuJiYobi5uZXh0PWMpLGNpP2Euc2l6ZSsrOnQuc2l6ZSsrLCJGIiE9PW8mJihhLmluZGV4W29dPWMpKSx0fSx1PWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1pKHQpLG89ZmkoZSk7aWYoIkYiIT09bylyZXR1cm4gbi5pbmRleFtvXTtmb3Iocj1uLmZpcnN0O3I7cj1yLm5leHQpaWYoci5rZXk9PWUpcmV0dXJuIHJ9O3JldHVybiByaShvLnByb3RvdHlwZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9aSh0aGlzKSxlPXQuaW5kZXgscj10LmZpcnN0O3I7KXIucmVtb3ZlZD0hMCxyLnByZXZpb3VzJiYoci5wcmV2aW91cz1yLnByZXZpb3VzLm5leHQ9dm9pZCAwKSxkZWxldGUgZVtyLmluZGV4XSxyPXIubmV4dDt0LmZpcnN0PXQubGFzdD12b2lkIDAsY2k/dC5zaXplPTA6dGhpcy5zaXplPTB9LGRlbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLHI9aShlKSxuPXUoZSx0KTtpZihuKXt2YXIgbz1uLm5leHQsYT1uLnByZXZpb3VzO2RlbGV0ZSByLmluZGV4W24uaW5kZXhdLG4ucmVtb3ZlZD0hMCxhJiYoYS5uZXh0PW8pLG8mJihvLnByZXZpb3VzPWEpLHIuZmlyc3Q9PW4mJihyLmZpcnN0PW8pLHIubGFzdD09biYmKHIubGFzdD1hKSxjaT9yLnNpemUtLTplLnNpemUtLX1yZXR1cm4hIW59LGZvckVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9aSh0aGlzKSxuPW5pKHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsMyk7ZT1lP2UubmV4dDpyLmZpcnN0Oylmb3IobihlLnZhbHVlLGUua2V5LHRoaXMpO2UmJmUucmVtb3ZlZDspZT1lLnByZXZpb3VzfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuISF1KHRoaXMsdCl9fSkscmkoby5wcm90b3R5cGUscj97Z2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXUodGhpcyx0KTtyZXR1cm4gZSYmZS52YWx1ZX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEodGhpcywwPT09dD8wOnQsZSl9fTp7YWRkOmZ1bmN0aW9uKHQpe3JldHVybiBhKHRoaXMsdD0wPT09dD8wOnQsdCl9fSksY2kmJnRpKG8ucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcykuc2l6ZX19KSxvfSxzZXRTdHJvbmc6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUrIiBJdGVyYXRvciIsbz1saShlKSxpPWxpKG4pO2FpKHQsZSwoZnVuY3Rpb24odCxlKXtzaSh0aGlzLHt0eXBlOm4sdGFyZ2V0OnQsc3RhdGU6byh0KSxraW5kOmUsbGFzdDp2b2lkIDB9KX0pLChmdW5jdGlvbigpe2Zvcih2YXIgdD1pKHRoaXMpLGU9dC5raW5kLHI9dC5sYXN0O3ImJnIucmVtb3ZlZDspcj1yLnByZXZpb3VzO3JldHVybiB0LnRhcmdldCYmKHQubGFzdD1yPXI/ci5uZXh0OnQuc3RhdGUuZmlyc3QpPyJrZXlzIj09ZT97dmFsdWU6ci5rZXksZG9uZTohMX06InZhbHVlcyI9PWU/e3ZhbHVlOnIudmFsdWUsZG9uZTohMX06e3ZhbHVlOltyLmtleSxyLnZhbHVlXSxkb25lOiExfToodC50YXJnZXQ9dm9pZCAwLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pfSkscj8iZW50cmllcyI6InZhbHVlcyIsIXIsITApLHVpKGUpfX07KGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj0tMSE9PXQuaW5kZXhPZigiTWFwIiksbz0tMSE9PXQuaW5kZXhPZigiV2VhayIpLGk9bj8ic2V0IjoiYWRkIixhPUdvW3RdLHU9YSYmYS5wcm90b3R5cGUsYz1hLGY9e30scz1mdW5jdGlvbih0KXt2YXIgZT11W3RdO3pvKHUsdCwiYWRkIj09dD9mdW5jdGlvbih0KXtyZXR1cm4gZS5jYWxsKHRoaXMsMD09PXQ/MDp0KSx0aGlzfToiZGVsZXRlIj09dD9mdW5jdGlvbih0KXtyZXR1cm4hKG8mJiFXbyh0KSkmJmUuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJnZXQiPT10P2Z1bmN0aW9uKHQpe3JldHVybiBvJiYhV28odCk/dm9pZCAwOmUuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJoYXMiPT10P2Z1bmN0aW9uKHQpe3JldHVybiEobyYmIVdvKHQpKSYmZS5jYWxsKHRoaXMsMD09PXQ/MDp0KX06ZnVuY3Rpb24odCxyKXtyZXR1cm4gZS5jYWxsKHRoaXMsMD09PXQ/MDp0LHIpLHRoaXN9KX07aWYoQ28odCwiZnVuY3Rpb24iIT10eXBlb2YgYXx8IShvfHx1LmZvckVhY2gmJiFLbygoZnVuY3Rpb24oKXsobmV3IGEpLmVudHJpZXMoKS5uZXh0KCl9KSkpKSljPXIuZ2V0Q29uc3RydWN0b3IoZSx0LG4saSksVW8uUkVRVUlSRUQ9ITA7ZWxzZSBpZihDbyh0LCEwKSl7dmFyIGw9bmV3IGMscD1sW2ldKG8/e306LTAsMSkhPWwsaD1LbygoZnVuY3Rpb24oKXtsLmhhcygxKX0pKSx2PVlvKChmdW5jdGlvbih0KXtuZXcgYSh0KX0pKSxkPSFvJiZLbygoZnVuY3Rpb24oKXtmb3IodmFyIHQ9bmV3IGEsZT01O2UtLTspdFtpXShlLGUpO3JldHVybiF0LmhhcygtMCl9KSk7dnx8KChjPWUoKGZ1bmN0aW9uKGUscil7Vm8oZSxjLHQpO3ZhciBvPUJvKG5ldyBhLGUsYyk7cmV0dXJuIG51bGwhPXImJnFvKHIsb1tpXSx7dGhhdDpvLEFTX0VOVFJJRVM6bn0pLG99KSkpLnByb3RvdHlwZT11LHUuY29uc3RydWN0b3I9YyksKGh8fGQpJiYocygiZGVsZXRlIikscygiaGFzIiksbiYmcygiZ2V0IikpLChkfHxwKSYmcyhpKSxvJiZ1LmNsZWFyJiZkZWxldGUgdS5jbGVhcn1mW3RdPWMsRm8oe2dsb2JhbDohMCxmb3JjZWQ6YyE9YX0sZiksSG8oYyx0KSxvfHxyLnNldFN0cm9uZyhjLHQsbil9KSgiTWFwIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0pLHBpKTt2YXIgaGk9Z28sdmk9bG8/e30udG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK2hpKHRoaXMpKyJdIn07bG98fGhyKE9iamVjdC5wcm90b3R5cGUsInRvU3RyaW5nIix2aSx7dW5zYWZlOiEwfSk7dmFyIGRpPVJ0LHlpPWwsZ2k9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIG4sbyxpPVN0cmluZyh5aShlKSksYT1kaShyKSx1PWkubGVuZ3RoO3JldHVybiBhPDB8fGE+PXU/dD8iIjp2b2lkIDA6KG49aS5jaGFyQ29kZUF0KGEpKTw1NTI5Nnx8bj41NjMxOXx8YSsxPT09dXx8KG89aS5jaGFyQ29kZUF0KGErMSkpPDU2MzIwfHxvPjU3MzQzP3Q/aS5jaGFyQXQoYSk6bjp0P2kuc2xpY2UoYSxhKzIpOm8tNTYzMjArKG4tNTUyOTY8PDEwKSs2NTUzNn19LG1pPXtjb2RlQXQ6Z2koITEpLGNoYXJBdDpnaSghMCl9LmNoYXJBdCxiaT1XZSxTaT1Obix3aT0iU3RyaW5nIEl0ZXJhdG9yIixFaT1iaS5zZXQsVGk9YmkuZ2V0dGVyRm9yKHdpKTtTaShTdHJpbmcsIlN0cmluZyIsKGZ1bmN0aW9uKHQpe0VpKHRoaXMse3R5cGU6d2ksc3RyaW5nOlN0cmluZyh0KSxpbmRleDowfSl9KSwoZnVuY3Rpb24oKXt2YXIgdCxlPVRpKHRoaXMpLHI9ZS5zdHJpbmcsbj1lLmluZGV4O3JldHVybiBuPj1yLmxlbmd0aD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Oih0PW1pKHIsbiksZS5pbmRleCs9dC5sZW5ndGgse3ZhbHVlOnQsZG9uZTohMX0pfSkpO3ZhciBPaT1SLF9pPXVvLElpPWZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9T2kodGhpcykscj1faShlLmRlbGV0ZSksbj0hMCxvPTAsaT1hcmd1bWVudHMubGVuZ3RoO288aTtvKyspdD1yLmNhbGwoZSxhcmd1bWVudHNbb10pLG49biYmdDtyZXR1cm4hIW59O1dyKHt0YXJnZXQ6Ik1hcCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6ZmFsc2V9LHtkZWxldGVBbGw6ZnVuY3Rpb24oKXtyZXR1cm4gSWkuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pO3ZhciB4aT1mdW5jdGlvbih0KXtyZXR1cm4gTWFwLnByb3RvdHlwZS5lbnRyaWVzLmNhbGwodCl9LFJpPVIsamk9Zm8sUGk9eGksa2k9am87V3Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se2V2ZXJ5OmZ1bmN0aW9uKHQpe3ZhciBlPVJpKHRoaXMpLHI9UGkoZSksbj1qaSh0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpO3JldHVybiFraShyLChmdW5jdGlvbih0LHIsbyl7aWYoIW4ocix0LGUpKXJldHVybiBvKCl9KSx7QVNfRU5UUklFUzohMCxJU19JVEVSQVRPUjohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSk7dmFyIEFpPVIsTGk9dW8sTWk9X3QoInNwZWNpZXMiKSxOaT1mdW5jdGlvbih0LGUpe3ZhciByLG49QWkodCkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PW58fG51bGw9PShyPUFpKG4pW01pXSk/ZTpMaShyKX0sRGk9dXQsRmk9UixHaT11byxDaT1mbyx6aT1OaSxVaT14aSxxaT1qbztXcih7dGFyZ2V0OiJNYXAiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmZhbHNlfSx7ZmlsdGVyOmZ1bmN0aW9uKHQpe3ZhciBlPUZpKHRoaXMpLHI9VWkoZSksbj1DaSh0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpLG89bmV3KHppKGUsRGkoIk1hcCIpKSksaT1HaShvLnNldCk7cmV0dXJuIHFpKHIsKGZ1bmN0aW9uKHQscil7bihyLHQsZSkmJmkuY2FsbChvLHQscil9KSx7QVNfRU5UUklFUzohMCxJU19JVEVSQVRPUjohMH0pLG99fSk7dmFyIFZpPVIsV2k9Zm8sS2k9eGksWWk9am87V3Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se2ZpbmQ6ZnVuY3Rpb24odCl7dmFyIGU9VmkodGhpcykscj1LaShlKSxuPVdpKHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsMyk7cmV0dXJuIFlpKHIsKGZ1bmN0aW9uKHQscixvKXtpZihuKHIsdCxlKSlyZXR1cm4gbyhyKX0pLHtBU19FTlRSSUVTOiEwLElTX0lURVJBVE9SOiEwLElOVEVSUlVQVEVEOiEwfSkucmVzdWx0fX0pO3ZhciBIaT1SLEJpPWZvLFFpPXhpLFhpPWpvO1dyKHt0YXJnZXQ6Ik1hcCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6ZmFsc2V9LHtmaW5kS2V5OmZ1bmN0aW9uKHQpe3ZhciBlPUhpKHRoaXMpLHI9UWkoZSksbj1CaSh0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpO3JldHVybiBYaShyLChmdW5jdGlvbih0LHIsbyl7aWYobihyLHQsZSkpcmV0dXJuIG8odCl9KSx7QVNfRU5UUklFUzohMCxJU19JVEVSQVRPUjohMCxJTlRFUlJVUFRFRDohMH0pLnJlc3VsdH19KTt2YXIgSmk9UixaaT14aSwkaT1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8dCE9dCYmZSE9ZX0sdGE9am87V3Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se2luY2x1ZGVzOmZ1bmN0aW9uKHQpe3JldHVybiB0YShaaShKaSh0aGlzKSksKGZ1bmN0aW9uKGUscixuKXtpZigkaShyLHQpKXJldHVybiBuKCl9KSx7QVNfRU5UUklFUzohMCxJU19JVEVSQVRPUjohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSk7dmFyIGVhPVIscmE9eGksbmE9am87V3Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se2tleU9mOmZ1bmN0aW9uKHQpe3JldHVybiBuYShyYShlYSh0aGlzKSksKGZ1bmN0aW9uKGUscixuKXtpZihyPT09dClyZXR1cm4gbihlKX0pLHtBU19FTlRSSUVTOiEwLElTX0lURVJBVE9SOiEwLElOVEVSUlVQVEVEOiEwfSkucmVzdWx0fX0pO3ZhciBvYT11dCxpYT1SLGFhPXVvLHVhPWZvLGNhPU5pLGZhPXhpLHNhPWpvO1dyKHt0YXJnZXQ6Ik1hcCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6ZmFsc2V9LHttYXBLZXlzOmZ1bmN0aW9uKHQpe3ZhciBlPWlhKHRoaXMpLHI9ZmEoZSksbj11YSh0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpLG89bmV3KGNhKGUsb2EoIk1hcCIpKSksaT1hYShvLnNldCk7cmV0dXJuIHNhKHIsKGZ1bmN0aW9uKHQscil7aS5jYWxsKG8sbihyLHQsZSkscil9KSx7QVNfRU5UUklFUzohMCxJU19JVEVSQVRPUjohMH0pLG99fSk7dmFyIGxhPXV0LHBhPVIsaGE9dW8sdmE9Zm8sZGE9TmkseWE9eGksZ2E9am87V3Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se21hcFZhbHVlczpmdW5jdGlvbih0KXt2YXIgZT1wYSh0aGlzKSxyPXlhKGUpLG49dmEodCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKSxvPW5ldyhkYShlLGxhKCJNYXAiKSkpLGk9aGEoby5zZXQpO3JldHVybiBnYShyLChmdW5jdGlvbih0LHIpe2kuY2FsbChvLHQsbihyLHQsZSkpfSkse0FTX0VOVFJJRVM6ITAsSVNfSVRFUkFUT1I6ITB9KSxvfX0pO3ZhciBtYT1SLGJhPXVvLFNhPWpvO1dyKHt0YXJnZXQ6Ik1hcCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6ZmFsc2V9LHttZXJnZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9bWEodGhpcykscj1iYShlLnNldCksbj0wO248YXJndW1lbnRzLmxlbmd0aDspU2EoYXJndW1lbnRzW24rK10scix7dGhhdDplLEFTX0VOVFJJRVM6ITB9KTtyZXR1cm4gZX19KTt2YXIgd2E9UixFYT11byxUYT14aSxPYT1qbztXcih7dGFyZ2V0OiJNYXAiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmZhbHNlfSx7cmVkdWNlOmZ1bmN0aW9uKHQpe3ZhciBlPXdhKHRoaXMpLHI9VGEoZSksbj1hcmd1bWVudHMubGVuZ3RoPDIsbz1uP3ZvaWQgMDphcmd1bWVudHNbMV07aWYoRWEodCksT2EociwoZnVuY3Rpb24ocixpKXtuPyhuPSExLG89aSk6bz10KG8saSxyLGUpfSkse0FTX0VOVFJJRVM6ITAsSVNfSVRFUkFUT1I6ITB9KSxuKXRocm93IFR5cGVFcnJvcigiUmVkdWNlIG9mIGVtcHR5IG1hcCB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTtyZXR1cm4gb319KTt2YXIgX2E9UixJYT1mbyx4YT14aSxSYT1qbztXcih7dGFyZ2V0OiJNYXAiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmZhbHNlfSx7c29tZTpmdW5jdGlvbih0KXt2YXIgZT1fYSh0aGlzKSxyPXhhKGUpLG49SWEodCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKTtyZXR1cm4gUmEociwoZnVuY3Rpb24odCxyLG8pe2lmKG4ocix0LGUpKXJldHVybiBvKCl9KSx7QVNfRU5UUklFUzohMCxJU19JVEVSQVRPUjohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSk7dmFyIGphPVIsUGE9dW87V3Ioe3RhcmdldDoiTWFwIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmYWxzZX0se3VwZGF0ZTpmdW5jdGlvbih0LGUpe3ZhciByPWphKHRoaXMpLG49YXJndW1lbnRzLmxlbmd0aDtQYShlKTt2YXIgbz1yLmhhcyh0KTtpZighbyYmbjwzKXRocm93IFR5cGVFcnJvcigiVXBkYXRpbmcgYWJzZW50IHZhbHVlIik7dmFyIGk9bz9yLmdldCh0KTpQYShuPjI/YXJndW1lbnRzWzJdOnZvaWQgMCkodCxyKTtyZXR1cm4gci5zZXQodCxlKGksdCxyKSkscn19KTt2YXIga2E9eSxBYT17Q1NTUnVsZUxpc3Q6MCxDU1NTdHlsZURlY2xhcmF0aW9uOjAsQ1NTVmFsdWVMaXN0OjAsQ2xpZW50UmVjdExpc3Q6MCxET01SZWN0TGlzdDowLERPTVN0cmluZ0xpc3Q6MCxET01Ub2tlbkxpc3Q6MSxEYXRhVHJhbnNmZXJJdGVtTGlzdDowLEZpbGVMaXN0OjAsSFRNTEFsbENvbGxlY3Rpb246MCxIVE1MQ29sbGVjdGlvbjowLEhUTUxGb3JtRWxlbWVudDowLEhUTUxTZWxlY3RFbGVtZW50OjAsTWVkaWFMaXN0OjAsTWltZVR5cGVBcnJheTowLE5hbWVkTm9kZU1hcDowLE5vZGVMaXN0OjEsUGFpbnRSZXF1ZXN0TGlzdDowLFBsdWdpbjowLFBsdWdpbkFycmF5OjAsU1ZHTGVuZ3RoTGlzdDowLFNWR051bWJlckxpc3Q6MCxTVkdQYXRoU2VnTGlzdDowLFNWR1BvaW50TGlzdDowLFNWR1N0cmluZ0xpc3Q6MCxTVkdUcmFuc2Zvcm1MaXN0OjAsU291cmNlQnVmZmVyTGlzdDowLFN0eWxlU2hlZXRMaXN0OjAsVGV4dFRyYWNrQ3VlTGlzdDowLFRleHRUcmFja0xpc3Q6MCxUb3VjaExpc3Q6MH0sTGE9V24sTWE9QyxOYT1fdCxEYT1OYSgiaXRlcmF0b3IiKSxGYT1OYSgidG9TdHJpbmdUYWciKSxHYT1MYS52YWx1ZXM7Zm9yKHZhciBDYSBpbiBBYSl7dmFyIHphPWthW0NhXSxVYT16YSYmemEucHJvdG90eXBlO2lmKFVhKXtpZihVYVtEYV0hPT1HYSl0cnl7TWEoVWEsRGEsR2EpfWNhdGNoKFZhKXtVYVtEYV09R2F9aWYoVWFbRmFdfHxNYShVYSxGYSxDYSksQWFbQ2FdKWZvcih2YXIgcWEgaW4gTGEpaWYoVWFbcWFdIT09TGFbcWFdKXRyeXtNYShVYSxxYSxMYVtxYV0pfWNhdGNoKFZhKXtVYVtxYV09TGFbcWFdfX19b25tZXNzYWdlPWZ1bmN0aW9uKCl7dmFyIHIsbj0ocj10KCkubWFyaygoZnVuY3Rpb24gZShyKXt2YXIgbixpLGE9dGhpcztyZXR1cm4gdCgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOm49ci5kYXRhLHQudDA9bi5tZXRob2QsdC5uZXh0PSJpbml0Ij09PXQudDA/NDoic3RhcnQiPT09dC50MD84OiJzdG9wIj09PXQudDA/MTY6MTk7YnJlYWs7Y2FzZSA0OnJldHVybiB0aGlzLl9oYXNTdGFydFByb2dyZXNzPSExLHRoaXMuX3JlcXVlc3RUaW1lcj1udWxsLHRoaXMuX3RpY2tJblNlY29uZHM9KG51bGw9PT0oaT1uLmFyZ3MpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnRpY2tJblNlY29uZHMpfHwuMix0LmFicnVwdCgiYnJlYWsiLDE5KTtjYXNlIDg6aWYoIXRoaXMuX2hhc1N0YXJ0UHJvZ3Jlc3Mpe3QubmV4dD0xMDticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMTA6cmV0dXJuIHRoaXMuX2hhc1N0YXJ0UHJvZ3Jlc3M9ITEsdGhpcy5fcmVxdWVzdFRpbWVyJiYodGhpcy5fcmVxdWVzdFRpbWVyLnN0b3AoKSx0aGlzLl9yZXF1ZXN0VGltZXI9bnVsbCksdGhpcy5fcmVxdWVzdFRpbWVyPW5ldyBvKChmdW5jdGlvbigpe3RyeXthLl9yZXF1ZXN0VGltZXImJmEucG9zdE1lc3NhZ2Uoe21ldGhvZDoidGltZXJfdXBkYXRlIn0pfWNhdGNoKHQpe2NvbnNvbGUud2Fybigic3RhcnRQcm9ncmVzcyB0cnkgY2F0Y2giLG51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSl9fSkpLHRoaXMuX3JlcXVlc3RUaW1lci50aWNrRXZlcnkodGhpcy5fdGlja0luU2Vjb25kcyksdGhpcy5faGFzU3RhcnRQcm9ncmVzcz0hMCx0LmFicnVwdCgiYnJlYWsiLDE5KTtjYXNlIDE2OnJldHVybiB0aGlzLl9oYXNTdGFydFByb2dyZXNzPSExLHRoaXMuX3JlcXVlc3RUaW1lciYmKHRoaXMuX3JlcXVlc3RUaW1lci5zdG9wKCksdGhpcy5fcmVxdWVzdFRpbWVyPW51bGwpLHQuYWJydXB0KCJicmVhayIsMTkpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSxlLHRoaXMpfSkpLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8saSl7dmFyIGE9ci5hcHBseSh0LG4pO2Z1bmN0aW9uIHUodCl7ZShhLG8saSx1LGMsIm5leHQiLHQpfWZ1bmN0aW9uIGModCl7ZShhLG8saSx1LGMsInRocm93Iix0KX11KHZvaWQgMCl9KSl9KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0oKTsK",dF="undefined"!=typeof window&&window.Blob&&new Blob([atob(rF)],{type:"text/javascript;charset=utf-8"});function QF(){var e;try{if(!(e=dF&&(window.URL||window.webkitURL).createObjectURL(dF)))throw"";return new Worker(e)}catch(t){return new Worker("data:application/javascript;base64,"+rF)}finally{!("undefined"!=typeof window&&navigator.userAgent.indexOf("Trident/")>0)&&e&&(window.URL||window.webkitlRL).revokeObjectURL(e)}}var oF=function(e){P(n,e);var t=q(n);function n(e){var U;return M(this,n),(U=t.call(this)).openlog=e.openLog,U.timerID=(null==e?void 0:e.timerID)||bl.nowTime(),null!=e&&e.timerInWorker&&"undefined"!=typeof Worker?(U.workerTimerStop=!0,U.worker=new QF,U.worker.onmessage=function(e){U.workerTimerStop||(e.data.timerID=U.timerID,U.emit(e.data.method,e.data))},U.worker.postMessage({method:"init",args:{openlog:U.openlog,tickInSeconds:e.tickInSeconds}})):(U._hasStartProgress=!1,U._requestTimer=null,U._tickInSeconds=(null==e?void 0:e.tickInSeconds)||.2),U}return w(n,[{key:"start",value:function(){var e=this;if(this.worker)this.workerTimerStop=!1,this.worker.postMessage({method:"start",timerID:this.timerID});else{if(this._hasStartProgress)return;this._hasStartProgress=!1,this._requestTimer&&(this._requestTimer.stop(),this._requestTimer=null),this._requestTimer=new aF((function(){try{e._requestTimer&&e.emit(xn,{timerID:e.timerID})}catch(t){console.warn("startProgress try catch",null==t?void 0:t.message)}})),this._requestTimer.tickEvery(this._tickInSeconds),this._hasStartProgress=!0}}},{key:"stop",value:function(){this.worker?(this.workerTimerStop=!0,this.worker.postMessage({method:"stop",timerID:this.timerID})):(this._hasStartProgress=!1,this._requestTimer&&(this._requestTimer.stop(),this._requestTimer=null))}},{key:"destroy",value:function(){var e;this.stop(),null===(e=this.worker)||void 0===e||e.terminate()}}]),n}(tt),sF={exports:{}};(function(e){var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==qe?qe:"undefined"!=typeof self?self:{};function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var U=function(e){return e&&e.Math==Math&&e},i=U("object"==typeof globalThis&&globalThis)||U("object"==typeof window&&window)||U("object"==typeof self&&self)||U("object"==typeof t&&t)||function(){return this}()||Function("return this")(),l={},F=function(e){try{return!!e()}catch(uh){return!0}},a=!F((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),r={},d={}.propertyIsEnumerable,Q=Object.getOwnPropertyDescriptor,o=Q&&!d.call({1:2},1);r.f=o?function(e){var t=Q(this,e);return!!t&&t.enumerable}:d;var s=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},c={}.toString,R=function(e){return c.call(e).slice(8,-1)},B=R,u="".split,h=F((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==B(e)?u.call(e,""):Object(e)}:Object,V=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},Z=h,m=V,p=function(e){return Z(m(e))},S=function(e){return"object"==typeof e?null!==e:"function"==typeof e},J=S,W=function(e,t){if(!J(e))return e;var n,U;if(t&&"function"==typeof(n=e.toString)&&!J(U=n.call(e)))return U;if("function"==typeof(n=e.valueOf)&&!J(U=n.call(e)))return U;if(!t&&"function"==typeof(n=e.toString)&&!J(U=n.call(e)))return U;throw TypeError("Can't convert object to primitive value")},y=V,b=function(e){return Object(y(e))},E=b,k={}.hasOwnProperty,f=function(e,t){return k.call(E(e),t)},v=S,N=i.document,T=v(N)&&v(N.createElement),C=function(e){return T?N.createElement(e):{}},g=C,X=!a&&!F((function(){return 7!=Object.defineProperty(g("div"),"a",{get:function(){return 7}}).a})),L=a,G=r,x=s,I=p,D=W,Y=f,M=X,K=Object.getOwnPropertyDescriptor;l.f=L?K:function(e,t){if(e=I(e),t=D(t,!0),M)try{return K(e,t)}catch(n){}if(Y(e,t))return x(!G.f.call(e,t),e[t])};var w={},H=S,P=function(e){if(!H(e))throw TypeError(String(e)+" is not an object");return e},j=a,z=X,O=P,_=W,A=Object.defineProperty;w.f=j?A:function(e,t,n){if(O(e),t=_(t,!0),O(n),z)try{return A(e,t,n)}catch(U){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var q=w,$=s,ee=a?function(e,t,n){return q.f(e,t,$(1,n))}:function(e,t,n){return e[t]=n,e},te={exports:{}},ne=i,Ue=ee,ie=function(e,t){try{Ue(ne,e,t)}catch(n){ne[e]=t}return t},le=ie,Fe="__core-js_shared__",ae=i[Fe]||le(Fe,{}),re=ae,de=Function.toString;"function"!=typeof re.inspectSource&&(re.inspectSource=function(e){return de.call(e)});var Qe=re.inspectSource,oe=Qe,se=i.WeakMap,ce="function"==typeof se&&/native code/.test(oe(se)),Re={exports:{}},Be=ae;(Re.exports=function(e,t){return Be[e]||(Be[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.12.1",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var ue,he,Ve,Ze=Re.exports,me=0,pe=Math.random(),Se=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++me+pe).toString(36)},Je=Se,We=Ze("keys"),ye=function(e){return We[e]||(We[e]=Je(e))},be={},Ee=ce,ke=S,fe=ee,ve=f,Ne=ae,Te=ye,Ce=be,ge="Object already initialized",Xe=i.WeakMap;if(Ee||Ne.state){var Le=Ne.state||(Ne.state=new Xe),Ge=Le.get,xe=Le.has,Ie=Le.set;ue=function(e,t){if(xe.call(Le,e))throw new TypeError(ge);return t.facade=e,Ie.call(Le,e,t),t},he=function(e){return Ge.call(Le,e)||{}},Ve=function(e){return xe.call(Le,e)}}else{var De=Te("state");Ce[De]=!0,ue=function(e,t){if(ve(e,De))throw new TypeError(ge);return t.facade=e,fe(e,De,t),t},he=function(e){return ve(e,De)?e[De]:{}},Ve=function(e){return ve(e,De)}}var Ye={set:ue,get:he,has:Ve,enforce:function(e){return Ve(e)?he(e):ue(e,{})},getterFor:function(e){return function(t){var n;if(!ke(t)||(n=he(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},Me=i,Ke=ee,we=f,He=ie,Pe=Qe,je=Ye.get,ze=Ye.enforce,Oe=String(String).split("String");(te.exports=function(e,t,n,U){var i,l=!!U&&!!U.unsafe,F=!!U&&!!U.enumerable,a=!!U&&!!U.noTargetGet;"function"==typeof n&&("string"!=typeof t||we(n,"name")||Ke(n,"name",t),(i=ze(n)).source||(i.source=Oe.join("string"==typeof t?t:""))),e!==Me?(l?!a&&e[t]&&(F=!0):delete e[t],F?e[t]=n:Ke(e,t,n)):F?e[t]=n:He(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&je(this).source||Pe(this)}));var _e=te.exports,Ae=i,$e=i,et=function(e){return"function"==typeof e?e:void 0},tt=function(e,t){return arguments.length<2?et(Ae[e])||et($e[e]):Ae[e]&&Ae[e][t]||$e[e]&&$e[e][t]},nt={},Ut=Math.ceil,it=Math.floor,lt=function(e){return isNaN(e=+e)?0:(e>0?it:Ut)(e)},Ft=lt,at=Math.min,rt=function(e){return e>0?at(Ft(e),9007199254740991):0},dt=lt,Qt=Math.max,ot=Math.min,st=function(e,t){var n=dt(e);return n<0?Qt(n+t,0):ot(n,t)},ct=p,Rt=rt,Bt=st,ut=function(e){return function(t,n,U){var i,l=ct(t),F=Rt(l.length),a=Bt(U,F);if(e&&n!=n){for(;F>a;)if((i=l[a++])!=i)return!0}else for(;F>a;a++)if((e||a in l)&&l[a]===n)return e||a||0;return!e&&-1}},ht={includes:ut(!0),indexOf:ut(!1)},Vt=f,Zt=p,mt=ht.indexOf,pt=be,St=function(e,t){var n,U=Zt(e),i=0,l=[];for(n in U)!Vt(pt,n)&&Vt(U,n)&&l.push(n);for(;t.length>i;)Vt(U,n=t[i++])&&(~mt(l,n)||l.push(n));return l},Jt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Wt=St,yt=Jt.concat("length","prototype");nt.f=Object.getOwnPropertyNames||function(e){return Wt(e,yt)};var bt={};bt.f=Object.getOwnPropertySymbols;var Et=nt,kt=bt,ft=P,vt=tt("Reflect","ownKeys")||function(e){var t=Et.f(ft(e)),n=kt.f;return n?t.concat(n(e)):t},Nt=f,Tt=vt,Ct=l,gt=w,Xt=F,Lt=/#|\.prototype\./,Gt=function(e,t){var n=It[xt(e)];return n==Yt||n!=Dt&&("function"==typeof t?Xt(t):!!t)},xt=Gt.normalize=function(e){return String(e).replace(Lt,".").toLowerCase()},It=Gt.data={},Dt=Gt.NATIVE="N",Yt=Gt.POLYFILL="P",Mt=Gt,Kt=i,wt=l.f,Ht=ee,Pt=_e,jt=ie,zt=function(e,t){for(var n=Tt(t),U=gt.f,i=Ct.f,l=0;l<n.length;l++){var F=n[l];Nt(e,F)||U(e,F,i(t,F))}},Ot=Mt,_t=function(e,t){var n,U,i,l,F,a=e.target,r=e.global,d=e.stat;if(n=r?Kt:d?Kt[a]||jt(a,{}):(Kt[a]||{}).prototype)for(U in t){if(l=t[U],i=e.noTargetGet?(F=wt(n,U))&&F.value:n[U],!Ot(r?U:a+(d?".":"#")+U,e.forced)&&void 0!==i){if(typeof l==typeof i)continue;zt(l,i)}(e.sham||i&&i.sham)&&Ht(l,"sham",!0),Pt(n,U,l,e)}};function At(){At=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,U=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},l=i.iterator||"@@iterator",F=i.asyncIterator||"@@asyncIterator",a=i.toStringTag||"@@toStringTag";function r(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{r({},"")}catch(k){r=function(e,t,n){return e[t]=n}}function d(e,t,n,i){var l=t&&t.prototype instanceof s?t:s,F=Object.create(l.prototype),a=new y(i||[]);return U(F,"_invoke",{value:p(e,n,a)}),F}function Q(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(k){return{type:"throw",arg:k}}}e.wrap=d;var o={};function s(){}function c(){}function R(){}var B={};r(B,l,(function(){return this}));var u=Object.getPrototypeOf,h=u&&u(u(b([])));h&&h!==t&&n.call(h,l)&&(B=h);var V=R.prototype=s.prototype=Object.create(B);function Z(e){["next","throw","return"].forEach((function(t){r(e,t,(function(e){return this._invoke(t,e)}))}))}function m(e,t){function i(U,l,F,a){var r=Q(e[U],e,l);if("throw"!==r.type){var d=r.arg,o=d.value;return o&&"object"==typeof o&&n.call(o,"__await")?t.resolve(o.__await).then((function(e){i("next",e,F,a)}),(function(e){i("throw",e,F,a)})):t.resolve(o).then((function(e){d.value=e,F(d)}),(function(e){return i("throw",e,F,a)}))}a(r.arg)}var l;U(this,"_invoke",{value:function(e,n){function U(){return new t((function(t,U){i(e,n,t,U)}))}return l=l?l.then(U,U):U()}})}function p(e,t,n){var U="suspendedStart";return function(i,l){if("executing"===U)throw new Error("Generator is already running");if("completed"===U){if("throw"===i)throw l;return{value:void 0,done:!0}}for(n.method=i,n.arg=l;;){var F=n.delegate;if(F){var a=S(F,n);if(a){if(a===o)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===U)throw U="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);U="executing";var r=Q(e,t,n);if("normal"===r.type){if(U=n.done?"completed":"suspendedYield",r.arg===o)continue;return{value:r.arg,done:n.done}}"throw"===r.type&&(U="completed",n.method="throw",n.arg=r.arg)}}}function S(e,t){var n=t.method,U=e.iterator[n];if(void 0===U)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),o;var i=Q(U,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,o;var l=i.arg;return l?l.done?(t[e.resultName]=l.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,o):l:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,o)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function y(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function b(e){if(e){var t=e[l];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var U=-1,i=function t(){for(;++U<e.length;)if(n.call(e,U))return t.value=e[U],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:E}}function E(){return{value:void 0,done:!0}}return c.prototype=R,U(V,"constructor",{value:R,configurable:!0}),U(R,"constructor",{value:c,configurable:!0}),c.displayName=r(R,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,R):(e.__proto__=R,r(e,a,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},Z(m.prototype),r(m.prototype,F,(function(){return this})),e.AsyncIterator=m,e.async=function(t,n,U,i,l){void 0===l&&(l=Promise);var F=new m(d(t,n,U,i),l);return e.isGeneratorFunction(n)?F:F.next().then((function(e){return e.done?e.value:F.next()}))},Z(V),r(V,a,"Generator"),r(V,l,(function(){return this})),r(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var U in t)n.push(U);return n.reverse(),function e(){for(;n.length;){var U=n.pop();if(U in t)return e.value=U,e.done=!1,e}return e.done=!0,e}},e.values=b,y.prototype={constructor:y,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function U(n,U){return F.type="throw",F.arg=e,t.next=n,U&&(t.method="next",t.arg=void 0),!!U}for(var i=this.tryEntries.length-1;i>=0;--i){var l=this.tryEntries[i],F=l.completion;if("root"===l.tryLoc)return U("end");if(l.tryLoc<=this.prev){var a=n.call(l,"catchLoc"),r=n.call(l,"finallyLoc");if(a&&r){if(this.prev<l.catchLoc)return U(l.catchLoc,!0);if(this.prev<l.finallyLoc)return U(l.finallyLoc)}else if(a){if(this.prev<l.catchLoc)return U(l.catchLoc,!0)}else{if(!r)throw new Error("try statement without catch or finally");if(this.prev<l.finallyLoc)return U(l.finallyLoc)}}}},abrupt:function(e,t){for(var U=this.tryEntries.length-1;U>=0;--U){var i=this.tryEntries[U];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var l=i;break}}l&&("break"===e||"continue"===e)&&l.tryLoc<=t&&t<=l.finallyLoc&&(l=null);var F=l?l.completion:{};return F.type=e,F.arg=t,l?(this.method="next",this.next=l.finallyLoc,o):this.complete(F)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),o},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),o}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var U=n.completion;if("throw"===U.type){var i=U.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:b(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),o}},e}function qt(e){return(qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function $t(e,t,n,U,i,l,F){try{var a=e[l](F),r=a.value}catch(d){return void n(d)}a.done?t(r):Promise.resolve(r).then(U,i)}function en(e){return function(){var t=this,n=arguments;return new Promise((function(U,i){var l=e.apply(t,n);function F(e){$t(l,U,i,F,a,"next",e)}function a(e){$t(l,U,i,F,a,"throw",e)}F(void 0)}))}}function tn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function nn(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,on(U.key),U)}}function Un(e,t,n){return t&&nn(e.prototype,t),n&&nn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function ln(e,t,n){return(t=on(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Fn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&rn(e,t)}function an(e){return(an=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function rn(e,t){return(rn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function dn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Qn(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,U=an(e);if(t){var i=an(this).constructor;n=Reflect.construct(U,arguments,i)}else n=U.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return dn(e)}(this,n)}}function on(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}_t({global:!0},{globalThis:i});var sn,cn,Rn=tt("navigator","userAgent")||"",Bn=Rn,un=i.process,hn=un&&un.versions,Vn=hn&&hn.v8;Vn?cn=(sn=Vn.split("."))[0]<4?1:sn[0]+sn[1]:Bn&&(!(sn=Bn.match(/Edge\/(\d+)/))||sn[1]>=74)&&(sn=Bn.match(/Chrome\/(\d+)/))&&(cn=sn[1]);var Zn,mn=cn&&+cn,pn=mn,Sn=F,Jn=!!Object.getOwnPropertySymbols&&!Sn((function(){return!String(Symbol())||!Symbol.sham&&pn&&pn<41})),Wn=Jn&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,yn=i,bn=f,En=Se,kn=Jn,fn=Wn,vn=Ze("wks"),Nn=yn.Symbol,Tn=fn?Nn:Nn&&Nn.withoutSetter||En,Cn=function(e){return bn(vn,e)&&(kn||"string"==typeof vn[e])||(kn&&bn(Nn,e)?vn[e]=Nn[e]:vn[e]=Tn("Symbol."+e)),vn[e]},gn=St,Xn=Jt,Ln=Object.keys||function(e){return gn(e,Xn)},Gn=w,xn=P,In=Ln,Dn=a?Object.defineProperties:function(e,t){xn(e);for(var n,U=In(t),i=U.length,l=0;i>l;)Gn.f(e,n=U[l++],t[n]);return e},Yn=tt("document","documentElement"),Mn=P,Kn=Dn,wn=Jt,Hn=be,Pn=Yn,jn=C,zn="prototype",On="script",_n=ye("IE_PROTO"),An=function(){},qn=function(e){return"<"+On+">"+e+"</"+On+">"},$n=function(){try{Zn=document.domain&&new ActiveXObject("htmlfile")}catch(i){}var e,t,n;$n=Zn?function(e){e.write(qn("")),e.close();var t=e.parentWindow.Object;return e=null,t}(Zn):(t=jn("iframe"),n="java"+On+":",t.style.display="none",Pn.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(qn("document.F=Object")),e.close(),e.F);for(var U=wn.length;U--;)delete $n[zn][wn[U]];return $n()};Hn[_n]=!0;var eU=Object.create||function(e,t){var n;return null!==e?(An[zn]=Mn(e),n=new An,An[zn]=null,n[_n]=e):n=$n(),void 0===t?n:Kn(n,t)},tU=eU,nU=w,UU=Cn("unscopables"),iU=Array.prototype;null==iU[UU]&&nU.f(iU,UU,{configurable:!0,value:tU(null)});var lU,FU,aU,rU={},dU=!F((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),QU=f,oU=b,sU=dU,cU=ye("IE_PROTO"),RU=Object.prototype,BU=sU?Object.getPrototypeOf:function(e){return e=oU(e),QU(e,cU)?e[cU]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?RU:null},uU=F,hU=BU,VU=ee,ZU=f,mU=Cn("iterator"),pU=!1;[].keys&&("next"in(aU=[].keys())?(FU=hU(hU(aU)))!==Object.prototype&&(lU=FU):pU=!0),(null==lU||uU((function(){var e={};return lU[mU].call(e)!==e})))&&(lU={}),ZU(lU,mU)||VU(lU,mU,(function(){return this}));var SU={IteratorPrototype:lU,BUGGY_SAFARI_ITERATORS:pU},JU=w.f,WU=f,yU=Cn("toStringTag"),bU=function(e,t,n){e&&!WU(e=n?e:e.prototype,yU)&&JU(e,yU,{configurable:!0,value:t})},EU=SU.IteratorPrototype,kU=eU,fU=s,vU=bU,NU=rU,TU=function(){return this},CU=S,gU=P,XU=function(e){if(!CU(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e},LU=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(U){}return function(n,U){return gU(n),XU(U),t?e.call(n,U):n.__proto__=U,n}}():void 0),GU=_t,xU=function(e,t,n){var U=t+" Iterator";return e.prototype=kU(EU,{next:fU(1,n)}),vU(e,U,!1),NU[U]=TU,e},IU=BU,DU=LU,YU=bU,MU=ee,KU=_e,wU=rU,HU=SU.IteratorPrototype,PU=SU.BUGGY_SAFARI_ITERATORS,jU=Cn("iterator"),zU="keys",OU="values",_U="entries",AU=function(){return this},qU=function(e,t,n,U,i,l,F){xU(n,t,U);var a,r,d,Q=function(e){if(e===i&&B)return B;if(!PU&&e in c)return c[e];switch(e){case zU:case OU:case _U:return function(){return new n(this,e)}}return function(){return new n(this)}},o=t+" Iterator",s=!1,c=e.prototype,R=c[jU]||c["@@iterator"]||i&&c[i],B=!PU&&R||Q(i),u="Array"==t&&c.entries||R;if(u&&(a=IU(u.call(new e)),HU!==Object.prototype&&a.next&&(IU(a)!==HU&&(DU?DU(a,HU):"function"!=typeof a[jU]&&MU(a,jU,AU)),YU(a,o,!0))),i==OU&&R&&R.name!==OU&&(s=!0,B=function(){return R.call(this)}),c[jU]!==B&&MU(c,jU,B),wU[t]=B,i)if(r={values:Q(OU),keys:l?B:Q(zU),entries:Q(_U)},F)for(d in r)(PU||s||!(d in c))&&KU(c,d,r[d]);else GU({target:t,proto:!0,forced:PU||s},r);return r},$U=p,ei=function(e){iU[UU][e]=!0},ti=rU,ni=Ye,Ui=qU,ii="Array Iterator",li=ni.set,Fi=ni.getterFor(ii),ai=Ui(Array,"Array",(function(e,t){li(this,{type:ii,target:$U(e),index:0,kind:t})}),(function(){var e=Fi(this),t=e.target,n=e.kind,U=e.index++;return!t||U>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:U,done:!1}:"values"==n?{value:t[U],done:!1}:{value:[U,t[U]],done:!1}}),"values");ti.Arguments=ti.Array,ei("keys"),ei("values"),ei("entries");var ri={exports:{}},di=!F((function(){return Object.isExtensible(Object.preventExtensions({}))})),Qi=be,oi=S,si=f,ci=w.f,Ri=di,Bi=Se("meta"),ui=0,hi=Object.isExtensible||function(){return!0},Vi=function(e){ci(e,Bi,{value:{objectID:"O"+ ++ui,weakData:{}}})},Zi=ri.exports={REQUIRED:!1,fastKey:function(e,t){if(!oi(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!si(e,Bi)){if(!hi(e))return"F";if(!t)return"E";Vi(e)}return e[Bi].objectID},getWeakData:function(e,t){if(!si(e,Bi)){if(!hi(e))return!0;if(!t)return!1;Vi(e)}return e[Bi].weakData},onFreeze:function(e){return Ri&&Zi.REQUIRED&&hi(e)&&!si(e,Bi)&&Vi(e),e}};Qi[Bi]=!0;var mi=ri.exports,pi=rU,Si=Cn("iterator"),Ji=Array.prototype,Wi=function(e){return void 0!==e&&(pi.Array===e||Ji[Si]===e)},yi=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},bi=yi,Ei=function(e,t,n){if(bi(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,U){return e.call(t,n,U)};case 3:return function(n,U,i){return e.call(t,n,U,i)}}return function(){return e.apply(t,arguments)}},ki={};ki[Cn("toStringTag")]="z";var fi="[object z]"===String(ki),vi=fi,Ni=R,Ti=Cn("toStringTag"),Ci="Arguments"==Ni(function(){return arguments}()),gi=vi?Ni:function(e){var t,n,U;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),Ti))?n:Ci?Ni(t):"Object"==(U=Ni(t))&&"function"==typeof t.callee?"Arguments":U},Xi=gi,Li=rU,Gi=Cn("iterator"),xi=function(e){if(null!=e)return e[Gi]||e["@@iterator"]||Li[Xi(e)]},Ii=P,Di=P,Yi=Wi,Mi=rt,Ki=Ei,wi=xi,Hi=function(e){var t=e.return;if(void 0!==t)return Ii(t.call(e)).value},Pi=function(e,t){this.stopped=e,this.result=t},ji=function(e,t,n){var U,i,l,F,a,r,d,Q=n&&n.that,o=!(!n||!n.AS_ENTRIES),s=!(!n||!n.IS_ITERATOR),c=!(!n||!n.INTERRUPTED),R=Ki(t,Q,1+o+c),B=function(e){return U&&Hi(U),new Pi(!0,e)},u=function(e){return o?(Di(e),c?R(e[0],e[1],B):R(e[0],e[1])):c?R(e,B):R(e)};if(s)U=e;else{if("function"!=typeof(i=wi(e)))throw TypeError("Target is not iterable");if(Yi(i)){for(l=0,F=Mi(e.length);F>l;l++)if((a=u(e[l]))&&a instanceof Pi)return a;return new Pi(!1)}U=i.call(e)}for(r=U.next;!(d=r.call(U)).done;){try{a=u(d.value)}catch(h){throw Hi(U),h}if("object"==typeof a&&a&&a instanceof Pi)return a}return new Pi(!1)},zi=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},Oi=Cn("iterator"),_i=!1;try{var Ai=0,qi={next:function(){return{done:!!Ai++}},return:function(){_i=!0}};qi[Oi]=function(){return this},Array.from(qi,(function(){throw 2}))}catch(WV){}var $i=function(e,t){if(!t&&!_i)return!1;var n=!1;try{var U={};U[Oi]=function(){return{next:function(){return{done:n=!0}}}},e(U)}catch(WV){}return n},el=S,tl=LU,nl=function(e,t,n){var U,i;return tl&&"function"==typeof(U=t.constructor)&&U!==n&&el(i=U.prototype)&&i!==n.prototype&&tl(e,i),e},Ul=_t,il=i,ll=Mt,Fl=_e,al=mi,rl=ji,dl=zi,Ql=S,ol=F,sl=$i,cl=bU,Rl=nl,Bl=_e,ul=function(e,t,n){for(var U in t)Bl(e,U,t[U],n);return e},hl=tt,Vl=w,Zl=a,ml=Cn("species"),pl=function(e){var t=hl(e),n=Vl.f;Zl&&t&&!t[ml]&&n(t,ml,{configurable:!0,get:function(){return this}})},Sl=w.f,Jl=eU,Wl=ul,yl=Ei,bl=zi,El=ji,kl=qU,fl=pl,vl=a,Nl=mi.fastKey,Tl=Ye.set,Cl=Ye.getterFor,gl={getConstructor:function(e,t,n,U){var i=e((function(e,l){bl(e,i,t),Tl(e,{type:t,index:Jl(null),first:void 0,last:void 0,size:0}),vl||(e.size=0),null!=l&&El(l,e[U],{that:e,AS_ENTRIES:n})})),l=Cl(t),F=function(e,t,n){var U,i,F=l(e),r=a(e,t);return r?r.value=n:(F.last=r={index:i=Nl(t,!0),key:t,value:n,previous:U=F.last,next:void 0,removed:!1},F.first||(F.first=r),U&&(U.next=r),vl?F.size++:e.size++,"F"!==i&&(F.index[i]=r)),e},a=function(e,t){var n,U=l(e),i=Nl(t);if("F"!==i)return U.index[i];for(n=U.first;n;n=n.next)if(n.key==t)return n};return Wl(i.prototype,{clear:function(){for(var e=l(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,vl?e.size=0:this.size=0},delete:function(e){var t=this,n=l(t),U=a(t,e);if(U){var i=U.next,F=U.previous;delete n.index[U.index],U.removed=!0,F&&(F.next=i),i&&(i.previous=F),n.first==U&&(n.first=i),n.last==U&&(n.last=F),vl?n.size--:t.size--}return!!U},forEach:function(e){for(var t,n=l(this),U=yl(e,arguments.length>1?arguments[1]:void 0,3);t=t?t.next:n.first;)for(U(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!a(this,e)}}),Wl(i.prototype,n?{get:function(e){var t=a(this,e);return t&&t.value},set:function(e,t){return F(this,0===e?0:e,t)}}:{add:function(e){return F(this,e=0===e?0:e,e)}}),vl&&Sl(i.prototype,"size",{get:function(){return l(this).size}}),i},setStrong:function(e,t,n){var U=t+" Iterator",i=Cl(t),l=Cl(U);kl(e,t,(function(e,t){Tl(this,{type:U,target:e,state:i(e),kind:t,last:void 0})}),(function(){for(var e=l(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),fl(t)}};!function(e,t,n){var U=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),l=U?"set":"add",F=il[e],a=F&&F.prototype,r=F,d={},Q=function(e){var t=a[e];Fl(a,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!Ql(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return i&&!Ql(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!Ql(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(ll(e,"function"!=typeof F||!(i||a.forEach&&!ol((function(){(new F).entries().next()})))))r=n.getConstructor(t,e,U,l),al.REQUIRED=!0;else if(ll(e,!0)){var o=new r,s=o[l](i?{}:-0,1)!=o,c=ol((function(){o.has(1)})),R=sl((function(e){new F(e)})),B=!i&&ol((function(){for(var e=new F,t=5;t--;)e[l](t,t);return!e.has(-0)}));R||((r=t((function(t,n){dl(t,r,e);var i=Rl(new F,t,r);return null!=n&&rl(n,i[l],{that:i,AS_ENTRIES:U}),i}))).prototype=a,a.constructor=r),(c||B)&&(Q("delete"),Q("has"),U&&Q("get")),(B||s)&&Q(l),i&&a.clear&&delete a.clear}d[e]=r,Ul({global:!0,forced:r!=F},d),cl(r,e),i||n.setStrong(r,e,U)}("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),gl);var Xl=gi,Ll=fi?{}.toString:function(){return"[object "+Xl(this)+"]"};fi||_e(Object.prototype,"toString",Ll,{unsafe:!0});var Gl=lt,xl=V,Il=function(e){return function(t,n){var U,i,l=String(xl(t)),F=Gl(n),a=l.length;return F<0||F>=a?e?"":void 0:(U=l.charCodeAt(F))<55296||U>56319||F+1===a||(i=l.charCodeAt(F+1))<56320||i>57343?e?l.charAt(F):U:e?l.slice(F,F+2):i-56320+(U-55296<<10)+65536}},Dl={codeAt:Il(!1),charAt:Il(!0)},Yl=Dl.charAt,Ml=Ye,Kl=qU,wl="String Iterator",Hl=Ml.set,Pl=Ml.getterFor(wl);Kl(String,"String",(function(e){Hl(this,{type:wl,string:String(e),index:0})}),(function(){var e,t=Pl(this),n=t.string,U=t.index;return U>=n.length?{value:void 0,done:!0}:(e=Yl(n,U),t.index+=e.length,{value:e,done:!1})}));var jl=P,zl=yi,Ol=function(){for(var e,t=jl(this),n=zl(t.delete),U=!0,i=0,l=arguments.length;i<l;i++)e=n.call(t,arguments[i]),U=U&&e;return!!U};_t({target:"Map",proto:!0,real:!0,forced:!1},{deleteAll:function(){return Ol.apply(this,arguments)}});var _l=function(e){return Map.prototype.entries.call(e)},Al=P,ql=Ei,$l=_l,eF=ji;_t({target:"Map",proto:!0,real:!0,forced:!1},{every:function(e){var t=Al(this),n=$l(t),U=ql(e,arguments.length>1?arguments[1]:void 0,3);return!eF(n,(function(e,n,i){if(!U(n,e,t))return i()}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}});var tF=P,nF=yi,UF=Cn("species"),iF=function(e,t){var n,U=tF(e).constructor;return void 0===U||null==(n=tF(U)[UF])?t:nF(n)},lF=tt,FF=P,aF=yi,rF=Ei,dF=iF,QF=_l,oF=ji;_t({target:"Map",proto:!0,real:!0,forced:!1},{filter:function(e){var t=FF(this),n=QF(t),U=rF(e,arguments.length>1?arguments[1]:void 0,3),i=new(dF(t,lF("Map"))),l=aF(i.set);return oF(n,(function(e,n){U(n,e,t)&&l.call(i,e,n)}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),i}});var sF=P,cF=Ei,RF=_l,BF=ji;_t({target:"Map",proto:!0,real:!0,forced:!1},{find:function(e){var t=sF(this),n=RF(t),U=cF(e,arguments.length>1?arguments[1]:void 0,3);return BF(n,(function(e,n,i){if(U(n,e,t))return i(n)}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}});var uF=P,hF=Ei,VF=_l,ZF=ji;_t({target:"Map",proto:!0,real:!0,forced:!1},{findKey:function(e){var t=uF(this),n=VF(t),U=hF(e,arguments.length>1?arguments[1]:void 0,3);return ZF(n,(function(e,n,i){if(U(n,e,t))return i(e)}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}});var mF=P,pF=_l,SF=function(e,t){return e===t||e!=e&&t!=t},JF=ji;_t({target:"Map",proto:!0,real:!0,forced:!1},{includes:function(e){return JF(pF(mF(this)),(function(t,n,U){if(SF(n,e))return U()}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}});var WF=P,yF=_l,bF=ji;_t({target:"Map",proto:!0,real:!0,forced:!1},{keyOf:function(e){return bF(yF(WF(this)),(function(t,n,U){if(n===e)return U(t)}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}});var EF=tt,kF=P,fF=yi,vF=Ei,NF=iF,TF=_l,CF=ji;_t({target:"Map",proto:!0,real:!0,forced:!1},{mapKeys:function(e){var t=kF(this),n=TF(t),U=vF(e,arguments.length>1?arguments[1]:void 0,3),i=new(NF(t,EF("Map"))),l=fF(i.set);return CF(n,(function(e,n){l.call(i,U(n,e,t),n)}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),i}});var gF=tt,XF=P,LF=yi,GF=Ei,xF=iF,IF=_l,DF=ji;_t({target:"Map",proto:!0,real:!0,forced:!1},{mapValues:function(e){var t=XF(this),n=IF(t),U=GF(e,arguments.length>1?arguments[1]:void 0,3),i=new(xF(t,gF("Map"))),l=LF(i.set);return DF(n,(function(e,n){l.call(i,e,U(n,e,t))}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),i}});var YF=P,MF=yi,KF=ji;_t({target:"Map",proto:!0,real:!0,forced:!1},{merge:function(e){for(var t=YF(this),n=MF(t.set),U=0;U<arguments.length;)KF(arguments[U++],n,{that:t,AS_ENTRIES:!0});return t}});var wF=P,HF=yi,PF=_l,jF=ji;_t({target:"Map",proto:!0,real:!0,forced:!1},{reduce:function(e){var t=wF(this),n=PF(t),U=arguments.length<2,i=U?void 0:arguments[1];if(HF(e),jF(n,(function(n,l){U?(U=!1,i=l):i=e(i,l,n,t)}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),U)throw TypeError("Reduce of empty map with no initial value");return i}});var zF=P,OF=Ei,_F=_l,AF=ji;_t({target:"Map",proto:!0,real:!0,forced:!1},{some:function(e){var t=zF(this),n=_F(t),U=OF(e,arguments.length>1?arguments[1]:void 0,3);return AF(n,(function(e,n,i){if(U(n,e,t))return i()}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}});var qF=P,$F=yi;_t({target:"Map",proto:!0,real:!0,forced:!1},{update:function(e,t){var n=qF(this),U=arguments.length;$F(t);var i=n.has(e);if(!i&&U<3)throw TypeError("Updating absent value");var l=i?n.get(e):$F(U>2?arguments[2]:void 0)(e,n);return n.set(e,t(l,e,n)),n}});var ea={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},ta=i,na=ea,Ua=ai,ia=ee,la=Cn,Fa=la("iterator"),aa=la("toStringTag"),ra=Ua.values;for(var da in na){var Qa=ta[da],oa=Qa&&Qa.prototype;if(oa){if(oa[Fa]!==ra)try{ia(oa,Fa,ra)}catch(WV){oa[Fa]=ra}if(oa[aa]||ia(oa,aa,da),na[da])for(var sa in Ua)if(oa[sa]!==Ua[sa])try{ia(oa,sa,Ua[sa])}catch(WV){oa[sa]=Ua[sa]}}}var ca=R,Ra=Array.isArray||function(e){return"Array"==ca(e)},Ba=S,ua=Ra,ha=Cn("species"),Va=function(e,t){var n;return ua(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!ua(n.prototype)?Ba(n)&&null===(n=n[ha])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},Za=Ei,ma=h,pa=b,Sa=rt,Ja=Va,Wa=[].push,ya=function(e){var t=1==e,n=2==e,U=3==e,i=4==e,l=6==e,F=7==e,a=5==e||l;return function(r,d,Q,o){for(var s,c,R=pa(r),B=ma(R),u=Za(d,Q,3),h=Sa(B.length),V=0,Z=o||Ja,m=t?Z(r,h):n||F?Z(r,0):void 0;h>V;V++)if((a||V in B)&&(c=u(s=B[V],V,R),e))if(t)m[V]=c;else if(c)switch(e){case 3:return!0;case 5:return s;case 6:return V;case 2:Wa.call(m,s)}else switch(e){case 4:return!1;case 7:Wa.call(m,s)}return l?-1:U||i?i:m}},ba={forEach:ya(0),map:ya(1),filter:ya(2),some:ya(3),every:ya(4),find:ya(5),findIndex:ya(6),filterOut:ya(7)},Ea=F,ka=mn,fa=Cn("species"),va=function(e){return ka>=51||!Ea((function(){var t=[];return(t.constructor={})[fa]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},Na=ba.map;_t({target:"Array",proto:!0,forced:!va("map")},{map:function(e){return Na(this,e,arguments.length>1?arguments[1]:void 0)}});var Ta=b,Ca=Ln;_t({target:"Object",stat:!0,forced:F((function(){Ca(1)}))},{keys:function(e){return Ca(Ta(e))}});var ga=W,Xa=w,La=s,Ga=function(e,t,n){var U=ga(t);U in e?Xa.f(e,U,La(0,n)):e[U]=n},xa=_t,Ia=F,Da=Ra,Ya=S,Ma=b,Ka=rt,wa=Ga,Ha=Va,Pa=va,ja=mn,za=Cn("isConcatSpreadable"),Oa=9007199254740991,_a="Maximum allowed index exceeded",Aa=ja>=51||!Ia((function(){var e=[];return e[za]=!1,e.concat()[0]!==e})),qa=Pa("concat"),$a=function(e){if(!Ya(e))return!1;var t=e[za];return void 0!==t?!!t:Da(e)};xa({target:"Array",proto:!0,forced:!Aa||!qa},{concat:function(e){var t,n,U,i,l,F=Ma(this),a=Ha(F,0),r=0;for(t=-1,U=arguments.length;t<U;t++)if($a(l=-1===t?F:arguments[t])){if(r+(i=Ka(l.length))>Oa)throw TypeError(_a);for(n=0;n<i;n++,r++)n in l&&wa(a,r,l[n])}else{if(r>=Oa)throw TypeError(_a);wa(a,r++,l)}return a.length=r,a}});var er,tr,nr,Ur=i.Promise,ir=/(?:iphone|ipod|ipad).*applewebkit/i.test(Rn),lr="process"==R(i.process),Fr=i,ar=F,rr=Ei,dr=Yn,Qr=C,or=ir,sr=lr,cr=Fr.location,Rr=Fr.setImmediate,Br=Fr.clearImmediate,ur=Fr.process,hr=Fr.MessageChannel,Vr=Fr.Dispatch,Zr=0,mr={},pr="onreadystatechange",Sr=function(e){if(mr.hasOwnProperty(e)){var t=mr[e];delete mr[e],t()}},Jr=function(e){return function(){Sr(e)}},Wr=function(e){Sr(e.data)},yr=function(e){Fr.postMessage(e+"",cr.protocol+"//"+cr.host)};Rr&&Br||(Rr=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return mr[++Zr]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},er(Zr),Zr},Br=function(e){delete mr[e]},sr?er=function(e){ur.nextTick(Jr(e))}:Vr&&Vr.now?er=function(e){Vr.now(Jr(e))}:hr&&!or?(nr=(tr=new hr).port2,tr.port1.onmessage=Wr,er=rr(nr.postMessage,nr,1)):Fr.addEventListener&&"function"==typeof postMessage&&!Fr.importScripts&&cr&&"file:"!==cr.protocol&&!ar(yr)?(er=yr,Fr.addEventListener("message",Wr,!1)):er=pr in Qr("script")?function(e){dr.appendChild(Qr("script"))[pr]=function(){dr.removeChild(this),Sr(e)}}:function(e){setTimeout(Jr(e),0)});var br,Er,kr,fr,vr,Nr,Tr,Cr,gr={set:Rr,clear:Br},Xr=/web0s(?!.*chrome)/i.test(Rn),Lr=i,Gr=l.f,xr=gr.set,Ir=ir,Dr=Xr,Yr=lr,Mr=Lr.MutationObserver||Lr.WebKitMutationObserver,Kr=Lr.document,wr=Lr.process,Hr=Lr.Promise,Pr=Gr(Lr,"queueMicrotask"),jr=Pr&&Pr.value;jr||(br=function(){var e,t;for(Yr&&(e=wr.domain)&&e.exit();Er;){t=Er.fn,Er=Er.next;try{t()}catch(WV){throw Er?fr():kr=void 0,WV}}kr=void 0,e&&e.enter()},Ir||Yr||Dr||!Mr||!Kr?Hr&&Hr.resolve?((Tr=Hr.resolve(void 0)).constructor=Hr,Cr=Tr.then,fr=function(){Cr.call(Tr,br)}):fr=Yr?function(){wr.nextTick(br)}:function(){xr.call(Lr,br)}:(vr=!0,Nr=Kr.createTextNode(""),new Mr(br).observe(Nr,{characterData:!0}),fr=function(){Nr.data=vr=!vr}));var zr=jr||function(e){var t={fn:e,next:void 0};kr&&(kr.next=t),Er||(Er=t,fr()),kr=t},Or={},_r=yi,Ar=function(e){var t,n;this.promise=new e((function(e,U){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=U})),this.resolve=_r(t),this.reject=_r(n)};Or.f=function(e){return new Ar(e)};var qr,$r,ed,td,nd=P,Ud=S,id=Or,ld=i,Fd="object"==typeof window,ad=_t,rd=i,dd=tt,Qd=Ur,od=_e,sd=ul,cd=LU,Rd=bU,Bd=pl,ud=S,hd=yi,Vd=zi,Zd=Qe,md=ji,pd=$i,Sd=iF,Jd=gr.set,Wd=zr,yd=function(e,t){if(nd(e),Ud(t)&&t.constructor===e)return t;var n=id.f(e);return(0,n.resolve)(t),n.promise},bd=function(e,t){var n=ld.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))},Ed=Or,kd=function(e){try{return{error:!1,value:e()}}catch(WV){return{error:!0,value:WV}}},fd=Ye,vd=Mt,Nd=Fd,Td=lr,Cd=mn,gd=Cn("species"),Xd="Promise",Ld=fd.get,Gd=fd.set,xd=fd.getterFor(Xd),Id=Qd&&Qd.prototype,Dd=Qd,Yd=Id,Md=rd.TypeError,Kd=rd.document,wd=rd.process,Hd=Ed.f,Pd=Hd,jd=!!(Kd&&Kd.createEvent&&rd.dispatchEvent),zd="function"==typeof PromiseRejectionEvent,Od="unhandledrejection",_d=!1,Ad=vd(Xd,(function(){var e=Zd(Dd)!==String(Dd);if(!e&&66===Cd)return!0;if(Cd>=51&&/native code/.test(Dd))return!1;var t=new Dd((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};return(t.constructor={})[gd]=n,!(_d=t.then((function(){}))instanceof n)||!e&&Nd&&!zd})),qd=Ad||!pd((function(e){Dd.all(e).catch((function(){}))})),$d=function(e){var t;return!(!ud(e)||"function"!=typeof(t=e.then))&&t},eQ=function(e,t){if(!e.notified){e.notified=!0;var n=e.reactions;Wd((function(){for(var U=e.value,i=1==e.state,l=0;n.length>l;){var F,a,r,d=n[l++],Q=i?d.ok:d.fail,o=d.resolve,s=d.reject,c=d.domain;try{Q?(i||(2===e.rejection&&iQ(e),e.rejection=1),!0===Q?F=U:(c&&c.enter(),F=Q(U),c&&(c.exit(),r=!0)),F===d.promise?s(Md("Promise-chain cycle")):(a=$d(F))?a.call(F,o,s):o(F)):s(U)}catch(WV){c&&!r&&c.exit(),s(WV)}}e.reactions=[],e.notified=!1,t&&!e.rejection&&nQ(e)}))}},tQ=function(e,t,n){var U,i;jd?((U=Kd.createEvent("Event")).promise=t,U.reason=n,U.initEvent(e,!1,!0),rd.dispatchEvent(U)):U={promise:t,reason:n},!zd&&(i=rd["on"+e])?i(U):e===Od&&bd("Unhandled promise rejection",n)},nQ=function(e){Jd.call(rd,(function(){var t,n=e.facade,U=e.value;if(UQ(e)&&(t=kd((function(){Td?wd.emit("unhandledRejection",U,n):tQ(Od,n,U)})),e.rejection=Td||UQ(e)?2:1,t.error))throw t.value}))},UQ=function(e){return 1!==e.rejection&&!e.parent},iQ=function(e){Jd.call(rd,(function(){var t=e.facade;Td?wd.emit("rejectionHandled",t):tQ("rejectionhandled",t,e.value)}))},lQ=function(e,t,n){return function(U){e(t,U,n)}},FQ=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,eQ(e,!0))},aQ=function(e,t,n){if(!e.done){e.done=!0,n&&(e=n);try{if(e.facade===t)throw Md("Promise can't be resolved itself");var U=$d(t);U?Wd((function(){var n={done:!1};try{U.call(t,lQ(aQ,n,e),lQ(FQ,n,e))}catch(WV){FQ(n,WV,e)}})):(e.value=t,e.state=1,eQ(e,!1))}catch(WV){FQ({done:!1},WV,e)}}};if(Ad&&(Yd=(Dd=function(e){Vd(this,Dd,Xd),hd(e),qr.call(this);var t=Ld(this);try{e(lQ(aQ,t),lQ(FQ,t))}catch(WV){FQ(t,WV)}}).prototype,(qr=function(e){Gd(this,{type:Xd,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=sd(Yd,{then:function(e,t){var n=xd(this),U=Hd(Sd(this,Dd));return U.ok="function"!=typeof e||e,U.fail="function"==typeof t&&t,U.domain=Td?wd.domain:void 0,n.parent=!0,n.reactions.push(U),0!=n.state&&eQ(n,!1),U.promise},catch:function(e){return this.then(void 0,e)}}),$r=function(){var e=new qr,t=Ld(e);this.promise=e,this.resolve=lQ(aQ,t),this.reject=lQ(FQ,t)},Ed.f=Hd=function(e){return e===Dd||e===ed?new $r(e):Pd(e)},"function"==typeof Qd&&Id!==Object.prototype)){td=Id.then,_d||(od(Id,"then",(function(e,t){var n=this;return new Dd((function(e,t){td.call(n,e,t)})).then(e,t)}),{unsafe:!0}),od(Id,"catch",Yd.catch,{unsafe:!0}));try{delete Id.constructor}catch(WV){}cd&&cd(Id,Yd)}ad({global:!0,wrap:!0,forced:Ad},{Promise:Dd}),Rd(Dd,Xd,!1),Bd(Xd),ed=dd(Xd),ad({target:Xd,stat:!0,forced:Ad},{reject:function(e){var t=Hd(this);return t.reject.call(void 0,e),t.promise}}),ad({target:Xd,stat:!0,forced:Ad},{resolve:function(e){return yd(this,e)}}),ad({target:Xd,stat:!0,forced:qd},{all:function(e){var t=this,n=Hd(t),U=n.resolve,i=n.reject,l=kd((function(){var n=hd(t.resolve),l=[],F=0,a=1;md(e,(function(e){var r=F++,d=!1;l.push(void 0),a++,n.call(t,e).then((function(e){d||(d=!0,l[r]=e,--a||U(l))}),i)})),--a||U(l)}));return l.error&&i(l.value),n.promise},race:function(e){var t=this,n=Hd(t),U=n.reject,i=kd((function(){var i=hd(t.resolve);md(e,(function(e){i.call(t,e).then(n.resolve,U)}))}));return i.error&&U(i.value),n.promise}});var rQ,dQ="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,QQ=dQ,oQ=a,sQ=i,cQ=S,RQ=f,BQ=gi,uQ=ee,hQ=_e,VQ=w.f,ZQ=BU,mQ=LU,pQ=Cn,SQ=Se,JQ=sQ.Int8Array,WQ=JQ&&JQ.prototype,yQ=sQ.Uint8ClampedArray,bQ=yQ&&yQ.prototype,EQ=JQ&&ZQ(JQ),kQ=WQ&&ZQ(WQ),fQ=Object.prototype,vQ=fQ.isPrototypeOf,NQ=pQ("toStringTag"),TQ=SQ("TYPED_ARRAY_TAG"),CQ=QQ&&!!mQ&&"Opera"!==BQ(sQ.opera),gQ=!1,XQ={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},LQ={BigInt64Array:8,BigUint64Array:8},GQ=function(e){if(!cQ(e))return!1;var t=BQ(e);return RQ(XQ,t)||RQ(LQ,t)};for(rQ in XQ)sQ[rQ]||(CQ=!1);if((!CQ||"function"!=typeof EQ||EQ===Function.prototype)&&(EQ=function(){throw TypeError("Incorrect invocation")},CQ))for(rQ in XQ)sQ[rQ]&&mQ(sQ[rQ],EQ);if((!CQ||!kQ||kQ===fQ)&&(kQ=EQ.prototype,CQ))for(rQ in XQ)sQ[rQ]&&mQ(sQ[rQ].prototype,kQ);if(CQ&&ZQ(bQ)!==kQ&&mQ(bQ,kQ),oQ&&!RQ(kQ,NQ))for(rQ in gQ=!0,VQ(kQ,NQ,{get:function(){return cQ(this)?this[TQ]:void 0}}),XQ)sQ[rQ]&&uQ(sQ[rQ],TQ,rQ);var xQ={NATIVE_ARRAY_BUFFER_VIEWS:CQ,TYPED_ARRAY_TAG:gQ&&TQ,aTypedArray:function(e){if(GQ(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(mQ){if(vQ.call(EQ,e))return e}else for(var t in XQ)if(RQ(XQ,rQ)){var n=sQ[t];if(n&&(e===n||vQ.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(oQ){if(n)for(var U in XQ){var i=sQ[U];if(i&&RQ(i.prototype,e))try{delete i.prototype[e]}catch(WV){}}kQ[e]&&!n||hQ(kQ,e,n?t:CQ&&WQ[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var U,i;if(oQ){if(mQ){if(n)for(U in XQ)if((i=sQ[U])&&RQ(i,e))try{delete i[e]}catch(WV){}if(EQ[e]&&!n)return;try{return hQ(EQ,e,n?t:CQ&&EQ[e]||t)}catch(WV){}}for(U in XQ)!(i=sQ[U])||i[e]&&!n||hQ(i,e,t)}},isView:function(e){if(!cQ(e))return!1;var t=BQ(e);return"DataView"===t||RQ(XQ,t)||RQ(LQ,t)},isTypedArray:GQ,TypedArray:EQ,TypedArrayPrototype:kQ},IQ=i,DQ=F,YQ=$i,MQ=xQ.NATIVE_ARRAY_BUFFER_VIEWS,KQ=IQ.ArrayBuffer,wQ=IQ.Int8Array,HQ=!MQ||!DQ((function(){wQ(1)}))||!DQ((function(){new wQ(-1)}))||!YQ((function(e){new wQ,new wQ(null),new wQ(1.5),new wQ(e)}),!0)||DQ((function(){return 1!==new wQ(new KQ(2),1,void 0).length})),PQ=xQ.aTypedArrayConstructor;(0,xQ.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(PQ(this))(t);t>e;)n[e]=arguments[e++];return n}),HQ);var jQ={exports:{}},zQ=lt,OQ=rt,_Q=function(e){if(void 0===e)return 0;var t=zQ(e),n=OQ(t);if(t!==n)throw RangeError("Wrong length or index");return n},AQ=Math.abs,qQ=Math.pow,$Q=Math.floor,eo=Math.log,to=Math.LN2,no=b,Uo=st,io=rt,lo=function(e){for(var t=no(this),n=io(t.length),U=arguments.length,i=Uo(U>1?arguments[1]:void 0,n),l=U>2?arguments[2]:void 0,F=void 0===l?n:Uo(l,n);F>i;)t[i++]=e;return t},Fo=i,ao=a,ro=dQ,Qo=ee,oo=ul,so=F,co=zi,Ro=lt,Bo=rt,uo=_Q,ho={pack:function(e,t,n){var U,i,l,F=new Array(n),a=8*n-t-1,r=(1<<a)-1,d=r>>1,Q=23===t?qQ(2,-24)-qQ(2,-77):0,o=e<0||0===e&&1/e<0?1:0,s=0;for((e=AQ(e))!=e||e===1/0?(i=e!=e?1:0,U=r):(U=$Q(eo(e)/to),e*(l=qQ(2,-U))<1&&(U--,l*=2),(e+=U+d>=1?Q/l:Q*qQ(2,1-d))*l>=2&&(U++,l/=2),U+d>=r?(i=0,U=r):U+d>=1?(i=(e*l-1)*qQ(2,t),U+=d):(i=e*qQ(2,d-1)*qQ(2,t),U=0));t>=8;F[s++]=255&i,i/=256,t-=8);for(U=U<<t|i,a+=t;a>0;F[s++]=255&U,U/=256,a-=8);return F[--s]|=128*o,F},unpack:function(e,t){var n,U=e.length,i=8*U-t-1,l=(1<<i)-1,F=l>>1,a=i-7,r=U-1,d=e[r--],Q=127&d;for(d>>=7;a>0;Q=256*Q+e[r],r--,a-=8);for(n=Q&(1<<-a)-1,Q>>=-a,a+=t;a>0;n=256*n+e[r],r--,a-=8);if(0===Q)Q=1-F;else{if(Q===l)return n?NaN:d?-1/0:1/0;n+=qQ(2,t),Q-=F}return(d?-1:1)*n*qQ(2,Q-t)}},Vo=BU,Zo=LU,mo=nt.f,po=w.f,So=lo,Jo=bU,Wo=Ye.get,yo=Ye.set,bo="ArrayBuffer",Eo="DataView",ko="prototype",fo="Wrong index",vo=Fo[bo],No=vo,To=Fo[Eo],Co=To&&To[ko],go=Object.prototype,Xo=Fo.RangeError,Lo=ho.pack,Go=ho.unpack,xo=function(e){return[255&e]},Io=function(e){return[255&e,e>>8&255]},Do=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},Yo=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},Mo=function(e){return Lo(e,23,4)},Ko=function(e){return Lo(e,52,8)},wo=function(e,t){po(e[ko],t,{get:function(){return Wo(this)[t]}})},Ho=function(e,t,n,U){var i=uo(n),l=Wo(e);if(i+t>l.byteLength)throw Xo(fo);var F=Wo(l.buffer).bytes,a=i+l.byteOffset,r=F.slice(a,a+t);return U?r:r.reverse()},Po=function(e,t,n,U,i,l){var F=uo(n),a=Wo(e);if(F+t>a.byteLength)throw Xo(fo);for(var r=Wo(a.buffer).bytes,d=F+a.byteOffset,Q=U(+i),o=0;o<t;o++)r[d+o]=Q[l?o:t-o-1]};if(ro){if(!so((function(){vo(1)}))||!so((function(){new vo(-1)}))||so((function(){return new vo,new vo(1.5),new vo(NaN),vo.name!=bo}))){for(var jo,zo=(No=function(e){return co(this,No),new vo(uo(e))})[ko]=vo[ko],Oo=mo(vo),_o=0;Oo.length>_o;)(jo=Oo[_o++])in No||Qo(No,jo,vo[jo]);zo.constructor=No}Zo&&Vo(Co)!==go&&Zo(Co,go);var Ao=new To(new No(2)),qo=Co.setInt8;Ao.setInt8(0,2147483648),Ao.setInt8(1,2147483649),!Ao.getInt8(0)&&Ao.getInt8(1)||oo(Co,{setInt8:function(e,t){qo.call(this,e,t<<24>>24)},setUint8:function(e,t){qo.call(this,e,t<<24>>24)}},{unsafe:!0})}else No=function(e){co(this,No,bo);var t=uo(e);yo(this,{bytes:So.call(new Array(t),0),byteLength:t}),ao||(this.byteLength=t)},To=function(e,t,n){co(this,To,Eo),co(e,No,Eo);var U=Wo(e).byteLength,i=Ro(t);if(i<0||i>U)throw Xo("Wrong offset");if(i+(n=void 0===n?U-i:Bo(n))>U)throw Xo("Wrong length");yo(this,{buffer:e,byteLength:n,byteOffset:i}),ao||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},ao&&(wo(No,"byteLength"),wo(To,"buffer"),wo(To,"byteLength"),wo(To,"byteOffset")),oo(To[ko],{getInt8:function(e){return Ho(this,1,e)[0]<<24>>24},getUint8:function(e){return Ho(this,1,e)[0]},getInt16:function(e){var t=Ho(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=Ho(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return Yo(Ho(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return Yo(Ho(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return Go(Ho(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return Go(Ho(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){Po(this,1,e,xo,t)},setUint8:function(e,t){Po(this,1,e,xo,t)},setInt16:function(e,t){Po(this,2,e,Io,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){Po(this,2,e,Io,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){Po(this,4,e,Do,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){Po(this,4,e,Do,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){Po(this,4,e,Mo,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){Po(this,8,e,Ko,t,arguments.length>2?arguments[2]:void 0)}});Jo(No,bo),Jo(To,Eo);var $o={ArrayBuffer:No,DataView:To},es=lt,ts=function(e){var t=es(e);if(t<0)throw RangeError("The argument can't be less than 0");return t},ns=function(e,t){var n=ts(e);if(n%t)throw RangeError("Wrong offset");return n},Us=b,is=rt,ls=xi,Fs=Wi,as=Ei,rs=xQ.aTypedArrayConstructor,ds=_t,Qs=i,os=a,ss=HQ,cs=xQ,Rs=$o,Bs=zi,us=s,hs=ee,Vs=rt,Zs=_Q,ms=ns,ps=W,Ss=f,Js=gi,Ws=S,ys=eU,bs=LU,Es=nt.f,ks=function(e){var t,n,U,i,l,F,a=Us(e),r=arguments.length,d=r>1?arguments[1]:void 0,Q=void 0!==d,o=ls(a);if(null!=o&&!Fs(o))for(F=(l=o.call(a)).next,a=[];!(i=F.call(l)).done;)a.push(i.value);for(Q&&r>2&&(d=as(d,arguments[2],2)),n=is(a.length),U=new(rs(this))(n),t=0;n>t;t++)U[t]=Q?d(a[t],t):a[t];return U},fs=ba.forEach,vs=pl,Ns=w,Ts=l,Cs=nl,gs=Ye.get,Xs=Ye.set,Ls=Ns.f,Gs=Ts.f,xs=Math.round,Is=Qs.RangeError,Ds=Rs.ArrayBuffer,Ys=Rs.DataView,Ms=cs.NATIVE_ARRAY_BUFFER_VIEWS,Ks=cs.TYPED_ARRAY_TAG,ws=cs.TypedArray,Hs=cs.TypedArrayPrototype,Ps=cs.aTypedArrayConstructor,js=cs.isTypedArray,zs="BYTES_PER_ELEMENT",Os="Wrong length",_s=function(e,t){for(var n=0,U=t.length,i=new(Ps(e))(U);U>n;)i[n]=t[n++];return i},As=function(e,t){Ls(e,t,{get:function(){return gs(this)[t]}})},qs=function(e){var t;return e instanceof Ds||"ArrayBuffer"==(t=Js(e))||"SharedArrayBuffer"==t},$s=function(e,t){return js(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},ec=function(e,t){return $s(e,t=ps(t,!0))?us(2,e[t]):Gs(e,t)},tc=function(e,t,n){return!($s(e,t=ps(t,!0))&&Ws(n)&&Ss(n,"value"))||Ss(n,"get")||Ss(n,"set")||n.configurable||Ss(n,"writable")&&!n.writable||Ss(n,"enumerable")&&!n.enumerable?Ls(e,t,n):(e[t]=n.value,e)};os?(Ms||(Ts.f=ec,Ns.f=tc,As(Hs,"buffer"),As(Hs,"byteOffset"),As(Hs,"byteLength"),As(Hs,"length")),ds({target:"Object",stat:!0,forced:!Ms},{getOwnPropertyDescriptor:ec,defineProperty:tc}),jQ.exports=function(e,t,n){var U=e.match(/\d+$/)[0]/8,i=e+(n?"Clamped":"")+"Array",l="get"+e,F="set"+e,a=Qs[i],r=a,d=r&&r.prototype,Q={},o=function(e,t){Ls(e,t,{get:function(){return e=t,(n=gs(this)).view[l](e*U+n.byteOffset,!0);var e,n},set:function(e){return i=t,l=e,a=gs(this),n&&(l=(l=xs(l))<0?0:l>255?255:255&l),void a.view[F](i*U+a.byteOffset,l,!0);var i,l,a},enumerable:!0})};Ms?ss&&(r=t((function(e,t,n,l){return Bs(e,r,i),Cs(Ws(t)?qs(t)?void 0!==l?new a(t,ms(n,U),l):void 0!==n?new a(t,ms(n,U)):new a(t):js(t)?_s(r,t):ks.call(r,t):new a(Zs(t)),e,r)})),bs&&bs(r,ws),fs(Es(a),(function(e){e in r||hs(r,e,a[e])})),r.prototype=d):(r=t((function(e,t,n,l){Bs(e,r,i);var F,a,d,Q=0,s=0;if(Ws(t)){if(!qs(t))return js(t)?_s(r,t):ks.call(r,t);F=t,s=ms(n,U);var c=t.byteLength;if(void 0===l){if(c%U)throw Is(Os);if((a=c-s)<0)throw Is(Os)}else if((a=Vs(l)*U)+s>c)throw Is(Os);d=a/U}else d=Zs(t),F=new Ds(a=d*U);for(Xs(e,{buffer:F,byteOffset:s,byteLength:a,length:d,view:new Ys(F)});Q<d;)o(e,Q++)})),bs&&bs(r,ws),d=r.prototype=ys(Hs)),d.constructor!==r&&hs(d,"constructor",r),Ks&&hs(d,Ks,i),Q[i]=r,ds({global:!0,forced:r!=a,sham:!Ms},Q),zs in r||hs(r,zs,U),zs in d||hs(d,zs,U),vs(i)}):jQ.exports=function(){};var nc=jQ.exports;nc("Uint8",(function(e){return function(t,n,U){return e(this,t,n,U)}}));var Uc=b,ic=st,lc=rt,Fc=Math.min,ac=[].copyWithin||function(e,t){var n=Uc(this),U=lc(n.length),i=ic(e,U),l=ic(t,U),F=arguments.length>2?arguments[2]:void 0,a=Fc((void 0===F?U:ic(F,U))-l,U-i),r=1;for(l<i&&i<l+a&&(r=-1,l+=a-1,i+=a-1);a-- >0;)l in n?n[i]=n[l]:delete n[i],i+=r,l+=r;return n},rc=ac,dc=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("copyWithin",(function(e,t){return rc.call(dc(this),e,t,arguments.length>2?arguments[2]:void 0)}));var Qc=ba.every,oc=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("every",(function(e){return Qc(oc(this),e,arguments.length>1?arguments[1]:void 0)}));var sc=lo,cc=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("fill",(function(e){return sc.apply(cc(this),arguments)}));var Rc=xQ.aTypedArrayConstructor,Bc=iF,uc=ba.filter,hc=function(e,t){for(var n=Bc(e,e.constructor),U=0,i=t.length,l=new(Rc(n))(i);i>U;)l[U]=t[U++];return l},Vc=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("filter",(function(e){var t=uc(Vc(this),e,arguments.length>1?arguments[1]:void 0);return hc(this,t)}));var Zc=ba.find,mc=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("find",(function(e){return Zc(mc(this),e,arguments.length>1?arguments[1]:void 0)}));var pc=ba.findIndex,Sc=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("findIndex",(function(e){return pc(Sc(this),e,arguments.length>1?arguments[1]:void 0)}));var Jc=ba.forEach,Wc=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("forEach",(function(e){Jc(Wc(this),e,arguments.length>1?arguments[1]:void 0)}));var yc=ht.includes,bc=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("includes",(function(e){return yc(bc(this),e,arguments.length>1?arguments[1]:void 0)}));var Ec=ht.indexOf,kc=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("indexOf",(function(e){return Ec(kc(this),e,arguments.length>1?arguments[1]:void 0)}));var fc=i,vc=xQ,Nc=ai,Tc=Cn("iterator"),Cc=fc.Uint8Array,gc=Nc.values,Xc=Nc.keys,Lc=Nc.entries,Gc=vc.aTypedArray,xc=vc.exportTypedArrayMethod,Ic=Cc&&Cc.prototype[Tc],Dc=!!Ic&&("values"==Ic.name||null==Ic.name),Yc=function(){return gc.call(Gc(this))};xc("entries",(function(){return Lc.call(Gc(this))})),xc("keys",(function(){return Xc.call(Gc(this))})),xc("values",Yc,!Dc),xc(Tc,Yc,!Dc);var Mc=xQ.aTypedArray,Kc=[].join;(0,xQ.exportTypedArrayMethod)("join",(function(e){return Kc.apply(Mc(this),arguments)}));var wc=F,Hc=function(e,t){var n=[][e];return!!n&&wc((function(){n.call(null,t||function(){throw 1},1)}))},Pc=p,jc=lt,zc=rt,Oc=Hc,_c=Math.min,Ac=[].lastIndexOf,qc=!!Ac&&1/[1].lastIndexOf(1,-0)<0,$c=Oc("lastIndexOf"),eR=qc||!$c?function(e){if(qc)return Ac.apply(this,arguments)||0;var t=Pc(this),n=zc(t.length),U=n-1;for(arguments.length>1&&(U=_c(U,jc(arguments[1]))),U<0&&(U=n+U);U>=0;U--)if(U in t&&t[U]===e)return U||0;return-1}:Ac,tR=eR,nR=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("lastIndexOf",(function(e){return tR.apply(nR(this),arguments)}));var UR=ba.map,iR=iF,lR=xQ.aTypedArray,FR=xQ.aTypedArrayConstructor;(0,xQ.exportTypedArrayMethod)("map",(function(e){return UR(lR(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(FR(iR(e,e.constructor)))(t)}))}));var aR=yi,rR=b,dR=h,QR=rt,oR=function(e){return function(t,n,U,i){aR(n);var l=rR(t),F=dR(l),a=QR(l.length),r=e?a-1:0,d=e?-1:1;if(U<2)for(;;){if(r in F){i=F[r],r+=d;break}if(r+=d,e?r<0:a<=r)throw TypeError("Reduce of empty array with no initial value")}for(;e?r>=0:a>r;r+=d)r in F&&(i=n(i,F[r],r,l));return i}},sR={left:oR(!1),right:oR(!0)},cR=sR.left,RR=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("reduce",(function(e){return cR(RR(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)}));var BR=sR.right,uR=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("reduceRight",(function(e){return BR(uR(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)}));var hR=xQ.aTypedArray,VR=xQ.exportTypedArrayMethod,ZR=Math.floor;VR("reverse",(function(){for(var e,t=this,n=hR(t).length,U=ZR(n/2),i=0;i<U;)e=t[i],t[i++]=t[--n],t[n]=e;return t}));var mR=rt,pR=ns,SR=b,JR=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("set",(function(e){JR(this);var t=pR(arguments.length>1?arguments[1]:void 0,1),n=this.length,U=SR(e),i=mR(U.length),l=0;if(i+t>n)throw RangeError("Wrong length");for(;l<i;)this[t+l]=U[l++]}),F((function(){new Int8Array(1).set({})})));var WR=iF,yR=xQ.aTypedArray,bR=xQ.aTypedArrayConstructor,ER=[].slice;(0,xQ.exportTypedArrayMethod)("slice",(function(e,t){for(var n=ER.call(yR(this),e,t),U=WR(this,this.constructor),i=0,l=n.length,F=new(bR(U))(l);l>i;)F[i]=n[i++];return F}),F((function(){new Int8Array(1).slice()})));var kR=ba.some,fR=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("some",(function(e){return kR(fR(this),e,arguments.length>1?arguments[1]:void 0)}));var vR=xQ.aTypedArray,NR=[].sort;(0,xQ.exportTypedArrayMethod)("sort",(function(e){return NR.call(vR(this),e)}));var TR=rt,CR=st,gR=iF,XR=xQ.aTypedArray;(0,xQ.exportTypedArrayMethod)("subarray",(function(e,t){var n=XR(this),U=n.length,i=CR(e,U);return new(gR(n,n.constructor))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,TR((void 0===t?U:CR(t,U))-i))}));var LR=xQ,GR=F,xR=i.Int8Array,IR=LR.aTypedArray,DR=LR.exportTypedArrayMethod,YR=[].toLocaleString,MR=[].slice,KR=!!xR&&GR((function(){YR.call(new xR(1))}));DR("toLocaleString",(function(){return YR.apply(KR?MR.call(IR(this)):IR(this),arguments)}),GR((function(){return[1,2].toLocaleString()!=new xR([1,2]).toLocaleString()}))||!GR((function(){xR.prototype.toLocaleString.call([1,2])})));var wR=xQ.exportTypedArrayMethod,HR=F,PR=i.Uint8Array,jR=PR&&PR.prototype||{},zR=[].toString,OR=[].join;HR((function(){zR.call({})}))&&(zR=function(){return OR.call(this)});var _R=jR.toString!=zR;wR("toString",zR,_R);var AR=function(){function e(){var t,n;tn(this,e);var U=new Promise((function(e,U){t=e,n=U}));return U.resolve=function(e){t(e),U.state="fulfilled"},U.reject=function(e){n(e),U.state="rejected",U.isBreak="DESTROYED"===e},U.state="pending",U}return Un(e,[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}]),e}(),qR=_t,$R=p,eB=[].join,tB=h!=Object,nB=Hc("join",",");qR({target:"Array",proto:!0,forced:tB||!nB},{join:function(e){return eB.call($R(this),void 0===e?",":e)}});var UB,iB=Un((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.url,U=t.method,i=void 0===U?"GET":U,l=t.type,F=void 0===l?"arraybuffer":l,a=t.data,r=void 0===a?{}:a;return tn(this,e),new Promise((function(e,t){var U=new window.XMLHttpRequest,l=i.toUpperCase(),a=[];if(Object.keys(r).map((function(e){a.push("k=".concat(r[e]))})),"GET"===l){var d="";d=n.indexOf("?")<0?"".concat(n,"?").concat(a.join("&")):(null==a?void 0:a.length)>0?"".concat(n,"&").concat(a.join("&")):n,U.open(l,d),F&&(U.responseType=F),U.send()}else{if("POST"!==l)throw new Error("xhr ".concat(l," is not supported"));U.open(l,n,!0),F&&(U.responseType=F),U.setRequestHeader("Content-Type","application/json"),U.send(JSON.stringify(r))}U.onload=function(){200===U.status||206===U.status?e(U):t(U)},U.onerror=function(){t(U)}}))})),lB=iB;!function(e,t,n){function U(e,t){var n=parseInt(e.slice(t,t+2),16);return n>>>7==0?[1,n]:n>>>6==2?(n=(63&n)<<8,[2,n+=parseInt(e.slice(t+2,t+4),16)]):(n=(63&n)<<16,[3,n+=parseInt(e.slice(t+2,t+6),16)])}var i,l=0,F=[],a=[];for(i=0;i<4;++i)l+=(3&parseInt(e.slice(8+2*i,10+2*i),16))<<2*i;var r=parseInt(e.slice(16,24),16),d=2*parseInt(e.slice(32,40),16);for(i=40;i<d+40;i+=2)F.push(parseInt(e.slice(i,i+2),16));var Q=d+40,o=parseInt(e.slice(Q,Q+4),16);for(Q+=4,i=0;i<o;++i){var s=U(e,Q);Q+=2*s[0];for(var c="",R=0;R<s[1];++R){var B=U(e,Q);c+=String.fromCharCode(l^B[1]),Q+=2*B[0]}a.push(c)}t.p=null,function e(t,n,U,i,l){var r,d,Q,o,s,c=-1,R=[],B=null,u=[n];for(d=Math.min(n.length,U),Q=0;Q<d;++Q)u.push(n[Q]);u.p=i;for(var h=[];;)try{switch(F[t++]){case 25:R[++c]=null;break;case 9:r=F[t++],R[++c]=r<<24>>24;break;case 26:r=(F[t]<<8)+F[t+1],t+=2,R[++c]=r<<16>>16;break;case 57:r=((r=((r=F[t++])<<8)+F[t++])<<8)+F[t++],R[++c]=(r<<8)+F[t++];break;case 68:r=(F[t]<<8)+F[t+1],t+=2,R[++c]=a[r];break;case 21:R[++c]=void 0;break;case 71:R[++c]={};break;case 5:r=(F[t]<<8)+F[t+1],t+=2,d=a[r],Q=R[c--],R[c][d]=Q;break;case 27:for(d=F[t++],Q=F[t++],o=u;d>0;--d)o=o.p;R[++c]=o[Q];break;case 52:r=(F[t]<<8)+F[t+1],t+=2,d=a[r],R[c]=R[c][d];break;case 74:d=R[c--],R[c]=R[c][d];break;case 4:for(d=F[t++],Q=F[t++],o=u;d>0;--d)o=o.p;o[Q]=R[c--];break;case 31:d=R[c--],Q=R[c--],o=R[c--],Q[d]=o;break;case 30:for(d=F[t++],Q=F[t++],o=u,o=u;d>0;--d)o=o.p;R[++c]=o,R[++c]=Q;break;case 33:d=R[c--],R[c]+=d;break;case 67:d=R[c--],R[c]-=d;break;case 48:d=R[c--],R[c]%=d;break;case 75:d=R[c--],o=(Q=R[c--])[d]++,R[++c]=o;break;case 45:d=R[c--],o=(Q=R[c--])[d]--,R[++c]=o;break;case 50:d=R[c--],R[c]=R[c]===d;break;case 29:d=R[c--],R[c]=R[c]!==d;break;case 17:d=R[c--],R[c]=R[c]<d;break;case 51:d=R[c--],R[c]=R[c]<=d;break;case 66:d=R[c--],R[c]=R[c]>d;break;case 58:d=R[c--],R[c]=R[c]>=d;break;case 40:d=R[c--],R[c]=R[c]&d;break;case 63:d=R[c--],R[c]=R[c]^d;break;case 65:r=(r=(F[t]<<8)+F[t+1])<<16>>16,t+=2,R[c]?--c:t+=r;break;case 19:d=R[c--],(Q=R[c--])[d]=R[c];break;case 49:r=F[t++],d=R[c--],(Q=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)})._v=[d,r,u],Q._u=e,R[++c]=Q;break;case 22:r=F[t++],d=R[c--],(o=[Q=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)}]).p=u,Q._v=[d,r,o],Q._u=e,R[++c]=Q;break;case 70:for(d=R[c--],Q=null;o=h.pop();)if(2===o[0]||3===o[0]){Q=o;break}if(Q)t=Q[2],Q[0]=0,h.push(Q);else{if(!B)return d;t=B[1],l=B[2],u=B[3],h=B[4],R[++c]=d,B=B[0]}break;case 20:c-=r=F[t++],Q=R.slice(c+1,c+r+1),d=R[c--],o=R[c--],d._u===e?(d=d._v,B=[B,t,l,u,h],t=d[0],null==o&&(o=function(){return this}()),l=o,(u=[Q].concat(Q)).length=Math.min(d[1],r)+1,u.p=d[2],h=[]):(s=d.apply(o,Q),R[++c]=s);break;case 12:for(r=F[t++],o=[void 0],s=r;s>0;--s)o[s]=R[c--];Q=R[c--],s=new(d=Function.bind.apply(Q,o)),R[++c]=s;break;case 53:t+=2+(r=(r=(F[t]<<8)+F[t+1])<<16>>16);break;case 15:r=(r=(F[t]<<8)+F[t+1])<<16>>16,t+=2,(d=R[c--])||(t+=r);break;case 72:--c;break;case 6:d=R[c],R[++c]=d;break;default:throw new Error("ioe")}}catch(V){for(;(r=h.pop())&&!r[0];);if(!r){e:for(;B;){for(d=B[4];r=d.pop();)if(r[0])break e;B=B[0]}if(!B)throw V;t=B[1],l=B[2],u=B[3],h=B[4],B=B[0]}1===(d=r[0])?(t=r[2],r[0]=0,h.push(r),R[++c]=V):2===d?(t=r[2],r[0]=0,h.push(r)):(t=r[3],r[0]=2,h.push(r),R[++c]=V)}}(r,[],0,t,n)}("504B0101cde64451000003615245e4ce0000039f1b00014400003a4100071b0001440001330f00181b00010634000209001401440000063400020900140143461b00014400033a4100071b0001440004330f001b1b00010634000209001401440003063400020900140143090a21461a00ff461b000109004a0634000214001b000109014a0634000214003f1b000109024a0634000214003f4400000634000209001401430400031b00021b0003430901430400041b03001b00040c010400051b03001b00030c010400061b00031e000713481b00070900420f004e1b00011b00021b0003430902434a0634000214001b00011b00021b0003430901434a0634000214003f1b00011b00021b0007434a0634000214003f1b00061b00031b0007431f1e00072d4835ffa909001e000713481b00071b0004110f00191b00011b00070901214a1b00051b00071f1e00074b4835ffdd471b00050500051b00040500061b00060500071b000305000846090004000209001e000213481b000109001d0f00171b00011b0001090143281e000113481e00024b4835ffe01b0002461b0001063400021400191b02031b00021401211b0003210400041b0301063400091b00041a00ff2814014609550400031a00fa040004090004000609001e000613481b00061b0002110f007d1b00060902300901320f00271b00031b00011b00064a0634000214003f0400051b00011b00064a0634000214000400033500241b00041b00011b00064a0634000214003f0400051b00011b00064a063400021400040004191b02041b0301063400091b000514011b0006091514031b00011b00061f1e00064b4835ff791b000146191b02021b000114010400021b000234000a0400031b0002040004191b01021b00041b000314020400051b00053400050400061b00053400060400071b0005340008040008191b01051b00061b00071402040006191b01011b000609004a14010400081b00071b0008430901430400091b02001b00090901210c0104000a1b02001b00080901210c0104000b44000b1b000a1b00091f09001b000b1b00081f090004000c09001e000c13481b000c1b0009110f00191b00061b000c0901214a1b000a1b000c1f1e000c4b4835ffdd09001e000c13481b000c1b0008110f001e1b00061b00071b0008431b000c214a1b000b1b000c1f1e000c4b4835ffd81b000a0634000c44000b1401463900000257310104010339000000001601040001390000005f1602040002390000015a1601040003390000018a160304000439000001b516020400051546000d017901700a2a21283b0a262d2c083d012801330a2a26273f2c3b3d022c300a2a26273f2c3b3d052c270d2a26273f2c3b3d042c3d21262d09242c3d21262d052c270c2f3b26240a21283b0a262d2c06252c272e3d21000423262027",{0:Array,1:String,get 2(){return atob},get 3(){return UB},set 3(e){UB=e}},void 0);var FB=null;function aB(e,t,n){var U=new AR;return new lB({type:"json",method:"POST",url:n,data:{drm_type:"22",license_request:[{vid:e,kids:[].concat(t)}]}}).then((function(n){var i=null==n?void 0:n.response;if("string"==typeof i&&(i=JSON.parse(i)),i){var l=i.play_licenses[e][t];U.resolve(l)}else console.error("getSecretKeyByKid end, vid,",e,",kid",t,"response null"),U.reject()})).catch((function(){console.error("getSecretKeyByKid end, vid,",e,",kid",t,"catch"),U.reject()})),U}function rB(){return function(e,t,n){function U(e,t){var n=parseInt(e.slice(t,t+2),16);return n>>>7==0?[1,n]:n>>>6==2?(n=(63&n)<<8,[2,n+=parseInt(e.slice(t+2,t+4),16)]):(n=(63&n)<<16,[3,n+=parseInt(e.slice(t+2,t+6),16)])}var i,l=0,F=[],a=[];for(i=0;i<4;++i)l+=(3&parseInt(e.slice(8+2*i,10+2*i),16))<<2*i;var r=parseInt(e.slice(16,24),16),d=2*parseInt(e.slice(32,40),16);for(i=40;i<d+40;i+=2)F.push(parseInt(e.slice(i,i+2),16));var Q=d+40,o=parseInt(e.slice(Q,Q+4),16);for(Q+=4,i=0;i<o;++i){var s=U(e,Q);Q+=2*s[0];for(var c="",R=0;R<s[1];++R){var B=U(e,Q);c+=String.fromCharCode(l^B[1]),Q+=2*B[0]}a.push(c)}return t.p=null,function e(t,n,U,i,l){var r,d,Q,o,s,c=-1,R=[],B=null,u=[n];for(d=Math.min(n.length,U),Q=0;Q<d;++Q)u.push(n[Q]);u.p=i;for(var h=[];;)try{switch(F[t++]){case 25:R[++c]=null;break;case 9:r=F[t++],R[++c]=r<<24>>24;break;case 57:r=((r=((r=F[t++])<<8)+F[t++])<<8)+F[t++],R[++c]=(r<<8)+F[t++];break;case 68:r=(F[t]<<8)+F[t+1],t+=2,R[++c]=a[r];break;case 21:R[++c]=void 0;break;case 71:R[++c]={};break;case 5:r=(F[t]<<8)+F[t+1],t+=2,d=a[r],Q=R[c--],R[c][d]=Q;break;case 27:for(d=F[t++],Q=F[t++],o=u;d>0;--d)o=o.p;R[++c]=o[Q];break;case 52:r=(F[t]<<8)+F[t+1],t+=2,d=a[r],R[c]=R[c][d];break;case 74:d=R[c--],R[c]=R[c][d];break;case 4:for(d=F[t++],Q=F[t++],o=u;d>0;--d)o=o.p;o[Q]=R[c--];break;case 10:r=(F[t]<<8)+F[t+1],t+=2,d=a[r],Q=R[c--],o=R[c--],Q[d]=o;break;case 31:d=R[c--],Q=R[c--],o=R[c--],Q[d]=o;break;case 29:d=R[c--],R[c]=R[c]!==d;break;case 66:d=R[c--],R[c]=R[c]>d;break;case 65:r=(r=(F[t]<<8)+F[t+1])<<16>>16,t+=2,R[c]?--c:t+=r;break;case 49:r=F[t++],d=R[c--],(Q=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)})._v=[d,r,u],Q._u=e,R[++c]=Q;break;case 70:for(d=R[c--],Q=null;o=h.pop();)if(2===o[0]||3===o[0]){Q=o;break}if(Q)t=Q[2],Q[0]=0,h.push(Q);else{if(!B)return d;t=B[1],l=B[2],u=B[3],h=B[4],R[++c]=d,B=B[0]}break;case 20:c-=r=F[t++],Q=R.slice(c+1,c+r+1),d=R[c--],o=R[c--],d._u===e?(d=d._v,B=[B,t,l,u,h],t=d[0],null==o&&(o=function(){return this}()),l=o,(u=[Q].concat(Q)).length=Math.min(d[1],r)+1,u.p=d[2],h=[]):(s=d.apply(o,Q),R[++c]=s);break;case 12:for(r=F[t++],o=[void 0],s=r;s>0;--s)o[s]=R[c--];Q=R[c--],s=new(d=Function.bind.apply(Q,o)),R[++c]=s;break;case 53:t+=2+(r=(r=(F[t]<<8)+F[t+1])<<16>>16);break;case 15:r=(r=(F[t]<<8)+F[t+1])<<16>>16,t+=2,(d=R[c--])||(t+=r);break;case 72:--c;break;case 6:d=R[c],R[++c]=d;break;default:throw new Error("ioe")}}catch(V){for(;(r=h.pop())&&!r[0];);if(!r){e:for(;B;){for(d=B[4];r=d.pop();)if(r[0])break e;B=B[0]}if(!B)throw V;t=B[1],l=B[2],u=B[3],h=B[4],B=B[0]}1===(d=r[0])?(t=r[2],r[0]=0,h.push(r),R[++c]=V):2===d?(t=r[2],r[0]=0,h.push(r)):(t=r[3],r[0]=2,h.push(r),R[++c]=V)}}(r,[],0,t,n)}("504B0101cde644510000003f5245e4ce00000142191b02011b0001140104000247470500020400031b00021b00033400021b01031f1b0105063400031b000314014815461b0105063400081b000114014815461b01033400000900424100081b010309004a151d0f00091b010309004a3500034400010400011b01033400000901420f00091b010309014a350001150400021b01033400000902420f00091b010309024a350001150400031b01033400000903420f00091b010309034a350001150400041b01000c000400051b00020f0047191b01011b000214010400061b00030f002547470500020400071b00061b00073400021b00031f1b0005063400031b000714014835000d1b0005063400031b0006140148350039191b01021b00011b00031b000414030400084400041b00080a00051b00080634000639000000003101140106340007390000003031011401481b000546000906252c272e3d2100092a252c283b022c303a073b2c3a26253f2c0e3b2c383c2c3a3d193b2624203a2c02202d043d212c27052a283d2a21063b2c232c2a3d",{get 0(){return AR},get 1(){return UB},get 2(){return aB},3:arguments},this)}function dB(e){var t;if(null===FB)try{FB=localStorage&&!!localStorage.getItem("secretkeylog")}catch(l){}for(var n=arguments.length,U=new Array(n>1?n-1:0),i=1;i<n;i++)U[i-1]=arguments[i];FB&&console.log&&(t=console).log.apply(t,["[XGSecretkey]",e].concat(U))}var QB={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(e){this.toString=function(){return"CORRUPT: "+this.message},this.message=e},invalid:function(e){this.toString=function(){return"INVALID: "+this.message},this.message=e},bug:function(e){this.toString=function(){return"BUG: "+this.message},this.message=e},notReady:function(e){this.toString=function(){return"NOT READY: "+this.message},this.message=e}}};QB.cipher.aes=function(e){this._tables[0][0][0]||this._precompute();var t,n,U,i,l,F=this._tables[0][4],a=this._tables[1],r=e.length,d=1;if(4!==r&&6!==r&&8!==r)throw new QB.exception.invalid("invalid aes key size");for(this._key=[i=e.slice(0),l=[]],t=r;t<4*r+28;t++)U=i[t-1],(t%r==0||8===r&&t%r==4)&&(U=F[U>>>24]<<24^F[U>>16&255]<<16^F[U>>8&255]<<8^F[255&U],t%r==0&&(U=U<<8^U>>>24^d<<24,d=d<<1^283*(d>>7))),i[t]=i[t-r]^U;for(n=0;t;n++,t--)U=i[3&n?t:t-4],l[n]=t<=4||n<4?U:a[0][F[U>>>24]]^a[1][F[U>>16&255]]^a[2][F[U>>8&255]]^a[3][F[255&U]]},QB.cipher.aes.prototype={encrypt:function(e){return this._crypt(e,0)},decrypt:function(e){return this._crypt(e,1)},_tables:[[[],[],[],[],[]],[[],[],[],[],[]]],_precompute:function(){var e,t,n,U,i,l,F,a,r=this._tables[0],d=this._tables[1],Q=r[4],o=d[4],s=[],c=[];for(e=0;e<256;e++)c[(s[e]=e<<1^283*(e>>7))^e]=e;for(t=n=0;!Q[t];t^=U||1,n=c[n]||1)for(l=(l=n^n<<1^n<<2^n<<3^n<<4)>>8^255&l^99,Q[t]=l,o[l]=t,a=16843009*s[i=s[U=s[t]]]^65537*i^257*U^16843008*t,F=257*s[l]^16843008*l,e=0;e<4;e++)r[e][t]=F=F<<24^F>>>8,d[e][l]=a=a<<24^a>>>8;for(e=0;e<5;e++)r[e]=r[e].slice(0),d[e]=d[e].slice(0)},_crypt:function(e,t){if(4!==e.length)throw new QB.exception.invalid("invalid aes block size");var n,U,i,l,F=this._key[t],a=e[0]^F[0],r=e[t?3:1]^F[1],d=e[2]^F[2],Q=e[t?1:3]^F[3],o=F.length/4-2,s=4,c=[0,0,0,0],R=this._tables[t],B=R[0],u=R[1],h=R[2],V=R[3],Z=R[4];for(l=0;l<o;l++)n=B[a>>>24]^u[r>>16&255]^h[d>>8&255]^V[255&Q]^F[s],U=B[r>>>24]^u[d>>16&255]^h[Q>>8&255]^V[255&a]^F[s+1],i=B[d>>>24]^u[Q>>16&255]^h[a>>8&255]^V[255&r]^F[s+2],Q=B[Q>>>24]^u[a>>16&255]^h[r>>8&255]^V[255&d]^F[s+3],s+=4,a=n,r=U,d=i;for(l=0;l<4;l++)c[t?3&-l:l]=Z[a>>>24]<<24^Z[r>>16&255]<<16^Z[d>>8&255]<<8^Z[255&Q]^F[s++],n=a,a=r,r=d,d=Q,Q=n;return c}},QB.bitArray={bitSlice:function(e,t,n){return e=QB.bitArray._shiftRight(e.slice(t/32),32-(31&t)).slice(1),void 0===n?e:QB.bitArray.clamp(e,n-t)},extract:function(e,t,n){var U=Math.floor(-t-n&31);return(-32&(t+n-1^t)?e[t/32|0]<<32-U^e[t/32+1|0]>>>U:e[t/32|0]>>>U)&(1<<n)-1},concat:function(e,t){if(0===e.length||0===t.length)return e.concat(t);var n=e[e.length-1],U=QB.bitArray.getPartial(n);return 32===U?e.concat(t):QB.bitArray._shiftRight(t,U,0|n,e.slice(0,e.length-1))},bitLength:function(e){var t,n=e.length;return 0===n?0:(t=e[n-1],32*(n-1)+QB.bitArray.getPartial(t))},clamp:function(e,t){if(32*e.length<t)return e;var n=(e=e.slice(0,Math.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=QB.bitArray.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:function(e,t,n){return 32===e?t:(n?0|t:t<<32-e)+1099511627776*e},getPartial:function(e){return Math.round(e/1099511627776)||32},equal:function(e,t){if(QB.bitArray.bitLength(e)!==QB.bitArray.bitLength(t))return!1;var n,U=0;for(n=0;n<e.length;n++)U|=e[n]^t[n];return 0===U},_shiftRight:function(e,t,n,U){var i,l,F;for(void 0===U&&(U=[]);t>=32;t-=32)U.push(n),n=0;if(0===t)return U.concat(e);for(i=0;i<e.length;i++)U.push(n|e[i]>>>t),n=e[i]<<32-t;return l=e.length?e[e.length-1]:0,F=QB.bitArray.getPartial(l),U.push(QB.bitArray.partial(t+F&31,t+F>32?n:U.pop(),1)),U},_xor4:function(e,t){return[e[0]^t[0],e[1]^t[1],e[2]^t[2],e[3]^t[3]]},byteswapM:function(e){var t,n;for(t=0;t<e.length;++t)n=e[t],e[t]=n>>>24|n>>>8&65280|(65280&n)<<8|n<<24;return e}},QB.codec.utf8String={fromBits:function(e){var t,n,U="",i=QB.bitArray.bitLength(e);for(t=0;t<i/8;t++)0==(3&t)&&(n=e[t/4]),U+=String.fromCharCode(n>>>8>>>8>>>8),n<<=8;return decodeURIComponent(escape(U))},toBits:function(e){e=unescape(encodeURIComponent(e));var t,n=[],U=0;for(t=0;t<e.length;t++)U=U<<8|e.charCodeAt(t),3==(3&t)&&(n.push(U),U=0);return 3&t&&n.push(QB.bitArray.partial(8*(3&t),U)),n}},QB.codec.base64={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fromBits:function(e,t,n){var U,i="",l=0,F=QB.codec.base64._chars,a=0,r=QB.bitArray.bitLength(e);for(n&&(F=F.substr(0,62)+"-_"),U=0;6*i.length<r;)i+=F.charAt((a^e[U]>>>l)>>>26),l<6?(a=e[U]<<6-l,l+=26,U++):(a<<=6,l-=6);for(;3&i.length&&!t;)i+="=";return i},toBits:function(e,t){e=e.replace(/\s|=/g,"");var n,U,i=[],l=0,F=QB.codec.base64._chars,a=0;for(t&&(F=F.substr(0,62)+"-_"),n=0;n<e.length;n++){if((U=F.indexOf(e.charAt(n)))<0)throw new QB.exception.invalid("this isn't base64!");l>26?(l-=26,i.push(a^U>>>l),a=U<<32-l):a^=U<<32-(l+=6)}return 56&l&&i.push(QB.bitArray.partial(56&l,a,1)),i}},QB.codec.base64url={fromBits:function(e){return QB.codec.base64.fromBits(e,1,1)},toBits:function(e){return QB.codec.base64.toBits(e,1)}},QB.mode.gcm={name:"gcm",encrypt:function(e,t,n,U,i){var l,F=t.slice(0),a=QB.bitArray;return i=i||128,U=U||[],l=QB.mode.gcm._ctrMode(!0,e,F,U,n,i),a.concat(l.data,l.tag)},decrypt:function(e,t,n,U,i){var l,F,a=t.slice(0),r=QB.bitArray,d=r.bitLength(a);if(U=U||[],(i=i||128)<=d?(F=r.bitSlice(a,d-i),a=r.bitSlice(a,0,d-i)):(F=a,a=[]),l=QB.mode.gcm._ctrMode(!1,e,a,U,n,i),!r.equal(l.tag,F))throw new QB.exception.corrupt("gcm: tag doesn't match");return l.data},_galoisMultiply:function(e,t){var n,U,i,l,F,a=QB.bitArray._xor4;for(i=[0,0,0,0],l=t.slice(0),n=0;n<128;n++){for(0!=(e[Math.floor(n/32)]&1<<31-n%32)&&(i=a(i,l)),F=0!=(1&l[3]),U=3;U>0;U--)l[U]=l[U]>>>1|(1&l[U-1])<<31;l[0]=l[0]>>>1,F&&(l[0]=l[0]^225<<24)}return i},_ghash:function(e,t,n){var U,i,l=n.length;for(U=t.slice(0),i=0;i<l;i+=4)U[0]^=4294967295&n[i],U[1]^=4294967295&n[i+1],U[2]^=4294967295&n[i+2],U[3]^=4294967295&n[i+3],U=QB.mode.gcm._galoisMultiply(U,e);return U},_ctrMode:function(e,t,n,U,i,l){var F,a,r,d,Q,o,s,c,R,B,u,h,V=QB.bitArray;for(R=n.length,B=V.bitLength(n),u=V.bitLength(U),h=V.bitLength(i),F=t.encrypt([0,0,0,0]),96===h?(a=i.slice(0),a=V.concat(a,[1])):(a=QB.mode.gcm._ghash(F,[0,0,0,0],i),a=QB.mode.gcm._ghash(F,a,[0,0,Math.floor(h/4294967296),4294967295&h])),r=QB.mode.gcm._ghash(F,[0,0,0,0],U),o=a.slice(0),s=r.slice(0),e||(s=QB.mode.gcm._ghash(F,r,n)),Q=0;Q<R;Q+=4)o[3]++,d=t.encrypt(o),n[Q]^=d[0],n[Q+1]^=d[1],n[Q+2]^=d[2],n[Q+3]^=d[3];return n=V.clamp(n,B),e&&(s=QB.mode.gcm._ghash(F,r,n)),c=[Math.floor(u/4294967296),4294967295&u,Math.floor(B/4294967296),4294967295&B],s=QB.mode.gcm._ghash(F,s,c),d=t.encrypt(a),s[0]^=d[0],s[1]^=d[1],s[2]^=d[2],s[3]^=d[3],{tag:V.bitSlice(s,0,l),data:n}}};var oB=P,sB=function(){var e=oB(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},cB={},RB=F;function BB(e,t){return RegExp(e,t)}cB.UNSUPPORTED_Y=RB((function(){var e=BB("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),cB.BROKEN_CARET=RB((function(){var e=BB("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));var uB,hB,VB=sB,ZB=cB,mB=Ze,pB=RegExp.prototype.exec,SB=mB("native-string-replace",String.prototype.replace),JB=pB,WB=(uB=/a/,hB=/b*/g,pB.call(uB,"a"),pB.call(hB,"a"),0!==uB.lastIndex||0!==hB.lastIndex),yB=ZB.UNSUPPORTED_Y||ZB.BROKEN_CARET,bB=void 0!==/()??/.exec("")[1];(WB||bB||yB)&&(JB=function(e){var t,n,U,i,l=this,F=yB&&l.sticky,a=VB.call(l),r=l.source,d=0,Q=e;return F&&(-1===(a=a.replace("y","")).indexOf("g")&&(a+="g"),Q=String(e).slice(l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==e[l.lastIndex-1])&&(r="(?: "+r+")",Q=" "+Q,d++),n=new RegExp("^(?:"+r+")",a)),bB&&(n=new RegExp("^"+r+"$(?!\\s)",a)),WB&&(t=l.lastIndex),U=pB.call(F?n:l,Q),F?U?(U.input=U.input.slice(d),U[0]=U[0].slice(d),U.index=l.lastIndex,l.lastIndex+=U[0].length):l.lastIndex=0:WB&&U&&(l.lastIndex=l.global?U.index+U[0].length:t),bB&&U&&U.length>1&&SB.call(U[0],n,(function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(U[i]=void 0)})),U});var EB=JB;_t({target:"RegExp",proto:!0,forced:/./.exec!==EB},{exec:EB});var kB=_e,fB=EB,vB=F,NB=Cn,TB=ee,CB=NB("species"),gB=RegExp.prototype,XB=!vB((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),LB="$0"==="a".replace(/./,"$0"),GB=NB("replace"),xB=!!/./[GB]&&""===/./[GB]("a","$0"),IB=!vB((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),DB=function(e,t,n,U){var i=NB(e),l=!vB((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),F=l&&!vB((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[CB]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!l||!F||"replace"===e&&(!XB||!LB||xB)||"split"===e&&!IB){var a=/./[i],r=n(i,""[e],(function(e,t,n,U,i){var F=t.exec;return F===fB||F===gB.exec?l&&!i?{done:!0,value:a.call(t,n,U)}:{done:!0,value:e.call(n,t,U)}:{done:!1}}),{REPLACE_KEEPS_$0:LB,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:xB}),d=r[0],Q=r[1];kB(String.prototype,e,d),kB(gB,i,2==t?function(e,t){return Q.call(e,this,t)}:function(e){return Q.call(e,this)})}U&&TB(gB[i],"sham",!0)},YB=Dl.charAt,MB=function(e,t,n){return t+(n?YB(e,t).length:1)},KB=b,wB=Math.floor,HB="".replace,PB=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,jB=/\$([$&'`]|\d{1,2})/g,zB=R,OB=EB,_B=function(e,t){var n=e.exec;if("function"==typeof n){var U=n.call(e,t);if("object"!=typeof U)throw TypeError("RegExp exec method returned something other than an Object or null");return U}if("RegExp"!==zB(e))throw TypeError("RegExp#exec called on incompatible receiver");return OB.call(e,t)},AB=DB,qB=P,$B=rt,eu=lt,tu=V,nu=MB,Uu=function(e,t,n,U,i,l){var F=n+e.length,a=U.length,r=jB;return void 0!==i&&(i=KB(i),r=PB),HB.call(l,r,(function(l,r){var d;switch(r.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(F);case"<":d=i[r.slice(1,-1)];break;default:var Q=+r;if(0===Q)return l;if(Q>a){var o=wB(Q/10);return 0===o?l:o<=a?void 0===U[o-1]?r.charAt(1):U[o-1]+r.charAt(1):l}d=U[Q-1]}return void 0===d?"":d}))},iu=_B,lu=Math.max,Fu=Math.min;AB("replace",2,(function(e,t,n,U){var i=U.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,l=U.REPLACE_KEEPS_$0,F=i?"$":"$0";return[function(n,U){var i=tu(this),l=null==n?void 0:n[e];return void 0!==l?l.call(n,i,U):t.call(String(i),n,U)},function(e,U){if(!i&&l||"string"==typeof U&&-1===U.indexOf(F)){var a=n(t,e,this,U);if(a.done)return a.value}var r=qB(e),d=String(this),Q="function"==typeof U;Q||(U=String(U));var o=r.global;if(o){var s=r.unicode;r.lastIndex=0}for(var c=[];;){var R=iu(r,d);if(null===R)break;if(c.push(R),!o)break;""===String(R[0])&&(r.lastIndex=nu(d,$B(r.lastIndex),s))}for(var B,u="",h=0,V=0;V<c.length;V++){R=c[V];for(var Z=String(R[0]),m=lu(Fu(eu(R.index),d.length),0),p=[],S=1;S<R.length;S++)p.push(void 0===(B=R[S])?B:String(B));var J=R.groups;if(Q){var W=[Z].concat(p,m,d);void 0!==J&&W.push(J);var y=String(U.apply(void 0,W))}else y=Uu(Z,d,m,p,J,U);m>=h&&(u+=d.slice(h,m)+y,h=m+Z.length)}return u+d.slice(h)}]}));var au=_e,ru=P,du=F,Qu=sB,ou="toString",su=RegExp.prototype,cu=su[ou],Ru=du((function(){return"/a/b"!=cu.call({source:"a",flags:"b"})})),Bu=cu.name!=ou;(Ru||Bu)&&au(RegExp.prototype,ou,(function(){var e=ru(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in su)?Qu.call(e):n)}),{unsafe:!0});var uu=_t,hu=S,Vu=Ra,Zu=st,mu=rt,pu=p,Su=Ga,Ju=Cn,Wu=va("slice"),yu=Ju("species"),bu=[].slice,Eu=Math.max;uu({target:"Array",proto:!0,forced:!Wu},{slice:function(e,t){var n,U,i,l=pu(this),F=mu(l.length),a=Zu(e,F),r=Zu(void 0===t?F:t,F);if(Vu(l)&&("function"!=typeof(n=l.constructor)||n!==Array&&!Vu(n.prototype)?hu(n)&&null===(n=n[yu])&&(n=void 0):n=void 0,n===Array||void 0===n))return bu.call(l,a,r);for(U=new(void 0===n?Array:n)(Eu(r-a,0)),i=0;a<r;a++,i++)a in l&&Su(U,i,l[a]);return U.length=i,U}});var ku=pl,fu="ArrayBuffer",vu=$o[fu];_t({global:!0,forced:i[fu]!==vu},{ArrayBuffer:vu}),ku(fu);var Nu=V,Tu="[\t\n\v\f\r \u2028\u2029\ufeff]",Cu=RegExp("^"+Tu+Tu+"*"),gu=RegExp(Tu+Tu+"*$"),Xu=function(e){return function(t){var n=String(Nu(t));return 1&e&&(n=n.replace(Cu,"")),2&e&&(n=n.replace(gu,"")),n}},Lu={start:Xu(1),end:Xu(2),trim:Xu(3)},Gu=a,xu=i,Iu=Mt,Du=_e,Yu=f,Mu=R,Ku=nl,wu=W,Hu=F,Pu=eU,ju=nt.f,zu=l.f,Ou=w.f,_u=Lu.trim,Au="Number",qu=xu[Au],$u=qu.prototype,eh=Mu(Pu($u))==Au,th=function(e){var t,n,U,i,l,F,a,r,d=wu(e,!1);if("string"==typeof d&&d.length>2)if(43===(t=(d=_u(d)).charCodeAt(0))||45===t){if(88===(n=d.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(d.charCodeAt(1)){case 66:case 98:U=2,i=49;break;case 79:case 111:U=8,i=55;break;default:return+d}for(F=(l=d.slice(2)).length,a=0;a<F;a++)if((r=l.charCodeAt(a))<48||r>i)return NaN;return parseInt(l,U)}return+d};if(Iu(Au,!qu(" 0o1")||!qu("0b1")||qu("+0x1"))){for(var nh,Uh=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof Uh&&(eh?Hu((function(){$u.valueOf.call(n)})):Mu(n)!=Au)?Ku(new qu(th(t)),n,Uh):th(t)},ih=Gu?ju(qu):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),lh=0;ih.length>lh;lh++)Yu(qu,nh=ih[lh])&&!Yu(Uh,nh)&&Ou(Uh,nh,zu(qu,nh));Uh.prototype=$u,$u.constructor=Uh,Du(xu,Au,Uh)}var Fh=P,ah=rt,rh=V,dh=MB,Qh=_B;DB("match",1,(function(e,t,n){return[function(t){var n=rh(this),U=null==t?void 0:t[e];return void 0!==U?U.call(t,n):new RegExp(t)[e](String(n))},function(e){var U=n(t,e,this);if(U.done)return U.value;var i=Fh(e),l=String(this);if(!i.global)return Qh(i,l);var F=i.unicode;i.lastIndex=0;for(var a,r=[],d=0;null!==(a=Qh(i,l));){var Q=String(a[0]);r[d]=Q,""===Q&&(i.lastIndex=dh(l,ah(i.lastIndex),F)),d++}return 0===d?null:r}]}));var oh,sh,ch,Rh,Bh,uh,hh={str2hex:function(e){if(""===e)return"";for(var t=[],n=0;n<e.length;n++)t.push(e.charCodeAt(n));return t},Base64ToHex:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=window.atob(e.replace(/-/g,"+").replace(/_/g,"/"));if(t){for(var U=[],i=0;i<n.length;i++)U.push(n.charCodeAt(i));return new Uint8Array(U).buffer}for(var l="",F=0;F<n.length;F++)l+="0".concat(n.charCodeAt(F).toString(16)).substr(-2);return l},checkUnionInfoExpired:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30;if(0===t.indexOf(e)){var U=parseInt(Zh(t.slice(e.length))),i=(new Date).getTime()-U;if(i>0&&i<=1e3*n)return!0;console.error("UnionInfo timestamp expire!!!")}else console.error("unionID and UnionInfo not match!!!");return!1},getUnionInfo:function(){return"".concat(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").concat(Vh((new Date).getTime().toString()))},StringToArrayBuffer:function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),U=0;U<e.length;U++)n[U]=e.charCodeAt(U);return t},ArrayBufferToString:function(e){var t=[];e=ArrayBuffer.isView(e)?e:new Uint8Array(e);for(var n,U=0;U<e.length;U++)n=e[U],t.push(String.fromCharCode(n));return t.join("")},isBase64:function(e){return/^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$/.test(e)},fromHex:function(e){for(var t=new Uint8Array(e.length/2),n=0;n<e.length;n+=2)t[n/2]=window.parseInt(e.substr(n,2),16);return t},fromCharCode:function(e){for(var t="",n=0;n<e.length;n+=16e3){var U=e.subarray(n,n+16e3);t+=String.fromCharCode.apply(null,U)}return t},toBase64:function(e,t){var n=hh.fromCharCode(e);t=void 0===t||t;var U=window.btoa(n).replace(/\+/g,"-").replace(/\//g,"_");return t?U:U.replace(/=*$/,"")},toUTF8:function(e){for(var t=encodeURIComponent(e),n=unescape(t),U=new Uint8Array(n.length),i=0;i<n.length;++i)U[i]=n.charCodeAt(i);return U.buffer}},Vh=(oh="vodTimestampSalt",sh=function(e){return e.split("").map((function(e){return e.charCodeAt(0)}))},ch=function(e){return"0".concat(Number(e).toString(16)).substr(-2)},Rh=function(e){return sh(oh).reduce((function(e,t){return e^t}),e)},function(e){return e.split("").map(sh).map(Rh).map(ch).join("")}),Zh=(Bh="vodTimestampSalt",uh=function(e){return(t=Bh,t.split("").map((function(e){return e.charCodeAt(0)}))).reduce((function(e,t){return e^t}),e);var t},function(e){return e.match(/.{1,2}/g).map((function(e){return parseInt(e,16)})).map(uh).map((function(e){return String.fromCharCode(e)})).join("")}),mh=hh;function ph(e,t){return Sh.apply(this,arguments)}function Sh(){return(Sh=en(At().mark((function e(t,n){var U,i,l,F,a;return At().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return U=n.iv,i=n.tagLength,l=n.data,F=null,t=mh.StringToArrayBuffer(t),l=mh.Base64ToHex(l,!0),e.prev=4,e.next=7,crypto.subtle.importKey("raw",t,"AES-GCM",!0,["encrypt","decrypt"]);case 7:a=e.sent,e.next=13;break;case 10:throw e.prev=10,e.t0=e.catch(4),new Error("importKey: ".concat((null===e.t0||void 0===e.t0?void 0:e.t0.message)||e.t0));case 13:return e.prev=13,e.next=16,crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(U),tagLength:i},a,l);case 16:F=e.sent,e.next=30;break;case 19:if(e.prev=19,e.t1=e.catch(13),"OperationError"!==String(e.t1)){e.next=25;break}throw new Error("Wrong Password.");case 25:if("InvalidAccessError"!==String(e.t1)){e.next=29;break}throw new Error("Invalid Key");case 29:throw e.t1;case 30:return e.abrupt("return",new TextDecoder("utf-8").decode(F));case 31:case"end":return e.stop()}}),e,null,[[4,10],[13,19]])})))).apply(this,arguments)}function Jh(e,t){return Wh.apply(this,arguments)}function Wh(){return(Wh=en(At().mark((function e(t,n){var U,i,l,F,a,r,d;return At().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return U=n.iv,i=n.tagLength,l=n.data,F=btoa(mh.ArrayBufferToString(U)),a=QB.codec.base64.toBits(F),r=QB.codec.utf8String.toBits(t),d=new QB.cipher.aes(r),e.abrupt("return",QB.codec.utf8String.fromBits(QB.mode.gcm.decrypt(d,QB.codec.base64.toBits(l),a,[],i)));case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var yh,bh={webCryptoDecrypt:ph,decrypt:(yh=en(At().mark((function e(t,n){var U,i;return At().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("string"==typeof n&&(n=JSON.parse(n)),!n.enableSoftwareAES&&null!==(U=crypto)&&void 0!==U&&U.subtle){e.next=7;break}return e.next=4,Jh(t,n);case 4:i=e.sent,e.next=18;break;case 7:return e.prev=7,e.next=10,ph(t,n);case 10:i=e.sent,e.next=18;break;case 13:return e.prev=13,e.t0=e.catch(7),e.next=17,Jh(t,n);case 17:i=e.sent;case 18:return e.abrupt("return",i);case 19:case"end":return e.stop()}}),e,null,[[7,13]])}))),function(e,t){return yh.apply(this,arguments)})},Eh={exports:{}};Eh.exports=function(e){var t=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function n(e,t){var n=e[0],U=e[1],i=e[2],l=e[3];U=((U+=((i=((i+=((l=((l+=((n=((n+=(U&i|~U&l)+t[0]-680876936|0)<<7|n>>>25)+U|0)&U|~n&i)+t[1]-389564586|0)<<12|l>>>20)+n|0)&n|~l&U)+t[2]+606105819|0)<<17|i>>>15)+l|0)&l|~i&n)+t[3]-1044525330|0)<<22|U>>>10)+i|0,U=((U+=((i=((i+=((l=((l+=((n=((n+=(U&i|~U&l)+t[4]-176418897|0)<<7|n>>>25)+U|0)&U|~n&i)+t[5]+1200080426|0)<<12|l>>>20)+n|0)&n|~l&U)+t[6]-1473231341|0)<<17|i>>>15)+l|0)&l|~i&n)+t[7]-45705983|0)<<22|U>>>10)+i|0,U=((U+=((i=((i+=((l=((l+=((n=((n+=(U&i|~U&l)+t[8]+1770035416|0)<<7|n>>>25)+U|0)&U|~n&i)+t[9]-1958414417|0)<<12|l>>>20)+n|0)&n|~l&U)+t[10]-42063|0)<<17|i>>>15)+l|0)&l|~i&n)+t[11]-1990404162|0)<<22|U>>>10)+i|0,U=((U+=((i=((i+=((l=((l+=((n=((n+=(U&i|~U&l)+t[12]+1804603682|0)<<7|n>>>25)+U|0)&U|~n&i)+t[13]-40341101|0)<<12|l>>>20)+n|0)&n|~l&U)+t[14]-1502002290|0)<<17|i>>>15)+l|0)&l|~i&n)+t[15]+1236535329|0)<<22|U>>>10)+i|0,U=((U+=((i=((i+=((l=((l+=((n=((n+=(U&l|i&~l)+t[1]-165796510|0)<<5|n>>>27)+U|0)&i|U&~i)+t[6]-1069501632|0)<<9|l>>>23)+n|0)&U|n&~U)+t[11]+643717713|0)<<14|i>>>18)+l|0)&n|l&~n)+t[0]-373897302|0)<<20|U>>>12)+i|0,U=((U+=((i=((i+=((l=((l+=((n=((n+=(U&l|i&~l)+t[5]-701558691|0)<<5|n>>>27)+U|0)&i|U&~i)+t[10]+38016083|0)<<9|l>>>23)+n|0)&U|n&~U)+t[15]-660478335|0)<<14|i>>>18)+l|0)&n|l&~n)+t[4]-405537848|0)<<20|U>>>12)+i|0,U=((U+=((i=((i+=((l=((l+=((n=((n+=(U&l|i&~l)+t[9]+568446438|0)<<5|n>>>27)+U|0)&i|U&~i)+t[14]-1019803690|0)<<9|l>>>23)+n|0)&U|n&~U)+t[3]-187363961|0)<<14|i>>>18)+l|0)&n|l&~n)+t[8]+1163531501|0)<<20|U>>>12)+i|0,U=((U+=((i=((i+=((l=((l+=((n=((n+=(U&l|i&~l)+t[13]-1444681467|0)<<5|n>>>27)+U|0)&i|U&~i)+t[2]-51403784|0)<<9|l>>>23)+n|0)&U|n&~U)+t[7]+1735328473|0)<<14|i>>>18)+l|0)&n|l&~n)+t[12]-1926607734|0)<<20|U>>>12)+i|0,U=((U+=((i=((i+=((l=((l+=((n=((n+=(U^i^l)+t[5]-378558|0)<<4|n>>>28)+U|0)^U^i)+t[8]-2022574463|0)<<11|l>>>21)+n|0)^n^U)+t[11]+1839030562|0)<<16|i>>>16)+l|0)^l^n)+t[14]-35309556|0)<<23|U>>>9)+i|0,U=((U+=((i=((i+=((l=((l+=((n=((n+=(U^i^l)+t[1]-1530992060|0)<<4|n>>>28)+U|0)^U^i)+t[4]+1272893353|0)<<11|l>>>21)+n|0)^n^U)+t[7]-155497632|0)<<16|i>>>16)+l|0)^l^n)+t[10]-1094730640|0)<<23|U>>>9)+i|0,U=((U+=((i=((i+=((l=((l+=((n=((n+=(U^i^l)+t[13]+681279174|0)<<4|n>>>28)+U|0)^U^i)+t[0]-358537222|0)<<11|l>>>21)+n|0)^n^U)+t[3]-722521979|0)<<16|i>>>16)+l|0)^l^n)+t[6]+76029189|0)<<23|U>>>9)+i|0,U=((U+=((i=((i+=((l=((l+=((n=((n+=(U^i^l)+t[9]-640364487|0)<<4|n>>>28)+U|0)^U^i)+t[12]-421815835|0)<<11|l>>>21)+n|0)^n^U)+t[15]+530742520|0)<<16|i>>>16)+l|0)^l^n)+t[2]-995338651|0)<<23|U>>>9)+i|0,U=((U+=((l=((l+=(U^((n=((n+=(i^(U|~l))+t[0]-198630844|0)<<6|n>>>26)+U|0)|~i))+t[7]+1126891415|0)<<10|l>>>22)+n|0)^((i=((i+=(n^(l|~U))+t[14]-1416354905|0)<<15|i>>>17)+l|0)|~n))+t[5]-57434055|0)<<21|U>>>11)+i|0,U=((U+=((l=((l+=(U^((n=((n+=(i^(U|~l))+t[12]+1700485571|0)<<6|n>>>26)+U|0)|~i))+t[3]-1894986606|0)<<10|l>>>22)+n|0)^((i=((i+=(n^(l|~U))+t[10]-1051523|0)<<15|i>>>17)+l|0)|~n))+t[1]-2054922799|0)<<21|U>>>11)+i|0,U=((U+=((l=((l+=(U^((n=((n+=(i^(U|~l))+t[8]+1873313359|0)<<6|n>>>26)+U|0)|~i))+t[15]-30611744|0)<<10|l>>>22)+n|0)^((i=((i+=(n^(l|~U))+t[6]-1560198380|0)<<15|i>>>17)+l|0)|~n))+t[13]+1309151649|0)<<21|U>>>11)+i|0,U=((U+=((l=((l+=(U^((n=((n+=(i^(U|~l))+t[4]-145523070|0)<<6|n>>>26)+U|0)|~i))+t[11]-1120210379|0)<<10|l>>>22)+n|0)^((i=((i+=(n^(l|~U))+t[2]+718787259|0)<<15|i>>>17)+l|0)|~n))+t[9]-343485551|0)<<21|U>>>11)+i|0,e[0]=n+e[0]|0,e[1]=U+e[1]|0,e[2]=i+e[2]|0,e[3]=l+e[3]|0}function U(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return n}function i(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24);return n}function l(e){var t,i,l,F,a,r,d=e.length,Q=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=d;t+=64)n(Q,U(e.substring(t-64,t)));for(i=(e=e.substring(t-64)).length,l=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t<i;t+=1)l[t>>2]|=e.charCodeAt(t)<<(t%4<<3);if(l[t>>2]|=128<<(t%4<<3),t>55)for(n(Q,l),t=0;t<16;t+=1)l[t]=0;return F=(F=8*d).toString(16).match(/(.*?)(.{0,8})$/),a=parseInt(F[2],16),r=parseInt(F[1],16)||0,l[14]=a,l[15]=r,n(Q,l),Q}function F(e){var t,U,l,F,a,r,d=e.length,Q=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=d;t+=64)n(Q,i(e.subarray(t-64,t)));for(U=(e=t-64<d?e.subarray(t-64):new Uint8Array(0)).length,l=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t<U;t+=1)l[t>>2]|=e[t]<<(t%4<<3);if(l[t>>2]|=128<<(t%4<<3),t>55)for(n(Q,l),t=0;t<16;t+=1)l[t]=0;return F=(F=8*d).toString(16).match(/(.*?)(.{0,8})$/),a=parseInt(F[2],16),r=parseInt(F[1],16)||0,l[14]=a,l[15]=r,n(Q,l),Q}function a(e){var n,U="";for(n=0;n<4;n+=1)U+=t[e>>8*n+4&15]+t[e>>8*n&15];return U}function r(e){var t;for(t=0;t<e.length;t+=1)e[t]=a(e[t]);return e.join("")}function d(e){return/[\u0080-\uFFFF]/.test(e)&&(e=unescape(encodeURIComponent(e))),e}function Q(e,t){var n,U=e.length,i=new ArrayBuffer(U),l=new Uint8Array(i);for(n=0;n<U;n+=1)l[n]=e.charCodeAt(n);return t?l:i}function o(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function s(e,t,n){var U=new Uint8Array(e.byteLength+t.byteLength);return U.set(new Uint8Array(e)),U.set(new Uint8Array(t),e.byteLength),n?U:U.buffer}function c(e){var t,n=[],U=e.length;for(t=0;t<U-1;t+=2)n.push(parseInt(e.substr(t,2),16));return String.fromCharCode.apply(String,n)}function R(){this.reset()}return r(l("hello")),"undefined"==typeof ArrayBuffer||ArrayBuffer.prototype.slice||function(){function t(e,t){return(e=0|e||0)<0?Math.max(e+t,0):Math.min(e,t)}ArrayBuffer.prototype.slice=function(n,U){var i,l,F,a,r=this.byteLength,d=t(n,r),Q=r;return U!==e&&(Q=t(U,r)),d>Q?new ArrayBuffer(0):(i=Q-d,l=new ArrayBuffer(i),F=new Uint8Array(l),a=new Uint8Array(this,d,i),F.set(a),l)}}(),R.prototype.append=function(e){return this.appendBinary(d(e)),this},R.prototype.appendBinary=function(e){this._buff+=e,this._length+=e.length;var t,i=this._buff.length;for(t=64;t<=i;t+=64)n(this._hash,U(this._buff.substring(t-64,t)));return this._buff=this._buff.substring(t-64),this},R.prototype.end=function(e){var t,n,U=this._buff,i=U.length,l=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<i;t+=1)l[t>>2]|=U.charCodeAt(t)<<(t%4<<3);return this._finish(l,i),n=r(this._hash),e&&(n=c(n)),this.reset(),n},R.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},R.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},R.prototype.setState=function(e){return this._buff=e.buff,this._length=e.length,this._hash=e.hash,this},R.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},R.prototype._finish=function(e,t){var U,i,l,F=t;if(e[F>>2]|=128<<(F%4<<3),F>55)for(n(this._hash,e),F=0;F<16;F+=1)e[F]=0;U=(U=8*this._length).toString(16).match(/(.*?)(.{0,8})$/),i=parseInt(U[2],16),l=parseInt(U[1],16)||0,e[14]=i,e[15]=l,n(this._hash,e)},R.hash=function(e,t){return R.hashBinary(d(e),t)},R.hashBinary=function(e,t){var n=r(l(e));return t?c(n):n},R.ArrayBuffer=function(){this.reset()},R.ArrayBuffer.prototype.append=function(e){var t,U=s(this._buff.buffer,e,!0),l=U.length;for(this._length+=e.byteLength,t=64;t<=l;t+=64)n(this._hash,i(U.subarray(t-64,t)));return this._buff=t-64<l?new Uint8Array(U.buffer.slice(t-64)):new Uint8Array(0),this},R.ArrayBuffer.prototype.end=function(e){var t,n,U=this._buff,i=U.length,l=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<i;t+=1)l[t>>2]|=U[t]<<(t%4<<3);return this._finish(l,i),n=r(this._hash),e&&(n=c(n)),this.reset(),n},R.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},R.ArrayBuffer.prototype.getState=function(){var e=R.prototype.getState.call(this);return e.buff=o(e.buff),e},R.ArrayBuffer.prototype.setState=function(e){return e.buff=Q(e.buff,!0),R.prototype.setState.call(this,e)},R.ArrayBuffer.prototype.destroy=R.prototype.destroy,R.ArrayBuffer.prototype._finish=R.prototype._finish,R.ArrayBuffer.hash=function(e,t){var n=r(F(new Uint8Array(e)));return t?c(n):n},R}();var kh=n(Eh.exports),fh=new Uint8Array([91,104,69,75,156,171,238,71,202,4,244,5]).buffer;function vh(e,t){return Nh.apply(this,arguments)}function Nh(){return(Nh=en(At().mark((function e(t,n){var U,i;return At().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return U=kh.hash(n),e.next=3,bh.decrypt(U,{data:t,iv:fh,tagLength:128});case 3:return i=e.sent,e.abrupt("return",i);case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var Th=ba.forEach,Ch=Hc("forEach")?[].forEach:function(e){return Th(this,e,arguments.length>1?arguments[1]:void 0)},gh=i,Xh=ea,Lh=Ch,Gh=ee;for(var xh in Xh){var Ih=gh[xh],Dh=Ih&&Ih.prototype;if(Dh&&Dh.forEach!==Lh)try{Gh(Dh,"forEach",Lh)}catch(WV){Dh.forEach=Lh}}nc("Uint16",(function(e){return function(t,n,U){return e(this,t,n,U)}}));var Yh={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function U(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function l(e,t,U,l,F){if("function"!=typeof U)throw new TypeError("The listener must be a function");var a=new i(U,l||e,F),r=n?n+t:t;return e._events[r]?e._events[r].fn?e._events[r]=[e._events[r],a]:e._events[r].push(a):(e._events[r]=a,e._eventsCount++),e}function F(e,t){0==--e._eventsCount?e._events=new U:delete e._events[t]}function a(){this._events=new U,this._eventsCount=0}Object.create&&(U.prototype=Object.create(null),(new U).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,U,i=[];if(0===this._eventsCount)return i;for(U in e=this._events)t.call(e,U)&&i.push(n?U.slice(1):U);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,U=this._events[t];if(!U)return[];if(U.fn)return[U.fn];for(var i=0,l=U.length,F=new Array(l);i<l;i++)F[i]=U[i].fn;return F},a.prototype.listenerCount=function(e){var t=n?n+e:e,U=this._events[t];return U?U.fn?1:U.length:0},a.prototype.emit=function(e,t,U,i,l,F){var a=n?n+e:e;if(!this._events[a])return!1;var r,d,Q=this._events[a],o=arguments.length;if(Q.fn){switch(Q.once&&this.removeListener(e,Q.fn,void 0,!0),o){case 1:return Q.fn.call(Q.context),!0;case 2:return Q.fn.call(Q.context,t),!0;case 3:return Q.fn.call(Q.context,t,U),!0;case 4:return Q.fn.call(Q.context,t,U,i),!0;case 5:return Q.fn.call(Q.context,t,U,i,l),!0;case 6:return Q.fn.call(Q.context,t,U,i,l,F),!0}for(d=1,r=new Array(o-1);d<o;d++)r[d-1]=arguments[d];Q.fn.apply(Q.context,r)}else{var s,c=Q.length;for(d=0;d<c;d++)switch(Q[d].once&&this.removeListener(e,Q[d].fn,void 0,!0),o){case 1:Q[d].fn.call(Q[d].context);break;case 2:Q[d].fn.call(Q[d].context,t);break;case 3:Q[d].fn.call(Q[d].context,t,U);break;case 4:Q[d].fn.call(Q[d].context,t,U,i);break;default:if(!r)for(s=1,r=new Array(o-1);s<o;s++)r[s-1]=arguments[s];Q[d].fn.apply(Q[d].context,r)}}return!0},a.prototype.on=function(e,t,n){return l(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return l(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,U,i){var l=n?n+e:e;if(!this._events[l])return this;if(!t)return F(this,l),this;var a=this._events[l];if(a.fn)a.fn!==t||i&&!a.once||U&&a.context!==U||F(this,l);else{for(var r=0,d=[],Q=a.length;r<Q;r++)(a[r].fn!==t||i&&!a[r].once||U&&a[r].context!==U)&&d.push(a[r]);d.length?this._events[l]=1===d.length?d[0]:d:F(this,l)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&F(this,t)):(this._events=new U,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}(Yh);var Mh=n(Yh.exports),Kh="kid",wh={ERROR:"error",ENCRYPTED:"encrypted",CDM_LICENSE_SUCCESS:"CDM_LICENSE_SUCCESS",CDM_LICENSE_ERROR:"CDM_LICENSE_ERROR"},Hh=function(e){Fn(n,e);var t=Qn(n);function n(e){var U;return tn(this,n),ln(dn(U=t.call(this)),"encryptHandle",(function(e){var t,n,i,l=dn(U).video,F=dn(U);"org.w3.clearkey"===U.KEYSYSTEM_TYPE?(t="keyids",n=JSON.stringify({kids:["0123456789abcdef0123456789abcdef"]}),i=new Uint8Array(mh.toUTF8(n))):"com.widevine.alpha"===U.KEYSYSTEM_TYPE?(t="cenc",i=e&&new Uint8Array(e.initData)||new Uint8Array([0,0,0,67,112,115,115,104,0,0,0,0,237,239,139,169,121,214,74,206,163,200,39,220,213,29,33,237,0,0,0,35,8,1,18,16,51,51,51,51,51,51,51,51,51,51,51,51,0,0,0,0,26,10,105,110,116,101,114,116,114,117,115,116,34,1,42])):"com.microsoft.playready"===U.KEYSYSTEM_TYPE&&(t="cenc",i=e&&new Uint8Array(e.initData)||new Uint8Array([0,0,2,38,112,115,115,104,0,0,0,0,154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149,0,0,2,6,6,2,0,0,1,0,1,0,252,1,60,0,87,0,82,0,77,0,72,0,69,0,65,0,68,0,69,0,82,0,32,0,120,0,109,0,108,0,110,0,115,0,61,0,34,0,104,0,116,0,116,0,112,0,58,0,47,0,47,0,115,0,99,0,104,0,101,0,109,0,97,0,115,0,46,0,109,0,105,0,99,0,114,0,111,0,115,0,111,0,102,0,116,0,46,0,99,0,111,0,109,0,47,0,68,0,82,0,77,0,47,0,50,0,48,0,48,0,55,0,47,0,48,0,51,0,47,0,80,0,108,0,97,0,121,0,82,0,101,0,97,0,100,0,121,0,72,0,101,0,97,0,100,0,101,0,114,0,34,0,32,0,118,0,101,0,114,0,115,0,105,0,111,0,110,0,61,0,34,0,52,0,46,0,48,0,46,0,48,0,46,0,48,0,34,0,62,0,60,0,68,0,65,0,84,0,65,0,62,0,60,0,80,0,82,0,79,0,84,0,69,0,67,0,84,0,73,0,78,0,70,0,79,0,62,0,60,0,75,0,69,0,89,0,76,0,69,0,78,0,62,0,49,0,54,0,60,0,47,0,75,0,69,0,89,0,76,0,69,0,78,0,62,0,60,0,65,0,76,0,71,0,73,0,68,0,62,0,65,0,69,0,83,0,67,0,84,0,82,0,60,0,47,0,65,0,76,0,71,0,73,0,68,0,62,0,60,0,47,0,80,0,82,0,79,0,84,0,69,0,67,0,84,0,73,0,78,0,70,0,79,0,62,0,60,0,75,0,73,0,68,0,62,0,77,0,122,0,77,0,122,0,77,0,122,0,77,0,122,0,77,0,122,0,77,0,122,0,77,0,122,0,77,0,122,0,65,0,65,0,65,0,65,0,65,0,65,0,61,0,61,0,60,0,47,0,75,0,73,0,68,0,62,0,60,0,67,0,72,0,69,0,67,0,75,0,83,0,85,0,77,0,62,0,65,0,49,0,53,0,66,0,89,0,87,0,68,0,52,0,113,0,115,0,73,0,61,0,60,0,47,0,67,0,72,0,69,0,67,0,75,0,83,0,85,0,77,0,62,0,60,0,47,0,68,0,65,0,84,0,65,0,62,0,60,0,47,0,87,0,82,0,77,0,72,0,69,0,65,0,68,0,69,0,82,0,62,0])),F.EnsureMediaKeysCreated(l,F.KEYSYSTEM_TYPE,F.options).then((function(){var e=l.mediaKeys.createSession();return l.sessions.push(e),"org.w3.clearkey"===F.KEYSYSTEM_TYPE?e.addEventListener("message",F.updateSessionFunc(F.keys)):("com.widevine.alpha"===F.KEYSYSTEM_TYPE||"com.microsoft.playready"===F.KEYSYSTEM_TYPE)&&e.addEventListener("message",F.licenseRequestReady.bind(F)),e.generateRequest(t,i.buffer)}),(function(){return F.bail(" failed to ensure MediaKeys on HTMLMediaElement")})).then((function(){}),(function(){return F.bail(" Failed to generate request.")}))})),U.KEYSYSTEM_TYPE="",U.keys={},U.updateDrm(e),U.options=[],U.ensurePromise=void 0,U.kid=Kh,U.video=null,U.licenseStep=0,U.on(wh.ENCRYPTED,U.encryptHandle),U}return Un(n,[{key:"updateDrm",value:function(e,t){null!=e&&e.clearKeys&&(this.KEYSYSTEM_TYPE="org.w3.clearkey",this.keys=e.clearKeys),null!=e&&e.clearKeys?this.KEYSYSTEM_TYPE="org.w3.clearkey":null!=e&&e.widevine?(this.KEYSYSTEM_TYPE="com.widevine.alpha",this.keys=e.widevine):null!=e&&e.playready&&(this.KEYSYSTEM_TYPE="com.microsoft.playready",this.keys=e.playready),t&&(this.kid=t)}},{key:"updateKid",value:function(e){this.kid===Kh&&this.keys[this.kid]&&(this.keys[e]=this.keys[this.kid],delete this.keys[Kh]),this.kid=e}},{key:"setOptions",value:function(){this.options=[{initDataTypes:["keyids","webm"],audioCapabilities:[{contentType:'audio/mp4; codecs="mp4a.40.2"'}],videoCapabilities:[{contentType:'video/mp4; codecs="avc1.42c01e"'},{contentType:'video/mp4; codecs="hev1.1.6.L120.90"'},{contentType:'video/webm; codecs="vp8"'}]}]}},{key:"bail",value:function(e){console.error("[EME]",e),this.emit(wh.ERROR,e)}},{key:"updateSessionFunc",value:function(e){var t=this;return function(n){var U=[],i=[];Object.keys(e).forEach((function(t){var n=e[t],l=mh.fromHex(t),F=mh.fromHex(n),a={kty:"oct",kid:mh.toBase64(l,!1),k:mh.toBase64(F,!1)};U.push(a),i.push(a.kid)}));var l={keys:U},F=JSON.stringify(l);n.target.update(mh.StringToArrayBuffer(F)).then((function(){}),(function(){return t.bail(" MediaKeySession update failed")}))}}},{key:"keysChange",value:function(){}},{key:"EnsureMediaKeysCreated",value:function(e,t,n){var U=this;return this.ensurePromise||(this.ensurePromise=navigator.requestMediaKeySystemAccess(t,n).then((function(e){return e.createMediaKeys()}),(function(){return U.bail(" Failed to request key system access.")})).then((function(t){return e.setMediaKeys(t)}),(function(){return U.bail(" failed to create MediaKeys object")}))),this.ensurePromise}},{key:"setupEME",value:function(e){this.video=e,e.sessions=[]}},{key:"parseServerResponse",value:function(e){var t="https://schemas.xmlsoap.org/soap/envelope/";if(window.DOMParser){var n=this.uintToString(e),U=(new window.DOMParser).parseFromString(n,"text/xml"),i=U?U.getElementsByTagNameNS(t,"Envelope")[0]:null,l=i?i.getElementsByTagNameNS(t,"Body")[0]:null;if(l&&l.getElementsByTagNameNS(t,"Fault")[0])return null}return e}},{key:"uintToString",value:function(e){var t=String.fromCharCode.apply(null,new Uint8Array(e));return decodeURIComponent(escape(t))}},{key:"licenseRequestReady",value:function(e){var t=this,n=new XMLHttpRequest;n.open("GET",this.keys.serverURL),n.onreadystatechange=function(){if(4===n.readyState){var U=e.message,i=n.response;"com.microsoft.playready"===t.KEYSYSTEM_TYPE&&(i=JSON.parse(n.response),i="".concat(i.licenseAcquisitionUrl,"?ExpressPlayToken=").concat(i.token));var l=new XMLHttpRequest;l.keySession=e.target,l.responseType="arraybuffer",l.withCredentials=!1,l.open("POST",String(i)),"com.microsoft.playready"===t.KEYSYSTEM_TYPE&&l.setRequestHeader("Content-type","text/xml"),l.onreadystatechange=function(){if(4===l.readyState){if(200!==l.status)return void t.emit(wh.CDM_LICENSE_ERROR,{data:t.licenseStep});var e;t.emit(wh.CDM_LICENSE_SUCCESS,{data:t.licenseStep}),t.licenseStep++,e="com.microsoft.playready"===t.KEYSYSTEM_TYPE?t.parseServerResponse(l.response):new Uint8Array(l.response),l.keySession.update(e).catch(console.error.bind(console,"update() failed"))}},l.send(t.getLicenseRequestFromMessage(U))}},n.send()}},{key:"getLicenseRequestFromMessage",value:function(e){if("com.microsoft.playready"===this.KEYSYSTEM_TYPE){var t=null,n=new DOMParser,U=new Uint16Array(e),i=String.fromCharCode.apply(null,U),l=n.parseFromString(i,"application/xml");if(!l.getElementsByTagName("PlayReadyKeyMessage")[0])return e;var F=l.getElementsByTagName("Challenge")[0].childNodes[0].nodeValue;return F&&(t=window.atob(F)),t}return new Uint8Array(e)}},{key:"destroy",value:function(){this.removeAllListeners(),this.video=null}}]),n}(Mh),Ph="volcvui",jh=new Map,zh=function(e){Fn(U,e);var t,n=Qn(U);function U(e){var t;return tn(this,U),ln(dn(t=n.call(this)),"EMEError",(function(e){t.emit(wh.ERROR,e)})),ln(dn(t),"encryptHandle",(function(){var e;null===(e=t.eme)||void 0===e||e.emit(wh.ENCRYPTED)})),t.config=U.defaultConfig,t.updateConfig(e),t.config.isEncrypt=!!(t.config.kid||t.config.drm||t.config.secretKey||t.config.drmKeyToken||t.config.keyValue||t.config.drm),t.on(wh.ENCRYPTED,t.encryptHandle),t}return Un(U,[{key:"updateConfig",value:function(e){var t=this;Object.keys(e).map((function(n){void 0!==e[n]&&null!==e[n]&&void 0!==t.config[n]&&(t.config[n]=e[n])})),this.log("set config",JSON.stringify(this.config))}},{key:"setupEME",value:function(e){this.eme&&this.eme.setupEME(e)}},{key:"setOptions",value:function(e){this.eme&&this.eme.setOptions(e)}},{key:"getSecretKeyByToken",value:function(e,t,n){var U=this,i=this.config,l=e||i.kid,F=t||i.playDomain;F.indexOf("//")<0&&(F="//".concat(F));var a=n||i.drmKeyToken,r=mh.isBase64(a)?window.atob(a):a,d="".concat(F,"?").concat(r,"&PlayAuthIds=").concat(l,"&ssl=true");r.indexOf("DrmType=")<0&&(d+="&DrmType=".concat(i.useUnionInfoDRM?"webdevice":"22")),this.log("getSecretKeyByToken start, vid,",i.vid,d);var Q=new AR;return new lB({type:"json",method:"GET",url:d}).then((function(e){var t,n,l=e.response;if("string"==typeof l&&(l=JSON.parse(l)),l&&null!==(t=l)&&void 0!==t&&t.Result&&(null===(n=l.Result.PlayAuthInfoList)||void 0===n?void 0:n.length)>0){var F=l.Result.PlayAuthInfoList[0].PlayAuthContent;U.log("getSecretKeyByToken end, vid,",i.vid,",res,",JSON.stringify(l)),Q.resolve(F)}})).catch((function(e){Q.reject(e)})),Q}},{key:"getLicense",value:function(){var e=this,t=this.config,n=t.vid,U=t.kid,i=t.getLicenseUrl,l=new AR;return Promise.resolve().then(en(At().mark((function t(){var F,a,r,d,Q,o,s,c,R,B,u,h;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return F={method:"getLicense",success:!1},t.next=3,e._tryGetSecretKeyByToken(F,l);case 3:if(a=e.config,r=a.secretKey,d=a.keyValue,!(U||r||d||e.config.drm)){t.next=39;break}if(t.prev=5,Q=e.config.drm||d,!(r||U&&i)){t.next=11;break}return t.next=10,rB(n,r,U,i);case 10:Q=t.sent;case 11:if(o=Q&&Q.clearKeys?Q.clearKeys[U]:Q,c=e.config,R=c.sessionId,B=c.useUnionInfoDRM,u=c.keyTokenExpiredDuration,h=jh.get(R),!o&&(o=e.config.keyValue),!B||!mh.checkUnionInfoExpired(h.unionID,h.unionInfo,u)){t.next=25;break}return t.next=19,vh(o,h.unionInfo);case 19:s=t.sent,t.next=23;break;case 22:throw new Error('The "transformUnionKey" should be provided in configuration as a function');case 23:t.next=26;break;case 25:s=o;case 26:Q&&Q.clearKeys&&(Q.clearKeys[U]=s,F.drm=Q),F.keyValue=s,F.success=!0,l.resolve(F),t.next=37;break;case 32:t.prev=32,t.t0=t.catch(5),F.success=!1,F.error=t.t0,l.reject(F);case 37:t.next=41;break;case 39:F.success=!0,l.resolve(F);case 41:case"end":return t.stop()}}),t,null,[[5,32]])})))),l}},{key:"_tryGetSecretKeyByToken",value:(t=en(At().mark((function e(t,n){var U,i,l,F;return At().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U=this.config,i=U.kid,l=U.drmKeyToken,F=U.playDomain,!(i&&l&&F)){e.next=13;break}return e.prev=2,e.next=5,this.getSecretKeyByToken(i,F,l);case 5:this.config.secretKey=e.sent,e.next=13;break;case 8:e.prev=8,e.t0=e.catch(2),t.success=!1,t.error=e.t0,n.reject(t);case 13:case"end":return e.stop()}}),e,this,[[2,8]])}))),function(e,n){return t.apply(this,arguments)})},{key:"updateKid",value:function(e){this.eme&&this.eme.updateKid(e)}},{key:"getLicenseSecret",value:function(){var e=this,t=this.config,n=t.vid,U=t.kid,i=t.getLicenseUrl,l=t.useEME,F=t.keyValue;if(this.config.useEME&&!this.eme){this.eme=new Hh,this.eme.on(wh.ERROR,this.EMEError),this.eme.on(wh.CDM_LICENSE_SUCCESS,(function(t){e.emit(wh.CDM_LICENSE_SUCCESS,t)})),this.eme.on(wh.CDM_LICENSE_ERROR,(function(t){e.emit(wh.CDM_LICENSE_ERROR,t)}));var a=this.config.intertrustServerURL;if(U&&a){var r=ln({},window.navigator.userAgent.toLocaleLowerCase().indexOf("chrome")>-1?"widevine":"playready",{serverURL:a+U});return this.eme.updateDrm(r),Promise.resolve()}}var d=new AR;return Promise.resolve().then(en(At().mark((function t(){var a,r,Q,o,s,c,R,B,u;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a={method:"getLicense",success:!1},t.next=3,e._tryGetSecretKeyByToken(a,d);case 3:if((r=e.config.secretKey)||F){t.next=8;break}return t.next=7,aB(n,U,i);case 7:r=t.sent;case 8:if(l&&(r&&(r=UB(r)),F&&(r=F)),t.prev=9,Q=e.config,o=Q.sessionId,s=Q.useUnionInfoDRM,c=Q.keyTokenExpiredDuration,R=jh.get(o),!s||!mh.checkUnionInfoExpired(R.unionID,R.unionInfo,c)){t.next=18;break}if(!l){t.next=17;break}return t.next=16,vh(r,R.unionInfo);case 16:r=t.sent;case 17:a.decryptKey=mh.StringToArrayBuffer(kh.hash(R.unionInfo));case 18:l?((B={clearKeys:{}}).clearKeys[u=U||Kh]=r,e.eme.updateDrm(B,u),a.secretKey=null):a.secretKey=r,a.success=!0,d.resolve(a),t.next=28;break;case 23:t.prev=23,t.t0=t.catch(9),a.success=!1,a.error=t.t0,d.reject(a);case 28:case"end":return t.stop()}}),t,null,[[9,23]])})))),d}},{key:"destroy",value:function(){this.removeAllListeners(),this.eme&&(this.eme.destroy(),this.eme=null)}},{key:"log",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),U=1;U<t;U++)n[U-1]=arguments[U];dB.apply(void 0,[e].concat(n))}},{key:"getSecretKey",value:function(){var e=this.config,t=e.vid,n=e.kid,U=e.getLicenseUrl,i=e.drmKeyToken,l=e.playDomain,F=e.secretKey;return U&&n?aB(t,n,U):i&&n&&l?this.getSecretKeyByToken(n,l,i):F||(console.error("[DRM]DRM,getSecretKey args is invalid"),null)}},{key:"getKeyValue",value:function(){var e=this.config,t=e.vid,n=e.kid,U=e.getLicenseUrl;return rB(t,e.secretKey,n,U)}}],[{key:"pluginName",get:function(){return"XGSecretKey"}},{key:"defaultConfig",get:function(){return{keyValue:null,kid:null,getLicenseUrl:"",secretKey:null,drm:null,vid:"",useUnionInfoDRM:!1,transformUnionKey:null,drmKeyToken:null,keyTokenExpiredDuration:null,playDomain:null,sessionId:Ph,useEME:!0,intertrustServerURL:null}}},{key:"updateUnionInfo",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ph,n=mh.getUnionInfo(e);return jh.set(t,{unionID:e,unionInfo:n}),n}}]),U}(Mh);zh.isWebAssemblySupported=function(){try{if("object"===("undefined"==typeof WebAssembly?"undefined":qt(WebAssembly))&&"function"==typeof WebAssembly.instantiate){var e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(uh){}return!1};var Oh,_h,Ah=S,qh=R,$h=Cn("match"),eV=a,tV=i,nV=Mt,UV=nl,iV=w.f,lV=nt.f,FV=function(e){var t;return Ah(e)&&(void 0!==(t=e[$h])?!!t:"RegExp"==qh(e))},aV=sB,rV=cB,dV=_e,QV=F,oV=Ye.enforce,sV=pl,cV=Cn("match"),RV=tV.RegExp,BV=RV.prototype,uV=/a/g,hV=/a/g,VV=new RV(uV)!==uV,ZV=rV.UNSUPPORTED_Y;if(eV&&nV("RegExp",!VV||ZV||QV((function(){return hV[cV]=!1,RV(uV)!=uV||RV(hV)==hV||"/a/i"!=RV(uV,"i")})))){for(var mV=function(e,t){var n,U=this instanceof mV,i=FV(e),l=void 0===t;if(!U&&i&&e.constructor===mV&&l)return e;VV?i&&!l&&(e=e.source):e instanceof mV&&(l&&(t=aV.call(e)),e=e.source),ZV&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var F=UV(VV?new RV(e,t):RV(e,t),U?this:BV,mV);return ZV&&n&&(oV(F).sticky=!0),F},pV=function(e){e in mV||iV(mV,e,{configurable:!0,get:function(){return RV[e]},set:function(t){RV[e]=t}})},SV=lV(RV),JV=0;SV.length>JV;)pV(SV[JV++]);BV.constructor=mV,mV.prototype=BV,dV(tV,"RegExp",mV)}sV("RegExp"),e.isNativeFunction=void 0,e.checkMSEValid=void 0,e.checkEMEValid=void 0,function(e,t,n){function U(e,t){var n=parseInt(e.slice(t,t+2),16);return n>>>7==0?[1,n]:n>>>6==2?(n=(63&n)<<8,[2,n+=parseInt(e.slice(t+2,t+4),16)]):(n=(63&n)<<16,[3,n+=parseInt(e.slice(t+2,t+6),16)])}var i,l=0,F=[],a=[];for(i=0;i<4;++i)l+=(3&parseInt(e.slice(8+2*i,10+2*i),16))<<2*i;var r=parseInt(e.slice(16,24),16),d=2*parseInt(e.slice(32,40),16);for(i=40;i<d+40;i+=2)F.push(parseInt(e.slice(i,i+2),16));var Q=d+40,o=parseInt(e.slice(Q,Q+4),16);for(Q+=4,i=0;i<o;++i){var s=U(e,Q);Q+=2*s[0];for(var c="",R=0;R<s[1];++R){var B=U(e,Q);c+=String.fromCharCode(l^B[1]),Q+=2*B[0]}a.push(c)}t.p=null,function e(t,n,U,i,l){var r,d,Q,o,s,c=-1,R=[],B=null,u=[n];for(d=Math.min(n.length,U),Q=0;Q<d;++Q)u.push(n[Q]);u.p=i;for(var h=[];;)try{switch(F[t++]){case 47:R[++c]=!0;break;case 55:R[++c]=!1;break;case 25:R[++c]=null;break;case 9:r=F[t++],R[++c]=r<<24>>24;break;case 57:r=((r=((r=F[t++])<<8)+F[t++])<<8)+F[t++],R[++c]=(r<<8)+F[t++];break;case 68:r=(F[t]<<8)+F[t+1],t+=2,R[++c]=a[r];break;case 21:R[++c]=void 0;break;case 16:r=(F[t]<<8)+F[t+1],t+=2,c=c-r+1,d=R.slice(c,c+r),R[c]=d;break;case 27:for(d=F[t++],Q=F[t++],o=u;d>0;--d)o=o.p;R[++c]=o[Q];break;case 52:r=(F[t]<<8)+F[t+1],t+=2,d=a[r],R[c]=R[c][d];break;case 4:for(d=F[t++],Q=F[t++],o=u;d>0;--d)o=o.p;o[Q]=R[c--];break;case 50:d=R[c--],R[c]=R[c]===d;break;case 29:d=R[c--],R[c]=R[c]!==d;break;case 65:r=(r=(F[t]<<8)+F[t+1])<<16>>16,t+=2,R[c]?--c:t+=r;break;case 2:r=(r=(F[t]<<8)+F[t+1])<<16>>16,t+=2,R[c]?t+=r:--c;break;case 54:R[c]=typeof R[c];break;case 49:r=F[t++],d=R[c--],(Q=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)})._v=[d,r,u],Q._u=e,R[++c]=Q;break;case 70:for(d=R[c--],Q=null;o=h.pop();)if(2===o[0]||3===o[0]){Q=o;break}if(Q)t=Q[2],Q[0]=0,h.push(Q);else{if(!B)return d;t=B[1],l=B[2],u=B[3],h=B[4],R[++c]=d,B=B[0]}break;case 20:c-=r=F[t++],Q=R.slice(c+1,c+r+1),d=R[c--],o=R[c--],d._u===e?(d=d._v,B=[B,t,l,u,h],t=d[0],null==o&&(o=function(){return this}()),l=o,(u=[Q].concat(Q)).length=Math.min(d[1],r)+1,u.p=d[2],h=[]):(s=d.apply(o,Q),R[++c]=s);break;case 12:for(r=F[t++],o=[void 0],s=r;s>0;--s)o[s]=R[c--];Q=R[c--],s=new(d=Function.bind.apply(Q,o)),R[++c]=s;break;case 53:t+=2+(r=(r=(F[t]<<8)+F[t+1])<<16>>16);break;case 15:r=(r=(F[t]<<8)+F[t+1])<<16>>16,t+=2,(d=R[c--])||(t+=r);break;case 72:--c;break;case 6:d=R[c],R[++c]=d;break;default:throw new Error("ioe")}}catch(V){for(;(r=h.pop())&&!r[0];);if(!r){e:for(;B;){for(d=B[4];r=d.pop();)if(r[0])break e;B=B[0]}if(!B)throw V;t=B[1],l=B[2],u=B[3],h=B[4],B=B[0]}1===(d=r[0])?(t=r[2],r[0]=0,h.push(r),R[++c]=V):2===d?(t=r[2],r[0]=0,h.push(r)):(t=r[3],r[0]=2,h.push(r),R[++c]=V)}}(r,[],0,t,n)}("504B0101cde64451000001905245e4ce000001dc2f0400021b0202063400021b000114010f00191b000106340003390000009d31021b0002140204000235006d191b020344000406340005191b02041b01011401063400061b02034400074400080c024400091402063400061b020344000a4400080c0244000b140244000c140214010400031b00013644000d320f00181b00030634000e1b01020634000f1b000114011401350001370400021b0002461b0001410009191b03071b00021401461b02053400100200061b0205340011461b020534001246191b02081400040001191b02091400040002370400031b00014100031b00020f00621000000400041b00020f00201b0004063400131b00021401481b0004063400131b00023400003400141401481b00010f00201b0004063400131b00011401481b0004063400131b0001340000340015140148191b02071b000414010f00042f0400031b0003461000000400011b0206364400161d4100031b02060f00131b0001063400131b02063400003400171401481b00013400180900320f00042f350009191b02071b00011401463900000000310104010739000000ad310004010839000000bd310004010939000000c4310004010a390000014c310004010b1b01003400003400010400011b01013400003400010400021546001909393b263d263d30392c083d261a3d3b20272e07203a083b3b2830063b2c2d3c2a2c0117062a26272a283d073b2c3925282a2c141267636276176d32346160351215141566151514012e03156d6f2f3d261a3d3b20272e35612f3c272a3d20262760676376617674151515616035692f263b696762766176741515151460056d78676376016d082f3c272a3d202627043d2c3a3d042a2825250b042c2d20281a263c3b2a2c111e2c2b02203d042c2d20281a263c3b2a2c0c1a263c3b2a2c0b3c2f2f2c3b04393c3a210c2839392c272d0b3c2f2f2c3b0f282d2d1a263c3b2a2c0b3c2f2f2c3b093c272d2c2f20272c2d063c392d283d2c06252c272e3d21",{0:Object,1:Function,2:Array,3:RegExp,4:String,get 5(){return self},get 6(){return"undefined"!=typeof MediaKeySession?MediaKeySession:void 0},get 7(){return e.isNativeFunction},set 7(t){e.isNativeFunction=t},get 8(){return Oh},set 8(e){Oh=e},get 9(){return _h},set 9(e){_h=e},get 10(){return e.checkMSEValid},set 10(t){e.checkMSEValid=t},get 11(){return e.checkEMEValid},set 11(t){e.checkEMEValid=t}},void 0),e.EVENT_EME=wh,e.TRANSFORM_IV=fh,e.XGSecretKey=zh,e.aes4js=bh,e.transformUnionKey=vh,e.util=mh})(sF.exports);var cF=sF.exports;var RF=function(){function e(){var t,n;M(this,e);var U=new Promise((function(e,U){t=e,n=U}));return U.resolve=t,U.reject=n,U}return w(e,[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}]),e}(),BF=function(){function e(){M(this,e)}return w(e,null,[{key:"install",value:function(){if(window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,window.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.cancelRequestAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame,!window.requestAnimationFrame){var e=Date.now();window.requestAnimationFrame=function(t){var n=Date.now(),U=Math.max(16.7-(n-e),0),i=setTimeout(t,U);return e=n+U,i}}window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}}]),e}(),uF=function(){function e(){M(this,e),this.fps=0,this.isStoped=!0,this.ticks=[],this.isSupport=!0,this.maxFps=0,this.step=this._step.bind(this),this.rafId=null}return w(e,[{key:"_step",value:function(e){var t=this.ticks;if(t.unshift(e),t.length>10){var n=t.pop();n&&(this.fps=Math.floor(1e4/(e-n)),this.updateFpsInfo())}this.isStoped||(this.rafId=window.requestAnimationFrame(this.step))}},{key:"updateFpsInfo",value:function(){this.fps>this.maxFps&&(this.maxFps=this.fps)}},{key:"start",value:function(){void 0!==window.requestAnimationFrame&&(this.isStoped=!1,this.rafId=window.requestAnimationFrame(this.step))}},{key:"stop",value:function(){window.cancelAnimationFrame(this.rafId),this.isStoped=!0}}],[{key:"install",value:function(){BF.install()}}]),e}(),hF=VF&&!function(){var e="_localstorage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch(t){return!0}}();function VF(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}var ZF={length:hF?localStorage.length:0,clear:function(e){try{for(var t=localStorage.length-1;t>=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}}catch(U){}},getItem:function(e){try{return localStorage.getItem(e)}catch(t){return null}},key:function(e){try{return localStorage.key(e)}catch(t){return null}},setItem:function(e,t){try{localStorage.setItem(e,t)}catch(n){}},removeItem:function(e){try{localStorage.removeItem(e)}catch(t){}},isSupport:hF},mF="danger_d_speed";var pF=function(){function e(t,n,U,i){var l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{logger:function(){},openLog:!1};M(this,e),this.bitrate=n,this.segment_duration=i||5e3,this.logger=l.logger,this.openLog=l.openLog,this.cdnHost=t.cdnHost,this._loadedPromise=new RF,this._wasmPromise=new RF,this.config=t,this.autoBitrateOpts=t.autoBitrateOpts||{},this.stall_penalty=this.autoBitrateOpts.stall_penalty||11,this.switch_penalty=this.autoBitrateOpts.switch_penalty||4,this.interval=this.autoBitrateOpts.interval||1e3;var F=t.progressTimer||1e3,a=this.autoBitrateOpts.startInterval||F;this.initInterval=.8*a,this._prealodMethod=t.preloadmethod||0,this._videoWidth=0,this._videoHeight=0,this._hasDeviceInfoChanged=!0,this._maxDefinition=this.autoBitrateOpts.maxDefinition||null,this._underflowDefinition=this.autoBitrateOpts.underflowDefinition||null,this.updateMediaInfos(U,!1)}return w(e,[{key:"onLoadWasm",value:function(){var e=this,t=this.module={onRuntimeInitialized:function(){e._wasmPromise.resolve()}};return(0,this.autoBitrateOpts.module)(t),this._wasmPromise}},{key:"updateMediaInfos",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._heightToDefitionConfig=new Map,this._bitrateToDefitionConfig=new Map,this._definitionToDefitionConfig=new Map,e?(this.mediaInfos=e,this.mediaInfos.dynamic_video_list.forEach((function(e){t._heightToDefitionConfig.set(e.vheight,e),t._bitrateToDefitionConfig.set(e.bitrate,e),t._definitionToDefitionConfig.set(e.definition,e)})),this._maxDefinition&&(this._defaultMaxBitrate=this._getBitrate(this._maxDefinition)),this._underflowDefinition&&(this._underflowBitrate=this._getBitrate(this._underflowDefinition))):n&&console.error("baseAbr mediaInfos null")}},{key:"_getBitrate",value:function(e){var t;return(null===(t=this._definitionToDefitionConfig.get(e))||void 0===t?void 0:t.bitrate)||-1}},{key:"parseMPD",value:function(){if(this.setDebugModel(this.openLog),this.mediaInfos){this.logger("mediaInfos",this.mediaInfos);try{for(var e=[],t=this.mediaInfos.dynamic_video_list,n=0;n<t.length;n++){var U=t[n];e.push({stream_id:"s".concat(n),bandwidth:U.bitrate||U.bandwidth,width:U.vwidth||U.width,height:U.vheight||U.height,codec:U.codecs||U.codec_type||"h264",frame_rate:Number(U.fps)||-1,segment_duration:this.segment_duration})}var i={v_adaptation:e},l=JSON.stringify(i);this.module.ccall("parseMPD","null",["string"],[l])}catch(F){}}else console.warn("mediaInfos is null")}},{key:"_getDefautSpeed",value:function(e){var t=0,n=window.navigator.connection;if(n&&n.downlink)t=1024*navigator.connection.downlink/8,this.logger("initSpeed connect",t);else try{t=parseFloat(ZF.getItem(mF))||0,this.logger("initSpeed connect",t)}catch(U){}return 0===t&&(t=e&&e.historyAvspeed||0,this.logger("initSpeed history",t)),t}},{key:"setDebugModel",value:function(e){this.module._setDebugModel(e)}},{key:"updateBitrate",value:function(e){this.bitrate=e}},{key:"_updatePreloadSupplier",value:function(e,t){this.module._updatePreloadSupplier(e,t)}},{key:"updatePreloadSupplier",value:function(e){var t=this._getDefautSpeed();this._updatePreloadSupplier(t,e)}},{key:"getPreloadBitrate",value:function(){var e,t=null,n=[];try{this.logger("preloadMethod",this._prealodMethod),e=this.module._getPreloadBitrate(this._prealodMethod);for(var U=0;U<5;U++)n.push(this.module.HEAP32[e/Int32Array.BYTES_PER_ELEMENT+U]);var i={bitrate:n[0],pduration:n[1],preloadType:n[2],size:n[3],mediaType:n[4]};return this.logger("getPreloadBitrate",i),i}catch(l){t=null,console.log("getPreloadBitrate",l)}finally{this.module._free(e)}return t}},{key:"_updateDeviceInfo",value:function(e){try{if(this._hasDeviceInfoChanged){var t=window.devicePixelRatio||1;this.module._updateDeviceInfo(this._videoWidth||Number(this.config.width),this._videoHeight||Number(this.config.height),t,e||-1)}this._hasDeviceInfoChanged=!1}catch(n){console.log("_updateDeviceInfo")}}},{key:"preload",value:function(e){this.parseMPD(),this.updatePreloadSupplier(e),this._updateDeviceInfo(-1);var t=window.devicePixelRatio||1;return this.logger("baseAbr updateDeviceInfo width",this._videoWidth||Number(this.config.width),"height",this._videoHeight||Number(this.config.height),"dpr",t),this.getPreloadBitrate()}}]),e}();pF.SPPED_CACHE=mF;var SF="ABR_CHANGE_A",JF="UPDATE_AUTO_DESC",WF="MAX_BUFFER_CHANGE",yF="ABR_LIMIT_BITRATE",bF=0,EF=1,kF=-1,fF=0,vF=1,NF={PLAYBACK_BITRATE:"avg_play_bitrate",DOWNLOAD_BITRATE:"avg_download_bitrate",DOWNLOAD_NETWORK_SPEED:"avg_download_speed",PREDICT_NETWORK_SPEED:"avg_predict_speed",BUFFER_LENGTH:"avg_buffer_length",QOE:"avg_qoe"},TF=function(e){P(n,e);var t=q(n);function n(e,U,i,l,F){var a,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{logger:function(){},openLog:!1};M(this,n),(a=t.call(this,U,i,l,F,r)).player=e,a.timerId=0,a.isOpenAutoDefi=!!a.autoBitrateOpts.isOpenAutoDefi,a._maxDefinition=a.autoBitrateOpts.maxDefinition||null,a.onPlayrateChange=a._onPlayrateChange.bind(A(a)),a.onPlay=a._onPlay.bind(A(a)),a._stop=a.stop.bind(A(a)),a._bufferRange=new Map,a._sortedBufferRange=[],a._lastCheckResolutionStamp=0,a._currentDefinition=null,a._isSeeking=!1,a._waitingStartTime=0,a._stallCount=0,a._seekState=bF,a._stallState=fF,a._videoCurrentTime=0,a._maxBitrate=-1,a.listeners=[{evt:"playbackrateChange",handler:a.onPlayrateChange},{evt:"ended",handler:a._stop},{evt:"error",handler:a._stop},{evt:"timeupdate",handler:a._onTimeUpdate.bind(A(a))},{evt:"addVideoBufferEnd",handler:a._bufferRangeUpdate.bind(A(a))},{evt:"canplay",handler:a._updateAutoDesc.bind(A(a))},{evt:"play",handler:a._onplayStart.bind(A(a))},{evt:WF,handler:a._onMaxBufferChange.bind(A(a))},{evt:"seeking",handler:a._onSeeking.bind(A(a))},{evt:"seeked",handler:a._onSeekEnd.bind(A(a))},{evt:"waiting",handler:a._onWaiting.bind(A(a))},{evt:"playing",handler:a._onPlaying.bind(A(a))}],a._hasStart=!1,a.listeners.forEach((function(e){var t=e.evt,n=e.handler;a.player.on(t,n)})),a._isPaused=!1,a._hasAddFrament=!1,a._eventInfo={local_time_ms:0,internet_speed:0,buffer_length:0,last_bitrate:0,now_bitrate:0,play_speed:1},a._bitrateSet=[],a._generalInfo={},a._currentInAbr=!1,a._hasCalcTimelineLog=!1,a._abr_play_info={start_play_time_ms:0,is_hint:0,playback_info:{internet_speed_record:[],play_bitrate_record:[],buffer_length_record:[],play_speed_record:[],qoe_record:[],qoe_a_record:[],qoe_b_record:[],qoe_c_record:[]}},a._abrMethod=a.autoBitrateOpts.method||0,a.logger("abr: constructor"),a._loopInterval=a.initInterval,a._tickCount=0,a._fps=30,uF.install(),a.startTime=performance.now(),a.logger("time abr",(new Date).getTime()),a._maxCacheTimeVideo=a.config.preloadTime||5,a._maxCacheTimeAudio=a._maxCacheTimeVideo,a._prevDefinitionItem=null,a._currentItem=null,a._switchCount=0,a._switchBitrate=0,a._avgStatItems={};for(var d=Object.keys(NF),Q=0;Q<d.length;Q++){var o=d[Q],s=NF[o];a._avgStatItems[s]=new CF}return a._qoeArgs=[0,0,0,0],a._abrUsed=-1,a._abrAlwaysOn=1,a._prelaodInfo=null,a._hasLogStartInfo=!1,a._hasExecuteAbrAlgo=!1,a._lastExecuteTimeInMs=0,a}return w(n,[{key:"init",value:function(e){return this._mediaList=e,this.isOpenAutoDefi?this.onLoadWasm():this._wasmPromise.resolve(),this._wasmPromise}},{key:"execute",value:function(){return this.listenSize(),this.initFps(),this.onWinElemSizeChange(),this.onPlay()}},{key:"_onSeeking",value:function(){this._isSeeking=!0,this.player.currentTime<this._videoCurrentTime?this._seekState=kF:this._seekState=EF,this.logger("seekState",this._seekState)}},{key:"_onSeekEnd",value:function(){this._isSeeking=!1}},{key:"_onWaiting",value:function(){var e=this;if(!(this._isSeeking||this._waitingStartTime>0)){for(var t=this.player.video.buffered,n=this.player.currentTime,U=!1,i=0;i<t.length;i++){var l=t.start(i),F=t.end(i);if(l<=n&&n<F-1&&this.player.readyState<HTMLVideoElement.HAVE_ENOUGH_DATA){U=!0;break}}U&&(this._defaultMaxBitrate||this._underflowBitrate)&&(this.player.emit(yF),this._underflowBitrate>0&&(this._maxBitrate=this._underflowBitrate)),this._waitingStartTime=(new Date).getTime(),this._stallId=setTimeout((function(){clearTimeout(e._stallId),e._stallCount++,e._stallState=vF}),200)}}},{key:"_onPlaying",value:function(){this._waitingStartTime=0,this._stallState=fF,clearTimeout(this._stallId)}},{key:"initFps",value:function(){this.fpsDetection=new uF,this.fpsDetection.start(),this._fps=this.fpsDetection.fps,this._hasDeviceInfoChanged=!0}},{key:"listenSize",value:function(){var e,t,n,U;this.mediaElem=this.player.video,this._onWinSizeChange=(e=this.onWinElemSizeChange.bind(this),t=1e3,n=!1,function(){for(var i=this,l=arguments.length,F=new Array(l),a=0;a<l;a++)F[a]=arguments[a];var r=F,d=n&&!U;clearTimeout(U),U=setTimeout((function(){U=null,n||e.apply(i,r)}),t),d&&e.apply(i,r)}),window.addEventListener("resize",this._onWinSizeChange)}},{key:"onWinElemSizeChange",value:function(){if(this.mediaElem){var e=this.mediaElem.getBoundingClientRect();this._videoWidth=Math.floor(e.width),this._videoHeight=Math.floor(e.height),this._hasDeviceInfoChanged=!0}}},{key:"_onMaxBufferChange",value:function(e){var t=e.videoCacheTime,n=e.audioCacheTime;this._maxCacheTimeAudio=n,this._maxCacheTimeVideo=t}},{key:"_onTimeUpdate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this._sortedBufferRange&&0!==this._sortedBufferRange.length&&this._currentInAbr){this._videoCurrentTime=this.player.currentTime;var n=Date.now();if(!(n-this._lastCheckResolutionStamp<1e3&&0!==this._lastCheckResolutionStamp)||t){this._lastCheckResolutionStamp=n;for(var U=this.player.currentTime,i=0,l=this._sortedBufferRange.length-1,F=null;i<=l;){var a=Math.floor(i+(l-i)/2),r=this._sortedBufferRange[a];if(U<r.start)l=a-1;else{if(!(U>=r.end)){F=r;break}i=a+1}}if(F){var d=this._bitrateToDefitionConfig.get(F.bandwidth),Q=d&&d.definition;if(this._currentDefinition===Q&&!t||!Q)return void(Q||this.logger("error defintion, mpd配置与接口配置不一致"));this._currentDefinition=Q,this._prevDefinitionItem=this._currentItem,this._currentFps=d.fps,this._currentItem=d,this._emitAutoDescChange(Q,!1,this._currentFps,d)}}}}},{key:"_emitAutoDescChange",value:function(e,t,n,U){this.player.emit(JF,{definition:e,reset:t,fps:n,item:U,pre_item:this._prevDefinitionItem})}},{key:"_onplayStart",value:function(){this._hasStart=!0,this.logger("onplaystart")}},{key:"_updateAutoDesc",value:function(){var e=this;this._currentInAbr&&this._currentDefinition&&(this._updateId=setTimeout((function(){clearTimeout(e._updateId),e._emitAutoDescChange(e._currentDefinition,!1,e._currentFps,e._currentItem)}),0))}},{key:"_bufferRangeUpdate",value:function(e){if(void 0!==e.start){null===this._currentItem&&this._onTimeUpdate(null,!0);var t=e.start;this._hasAddFrament=!0,this._bufferRange.set(t,e);var n=te(this._bufferRange.values());this._sortedBufferRange=n.sort((function(e,t){return e.start-t.start})),this.avgStat(NF.DOWNLOAD_BITRATE,e.bandwidth)}}},{key:"_onPlayrateChange",value:function(){this.module&&this.updateBufferInfo()}},{key:"_onPlay",value:function(){var e=this;if(!this.isOpenAutoDefi)return this.logger("onPlay"),0;var t=0;try{this.logger("abr: loadeddata"),this.updateSwitchInfo(),this.parseMPD(),this.updateDeviceInfo();var U=n.getIsPlayAutoDefi(this.autoBitrateOpts);if(this.isOpenAutoDefi&&U){this._abrUsed=1;var i=this._getDefautSpeed(this.player);t=this._loopAbr(i),this.start(),this.logger("time abr start prgress",(new Date).getTime()),this.logger("time abr costTime",performance.now()-this.startTime),this.logger("abr onplay"),this.startTimer=setTimeout((function(){e._loopInterval=e.interval,clearTimeout(e.startTimer),e.logger("interval change")}),5e3)}}catch(l){this.logger("abr: loadeddata error",l),this.logger("time abr costTime err",performance.now()-this.startTime)}return t}},{key:"start",value:function(){if(this.logger("abr: start"),this._isPaused=!1,!this._hasCalcTimelineLog){var e=1===Math.floor(100*Math.random());this._abr_play_info.is_hint=e?1:0}this._hasCalcTimelineLog=!0,this._loop()}},{key:"_loop",value:function(){var e=this;this._isPaused||(clearTimeout(this.timerId),this.timerId=setTimeout((function(){if(!e.player.paused||!e.player.config.autoplay&&!e._hasStart){var t=e._hasAddFrament?void 0:e._getDefautSpeed(e.player);e._loopAbr(t)}e._loop()}),this._loopInterval))}},{key:"updateDeviceInfo",value:function(){try{if(this.fpsDetection){var e=this.fpsDetection.fps;e!==this._fps&&(this._fps=e,this._hasDeviceInfoChanged=!0)}this._updateDeviceInfo(this._fps)}catch(t){}}},{key:"updateBufferInfo",value:function(e){var t=this.player.playbackRate,n=this.bufferLength,U=e||Math.floor(this.player.downloadSpeed);this._tickCount<5&&0===U&&(U=this._getDefautSpeed(this.player),this.logger("initSpeed fix"));var i=-1===this._maxBitrate?this._defaultMaxBitrate:this._maxBitrate;return this.logger("maxCacheTimeAudio:",this._maxCacheTimeAudio,"maxCacheVideoTime",this._maxCacheTimeVideo,"seekState",this._seekState,"stallState",this._stallState,"maxBitrate",i),this.module._updateBufferInfo(t,this._maxCacheTimeAudio,this._maxCacheTimeVideo,n,n,U,this._seekState,this.player.currentTime,this._stallState,i),this._seekState=bF,this._eventInfo={internet_speed:U,buffer_length:n,last_bitrate:this.bitrate,play_speed:t},this.logger("playRate:",t,"buff:",n,"downloadSpeed:",U),{buffer:n,downloadSpeed:U}}},{key:"updateSwitchInfo",value:function(){var e=(new Date).getTime();this._openTimeMs=e,this._abr_play_info.start_play_time_ms=e;var t,n,U=this.player.config.preloadTime||50,i=(n=(t=e).toString(16)).length<=8?{high:0,low:t}:{high:parseInt(n.substr(0,n.length-8),16),low:parseInt(n.substr(n.length-8),16)},l=this.autoBitrateOpts.noStallCheckTime||5,F=this.openLog;this.logger("openTime:",e,"this.logger",F),this.module._updateSwitchInfo(i.low,i.high,l,F,this.stall_penalty,this.switch_penalty);var a=this._mediaList.video,r=a.map((function(e){var t=e.bandwidth,n=e.bitrate;return t||n}));this._bitrateSet=r.map((function(e,t){return{bitrate:e,codecs:a[t].codecs||a[t].codec_type}})),this._generalInfo={max_cache_time:U,bitrate_set:this._bitrateSet,segment_duration:this.segment_duration,preload_info:{},startup_info:{}}}},{key:"updatePreloadCacheInfo",value:function(e){try{this._prelaodInfo=e,this.logger("update preloadInfo",e),e&&e.item_num!==e.items.length&&(this.logger("preloadInfo invalid"),this._prelaodInfo=null)}catch(t){this.logger("updatePreloadCacheInfo",t),this._prelaodInfo=null}}},{key:"updatePreloadLogInfo",value:function(e){this._generalInfo.preload_info=e||{}}},{key:"_updatePreloadInfo",value:function(){try{var e=this.player.getPreloadInfos();if(e){var t=e.preloadInfo,n=e.abr;this.updatePreloadLogInfo(t),n&&this.updatePreloadCacheInfo(t)}if(this.logger("_updatePreloadInfo preloadinfos",e),null!=this._prelaodInfo){var U=JSON.stringify(this._prelaodInfo);this.module.ccall("updatePreloadInfo","null",["string"],[U])}else this.logger("_updatePreloadInfo preloadinfo null, no preload")}catch(i){this.logger("_updatePreloadInfo err",i)}}},{key:"_loopAbr",value:function(e){var t;this._tickCount++;var n=[];try{this.updateDeviceInfo();var U=this.updateBufferInfo(e),i=U.downloadSpeed,l=U.buffer;t=this.module._getPredictedBitrate(this.bitrate,this._abrMethod);for(var F=0;F<7;F++)n.push(this.module.HEAP32[t/Int32Array.BYTES_PER_ELEMENT+F]);var a=n[0],r=1===n[1];this._eventInfo.now_bitrate=a,this._eventInfo.local_time_ms=(new Date).getTime();var d=0;if(a!==this.bitrate&&0!==a){var Q=this.bitrate;d=Math.abs(Q-a);for(var o=[],s=this.player.video.buffered,c=0;c<s.length;c++)o.push({start:s.start(c),end:s.end(c)});var R=this._videoWidth||Number(this.config.width),B=this._videoHeight||Number(this.config.height),u=(new Date).getTime(),h={speed:"".concat(i," KB/s"),buffer_length:"".concat(l," s"),video_pos:this.player.currentTime,all_buffers:o,seek_state:this._seekState,stall_state:this._stallState,screen_width:R,screen_height:B,dpr:window&&window.devicePixelRatio,playbackRate:this.player.playbackRate,bitrateSet:this._bitrateSet,abrMethod:this._abrMethod,delta:this._hasExecuteAbrAlgo?u-this._lastExecuteTimeInMs:0};this._lastExecuteTimeInMs=u,this._hasExecuteAbrAlgo=!0,this.player.emit(SF,this.bitrate,a,r,JSON.stringify(h)),this.logger("abr loop predicte:",a,"willStall:",r,"switchBitrate",d,"cur",Q),this.bitrate=a}this._hasLogStartInfo||(this._hasLogStartInfo=!0,this._generalInfo.startup_info={predict_bitrate:a,download_speed:i,screen_width:this._videoWidth||Number(this.config.width),screen_height:this._videoHeight||Number(this.config.height),device_pixel_ratio:window&&window.devicePixelRatio,screen_fps:this._fps,startup_method:this._abrMethod}),this.player.emit("ABR_LOOP"),this.onAbrLoop(i,n[2],d,n.slice(3))}catch(V){this.logger("abr error",V),console.log("error",V)}finally{this.module._free(t)}return this.bitrate}},{key:"stop",value:function(){!0===(arguments.length>0&&void 0!==arguments[0]&&arguments[0])&&(this._abrAlwaysOn=-1),clearTimeout(this.timerId),this._isPaused=!0,this.logger("abr: stop")}},{key:"destroy",value:function(){var e=this;this._stop(),this.listeners.forEach((function(t){var n=t.evt,U=t.handler;e.player.off(n,U)})),this.player=null,this._heightToDefitionConfig=null,this._bitrateToDefitionConfig=null,this._bufferRange=null,this._sortedBufferRange=null,this.module=null,clearTimeout(this._stallId),clearTimeout(this._updateId),clearTimeout(this.startTimer),window.removeEventListener("resize",this._onWinSizeChange),this.fpsDetection&&this.fpsDetection.stop(),this._maxBitrate=-1,this.player=null}},{key:"eventInfo",get:function(){return this._eventInfo}},{key:"generalInfo",get:function(){return this._generalInfo}},{key:"bufferLength",get:function(){var e=this.player.getBufferedRange(),t=this.player.video.currentTime,n=e[1]-Math.max(e[0],t);return n=Math.max(0,n).toFixed(2),parseFloat(n)}},{key:"downloadSpeed",get:function(){return Math.floor(this.player.downloadSpeed)}},{key:"nowBitrate",get:function(){return this.bitrate}},{key:"openTimeMs",get:function(){return this._openTimeMs}},{key:"isCurrentInAbr",get:function(){return this._currentInAbr},set:function(e){this._currentInAbr=e}},{key:"onAbrLoop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,U=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(this._qoeArgs=U,this._currentItem&&this.avgStat(NF.PLAYBACK_BITRATE,this._currentItem.bitrate),this.avgStat(NF.DOWNLOAD_NETWORK_SPEED,1e3*e*8),this.avgStat(NF.PREDICT_NETWORK_SPEED,t),this.avgStat(NF.BUFFER_LENGTH,this.bufferLength),this.avgStat(NF.QOE,this.getQoeRelValue(0)),n>0&&(this._switchCount++,this._switchBitrate+=n),this._abr_play_info.is_hint){var i=this,l=((new Date).getTime()-this.openTimeMs)/1e3;l=parseFloat(l.toFixed(2)),this._abr_play_info.playback_info.internet_speed_record.push([l,i.downloadSpeed]),this._abr_play_info.playback_info.play_bitrate_record.push([l,i.nowBitrate]),this._abr_play_info.playback_info.buffer_length_record.push([l,i.bufferLength]),this._abr_play_info.playback_info.play_speed_record.push([l,this.player.playbackRate]),this._abr_play_info.playback_info.qoe_record.push([l,this.getQoeRelValue(0)]),this._abr_play_info.playback_info.qoe_a_record.push([l,this.getQoeRelValue(1)]),this._abr_play_info.playback_info.qoe_b_record.push([l,this.getQoeRelValue(2)]),this._abr_play_info.playback_info.qoe_c_record.push([l,this.getQoeRelValue(3)])}}},{key:"getQoeRelValue",value:function(e){return this._qoeArgs[e]/100}},{key:"avgStat",value:function(e,t){var n=this._avgStatItems[e];n&&n.add(t)}},{key:"getAbrPlayInfo",value:function(){return this._abr_play_info}},{key:"updateAbrMethod",value:function(e){this._abrMethod=e}},{key:"getAbrMethod",value:function(){return this._abrMethod}},{key:"getAbrVVStats",value:function(){for(var e={},t=Object.keys(NF),n=0;n<t.length;n++){var U=t[n],i=NF[U],l=this._avgStatItems[i];e[i]=l.avg()}return e.switch_counts=this._switchCount,e.avg_switch_bitrate=0===this._switchCount?0:this._switchBitrate/this._switchCount,e.abr_qoe=this.getQoeRelValue(0),e.abr_qoe_a=this.getQoeRelValue(1),e.abr_qoe_b=this.getQoeRelValue(2),e.abr_qoe_c=this.getQoeRelValue(3),e.abr_method=this._abrMethod,e.abr_used=this._abrUsed,e.abr_always_on=this._abrAlwaysOn,this.logger("abrVVStats",e),e}}],[{key:"getIsPlayAutoDefi",value:function(e){return!!e.isPlayAutoDefi}}]),n}(pF),CF=function(){function e(){M(this,e),this.total=0,this.count=0}return w(e,[{key:"add",value:function(e){this.total+=e,this.count++}},{key:"avg",value:function(){if(0===this.count)return 0;var e=this.total/this.count;return Math.floor(e)}}]),e}(),gF="FIXED",XF="AUTO",LF=function(){function e(t,n){var U=this;M(this,e),H(this,"_onAbrChange",(function(e,t,n,i){var l=U._pluginInst.player,F=U.bitrateMap[e],a=U.bitrateMap[t],r=F.definition,d=a&&a.definition?a.definition:r;console.log("[ABR] _onAbrChange ",r,d),r!==d&&U._startPlay&&(U._abrSwitchHandler(a),l.emit("ABR_CHANGE",{prev:r,cur:d,prevName:F.definitionName,curName:a.definitionName,abrInfo:i}))})),H(this,"_onAutoDescChange",(function(e){var t=e.definition,n=e.reset,i=e.fps,l=e.item;U.updateAutoDefiDesc(t,n,i,l)})),this._pluginInst=t;var i=this._pluginInst.config.autoBitrateOpts||{};this.isPlayAutoDefi=TF.getIsPlayAutoDefi(i),this.isOpenAutoDefi=!!i.isOpenAutoDefi,this.isCurrentAutoDefi=this.isOpenAutoDefi&&this.isPlayAutoDefi,this.bitrateMap={},this.defiIdMap={},this._abrSwitchHandler=n;var l=this._pluginInst.player;this._startPlay=!1,l.once("playing",this._canplayHandle)}var t;return w(e,[{key:"_canplayHandle",value:function(){this._startPlay=!0}},{key:"_destroyAbr",value:function(){var e=this._pluginInst.player;this.abrInstance&&(e&&e.off(JF,this._onAutoDescChange),this.abrInstance.destroy(),this.abrInstance=null)}},{key:"init",value:(t=Y(x().mark((function e(t){var n,U,i,l;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isOpenAutoDefi){e.next=2;break}return e.abrupt("return",{type:gF});case 2:return n=this._pluginInst,U=n.player,i=n.playerConfig,l=n.config,U.on(JF,this._onAutoDescChange),this.bitrateMap={},this.defiIdMap={},this.abrInstance=new TF(U,l,0,{dynamic_video_list:i.definition.list.concat()},5e3,{logger:ml,openLog:ul}),e.next=9,this.abrInstance.init(t);case 9:U.on(SF,this._onAbrChange),this.abrInstance.isCurrentInAbr=this.isCurrentAutoDefi;case 11:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"execute",value:function(){var e=this.abrInstance.execute();return{bitrate:e,type:-1===e?gF:XF}}},{key:"updateBitrate",value:function(e){this.abrInstance&&this.abrInstance.updateBitrate(e)}},{key:"enable",value:function(){this.abrInstance.start(),this.isCurrentAutoDefi=!0,this.abrInstance.isCurrentInAbr=!0,this.abrInstance._onTimeUpdate(null,!0)}},{key:"disable",value:function(){this.abrInstance&&(this.updateAutoDefiDesc("",!0),this.isCurrentAutoDefi=!1,this.abrInstance.isCurrentInAbr=!1,this.abrInstance.stop(!0))}},{key:"isCurrentInAbr",value:function(){return!!this.abrInstance&&this.abrInstance.isCurrentInAbr}},{key:"updateAutoDefiDesc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,U=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=this._pluginInst,l=i.player,F=(i.config.autoBitrateOpts||{}).autoDefiText||"auto";l.emit("ABR_AUTO_DESC_CHANGE",F,t?void 0:e,n,U),t||(l._currentDefitionFromPlayer={definition:"自动 ".concat(e),item:U})}},{key:"updateAbrCacheData",value:function(){var e=this,t=this._pluginInst,n=t.player,U=t.config,i=t.playerConfig,l=U.autoBitrateOpts||{},F=i.definition.list,a=!1;if(F.forEach((function(t){e.bitrateMap[t.bitrate]={url:t.url,definition:t.definition,definitionName:t.text},e.defiIdMap[t.definition]={bitrate:t.bitrate,definition:t.definition},"auto"!==t.definition&&"自动"!==t.definition||(a=!0)})),this.isOpenAutoDefi,this.isOpenAutoDefi&&!a){var r=l.autoDefiText||"auto",d={definition:"自动",bitrate:n.curDefinition.bitrate,text:r,url:"__auto__",selected:this.isPlayAutoDefi,name:"自动",vwidth:n.curDefinition.vwidth,vheight:n.curDefinition.vheight};i.definition.list.push(d)}}},{key:"destroy",value:function(){var e=this._pluginInst.player;e.off(SF,this._onAbrChange),e.off("playing",this._canplayHandle),this._destroyAbr()}}]),e}(),GF="DESTROYED",xF="xglog_cache",IF="degrade",DF=null,YF=null,MF=null,KF=null,wF=null,HF="h264",PF="h265",jF="h266",zF=0,OF=function(e){P(r,e);var t,n,U,i,l,F,a=q(r);function r(e){var t,n,U;return M(this,r),H(A(U=a.call(this,e)),"_onChangeConfig",(function(e){if(e&&(U.setConfig(e),e.nextBufferLength))try{U._onTimeUpdate()}catch(t){}})),H(A(U),"fpsStuckHandle",(function(e){var t=A(U),n=t.player,i=t.mse;if(U.fpsStuckTime||(U.fpsStuckTime=e.currentTime,U.log(Ht.LOG,"fpsStuckHandle, currentTime,",e.currentTime)),U.fpsStuckTime>0){var l=n.bufferedPoint;i.clearOpQueues(tn.VIDEO),U.log(Ht.LOG,"fpsStuckHandle, remove,",l.start,"-",l.end,",seekTime,",U.fpsStuckTime),null==i||i.remove(tn.VIDEO,l.start,l.end).then((function(){n.currentTime=U.fpsStuckTime,U.fpsStuckTime=null}))}})),H(A(U),"_replayHook",(function(e){})),H(A(U),"_retryHook",(function(){var e=A(U),t=e.player,n=e.playerConfig,i=t.paused;U.softDecode?t.vtype="MP4_MSE_SOFT":t.vtype="MP4_MSE",U._defInited=!1;var l=t.currentTime||0;return U.log(Ht.LOG,"retryHook ",n.vid,U.codecType,l),U.__onmetadataHandle=function(){l&&(t.currentTime=l,U.log(Ht.LOG,"retryHook update currentTime",n.vid,U.codecType,l)),i?t.pause():t.play(),t.video.removeEventListener("loadedmetadata",U.__onmetadataHandle),U.__onmetadataHandle=null},t.video.addEventListener("loadedmetadata",U.__onmetadataHandle),U.destroyMSE(),U._reset(),U.playerStartInit(n.url),!1})),H(A(U),"_playHook",(function(e){U._usePaused=!1,U._canceLoading=!1,U.log(Ht.LOG,"playHook"),U._startProgress()})),H(A(U),"_pauseHook",(function(e){var t;U._usePaused=!0;for(var n=arguments.length,i=new Array(n>1?n-1:0),l=1;l<n;l++)i[l-1]=arguments[l];U.log(Ht.LOG,"pauseHook",i[0],null===(t=U.player)||void 0===t?void 0:t.currentTime),i.indexOf(null==Gn?void 0:Gn.BUFFER_CONTROLS)<0&&(clearTimeout(U.checkResumePlayTimer),U.checkResumePlayTimer=null,U.log(Ht.LOG,"pause hook clear buffer_control state")),U._loadStuckCheck()})),H(A(U),"abrSwitchURL",function(){var e=Y(x().mark((function e(t){var n,i,l,F,a,r;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=A(U),i=n.playerConfig,l=i.definition.list,F=0,a=0;case 4:if(!(a<l.length)){e.next=11;break}if(t.definition!==l[a].definition){e.next=8;break}return F=a,e.abrupt("break",11);case 8:a++,e.next=4;break;case 11:r=U.player.curDefinition,U.changeDefinition(l[F],r,!0);case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),H(A(U),"timerHandle",(function(){U._requestTimer&&U._onTimeUpdate()})),H(A(U),"changeDefineCanPlay",(function(e,t,n,i){var l=A(U).player;l.ended?l.currentTime=0:(l.currentTime=U._changeDefState?U._changeDefState.currentTime:e,(U._changeDefState?U._changeDefState.paused:t)?l.pause():l.play(),U._changeDefState=null,l.emit(X.Events.AFTER_DEFINITION_CHANGE,{from:n,to:i}))})),H(A(U),"changeDefinition",(function(e,t,n){var i=A(U),l=i.player,F=i.playerConfig,a=i.mp4,r=i.config;if(t||(t=l.curDefinition),U._MSEError=!1,U._isReceiveEndedEvent=!1,U.useVideoLoad)return"__auto__"===e.url&&(e.url=l.config.definition.list[0].url),void MF.call(U.player,e,t);var d=l.definitionList.filter((function(t){return t.definition===e.definition}));if(d.length>0&&(e=d[0]),U._handlerUrl(e.url),e._mainURL=r._mainURL,e._backupURL=r._backupURL,!U._switchBitRateWay||n){var Q="自动"===e.definition||"auto"===e.definition;if(n)U.log(Ht.LOG,"[switchBitrate:ABR], ready to switch bitRate, ",e.bitrate,e.definition);else{var o,s=!1;if(Q)U._abrService&&U._abrService.enable(),s=!0;else{var c;U._abrService&&U._abrService.disable();var R=null===(c=F.definition)||void 0===c?void 0:c.list;if(R&&(!e.bitrate||!e.uri||!e.size||!e.duration))for(var B=0;B<R.length;B++)if(e.definition===R[B].definition){e.bitrate=R[B].bitrate,e.uri=R[B].uri||t.uri,e.size=R[B].size||bl.getFileSize(e.bitrate,F.duration),e.duration=R[B].duration||U.playerConfig.duration;break}}null===(o=U.adaptRange)||void 0===o||o.updateBitrate(e.bitrate),l.emit(X.Events.DEFINITION_CHANGE,{from:t,to:e}),setTimeout((function(){U._abrService&&U._abrService.updateAutoDefiDesc(l.curDefinition.definition,!Q)})),s&&(e=l.curDefinition),U.log(Ht.LOG,"[switchBitrate:CBS],switch bitRate, ",e.bitrate,e.definition)}if(l.curDefinition=e,U.mp4.clearPCDNNodeList(),U.checkPCDN(),a){["keyValue","kid","secretKey","drm","getLicenseUrl","drmKeyToken","sessionId"].forEach((function(t){r[t]=e[t]}));var u=U.config,h=u.kid,V=u.drmKeyToken,Z=u.secretKey,m=u.keyValue,p=u.drm,S=null;h||V||Z||m||p?(U._secretkey?U._secretkey.updateConfig(U.config):(U._secretkey=new cF.XGSecretKey(U.config),U._secretkey.on(cF.EVENT_EME.ERROR,U._errorHandler)),S=U._secretkey.getLicenseSecret()):(S=new FF).resolve(),S.then(function(){var i=Y(x().mark((function i(d){var Q,o,s,c,R,B,u,h,V,Z;return x().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(null!=d&&d.secretKey&&(!r.keyValue&&(r.secretKey=d.secretKey),r.decryptKey=d.decryptKey),F.url=e.url,o=0,s=!1,U._abrService&&U._abrService.isCurrentInAbr()?(c=l.getBufferedRange(l.buffered2),(o=c[1])<l.currentTime&&(o=l.currentTime,U.log(Ht.LOG,"abr,bufferRange is invalid, adjust",c,",timeStart,",o))):(o=l.currentTime,s=!0),R=a.getFragmentIdx(o),(B=U.getAdaptTimeRangeIdx(R))<0&&(B=U._curLoadSegmentIdx),U.log(Ht.LOG,"switchBitrate point: ".concat(B),"startTime: ".concat(a.adaptTimeRange[B].startTime),"currentTime: ".concat(l.currentTime,", timeStart: ").concat(o)),s&&l.emit("definitionSwitchTime",a.adaptTimeRange[B].startTime+1),u=Math.max(a.adaptTimeRange[B].startTime,l.currentTime),U._definitionChangePointInfo={changeStartTime:u,changeInfo:{from:t,to:e}},U.changeState("changeDefinition",{abr:n,fragIndex:B,startTime:a.adaptTimeRange[B].startTime,currentTime:l.currentTime}),!a){i.next=19;break}return a.updateChangeBitRateTime(o),U.canDownload=!1,i.next=18,a.cancelLoading();case 18:a.metaLoading&&(a.metaLoading=!1);case 19:return U._removeBuffeEndTime=a.adaptTimeRange[B].startTime,U._isChangeDefinition=!0,h=l.getBufferedRange(l.buffered),V=null===(Q=U._abrService)||void 0===Q?void 0:Q.isCurrentInAbr(),!(h[1]>0&&h[1]-l.currentTime>5)||U._abrService&&V||(U.mse.clearOpQueues(tn.VIDEO),U.removeBuffer(tn.VIDEO,l.currentTime+5,h[1])),U.log(Ht.LOG,"switchBitrate: resetFragmentLoadState,",B),a.resetFragmentLoadState(B),U._curLoadSegmentIdx=B,i.next=29,U.mp4.changeBitRate(e);case 29:U._setCurrentDefinition(e.bitrate),U._emitDefinitionChangeDetailEvent(o),U.canDownload=!0,U._onTimeUpdate(),Z={width:e.width||e.vwidth,height:e.height||e.vheight},l.emit("RESOLUTION_UPDATE",Z);case 35:case"end":return i.stop()}}),i)})));return function(e){return i.apply(this,arguments)}}()).catch((function(t){U.log(Ht.ERROR,"switchBitrate: GET_LICENSE_ERROR,",null==t?void 0:t.message);var n=new X.Errors(U.player,{errorType:Ql.DRM,errorCode:dl.drm,errorMessage:(null==t?void 0:t.message)||"GET_LICENSE_ERROR",vid:F.vid});t.errorType="GET_LICENSE_ERROR",U.emit("GET_LICENSE_ERROR",n),U.changeState("LICENSE_ERROR",{d:e.definition})}))}}else U.oldChangeDefinition(e,t)})),H(A(U),"_onVideoError",(function(e){var t,n,i,l,F=A(U).player;U.changeState("video_error",{code:e.code||(null==F||null===(t=F.video)||void 0===t||null===(n=t.error)||void 0===n?void 0:n.code),message:e.message||(null==F||null===(i=F.video)||void 0===i||null===(l=i.error)||void 0===l?void 0:l.message),videoType:U.useVideoLoad})})),H(A(U),"removeBuffer",(function(e,t,n,i){var l,F=U.getBufferDur();null===(l=U.mse)||void 0===l||l.remove(e,t,n).then((function(){var e=U.getBufferDur(),t=F-e;t>0&&(U.emit("removeBuffer",{removeDur:t}),U.log(Ht.LOG,"removeBuffer dur,",t)),i&&i()}))})),H(A(U),"_onPlaying",(function(){var e,t;U.changeState("playing",{curtime:U.player.currentTime,buffer:JSON.stringify(null===(e=U.player)||void 0===e||null===(t=e.buffered2)||void 0===t?void 0:t.bufferedList)}),U._waitAdjustTimeCnt>0&&U._waitInBufferTimer&&(U._waitAdjustTimeCnt-=1,U.changeState("waitInBuffer_resume"),U.log(Ht.WARN,"[waitInBuffer resume play], waitAdjustTimeCnt,",U._waitAdjustTimeCnt)),clearTimeout(U._waitInBufferTimer),U._waitInBufferTimer=null;var n=A(U),i=n.mp4,l=n.player,F=U.config.resumePlayWaterLevel;if(i){if(!(i&&i.meta&&i.meta.duration-l.currentTime<=F)&&(U.waitLevelStartTime<0&&(U.waitLevelStartTime=l.currentTime),U.playFlag||(U.playFlag=!0),F>0&&l.currentTime-U.waitLevelStartTime>=2)){var a=l.getBufferedRange(l.buffered2);a[1]>0&&a[1]-l.currentTime<F?(l.paused||(U.emit(kn,{type:fn}),l.pause(null==Gn?void 0:Gn.BUFFER_CONTROLS),U.log(Ht.LOG,"[!!!!!buffer not rich, pause],currentTime, ",l.currentTime,", bufferEnd,",a[1])),clearTimeout(U.checkResumePlayTimer),U.checkResumePlayTimer=setTimeout(U._onPlaying,F/2*1e3)):l.isBufferControlPaused&&l.paused&&(U.log(Ht.LOG,"[!!!!!buffer rich, play],, currentTime, ",l.currentTime,", bufferEnd,",a[1]),clearTimeout(U.checkResumePlayTimer),U.checkResumePlayTimer=null,l.isBufferControlPaused=!1,U.emit(kn,{type:vn}),l.play())}}else U.checkResumePlayTimer>0&&(clearTimeout(U.checkResumePlayTimer),U.checkResumePlayTimer=null,l.isBufferControlPaused&&(l.isBufferControlPaused=!1),l.paused&&l.play())})),H(A(U),"_lowDecoder",(function(){var e="function"==typeof U.player.video.getStats?U.player.video.getStats():null;U.log(Ht.WARN,"H265 lowdecode: ".concat(U.playerConfig.vid," "),e,", h265Degrade, ",U.config.h265Degrade),U.config.h265Degrade&&U._onDegrade()})),H(A(U),"_onError",(function(e){U._onDegrade(e)})),H(A(U),"_onDegrade",(function(e){var t,n,i=A(U),l=i.player,F=i.playerConfig,a=i.config;l.video.removeEventListener("lowdecode",U._onDegrade),l.video.removeEventListener("error",U._onError),null===(t=U.mp4)||void 0===t||t.destroy();var r=l.currentTime;if(U.log(Ht.WARN,"[h265 degrade], vid,",F.vid,",currtime,",r),U.emit(IF,{errc:null==e?void 0:e.errorCode,err_msg:(null==e?void 0:e.errorMessage)||(null==e?void 0:e.message),codec_type:U.codecType,media_type:F.mediaType}),null!=a&&a.H264Config){var d=a.H264Config;["drm","getLicenseUrl","kid","keyValue","secretKey","isEncrypt","useEME"].forEach((function(e){a[e]=d[e]||null}))}var Q={mp4encryptplayer:a,mediaType:"video",codecType:HF};(null==F||null===(n=F.H264DefinitionList)||void 0===n?void 0:n.length)>0?(l.config.definition.list=F.H264DefinitionList,l.config.url=F.H264DefinitionList[0].url,l.config.defaultBitrate=F.H264DefinitionList[0].bitrate,l.config.defaultDefinition=F.H264DefinitionList[0].definition,U.isH265DegradeH264=!0,l.playNext(Q),U.__onmetadataHandle=function(){l.currentTime=r,U.isH265DegradeH264=!1,U.log(Ht.LOG,"H265DegradeH264 update currentTime",r),l.video.removeEventListener("loadedmetadata",U.__onmetadataHandle),U.__onmetadataHandle=null},l.video.addEventListener("loadedmetadata",U.__onmetadataHandle)):(l.pause(),U._reset(),U.checkReUseMSE(!1),U.log(Ht.ERROR,"H265 error,degrade h264 but no h264 url"),U.emit("error",e))})),H(A(U),"_onMp4MetaReady",(function(e){if(U.mp4){ul&&console.log(">>>>_onMp4MetaReady",bl.nowTime()),U.firstFrameTime.metaload=U.mp4.firstFrameTime.metaload,U.firstFrameTime.bitrate=U.player.curDefinition.bitrate;var t=U._checkMetaInfo(e);if(t)U._errorHandler(t);else{try{U._initEME(U.mp4,e),U.softDecode?(U.log(Ht.LOG,"initH265MseProxy"),U._initH265MseProxy()):U.player.video instanceof HTMLVideoElement&&(U.log(Ht.LOG,"initMse"),U._initMse(e)),U._initPromise.resolve()}catch(i){return void U._errorHandler(new X.Errors(U.player,{errorType:Ql.MEDIA,errorCode:dl.eme_hijack,errorMessage:(null==i?void 0:i.message)||"eme or mse catch err",vid:U.playerConfig.vid}))}if(U.mp4&&U.mp4.timeRange){var n=[];U.mp4.timeRange.every((function(e){return n.push({startTime:e.startTime,endTime:e.endTime}),!0})),U.emit("KEYFRAMETIME",n)}U._loadData()}}})),H(A(U),"_onMp4Error",function(){var e=Y(x().mark((function e(t,n){var i;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=U.playerConfig.vid,console.error("[Index] _onMp4Error",i,t),U.changeState("MP4_ERROR",{state:n,errmsg:(null==t?void 0:t.errorMessage)||(null==t?void 0:t.message),errorType:null==t?void 0:t.errorType,code:null==t?void 0:t.errorCode,httpCode:null==t?void 0:t.httpCode}),U._errorHandler(t);case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),H(A(U),"_onMp4Progress",(function(e){U.emit("progress_event",e)})),H(A(U),"_onMp4DataCallBack",(function(){U._isMseInit&&U._onTimeUpdate()})),H(A(U),"_updateDrmConfig",(function(e){var t=A(U),n=t.config;t.mp4.updateSecretKey(n.useEME,n.secretKey,n.decryptKey,n.keyValue),U._secretkey&&e.kid&&U._secretkey.updateKid(e.kid)})),H(A(U),"_updateMSE",(function(e){A(U).player.video instanceof HTMLVideoElement&&(U.log(Ht.LOG,"updateMse",e.videoCodec),U._initMse(e))})),H(A(U),"_onVideoTimeUpdate",(function(){var e,t,n,i,l,F,a=A(U),r=a.mse,d=a.player;(U.waitLevelStartTime<0&&(U.waitLevelStartTime=d.currentTime),U.checkReStartTimer(),U._isEnded(),d.isSeeking&&(d.isSeeking=!1),!U.useVideoLoad&&r&&U._removeBuffeEndTime>0&&d.currentTime>U._removeBuffeEndTime+1&&(U.log(Ht.LOG,"remove old bitrate buffer",U._removeBuffeEndTime),U.removeBuffer(tn.VIDEO,0,U._removeBuffeEndTime-1),U._removeBuffeEndTime=0),U._definitionChangePointInfo&&d.currentTime>U._definitionChangePointInfo.changeStartTime)&&(d.emit(X.Events.AFTER_DEFINITION_CHANGE,U._definitionChangePointInfo.changeInfo),U.log(Ht.LOG,X.Events.AFTER_DEFINITION_CHANGE,", currentTime,",d.currentTime,",from ",null===(e=U._definitionChangePointInfo)||void 0===e||null===(t=e.changeInfo)||void 0===t||null===(n=t.from)||void 0===n?void 0:n.definition," to ",null===(i=U._definitionChangePointInfo)||void 0===i||null===(l=i.changeInfo)||void 0===l||null===(F=l.to)||void 0===F?void 0:F.definition),U._definitionChangePointInfo=null);U.useVideoLoad||null!==U._requestTimer||!U._offineLine&&!U._canceLoading&&U._startProgress()})),H(A(U),"_onBufferedReset",(function(){U.mp4&&U.mp4.videoTrak&&U.mp4.resetFragmentLoadState(0)})),H(A(U),"_onOnlineHandler",(function(){U._offineLine=!1;var e=A(U),t=e.playerConfig,n=e.player,i=n.currentTime,l=n.paused;U.log(Ht.LOG,"online useVideoLoad:",U.useVideoLoad,U._hasStartProgressBack),U.useVideoLoad?(U.__onmetadataHandle=function(){i&&(n.currentTime=i),U.log(Ht.LOG,"onOnlineHandler update currentTime",t.vid,U.codecType,U._currentTime),l?n.pause():n.play(),n.video.removeEventListener("loadedmetadata",U.__onmetadataHandle),U.__onmetadataHandle=null},n.video.addEventListener("loadedmetadata",U.__onmetadataHandle),U._setPlayerSrc(t.url)):(U._hasStartProgressBack&&U._startProgress(),U._hasStartProgressBack=!1)})),H(A(U),"_onOfflineHandler",(function(){U._offineLine=!0,U.log(Ht.LOG,"offline, ",U._hasStartProgress),U._hasStartProgress&&(U._stopProgress(),U._hasStartProgressBack=!0)})),H(A(U),"_loadDataSuccess",(function(e){if(!U.isDestroy&&(U.mse||U.mseProxy)){U.firstFrameTime.startload_stmux<0&&(U.firstFrameTime.startload_stmux=U.mp4.firstFrameTime.startMuxTime,U.firstFrameTime.firstmux=U.mp4.firstFrameTime.firstmux),U.firstFrameTime.loadst_loadeddata<0&&(U.firstFrameTime.loaddata=bl.nowTime()-U.loadstart);try{var t,n,i;e.initSeg&&(U._appendInitSeg(e.initSeg),(!e.buffer||e.buffer.byteLength<1)&&U._onTimeUpdate());var l=e.buffer,F=e.state,a=e.context,r=e.videoTrack,d=e.audioTrack;U.debugInfo.loadIndx=a?a.fragIndex:-1;var Q=null===(t=U.mp4)||void 0===t||null===(n=t.adaptTimeRange[a.fragIndex])||void 0===n||null===(i=n.timeRangeIdx)||void 0===i?void 0:i[1];if(U.mse&&F&&(!l||l.byteLength<=0)&&Q>=U.mp4.timeRange.length){var o=U.player.buffered;o&&(null==o?void 0:o.length)>0&&(U.bufferEndTime=o.end(o.length-1)),U._isEnded(),U.log(Ht.LOG,"loaded ended !!!==>>>",JSON.stringify(a.range),", fragIndex,",a.fragIndex,", bufferEndTime,",U.bufferEndTime,",meta_duration,",U.mp4.meta.duration)}if(l&&U.mse){if(l&&l.byteLength>0){U._appendBuffer(tn.VIDEO,l,a,F);var s=U.getDataBitRate(a.fragIndex);U.player.emit("addVideoBufferEnd",{start:Math.floor(a.startPts),end:a.endPts,bandwidth:s.bitrate})}}else U.mseProxy&&(r&&r.samples.length>0||d&&d.samples.length>0)&&(U.log(Ht.LOG,"[livevideo] append,index,",a.fragIndex,",range,",JSON.stringify(e.context.range),", timeRange,",a.timeRange),U.mseProxy.appendBuffer(r,d))}catch(R){U.changeState("APPEND_DATA_ERROR",{errMsg:null==R?void 0:R.message});var c=new X.Errors(U.player,{errorType:Ql.MEDIA,errorCode:dl.mseAppend,vid:U.playerConfig.vid,errorMessage:R.message,mediaError:{code:dl.mseAppend,message:R.message}});U._errorHandler(c)}null!=e&&e.state&&U._onTimeUpdate()}})),H(A(U),"_onWaiting",(function(){var e,t,n,i;U.checkReStartTimer(),U._isEnded(),U.changeState("waiting",{curtime:U.player.currentTime,buffer:JSON.stringify(null===(e=U.player)||void 0===e||null===(t=e.buffered2)||void 0===t?void 0:t.bufferedList)});var l=A(U),F=l.player,a=l.config,r=l.playerConfig,d=l.mp4;clearTimeout(U._waitInBufferTimer),U._waitInBufferTimer=null;var Q=F.currentTime;U.log(Ht.LOG,",[onWaiting],curTime, ",Q,",buffer,",JSON.stringify(null==F||null===(n=F.buffered2)||void 0===n?void 0:n.bufferedList),",dur,",null==d||null===(i=d.meta)||void 0===i?void 0:i.duration);var o=F.bufferedPoint;o.end>0&&o.end-Q>=2?U._waitAdjustTimeCnt<a.waitJampBufferMaxCnt?U._waitInBufferTimer=setTimeout((function(){U._waitAdjustTimeCnt++,U.changeState("waitInBuffer_seek",{waitAdjustTimeCnt:U._waitAdjustTimeCnt,curTime:Q}),F.currentTime=F.currentTime+.5}),a.waitingInBufferTimeOut):U._errorHandler(new X.Errors(U.player,{errorType:Ql.RUNTIME,errorCode:dl.waitTimeout,errorMessage:"onWaitTimeout_in_buffer",vid:r.vid})):U._loadStuckCheck()})),H(A(U),"_onEnded",(function(){U.log(Ht.LOG,"[player.onEnded], stopProgress"),U._stopProgress()})),H(A(U),"_errorHandler",(function(e){var t,n,i,l=A(U),F=l.player,a=l.playerConfig,r=l.preLoadData;if(F&&!U.useVideoLoad){if(e.errorCode===dl[403]&&U._emitExpireEvent(e)&&U.config.urlExpireDisableErrorEvent)return U.log(Ht.LOG,"_errorHandler urlExpireDisableErrorEvent",U.config.urlExpireDisableErrorEvent,",errorCode,",e.errorCode),U._stopProgress(),void U.emit(xF);if("object"!==I(e)){var d={};d.err=e,e=d}e.ext||(e.ext={});var Q=F.paused;if(e.ext.vid=a.vid,e.ext.preloadHit=U.hitpreload?1:0,e.ext.preloadCached=r?r.duration:0,e.ext.timerStep=Math.max.apply(Math,te(U.timerStepList)),e.ext.codectype=U.codecType,e.errorMessage=e.message,e=new X.Errors(F,e),U.log(Ht.ERROR,"_errorHandle","preState is ".concat(Q),null===(t=e)||void 0===t?void 0:t.errorCode,(null===(n=e)||void 0===n?void 0:n.message)||(null===(i=e)||void 0===i?void 0:i.errorMessage)),!e.url&&(e.url=F.src),U.player.emit("playCatch",U.player.vtype,e),e.errd&&"object"===I(e.errd)&&U.mp4&&(e.errd.url=U.mp4.url,e.url=U.mp4.url),U.emit("DATA_REPORT",e),U.mp4&&U.mp4.cancelLoading(),U._abrService&&U._abrService.disable(),U.canDownload=!1,U.mp4&&U.mp4.bufferCache&&U.mp4.bufferCache.clear(),U.checkIsDegraded(e))U.player.vtype="MP4_2",U._initPromise&&U.removeAndRejectInitPromise(e),U._startDegradedPlayback(e,Q);else{var o,s,c;U.log(Ht.ERROR,"final error !!!!, ",a.vid,null===(o=e)||void 0===o?void 0:o.errorCode,(null===(s=e)||void 0===s?void 0:s.errorMessage)||(null===(c=e)||void 0===c?void 0:c.message)),U.player.pause(),U._reset();var R=F.currentTime;U.destroyMSE(),F.currentTime=R,U.emit("error",e)}U.emit(xF)}})),H(A(U),"_onSeeking",Y(x().mark((function e(){var t,n,i,l,F,a,r,d,Q,o,s,c,R,B,u,h;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U._isReceiveEndedEvent=!1,!U.useVideoLoad){e.next=3;break}return e.abrupt("return");case 3:if(i=A(U),l=i.player,F=i.mp4,U.waitLevelStartTime=l.currentTime,a=l.currentTime,U.changeState("seeking",{curTime:a}),U.log(Ht.LOG,"[seeking], curTime,",a,",buffer,",JSON.stringify(l.buffered2.bufferedList)),F&&F.meta){e.next=10;break}return e.abrupt("return");case 10:if(U._startProgress(),U.endofstream=!1,F.bufferUsedPos=0,F.metaLoading=!1,U._definitionChangePointInfo&&(U._definitionChangePointInfo.changeStartTime=a,U.log("[seeking update definitionChangePointInfo.changeStartTime]",a)),F.changeBitRateTime>0&&(F.updateChangeBitRateTime(a),U.log("[seeking update changeBitRateTime]",a)),r=l.bufferedPoint,d=!1,Q=0,!(r.end>0)){e.next=29;break}if(d=!0,!(F.meta.duration-r.end<.5)){e.next=24;break}return U.log("[seeking in buffered range], buffer end,",r.end,", duration,",null==F||null===(o=F.meta)||void 0===o?void 0:o.duration),e.abrupt("return");case 24:s=F.getFragmentIdx(r.end),Q=U.getAdaptTimeRangeIdx(s),F.seekTime=r.end,Q<0&&(Q=U._curLoadSegmentIdx),U.log(Ht.LOG,"[seeking in buffered range], seekTime ",a,",bufferRange,",r.start,"-",r.end,", fragIndex,",Q);case 29:if(d||(F.seekTime=a,c=F.getFragmentIdx(a),Q=U.getAdaptTimeRangeIdx(c),U.log(Ht.LOG,"[seekTime out buffer range], srcFragIndex,",c,", fragIndex,",Q),Q<0&&(Q=U._curLoadSegmentIdx),U.log(Ht.LOG,"[seekTime out buffer range], curTime,",a,", srcFragIndex,",c,", adaptIdx,",Q),R=A(U),(B=R.mse)&&null!=B&&B.isFull()&&(u=l.buffered2.bufferedList,h=u[u.length-1],U._checkRemoveSourceBuffer([h.start,h.end],l.currentTime,!0,!0))),U._curLoadSegmentIdx!==Q||null===(t=F.adaptTimeRange[Q])||void 0===t||!t.isLoading){e.next=33;break}return U.log(Ht.LOG,"[seeking in buffered range], seek fragIndex is current load segmentIdx",Q),e.abrupt("return");case 33:return F.canDownload=!1,e.next=36,F.cancelLoading();case 36:F.resetFragmentLoadState(Q),U.log(Ht.LOG,"[seekTime resetFragmentLoadState],adaptIdx,",Q,"mp4.seekTime",F.seekTime,JSON.stringify(U.mp4.adaptTimeRange)),null===(n=U.mse)||void 0===n||n.clearOpQueues(tn.VIDEO),U._curLoadSegmentIdx=Q,U.canDownload=!0,U._onTimeUpdate(),U._isEnded();case 43:case"end":return e.stop()}}),e)})))),U.initLog(null===(t=U.player.playerId)||void 0===t||null===(n=t.toString())||void 0===n?void 0:n.slice(-4)),U._pendingPromises=[],U._allInitPromise=new FF,U._isInit=!1,U._isEventInit=!1,U.playerId=U.player.playerId,U.preloader=null,U.log(Ht.LOG,"playerId",U.playerId,U.playerConfig.vid),U._useVideoLoad=!1,U.mse=null,U.mp4=null,U.eme=null,U._isMseInit=!1,U._corePromise=null,U._initPromise=null,U._hasStartProgress=!1,U._hasStartProgressBack=!1,U._curLoadSegmentIdx=0,U._abrService=null,U._checkRemoveBufferLastTime=bl.nowTime(),U.playFlag=!1,U.config.resumePlayWaterLevel=Math.min(U.config.minBufferLength,U.config.resumePlayWaterLevel),U.checkResumePlayTimer=null,U._MSEError=!1,U.loadstart=-1,U._loadStartEventTime=-1,U._waitAdjustTimeCnt=0,U._waitInBufferTimer=null,U.codecType=U.playerConfig.codecType?U.playerConfig.codecType.toLowerCase():HF,U.playerConfig.vtype&&(U._vtype=U.playerConfig.vtype.toUpperCase()),U.isActive=!0,U.firstFrameTime={newplayer:bl.nowTime(),initmse_sbopen:-1,mseopen:-1,metaload:-1,metaready_initsegend:-1,startload_stmux:-1,firstmux:-1,apcnt:0,aplen:0,data_ap:-1,loaded_data:-1,loadst_loadeddata:-1,new_loadeddata:-1,bitrate:-1,hitpreload:-1,first_gop_req_cnt:-1},U.debugInfo={},U.states=[],U.removeVideoList=[],U._lastCheckTime=bl.nowTime(),U._lastCheckLagTime=bl.nowTime(),U._changeDefState=null,U._defInited=!1,U._removeBuffeEndTime=0,U._isChangeDefinition=!1,U._lastTimeupdateTime2=0,U.waitLevelStartTime=-1,U.preLoadData=null,U.forPreloadTimeCache=null,U._usePaused=!1,U.endofstream=!1,U.bufferEndTime=-1,U.hitpreload=!1,U.isH265DegradeH264=!1,U.loadstartTimer=null,U.loadeddataTimer=null,U.canplayTimer=null,U.adaptRangeRes=[],U._isReceiveEndedEvent=!1,U._checkEndedTimer=null,U._definitionChangePointInfo=null,wF&&(U.player.preloader=wF),U._lastTimeupdateTime2=0,U.waitLevelStartTime=-1,U.timerStepList=[],window&&window.location.href.indexOf("playerInstance=true")>-1&&(void 0===window.mp4PlayerInstanceList&&(window.mp4PlayerInstanceList=[]),window.mp4PlayerInstanceList.push(U.player)),U._isH265SoftDecoder=!1,U._beforeLoadStartCostTime=0,U._requestTimer=null,U._updatePropsByConfig(),U}return w(r,[{key:"setConfig",value:function(e){this.config=Object.assign(this.config,e),this._updatePropsByConfig()}},{key:"_updatePropsByConfig",value:function(){this._maxBufferLength=this.config.maxBufferLength,this._minBufferLength=this.config.minBufferLength,this._nextBufferLength=this.config.nextBufferLength,this._switchBitRateWay=this.config.switchBitRateWay,this._tickInSeconds=this.config.tickInSeconds}},{key:"initLog",value:function(e){var t=this.config.logCacheConfig,n=t.logCacheLevel,U=t.logMaxSize;this.logger=new jt(r.pluginName+e,{logCacheLevel:n,logMaxSize:U}),ul&&jt.enable()}},{key:"playerlogger",value:function(e){e?jt.enable():jt.disable()}},{key:"afterCreate",value:function(){var e=this,t=this.playerConfig,n=this.config,U=this.player;n.width=t.width||0,n.height=t.height||0,t.vid=t.vid||n.vid,tn.isSupported('video/mp4; codecs="avc1.64001E, mp4a.40.5"')&&(void 0===n.supportHevc&&null!==X.Sniffer&&void 0!==X.Sniffer&&X.Sniffer.isHevcSupported&&X.Sniffer.isHevcSupported()&&this.player.video instanceof HTMLVideoElement&&(n.supportHevc=!0),n.supportVvcc=!("undefined"==typeof MediaSource||!MediaSource.isTypeSupported)&&MediaSource.isTypeSupported("video/mp4;codecs=bvc2.1.6.L93.B0"),this.softDecode?U.vtype="MP4_MSE_SOFT":U.vtype="MP4_MSE",UF()&&!this.softDecode||(n.useEME=!1),n.useEME=!(!1===n.useEME),this.checkConfig(),n.onlyInit&&(t.autoplay=!1,t.videoInit=!1,this._hasStartProgress=!1,this._hasStartProgressBack=!1),t.useWaterLevel&&(!t.userGestureEventMiddleware&&(t.userGestureEventMiddleware=pl),!t.videoEventMiddleware&&U.setEventsMiddleware(Sl)),this._proxyPlayer(),U.useHooks("replay",this._replayHook),U.useHooks("play",this._playHook),U.useHooks("pause",this._pauseHook),U.useHooks("retry",this._retryHook),U.video.addEventListener(yn.BUFFERED_RESET,this._onBufferedReset),this._bindNetworkStateChange(),this.on(X.Events.TIME_UPDATE,this._onVideoTimeUpdate),this.on(X.Events.LOADED_DATA,(function(){var t;e.changeState("LOADED_DATA"),e.deleteVideo(),e.mp4&&e.mp4.updateLoadedDataDone(),e._firstFrameTime(),e._onTimeUpdate(),e.firstFrameTime.loaded_data=e._loadStartEventTime>0?bl.nowTime()-e._loadStartEventTime:-1,null!==(t=e.config)&&void 0!==t&&t.enableFPSStuckHandle&&e.on(X.Events.FPS_STUCK,e.fpsStuckHandle)})),this.on(X.Events.LOAD_START,(function(){e.changeState("LOAD_START"),e._loadStartEventTime=bl.nowTime(),e._beforeLoadStartCostTime=(new Date).getTime()-e._tm,e.codecType!==PF||e.config.supportHevc||(e._isMseInit=!0,e._onTimeUpdate())})),this.on(X.Events.ENDED,(function(){e.log(Ht.LOG,"mp4plugin receive player video ended event"),e._onEnded()})),this.player.on(X.Events.ENDED,(function(){e.log(Ht.LOG,"player receive player video ended event")})),this.on(X.Events.PAUSE,(function(){e._usePaused=!0})),this.on(X.Events.PLAY,(function(){e._usePaused=!1})),this.on("xglog",(function(t){if("firstFrame"===t.eventType){var n=e.preLoadData&&e.preLoadData.definition?e.preLoadData.definition:-1,U=e.player,i=e.firstFrameTime;ul&&console.log("[xgplayer-encrypt-mp4]>>>>firstFrame ".concat(e.playerConfig.vid,", ").concat(t.fvt,", codecType: ").concat(e.codecType),"hitPreload: ".concat(e.hitpreload,", video: ").concat(e._useVideoLoad,", preloadBitrate: ").concat(n)," metaLoad: ".concat(i.metaload,", mseOpen: ").concat(i.mseopen),"curDefinition: ".concat(U.curDefinition.definition,",appendInit: ").concat(i.metaready_initsegend))}})),U.mp4MseFlag=!0)}},{key:"_startBufferCheck",value:function(){var e=this.player;if(e.video){var t=[];if(e.video.buffered){for(var n=0,U=e.video.buffered.length;n<U;n++)t.push([e.video.buffered.start(n),e.video.buffered.end(n)]);t.toString()!==this.lastBuffer&&(this.lastBuffer=t.toString(),this._onBufferReachThreshold())}}}},{key:"_onBufferReachThreshold",value:function(){var e=this.player,t=this.config;if(e.video){for(var n=e.video.buffered,U=0,i=0,l=0;l<n.length&&(U=n.start(l),i=n.end(l),!(U<=e.video.currentTime&&e.video.currentTime<=i));l++);i-e.video.currentTime>=t.bufferThreshold&&!this._hasTriggerBufferThreshold&&(this._hasTriggerBufferThreshold=!0,e.emit("BUFFER_THRESHOLD",i-e.video.currentTime))}}},{key:"_startUrlExpiredCheck",value:function(){var e=this.player.config;e.definition&&e.definition.list&&e.definition.list.length>0&&(this.urlExpireTimestamp=e.definition.list[0].url_expire||0,this._handleUrlExpire())}},{key:"cancelLoading",value:(F=Y(x().mark((function e(){return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.mp4){e.next=2;break}return e.abrupt("return");case 2:return this._canceLoading=!0,this.log(Ht.LOG,"player cancelLoading",this.playerConfig.vid),this._stopProgress(),this.cancelPreloadTask(),e.next=8,this.mp4.cancelLoading();case 8:case"end":return e.stop()}}),e,this)}))),function(){return F.apply(this,arguments)})},{key:"checkConfig",value:function(){var e=this.playerConfig,t=this.config,n=e.defaultDefinition,U=e.defaultBitrate;if(!n){var i=this.playerConfig.definition;n=i&&i.defaultDefinition?i.defaultDefinition:t.definition}!U&&t.bitrate&&(U=t.bitrate),e.defaultDefinition=n,e.defaultBitrate=U}},{key:"beforePlayerInit",value:function(){var e=this,t=this.player,n=this;this._isInit||(X.BasePlugin.defineGetterOrSetter(t,{__url:{get:function(){return n.mse?n.mse.url:t.config.url},configurable:!0},downloadSpeed:{get:function(){return zF/8},configurable:!0},playerVersion:{get:function(){return rl},configurable:!0},menuCodeType:{get:function(){return n.mp4&&n.mp4.meta?n.mp4.meta.videoCodec:n.codecType===HF?"avc":"hevc"},configurable:!0},playerType:{get:function(){return"MP4"},configurable:!0},supportMenus:{get:function(){return{speed:null==t?void 0:t.mp4MseFlag,cdn:null==t?void 0:t.mp4MseFlag,resolution:null==t?void 0:t.mp4MseFlag}},configurable:!0},preloadActive:{get:function(){return e.isActive},set:function(t){e.isActive=t,e.isActive&&e._startProgress()},configurable:!0},performance:{get:function(){return e.firstFrameTime},configurable:!0},domain:{get:function(){return n.domain},configurable:!0},loadURL:{get:function(){return n.loadURL},configurable:!0},abrInstance:{get:function(){return n.abrInstance},configurable:!0},pcdnReq:{get:function(){var e=ot.pcdnReqCnt,t=ql.pcdnDownLoadReqCnt;return{pcdn_tracker_request_cnt:e.pcdn_tracker_request_cnt,pcdn_tracker_failed_cnt:e.pcdn_tracker_failed_cnt,pcdn_download_request_cnt:t.pcdn_download_request_cnt,pcdn_download_failed_cnt:t.pcdn_download_failed_cnt}},configurable:!0},retryInfo:{get:function(){return Al},configurable:!0},softDecoder:{get:function(){return e._isH265SoftDecoder},configurable:!0},logCache:{get:function(){if(n.logger)return n.log(Ht.LOG,",timerStepList,",JSON.stringify(e.timerStepList)),n.log(Ht.LOG,"Mp4EncryptPlayer version, ",rl),n.logger.getLogCache()},configurable:!0},pcdnVVStat:{get:function(){var e,t=n.mp4,U=n.pcdn;return t?G(G({},t.pcdnVVStat),{},{trace_id:null===(e=t.pcdnTraceInfo)||void 0===e?void 0:e.trace_id,cancelCnt:(null==t?void 0:t.pSCCancelCnt)||0,is_try_open:U?1:0}):null},configurable:!0},beforeLoadStartCostTime:{get:function(){return e.useVideoLoad?0:e._beforeLoadStartCostTime},configurable:!0},bandwidth:{get:function(){var e,t,U=n.mp4,i=U?U.loadInfo:null;return{vid:null===(e=n.playerConfig)||void 0===e?void 0:e.vid,cdn:{speed:null==U||null===(t=U.loadInfo[Pl])||void 0===t?void 0:t.loadSpeed,size:i&&i[Pl]?i[Pl].loadLen:0},pcdn:G({size:i&&i[jl]?i[jl].loadLen:0},null==U?void 0:U.pcdnTraceInfo)}},configurable:!0},ext:{get:function(){var t,U,i,l,F,a,r,d,Q,o,s,c,R=[];if((null===(t=n.player)||void 0===t||null===(U=t.video)||void 0===U||null===(i=U.buffered)||void 0===i?void 0:i.length)>0)for(var B=n.player.video.buffered,u=0,h=(null==B?void 0:B.length)||0;u<h;u++)R.push([B.start(u),B.end(u)]);return{type:"MP4",usevideo:n.useVideoLoad?1:0,curTime:null===(l=n.player)||void 0===l?void 0:l.currentTime,duration:(null===(F=n.mp4)||void 0===F||null===(a=F.meta)||void 0===a?void 0:a.duration)||(null===(r=n.player)||void 0===r?void 0:r.duration),loadIdx:n._curLoadSegmentIdx,curload:null!==(d=n.mp4)&&void 0!==d&&d.adaptTimeRange?n.mp4.adaptTimeRange[n._curLoadSegmentIdx]:{},buffer:R,speed:null===(Q=n.debugInfo)||void 0===Q?void 0:Q.speed,states:null==n?void 0:n.states,msequeLen:(null===(o=n.mse)||void 0===o?void 0:o.opQueues)&&(null===(s=n.mse.opQueues.video)||void 0===s?void 0:s.length),timer:!!n._requestTimer,timerlist:JSON.stringify(e.timerStepList),maxtimerstep:Math.max.apply(Math,te(e.timerStepList)),url:null===(c=n.playerConfig)||void 0===c?void 0:c.url}},configurable:!0},currentDefitionFromPlayer:{get:function(){return n.abrInstance&&n.abrInstance.isCurrentInAbr?t._currentDefitionFromPlayer:t.curDefinition},configurable:!0}}),this._isInit=!0)}},{key:"destroy",value:function(){var e,t,n,U=this.player;U.preloader&&U.preloader.cancel(this.playerId),U.removeHooks("replay",this._replayHook),U.removeHooks("play",this._playHook),U.removeHooks("pause",this._pauseHook),U.removeHooks("retry",this._retryHook),null===(e=this._requestTimer)||void 0===e||e.off(xn,this.timerHandle),null===(t=this._requestTimer)||void 0===t||t.destroy(),this._requestTimer=null,this._reset(),this.checkReUseMSE(!1),this._secretkey&&(this._secretkey.off(cF.EVENT_EME.ERROR,this._errorHandler),this._secretkey.destroy()),this.player.playNext=DF,this.player._startInit=YF,this.player.changeDefinition=MF,this.player.switchURL=KF,this._unbindNetworkStateChange(),this._unbindEvents(),U.video&&U.video.removeEventListener(yn.BUFFERED_RESET,this._onBufferedReset),this._bufferCheckTimer&&clearInterval(this._bufferCheckTimer),this._removeBufferTimer&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),(null===(n=this.logger)||void 0===n?void 0:n.reset)&&this.logger.reset(),this.__onmetadataHandle&&U.video.removeEventListener("loadedmetadata",this.__onmetadataHandle),this.timerStepList=[]}},{key:"_proxyPlayer",value:function(){var e=this;"function"==typeof this.player.playNext&&(DF=this.player.playNext),this.player.playNext=function(){e.playNext.apply(e,arguments)},YF=this.player._startInit,KF=this.player.switchURL,MF=this.player.changeDefinition,this.player._startInit=this.playerStartInit.bind(this),this.player.switchURL=this.switchURL.bind(this),this.player.changeDefinition=this.changeDefinition.bind(this)}},{key:"getInitBitrate",value:function(){var e=this.player,t=this.config,n=this.playerConfig,U=null,i=e.definitionList;if(i&&i.length>0&&(e.preloader&&i.map((function(t){var i=e.preloader.generateUniqueKey({vid:n.vid,definition:t.definition||-1,vtype:n.vtype,codecType:n.codecType});t.cacheKey=i,i&&!U&&e.preloader&&e.preloader.hasItemSameVid(i)&&((U=t).type="preload")})),U&&n.userSelectDefinition&&t.focusUserDefinition&&n.userSelectDefinition!==U.definition&&(U=null),!U&&this.bitRateAdapter&&(this.bitRateAdapter.speed=ql.speed,(U=this.getDefinitonFromAdapter(i,n.userSelectDefinition))&&(U.type="bitRateAdapter"))),!U||!U.url){var l,F=(null===(l=n.definition)||void 0===l?void 0:l.defaultDefinition)||n.defaultDefinition;if("Array"===X.Util.typeOf(n.url)&&n.url.length>0||"String"===X.Util.typeOf(n.url)&&n.url){var a=this._getDefinitionItem(F),r=n.defaultBitrate||n.bitrate||(null==a?void 0:a.bitrate);U={url:n.url,definition:(null==a?void 0:a.definition)||-1,duration:(null==a?void 0:a.duration)||n.duration||this.config.duration||0,bitrate:r,uri:n.uri||(null==a?void 0:a.uri),file_id:null==a?void 0:a.file_id,size:(null==a?void 0:a.size)||n.size,type:"default"}}else U=i[i.length-1]}return this.playerConfig.url=U.url,U.networkSpeed=ql.speed,e.curDefinition=U,U}},{key:"_setPlayerSrc",value:function(e){var t=this.player;this._removeVideoSource(),"Array"===X.Util.typeOf(e)?(t.video.removeAttribute("src"),!t._detachSourceEvents&&e.forEach((function(e){t.video.appendChild(X.Util.createDom("source","",{src:"".concat(e.src),type:"".concat(e.type||"")}))})),t._attachSourceEvents(t.video,e),t.play()):(t.video.src=e,t.play()),t.mp4MseFlag=!1,t.emit("playertypechange")}},{key:"_removeVideoSource",value:function(e){var t=this.player,n=(e=e||t.video).children;if(n.length>0)for(t._detachSourceEvents(e);n.length>0;)e.removeChild(n[0])}},{key:"_getDefinitionItem",value:function(e){var t=this.playerConfig;if(!t.definition||!t.definition.list)return null;for(var n=0;n<t.definition.list.length;n++){var U=t.definition.list[n];if(U.definition===e)return U}return null}},{key:"_initAbrDefinition",value:function(){var e=this.player,t=this.playerConfig;if(t.definition.list.length>0&&(e.curDefinition||(e.curDefinition=t.definition.list[0]),e.curDefinition.vwidth||Object.assign(e.curDefinition,this._getDefinitionItem(e.curDefinition.definition)),this._abrService.updateAbrCacheData()),this._abrService&&this._abrService.isCurrentAutoDefi){var n=t.definition.list.length;e.curDefinition=t.definition.list[n-1]}for(var U=0;U<t.definition.list.length;U++){var i=t.definition.list[U];e.curDefinition.definition===i.definition?i.selected=!0:i.selected=!1}this.player.emit("resourceReady",t.definition.list);var l=e.curDefinition.bitrate;if(!l)for(var F=0;F<t.definition.list.length;F++){var a=t.definition.list[F];a.definition===e.curDefinition.definition&&(l=a.bitrate)}this._abrService.updateBitrate(l)}},{key:"_initAbrService",value:(l=Y(x().mark((function e(){var t,n;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.playerConfig,(n=this.config).autoBitrateOpts&&n.autoBitrateOpts.isOpenAutoDefi){e.next=3;break}return e.abrupt("return");case 3:return this._abrService=new LF(this,this.abrSwitchURL),e.next=6,this._abrService.init({video:t.definition.list.concat()});case 6:this._initAbrDefinition();case 7:case"end":return e.stop()}}),e,this)}))),function(){return l.apply(this,arguments)})},{key:"_initMp4Kernel",value:function(){var e=this,t=this.playerConfig,n=this.config,U=new FF;try{var i=this.player.curDefinition;if(this.log(Ht.LOG,"[_initMp4Kernel] ".concat(t.vid," curDefinition"),null==i?void 0:i.definition),!this._handlerUrl(t.url))return this.log(Ht.LOG,"emptyUrl"),U.reject(new Error("emptyUrl")),U;if(n.forceVideoPlay&&(this.codecType===HF||n.supportHevc))return this.useVideoLoad=!0,this.log(Ht.LOG,"forceVideoPlay"),U.reject(new Error("forceVideoPlay")),U;var l=[];this._secretkey&&l.push(this._secretkey.getLicenseSecret()),l.push(this._checkPreloader()),Promise.all(l).then((function(t){if(e.isDestroy)U.reject(new Error("destroy"));else{var l=null;if(t&&t.length>0&&(t.length>1&&(!n.keyValue&&(n.secretKey=t[0].secretKey),n.decryptKey=t[0].decryptKey),l=t[t.length-1].data,e.firstFrameTime&&(e.firstFrameTime.hitpreload=l?1:0)),l||!n.needPreloadCheck||e.codecType===PF&&!n.supportHevc)if(e._vtype&&"MP3"===e._vtype)e.useVideoLoad=!0,e.log(Ht.LOG,"vtype_not_MP4"),U.reject(new Error("vtype_not_MP4"));else{var F,a=n._mainURL;e._initMp4(a,l,{fileSize:i?i.size:0}),e.updateLoadInfo(null===(F=l)||void 0===F?void 0:F.cacheKey),e.checkPCDN(),e.initAdaptRange(),e._initAbrService()}else e.useVideoLoad=!0,e.log(Ht.LOG,"no_preload"),U.reject(new Error("no_preload"))}})).catch((function(n){e.log(Ht.ERROR,"getLicense or checkPreloader reject",null==n?void 0:n.message);var l=new X.Errors(e.player,{errorType:Ql.DRM,errorCode:dl.drm,errorMessage:(null==n?void 0:n.message)||"getLicense or checkPreloader reject",vid:t.vid});e.emit("GET_LICENSE_ERROR",l),e.changeState("LICENSE_ERROR",{d:i?i.definition:0}),U.reject(l)}))}catch(F){U.reject(F)}return U}},{key:"updateLoadInfo",value:function(e){e&&this.mp4&&(this.mp4.loadInfo=Tn.get(e),Tn.delete(e))}},{key:"initAdaptRange",value:function(){var e=this.config,t=this.player,n=this.playerConfig,U=t.curDefinition,i=U.bitrate,l=U.duration;null!=e&&e.adaptRange&&((null==e?void 0:e.loadRangeType)===Ln?this.adaptRange=new Fe(t,i,l||n.duration,e.adaptRange):this.adaptRange=new le(t,i,l||n.duration,e.adaptRange))}},{key:"getPCDNReqId",value:function(){var e=this.player.curDefinition,t=this.playerConfig.vid;return e.uri?e.uri.slice(-20)+e.bitrate:t?t.slice(-20)+e.bitrate:void 0}},{key:"checkPCDN",value:function(){var e,t=this,n=this.config,U=this.player,i=this.mp4,l=U.curDefinition;if(null!==(e=n.pcdnConfig)&&void 0!==e&&e.openPCDN&&l.duration>=n.pcdnConfig.minDuration){var F;n.pcdnConfig.app_id&&(Nn.app_id=n.pcdnConfig.app_id),n.pcdnConfig.sid&&(Nn.sid=n.pcdnConfig.sid);var a=n._mainURL;if(!l.uri||!l.bitrate||a.indexOf("video/")<=0)return this.log(Ht.LOG,"uri null or bitrate null or url not contain video cannot use pcdn"),void(this.pcdn=null);if(!Jl(a))a=document.location.protocol+a;var r={vid:l.uri,sfid:l.file_id,cdn_url:a,file_type:null===(F=this._vtype||"MP4")||void 0===F?void 0:F.toLowerCase(),bitrate:l.bitrate,duration:Math.floor((null==l?void 0:l.duration)||0),size:(null==l?void 0:l.size)||bl.getFileSize(l.bitrate,l.duration)};if(this.pcdn)this.pcdn.resetTrackeArgs();else{var d=Object.assign({},{productConfig:Nn},n.pcdnConfig),Q=r.bitrate,o=r.duration;this.pcdn=new ot(d,U,Q,o)}this.pcdn.fetchPCDNNode(null,r,this.getPCDNReqId()).then((function(e){var n,U,l=t.getPCDNReqId();null!=e&&e.req_id&&l!==e.req_id?t.log(Ht.LOG,",fetchPCDNNode is not match curDefinition reqId",l,", pcdnRet.req_id",e.req_id):i&&e&&(t.log(Ht.LOG,"".concat(t.playerConfig.vid," get peer end,pcdn node update,"),null==e||null===(n=e.nodes)||void 0===n?void 0:n.length),i.updateNode(null==e?void 0:e.nodes),i.pcdnTraceInfo={uri:e.vid,fid:e.fid,trace_id:null==e?void 0:e.trace_id},i.pcdnVVStat&&(i.pcdnVVStat.try_req_node+=1,i.pcdnVVStat.req_node_succ+=1,i.pcdnVVStat.has_ret_node+=(null==e||null===(U=e.nodes)||void 0===U?void 0:U.length)>0?1:0))})).catch((function(e){(null==i?void 0:i.pcdnVVStat)&&(i.pcdnVVStat.try_req_node+=1),t.checkURLExpired(e,"_fetchPCDNNode")}))}else this.pcdn=null}},{key:"initTimer",value:function(){if(!this._requestTimer){var e=this.config.timerInWorker;this._requestTimer=new oF({tickInSeconds:this._tickInSeconds,timerInWorker:e}),this._requestTimer.on(xn,this.timerHandle)}}},{key:"playerStartInit",value:function(e){var t=this;if(this.log(Ht.LOG,"playerStartInit",this.player.hasStart,this.playerId,e),!this.isDestroy){var n,U=this.playerConfig,i=this.player;if(this._usePaused=!1,this.isActive&&0!==(null==i?void 0:i.currentTime))this.log(Ht.LOG,"[playerStartInit] reset current = 0 ,buffer,",JSON.stringify(null==i||null===(n=i.buffered2)||void 0===n?void 0:n.bufferedList)),this.player.currentTime=0;if(this._isH265SoftDecoder=this.softDecode,this.config.reUseMSE&&this.mse&&"String"===X.Util.typeOf(e)&&/^blob/.test(e)&&e!==this.mse.url&&(e=U.url,this.destroyMSE()),!e||"__auto__"===e||"anytext"===e){var l=U.definition;if(l&&l.list&&l.list.length>0&&l.defaultDefinition&&(l.list.map((function(e){e.definition===l.defaultDefinition&&(U.url=e.url,t.player.curDefinition=e)})),!U.url||"__auto__"===e||"anytext"===e)){var F=l.list[0];e=F.url,U.url=F.url,l.defaultDefinition=F.definition,this.player.curDefinition=F}}this.initTimer();var a=this._defInited?null:this.getInitBitrate(),r=this.config,d=r.kid,Q=r.drmKeyToken,o=r.secretKey,s=r.keyValue,c=r.drm;d||Q||o||s||c?this._secretkey?this._secretkey.updateConfig(this.config):(this._secretkey=new cF.XGSecretKey(this.config),this._secretkey.on(cF.EVENT_EME.ERROR,this._errorHandler)):this._secretkey=null,this._defInited=!0,this.log(Ht.LOG,"[playerStartInit] ".concat(U.vid," curDefinition"),a||this.player.curDefinition);var R=this.config,B=this.player.preloader;B&&B.cancelPreloadByVid(U.vid,this.player.playerId);var u=!this.softDecode;if(B&&R.needPreloadCheck&&u&&!this._secretkey){var h=this.player.curDefinition,V=h.cacheKey?h.cacheKey:B.generateUniqueKey({vid:U.vid,definition:h.definition||-1,vtype:U.vtype,codecType:U.codecType});if(!B.hasItemSameVid(V)){this.useVideoLoad=!0,this.player.vtype="MP4_0",this.log(Ht.LOG,"[playerStartInit] ".concat(U.vid," no_prelaod"),V);var Z=new X.Errors(this.player,{errorType:"runtime",errorTypeCode:Ql.runtime,errorCode:dl.other,vid:this.playerConfig.vid,errorMessage:"no preload"});this.player.emit("playCatch",this.player.vtype,Z)}}if(this.useVideoLoad){if(e=this.playerConfig.url,R.closeDowngrade)return;return this._sTime=bl.nowTime(),YF.call(this.player,e),void this._startProgress()}if(!this.isDestroy){this.player.mp4MseFlag=!0,this.bufferEndTime=-1,this._tm=(new Date).getTime(),this._reset();var m=this.playerConfig.vid;this.changeState("PLAYER_START_INIT");var p=this._initMp4Kernel();this._initPromise=p,this._addPendingPromise(this._initPromise),p.then((function(){t.isDestroy||(t.mse&&(e=t.mse.url),t.changeState("PLAY_INIT_OK"),t._bindEvents(),t._startProgress())})).catch((function(n){var U,i,l=!!t._initPromise&&t._initPromise.isBreak;if(!t.isDestroy&&!l&&n!==GF){if(t.log(Ht.LOG,"_initMp4Kernel.catch: ".concat(m," isDestroy:").concat(t.isDestroy,",\n errorCode:").concat((null==n?void 0:n.errorCode)||dl.other,",errMsg:").concat((null==n?void 0:n.errorMessage)||(null==n?void 0:n.message))),(null==n?void 0:n.errorCode)===dl[403]&&t._emitExpireEvent(n)&&R.urlExpireDisableErrorEvent)return t._initPromise=null,t.log(Ht.LOG,"initMp4Kernel urlExpireDisableErrorEvent",R.urlExpireDisableErrorEvent,",errorCode,",n.errorCode),t._stopProgress(),void t.emit(xF);var F=n;F.errorCode||((F=new X.Errors(t.player,{errorType:Ql.RUNTIME,errorCode:(null==n?void 0:n.errorCode)||dl.other,vid:t.playerConfig.vid,errorMessage:(null==n?void 0:n.errorMessage)||(null==n?void 0:n.message),mediaError:{code:(null==n?void 0:n.httpCode)||dl.other,message:(null==n?void 0:n.errorMessage)||(null==n?void 0:n.message),errorType:null==n?void 0:n.errorType}})).url=e),t.changeState("PLAY_INIT_CATCH",{c:F.errorCode,m:(null==n?void 0:n.errorMessage)||(null==n?void 0:n.message),t:null==n?void 0:n.errorType}),t.useVideoLoad=!0,t.player.vtype="MP4_1",t.player.emit("playCatch",t.player.vtype,F);var a=t.checkIsDegraded(F);return t.log(Ht.WARN,"PLAY_INIT_CATCH final error !!!!, ",m,null===(U=F)||void 0===U?void 0:U.errorCode,null===(i=F)||void 0===i?void 0:i.errorMessage,",degrade:",a),t.emit(xF),a?void 0:(t.player.pause(),t._reset(),t.emit("error",F),void(t._initPromise=null))}})).finally((function(){var n;if(t._initPromise){var U=t._initPromise.isBreak;t._initPromise&&t._removePendingPromise(t._initPromise),t._initPromise=null,t._usePaused&&(t.playerConfig.autoplay=!1),t.softDecode&&"Array"===X.Util.typeOf(e)&&(e=e[0].src),"String"!==X.Util.typeOf(e)||/^blob/.test(e)||t.destroyMSE();var i=(null===(n=t.player)||void 0===n?void 0:n.currentSrc)===e;t.changeState("PLAY_INIT_FINALLY",{isDestroy:t.isDestroy,isBreak:U,reUseSrc:i}),!t.isDestroy&&!U&&YF.call(t.player,e),t.reUseMSEEmitEvents(i),t._abrService&&t._abrService.isCurrentInAbr()&&(t._abrService.enable(),t._abrService.execute())}}))}}}},{key:"destroyMSE",value:(i=Y(x().mark((function e(){var t;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null===(t=this.mse)||void 0===t?void 0:t.unbindMedia();case 2:this.mse&&this.log(Ht.LOG,"destroyMSE ",this.playerConfig.vid),this.mse=null;case 4:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"reUseMSEEmitEvents",value:function(e){var t,n=this;e&&/^blob/.test(null===(t=this.player)||void 0===t?void 0:t.currentSrc)&&(clearTimeout(this.loadstartTimer),clearTimeout(this.loadeddataTimer),clearTimeout(this.canplayTimer),this.loadstartTimer=setTimeout((function(){clearTimeout(n.loadstartTimer),n.loadstartTimer=null,n.emit(X.Events.LOAD_START),n.log(Ht.LOG,"reUseMSE add emit loadstart event")}),10),this.loadeddataTimer=setTimeout((function(){clearTimeout(n.loadeddataTimer),n.loadeddataTimer=null,n.emit(X.Events.LOADED_DATA),n.log(Ht.LOG,"reUseMSE add emit loadeddataevent")}),50),this.canplayTimer=setTimeout((function(){clearTimeout(n.canplayTimer),n.canplayTimer=null,n.emit(X.Events.CANPLAY),n.log(Ht.LOG,"reUseMSE add emit canplayevent")}),90))}},{key:"playNext",value:function(e){var t=this,n=this.player;this._defInited=!1,this._hasTriggerBufferThreshold=!1,n.resetState(),n._currentTime=0,n._duration=0,n.isPlaying=!1,this._useVideoLoad=!1,this._MSEError=!1;var U=this.softDecode;n.pause(),this._reset(),e.vtype&&(this._vtype=e.vtype.toUpperCase()),n.setConfig(e),this.checkReUseMSE(this.config.reUseMSE,!0),this.softDecode?n.vtype="MP4_MSE_SOFT":n.vtype="MP4_MSE",this.codecType=this.playerConfig.codecType?this.playerConfig.codecType.toLowerCase():HF,U!==this.softDecode&&this.h265_h264_switch(this.playerConfig.mediaType||"video"),this.checkConfig(),this.log(Ht.LOG,"[Index] playNext",e.vtype,e.vid),n.start(),this.config.reUseMSE&&(this.isH265DegradeH264||(this.__onmetadataHandle=function(){t.log(Ht.LOG,"[Index] playNext metadata update currentTime = 0"),0!==n.currentTime&&(n.currentTime=0),n.video.removeEventListener("loadedmetadata",t.__onmetadataHandle),t.__onmetadataHandle=null},n.video.addEventListener("loadedmetadata",this.__onmetadataHandle))),this.emit("playnext")}},{key:"h265_h264_switch",value:function(e){this.log(Ht.LOG,"[Index],h265_switch_h264",e);var t=this.player,n=X.Util.createDom(e,"",this.getVideoConfig(this.playerConfig),"xgplayer-".concat(e,"-img"));this.removeVideoList.push(t.video),n.muted=t.video.muted,n.volume=t.video.volume,t.media?t.media=n:t.video=n,t.attachVideoEvents(t.video)}},{key:"getVideoConfig",value:function(e){var t=Object.assign({},{controls:!1,autoplay:e.autoplay,playsinline:e.playsinline,"x5-playsinline":e.playsinline,"webkit-playsinline":e.playsinline,"x5-video-player-fullscreen":e["x5-video-player-fullscreen"]||e.x5VideoPlayerFullscreen,"x5-video-orientation":e["x5-video-orientation"]||e.x5VideoOrientation,airplay:e.airplay,"webkit-airplay":e.airplay,tabindex:2,mediaType:e.mediaType||"video"},e.videoConfig,e.videoAttributes);return e.loop&&(t.loop="loop"),t}},{key:"next",value:function(e){this.playNext(e)}},{key:"oldChangeDefinition",value:function(e,t){var n=this,U=this.config,i=this.player,l=this.playerConfig;i.emit(X.Events.DEFINITION_CHANGE,{from:t,to:e}),i.emit(X.Events.WAITING);var F=i.definitionList,a=F.filter((function(t){return t.definition===e.definition||t.definition===Number(e.definition)})),r=F.filter((function(e){return e.definition===t.definition||e.definition===Number(t.definition)}));if(r.length>0&&(r[0].selected=!1),a.length>0){(e=a[0]).selected=!0,i.curDefinition=e,this.log(Ht.LOG,"[oldChangeDefinition],currentTime,",i.currentTime,",from,",t,",to,",e);var d=i.currentTime,Q=i.paused;this._changeDefState||(this._changeDefState={currentTime:d,paused:Q}),U.definition=e.definition;["keyValue","kid","secretKey","drm","getLicenseUrl","drmKeyToken","sessionId"].forEach((function(t){U[t]=e[t]})),l.url=e.url,l.userSelectDefinition=e.definition,l.defaultDefinition=e.definition,U.focusUserDefinition=!0,i.currentTime=0,i.pause(),this._reset(),this.checkReUseMSE(),this._isMseInit=!1,this.eme=null,this._handlerUrl(e.url),this._changeDefineCanPlay&&i.off("canplay",this._changeDefineCanPlay),this._changeDefineCanPlay=function(){n.changeDefineCanPlay(d,Q,t,e),n._changeDefineCanPlay=null},i.once("canplay",this._changeDefineCanPlay),this.player.video.load(),this.playerStartInit(l.url)}}},{key:"_emitDefinitionChangeDetailEvent",value:function(e){var t=this._currDefinition,n=t.bitrate,U=t.definition,i=t.file_id,l=t.width,F=t.vwidth,a=t.height,r=t.vheight;this.player.emit("definitionChangeDetail",{start:e,bitrate:n,definition:U,mediaType:"video",url:this.config._mainURL,fileid:i});var d={width:l||F,height:a||r};this.player.emit("RESOLUTION_UPDATE",d)}},{key:"_setCurrentDefinition",value:function(e){var t=this.player.config;if(t.definition&&t.definition.list){var n=t.definition.list.filter((function(t){return t.bitrate===e}));this._currDefinition=n&&n[0]}this._currDefinition||(this._currDefinition={})}},{key:"switchURL",value:function(e){var t=this;if(this.useVideoLoad)KF.call(this.player,e);else{var n=this.player,U=this.config;n.config.definition.list=[e],n.config.url=e.url,n.config.defaultBitrate=e.bitrate,n.config.defaultDefinition=e.definition;["keyValue","kid","secretKey","drm","getLicenseUrl","drmKeyToken","sessionId"].forEach((function(t){U[t]=e[t]})),this.__onmetadataHandle=function(){n.currentTime=0,n.video.removeEventListener("loadedmetadata",t.__onmetadataHandle),t.__onmetadataHandle=null},n.video.addEventListener("loadedmetadata",this.__onmetadataHandle),this.playNext(U)}}},{key:"_handlerUrl",value:function(e){var t,n=this.config,U=this.playerConfig;if(!e)return!1;var i=[];if("String"===X.Util.typeOf(e))t=e,U.backupURL&&i.push(U.backupURL);else if("Array"===X.Util.typeOf(e)&&e.length>0&&(t=e[0].src,e.length>1))for(var l=1;l<e.length;l++)i.push(bl.extUrl(e[l].src,{__vid:U.vid}));return!(!t&&0===i.length)&&(n._mainURL=bl.extUrl(t,{__vid:U.vid}),n._backupURL=i,!0)}},{key:"_firstFrameTime",value:function(){if(this.codecType===HF||this.config.supportHevc){if(this.firstFrameTime.new_loadeddata<0){this.firstFrameTime.loadst_loadeddata=bl.nowTime()-this.loadstart,this.firstFrameTime.new_loadeddata=bl.nowTime()-this.firstFrameTime.newplayer;var e={};for(var t in this.firstFrameTime)Object.prototype.hasOwnProperty.call(this.firstFrameTime,t)&&(e[t]=this.firstFrameTime[t])}}else if(this.codecType===PF){var n,U,i=(null===(n=this.player)||void 0===n||null===(U=n.video)||void 0===U?void 0:U.getStats)&&this.player.video.getStats(),l=this.firstFrameTime.metaload,F=this.firstFrameTime.startMuxTime;this.firstFrameTime=i||{},this.firstFrameTime.metaload=l,this.firstFrameTime.startload_stmux=F,this.firstFrameTime.firstmux=this.mp4?this.mp4.firstFrameTime.firstmux:-1;for(var a=0;a<(null==i||null===(r=i.bootStats)||void 0===r?void 0:r.length);a++){var r;this.firstFrameTime[i.bootStats[a].action]=i.bootStats[a].dot}delete this.firstFrameTime.bootStats}}},{key:"_bindEvents",value:function(){var e=this;this.log(Ht.LOG,"bindEvents,",this._isEventInit);var t=this.config,n=this.player;this._isEventInit||(this.on("seeking",this._onSeeking),this.on("waiting",this._onWaiting),this.on("error",this._onVideoError),this.on("playing",this._onPlaying),this.on("detectGap",(function(){t.gapDegrade&&t.useEME&&(t.useEME=!1,e._replay())})),this.on(ae.CHANGE_FLYING_PLUGIN_CONFIG,this._onChangeConfig),n.setEventsMiddleware({error:function(t,U){var i,l,F,a,r={errorCode:null==t||null===(i=t.error)||void 0===i?void 0:i.code,errorMessage:null==t||null===(l=t.error)||void 0===l?void 0:l.message,videoType:e.useVideoLoad};if(e.changeState("video_error.Middleware",r),e.codecType===PF&&(null==t||null===(F=t.error)||void 0===F?void 0:F.message.indexOf("video decoder initialization failed"))>=0&&e.emit("DECODER_FAILED",{codecType:e.config.codecType,vid:e.playerConfig.vid}),e.log(Ht.ERROR,"error middleware",JSON.stringify(r),", isDegrade,",!e._MSEError&&!e.useVideoLoad,n.currentTime),!e._MSEError&&!e.useVideoLoad)return n.vtype="MP4_2",e._MSEError=!0,null===(a=e.mp4)||void 0===a||a.cancelLoading(),e._startDegradedPlayback(r,n.paused),void e.emit(xF);e.emit(xF),e.useVideoLoad&&U(t.eventName,null==t?void 0:t.error)}})),this._isEventInit=!0}},{key:"getBufferDur",value:function(){var e;if(null===(e=this.player)||void 0===e||!e.buffered)return 0;for(var t=this.player.buffered,n=0,U=0,i=t.length;U<i;U++)n+=t.end(U)-t.start(U);return n}},{key:"deleteVideo",value:function(){var e;if((null===(e=this.removeVideoList)||void 0===e?void 0:e.length)>0){for(var t=0;t<this.removeVideoList.length;t++){var n=this.removeVideoList[t],U=n.parentNode;U&&U.removeChild(n),this.log(Ht.WARN,"[_removeVideoSource]")}this.removeVideoList=[]}}},{key:"_unbindEvents",value:function(){var e;this.log(Ht.LOG,"unbindEvents,",this._isEventInit),this.off("seeking",this._onSeeking),this.off("waiting",this._onWaiting),this.off("ended",this._onEnded),this.off("error",this._onError),this.off("playing",this._onPlaying),this.off(ae.CHANGE_FLYING_PLUGIN_CONFIG,this._onChangeConfig),this._isEventInit=!1,null!==(e=this.config)&&void 0!==e&&e.enableFPSStuckHandle&&this.off(X.Events.FPS_STUCK,this.fpsStuckHandle)}},{key:"changeState",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._pTime||(this._pTime=bl.nowTime());var n=bl.nowTime()-this._pTime,U=bl.nowTime()-this._sTime;this.log(Ht.LOG,">>>changeState[".concat(e,"]"),n,U,JSON.stringify(t)),this.states.push({state:e,t1:n,t2:U,data:t}),this._pTime=bl.nowTime()}},{key:"softDecode",get:function(){var e,t;return"xg-video"===(null===(e=this.player)||void 0===e||null===(t=e.config)||void 0===t?void 0:t.mediaType)}},{key:"_initH265MseProxy",value:function(){this.player.video instanceof HTMLVideoElement&&this.h265_h264_switch(this.playerConfig.mediaType);var e=this.player.video;this.softDecode&&e.setPlayMode&&e.setPlayMode("VOD"),this.mseProxy=e,this.softDecode&&(this.player.forceDegradeToVideo=function(){},this.player.video.addEventListener("lowdecode",this._lowDecoder),this.player.video.addEventListener("error",this._onError))}},{key:"notSupportError",value:function(e){return this.log(Ht.LOG,e,En),new X.Errors(this.player,{errorType:Ql.MEDIA,errorCode:dl.mse,errorMessage:"".concat(e," ").concat(En),vid:this.playerConfig.vid})}},{key:"removeAndRejectInitPromise",value:function(e){this._initPromise&&(this._removePendingPromise(this._initPromise),this._initPromise.reject(e))}},{key:"_initMp4",value:function(e){var t,n,U,i,l,F=this,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},d=this.config,Q=this.player,o=this.playerConfig;this.mp4&&(this.mp4.destroy(),this.mp4=null),this.changeState("MP4_NEW",{});var s,c=0;null!=d&&null!==(t=d.pcdnConfig)&&void 0!==t&&t.openPCDN&&(c=(null==d||null===(s=d.pcdnConfig)||void 0===s?void 0:s.switchPCDNMaxCnt)||2);null!=d&&null!==(n=d.pcdnConfig)&&void 0!==n&&n.adaptPCDNConfig&&(c=0),this._setCurrentDefinition(Q.curDefinition.bitrate);var R=$l;(null==d?void 0:d.loadRangeType)===Ln&&(R=eF);var B,u=null===(U=Q.curDefinition)||void 0===U||null===(i=U.pktOffsetMap)||void 0===i?void 0:i.find((function(e){return(null==e?void 0:e.time)===((null==d?void 0:d.firstLoadTimePos)||5)})),h=null==u?void 0:u.offset;(this.mp4=new R(e,Q.curDefinition.bitrate,{segmentDuration:d.segmentMinDuration,enableWorker:d.enableWorker,codecType:this.codecType,chunkSize:d.preloadSize,firstLoadSize:h,duration:o.duration||0,fileSize:r.fileSize||0,playerId:this.playerId,vid:o.vid,useUrlRange:d.useUrlRange,retryCount:d.retryCount,retryDelay:d.retryDelay,timeout:d.timeout,onProcessMinLen:d.onProcessMinLen,supportHevc:d.supportHevc,afterLoadeddataCallBackLen:d.afterLoadeddataCallBackLen,firstLoadBuffer:d.firstLoadBuffer,logger:this.logger,switchPCDNMaxCnt:c,reqOptions:d.reqOptions},this.config._backupURL,this.firstFrameTime,""),this.mp4.once(Xl,this._onMp4MetaReady),this.mp4.on(gl,this._onMp4Error),this.mp4.on(xl,this._updateDrmConfig),this.mp4.on(Il,this._updateMSE),this.mp4.on(Gl,this._onMp4Progress),this.mp4.on(Ll,this._onMp4DataCallBack),this.mp4.on(Kl,(function(e){F.player&&F.player.emit("source_error",e)})),this.mp4.on(Hl,(function(e){var t,n,U=F.player,i=F.config;F.emit(xF),F.log(Ht.LOG,"not match remove buffer start,buffer,",JSON.stringify(null==U||null===(t=U.buffered2)||void 0===t?void 0:t.bufferedList),", removeRange,",JSON.stringify(e)),null===(n=F.mse)||void 0===n||n.remove(tn.VIDEO,e[0]+.1,e[1]-.1).then((function(){var e;F.log(Ht.LOG,"not match remove buffer end,",JSON.stringify(null==U||null===(e=U.buffered2)||void 0===e?void 0:e.bufferedList));var t=U.currentTime;(null==i?void 0:i.loadRangeType)===Ln&&(U.currentTime=t,F.log(Ht.LOG,"not match remove buffer end, fix currentTime",U.currentTime))})).catch((function(){}))})),this.mp4.on(Ml,(function(e){F.pcdn&&e&&F.pcdn.removePCDNNode(e.vid,e.bitrate,e.url)})),this.mp4.on(Dl,(function(e){F.player&&(F.player.emit("initialUrl",{url:e}),F.player.emit("changeHost",bl.getHostFromUrl(e)))})),this.mp4.on(Yl,function(){var e=Y(x().mark((function e(t){var n;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null===(n=F.mp4)||void 0===n?void 0:n.cancelLoading();case 2:F._curLoadSegmentIdx=t,F.log(Ht.LOG,"[update curLoadSegmentIdx]",t);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),this.mp4.on(wl,(function(e){var t;if(F.player){var n,U,i=o.vid,l=(null==e?void 0:e.load_type)||Pl,a=null===(t=F.mp4)||void 0===t?void 0:t.getCurSwitchPCDNCnt(),r=F._currDefinition,d=r.bitrate,Q=r.definition,s=r.file_id;if(l===Pl)F.player.emit("prf_data_size",{vid:i,task_type:1,cdn_size:e.len,change_cnt:a,definition:Q,bitrate:d,fileid:s});else F.player.emit("prf_data_size",{vid:i,task_type:1,pcdn_size:e.len,trace_id:null===(n=F.mp4)||void 0===n||null===(U=n.pcdnTraceInfo)||void 0===U?void 0:U.trace_id,change_cnt:a,definition:Q,bitrate:d,fileid:s});F.mp4&&F.mp4.updateLoadInfo(l,e.len),hl&&console.log("prf_data_size emit, vid,",i,",loadType,",l,", task_type, 1",",len,",e.len)}})),this.mp4.MP4Loader.on(bn,(function(e){var t,n;zF=e.speed,F.debugInfo.speed||(F.debugInfo.speed=[]),F.debugInfo.speed.push(zF),F.debugInfo.speed.length>10&&F.debugInfo.speed.shift();var U=(null==e||null===(t=e.priOptions)||void 0===t?void 0:t.type)||Pl;F.emit(bn,{speed:zF,type:U});var i=(null===(n=F.playerConfig)||void 0===n?void 0:n.vid)||(null==e?void 0:e.vid);if((null==e?void 0:e.len)>0){var l,a,r,d,Q,o;if(!F.player)return;var s=(null==e||null===(l=e.priOptions)||void 0===l?void 0:l.type)||Pl,c=Wl(e.len,e.time),R=(null===(a=F.adaptRangeRes)||void 0===a?void 0:a.length)>0?F.adaptRangeRes.shift():{},B=R.cachedBufferDur,u=R.loadTarDuration,h=R.loadDuration,V=R.forceSetMin,Z=R.idx,m=R.PCDNInBuffer,p=R.PCDNOutBuffer,S=R.loadSize,J=null===(r=F.mp4)||void 0===r?void 0:r.getCurSwitchPCDNCnt(),W=F._currDefinition,y={vid:i,task_type:1,buffer_dur:B||-1,load_tar_dur:u||-1,load_dur:h||-1,force_set_min:V,in_buf:m||-1,out_buf:p||-1,change_cnt:J,bitrate:W.bitrate,definition:W.definition,fileid:W.file_id,load_size:S||-1};s===Pl?(y.cdn_size=e.len,y.cdn_speed=c):(y.pcdn_size=e.len,y.pcdn_speed=c),F.player.emit("prf_data_size",y),hl&&console.log("prf_data_size emit,",Z,JSON.stringify(y));var b=e.index?null===(d=F.mp4)||void 0===d||null===(Q=d.adaptTimeRange[e.index])||void 0===Q||null===(o=Q.timeRangeIdx)||void 0===o?void 0:o[1]:null;if(b&&b>=F.mp4.timeRange.length-1)for(;(null===(E=F.adaptRangeRes)||void 0===E?void 0:E.length)>0;){var E,k,f=F.adaptRangeRes.shift(),v=f.cachedBufferDur,N=f.loadTarDuration,T=f.loadDuration,C=f.forceSetMin,g=f.idx,X=f.loadSize,L=f.PCDNInBuffer,G=f.PCDNOutBuffer,x=null===(k=F.mp4)||void 0===k?void 0:k.getCurSwitchPCDNCnt();y.buffer_dur=v||-1,y.load_tar_dur=N||-1,y.load_dur=T||-1,y.force_set_min=C||-1,y.in_buf=L||-1,y.out_buf=G||-1,y.load_size=X||-1,y.change_cnt=x,F.player.emit("prf_data_size",y),hl&&console.log("prf_data_size emit,",g,JSON.stringify(y))}F.mp4&&F.mp4.updateLoadInfo(s,e.len)}})),null!=d&&null!==(l=d.pcdnConfig)&&void 0!==l&&l.adaptPCDNConfig)&&(null===(B=this.mp4)||void 0===B||B.setSwitchPCDNCallBack((function(){var e=F.pcdn;if(!e)return-1;var t=e.getPCDNChangeCnt()||-1;return F.log(Ht.LOG,"[updateSwitchPCDNMaxCnt]",t),t})));this.changeState("MP4_INIT",{}),this.emit("loadstart_mse"),a||(a={}),this.mp4.init(a),this._emitDefinitionChangeDetailEvent(0)}},{key:"_checkPreloader",value:function(){var e=this,t=this.playerConfig,n=new FF,U={method:"checkPreloader",success:0,type:"error",cacheKey:""};this.changeState("CHECK_PRELOAD");var i=this.player,l=i.curDefinition,F=i.preloader;if(!F)return this.changeState("PRELOAD_ERROR",{t:2}),U.success=0,U.error=new Error("no_preloader"),n.resolve(U),n;var a=l.cacheKey?l.cacheKey:F.generateUniqueKey({vid:t.vid,definition:l.definition||-1,vtype:t.vtype,codecType:t.codecType});return U.cacheKey=a,a?F.getPreLoadData(a).then((function(t){if(t){var i=t.bitrate,F=t.orgDefinition;if(i&&l.bitrate&&i!==l.bitrate)return e.preLoadData=null,U.success=0,U.error=new Error("bitrate_not_match_cut_".concat(l.bitrate,"_cache_").concat(i)),e.changeState("PRELOAD_ERROR",{bitrate:i,ck:a}),n.resolve(U),void e.log(Ht.LOG,">>>check Preloader bitrate_not_match cacheKey".concat(a,"\n curDefinition:").concat(l.bitrate," cache:").concat(i));l.orgDefinition=F,ul&&console.log(">>>>check Preloader result",a,t),e.preLoadData=t,e.emit("PRELOAD_INFO",e.preLoadData),U.success=1,U.data=t,gn.set(a,!0),e.changeState("PRELOAD_OK",{l:e.preLoadData.byteLength,ck:a}),t.mediaSegList&&t.mediaSegList.length>0||t.buffer&&t.buffer.byteLength>0?e.hitpreload=!0:e.hitpreload=!1,n.resolve(U)}else e.preLoadData=null,e.changeState("PRELOAD_ERROR",{t:0}),U.success=0,U.error=new Error("none_preload"),n.resolve(U)})):(this.changeState("PRELOAD_ERROR",{t:2}),U.success=0,U.error=new Error("none_preload"),n.resolve(U)),n}},{key:"_initEME",value:function(e,t){var n,U,i=this.config,l=i.kid,F=i.drmKeyToken,a=i.secretKey,r=i.keyValue,d=i.drm,Q=i.useEME;if((l||F||a||r||d)&&Q&&!cF.checkEMEValid())return this.log(Ht.ERROR,"checkEMEInValid"),void this._errorHandler(new X.Errors(this.player,{errorType:Ql.MEDIA,errorCode:dl.eme_hijack,errorMessage:"checkEMEInValid",vid:this.playerConfig.vid}));var o=this.player,s=this.config;this._updateDrmConfig(t),this.log(Ht.LOG,"useEME: ",s.useEME),null===(n=this._secretkey)||void 0===n||n.setOptions('video/mp4; codecs="avc1.64001E"','audio/mp4; codecs="mp4a.40.2"'),null===(U=this._secretkey)||void 0===U||U.setupEME(o.video)}},{key:"_initMse",value:(U=Y(x().mark((function e(t){var n,U,i,l,F,a,r,d,Q,o,s,c,R,B,u,h,V=this,Z=arguments;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U=Z.length>1&&void 0!==Z[1]&&Z[1],i=this.config,l=i.kid,F=i.drmKeyToken,a=i.secretKey,r=i.keyValue,d=i.drm,Q=i.useEME,!(l||F||a||r||d)||!Q||cF.checkMSEValid()){e.next=6;break}return this.log(Ht.ERROR,"checkMSEInValid "),this._errorHandler(new X.Errors(this.player,{errorType:Ql.MEDIA,errorCode:dl.mse_hijack,errorMessage:"checkMSEInValid",vid:this.playerConfig.vid})),e.abrupt("return");case 6:null===(n=this.player)||void 0===n||n.emit("codecsupdate",t.videoCodec),this.updateMSEDuration(),o=this.mp4&&this.mp4.checkCodecH265(),s=this.mp4&&this.mp4.checkCodecH266(),c=!!t.videoCodec,R=!!t.audioCodec,B=c&&R?o?'video/mp4; codecs="hev1.1.6.L93.B0, mp4a.40.5"':s?'video/mp4; codecs="bvc2.1.6.L93.B0, mp4a.40.5"':'video/mp4; codecs="avc1.64001E, mp4a.40.5"':c?o?'video/mp4; codecs="hev1.1.6.L93.B0"':s?'video/mp4; codecs="bvc2.1.6.L93.B0"':'video/mp4; codecs="avc1.64001E"':'video/mp4; codecs="mp4a.40.5"',u=H({},tn.VIDEO,{mimeType:"video/mp4",codec:B}),this.mse?(this.log(Ht.LOG,"MSE exit"),(h=new FF).resolve()):(this.log(Ht.LOG,"new MSE"),this.mse=new tn,h=this.mse.bindMedia(this.player.video)),h.then((function(e){V.changeState("MSE_OPEN"),V.firstFrameTime.initmse_sbopen=null==e?void 0:e.costtime,V._loadStartEventTime>0&&(V.firstFrameTime.mseopen=bl.nowTime()-V._loadStartEventTime);var t=Object.keys(u);try{for(var n=0;n<t.length;n++){var i,l=t[n];null===(i=V.mse)||void 0===i||i.createOrChangeSource(l,u[l].codec).then((function(){V.changeState("MSE_OPEN_DONE"),V._isMseInit=!0,V._onTimeUpdate()})).catch(function(){var e=Y(x().mark((function e(t){var n;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return V.config.reUseMSE=!1,V.log(Ht.WARN,"MSE createOrChangeSource catch err: ",null==t?void 0:t.message),e.next=4,null===(n=V.mse)||void 0===n?void 0:n.unbindMedia();case 4:V.mse=null,V._isMseInit=!1,U?V.MSEErrorHandle(t):V._initMse(V.mp4.meta,!0);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())}}catch(F){V.MSEErrorHandle(F)}})),this.changeState("MSE_INIT");case 17:case"end":return e.stop()}}),e,this)}))),function(e){return U.apply(this,arguments)})},{key:"MSEErrorHandle",value:function(e){var t=new X.Errors(this.player,{errorType:Ql.mse,errorCode:dl.mse,vid:this.playerConfig.vid,errorMessage:e.message,mediaError:{code:dl.mse,message:e.message}});this.log(Ht.ERROR,"initMse error: ",null==e?void 0:e.message),this._errorHandler(t)}},{key:"_appendInitSeg",value:function(e){var t=this;this.mse&&!this._MSEError&&(this.changeState("MSE_INITSEG"),this.mse.append(tn.VIDEO,e,{vid:this.playerConfig.vid,range:null,dataLen:e.byteLength,isinit:!0}).then((function(e){t.firstFrameTime.metaready_initsegend=null==e?void 0:e.costtime,t.changeState("MSE_INITSEG_OK",{costtime:null==e?void 0:e.costtime})})),this.config.useEME&&this._secretkey&&this._secretkey.emit(cF.EVENT_EME.ENCRYPTED))}},{key:"_checkMetaInfo",value:function(e){if(!e)return new X.Errors(this.player,{errorType:Ql.DEMUX,errorCode:dl.metaError,errorMessage:"meta is null",vid:this.playerConfig.vid});var t=this.mp4.checkCodecH265(),n=this.mp4.checkCodecH266();return this.changeState("MP4_META_READY",{isH265:t,isH266:n}),!t||(this.codecType!==PF&&(this.codecType=PF,this.log(Ht.LOG,"codecType fix ",this.codecType)),this.softDecode||this.config.supportHevc)?n&&(this.codecType!==jF&&(this.codecType=jF,this.log(Ht.LOG,"codecType fix ",this.codecType)),!this.config.supportVvcc)?this.notSupportError(this.codecType):null:this.notSupportError(this.codecType)}},{key:"_stopProgress",value:function(){this.log(Ht.LOG,"stopProgress",this._hasStartProgress),this._hasStartProgress=!1,this._requestTimer&&this._requestTimer.stop(),this._bufferBreakTimer&&(clearTimeout(this._bufferBreakTimer),this._bufferBreakTimer=null,this._bufferBreakFlag=void 0),this._seekResumTimer&&(clearTimeout(this._seekResumTimer),this._seekResumTimer=null)}},{key:"checkReStartTimer",value:function(){var e=bl.nowTime()-this._lastTimeupdateTime2;e>2*this._tickInSeconds*1e3&&!this._offineLine&&(this.log(Ht.LOG,"checkReStartTimer reStart timer",e,bl.nowTime()),this._stopProgress(),this._startProgress(),this._lastTimeupdateTime2=bl.nowTime())}},{key:"_bindNetworkStateChange",value:function(){window.addEventListener("online",this._onOnlineHandler),window.addEventListener("offline",this._onOfflineHandler)}},{key:"_unbindNetworkStateChange",value:function(){window.removeEventListener("online",this._onOnlineHandler),window.removeEventListener("offline",this._onOfflineHandler)}},{key:"_onSuperStart",value:function(e){var t=this,n=this.player;ml("_onSuperStart:".concat(e),this.mse),n.video.src=e,this.once("canplay",(function(){n.play(),t.on("waiting",t._onWaiting)}))}},{key:"_appendBuffer",value:function(e,t){var n=this,U=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0,l=this.mse,F=this.playerConfig,a=this.player,r=F.vid;this.log(Ht.LOG,"appendStart",r,U.fragIndex,JSON.stringify(U.range)),this._MSEError?this.log(Ht.ERROR,"_MSEError, not append return"):l.append(e,t,{vid:r,fragIndex:U.fragIndex,range:U.range,dataLen:t.byteLength,state:i}).then((function(e){var t,l,F,r,d,Q,o=a.getBufferedRange();if(n.log(Ht.LOG,"appendEnd ",null==e||null===(t=e.context)||void 0===t?void 0:t.fragIndex,JSON.stringify(null==e||null===(l=e.context)||void 0===l?void 0:l.range),null==e||null===(F=e.context)||void 0===F?void 0:F.dataLen,", costTime,",null==e?void 0:e.costtime,", opt,",null==e?void 0:e.name,",buffer,",JSON.stringify(o),a.currentTime),n.checkBufferArriveEndTime(),n.firstFrameTime.loadst_loadeddata<0){var s;n.firstFrameTime.apcnt++;var c=(null==e||null===(s=e.context)||void 0===s?void 0:s.dataLen)||0,R=(null==e?void 0:e.costtime)||0;n.firstFrameTime.aplen+=c,n.firstFrameTime.data_ap+=R;for(var B=!1,u=n.states.length-1;u>=0;u--)if("APPEND_DATA_OK"===n.states[u].state){n.states[u].data.cnt+=1,n.states[u].data.costime+=R,n.states[u].data.dataLen+=c,B=!0;break}B||n.changeState("APPEND_DATA_OK",{costime:R,dataLen:c,cnt:1})}var h=null===(r=n.mp4)||void 0===r||null===(d=r.adaptTimeRange[U.fragIndex])||void 0===d||null===(Q=d.timeRangeIdx)||void 0===Q?void 0:Q[1];if(n.mse&&i&&h>=n.mp4.timeRange.length){var V=n.player.buffered;V&&(null==V?void 0:V.length)>0&&(n.bufferEndTime=V.end(V.length-1)),n._isEnded(),n.log(Ht.LOG,"loaded ended !!!==>>>",JSON.stringify(U.range),", fragIndex,",U.fragIndex,", bufferEndTime,",n.bufferEndTime,",meta_duration,",n.mp4.meta.duration)}})).catch((function(e){var t;if(!n._MSEError)if(e&&null!==(t=n.mse)&&void 0!==t&&t.isFull()){n.log(Ht.WARN,"[MSE is full]");var i=n.player.getBufferedRange(n.player.buffered2);n._checkRemoveSourceBuffer(i,n.player.currentTime,!0)}else{if(!n.player)return;n._MSEError=!0,n.changeState("_MSEError",{fragIndex:null==U?void 0:U.fragIndex,range:null==U?void 0:U.range}),n.log(Ht.LOG,"MSE append error",null==U?void 0:U.fragIndex,null==U?void 0:U.range);var l=new X.Errors(n.player,{errorType:Ql.MEDIA,errorCode:dl.mseAppend,vid:r,errorMessage:null==e?void 0:e.message,mediaError:{code:dl.mseAppend,message:null==e?void 0:e.message}});n._errorHandler(l)}}))}},{key:"_loadData",value:(n=Y(x().mark((function e(){return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.mp4&&this._isMseInit){e.next=2;break}return e.abrupt("return");case 2:return this.loadstart<0&&(this.loadstart=bl.nowTime()),e.prev=3,e.next=6,this.mp4.load(this._curLoadSegmentIdx,this._loadDataSuccess);case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.log(Ht.ERROR,"[Index] _loadData error",this.playerConfig.vid,null===e.t0||void 0===e.t0?void 0:e.t0.message);case 11:case"end":return e.stop()}}),e,this,[[3,8]])}))),function(){return n.apply(this,arguments)})},{key:"getDataBitRate",value:function(e){var t=this.mp4,n=this.playerConfig;if(!t)return 0;for(var U=t.getDataBitRate(e),i=n.definition.list,l=0,F=0;i&&F<i.length;F++)if(i[F].bitrate===U){l=i[F];break}return l}},{key:"_loadStuckCheck",value:function(){var e=this,t=this.config,n=this.player;if(!t.disableBufferBreakCheck){if(n.currentTime-(this._lastCurrentTime||0)>.1||!this.isActive&&n.paused||this.isActive&&this.playFlag&&n.paused)1!==this._bufferBreakFlag&&2!==this._bufferBreakFlag||(this.log(Ht.LOG,"视频没有卡死,重置卡死标记,curtime,",n.currentTime),this._bufferBreakFlag=0,clearTimeout(this._bufferBreakTimer),this._bufferBreakFlag=null);else if(!this._bufferBreakFlag){var U;this._bufferBreakFlag=1;var i=JSON.stringify(null==n||null===(U=n.buffered2)||void 0===U?void 0:U.bufferedList);this.log(Ht.LOG,"卡死计时开始! ".concat(t.waitingTimeOut,"ms后确认卡死,"),n.currentTime,i),this._bufferBreakTimer=setTimeout((function(){if(!e.isDestroy){if(1===e._bufferBreakFlag){var t=n.currentTime,U=n.bufferedPoint;if(U.end>0&&U.end-t>=2)return void e.retrySeekResum(t)}e._bufferBreakFlag=2,e.waitTimeoutDegrade()}}),t.waitingTimeOut)}this._lastCurrentTime=n.currentTime}}},{key:"waitTimeoutDegrade",value:function(){var e,t,n,U=this.player;this.changeState("wait_timeout"),this.log(Ht.LOG,"确认卡死!!!,curtime,",U.currentTime,JSON.stringify(null==U||null===(e=U.buffered2)||void 0===e?void 0:e.bufferedList),",duration,",null===(t=this.mp4)||void 0===t||null===(n=t.meta)||void 0===n?void 0:n.duration),this.emit("waittimeout");var i=document.hidden||"hidden"===document.visibilityState,l=new X.Errors(this.player,{errorType:Ql.RUNTIME,errorCode:i?dl.waitTimeoutWithHidden:dl.waitTimeout,errorMessage:"wait_timeout",vid:this.playerConfig.vid});this._errorHandler(l)}},{key:"retrySeekResum",value:(t=Y(x().mark((function e(t){var n,U,i=this;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=this.player,U=this.config,this.changeState("retrySeek"),this.log(Ht.LOG,"卡死但有超过2s的buffer,seek下!!!"),n.currentTime=t+1,this._resumePlay=!1,this.once("playing",(function(){i._resumePlay=!0})),this._seekResumTimer=setTimeout((function(){i._resumePlay||i.waitTimeoutDegrade(),i._seekResumTimer=null}),Math.ceil(U.waitingTimeOut/2));case 7:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"_isInBuffer",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=!1,U=this.player.video.buffered,i=0;i<U.length;i++){var l=U.start(i)-t,F=U.end(i)+t;if(l<=e.startTime&&e.endTime<=F){n=!0;break}}return n}},{key:"_doubleCheckBuffer",value:function(e){var t=this.player;return!(e.startTime>t.currentTime)||(!t.video||!t.video.buffered||(1===t.video.buffered.length||this._isInBuffer(e,.2)))}},{key:"isOpenPCDN",value:function(e){var t=this;if(this.pcdn&&this.mp4){var n=e-this.player.currentTime,U=this.pcdn,i=this.config,l=this.mp4,F=i.pcdnConfig,a=U.getPCDNInBuffer()||F.enterMinBuffer,r=U.getPCDNOutBuffer()||F.outMaxBuffer;if(n>=a){if(l.updatePCDNState(Ol),l.isUpdateNode){var d=this.player.curDefinition,Q=d.uri,o=d.bitrate;this.pcdn.getPCDNNode(Q,o,this.getPCDNReqId()).then((function(e){if(l){var n,U=t.getPCDNReqId();if(null!=e&&e.req_id&&U!==e.req_id)t.log(Ht.LOG,",getPCDNNode is not match curDefinition reqId",U,", pcdnRet.req_id",e.req_id);else if(l.updateNode(null==e?void 0:e.nodes),e&&(l.pcdnTraceInfo={uri:e.vid,fid:e.fid,trace_id:null==e?void 0:e.trace_id}),e&&l.pcdnVVStat)l.pcdnVVStat.try_req_node+=1,l.pcdnVVStat.req_node_succ+=1,l.pcdnVVStat.has_ret_node+=(null==e||null===(n=e.nodes)||void 0===n?void 0:n.length)>0?1:0}})).catch((function(e){(null==l?void 0:l.pcdnVVStat)&&(l.pcdnVVStat.try_req_node+=1),t.checkURLExpired(e,"_getPCDNNode")}))}}else n<r&&l.updatePCDNState(zl)}}},{key:"checkURLExpired",value:function(e,t){var n,U,i,l,F=bl.checkUrlIsExpired(this.config._mainURL);1===F&&this.pcdn&&(this.pcdn=null);var a=(null==e||null===(n=e.response)||void 0===n?void 0:n.url)||(null===(U=this.config.pcdnConfig)||void 0===U?void 0:U.trackerUrl);null===(i=this.player)||void 0===i||i.emit("source_error",{host:bl.getHostFromUrl(a),src:a,errorCode:null==e||null===(l=e.response)||void 0===l?void 0:l.status,message:"".concat(null==e?void 0:e.message,"-").concat(F).concat(t)})}},{key:"pushTimerStep",value:function(){var e;(null===(e=this.timerStepList)||void 0===e?void 0:e.length)>10&&this.timerStepList.shift(),this._lastTimeupdateTime2>0&&this.timerStepList.push(bl.nowTime()-this._lastTimeupdateTime2)}},{key:"_onTimeUpdate",value:function(){this.pushTimerStep(),this._lastTimeupdateTime2=bl.nowTime();var e=this.mse,t=this.mp4,n=this.player,U=this.config;if(n&&(nF()&&n.paused!==this._usePaused&&(this._usePaused?n.pause():n.play()),!this.useVideoLoad&&t)){this.checkBufferArriveEndTime();var i=n.getBufferedRange();bl.nowTime()-this._lastCheckTime>1e3&&(this._lastCheckTime=bl.nowTime(),this._loadStuckCheck(),this._startUrlExpiredCheck(),this._checkRemoveSourceBuffer(i,n.currentTime));var l=t.timeRange;if(l&&!(l.length<1)&&(e||this.mseProxy)&&this.canDownload){var F,a,r,d,Q=this._maxBufferLength,o=!1;if((this.playFlag&&n.paused||!this.isActive)&&(o=!0),o)Q=n.isInstNext&&this._nextBufferLength>=0?this._nextBufferLength:this._minBufferLength;else null!==(r=this.config)&&void 0!==r&&null!==(d=r.adaptRange)&&void 0!==d&&d.targetCacheControl&&(Q=this.adaptRange.getAdaptCacheBuffer());!this.preLoadData&&null!==(F=this.config)&&void 0!==F&&null!==(a=F.adaptRange)&&void 0!==a&&a.targetCacheControl&&(Q+=this.config.noPreloadAddBufferLen);var s=n.currentTime+Q,c=i[1]-s<0;c&&this.isOpenPCDN(i[1]),c&&((null==U?void 0:U.loadRangeType)===Ln?this.sizeRangeCheckLoad(o,s,Q,i[1]-n.currentTime):this.gopRangeCheckLoad(o,s,Q)),this.playFlag&&!this._hasTriggerBufferThreshold&&this._startBufferCheck()}}}},{key:"sizeRangeCheckLoad",value:function(e,t,n,U){var i,l=this.player,F=this.mp4,a=F.adaptTimeRange,r=a.length;if(null==a||!a.length||(null===(i=a[r-1])||void 0===i?void 0:i.range[1])<(F.size-1||l.curDefinition.size-1)||!a[r-1].downloaded){var d=a.findIndex((function(e){return!e.isLoading}));if(null==a||!a.length||d>=0||a[r-1].downloaded){var Q,o,s=this.calculateAdaptRange(e,n),c=s.adaptRangeRes,R=s.loadDuration,B=null===(Q=this.adaptRange)||void 0===Q?void 0:Q.getAdaptRangeSize(R);B>0&&(c.loadSize=B),c.loadDuration=R,this._curLoadSegmentIdx=d<0?F.updateAdaptTimeRange(null,R,B):d;var u=this._curLoadSegmentIdx;a[u].downloaded||(u=Math.max(u-1,0));var h=a[u];if(U>0&&(null==h?void 0:h.endTime)-l.currentTime>=n)return;var V=a[this._curLoadSegmentIdx];if(this._curLoadSegmentIdx>=0&&this._isInBuffer(V)&&!this._isChangeDefinition&&this._curLoadSegmentIdx>=0&&V.endTime-V.startTime>1)return a[this._curLoadSegmentIdx].downloaded=!0,a[this._curLoadSegmentIdx].isLoading=!0,this.log(Ht.LOG,"onTimeUpdate, ".concat(this._curLoadSegmentIdx," download segment, has buffer"),V.startTime,V.endTime,l.currentTime),void(F.seekTime=V.endTime);c.idx=this._curLoadSegmentIdx,this.adaptRangeRes.length&&(null===(o=this.adaptRangeRes[c.length-1])||void 0===o?void 0:o.idx)===this._curLoadSegmentIdx||(this.adaptRangeRes.push(c),this.log(Ht.LOG,"adaptRangeRes>>>>",c)),this.log(Ht.LOG,"[onTimeUpdate],load index==>>>, ",this._curLoadSegmentIdx,JSON.stringify(a[this._curLoadSegmentIdx])),this._loadData()}}}},{key:"gopRangeCheckLoad",value:function(e,t,n){var U=this,i=this.mp4,l=i.timeRange,F=i.adaptTimeRange,a=this.player;l.every((function(i,l){if(void 0!==i.adaptTimeRangeIdx&&i.adaptTimeRangeIdx>=0&&F&&F[i.adaptTimeRangeIdx].downloaded)return!0;var r=U.mp4.getAdaptIdxBySrcIdx(l,!0),d=r>=0?F[r]:null,Q=r>=0&&U._isInBuffer(d);if(!U._isChangeDefinition&&r>=0&&d.endTime-d.startTime>1&&Q)return F[r].downloaded=!0,F[r].isLoading=!0,U.log(Ht.LOG,"onTimeUpdate, ".concat(r," download segment, has buffer"),d.startTime,d.endTime,a.currentTime),!0;if(i.startTime-a.currentTime<t){var o,s,c,R;if(r<F.length&&null!==(o=F[r])&&void 0!==o&&o.isLoading)return!1;var B=U.calculateAdaptRange(e,n),u=B.adaptRangeRes,h=B.loadDuration;U._curLoadSegmentIdx=U.mp4.updateAdaptTimeRange(l,h),u.idx=U._curLoadSegmentIdx,(null===(s=U.config)||void 0===s||null===(c=s.adaptRange)||void 0===c?void 0:c.rangeControl)&&(u.loadDuration=U.mp4.adaptTimeRange[U._curLoadSegmentIdx].duration),U.adaptRangeRes.length&&(null===(R=U.adaptRangeRes[U.adaptRangeRes.length-1])||void 0===R?void 0:R.idx)===U._curLoadSegmentIdx||(U.adaptRangeRes.push(u),U.log(Ht.LOG,"adaptRangeRes>>>>",u));var V=F[U._curLoadSegmentIdx];if(U._isInBuffer(V))return V.downloaded=!0,V.isLoading=!0,U.log(Ht.LOG,"onTimeUpdate_, ".concat(U._curLoadSegmentIdx," download segment, has buffer"),V.startTime,V.endTime,a.currentTime),!0;U.log(Ht.LOG,"[onTimeUpdate],load index==>>>, ",U._curLoadSegmentIdx,JSON.stringify(U.mp4.adaptTimeRange[U._curLoadSegmentIdx])),U._loadData()}}))}},{key:"checkBufferArriveEndTime",value:function(){var e=this.player,t=this.mse,n=this.mp4;if(e&&t&&n){var U=e.getBufferedRange(),i=n.getMediaEndTime();i>0&&U[1]>=i&&!t.isEnded&&(this.log(Ht.LOG,"checkBufferArriveEndTime endOfStream, enfTime",i,", bufferRange,",JSON.stringify(U),",currentTime,",e.currentTime),t.endOfStream())}}},{key:"calculateAdaptRange",value:function(e,t){var n,U,i,l,F,a,r,d,Q={forceSetMin:e};(null!==(n=this.pcdn)&&void 0!==n&&n.isOpenAdaptPCDN&&(Q.PCDNInBuffer=this.pcdn.curPCDNInBuffer,Q.PCDNOutBuffer=this.pcdn.curPCDNOutBuffer),!this.playFlag||e)?a=this._minBufferLength:null!==(r=this.config)&&void 0!==r&&null!==(d=r.adaptRange)&&void 0!==d&&d.rangeControl?(a=this.adaptRange.getAdaptLoadDuration(),Q.loadTarDuration=a):a=this.config.rangeMaxDuration;return(null===(U=this.config)||void 0===U||null===(i=U.adaptRange)||void 0===i?void 0:i.targetCacheControl)&&(Q.cachedBufferDur=t),!this.playFlag&&null!==(l=this.config)&&void 0!==l&&null!==(F=l.adaptRange)&&void 0!==F&&F.rangeControl&&(Q.loadTarDuration=a),{adaptRangeRes:Q,loadDuration:a}}},{key:"checkReUseMSE",value:function(e,t){var n=this,U=this.mse;if(U)if(e||this.config.reUseMSE){var i;U.clearOpQueues(tn.VIDEO,t),U.abort(tn.VIDEO);var l=null===(i=this.player)||void 0===i?void 0:i.buffered;if((null==l?void 0:l.length)>0){var F=l.end(l.length-1);this.log(Ht.LOG,"reUseMSE remove buffer, 0-",F),this._canUpdateDuration=!1,this.removeBuffer(tn.VIDEO,0,F,(function(){var e,t;n._canUpdateDuration=!0,(null===(e=n.mp4)||void 0===e||null===(t=e.meta)||void 0===t?void 0:t.duration)&&n.updateMSEDuration()}))}}else U.unbindMedia(),this.mse=null,this._unloadVideo()}},{key:"updateMSEDuration",value:function(){var e,t=this.mse,n=this.mp4;this._canUpdateDuration&&null!=n&&null!==(e=n.meta)&&void 0!==e&&e.duration&&n.meta.duration!==t.duration&&(this.log(Ht.LOG,"updateMSEDuration ",n.meta.duration,",oldDuration,",t.duration),t.updateDuration(n.meta.duration),this._canUpdateDuration=null)}},{key:"_reset",value:function(){for(var e in this._definitionChangePointInfo=null,this._isReceiveEndedEvent=!1,this.adaptRangeRes=[],this.states=[],this.hitpreload=!1,this._sTime=bl.nowTime(),this._isChangeDefinition=!1,this._removeBuffeEndTime=0,this._usePaused=!1,this.useVideoLoad=!1,this._isMseInit=!1,this.endofstream=!1,this._curLoadSegmentIdx=0,this.emitExpireTimestamp=null,this.preLoadData=null,this.forPreloadTimeCache=null,this.playFlag=!1,this.waitLevelStartTime=-1,this._waitAdjustTimeCnt=0,this._initPromise&&"pending"===this._initPromise.state&&this._initPromise.reject(GF),clearTimeout(this.checkResumePlayTimer),this.checkResumePlayTimer=null,this._stopProgress(),this.mp4&&(this.mp4.destroy(),this.mp4=null),this.mseProxy&&(this.player.video.removeEventListener("lowdecode",this._onDegrade),this.player.video.removeEventListener("error",this._onError)),this._unloadVideo(),this._cancelPendingPromises(),this._abrService&&(this._abrService.destroy(),this._abrService=null),this.firstFrameTime)Object.prototype.hasOwnProperty.call(this.firstFrameTime,e)&&(this.firstFrameTime[e]="apcnt"===e||"aplen"===e?0:"newplayer"===e?bl.nowTime():-1);clearTimeout(this._waitInBufferTimer),this._waitInBufferTimer=null,this.canDownload=!0,this.loadstart=-1,this._loadStartEventTime=-1,this.startLoadData=-1}},{key:"removeErrorUrls",value:function(e,t,n){return e.errorCode===dl[403]&&this._emitExpireEvent(e),n}},{key:"checkIsDegraded",value:function(e){var t=this.config.notDegradeErrorList;return!((null==t?void 0:t.length)>0&&(e.errorCode===dl.timeout&&t.indexOf("timeout")>=0||e.errorCode===dl[403]&&(t.indexOf(403)>=0||t.indexOf("403")>=0)||e.errorCode===dl[404]&&(t.indexOf(404)>=0||t.indexOf("404")>=0)))}},{key:"_startDegradedPlayback",value:function(e,t){var n=this;this.canDownload=!1;var U=this.player,i=this.playerConfig,l=this.config;this.endofstream=!1,this._currentTime=U.currentTime||0,this.player.pause(),this._reset(),this._replay=null;var F=i.H264DefinitionList;if(this.codecType===PF&&this.softDecode)this.log(Ht.LOG,"h265 softDecode err,degrade use 264 play",i.vid),this._onDegrade(e);else if(this.codecType===HF||l.supportHevc||l.supportVvcc||(null==F?void 0:F.length)>0){var a=l.drm,r=l.kid,d=l.drmKeyToken,Q=l.keyValue,o=l.secretKey;if(a||r||d||Q||o)a&&Object.keys(a).map((function(t){a&&(e[t]=a[t])})),this.log(Ht.ERROR,"final error !!!!, ",i.vid,null==e?void 0:e.errorCode,null==e?void 0:e.errorMessage),this.emit("error",e);else{var s;this.log(Ht.LOG,this.codecType,"MSE degrade video,",i.vid,U.currentTime),this.emit(IF,{errc:null==e?void 0:e.errorCode,err_msg:(null==e?void 0:e.errorMessage)||(null==e?void 0:e.message),codec_type:this.codecType,media_type:i.mediaType}),this.useVideoLoad=!0,this.destroyMSE(),this.__onmetadataHandle=function(){n._currentTime&&(U.currentTime=n._currentTime),n.log(Ht.LOG,"DegradedPlayback update currentTime",i.vid,n.codecType,n._currentTime),t?n.player.pause():n.player.play(),U.video.removeEventListener("loadedmetadata",n.__onmetadataHandle),n.__onmetadataHandle=null},U.video.addEventListener("loadedmetadata",this.__onmetadataHandle);var c=i.url;if((null==e||null===(s=e.message)||void 0===s?void 0:s.indexOf(En))>=0&&(null==F?void 0:F.length)>0){var R=F.length,B=this.player.curDefinition.definition,u=B&&F.find((function(e){return e.definition===B}));u||(i.H264DefinitionList.sort((function(e,t){return e.bitrate-t.bitrate})),u=i.H264DefinitionList[Math.floor(R/2)]),u&&(c=u.url,this.playerConfig.codecType=HF,this.codecType=HF)}this._setPlayerSrc(c)}}else this.log(Ht.ERROR,"degrade player failed"),this.emit("error",e)}},{key:"getAdaptTimeRangeIdx",value:function(e){var t,n,U=this.config,i=this.adaptRange,l=U.segmentMinDuration;return i&&null!=U&&null!==(t=U.adaptRange)&&void 0!==t&&t.rangeControl&&(l=i.getAdaptLoadDuration()),null===(n=this.mp4)||void 0===n?void 0:n.updateAdaptTimeRange(e,l)}},{key:"_startProgress",value:function(){this.initTimer(),this._requestTimer.start(),this._hasStartProgress=!0}},{key:"_unloadVideo",value:function(){this.log(Ht.LOG,"unloadVideo");var e=this.player;try{e.video&&e.video.src&&(/^blob/.test(e.currentSrc)||/^blob/.test(e.video.src)||(this.log(Ht.LOG,"unloadVideo src"),e.video.removeAttribute("src"),e.video.load()))}catch(t){this.log(Ht.ERROR,"unloadVideo error",null==t?void 0:t.message)}}},{key:"_addPendingPromise",value:function(e){this._pendingPromises.push(e)}},{key:"_removePendingPromise",value:function(e){this.log(Ht.LOG,"removePendingPromise",null==e?void 0:e.id);var t=this._pendingPromises.indexOf(e);t>-1&&this._pendingPromises.splice(t,1)}},{key:"_cancelPendingPromises",value:function(){this._pendingPromises.length>0&&this._pendingPromises.forEach((function(e){e.reject(GF)})),this._pendingPromises=[]}},{key:"_onMediaExpired",value:function(){this.log(Ht.LOG,"MediaExpired stopProgress"),this._stopProgress(),this.emit(yn.MEDIA_EXPIRED)}},{key:"_isEnded",value:function(){var e,t,n=this.player,U=this.mp4,i=n.bufferedPoint,l=i?i.end:0,F=n.currentTime;F>1&&l>F&&(l-F>=2||n.duration-F<1)&&2===n.video.readyState?bl.nowTime()-this._lastCheckLagTime>=3e3&&(this.log(Ht.LOG,"[has buffer but waiting,seek 0.2 adjust],curTime,",F,", bufferend,",l,", duration,",null==U||null===(e=U.meta)||void 0===e?void 0:e.duration),n.currentTime=F+.2,this._lastCheckLagTime=bl.nowTime()):this._lastCheckLagTime=bl.nowTime();!this.endofstream&&this.bufferEndTime>0&&this.mse&&this.bufferEndTime-n.currentTime<.5&&(this.log(Ht.LOG,"[isEnded endOfStream],curTime,",n.currentTime,", bufferend,",l,", duration,",null==U||null===(t=U.meta)||void 0===t?void 0:t.duration),this.endofstream=!0,this.mse.endOfStream().then((function(){})));return!!(U&&U.meta&&U.meta.duration-n.currentTime<.5)&&(this._stopProgress(),this.log(Ht.LOG,"[isEnded],stopProgress and endOfStream,curTime, ",n.currentTime,", bufferend,",l,", duration,",U.meta.duration),this.mse&&this.mse.endOfStream().then((function(){})),!0)}},{key:"emitVideoEvent",value:function(e){var t=this;if(!this._checkEndedTimer){var n=this.player,U=this.mp4;this._checkEndedTimer=setTimeout((function(){t._checkEndedTimer=null,!t._isReceiveEndedEvent&&U.meta.duration-n.currentTime<.5&&(t.log(Ht.LOG,"[ do emit video ended event],curTime,",n.currentTime,", bufferend,",e,", duration,",U.meta.duration),t.emit("ended"))}),2e3)}}},{key:"_clearMediaKeys",value:function(){var e=this.player;e.video&&"function"==typeof e.video.setMediaKeys&&e.video.setMediaKeys(null).catch((function(){}))}},{key:"_checkRemoveSourceBuffer",value:function(e,t,n,U){var i=this,l=this.mse,F=this.mp4,a=this.player;if(l&&F&&a&&(n&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),e||(e=a.getBufferedRange(a.buffered2)),t||(t=a.currentTime),!(!n&&bl.nowTime()-this._checkRemoveBufferLastTime<=this.config.removeBufferLen||this.endofstream)&&(this._checkRemoveBufferLastTime=bl.nowTime(),e&&e[0]>=0&&(t-e[0]>this.config.removeBufferLen||l.isFull())))){var r=U?e[1]:t-(l.isFull()?0:15),d=F.getFragmentIdx(r);if(d>0&&(U||F.timeRange[d].startTime<t)){var Q=Math.floor(Math.min(F.timeRange[d].startTime,e[1])),o=Math.max(F.timeRange[0].endTime+1,e[0]);o<Q?(this.log(Ht.LOG,"[checkremoveSourceBuffer], remove range==>>>",o,Q,t),this.removeBuffer(tn.VIDEO,o,Q)):l.isFull()&&!this._removeBufferTimer&&(this._removeBufferTimer=setTimeout((function(){i._checkRemoveSourceBuffer(null,null,!0)}),1e4))}}}},{key:"onMediaUpdate",value:function(e){var t=e.vid,n=e.kid,U=e.url,i=this.player,l=this.config;if(t===this.playerConfig.vid&&n===l.kid&&U){this.playerConfig.url=U,this._handlerUrl(U);var F=l._mainURL;return this.useVideoLoad?i.src=U:this.mp4&&this.mp4.updateUrl(F),!0}return!1}},{key:"enableAutoBuffer",value:function(e){var t=this;if(e){if(!this._allInitPromise)return void this.log(Ht.LOG,"player destroyed!!");this._allInitPromise.then((function(){t.log(Ht.LOG,"enableAutoBuffer true"),t._startProgress()}))}else this._stopProgress(),this.log(Ht.LOG,"enableAutoBuffer false")}},{key:"bitRateAdapter",get:function(){return this.player&&this.player.plugins&&this.config.needAutoBitrate?this.player.plugins.bitrateselector:null}},{key:"getDefinitonFromAdapter",value:function(e,t){if(!this.bitRateAdapter)return null;var n=this.bitRateAdapter;return n.getSuitableBitrate?n.getSuitableBitrate(e,t):n.bitRateAdapter?n.bitRateAdapter.select(e):null}},{key:"addPreloader",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.playerId=this.playerId;var t=this.player.preloader;t?t.addPreloader(e,this.playerConfig.vid,this.playerId):this.log(Ht.LOG,"preloader has destroyed")}},{key:"addPreloaderList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=this.player.preloader;t?t.addPreloaderList(e,this.playerConfig.vid,this.playerId):this.log(Ht.LOG,"preloader has destroyed")}},{key:"log",value:function(e,t){for(var n=(this.playerConfig||{}).vid,U=n?"[Index]".concat(n," ").concat(t):"[Index] ".concat(t),i=arguments.length,l=new Array(i>2?i-2:0),F=2;F<i;F++)l[F-2]=arguments[F];ml.apply(void 0,[this.logger,e,U].concat(l))}},{key:"_emitInitFail",value:function(e){this.log(Ht.ERROR,"initFail, reason:",e),this.emit(yn.INIT_FAIL,e)}},{key:"useVideoLoad",get:function(){return this._useVideoLoad},set:function(e){this._useVideoLoad=e}},{key:"ready",get:function(){return this._allInitPromise}},{key:"speed",get:function(){return parseInt(ql.speed,10)}},{key:"version",get:function(){return rl}},{key:"realTimeSpeed",get:function(){return zF}},{key:"opQueueLen",get:function(){var e=this.mse&&this.mse._queue?this.mse._queue[tn.VIDEO]:[];return e?e.length:0}},{key:"loadSegmentTimeRange",get:function(){if(!this.mp4)return[0,0,0,0];var e=this.mp4.adaptTimeRange;if(e&&e.length>0&&this._curLoadSegmentIdx>=0&&this._curLoadSegmentIdx<e.length){var t=e[this._curLoadSegmentIdx];if(t.isLoading){var n=t.range;return[Number(t.startTime),Number(t.endTime)].concat(te(n))}}return[0,0,0,0]}},{key:"preloadState",get:function(){return this.player.preloader&&this.player.preloader.loadingCount}},{key:"moovSize",get:function(){return 0}},{key:"isDestroy",get:function(){return!this.player}},{key:"cancelPreloadTask",value:function(){this.preloader&&this.preloader.cancelLoading(this.player.playerId)}},{key:"removeAllPreloadData",value:function(){this.preloader&&this.preloader.removeAll()}},{key:"removeAllPreloadTask",value:function(){this.preloader&&this.preloader.removeAllPreloadTask()}},{key:"domain",get:function(){return bl.getHostFromUrl(this.loadURL)}},{key:"loadURL",get:function(){var e=this.player,t=e.currentSrc;return/^blob/.test(e.currentSrc)&&(t=this.mp4.currentLoadUseUrl()),t}},{key:"abrInstance",get:function(){return this._abrService?this._abrService.abrInstance:null}},{key:"_handleUrlExpire",value:function(){var e=this,t=this.config,n=this.player,U=n.paused;(new Date).getTime()/1e3>=this.urlExpireTimestamp&&this.urlExpireTimestamp>0&&!U&&t.getServerTime&&(n.serverTimeDiffPromise=n.serverTimeDiffPromise||t.getServerTime().catch((function(){return 0})),n.serverTimeDiffPromise.then((function(t){if(t&&(n.serverTimeDiff=(new Date).getTime()/1e3-t),(new Date).getTime()/1e3>=e.urlExpireTimestamp+n.serverTimeDiff){e.urlExpireTimestamp=(new Date).getTime()/1e3+86400;var U=new ol("network",dl[403]);e._emitExpireEvent(U)}})))}},{key:"_emitExpireEvent",value:function(e){var t=this.player,n=(new Date).getTime()/1e3;return this.emitExpireTimestamp?n-this.emitExpireTimestamp>300&&(this.emitExpireTimestamp=n,t.emit("MEDIA_EXPIRED",e),!0):(this.emitExpireTimestamp=n,t.emit("MEDIA_EXPIRED",e),!0)}},{key:"reportBugPostPlayerLog",value:function(){this.emit(xF)}}],[{key:"pluginName",get:function(){return"Mp4EncryptPlayer"}},{key:"defaultConfig",get:function(){return{onlyInit:!1,useWaterLevel:!1,maxBufferLength:10,minBufferLength:5,tickInSeconds:.2,getLicenseUrl:"",xhrSetup:{},retryCount:1,retryDelay:1e3,timeout:3e3,preloadCacheType:1,needPreloadRangeList:!1,isOpenPreload:!0,needPreloadCheck:!1,preloadTime:0,preloadMaxCacheCount:0,needAutoBitrate:!0,keyValue:null,drm:null,switchBitRateWay:!1,enableWorker:!1,bufferThreshold:10,removeBufferLen:60,focusUserDefinition:!1,resumePlayWaterLevel:2,waitJampBufferMaxCnt:3,waitingInBufferTimeOut:5e3,waitingTimeOut:1e4,notDegradeErrorList:["timeout",403,404],h265Degrade:!1,forceVideoPlay:!1,segmentMinDuration:3,supportHevc:void 0,H264Config:null,reqOptions:{},rangeMaxDuration:15,getRequestOptionsCallback:null,closeDowngrade:!1,loaderType:"fetch",reUseMSE:!1,urlExpireDisableErrorEvent:!1,logCacheConfig:{logCacheLevel:Ht.LOG,logMaxSize:204800},noPreloadAddBufferLen:0,enableFPSStuckHandle:!1,loadRangeType:Xn,timerInWorker:!1}}},{key:"registerPreloader",value:function(e){wF=e}},{key:"speed",get:function(){return zF}},{key:"realTimeSpeed",get:function(){return zF}},{key:"version",get:function(){return rl}}]),r}(X.BasePlugin);OF.isSupported=function(){return lF()&&iF()&&!tF()},OF.isEMESupported=UF,OF.isSupportedWithXgmse=function(){return iF()&&!tF()},OF.isMediaSourceSupported=lF,OF.isWebAssemblySupported=iF,OF.CUSTOM_EVENTS=yn,OF.updateUnionInfo=cF.XGSecretKey.updateUnionInfo;var _F="PRELOAD_NEXT",AF="PRELOAD_SEG_DONE",qF="PREPARE",$F="IDLE",ea="FINISH",ta=1,na=0,Ua=1,ia=function(e){P(n,e);var t=q(n);function n(e,U,i,l,F){var a;M(this,n),(a=t.call(this)).state=qF,a.options=e||{},a.logger=e.logger||function(){},a._preloadManager=U,a.player=U.player;var r=i.handlers,d=i.predictInst,Q=i.readyPromise;return a._predictInst=d,a._handlers=r,a._predictInstReadyPromise=Q,a._toLoadList=[],a.retryCount=0,a._cachedHandler=l,a._cachedDataHandler=F,a.cnt=0,a}return w(n,[{key:"start",value:function(){var e=this,t=new RF;return this._handlers.start(this.options).then((function(n){n.onObtain().then((function(U){e._predictInstReadyPromise.then((function(){e._predictInst.updateMediaInfos(U);var i=e._predictInst.preloadPredict(e.options),l=e._predictInst.cachedData;e._cachedDataHandler(Object.assign({vid:e.options.vid},{data:l}));var F=Object.assign(i,e.options);n.onTransform(F).then((function(n){e._toLoadList=n,t.resolve(n)}))}))}))})).catch((function(){t.reject(new Error("preload unit start error"))})),t}},{key:"preloadSeg",value:function(){var e=this;if(0===this._toLoadList.length)return this.state=ea,void this.emit(AF,!0);this.state="PRELOADING";var t=this._toLoadList.shift();this._handlers.onRequest(t,(function(n){var U=Object.assign({},t.extData,n);e._cachedHandler(U)})).then((function(){e.state=$F,e.emit(AF)})).catch((function(){e.requestError(),e.emit(AF,!1)}))}},{key:"requestError",value:function(){this.retryCount++,this.state=$F,this.retryCount>=10&&(this.state=ea),this.emit("ONE_STEP_DONE"),this.logger("preload request error")}},{key:"cancelLoading",value:function(){this._toLoadList=[]}},{key:"destroy",value:function(){this.removeAllListeners()}}]),n}(tt);var la=function(){try{if("undefined"!=typeof indexedDB)return indexedDB}catch(e){}}();function Fa(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function aa(e){return"string"!=typeof e&&(console.warn("".concat(e," used as a key, but it is not a string.")),e=String(e)),e}var ra={},da="readonly",Qa="readwrite";function oa(e){var t=ra[e.name],n={};n.promise=new Promise((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function sa(e,t){return new Promise((function(n,U){if(ra[e.name]=ra[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return n(e.db);oa(e),e.db.close()}var i=[e.name];t&&i.push(e.version);var l=null==la?void 0:la.open.apply(la,i);t&&(l.onupgradeneeded=function(t){var n=l.result;try{n.createObjectStore(e.storeName)}catch(U){if("ConstraintError"!==U.name)throw U;console.warn('The database "'.concat(e.name,'" has been upgraded from version ').concat(t.oldVersion," to\n version ").concat(t.newVersion,', but the storage "').concat(e.storeName,'" already exists.'))}}),l.onerror=function(e){e.preventDefault(),U(l.error)},l.onsuccess=function(){n(l.result),function(e){var t=ra[e.name].deferredOperations.pop();if(t)t.resolve(),t.promise}(e)}}))}function ca(e){return sa(e,!1)}function Ra(e){return sa(e,!0)}function Ba(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),U=e.version<e.db.version,i=e.version>e.db.version;if(U&&(e.version!==t&&console.warn('The database "'.concat(e.name,"\" can't be downgraded from version ").concat(e.db.version," to\n version ").concat(e.version,".")),e.version=e.db.version),i||n){if(n){var l=e.db.version+1;l>e.version&&(e.version=l)}return!0}return!1}function ua(e){oa(e);for(var t=ra[e.name],n=t.forages,U=0;U<n.length;U++){var i=n[U];i._dbInfo.db&&(i._dbInfo.db.close(),i._dbInfo.db=null)}return e.db=null,ca(e).then((function(t){return e.db=t,Ba(e)?Ra(e):t})).then((function(U){e.db=t.db=U;for(var i=0;i<n.length;i++)n[i]._dbInfo.db=U})).catch((function(t){throw function(e,t){var n=ra[e.name].deferredOperations.pop();if(n)n.reject(t),n.promise}(e,t),t}))}function ha(e,t,n,U){void 0===U&&(U=1);try{var i=e.db.transaction(e.storeName,t);n(null,i)}catch(l){if(U>0&&(!e.db||"InvalidStateError"===l.name||"NotFoundError"===l.name))return Promise.resolve().then((function(){if(!e.db||"NotFoundError"===l.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),Ra(e)})).then((function(){return ua(e).then((function(){ha(e,t,n,U-1)}))})).catch(n);n(l)}}var Va=function(){function e(){M(this,e)}return w(e,[{key:"ready",value:function(){return this._ready}},{key:"_initStorage",value:function(e){var t=this;t._defaultConfig=e;var n={db:null,name:"",version:""};if(e)for(var U in e)n[U]=e[U];var i=ra[n.name];i||(i={forages:[],db:null,dbReady:null,deferredOperations:[]},ra[n.name]=i),i.forages.push(t),t._initReady||(t._initReady=t.ready,t._ready=t._fullyReady);var l=[];function F(){return Promise.resolve()}for(var a=0;a<i.forages.length;a++){var r=i.forages[a];r!==t&&l.push(r._initReady().catch(F))}var d=i.forages.slice(0);return t._ready=Promise.all(l).then((function(){return n.db=i.db,ca(n)})).then((function(e){return n.db=e,Ba(n,t._defaultConfig.version)?Ra(n):e})).then((function(e){n.db=i.db=e,t._dbInfo=n;for(var U=0;U<d.length;U++){var l=d[U];l!==t&&(l._dbInfo.db=n.db,l._dbInfo.version=n.version)}})),t._ready}},{key:"probeSupport",get:function(){return function(){try{if(null==la||!la.open)return!1;var e=/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(n){return!1}}()}},{key:"getItem",value:function(e,t){var n=this;e=aa(e);var U=new Promise((function(t,U){n.ready().then((function(){ha(n._dbInfo,da,(function(i,l){if(i)return U(i);try{var F=l.objectStore(n._dbInfo.storeName).get(e);F.onsuccess=function(){var e=F.result;void 0===e&&(e=null),t(e)},F.onerror=function(){U(F.error)}}catch(a){U(a)}}))})).catch(U)}));return Fa(U,t),U}},{key:"setItem",value:function(e,t,n){var U=this;e=aa(e);var i=new Promise((function(n,i){U.ready().then((function(){return U._dbInfo,t})).then((function(t){ha(U._dbInfo,Qa,(function(l,F){if(l)return i(l);try{var a=F.objectStore(U._dbInfo.storeName);null===t&&(t=void 0);var r=a.put(t,e);F.oncomplete=function(){void 0===t&&(t=null),n(t)},F.onabort=F.onerror=function(){var e=r.error?r.error:r.transaction.error;i(e)}}catch(d){i(d)}}))})).catch(i)}));return Fa(i,n),i}},{key:"removeItem",value:function(e,t){var n=this;e=aa(e);var U=new Promise((function(t,U){n.ready().then((function(){ha(n._dbInfo,Qa,(function(i,l){if(i)return U(i);try{var F=l.objectStore(n._dbInfo.storeName).delete(e);l.oncomplete=function(){t()},l.onerror=function(){U(F.error)},l.onabort=function(){var e=F.error?F.error:F.transaction.error;U(e)}}catch(a){U(a)}}))})).catch(U)}));return Fa(U,t),U}},{key:"clear",value:function(e){var t=this,n=new Promise((function(e,n){t.ready().then((function(){ha(t._dbInfo,Qa,(function(U,i){if(U)return n(U);try{var l=i.objectStore(t._dbInfo.storeName).clear();i.oncomplete=function(){e()},i.onabort=i.onerror=function(){var e=l.error?l.error:l.transaction.error;n(e)}}catch(F){n(F)}}))})).catch(n)}));return Fa(n,e),n}},{key:"length",value:function(e){var t=this,n=new Promise((function(e,n){t.ready().then((function(){ha(t._dbInfo,da,(function(U,i){if(U)return n(U);try{var l=i.objectStore(t._dbInfo.storeName).count();l.onsuccess=function(){e(l.result)},l.onerror=function(){n(l.error)}}catch(F){n(F)}}))})).catch(n)}));return Fa(n,e),n}},{key:"all",value:function(e){var t=this,n=new Promise((function(e,n){t.ready().then((function(){ha(t._dbInfo,da,(function(U,i){if(U)return n(U);try{var l=i.objectStore(t._dbInfo.storeName).openCursor(),F=[];l.onsuccess=function(){var t=l.result;t?(F.push({key:t.key,value:t.value}),t.continue()):e(F)},l.onerror=function(){n(l.error)}}catch(a){n(a)}}))})).catch(n)}));return Fa(n,e),n}},{key:"_fullyReady",value:function(e){var t=this,n=t._initReady().then((function(){var e=ra[t._dbInfo.name];if(null!=e&&e.dbReady)return e.dbReady}));return function(e,t,n){"function"==typeof t&&e.then(t),"function"==typeof n&&e.catch(n)}(n,e,e),n}}]),e}(),Za=function(){function e(){M(this,e)}return w(e,[{key:"_initStorage",value:function(e){var t=e.name,n=e.storeName,U="".concat(t,"_").concat(n);return this.key=U,window[U]&&"object"===I(window[U])||(window[U]={}),this.store=window[U],Promise.resolve()}},{key:"getItem",value:function(e,t){var n=this.store[e];return void 0===n&&(n=null),this._internalPromise(t,n)}},{key:"setItem",value:function(e,t,n){return this.store[e]=t,this._internalPromise(n)}},{key:"removeItem",value:function(e,t){return delete this.store[e],this._internalPromise(t)}},{key:"clear",value:function(e){return this.store={},window[this.key]={},this._internalPromise(e)}},{key:"length",value:function(e){var t=Object.keys(this.store).length;return this._internalPromise(e,t)}},{key:"_internalPromise",value:function(e,t){var n=t?Promise.resolve(t):Promise.resolve();return Fa(n,e),n}},{key:"all",value:function(e){for(var t=[],n=Object.keys(this.store),U=0;U<n.length;U++){var i=n[U];t.push({key:i,value:this.store[i]})}return this._internalPromise(e,t)}},{key:"probeSupport",value:function(){return!0}}]),e}(),ma={description:"",name:"__PRE_CACHE__",storeName:"keyvaluepairs",version:1},pa="__PRE_CACHE__KEYS",Sa=function(){function e(t,n){M(this,e);var U=n===ta?Za:Va;this._driver=new U,this._driver._initStorage(ma).catch((function(){})),this._hasIdbForbidden=!1,this._maxCache=!t||t<=0?200:t,this.setMaxCache(this._maxCache),this._allCachedKeys={},this._allCachedTimeKeys={},this.getCachedKeysFromLocal(),this._readyPromise=new RF,this.init()}return w(e,[{key:"getCachedKeysFromLocal",value:function(){var e=ZF.getItem(pa);if(e)for(var t=e.split("|"),n=0;n<t.length;n++){var U=t[n],i=this._getCacheKeyInfos(U),l=i.time,F=i.cachedKey;this._allCachedKeys[F]=1,this._allCachedTimeKeys[F]=l}}},{key:"_getCacheKeyInfos",value:function(e){var t,n=e.split("$");return 2===n.length&&(t=n[0],e=n[1]),{time:t,cachedKey:e}}},{key:"writeCachedKeysToLocal",value:function(e){var t=[];this._allCachedKeys={},this._allCachedTimeKeys={};for(var n=0;n<e.length;n++){var U=e[n].key,i=this._getCacheKeyInfos(U),l=i.time,F=i.cachedKey;this._allCachedKeys[F]=1,this._allCachedTimeKeys[F]=l,t.push(U)}var a=t.join("|");ZF.setItem(pa,a)}},{key:"init",value:function(){var e=this;this._driver.setItem("test","test").then((function(){})).catch((function(){e._hasIdbForbidden=!0})).finally((function(){e._driver.removeItem("test").catch((function(){})),e._hasIdbForbidden&&(e._driver=new Za,e._driver._initStorage(ma)),e._getAll(),e._readyPromise.resolve()}))}},{key:"_getAll",value:function(){var e=this;this._driver.all().then((function(t){e._cachedLength=t.length;var n=t.length-e._maxCache,U=t;if(n>0){var i=t.slice(0,n);U=t.slice(n);for(var l=0;l<i.length;l++)e.removeItem(i[l].key).then((function(){}))}e.writeCachedKeysToLocal(U)})).catch((function(){}))}},{key:"getItem",value:function(e,t){if(!this.hasItem(e))return Promise.resolve(!1);var n=this._getTimeKey(e).timeKey;return this._driver.getItem(n,t)}},{key:"setItem",value:function(e,t,n){var U=this;this._getTimeKey(e).timeKey&&this.removeItem(e);var i=(new Date).getTime();this._allCachedKeys[e]=1,this._allCachedTimeKeys[e]=i;var l=this._genTimeKey(e,i);return n=n?function(){U._getAll(),n()}:function(){U._getAll()},this._driver.setItem(l,t,n)}},{key:"_getTimeKey",value:function(e){var t=this._allCachedTimeKeys[e],n=e;return t&&(n=this._genTimeKey(e,t)),{timeKey:n,time:t}}},{key:"_genTimeKey",value:function(e,t){return"".concat(t).concat("$").concat(e)}},{key:"removeItem",value:function(e,t){var n=this._getTimeKey(e).timeKey,U=this._driver.removeItem(n,t);return delete this._allCachedKeys[e],delete this._allCachedTimeKeys[e],U}},{key:"hasItem",value:function(e){return!!this._allCachedKeys[e]}},{key:"clear",value:function(e){return this._driver.clear(e)}},{key:"length",value:function(e){return this._driver.length(e)}},{key:"setMaxCache",value:function(e){"number"==typeof e&&e>0&&(this._maxCache=e)}}]),e}(),Ja=function(e){P(n,e);var t=q(n);function n(e,U){var i,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return M(this,n),(i=t.call(this))._preloadDataList=[],i._currentPreloadInst=null,i.autoPreload=e.autoPreload||!1,i._autoCheck=e.autoCheck||{enable:!1,interval:1e3},i._onPreloadNext=i.onPreloadNextReady.bind(A(i)),i.on(_F,i._onPreloadNext),i._preloaderConfigs={},i.update(e,U,l),i._cacheInst=new Sa(e.preloadMaxCacheCount,e.preloadCacheType),i._preloadCacheProgress={},i._ptag_=!0,i._cachedDatas={},i._taskIntervalId=null,i}return w(n,[{key:"startCheckTask",value:function(){var e=this,t=this._autoCheck,n=this._preloadDataList;(this._taskIntervalId&&(window.clearTimeout(this._taskIntervalId),this._taskIntervalId=null),0!==n.length)&&(this._checkIfCanPreload()&&this.onPreloadNext(),this._taskIntervalId=window.setTimeout((function(){e.startCheckTask()}),t.interval||1e3))}},{key:"stopCheckTask",value:function(){this._taskIntervalId&&(window.clearTimeout(this._taskIntervalId),this._taskIntervalId=null)}},{key:"_checkIfCanPreload",value:function(){if(null==this._currentPreloadInst&&this._preloadDataList.length>0){var e=this._preloadDataList[0].data;if(e.payload){var t=this._getPreloaderKey(e),n=this._preloaderConfigs[t];if(null!=n&&n.handlers){var U=n.handlers.checkIfCanPreload;return U?U(e):(this.stopCheckTask(),!1)}return console.warn("need to set vtype, no preloader",e),this.stopCheckTask(),!1}}return!1}},{key:"_getPreloaderKey",value:function(e){return e.vtype?e.vtype:"DEFAULT"}},{key:"update",value:function(e,t,n){if(!n)throw new Error("PreloaderManager predictInst is null");var U=this._getPreloaderKey(e);this._preloaderConfigs[U]={predictInst:n,readyPromise:n.init(e),handlers:t}}},{key:"cachedDatas",get:function(){return this._cachedDatas}},{key:"onCacheSegment",value:function(e){var t=e.vid,n=e.format,U=e.cacheKey,i=e.total,l=e.loaded,F=e.isInitSegment,a=e.mediaType,r=this.getProgressCacheKey(t,n,a),d=this._preloadCacheProgress[r];d||(d=this._preloadCacheProgress[r]={}),d[U]={total:i,loaded:l,isInitSegment:F}}},{key:"onCachePredict",value:function(e){var t=e.vid,n=e.data;t&&n&&(this._cachedDatas[t]=n)}},{key:"getProgressCacheKey",value:function(e,t,n){return"".concat(e,"-").concat(t,"-").concat(n)}},{key:"onPreloadNextReady",value:function(){this.onPreloadNext()}},{key:"onPreloadSegDone",value:function(){this.autoPreload&&this.emit(_F)}},{key:"onPreloadNext",value:function(){var e=this;if(null==this._currentPreloadInst&&this._preloadDataList.length>0){if(this._preloadDataList.length>0){var t=this._preloadDataList.shift(),n=null==t?void 0:t.data;if(null!=n&&n.payload){var U=this._getPreloaderKey(n),i=this._preloaderConfigs[U];if(!i)return void console.warn("need to set vtype, no preloader",n);this._currentPreloadInst=new ia(n,this,i,(function(t){e.onCacheSegment(t)}),(function(t){e.onCachePredict(t)})),this._currentPreloadInst.on(AF,this.onPreloadSegDone.bind(this)),this._currentPreloadInst.start().then((function(){e._currentPreloadInst.preloadSeg()})).catch((function(){e._currentPreloadInst=null}))}}}else null!=this._currentPreloadInst&&(this._currentPreloadInst.state===$F?this._currentPreloadInst.preloadSeg():this._currentPreloadInst.state===ea?(this._currentPreloadInst.destroy(),this._currentPreloadInst=null):this._currentPreloadInst.state===qF&&(this._currentPreloadInst.cnt++,this._currentPreloadInst.cnt>2&&(this._currentPreloadInst.destroy(),this._currentPreloadInst=null)))}},{key:"addDashPreloader",value:function(e){e.data&&(this._preloadDataList.push(e),this.sort(this._preloadDataList),this.autoPreload&&this.emit(_F),this._autoCheck.enable&&!this._taskIntervalId&&this.startCheckTask())}},{key:"_addDashPreloader",value:function(e){e.data&&this._preloadDataList.push(e)}},{key:"addDashPreloaderList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.sort(e);for(var t=0;t<e.length;t++)this._addDashPreloader(e[t]);this._autoCheck.enable&&!this._taskIntervalId&&this.startCheckTask()}},{key:"sort",value:function(e){e.sort((function(e,t){return void 0===e.order&&void 0===e.order||"number"==typeof e.order&&"number"==typeof t.order&&e.order<t.order?-1:1}))}},{key:"destroy",value:function(){this.off(_F,this._onPreloadNext)}},{key:"cancelLoading",value:function(){this._currentPreloadInst&&(this._currentPreloadInst.cancelLoading(),this._currentPreloadInst=null),this._preloadDataList=[]}},{key:"preloadCacheProgress",value:function(e){var t=e.vid,n=e.format,U=e.mediaType,i=e.prelaodType,l=e.bitrate,F=e.set_duration,a=e.set_size,r=e.media_type,d=e.start_time,Q=this.getProgressCacheKey(t,n,U),o=this._preloadCacheProgress[Q];if(o){for(var s=Object.values(o),c=0,R=0,B=0,u=0,h=0,V=0;V<s.length;V++){var Z=s[V];Z.isInitSegment&&(c=Z.total,B=Z.loaded,u=Z.loaded===Z.total?na:Ua),R+=Z.total,h+=Z.loaded}return{media_type:r,preload_type:i,stream_bitrate:l,header_size:c,content_total_size:R,start_time:d||-1,state_info:{set_duration:F,set_size:a,current_header_download_size:B,current_content_download_size:h,header_download_state:u,content_download_state:h===R?na:Ua}}}return null}},{key:"getPreloadTaskInfos",value:function(){}},{key:"getItem",value:function(e,t){return this._cacheInst.getItem(e,t)}},{key:"setItem",value:function(e,t,n){return this._cacheInst.setItem(e,t,n)}},{key:"removeItem",value:function(e,t){return this.removeItem(e,t)}}],[{key:"getInstance",value:function(e,t){var U=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=n.GLOBAL_KEY+(e.globalKey?e.globalKey:""),l=window[i];if(null!=l&&l._ptag_)return l.update(e,t,U),l;var F=new n(e,t,U);return window[i]=F,F}}]),n}(tt),Wa=Ja;Wa.GLOBAL_KEY="__preloadcontext__";var ya,ba=Wa,Ea=function(e){P(n,e);var t=q(n);function n(e){var U;return M(this,n),(U=t.call(this)).options=e,U.promisePolyfill(),U.before(),U.check(),U._preloadManager=ba.getInstance(e,U.handlers,U.predictInst),U.loadingTasks=[],U}return w(n,[{key:"promisePolyfill",value:function(){Promise.prototype.finally||(Promise.prototype.finally={finally:function(e){var t=function(t){return Promise.resolve(e()).then(t)};return this.then((function(e){return t((function(){return e}))}),(function(e){return t((function(){return Promise.reject(e)}))}))}}.finally)}},{key:"before",value:function(){throw new Error("need")}},{key:"check",value:function(){if(!this.handlers)throw new Error("handlers null");if(!this.handlers.start||!this.handlers.onRequest)throw new Error("handlers callback null");if(!this.predictInst)throw new Error("predictInst null");if(!this.predictInst.__p__)throw new Error("predictInst need extends predictbase")}},{key:"preloadNext",value:function(){this._preloadManager.emit(_F)}},{key:"preloadManager",get:function(){return this._preloadManager}},{key:"start",value:function(){throw new Error("start need implment, return Promise")}},{key:"cancelLoading",value:function(){for(var e=0;e<this.loadingTasks.length;e++)try{var t=this.loadingTasks[e];"function"==typeof t.cancel&&t.cancel()}catch(n){}this.loadingTasks=[],this._preloadManager.cancelLoading()}},{key:"addTasker",value:function(e){this.loadingTasks.push(e)}},{key:"removeTasker",value:function(e){var t=this;setTimeout((function(){for(var n=t.loadingTasks.length-1;n>-1;n--)if(t.loadingTasks[n]===e){t.loadingTasks.splice(n,1);break}}))}},{key:"addDashPreloader",value:function(e){this._preloadManager.addDashPreloader(e)}},{key:"addDashPreloaderList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this._preloadManager.addDashPreloaderList(e)}}]),n}(tt),ka=function(){function e(){M(this,e),this.bandwidth2item={},this._mediaInfos=void 0,this.__p__=!0}return w(e,[{key:"init",value:function(){throw new Error("init func not implement, return promise")}},{key:"preloadPredict",value:function(e){throw new Error("preloadPredict error: ".concat(e))}},{key:"updateMediaInfos",value:function(e){if(this._mediaInfos=e,this.bandwidth2item={},this.dynamic_video=e.dynamic_video_list,this.dynamic_video.length>0)for(var t=0;t<this.dynamic_video.length;t++){var n=this.dynamic_video[t],U=(null==n?void 0:n.bitrate)||(null==n?void 0:n.bandwidth);this.bandwidth2item[U]=n}}},{key:"getIdx",value:function(e,t){var n=0;return e.forEach((function(e,U){e.definition===t&&(n=U)})),n}},{key:"cachedData",get:function(){return null}}]),e}(),fa={MP4:"MP4",DASH:"DASH",HLS:"HLS"},va={};Object.defineProperty(va,"__esModule",{value:!0}),va.default=function(e){for(var t=0,n=arguments.length,U=Array(n>1?n-1:0),i=1;i<n;i++)U[i-1]=arguments[i];var l=!0,F=!1,a=void 0;try{for(var r,d=U[Symbol.iterator]();!(l=(r=d.next()).done);l=!0){t+=r.value.length}}catch(V){F=!0,a=V}finally{try{!l&&d.return&&d.return()}finally{if(F)throw a}}var Q=new e(t),o=0,s=!0,c=!1,R=void 0;try{for(var B,u=U[Symbol.iterator]();!(s=(B=u.next()).done);s=!0){var h=B.value;Q.set(h,o),o+=h.length}}catch(V){c=!0,R=V}finally{try{!s&&u.return&&u.return()}finally{if(c)throw R}}return Q};var Na=$e(((ya=va)&&ya.__esModule?ya:{default:ya}).default),Ta=function(e){P(n,e);var t=q(n);function n(){return M(this,n),t.apply(this,arguments)}return w(n,[{key:"init",value:function(){return Promise.resolve()}},{key:"preloadPredict",value:function(e){return e}}]),n}(ka);var Ca="h264",ga="h265";var Xa={DURATION:0,SIZE:1},La=0,Ga=!0,xa=null;function Ia(e,t,n){void 0===e[t]&&(e[t]=n)}var Da=function(e){P(a,e);var t,n,U,i,l,F=q(a);function a(e,t){var n,U;M(this,a);var i=a.getDefaultConfig(e);Object.keys(e).forEach((function(t){i[t]=e[t]})),H(A(U=F.call(this,i)),"_updateRealTimeSpeed",(function(e){La=e.speed,U.emit(bn,e)})),U.video=null,Ia(U._preloadManager,"loadingCount",0),Ia(U._preloadManager,"_playingVids",[]),U._mp4=null,U._loader=null,U._pendingPromise=null,U.playerId=t.playerId||"default",U._nextPreloadCount=0,U.isActive=!0,U.curPCDNReqId=null;var l=U.options.logCacheConfig,r=l.logCacheLevel,d=l.logMaxSize;return U.logger=new jt("[Mp4Preloader]",{logCacheLevel:r,logMaxSize:d}),void 0===e.supportHevc&&"undefined"!=typeof MediaSource&&MediaSource.isTypeSupported&&(MediaSource.isTypeSupported('video/mp4;codecs="hev1.1.6.L120.90"')||MediaSource.isTypeSupported('video/mp4;codecs="hev1.2.4.L120.90"')||MediaSource.isTypeSupported('video/mp4;codecs="hev1.3.E.L120.90"')||MediaSource.isTypeSupported('video/mp4;codecs="hev1.4.10.L120.90"'))&&(U.options.supportHevc=!0),U.loadRangeType=(null===(n=U.options)||void 0===n?void 0:n.loadRangeType)||Xn,ml(Ht.DEBUG,"[Preloader] new preloader, playerId",U.playerId),U}return w(a,[{key:"log",value:function(e,t){for(var n=arguments.length,U=new Array(n>2?n-2:0),i=2;i<n;i++)U[i-2]=arguments[i];ml.apply(void 0,[this.logger,e,t].concat(U))}},{key:"loadingCount",get:function(){return this._preloadManager.loadingCount},set:function(e){this._preloadManager.loadingCount=e}},{key:"currentPreloadInst",get:function(){return this._preloadManager._currentPreloadInst}},{key:"startCheckTask",value:function(){this._preloadManager.startCheckTask()}},{key:"stopCheckTask",value:function(){this._preloadManager.stopCheckTask()}},{key:"getPreloadMemoryInfo",value:(l=Y(x().mark((function e(){var t,n,U,i,l;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=this.allCachedKeys,n=0,U=0,e.t0=x().keys(t);case 4:if((e.t1=e.t0()).done){e.next=19;break}if(i=e.t1.value,!t.hasOwnProperty(i)){e.next=17;break}return U++,e.prev=8,e.next=11,this.getPreLoadData(i);case 11:l=e.sent,n+=(null==l?void 0:l.memory)||0,e.next=17;break;case 15:e.prev=15,e.t2=e.catch(8);case 17:e.next=4;break;case 19:return e.abrupt("return",{memory:n,cnt:U});case 20:case"end":return e.stop()}}),e,this,[[8,15]])}))),function(){return l.apply(this,arguments)})},{key:"getPreloadUnuseInfo",value:function(){var e,t=[],n=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=ne(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var U=0,i=function(){};return{s:i,n:function(){return U>=e.length?{done:!0}:{done:!1,value:e[U++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,F=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return F=e.done,e},e:function(e){a=!0,l=e},f:function(){try{F||null==n.return||n.return()}finally{if(a)throw l}}}}(Cn);try{for(n.s();!(e=n.n()).done;){var U=ee(e.value,2),i=U[0],l=U[1];if(gn.get(i))Cn.delete(i);else{var F=i.split("#"),a=(null==F?void 0:F.length)>0?F[0]:i;t.push({vid:a,bw:(null==l?void 0:l.bw)||0,pbw:(null==l?void 0:l.pbw)||0})}}}catch(r){n.e(r)}finally{n.f()}return t}},{key:"generateUniqueKey",value:function(e){var t=e.vid,n=e.mediaType,U=e.definition,i=e.codecType,l=e.vtype;return a.generateUniqueKey({vid:t,mediaType:n,definition:U,codecType:i,vtype:l})}},{key:"addPlayingItem",value:function(e,t){var n=this._preloadManager,U=this.checkPlaying("_playerId",e);U>-1?n._playingVids[U].vid=t:n._playingVids.push({vid:t,_playerId:e}),this.log(Ht.LOG,"addPlayingItem",U,e,t,n._playingVids)}},{key:"delPlayingItem",value:function(e){var t=this._preloadManager,n=this.checkPlaying("_playerId",e);this.log(Ht.LOG,"delPlayingItem",n,e,t._playingVids),n>-1&&t._playingVids.splice(n,1)}},{key:"checkPlaying",value:function(e,t){for(var n=this._preloadManager._playingVids,U=0;U<n.length;U++)if(t===n[U][e])return U;return-1}},{key:"checkPlayingByVid",value:function(e){return this.checkPlaying("vid",e)>-1}},{key:"before",value:function(){var e=this;this.handlers={checkIfCanPreload:function(){return e.checkIfCanPreload()},start:function(t){var n=t.payload||[];if(0===n.length)return Promise.reject(new Error("preload_is_null"));var U=t.vid,i=t.vtype||fa.MP4,l=t.codecType||Ca,F=e.getUserSelectDefinition(),a=e.checkCacheKey(U,n,F,i,l);if(e.log(Ht.LOG,"".concat(e.playerId," ").concat(U),"codecType:".concat(l," vtype:").concat(i," hasCache:").concat(a)),a||"MP3"===i)return Promise.reject(new Error("vtype_".concat(i)));var r=e.getInitDefinition(n,e.options.definition,F);if(e.log(Ht.LOG," ".concat(e.playerId," ").concat(U," getInitDefinition"),null==r?void 0:r.definition),!r)return Promise.reject(new Error("definition_error"));var d=r.definition,Q=r.orgDefinition,o=t.preloadTime||e.options.preloadTime,s=t.preloadSize||e.options.preloadSize||Math.pow(25,4)-1,c=e.generateUniqueKey({vid:U,definition:d,vtype:i,codecType:l});e._nextPreloadCount>0&&e._nextPreloadCount--,e.log(Ht.LOG,"".concat(U," start duration:").concat(r.duration," preloadTime:").concat(o," cacheKey:").concat(c,",playerId:").concat(e.playerId));var R=G({vid:U,definition:d,orgDefinition:Q,preloadTime:o,preloadSize:s,cacheKey:c,codecType:l,vtype:i},r);return t.reqOptions&&(R.reqOptions=t.reqOptions),e.loadingCount++,e.log(Ht.LOG,"start preload,".concat(U," loadingCount:").concat(e.loadingCount,",playerId:").concat(e.playerId)),e.start(R)},onRequest:function(t,n){var U=t.url,i=t.range,l=t.extData;return e.getData(U,i,l,n)}},this.loggerConfig={logger:function(){},openLog:!1},this.predictInst=new Ta(this.loggerConfig)}},{key:"start",value:function(e){var t=this,n={mediaInfos:{dynamic_video_list:[],dynamic_audio_list:[]},onObtain:function(){var e=new FF;return e.resolve(n.mediaInfos),e},onTransform:function(){var n,U,i=new FF;t._pendingPromise=i;var l=e.preloadTime,F=e.codecType;if(null!==(n=t.options)&&void 0!==n&&null!==(U=n.pcdnConfig)&&void 0!==U&&U.openPreloadPCDN){var a=Object.assign({},{productConfig:Nn},t.options.pcdnConfig);t._pcdn=new ot(a)}return t.loadRangeType===Xn&&l&&(F!==ga||t.options.supportHevc)?t.loadByPreloadTime(e,i):t.loadByChunkSize(e,i),i}};return Promise.resolve(n)}},{key:"getInitDefinition",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,U=null;if(a.BitRateAdapter){var i,l,F;U=a.BitRateAdapter.getSuitableBitrate(e,n),this.log(Ht.DEBUG,"Mp4Preloader.BitRateAdapter",null===(i=U)||void 0===i?void 0:i.type,null===(l=U)||void 0===l?void 0:l.definition,null===(F=U)||void 0===F?void 0:F.bitrate)}else{for(var r=0,d=0;d<e.length;d++){if(e[d].definition===t){r=d;break}}U=e[r]}return U||(U=e[0]),U}},{key:"getPreLoadData",value:function(e){var t=this,n=new FF;return this.getItemSameVid(e).then((function(e){if(t.log(Ht.DEBUG,"[Preloader] getPreLoadData",!!e.value),e.value){var U=e.value,i=U.mediaSegList,l=U.meta,F=U.type,a=U.buffer,r=U.preloadTime,d=U.vid,Q=U.cacheKey,o=U.definition,s=U.orgDefinition,c=U.byteLength,R=U.duration,B=U.fileSize,u=U.from,h=U.vtype,V=U.codecType,Z=U.initSeg,m={vid:d,type:F,vtype:h,codecType:V,definition:o,orgDefinition:s,bitrate:U.bitrate,cacheKey:Q,duration:R||0,byteLength:c,from:u,adaptTimeRange:U.adaptTimeRange,repeatData:U.repeatData,memory:U.memory,meta:l,preloadTime:r};F===Xa.SIZE?(m.buffer=a,m.fileSize=B||0):(m.mediaSegList=i,m.fileSize=B||0,m.initSeg=Z),n.resolve(m)}else n.resolve(null)})).catch((function(e){n.reject(e)})),n}},{key:"setPreLoadData",value:(i=Y(x().mark((function e(t,n){var U,i,l,F,a,r,d,Q,o,s,c,R,B,u,h,V,Z,m,p,S,J,W,y,b=this;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return U=new FF,i=n.mediaSegList,l=n.meta,F=n.vid,a=n.definition,r=n.orgDefinition,d=n.type,Q=n.buffer,o=n.duration,s=n.byteLength,c=n.preloadTime,R=n.fileSize,B=n.from,u=n.vtype,h=n.codecType,V=n.initSeg,Z=n.bitrate,m=n.adaptTimeRange,p=n.repeatData,(S={codecType:h,vtype:u,vid:F,definition:a,orgDefinition:r,cacheKey:t,type:d,from:B,meta:l,fileSize:R,adaptTimeRange:m,repeatData:p,bitrate:Z}).memory=0,S.memory+=(null==p?void 0:p.byteLength)||0,d===Xa.SIZE?(S.buffer=Q,S.byteLength=s||0,S.preloadSize=s||0,S.preloadTime=c||0,S.fileSize=R,S.buffer&&S.buffer.byteLength>0&&(S.memory+=(null==Q?void 0:Q.byteLength)||0,this.setItem(t,S),U.resolve(!0))):(S.mediaSegList=[],S.duration=o,S.byteLength=s||0,S.preloadTime=c||0,S.initSeg=V,S.memory+=(null==V?void 0:V.byteLength)||0,S.fileSize=R,i.every((function(e){var t;S.memory+=(null==e||null===(t=e.buffer)||void 0===t?void 0:t.byteLength)||0,S.mediaSegList.push(e)})),l&&0===i.length?(this.log(Ht.LOG,"[Preloader] meta setPreLoadData1 success",t,null==S||null===(J=S.mediaSegList)||void 0===J?void 0:J.length),this.setItem(t,S),U.resolve(!0)):(y=i.every((function(e){return!!e.buffer&&e.state})),this.log(Ht.LOG,"[Preloader] mediaSegList setPreLoadData1 success",t,null==S||null===(W=S.mediaSegList)||void 0===W?void 0:W.length,y),y||U.resolve(!1),this.setItem(t,S).then((function(){b.log(Ht.LOG,"[Preloader] setPreLoadData1 success",t)})),U.resolve(!0))),e.abrupt("return",U);case 7:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})},{key:"getInitCacheData",value:function(e,t){var n={type:e,meta:null,byteLength:0,fileSize:0,bitrate:0,preloadTime:0};return e===Xa.DURATION?(n.mediaSegList=[],n.initSeg=null,n.duration=0):n.buffer=null,Object.keys(t).map((function(e){n[e]=t[e]})),n}},{key:"updatePreCacheData",value:function(e,t,n,U,i,l,F,a,r){var d=e.mediaSegList;if(e.type===Xa.SIZE||-1===i)return e.buffer=Na(Uint8Array,e.buffer.buffer||[],new Uint8Array(t)),e;for(var Q=-1,o=0;o<d.length;o++)if(d[o].index===i){Q=o;break}var s=l||[0,0];if(Q>-1)t&&(d[Q].buffer=Na(Uint8Array,d[Q].buffer||[],new Uint8Array(t))),n.length>1&&(d[Q].range.length>1?d[Q].range[1]=n[1]:d[Q].range=n),-1!==F[1]&&(U=d[Q].range[1]>=F[1]),d[Q].state=U;else{var c=a.video,R=a.audio;e.duration=s[1],d.push({buffer:t,range:n||[],index:i,totalRange:F||[],timeRange:[s[0],s[1]],muxSampleIdxRange:{video:c,audio:R},state:U});var B="".concat(null==t?void 0:t.byteLength,",").concat(JSON.stringify(n),",").concat(i,",").concat(JSON.stringify(F),",").concat(JSON.stringify(l));this.log(Ht.DEBUG,"[Preloader] ".concat(e.cacheKey," mediaSegList set, dataLen"),B)}return U&&(e.byteLength+=n[1]-n[0],e.preloadTime+=r),U}},{key:"checkCacheKey",value:function(e,t,n){var U=arguments.length>3&&void 0!==arguments[3]?arguments[3]:fa.MP4,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:Ca;if(n){var l=this.generateUniqueKey({vid:e,definition:n,vtype:U,codecType:i});return this.hasItemSameVid(l)?l:null}for(var F=0;F<t.length;F++){var a=this.generateUniqueKey({vid:e,definition:t[F].definition,vtype:U,codecType:i});if(this.hasItemSameVid(a))return a}return null}},{key:"attachPlayer",value:function(e){this.video=e.video?e.video:e}},{key:"detachPlayer",value:function(){this.video=null}},{key:"checkIfCanPreload",value:function(){var e;if(!Ga||this.loadingCount>=1||!this.isActive)return e=!1;if(this.video){var t=this.options,n=t.minBufferLength,U=t.startPreloadControl,i=t.startPreloadMinBuffer,l=t.startPreloadMinPosTime;e=function(e,t){if(!e)return!1;var n=function(e,t){var n=[0,0];if(e)for(var U=0,i=e.length;U<i&&(n[0]=e.start(U),n[1]=e.end(U),!(n[0]<=t&&t<=n[1]));U++);return n[0]-t<=0&&t-n[1]<=0?n:[0,0]}(e.buffered,e.currentTime),U=t.startPreloadControl,i=t.startPreloadMinBuffer,l=t.startPreloadMinPosTime,F=t.minBufferLength;if(U){var a=Math.max(n[1]-e.currentTime,0);if(a>i){if(e.currentTime>l)return!0;if(e.currentTime>e.duration/2)return!0}else if(e.currentTime+i+1>e.duration&&e.currentTime+a>e.duration-1)return!0}else{var r=e.duration>F+5?F:e.duration/2,d=Math.min(e.currentTime+F,e.duration),Q=n[1]-d;if(e.currentTime>r&&Q>-1)return!0}return!1}(this.video,{startPreloadControl:U,startPreloadMinBuffer:i,startPreloadMinPosTime:l,minBufferLength:n})}else e=this._nextPreloadCount>0;return console.log("[Preloader] checkIfCanPreload",!!this.video,"nextPreloadCount:".concat(this._nextPreloadCount," ret:").concat(e)),e}},{key:"startPreloadNext",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=!0;return this._nextPreloadCount=e,(this.loadingCount>=1||!this.isActive)&&(t=!1),t&&this.preloadNext(),t}},{key:"realTimeSpeed",get:function(){return La}},{key:"getRequestOption",value:function(e){var t=this.options,n=t.getRequestOptionsCallback,U=t.reqOptions;return(e.reqOptions?e.reqOptions:"Function"===bl.typeOf(n)?n(e):U)||{}}},{key:"loadByPreloadTime",value:function(e,t){var n,U=this,i=e.vid,l=e.cacheKey,F=e.preloadTime,a=e.definition,r=e.orgDefinition,d=e.duration,Q=e.bitrate,o=e.codecType,s=e.vtype,c=e.size,R=e.uri,B=e.file_id,u=null;if(u="Array"===bl.typeOf(e.url)?e.url[0].src:e.url){u=bl.extUrl(u,{__vid:i});var h=F>=this.options.segmentMinDuration?this.options.segmentMinDuration:F,V=this.getRequestOption(G(G({},e),{},{_url:u}));this.log(Ht.DEBUG,"[Preloader] loadByPreloadTime","".concat(e.cacheKey,", definition:").concat(e.definition,",segmentMinDuration:").concat(h));var Z=c||bl.getFileSize(Q,d),m=null==e||null===(n=e.pktOffsetMap)||void 0===n?void 0:n.find((function(e){var t;return(null==e?void 0:e.time)===((null===(t=U.options)||void 0===t?void 0:t.firstLoadTimePos)||5)})),p=null==m?void 0:m.offset;this._mp4=new $l(u,Q,{segmentDuration:h,codecType:this.codecType,chunkSize:this.options.preloadSize,firstLoadSize:p,duration:d,fileSize:c,playerId:this.playerId,vid:i,useUrlRange:!1,retryCount:1,retryDelay:1e3,supportHevc:this.options.supportHevc,retryCheckFunc:yl,switchPCDNMaxCnt:Number.MAX_VALUE,logger:this.logger,reqOptions:V},[],this.firstFrameTime,"[Preloader]");var S=this.getInitCacheData(Xa.DURATION,{vid:i,definition:a,orgDefinition:r,cacheKey:l,codecType:o,vtype:s,bitrate:Q||0});this.startPCDN(u,R,i,Q,B,s.toLowerCase()||"mp4",Math.floor(d),Z),this._mp4.once("metaReady",function(){var n=Y(x().mark((function n(F){var a,r;return x().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(U._mp4){n.next=2;break}return n.abrupt("return");case 2:return U.log(Ht.DEBUG,"[Preloader] ".concat(i," metaReady this._pendingPromise"),null===(a=U._pendingPromise)||void 0===a?void 0:a.state,null==S||null===(r=S.mediaSegList)||void 0===r?void 0:r.length),S.meta=F,S.from=2,S.fileSize=U._mp4.size,n.next=8,U._mp4.cancelLoading();case 8:return U._mp4.metaLoading=!1,n.next=11,U.setPreLoadData(l,S);case 11:U.startLoadByFragments(S,e,t);case 12:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}()),this._mp4.on(gl,(function(e){U.log(Ht.ERROR,"[Preloader] ".concat(i," loadByPreloadTime error")),U._endLoadFragments(),U.emit("error",e)})),this._mp4.on(Ml,(function(e){U._pcdn&&e&&U._pcdn.removePCDNNode(e.vid,e.bitrate,e.url)})),this._mp4.on(wl,(function(e){U.bwEventEmit(i,e.load_type,e.len,null,l)})),this._mp4.MP4Loader.on(bn,(function(e){if((null==e?void 0:e.len)>0){var t,n=(null==e||null===(t=e.priOptions)||void 0===t?void 0:t.type)||Pl,F=Wl(e.len,e.time);U.bwEventEmit(i,n,e.len,F,l)}})),this._mp4.init({})}else this._endLoadFragments()}},{key:"bwEventEmit",value:function(e,t,n,U,i){var l=Cn.get(i)||{bw:0,pbw:0};t&&t!==Pl?(l.pbw=l.pbw+n,this.emit("prf_data_size",{vid:e,task_type:2,pcdn_size:n,pcdn_speed:U})):(l.bw=l.bw+n,this.emit("prf_data_size",{vid:e,task_type:2,cdn_size:n,cdn_speed:U})),Cn.set(i,l),this._updateRealTimeSpeed({speed:U,type:t||Pl}),function(e,t,n){var U=Tn.get(e);!U&&(U={}),U[t]||(U[t]={},U[t].loadLen=0);U[t].loadLen=U[t].loadLen+n,Tn.set(e,U)}(i,t,n)}},{key:"startPCDN",value:function(e,t,n,U,i,l,F,a){var r=this;if(this._pcdn){var d;if(null===(d=this._mp4)||void 0===d||d.updatePCDNState(Ol),!Jl(e)){var Q=document.location.protocol;e=Q+e}this.curPCDNReqId=function(e,t){return e.slice(-20)+t}(t||n,U);var o={vid:t,cdn_url:e,sfid:i,file_type:l,bitrate:U,duration:Math.floor(F),size:a};this.log(Ht.DEBUG,"[Preloader] ".concat(n," get peer start")),this._pcdn.fetchPCDNNode(null,o,this.curPCDNReqId).then((function(e){var t;null!=e&&e.req_id&&e.req_id!==r.curPCDNReqId?r.log(Ht.LOG,",[Preloader] fetchPCDNNode not match reqId",r.curPCDNReqId,", pcdnRet.req_id",e.req_id):(r.log(Ht.LOG,"[Preloader] ".concat(n," get peer end,pcdn node update,"),null==e||null===(t=e.nodes)||void 0===t?void 0:t.length),r._mp4?r._mp4.updateNode(null==e?void 0:e.nodes):r._pcdnNodeList=(null==e?void 0:e.nodes)||null)})).catch((function(t){var n,U,i,l,F=bl.checkUrlIsExpired(e);1===F&&r._pcdn&&(r._pcdn=null);var a=(null==t||null===(n=t.response)||void 0===n?void 0:n.url)||(null===(U=r.options)||void 0===U||null===(i=U.pcdnConfig)||void 0===i?void 0:i.trackerUrl);r.emit("source_error",{host:bl.getHostFromUrl(a),src:a,errorCode:null==t||null===(l=t.response)||void 0===l?void 0:l.status,message:"".concat(null==t?void 0:t.message,"-").concat(F,"_preload")})}))}}},{key:"loadByChunkSize",value:(U=Y(x().mark((function e(t){var n,U,i,l,F,a,r,d,Q,o,s,c,R,B,u,h,V,Z,m,p,S,J,W,y,b,E=this;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U=t.vid,i=t.cacheKey,l=t.definition,F=t.orgDefinition,a=t.duration,r=t.bitrate,d=t.codecType,Q=t.vtype,o=t.size,s=t.uri,c=t.file_id,R=this.options,B="Array"===bl.typeOf(t.url)?t.url[0].src:t.url){e.next=6;break}return this._endLoadChunk(),e.abrupt("return");case 6:return B=bl.extUrl(B,{__vid:U}),u=o||bl.getFileSize(r,a),h=null==t||null===(n=t.pktOffsetMap)||void 0===n?void 0:n.find((function(e){return(null==e?void 0:e.time)===((null==R?void 0:R.firstLoadTimePos)||5)})),V=null==h?void 0:h.offset,Z=Rl(a,8e5,u),this.log(Ht.LOG,"".concat(U," loadByChunkSize"),t.cacheKey,t.definition,V||Z),m=this.getInitCacheData(Xa.SIZE,{vid:U,definition:l,orgDefinition:F,cacheKey:i,codecType:d,vtype:Q,fileSize:o,bitrate:r||0}),p=this.getRequestOption(G(G({},t),{},{url:B})),this.startPCDN(B,s,U,r,c,Q.toLowerCase()||"mp4",Math.floor(a),u),this.MP4Loader=new al({url:B,vid:"".concat(U,"-").concat(r),retry:R.retryCount||2,retryDelay:R.retryDelay||1e3,timeout:R.timeout||3e3,reqOptions:p,loaderType:R.loaderType,retryCheckFunc:yl,openLog:Zl()}),this.MP4Loader.on(bn,(function(e){if((null==e?void 0:e.len)>0){var t,n=(null==e||null===(t=e.priOptions)||void 0===t?void 0:t.type)||Pl,l=Wl(e.len,e.time);E.bwEventEmit(U,n,e.len,l,i)}})),e.prev=17,S=new Uint8Array(0),J=0,W=null,y=null,b=function(){var e=Y(x().mark((function e(t,n,l,F,a){var r,d,Q,o,s,c,R,u,h,V,Z,p;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(m.fileSize||(m.fileSize=Number(fl(a.headers))),t&&l.range&&l.range[0]===J&&(S=Na(Uint8Array,S,new Uint8Array(t)),J+=t.byteLength),!l.meta){e.next=29;break}return e.next=5,E.MP4Loader.cancel();case 5:d=(null==t||null===(r=t.priOptions)||void 0===r?void 0:r.type)||Pl,E.bwEventEmit(U,d,S.byteLength,null,i),Q=l.meta,o=Q.videoSegments,s=Q.audioSegments,y=G(G({},Q.meta),{},{ext:{videoTrak:o,audioTrak:s}}),m.meta=y,W=bl.getFragRange(0,o,s),m.buffer=S.slice(W[0]),m.byteLength=m.buffer.byteLength,c=bl.getFragRange(1,o,s),R=[],c[0]<c[1]&&W[1]>c[0]&&(R=[c[0],W[1]]),u=(null==o?void 0:o.length)>0?o:s,h=u[0].startTime,V=u[0].endTime,(Z={startTime:h,endTime:V,range:te(W),repeatRange:R,duration:V-h,downloaded:!1,isLoading:!1}).timeRangeIdx=[0,1],m.adaptTimeRange=[Z],E.log(Ht.LOG,"".concat(U," loadMetaProcess ret"),i,S.byteLength,JSON.stringify(W),m.buffer.byteLength,JSON.stringify(R)),E.setPreLoadData(i,m),p=[J,W[1]],E.log(Ht.LOG,"".concat(i," loadMetaProcess end, loadOneChunk start"),n,JSON.stringify(p),J,S.byteLength),E._loadOneChunk(m,p,B,Z.duration);case 29:case"end":return e.stop()}}),e)})));return function(t,n,U,i,l){return e.apply(this,arguments)}}(),e.next=25,this.MP4Loader.loadMetaProcess(this.MP4Loader.cache,[0,V||Z],b);case 25:e.next=31;break;case 27:e.prev=27,e.t0=e.catch(17),console.error("[Preloader] ".concat(i," loadByChunkSize error"),e.t0),this._endLoadChunk();case 31:case"end":return e.stop()}}),e,this,[[17,27]])}))),function(e){return U.apply(this,arguments)})},{key:"_loadOneChunk",value:(n=Y(x().mark((function e(t,n,U,i){var l,F,a,r,d,Q,o,s,c,R;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!((null==n?void 0:n.length)>0&&n[0]>=n[1])){e.next=3;break}return this._endLoadChunk(),e.abrupt("return");case 3:return(F=(null===(l=this._pcdnNodeList)||void 0===l?void 0:l.length)>0?bl.extUrl(this._pcdnNodeList[0].url,{__vid:t.vid}):null)&&ql.pcdn_download_request_cnt++,this.log(Ht.LOG,"".concat(null==t?void 0:t.cacheKey," loadOneChunk start"),JSON.stringify(n),",loadType,",!!F),a=F||U,r=t.vid,d=t.cacheKey,Q=t.buffer,e.prev=8,e.next=11,this.MP4Loader.loadData(n,this.MP4Loader.cache,{index:0,url:a,headers:F?{"X-Origin-Server-Host":bl.getHostFromUrl(U)}:null,priOptions:{type:F?jl:Pl}});case 11:o=e.sent,this.log(Ht.LOG,"".concat(r," _loadOneChunk"),JSON.stringify(n),d),s=o.response,(c=o.data)?(this._endLoadChunk(),s&&s.headers&&(R=bl.getFileSize(s.headers))&&(t.fileSize=R),t.buffer=bl.concatData(Q,c),t.byteLength=t.buffer.byteLength,t.preloadTime+=i,this.log(Ht.LOG,"".concat(r," _loadOneChunk ret"),d,t.buffer.byteLength,null==c?void 0:c.byteLength),t.from=4,this.setPreLoadData(d,t)):(ql.pcdn_download_failed_cnt++,this._endLoadChunk()),e.next=21;break;case 17:e.prev=17,e.t0=e.catch(8),this.log(Ht.ERROR,"[Preloader] ".concat(r," loadByChunkSize error"),null===e.t0||void 0===e.t0?void 0:e.t0.message),this._endLoadChunk();case 21:case"end":return e.stop()}}),e,this,[[8,17]])}))),function(e,t,U,i){return n.apply(this,arguments)})},{key:"_endLoadChunk",value:function(){this.log(Ht.LOG,"_endLoadChunk loadingCount:".concat(this.loadingCount),this._pendingPromise?this._pendingPromise.state:null),this._pendingPromise&&(this._pendingPromise.resolve(),this._pendingPromise=null),this.loadingCount>0&&this.loadingCount--,this.MP4Loader&&(this.MP4Loader.cancel(),this.MP4Loader.destroy(),this.MP4Loader=null)}},{key:"startLoadByFragments",value:(t=Y(x().mark((function e(t,n){var U,i,l,F,a,r=this;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return U=n.preloadTime,i=n.vid,this.log(Ht.LOG,"[Preloader] ".concat(i," startLoadByFragments"),n),this._mp4.updateAdaptTimeRange(0,U),this._mp4.getFragRange(0),l=this._mp4.adaptTimeRange,F=function(e){r.log(Ht.ERROR,"[Preloader] ".concat(i," _failedCallback error"),null==e?void 0:e.message),r._endLoadFragments()},a=function(){var e=Y(x().mark((function e(n){var U,i,d,Q,o,s,c,R,B,u,h,V,Z,m,p;return x().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r._mp4){e.next=2;break}return e.abrupt("return");case 2:if(d=n.buffer,Q=n.context,o=n.state,s=n.initSeg,c=Q.fragIndex,R=Q.range,B=Q.timeRange,u=r._mp4,h=u._repeatInfo,V=u.adaptTimeRange,Z=null===(U=V[c])||void 0===U?void 0:U.range,!t.initSeg&&s&&(t.initSeg=s,t.adaptTimeRange=V),m=r._mp4._lastDemuxSampleIdxRange,t.repeatData=(null===(i=h.data)||void 0===i?void 0:i.slice(0,h.curDataPos))||[],p=r.updatePreCacheData(t,d,R,o,c,B,Z,m,V[c].duration),r.log(Ht.LOG,"[Preloader] ".concat(t.cacheKey," _successCallback"),c,o,p),t.from=3,!p){e.next=23;break}return e.next=15,r.setPreLoadData(t.cacheKey,t);case 15:if(!(c>=l.length-1)){e.next=20;break}r.log(Ht.LOG,"[Preloader] ".concat(t.cacheKey," mp4.load end"),c),r._endLoadFragments(),e.next=23;break;case 20:return r.log(Ht.LOG,"[Preloader] ".concat(t.cacheKey," mp4.load start"),c+1),e.next=23,r._mp4.loadAllFragmentData(c+1,a,F);case 23:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.next=9,this._mp4.loadAllFragmentData(0,a,F);case 9:case"end":return e.stop()}}),e,this)}))),function(e,n){return t.apply(this,arguments)})},{key:"_endLoadFragments",value:function(){this.log(Ht.LOG,"[Preloader] _endLoadFragments loadingCount:".concat(this.loadingCount,",").concat(this.playerId),this._pendingPromise?this._pendingPromise.state:null),this._pendingPromise&&(this._pendingPromise.resolve(),this._pendingPromise=null),this.loadingCount>0&&this.loadingCount--,this._mp4&&(this._mp4.destroy(),this._mp4.cancelLoading(),this._mp4=null)}},{key:"getFragment",value:function(e,t,n,U,i){var l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},F=new FF;return this.getData(e,t,l,!1).then((function(e){U.createFragment(new Uint8Array(e.res),t[0]-U.mdatStart,n,{range:t,context:e.context}).then((function(e){F.resolve(e)}))})),F}},{key:"getPreloadUrl",value:function(e){var t=e.url,n=e.range,U=e.definition,i=e.vid;return[{url:t,range:n,extData:{cacheKey:a.generateUniqueKey({vid:i,start:n[0],end:n[1],definition:U}),vid:i,format:"mp4"}}]}},{key:"getRangeList",value:function(e){var t=this.allCachedKeys,n={timeRange:[],contentRange:[]};for(var U in t)if(t.hasOwnProperty(U)&&U.indexOf(e)>-1){var i=U.split("#");0===i[2].indexOf("pretime")?n.timeRange.push([0,parseFloat(i[2].slice(7))]):n.contentRange.push([parseInt(i[2]),parseInt(i[3])])}return n}},{key:"hasItemSameVid",value:function(e){if(!e)return null;for(var t=e.split("#"),n=Object.keys(this.allCachedKeys),U=0;U<n.length;U++){var i=n[U];if(i===e)return i;var l=i.split("#");if(l.length>=4&&t.length>=4&&l[0]===t[0]){if(0===l[2].indexOf("pretime")&&0===t[2].indexOf("pretime"))return i;var F=[parseInt(l[2]),parseInt(l[3])],a=[parseInt(t[2]),parseInt(t[3])];if(a[0]>=F[0]&&a[1]>a[0]&&a[1]<=F[1])return i}}return null}},{key:"removeOthers",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=this.allCachedKeys,U=function(){if(n.hasOwnProperty(i)&&i.split("#").length>=1){var U=i.split("#")[0];t.every((function(e){return e.split("#").length>=1&&e.split("#")[0]!==U}))&&(e.log(Ht.LOG,"remove cache:".concat(i)),e.cacheInst.removeItem(i))}};for(var i in n)U()}},{key:"removeAll",value:function(){var e=this.allCachedKeys;for(var t in e)e.hasOwnProperty(t)&&(this.log(Ht.DEBUG,"remove cache:".concat(t)),this.cacheInst.removeItem(t))}},{key:"removeAllPreloadTask",value:function(){this._preloadManager._preloadDataList=[],this._preloadManager._playingVids=[]}},{key:"getItemSameVid",value:function(e,t){var n=this.hasItemSameVid(e);return this.log(Ht.DEBUG,"getItemSameVid: key:".concat(e," checkResult:").concat(n)),n?this.cacheInst.getItem(n,t).then((function(e){return{value:e,key:n}})):Promise.resolve({})}},{key:"setItem",value:function(e,t){return this.cacheInst.setItem(e,t)}},{key:"allCachedKeys",get:function(){return this.cacheInst._allCachedKeys}},{key:"cacheInst",get:function(){return this._preloadManager._cacheInst}},{key:"cancelPreloadByVid",value:function(e,t){if(e){for(var n=this._preloadManager._preloadDataList,U=[],i=0;i<n.length;i++){n[i].data.vid!==e?U.push(n[i]):this.log(Ht.LOG,"cancelPreloadByVid",e)}this._preloadManager._preloadDataList=U;var l=this.currentPreloadInst,F=l&&l.options?l.options:{};this.log(Ht.LOG,"cancelPreloadByVid",e,t,e===F.vid,F),F.vid===e&&this.cancelLoading(),this.addPlayingItem(t,e)}}},{key:"cancelLoading",value:function(){this.log(Ht.LOG,"cancelLoading"),this._endLoadFragments(),this._endLoadChunk()}},{key:"clearTaskItem",value:function(e){var t=this._preloadManager;if(t._currentPreloadInst){var n=t._currentPreloadInst._toLoadList,U=[];n.map((function(t){return t._playerId!==e&&U.push(t),t})),t._currentPreloadInst._toLoadList=U}var i=[],l=[];this.log(Ht.LOG,"clearTaskItem before",e,t._preloadDataList.length),t._preloadDataList.map((function(t){return t._playerId!==e?i.push(t):l.push(t.data.vid),t})),this.log(Ht.LOG,"clearTaskItem",e,l.join(","),t._preloadDataList.length),t._preloadDataList=i}},{key:"checkIfExistInList",value:function(e,t){for(var n=this._preloadManager._preloadDataList,U=0;U<n.length;U++)if(e===n[U].data.vid&&n[U]._playerId===t)return!0;return!1}},{key:"addPreloader",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0;if(e.data){var U=e.data.vid,i=this.checkIfExistInList(U),l=this.checkPlayingByVid(U);if(this.log(Ht.LOG,"[Preloader] addPreloader checkIfExistInList",U,i),!(t&&U===t||i||l)){var F=bl.deepMerge({},e);F.vtype||(F.vtype=fa.MP4),F._playerId=n,this.addDashPreloader(F)}}}},{key:"addPreloaderList",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,U=[],i=0;i<e.length;i++){var l=e[i].data,F=l.vid,a=l.vtype,r=this.checkIfExistInList(F,n),d=this.checkPlayingByVid(F);if(this.log(Ht.LOG,"[Preloader] addPreloaderList checkIfExistInList",F,F===t,r,d),!(t&&F===t||r||d)){var Q=bl.deepMerge({},e[i]);a||(Q.data.vtype=fa.MP4),Q._playerId=n,U.push(Q)}}this.log(Ht.LOG,"[Preloader] addPreloaderList length is ".concat(U.length)),this.addDashPreloaderList(U)}},{key:"setUserSelectDefinition",value:function(e){this._preloadManager&&(this._preloadManager.userDefinition=e)}},{key:"getUserSelectDefinition",value:function(){return this._preloadManager.userDefinition||null}},{key:"cancel",value:function(e){this.clearTaskItem(e),this.delPlayingItem(e,null)}},{key:"destroy",value:function(e){this.cancelLoading(),this.clearTaskItem(e),this.delPlayingItem(e,null)}},{key:"on",value:function(e,t){for(var n,U=arguments.length,i=new Array(U>2?U-2:0),l=2;l<U;l++)i[l-2]=arguments[l];(n=$(j(a.prototype),"on",this)).call.apply(n,[this,e,t].concat(i))}},{key:"off",value:function(e,t){for(var n,U=arguments.length,i=new Array(U>2?U-2:0),l=2;l<U;l++)i[l-2]=arguments[l];(n=$(j(a.prototype),"off",this)).call.apply(n,[this,e,t].concat(i))}}],[{key:"PRELOAD_TYPES",get:function(){return Xa}},{key:"BitRateAdapter",get:function(){return xa},set:function(e){xa=e}},{key:"getDefaultConfig",value:function(){return{supportHevc:!1,preloadTime:5,preloadSize:0,segmentMinDuration:5,vtype:"MP4",preloadCacheType:1,preloadMaxCacheCount:5,globalKey:null,autoPreload:!1,reqOptions:null,getRequestOptionsCallback:null,minBufferLength:5,timeout:3e3,autoCheck:{enable:!0,interval:1e3},logCacheConfig:{logCacheLevel:2,logMaxSize:204800},pcdnConfig:{openPreloadPCDN:!1,enterMinBuffer:10,outMaxBuffer:5,pcdn_duration:2,pcdn_open:!0,openPCDN:!0,minDuration:25,trackerUrl:""},switchPCDNMaxCnt:2,retryCount:1,retryDelay:1e3,loaderType:"fetch"}}},{key:"registerPreloader",value:function(e,t){return e.vtype=fa.MP4,a.BitRateAdapter=t,new a(e,this)}},{key:"getInfoByUniqueKey",value:function(e){var t=e.split("#"),n=["vid","mediaType","codecType","vtype","definition"],U={};return t.forEach((function(e,t){U[n[t]]=e})),U}},{key:"generateUniqueKey",value:function(e){var t=e.vid,n=e.mediaType,U=e.definition,i=e.codecType,l=e.vtype;return n=n||"video",U=U||"-1",i=i||Ca,l=l||fa.MP4,t?"".concat(t,"#").concat(n,"#").concat(i,"#").concat(l,"#").concat(U):null}},{key:"disable",value:function(){Ga=!1}},{key:"enable",value:function(){Ga=!0}}]),a}(Ea);return OF.Mp4Preloader=Da,OF}));
|